@sixthshift/design-system 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -12
- package/dist/components/Badge/Badge.d.ts +64 -9
- package/dist/components/Badge/Badge.d.ts.map +1 -1
- package/dist/components/Badge/Badge.js +54 -46
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Badge/index.d.ts +1 -1
- package/dist/components/Badge/index.d.ts.map +1 -1
- package/dist/components/Badge/index.js +1 -1
- package/dist/components/Badge/index.js.map +1 -1
- package/dist/components/BarChart/BarChart.d.ts +12 -0
- package/dist/components/BarChart/BarChart.d.ts.map +1 -1
- package/dist/components/BarChart/BarChart.js +12 -0
- package/dist/components/BarChart/BarChart.js.map +1 -1
- package/dist/components/Button/Button.d.ts +85 -6
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +97 -106
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.js +1 -1
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +18 -4
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +19 -5
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Calendar/CalendarView.d.ts.map +1 -1
- package/dist/components/Calendar/CalendarView.js +10 -2
- package/dist/components/Calendar/CalendarView.js.map +1 -1
- package/dist/components/Calendar/calendar.types.d.ts +9 -0
- package/dist/components/Calendar/calendar.types.d.ts.map +1 -1
- package/dist/components/Card/Card.d.ts +61 -2
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.js +99 -3
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Card/index.d.ts +1 -1
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Card/index.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +21 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +22 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +22 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.js +22 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
- package/dist/components/Code/Editor/Editor.js +2 -2
- package/dist/components/Code/Editor/Editor.js.map +1 -1
- package/dist/components/Code/Editor/themes.d.ts +2 -2
- package/dist/components/Code/Editor/themes.d.ts.map +1 -1
- package/dist/components/Code/Editor/themes.js +50 -32
- package/dist/components/Code/Editor/themes.js.map +1 -1
- package/dist/components/Code/ValidationStatus/ValidationStatus.d.ts.map +1 -1
- package/dist/components/Code/ValidationStatus/ValidationStatus.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +43 -0
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.js +166 -4
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/DateSegments.d.ts +60 -0
- package/dist/components/DatePicker/DateSegments.d.ts.map +1 -0
- package/dist/components/DatePicker/DateSegments.js +80 -0
- package/dist/components/DatePicker/DateSegments.js.map +1 -0
- package/dist/components/DatePicker/datepicker.types.d.ts +19 -1
- package/dist/components/DatePicker/datepicker.types.d.ts.map +1 -1
- package/dist/components/DatePicker/index.d.ts +1 -1
- package/dist/components/DatePicker/index.d.ts.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +20 -2
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js +22 -4
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/DateRangePicker/daterangepicker.types.d.ts +6 -1
- package/dist/components/DateRangePicker/daterangepicker.types.d.ts.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +30 -2
- package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.js +105 -32
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/DateTimePicker/DateTimeSegments.d.ts +41 -0
- package/dist/components/DateTimePicker/DateTimeSegments.d.ts.map +1 -0
- package/dist/components/DateTimePicker/DateTimeSegments.js +67 -0
- package/dist/components/DateTimePicker/DateTimeSegments.js.map +1 -0
- package/dist/components/DateTimePicker/datetimepicker.types.d.ts +6 -1
- package/dist/components/DateTimePicker/datetimepicker.types.d.ts.map +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts +28 -2
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +136 -58
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
- package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts +6 -1
- package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts.map +1 -1
- package/dist/components/Field/Field.d.ts +15 -17
- package/dist/components/Field/Field.d.ts.map +1 -1
- package/dist/components/Field/Field.js +18 -3
- package/dist/components/Field/Field.js.map +1 -1
- package/dist/components/FormField/FormField.d.ts +15 -0
- package/dist/components/FormField/FormField.d.ts.map +1 -1
- package/dist/components/FormField/FormField.js +15 -0
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.d.ts +6 -0
- package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/components/HoverCard/HoverCard.js +6 -0
- package/dist/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/components/Input/Input.d.ts +15 -0
- package/dist/components/Input/Input.d.ts.map +1 -1
- package/dist/components/Input/Input.js +18 -3
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/LineChart/LineChart.d.ts +17 -0
- package/dist/components/LineChart/LineChart.d.ts.map +1 -1
- package/dist/components/LineChart/LineChart.js +17 -0
- package/dist/components/LineChart/LineChart.js.map +1 -1
- package/dist/components/Markdown/Markdown.d.ts +17 -0
- package/dist/components/Markdown/Markdown.d.ts.map +1 -1
- package/dist/components/Markdown/Markdown.js +17 -0
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Message/Message.d.ts +49 -4
- package/dist/components/Message/Message.d.ts.map +1 -1
- package/dist/components/Message/Message.js +53 -17
- package/dist/components/Message/Message.js.map +1 -1
- package/dist/components/Message/index.d.ts +1 -1
- package/dist/components/Message/index.d.ts.map +1 -1
- package/dist/components/Modal/Modal.d.ts +36 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +37 -1
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/components/ModalHeader.js +1 -1
- package/dist/components/Modal/components/ModalHeader.js.map +1 -1
- package/dist/components/Popover/Popover.d.ts +29 -0
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/Popover.js +29 -0
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/ProgressBar/ProgressBar.d.ts +14 -0
- package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/components/ProgressBar/ProgressBar.js +14 -0
- package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/components/RadioButton/RadioButton.d.ts +26 -0
- package/dist/components/RadioButton/RadioButton.d.ts.map +1 -1
- package/dist/components/RadioButton/RadioButton.js +35 -1
- package/dist/components/RadioButton/RadioButton.js.map +1 -1
- package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts +26 -0
- package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -1
- package/dist/components/RadioButtonGroup/RadioButtonGroup.js +33 -0
- package/dist/components/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
- package/dist/components/SearchInput/SearchInput.d.ts +10 -0
- package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/components/SearchInput/SearchInput.js +12 -1
- package/dist/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/Select/Select.d.ts +4 -5
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +4 -5
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/SelectDropdown.d.ts.map +1 -1
- package/dist/components/Select/SelectDropdown.js +4 -3
- package/dist/components/Select/SelectDropdown.js.map +1 -1
- package/dist/components/Select/SelectTrigger.js +2 -2
- package/dist/components/Select/SelectTrigger.js.map +1 -1
- package/dist/components/Separator/Separator.d.ts +10 -0
- package/dist/components/Separator/Separator.d.ts.map +1 -1
- package/dist/components/Separator/Separator.js +10 -0
- package/dist/components/Separator/Separator.js.map +1 -1
- package/dist/components/Sheet/Sheet.d.ts +6 -0
- package/dist/components/Sheet/Sheet.d.ts.map +1 -1
- package/dist/components/Sheet/Sheet.js +7 -1
- package/dist/components/Sheet/Sheet.js.map +1 -1
- package/dist/components/Sheet/components/SheetFooter.js +1 -1
- package/dist/components/Sheet/components/SheetFooter.js.map +1 -1
- package/dist/components/Sheet/components/SheetHeader.js +1 -1
- package/dist/components/Sheet/components/SheetHeader.js.map +1 -1
- package/dist/components/Sparkline/Sparkline.d.ts +11 -0
- package/dist/components/Sparkline/Sparkline.d.ts.map +1 -1
- package/dist/components/Sparkline/Sparkline.js +11 -0
- package/dist/components/Sparkline/Sparkline.js.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts +27 -2
- package/dist/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.js +28 -3
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/Switch/Switch.d.ts +18 -0
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/components/Switch/Switch.js +19 -1
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts +6 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +6 -0
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/components/TabsTrigger.d.ts.map +1 -1
- package/dist/components/Tabs/components/TabsTrigger.js +22 -6
- package/dist/components/Tabs/components/TabsTrigger.js.map +1 -1
- package/dist/components/TagChip/TagChip.d.ts +14 -12
- package/dist/components/TagChip/TagChip.d.ts.map +1 -1
- package/dist/components/TagChip/TagChip.js +14 -1
- package/dist/components/TagChip/TagChip.js.map +1 -1
- package/dist/components/TagInput/TagInput.d.ts +11 -8
- package/dist/components/TagInput/TagInput.d.ts.map +1 -1
- package/dist/components/TagInput/TagInput.js +11 -0
- package/dist/components/TagInput/TagInput.js.map +1 -1
- package/dist/components/Text/Text.d.ts +9 -0
- package/dist/components/Text/Text.d.ts.map +1 -1
- package/dist/components/Text/Text.js +9 -0
- package/dist/components/Text/Text.js.map +1 -1
- package/dist/components/TextInline/TextInline.d.ts +15 -4
- package/dist/components/TextInline/TextInline.d.ts.map +1 -1
- package/dist/components/TextInline/TextInline.js +11 -0
- package/dist/components/TextInline/TextInline.js.map +1 -1
- package/dist/components/Textarea/Textarea.d.ts +12 -0
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js +13 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/TimePicker/TimeColumn.d.ts +10 -1
- package/dist/components/TimePicker/TimeColumn.d.ts.map +1 -1
- package/dist/components/TimePicker/TimeColumn.js +8 -1
- package/dist/components/TimePicker/TimeColumn.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.d.ts +32 -0
- package/dist/components/TimePicker/TimePicker.d.ts.map +1 -1
- package/dist/components/TimePicker/TimePicker.js +93 -6
- package/dist/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/components/TimePicker/TimeSegments.d.ts +50 -0
- package/dist/components/TimePicker/TimeSegments.d.ts.map +1 -0
- package/dist/components/TimePicker/TimeSegments.js +93 -0
- package/dist/components/TimePicker/TimeSegments.js.map +1 -0
- package/dist/components/TimePicker/timepicker.hooks.d.ts +0 -4
- package/dist/components/TimePicker/timepicker.hooks.d.ts.map +1 -1
- package/dist/components/TimePicker/timepicker.hooks.js +1 -23
- package/dist/components/TimePicker/timepicker.hooks.js.map +1 -1
- package/dist/components/TimePicker/timepicker.types.d.ts +0 -2
- package/dist/components/TimePicker/timepicker.types.d.ts.map +1 -1
- package/dist/components/Toast/Toast.d.ts +27 -0
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/Toast/Toast.js +28 -1
- package/dist/components/Toast/Toast.js.map +1 -1
- package/dist/components/Toggle/Toggle.d.ts +31 -12
- package/dist/components/Toggle/Toggle.d.ts.map +1 -1
- package/dist/components/Toggle/Toggle.js +19 -31
- package/dist/components/Toggle/Toggle.js.map +1 -1
- package/dist/components/Toggle/index.d.ts +1 -1
- package/dist/components/Toggle/index.d.ts.map +1 -1
- package/dist/components/Toggle/index.js +1 -1
- package/dist/components/Toggle/index.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.d.ts +17 -0
- package/dist/components/ToggleGroup/ToggleGroup.d.ts.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.js +17 -0
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
- package/dist/components/ToggleGroup/ToggleGroupItem.d.ts.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupItem.js +7 -6
- package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts +4 -3
- package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupMultiple.js +2 -2
- package/dist/components/ToggleGroup/ToggleGroupMultiple.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts +4 -3
- package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupSingle.js +2 -2
- package/dist/components/ToggleGroup/ToggleGroupSingle.js.map +1 -1
- package/dist/components/ToggleGroup/toggleGroup.types.d.ts +12 -3
- package/dist/components/ToggleGroup/toggleGroup.types.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +6 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +6 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/date-time/index.d.ts.map +1 -1
- package/dist/date-time/index.js +0 -1
- package/dist/date-time/index.js.map +1 -1
- package/dist/internal/PickerField.d.ts +45 -0
- package/dist/internal/PickerField.d.ts.map +1 -0
- package/dist/internal/PickerField.js +24 -0
- package/dist/internal/PickerField.js.map +1 -0
- package/dist/internal/SegmentedField.d.ts +98 -0
- package/dist/internal/SegmentedField.d.ts.map +1 -0
- package/dist/internal/SegmentedField.js +315 -0
- package/dist/internal/SegmentedField.js.map +1 -0
- package/dist/internal/index.d.ts +2 -0
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +2 -0
- package/dist/internal/index.js.map +1 -1
- package/dist/lib/contexts/OverlayContext/OverlayContext.d.ts +2 -2
- package/dist/lib/contexts/OverlayContext/OverlayContext.d.ts.map +1 -1
- package/dist/lib/contexts/OverlayContext/OverlayContext.js +17 -6
- package/dist/lib/contexts/OverlayContext/OverlayContext.js.map +1 -1
- package/dist/theme/index.d.ts +2 -2
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/schema.d.ts +0 -22
- package/dist/theme/schema.d.ts.map +1 -1
- package/dist/theme/schema.js +0 -9
- package/dist/theme/schema.js.map +1 -1
- package/package.json +7 -48
- package/src/components/Badge/Badge.tsx +85 -48
- package/src/components/Badge/index.ts +10 -1
- package/src/components/BarChart/BarChart.tsx +12 -0
- package/src/components/Button/Button.tsx +129 -106
- package/src/components/Button/index.ts +10 -1
- package/src/components/Calendar/Calendar.tsx +29 -16
- package/src/components/Calendar/CalendarView.tsx +10 -1
- package/src/components/Calendar/calendar.types.ts +10 -0
- package/src/components/Card/Card.tsx +114 -15
- package/src/components/Card/index.ts +1 -1
- package/src/components/Checkbox/Checkbox.tsx +22 -2
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +22 -0
- package/src/components/Code/Editor/Editor.tsx +2 -2
- package/src/components/Code/Editor/themes.ts +50 -32
- package/src/components/Code/ValidationStatus/ValidationStatus.tsx +6 -3
- package/src/components/DatePicker/DatePicker.tsx +279 -28
- package/src/components/DatePicker/DateSegments.tsx +125 -0
- package/src/components/DatePicker/datepicker.types.ts +21 -1
- package/src/components/DatePicker/index.ts +8 -1
- package/src/components/DateRangePicker/DateRangePicker.tsx +22 -4
- package/src/components/DateRangePicker/daterangepicker.types.ts +7 -1
- package/src/components/DateTimePicker/DateTimePicker.tsx +143 -70
- package/src/components/DateTimePicker/DateTimeSegments.tsx +113 -0
- package/src/components/DateTimePicker/datetimepicker.types.ts +7 -1
- package/src/components/DateTimeRangePicker/DateTimeRangePicker.tsx +195 -104
- package/src/components/DateTimeRangePicker/datetimerangepicker.types.ts +7 -1
- package/src/components/Field/Field.tsx +20 -22
- package/src/components/FormField/FormField.tsx +15 -0
- package/src/components/HoverCard/HoverCard.tsx +6 -0
- package/src/components/Input/Input.tsx +19 -4
- package/src/components/LineChart/LineChart.tsx +17 -0
- package/src/components/Markdown/Markdown.tsx +17 -0
- package/src/components/Message/Message.tsx +73 -23
- package/src/components/Message/index.ts +1 -1
- package/src/components/Modal/Modal.tsx +42 -3
- package/src/components/Modal/components/ModalHeader.tsx +1 -1
- package/src/components/Popover/Popover.tsx +29 -0
- package/src/components/ProgressBar/ProgressBar.tsx +14 -0
- package/src/components/RadioButton/RadioButton.tsx +34 -3
- package/src/components/RadioButtonGroup/RadioButtonGroup.tsx +32 -0
- package/src/components/SearchInput/SearchInput.tsx +13 -2
- package/src/components/Select/Select.tsx +4 -5
- package/src/components/Select/SelectDropdown.tsx +13 -9
- package/src/components/Select/SelectTrigger.tsx +7 -7
- package/src/components/Separator/Separator.tsx +10 -0
- package/src/components/Sheet/Sheet.tsx +8 -2
- package/src/components/Sheet/components/SheetFooter.tsx +1 -1
- package/src/components/Sheet/components/SheetHeader.tsx +2 -2
- package/src/components/Sparkline/Sparkline.tsx +11 -0
- package/src/components/Spinner/Spinner.tsx +28 -3
- package/src/components/Switch/Switch.tsx +27 -4
- package/src/components/Tabs/Tabs.tsx +6 -0
- package/src/components/Tabs/components/TabsTrigger.tsx +22 -5
- package/src/components/TagChip/TagChip.tsx +18 -16
- package/src/components/TagInput/TagInput.tsx +11 -8
- package/src/components/Text/Text.tsx +9 -0
- package/src/components/TextInline/TextInline.tsx +11 -0
- package/src/components/Textarea/Textarea.tsx +13 -1
- package/src/components/TimePicker/TimeColumn.tsx +24 -1
- package/src/components/TimePicker/TimePicker.tsx +127 -39
- package/src/components/TimePicker/TimeSegments.tsx +131 -0
- package/src/components/TimePicker/timepicker.hooks.ts +1 -24
- package/src/components/TimePicker/timepicker.types.ts +0 -3
- package/src/components/Toast/Toast.tsx +28 -1
- package/src/components/Toggle/Toggle.tsx +34 -32
- package/src/components/Toggle/index.ts +1 -1
- package/src/components/ToggleGroup/ToggleGroup.tsx +17 -0
- package/src/components/ToggleGroup/ToggleGroupItem.tsx +13 -8
- package/src/components/ToggleGroup/ToggleGroupMultiple.tsx +3 -1
- package/src/components/ToggleGroup/ToggleGroupSingle.tsx +3 -1
- package/src/components/ToggleGroup/toggleGroup.types.ts +12 -3
- package/src/components/Tooltip/Tooltip.tsx +6 -0
- package/src/date-time/index.ts +0 -1
- package/src/internal/PickerField.tsx +90 -0
- package/src/internal/SegmentedField.tsx +445 -0
- package/src/internal/index.ts +2 -0
- package/src/lib/contexts/OverlayContext/OverlayContext.tsx +21 -10
- package/src/theme/index.ts +0 -6
- package/src/theme/recipes/badge.css +140 -0
- package/src/theme/recipes/button.css +167 -0
- package/src/theme/recipes/card.css +31 -0
- package/src/theme/recipes/checkbox.css +44 -0
- package/src/theme/recipes/field.css +14 -0
- package/src/theme/recipes/index.css +28 -0
- package/src/theme/recipes/input.css +29 -0
- package/src/theme/recipes/message.css +47 -0
- package/src/theme/recipes/modal.css +31 -0
- package/src/theme/recipes/radio-button.css +42 -0
- package/src/theme/recipes/search-input.css +16 -0
- package/src/theme/recipes/select.css +105 -0
- package/src/theme/recipes/sheet.css +34 -0
- package/src/theme/recipes/spinner.css +17 -0
- package/src/theme/recipes/switch.css +39 -0
- package/src/theme/recipes/tabs.css +41 -0
- package/src/theme/recipes/tag-chip.css +27 -0
- package/src/theme/recipes/textarea.css +20 -0
- package/src/theme/recipes/toggle.css +92 -0
- package/src/theme/schema.ts +0 -27
- package/src/theme/tokens.css +26 -9
- package/dist/components/Avatar/Avatar.d.ts +0 -6
- package/dist/components/Avatar/Avatar.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.js +0 -11
- package/dist/components/Avatar/Avatar.js.map +0 -1
- package/dist/components/Avatar/index.d.ts +0 -2
- package/dist/components/Avatar/index.d.ts.map +0 -1
- package/dist/components/Avatar/index.js +0 -2
- package/dist/components/Avatar/index.js.map +0 -1
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +0 -12
- package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +0 -1
- package/dist/components/Breadcrumb/Breadcrumb.js +0 -19
- package/dist/components/Breadcrumb/Breadcrumb.js.map +0 -1
- package/dist/components/Breadcrumb/index.d.ts +0 -2
- package/dist/components/Breadcrumb/index.d.ts.map +0 -1
- package/dist/components/Breadcrumb/index.js +0 -2
- package/dist/components/Breadcrumb/index.js.map +0 -1
- package/dist/components/ColorDot/ColorDot.d.ts +0 -19
- package/dist/components/ColorDot/ColorDot.d.ts.map +0 -1
- package/dist/components/ColorDot/ColorDot.js +0 -36
- package/dist/components/ColorDot/ColorDot.js.map +0 -1
- package/dist/components/ColorDot/index.d.ts +0 -2
- package/dist/components/ColorDot/index.d.ts.map +0 -1
- package/dist/components/ColorDot/index.js +0 -2
- package/dist/components/ColorDot/index.js.map +0 -1
- package/dist/components/EmptyState/EmptyState.d.ts +0 -26
- package/dist/components/EmptyState/EmptyState.d.ts.map +0 -1
- package/dist/components/EmptyState/EmptyState.js +0 -9
- package/dist/components/EmptyState/EmptyState.js.map +0 -1
- package/dist/components/EmptyState/index.d.ts +0 -2
- package/dist/components/EmptyState/index.d.ts.map +0 -1
- package/dist/components/EmptyState/index.js +0 -2
- package/dist/components/EmptyState/index.js.map +0 -1
- package/dist/components/HeatMap/HeatMapCalendar.d.ts +0 -11
- package/dist/components/HeatMap/HeatMapCalendar.d.ts.map +0 -1
- package/dist/components/HeatMap/HeatMapCalendar.js +0 -68
- package/dist/components/HeatMap/HeatMapCalendar.js.map +0 -1
- package/dist/components/HeatMap/HeatMapMatrix.d.ts +0 -12
- package/dist/components/HeatMap/HeatMapMatrix.d.ts.map +0 -1
- package/dist/components/HeatMap/HeatMapMatrix.js +0 -35
- package/dist/components/HeatMap/HeatMapMatrix.js.map +0 -1
- package/dist/components/HeatMap/heat-map.utils.d.ts +0 -10
- package/dist/components/HeatMap/heat-map.utils.d.ts.map +0 -1
- package/dist/components/HeatMap/heat-map.utils.js +0 -10
- package/dist/components/HeatMap/heat-map.utils.js.map +0 -1
- package/dist/components/HeatMap/index.d.ts +0 -4
- package/dist/components/HeatMap/index.d.ts.map +0 -1
- package/dist/components/HeatMap/index.js +0 -3
- package/dist/components/HeatMap/index.js.map +0 -1
- package/dist/components/MetricList/MetricList.d.ts +0 -9
- package/dist/components/MetricList/MetricList.d.ts.map +0 -1
- package/dist/components/MetricList/MetricList.js +0 -8
- package/dist/components/MetricList/MetricList.js.map +0 -1
- package/dist/components/MetricList/MetricRow.d.ts +0 -13
- package/dist/components/MetricList/MetricRow.d.ts.map +0 -1
- package/dist/components/MetricList/MetricRow.js +0 -13
- package/dist/components/MetricList/MetricRow.js.map +0 -1
- package/dist/components/MetricList/index.d.ts +0 -3
- package/dist/components/MetricList/index.d.ts.map +0 -1
- package/dist/components/MetricList/index.js +0 -3
- package/dist/components/MetricList/index.js.map +0 -1
- package/dist/components/NavBottom/NavBottom.d.ts +0 -16
- package/dist/components/NavBottom/NavBottom.d.ts.map +0 -1
- package/dist/components/NavBottom/NavBottom.js +0 -21
- package/dist/components/NavBottom/NavBottom.js.map +0 -1
- package/dist/components/NavBottom/index.d.ts +0 -3
- package/dist/components/NavBottom/index.d.ts.map +0 -1
- package/dist/components/NavBottom/index.js +0 -2
- package/dist/components/NavBottom/index.js.map +0 -1
- package/dist/components/NavSide/NavItem.d.ts +0 -9
- package/dist/components/NavSide/NavItem.d.ts.map +0 -1
- package/dist/components/NavSide/NavItem.js +0 -13
- package/dist/components/NavSide/NavItem.js.map +0 -1
- package/dist/components/NavSide/NavSide.d.ts +0 -16
- package/dist/components/NavSide/NavSide.d.ts.map +0 -1
- package/dist/components/NavSide/NavSide.js +0 -12
- package/dist/components/NavSide/NavSide.js.map +0 -1
- package/dist/components/NavSide/index.d.ts +0 -3
- package/dist/components/NavSide/index.d.ts.map +0 -1
- package/dist/components/NavSide/index.js +0 -2
- package/dist/components/NavSide/index.js.map +0 -1
- package/dist/components/NavSide/types.d.ts +0 -38
- package/dist/components/NavSide/types.d.ts.map +0 -1
- package/dist/components/NavSide/types.js +0 -2
- package/dist/components/NavSide/types.js.map +0 -1
- package/dist/components/Pagination/Pagination.d.ts +0 -35
- package/dist/components/Pagination/Pagination.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.js +0 -26
- package/dist/components/Pagination/Pagination.js.map +0 -1
- package/dist/components/Pagination/index.d.ts +0 -3
- package/dist/components/Pagination/index.d.ts.map +0 -1
- package/dist/components/Pagination/index.js +0 -2
- package/dist/components/Pagination/index.js.map +0 -1
- package/dist/components/Skeleton/Skeleton.d.ts +0 -4
- package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
- package/dist/components/Skeleton/Skeleton.js +0 -9
- package/dist/components/Skeleton/Skeleton.js.map +0 -1
- package/dist/components/Skeleton/index.d.ts +0 -2
- package/dist/components/Skeleton/index.d.ts.map +0 -1
- package/dist/components/Skeleton/index.js +0 -2
- package/dist/components/Skeleton/index.js.map +0 -1
- package/dist/components/StatsCard/StatsCard.d.ts +0 -17
- package/dist/components/StatsCard/StatsCard.d.ts.map +0 -1
- package/dist/components/StatsCard/StatsCard.js +0 -15
- package/dist/components/StatsCard/StatsCard.js.map +0 -1
- package/dist/components/StatsCard/index.d.ts +0 -2
- package/dist/components/StatsCard/index.d.ts.map +0 -1
- package/dist/components/StatsCard/index.js +0 -2
- package/dist/components/StatsCard/index.js.map +0 -1
- package/src/components/Avatar/Avatar.tsx +0 -19
- package/src/components/Avatar/index.ts +0 -1
- package/src/components/Breadcrumb/Breadcrumb.tsx +0 -47
- package/src/components/Breadcrumb/index.ts +0 -5
- package/src/components/ColorDot/ColorDot.tsx +0 -52
- package/src/components/ColorDot/index.ts +0 -1
- package/src/components/EmptyState/EmptyState.tsx +0 -30
- package/src/components/EmptyState/index.ts +0 -1
- package/src/components/HeatMap/HeatMapCalendar.tsx +0 -127
- package/src/components/HeatMap/HeatMapMatrix.tsx +0 -75
- package/src/components/HeatMap/heat-map.utils.ts +0 -15
- package/src/components/HeatMap/index.ts +0 -3
- package/src/components/MetricList/MetricList.tsx +0 -18
- package/src/components/MetricList/MetricRow.tsx +0 -30
- package/src/components/MetricList/index.ts +0 -2
- package/src/components/NavBottom/NavBottom.tsx +0 -55
- package/src/components/NavBottom/index.ts +0 -3
- package/src/components/NavSide/NavItem.tsx +0 -39
- package/src/components/NavSide/NavSide.tsx +0 -42
- package/src/components/NavSide/index.ts +0 -2
- package/src/components/NavSide/types.ts +0 -36
- package/src/components/Pagination/Pagination.tsx +0 -86
- package/src/components/Pagination/index.ts +0 -2
- package/src/components/Skeleton/Skeleton.tsx +0 -9
- package/src/components/Skeleton/index.ts +0 -1
- package/src/components/StatsCard/StatsCard.tsx +0 -41
- package/src/components/StatsCard/index.ts +0 -1
|
@@ -124,6 +124,16 @@ type CalendarViewBaseProps = {
|
|
|
124
124
|
/** First day of week (0 = Sunday, 1 = Monday) */
|
|
125
125
|
weekStartsOn?: WeekStartsOn | undefined;
|
|
126
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Move DOM focus into the day grid on mount.
|
|
129
|
+
*
|
|
130
|
+
* Off by default: a grid that grabs focus when it appears is wrong for a
|
|
131
|
+
* pointer user who clicked a trigger. `DatePicker` turns it on only when the
|
|
132
|
+
* popover was opened from the keyboard (`Alt+ArrowDown`), where the whole
|
|
133
|
+
* point of opening it was to navigate days.
|
|
134
|
+
*/
|
|
135
|
+
autoFocusDay?: boolean | undefined;
|
|
136
|
+
|
|
127
137
|
/** Show footer with Today/Cancel/Apply buttons */
|
|
128
138
|
showFooter?: boolean | undefined;
|
|
129
139
|
/** Show Today button (only if showFooter=true) */
|
|
@@ -1,14 +1,118 @@
|
|
|
1
1
|
import { cn } from "@sixthshift/design-system/utils";
|
|
2
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
2
3
|
import * as React from "react";
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Geometry only, plus the five `--card-*` component tokens.
|
|
7
|
+
*
|
|
8
|
+
* Every colour reads a `--card-*` token whose value is decided by
|
|
9
|
+
* src/theme/recipes/card.css. `size` stays here: it is pure geometry
|
|
10
|
+
* (padding, header gap, corner radius), not colour, so it has no reason to
|
|
11
|
+
* move — the same split Message.tsx documents.
|
|
12
|
+
*
|
|
13
|
+
* The ramp is a density axis, not a padding setting. `md` is the middle and
|
|
14
|
+
* the default at 16px, which is also where MUI's `CardContent` and
|
|
15
|
+
* Bootstrap's `.card-body` sit; two steps exist below it for surfaces that
|
|
16
|
+
* repeat dozens of times, and two above for surfaces that are the page.
|
|
17
|
+
*
|
|
18
|
+
* xs 8px dense data — table-row cards, compact tiles, many at once
|
|
19
|
+
* sm 12px list rows and secondary cards; a line or two of content
|
|
20
|
+
* md 16px a standalone content card. The one to reach for by default
|
|
21
|
+
* lg 24px primary or feature cards — a main panel, a form container
|
|
22
|
+
* xl 32px hero, empty-state and marketing surfaces
|
|
23
|
+
*
|
|
24
|
+
* Steps are 8 · 12 · 16 · 24 · 32, alternating x1.5 and x1.33; 20px is
|
|
25
|
+
* skipped deliberately as the value that breaks that rhythm.
|
|
26
|
+
*
|
|
27
|
+
* Radius scales with padding and never exceeds it — at `xs` a 12px corner
|
|
28
|
+
* against 8px of padding visibly crowds the content. The header gap flattens
|
|
29
|
+
* at both ends instead of tracking padding: it separates a title from an
|
|
30
|
+
* action control, so it has a usability floor and nothing to gain above 16px.
|
|
31
|
+
*
|
|
32
|
+
* Type is deliberately absent from the ramp. Message's `size` carries
|
|
33
|
+
* `text-xs` because Message knows what it holds; Card is a container for
|
|
34
|
+
* arbitrary children, `Heading` and `Body` included, so setting type here
|
|
35
|
+
* would fight the typography ramp at every call site. Containers set
|
|
36
|
+
* spacing; content components set type.
|
|
37
|
+
*/
|
|
38
|
+
export const cardVariants = cva(
|
|
39
|
+
// One literal, deliberately: `useSortedClasses --unsafe` strips the trailing
|
|
40
|
+
// space before a `+`, silently welding the last class of one fragment to the
|
|
41
|
+
// first of the next. A single string means the sorter has nothing to break.
|
|
42
|
+
"card border-(color:--card-border) border bg-(--card-bg) text-(--card-fg) shadow",
|
|
43
|
+
{
|
|
44
|
+
variants: {
|
|
45
|
+
size: {
|
|
46
|
+
xs: "rounded-md p-2",
|
|
47
|
+
sm: "rounded-lg p-3",
|
|
48
|
+
md: "rounded-xl p-4",
|
|
49
|
+
lg: "rounded-xl p-6",
|
|
50
|
+
xl: "rounded-2xl p-8",
|
|
51
|
+
},
|
|
52
|
+
interactive: {
|
|
53
|
+
true: "hover:border-(color:--card-border-hovered) focus-visible:outline-(color:--card-ring) cursor-pointer transition-colors focus-visible:outline-2 focus-visible:outline-offset-2",
|
|
54
|
+
false: "",
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
defaultVariants: {
|
|
58
|
+
size: "md",
|
|
59
|
+
interactive: false,
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
);
|
|
10
63
|
|
|
11
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Header geometry per size: the gap between title and action, and the space
|
|
66
|
+
* below it.
|
|
67
|
+
*
|
|
68
|
+
* A `<div>`, not a `<header>`. A `<header>` whose nearest sectioning ancestor
|
|
69
|
+
* is the body becomes a `banner` landmark, so two titled cards on one page
|
|
70
|
+
* produced two banners — axe's `landmark-no-duplicate-banner`. A card's header
|
|
71
|
+
* is not the page's banner, and the element bought nothing else here.
|
|
72
|
+
*/
|
|
73
|
+
const headerVariants = cva("flex items-start justify-between", {
|
|
74
|
+
variants: {
|
|
75
|
+
size: {
|
|
76
|
+
xs: "mb-2 gap-2",
|
|
77
|
+
sm: "mb-3 gap-2",
|
|
78
|
+
md: "mb-4 gap-3",
|
|
79
|
+
lg: "mb-4 gap-4",
|
|
80
|
+
xl: "mb-6 gap-4",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
defaultVariants: {
|
|
84
|
+
size: "md",
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
export type CardSize = NonNullable<VariantProps<typeof cardVariants>["size"]>;
|
|
89
|
+
|
|
90
|
+
export type CardProps = Omit<React.HTMLAttributes<HTMLDivElement>, "title"> &
|
|
91
|
+
Pick<VariantProps<typeof cardVariants>, "size"> & {
|
|
92
|
+
/** Optional header title - string or ReactNode */
|
|
93
|
+
title?: React.ReactNode;
|
|
94
|
+
/** Optional action element displayed on the right side of the header */
|
|
95
|
+
headerAction?: React.ReactNode;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Bordered, elevated container — the "this contains data" building block
|
|
100
|
+
* (see docs/visual-hierarchy.md's Elevated tier). Renders a `<div>`, with an
|
|
101
|
+
* optional header row when `title` and/or `headerAction` is passed.
|
|
102
|
+
*
|
|
103
|
+
* `size` is a density axis covering padding, header spacing and corner
|
|
104
|
+
* radius; `md` (16px) is the default. See `cardVariants` above for what each
|
|
105
|
+
* step is for and why type is not part of it.
|
|
106
|
+
*
|
|
107
|
+
* Passing `onClick` turns the whole card into a button: it gets
|
|
108
|
+
* `role="button"`, `tabIndex={0}`, and both Enter and Space activate it, not
|
|
109
|
+
* just a pointer click. Omit `onClick` for a purely presentational card.
|
|
110
|
+
*
|
|
111
|
+
* Colour reads `--card-*` component tokens (src/theme/recipes/card.css) —
|
|
112
|
+
* the same seam Button and Badge use — so a consumer can re-point them
|
|
113
|
+
* without a release.
|
|
114
|
+
*/
|
|
115
|
+
export const Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, size, title, headerAction, children, onClick, onKeyDown, ...props }, ref) => {
|
|
12
116
|
const isInteractive = !!onClick;
|
|
13
117
|
|
|
14
118
|
const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {
|
|
@@ -23,22 +127,17 @@ export const Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, ti
|
|
|
23
127
|
// biome-ignore lint/a11y/noStaticElementInteractions: role="button" + tabIndex are added dynamically when onClick is present
|
|
24
128
|
<div
|
|
25
129
|
ref={ref}
|
|
26
|
-
className={cn(
|
|
27
|
-
"rounded-xl border border-border-normal bg-bg-normal p-6 text-fg-normal shadow",
|
|
28
|
-
isInteractive &&
|
|
29
|
-
"cursor-pointer transition-colors hover:border-border-strong focus-visible:outline-2 focus-visible:outline-border-strong focus-visible:outline-offset-2",
|
|
30
|
-
className
|
|
31
|
-
)}
|
|
130
|
+
className={cn(cardVariants({ size, interactive: isInteractive }), className)}
|
|
32
131
|
onClick={onClick}
|
|
33
132
|
onKeyDown={handleKeyDown}
|
|
34
133
|
{...(isInteractive && { role: "button", tabIndex: 0 })}
|
|
35
134
|
{...props}
|
|
36
135
|
>
|
|
37
136
|
{(title || headerAction) && (
|
|
38
|
-
<
|
|
137
|
+
<div className={headerVariants({ size })}>
|
|
39
138
|
{title && <div className="font-semibold">{title}</div>}
|
|
40
139
|
{headerAction && <div className="shrink-0">{headerAction}</div>}
|
|
41
|
-
</
|
|
140
|
+
</div>
|
|
42
141
|
)}
|
|
43
142
|
{children}
|
|
44
143
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Card, type CardProps } from "./Card";
|
|
1
|
+
export { Card, type CardProps, type CardSize, cardVariants } from "./Card";
|
|
@@ -51,6 +51,27 @@ const IndeterminateIcon = () => (
|
|
|
51
51
|
</svg>
|
|
52
52
|
);
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
* A single boolean, or tri-state, toggle — a custom button with
|
|
56
|
+
* `role="checkbox"` rather than a native `<input type="checkbox">`, so it
|
|
57
|
+
* can be styled without fighting native checkbox rendering.
|
|
58
|
+
*
|
|
59
|
+
* Controlled or uncontrolled via the `checked`/`defaultChecked`/
|
|
60
|
+
* `onCheckedChange` triad (`useControllableState`). `checked` also accepts
|
|
61
|
+
* `"indeterminate"`, which sets `aria-checked="mixed"` and swaps in a dash
|
|
62
|
+
* icon instead of the check — for a "select all" checkbox whose children are
|
|
63
|
+
* only partially selected. Clicking an indeterminate checkbox always
|
|
64
|
+
* resolves it to `true`, never back to indeterminate.
|
|
65
|
+
*
|
|
66
|
+
* Only participates in native form submission when `name` is set: a hidden
|
|
67
|
+
* native `<input type="checkbox">` is rendered alongside the button and
|
|
68
|
+
* kept in sync, carrying `value` (default `"on"`). Without `name`, state
|
|
69
|
+
* lives only in React and nothing is submitted.
|
|
70
|
+
*
|
|
71
|
+
* Passing `label` wraps the button and a `<Label>` together and wires
|
|
72
|
+
* `htmlFor`/`id` between them; without it, you get just the button and must
|
|
73
|
+
* supply your own accessible name.
|
|
74
|
+
*/
|
|
54
75
|
const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(
|
|
55
76
|
(
|
|
56
77
|
{
|
|
@@ -93,8 +114,7 @@ const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(
|
|
|
93
114
|
ref={ref}
|
|
94
115
|
onClick={() => setChecked(!isChecked)}
|
|
95
116
|
className={cn(
|
|
96
|
-
"peer h-4 w-4 shrink-0 cursor-pointer rounded-xs border
|
|
97
|
-
(isChecked || isIndeterminate) && "bg-bg-brand text-fg-on-brand",
|
|
117
|
+
"checkbox peer border-(color:--checkbox-border) focus-visible:ring-(color:--checkbox-ring) h-4 w-4 shrink-0 cursor-pointer rounded-xs border bg-(--checkbox-bg) text-(--checkbox-fg) shadow focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
98
118
|
className
|
|
99
119
|
)}
|
|
100
120
|
{...props}
|
|
@@ -36,6 +36,28 @@ export type CheckboxGroupProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onC
|
|
|
36
36
|
onBlur?: () => void;
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* A set of related checkboxes sharing one controlled/uncontrolled `string[]`
|
|
41
|
+
* selection, via the `value`/`defaultValue`/`onValueChange` triad
|
|
42
|
+
* (`useControllableState`).
|
|
43
|
+
*
|
|
44
|
+
* `variant="default"` (the default) renders one `Checkbox` per option, each
|
|
45
|
+
* with its own visible label, laid out in a column or row per
|
|
46
|
+
* `orientation`. `variant="button"` is a separate rendering path — not a
|
|
47
|
+
* re-skinned `Checkbox` — a row/column of plain buttons with
|
|
48
|
+
* `role="checkbox"` and no separate label; contiguous buttons touch and
|
|
49
|
+
* share borders (`appearance="segmented"`, the default) or sit apart with
|
|
50
|
+
* their own rounded corners (`appearance="separate"`).
|
|
51
|
+
*
|
|
52
|
+
* Form submission only happens when `name` is set. In the default variant
|
|
53
|
+
* that means each underlying `Checkbox` gets `name`, so one hidden native
|
|
54
|
+
* checkbox input is rendered per option; in the button variant the group
|
|
55
|
+
* itself renders one hidden `<input type="checkbox">` per *currently
|
|
56
|
+
* selected* value.
|
|
57
|
+
*
|
|
58
|
+
* Renders `role="group"`; focus leaving the whole group — not just moving
|
|
59
|
+
* between options — fires `onBlur`.
|
|
60
|
+
*/
|
|
39
61
|
const CheckboxGroup = React.forwardRef<HTMLDivElement, CheckboxGroupProps>(
|
|
40
62
|
(
|
|
41
63
|
{
|
|
@@ -5,7 +5,7 @@ import { useCallback, useRef } from "react";
|
|
|
5
5
|
import { useTheme } from "../../../hooks/useTheme";
|
|
6
6
|
import type { ValidationError } from "../ValidationStatus";
|
|
7
7
|
import { createSemanticTokensProvider, workerExtensionUrl } from "./semanticTokenProvider";
|
|
8
|
-
import { defineThemes,
|
|
8
|
+
import { defineThemes, EDITOR_THEME_DARK, EDITOR_THEME_LIGHT } from "./themes";
|
|
9
9
|
|
|
10
10
|
let semanticTokensRegistered = false;
|
|
11
11
|
function registerSemanticTokenProviders(monaco: typeof import("monaco-editor")) {
|
|
@@ -51,7 +51,7 @@ export type EditorProps = Omit<HTMLAttributes<HTMLDivElement>, "onChange"> & {
|
|
|
51
51
|
*/
|
|
52
52
|
export const Editor = ({ value, onChange, onValidate, readOnly = false, className, typeDefinitions, compilerOptions = {}, ...props }: EditorProps) => {
|
|
53
53
|
const { resolvedTheme } = useTheme();
|
|
54
|
-
const monacoTheme = resolvedTheme === "dark" ?
|
|
54
|
+
const monacoTheme = resolvedTheme === "dark" ? EDITOR_THEME_DARK : EDITOR_THEME_LIGHT;
|
|
55
55
|
const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);
|
|
56
56
|
|
|
57
57
|
const handleEditorDidMount = useCallback(
|
|
@@ -1,40 +1,58 @@
|
|
|
1
1
|
import type { editor } from "monaco-editor";
|
|
2
2
|
|
|
3
|
-
export const
|
|
4
|
-
export const
|
|
3
|
+
export const EDITOR_THEME_LIGHT = "ds-light";
|
|
4
|
+
export const EDITOR_THEME_DARK = "ds-dark";
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* The token palettes are One Light and One Dark, with every colour raised to
|
|
8
|
+
* 4.5:1 against the worst background it can land on — which is the active line's
|
|
9
|
+
* highlight, not the editor background, since that is the darker (light theme)
|
|
10
|
+
* or lighter (dark theme) of the two.
|
|
11
|
+
*
|
|
12
|
+
* Stock One Light fails that on 21 of its 25 token colours: syntax highlighting
|
|
13
|
+
* is text as far as axe is concerned, so it carries the full 4.5:1 obligation
|
|
14
|
+
* rather than the 3:1 that non-text contrast gets. Hue and saturation are kept;
|
|
15
|
+
* only lightness moves, and only as far as it has to. The most visible
|
|
16
|
+
* consequence is that comments recede less than in stock One Light — #a0a1a7
|
|
17
|
+
* managed 2.30.
|
|
18
|
+
*
|
|
19
|
+
* `scripts/check-contrast.ts` covers the design system's own tokens; these are
|
|
20
|
+
* Monaco's, so they are checked by the editor stories' a11y run instead. A story
|
|
21
|
+
* with a play function is what exercises it: without one, axe runs before Monaco
|
|
22
|
+
* has painted and sees nothing to measure.
|
|
23
|
+
*/
|
|
6
24
|
const lightTheme: editor.IStandaloneThemeData = {
|
|
7
25
|
base: "vs",
|
|
8
26
|
inherit: true,
|
|
9
27
|
rules: [
|
|
10
28
|
// Monarch tokenizer rules
|
|
11
|
-
{ token: "comment", foreground: "
|
|
29
|
+
{ token: "comment", foreground: "6b6c73", fontStyle: "italic" },
|
|
12
30
|
{ token: "keyword", foreground: "a626a4" },
|
|
13
|
-
{ token: "string", foreground: "
|
|
14
|
-
{ token: "number", foreground: "
|
|
31
|
+
{ token: "string", foreground: "3c7a3c" },
|
|
32
|
+
{ token: "number", foreground: "906301" },
|
|
15
33
|
{ token: "delimiter", foreground: "383a42" },
|
|
16
34
|
{ token: "delimiter.bracket", foreground: "383a42" },
|
|
17
|
-
{ token: "tag", foreground: "
|
|
18
|
-
{ token: "attribute.name", foreground: "
|
|
19
|
-
{ token: "attribute.value", foreground: "
|
|
20
|
-
{ token: "operator", foreground: "
|
|
21
|
-
{ token: "identifier", foreground: "
|
|
35
|
+
{ token: "tag", foreground: "cf2d1f" },
|
|
36
|
+
{ token: "attribute.name", foreground: "906301" },
|
|
37
|
+
{ token: "attribute.value", foreground: "3c7a3c" },
|
|
38
|
+
{ token: "operator", foreground: "0174a5" },
|
|
39
|
+
{ token: "identifier", foreground: "cf2d1f" },
|
|
22
40
|
|
|
23
41
|
// Semantic token rules (TypeScript language service)
|
|
24
|
-
{ token: "variable", foreground: "
|
|
25
|
-
{ token: "variable.readonly", foreground: "
|
|
42
|
+
{ token: "variable", foreground: "cf2d1f" },
|
|
43
|
+
{ token: "variable.readonly", foreground: "906301" },
|
|
26
44
|
{ token: "parameter", foreground: "383a42" },
|
|
27
|
-
{ token: "property", foreground: "
|
|
28
|
-
{ token: "property.readonly", foreground: "
|
|
29
|
-
{ token: "function", foreground: "
|
|
30
|
-
{ token: "method", foreground: "
|
|
31
|
-
{ token: "type", foreground: "
|
|
32
|
-
{ token: "type.identifier", foreground: "
|
|
33
|
-
{ token: "class", foreground: "
|
|
34
|
-
{ token: "interface", foreground: "
|
|
35
|
-
{ token: "enum", foreground: "
|
|
36
|
-
{ token: "enumMember", foreground: "
|
|
37
|
-
{ token: "namespace", foreground: "
|
|
45
|
+
{ token: "property", foreground: "cf2d1f" },
|
|
46
|
+
{ token: "property.readonly", foreground: "906301" },
|
|
47
|
+
{ token: "function", foreground: "2162f0" },
|
|
48
|
+
{ token: "method", foreground: "2162f0" },
|
|
49
|
+
{ token: "type", foreground: "916301" },
|
|
50
|
+
{ token: "type.identifier", foreground: "916301" },
|
|
51
|
+
{ token: "class", foreground: "916301" },
|
|
52
|
+
{ token: "interface", foreground: "916301" },
|
|
53
|
+
{ token: "enum", foreground: "916301" },
|
|
54
|
+
{ token: "enumMember", foreground: "906301" },
|
|
55
|
+
{ token: "namespace", foreground: "cf2d1f" },
|
|
38
56
|
],
|
|
39
57
|
colors: {
|
|
40
58
|
"editor.background": "#fafafa",
|
|
@@ -60,23 +78,23 @@ const darkTheme: editor.IStandaloneThemeData = {
|
|
|
60
78
|
inherit: true,
|
|
61
79
|
rules: [
|
|
62
80
|
// Monarch tokenizer rules
|
|
63
|
-
{ token: "comment", foreground: "
|
|
64
|
-
{ token: "keyword", foreground: "
|
|
81
|
+
{ token: "comment", foreground: "939aa6", fontStyle: "italic" },
|
|
82
|
+
{ token: "keyword", foreground: "c97edf" },
|
|
65
83
|
{ token: "string", foreground: "98c379" },
|
|
66
84
|
{ token: "number", foreground: "d19a66" },
|
|
67
85
|
{ token: "delimiter", foreground: "abb2bf" },
|
|
68
86
|
{ token: "delimiter.bracket", foreground: "abb2bf" },
|
|
69
|
-
{ token: "tag", foreground: "
|
|
87
|
+
{ token: "tag", foreground: "e37b83" },
|
|
70
88
|
{ token: "attribute.name", foreground: "d19a66" },
|
|
71
89
|
{ token: "attribute.value", foreground: "98c379" },
|
|
72
90
|
{ token: "operator", foreground: "56b6c2" },
|
|
73
|
-
{ token: "identifier", foreground: "
|
|
91
|
+
{ token: "identifier", foreground: "e37b83" },
|
|
74
92
|
|
|
75
93
|
// Semantic token rules (TypeScript language service)
|
|
76
|
-
{ token: "variable", foreground: "
|
|
94
|
+
{ token: "variable", foreground: "e37b83" },
|
|
77
95
|
{ token: "variable.readonly", foreground: "d19a66" },
|
|
78
96
|
{ token: "parameter", foreground: "abb2bf" },
|
|
79
|
-
{ token: "property", foreground: "
|
|
97
|
+
{ token: "property", foreground: "e37b83" },
|
|
80
98
|
{ token: "property.readonly", foreground: "d19a66" },
|
|
81
99
|
{ token: "function", foreground: "61afef" },
|
|
82
100
|
{ token: "method", foreground: "61afef" },
|
|
@@ -86,7 +104,7 @@ const darkTheme: editor.IStandaloneThemeData = {
|
|
|
86
104
|
{ token: "interface", foreground: "e5c07b" },
|
|
87
105
|
{ token: "enum", foreground: "e5c07b" },
|
|
88
106
|
{ token: "enumMember", foreground: "d19a66" },
|
|
89
|
-
{ token: "namespace", foreground: "
|
|
107
|
+
{ token: "namespace", foreground: "e37b83" },
|
|
90
108
|
],
|
|
91
109
|
colors: {
|
|
92
110
|
"editor.background": "#282c34",
|
|
@@ -107,6 +125,6 @@ const darkTheme: editor.IStandaloneThemeData = {
|
|
|
107
125
|
};
|
|
108
126
|
|
|
109
127
|
export function defineThemes(monaco: typeof import("monaco-editor")) {
|
|
110
|
-
monaco.editor.defineTheme(
|
|
111
|
-
monaco.editor.defineTheme(
|
|
128
|
+
monaco.editor.defineTheme(EDITOR_THEME_LIGHT, lightTheme);
|
|
129
|
+
monaco.editor.defineTheme(EDITOR_THEME_DARK, darkTheme);
|
|
112
130
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Message } from "@sixthshift/design-system/message";
|
|
1
|
+
import { Message, type MessageIntentName } from "@sixthshift/design-system/message";
|
|
2
2
|
import { cn } from "@sixthshift/design-system/utils";
|
|
3
3
|
import { AlertCircle, AlertTriangle, CheckCircle, Info } from "lucide-react";
|
|
4
|
-
import type {
|
|
4
|
+
import type { HTMLAttributes } from "react";
|
|
5
5
|
|
|
6
6
|
export type ValidationError = {
|
|
7
7
|
line: number;
|
|
@@ -16,7 +16,10 @@ export type ValidationStatusProps = HTMLAttributes<HTMLDivElement> & {
|
|
|
16
16
|
maxRows?: number;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
// The closed union, not `ComponentProps<typeof Message>["intent"]`: that is now
|
|
20
|
+
// widened to admit any string so consumers can add intents in CSS, which would
|
|
21
|
+
// silently let a typo through this map.
|
|
22
|
+
type Intent = MessageIntentName;
|
|
20
23
|
|
|
21
24
|
const SEVERITY_INTENT: Record<ValidationError["severity"], Intent> = {
|
|
22
25
|
error: "danger",
|