checkboxStory top-level property

Story checkboxStory
getter/setter pair

Implementation

Story checkboxStory = Story(
  name: 'Checkbox',
  builder: (context) {
    final labelText =
        context.knobs.text(label: 'Label Text', initial: 'Select this option');

    final labelTextLeft = context.knobs
        .boolean(label: 'Label Text Position - Left', initial: false);

    final checkedColor = context.knobs.options(
      label: 'Checked Color',
      options: [
        Option(label: 'Primary', value: ThemeColors.primary),
        Option(label: 'Secondary', value: Colors.blue),
        Option(label: 'Accent', value: Colors.green),
      ],
      initial: ThemeColors.primary,
    );

    final isDisabled = context.knobs.boolean(label: 'Disabled', initial: false);

    final variant = context.knobs.options(
      label: 'Variant',
      options: [
        Option(label: 'Default', value: CheckboxVariant.defaultVariant),
        Option(label: 'Custom Icon', value: CheckboxVariant.customIcon),
      ],
      initial: CheckboxVariant.defaultVariant,
    );

    final shape = context.knobs.options(
      label: 'Shape',
      options: [
        Option(
            label: 'Rounded Rectangle', value: CheckboxShape.roundedRectangle),
        Option(label: 'Rectangle', value: CheckboxShape.rectangle),
        Option(label: 'Rounded', value: CheckboxShape.rounded),
      ],
      initial: CheckboxShape.roundedRectangle,
    );

    final size = context.knobs.options(
      label: 'Size',
      options: [
        Option(label: 'Small', value: CheckboxSize.small),
        Option(label: 'Medium', value: CheckboxSize.medium),
        Option(label: 'Large', value: CheckboxSize.large),
      ],
      initial: CheckboxSize.medium,
    );

    final icon = context.knobs.options(
      label: 'Icon',
      options: [
        Option(label: 'Check', value: Icons.check),
        Option(label: 'Done', value: Icons.done),
        Option(label: 'Check Circle', value: Icons.check_circle),
      ],
      initial: Icons.check,
    );

    final initialValue =
        context.knobs.boolean(label: 'Initial Value', initial: false);

    return Center(
      child: DDSCheckbox(
        labelTextLeft: labelTextLeft,
        labelText: labelText,
        checkedColor: checkedColor,
        disabled: isDisabled,
        variant: variant,
        shape: shape,
        spacing: 8,
        icon: Icon(
          icon,
          size: 18,
        ),
        size: size,
        initialValue: initialValue,
        onChanged: (value) {
          print('Checkbox changed: $value');
        },
      ),
    );
  },
);