@sixthshift/design-system 0.2.1 → 0.4.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 +242 -33
- package/dist/components/Badge/Badge.d.ts +65 -7
- package/dist/components/Badge/Badge.d.ts.map +1 -1
- package/dist/components/Badge/Badge.js +56 -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 +20 -2
- package/dist/components/BarChart/BarChart.d.ts.map +1 -1
- package/dist/components/BarChart/BarChart.js +17 -3
- 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 +31 -1
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +94 -225
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Calendar/CalendarView.d.ts +15 -0
- package/dist/components/Calendar/CalendarView.d.ts.map +1 -0
- package/dist/components/Calendar/CalendarView.js +263 -0
- package/dist/components/Calendar/CalendarView.js.map +1 -0
- package/dist/components/Calendar/calendar.types.d.ts +87 -27
- package/dist/components/Calendar/calendar.types.d.ts.map +1 -1
- package/dist/components/Calendar/calendar.types.js +10 -3
- package/dist/components/Calendar/calendar.types.js.map +1 -1
- package/dist/components/Calendar/index.d.ts +16 -2
- package/dist/components/Calendar/index.d.ts.map +1 -1
- package/dist/components/Calendar/index.js +15 -1
- package/dist/components/Calendar/index.js.map +1 -1
- package/dist/components/Card/Card.d.ts +13 -0
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.js +15 -2
- package/dist/components/Card/Card.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 +45 -2
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.js +228 -11
- 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 +53 -37
- package/dist/components/DatePicker/datepicker.types.d.ts.map +1 -1
- package/dist/components/DatePicker/datepicker.types.js +5 -3
- package/dist/components/DatePicker/datepicker.types.js.map +1 -1
- package/dist/components/DatePicker/index.d.ts +10 -1
- package/dist/components/DatePicker/index.d.ts.map +1 -1
- package/dist/components/DatePicker/index.js +8 -0
- package/dist/components/DatePicker/index.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +22 -3
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js +38 -24
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/DateRangePicker/daterangepicker.types.d.ts +26 -21
- package/dist/components/DateRangePicker/daterangepicker.types.d.ts.map +1 -1
- package/dist/components/DateRangePicker/daterangepicker.types.js +6 -0
- package/dist/components/DateRangePicker/daterangepicker.types.js.map +1 -1
- package/dist/components/DateRangePicker/index.d.ts +8 -1
- package/dist/components/DateRangePicker/index.d.ts.map +1 -1
- package/dist/components/DateRangePicker/index.js +6 -0
- package/dist/components/DateRangePicker/index.js.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +32 -4
- package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.js +133 -42
- 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 +26 -18
- package/dist/components/DateTimePicker/datetimepicker.types.d.ts.map +1 -1
- package/dist/components/DateTimePicker/datetimepicker.types.js +10 -0
- package/dist/components/DateTimePicker/datetimepicker.types.js.map +1 -1
- package/dist/components/DateTimePicker/index.d.ts +8 -1
- package/dist/components/DateTimePicker/index.d.ts.map +1 -1
- package/dist/components/DateTimePicker/index.js +6 -0
- package/dist/components/DateTimePicker/index.js.map +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts +30 -4
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +171 -72
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
- package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts +28 -19
- package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts.map +1 -1
- package/dist/components/DateTimeRangePicker/datetimerangepicker.types.js +8 -0
- package/dist/components/DateTimeRangePicker/datetimerangepicker.types.js.map +1 -1
- package/dist/components/DateTimeRangePicker/index.d.ts +8 -0
- package/dist/components/DateTimeRangePicker/index.d.ts.map +1 -1
- package/dist/components/DateTimeRangePicker/index.js +7 -0
- package/dist/components/DateTimeRangePicker/index.js.map +1 -1
- package/dist/components/Field/Field.d.ts +18 -20
- package/dist/components/Field/Field.d.ts.map +1 -1
- package/dist/components/Field/Field.js +22 -5
- 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 +35 -2
- package/dist/components/LineChart/LineChart.d.ts.map +1 -1
- package/dist/components/LineChart/LineChart.js +22 -3
- package/dist/components/LineChart/LineChart.js.map +1 -1
- package/dist/components/Markdown/Markdown.d.ts +19 -4
- package/dist/components/Markdown/Markdown.d.ts.map +1 -1
- package/dist/components/Markdown/Markdown.js +20 -2
- 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 +62 -11
- 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 +60 -5
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +52 -6
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/components/ModalContext.d.ts +14 -0
- package/dist/components/Modal/components/ModalContext.d.ts.map +1 -1
- package/dist/components/Modal/components/ModalContext.js.map +1 -1
- package/dist/components/Modal/components/ModalHeader.d.ts.map +1 -1
- package/dist/components/Modal/components/ModalHeader.js +13 -2
- 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 +36 -0
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popover/components/PopoverBody.d.ts.map +1 -1
- package/dist/components/Popover/components/PopoverBody.js +5 -2
- package/dist/components/Popover/components/PopoverBody.js.map +1 -1
- package/dist/components/Popover/components/PopoverContext.d.ts +1 -0
- package/dist/components/Popover/components/PopoverContext.d.ts.map +1 -1
- package/dist/components/Popover/components/PopoverContext.js.map +1 -1
- package/dist/components/Popover/components/PopoverTrigger.d.ts.map +1 -1
- package/dist/components/Popover/components/PopoverTrigger.js +2 -2
- package/dist/components/Popover/components/PopoverTrigger.js.map +1 -1
- package/dist/components/ProgressBar/ProgressBar.d.ts +16 -1
- package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/components/ProgressBar/ProgressBar.js +19 -3
- 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 +10 -2
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +63 -18
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/SelectDropdown.d.ts +14 -2
- package/dist/components/Select/SelectDropdown.d.ts.map +1 -1
- package/dist/components/Select/SelectDropdown.js +20 -4
- package/dist/components/Select/SelectDropdown.js.map +1 -1
- package/dist/components/Select/SelectTrigger.d.ts +10 -3
- package/dist/components/Select/SelectTrigger.d.ts.map +1 -1
- package/dist/components/Select/SelectTrigger.js +12 -3
- package/dist/components/Select/SelectTrigger.js.map +1 -1
- package/dist/components/Select/useSelectKeyboard.d.ts +15 -1
- package/dist/components/Select/useSelectKeyboard.d.ts.map +1 -1
- package/dist/components/Select/useSelectKeyboard.js +73 -65
- package/dist/components/Select/useSelectKeyboard.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 +25 -5
- package/dist/components/Sheet/Sheet.d.ts.map +1 -1
- package/dist/components/Sheet/Sheet.js +24 -6
- package/dist/components/Sheet/Sheet.js.map +1 -1
- package/dist/components/Sheet/components/SheetContext.d.ts +10 -0
- package/dist/components/Sheet/components/SheetContext.d.ts.map +1 -1
- package/dist/components/Sheet/components/SheetContext.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.d.ts.map +1 -1
- package/dist/components/Sheet/components/SheetHeader.js +11 -2
- package/dist/components/Sheet/components/SheetHeader.js.map +1 -1
- package/dist/components/Sparkline/Sparkline.d.ts +21 -2
- package/dist/components/Sparkline/Sparkline.d.ts.map +1 -1
- package/dist/components/Sparkline/Sparkline.js +16 -3
- 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 +8 -2
- 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/TabsList.d.ts +1 -1
- package/dist/components/Tabs/components/TabsList.d.ts.map +1 -1
- package/dist/components/Tabs/components/TabsList.js +5 -4
- package/dist/components/Tabs/components/TabsList.js.map +1 -1
- package/dist/components/Tabs/components/TabsPanels.d.ts +1 -1
- package/dist/components/Tabs/components/TabsPanels.d.ts.map +1 -1
- package/dist/components/Tabs/components/TabsPanels.js +5 -3
- package/dist/components/Tabs/components/TabsPanels.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 +16 -13
- package/dist/components/TagChip/TagChip.d.ts.map +1 -1
- package/dist/components/TagChip/TagChip.js +18 -3
- package/dist/components/TagChip/TagChip.js.map +1 -1
- package/dist/components/TagInput/TagInput.d.ts +12 -9
- package/dist/components/TagInput/TagInput.d.ts.map +1 -1
- package/dist/components/TagInput/TagInput.js +16 -4
- 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 +34 -2
- package/dist/components/TimePicker/TimePicker.d.ts.map +1 -1
- package/dist/components/TimePicker/TimePicker.js +118 -15
- 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 +14 -15
- package/dist/components/TimePicker/timepicker.types.d.ts.map +1 -1
- package/dist/components/TimePicker/timepicker.types.js +4 -3
- package/dist/components/TimePicker/timepicker.types.js.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 +2 -0
- package/dist/date-time/index.d.ts.map +1 -1
- package/dist/date-time/index.js +9 -1
- package/dist/date-time/index.js.map +1 -1
- package/dist/date-time/iso.d.ts +261 -0
- package/dist/date-time/iso.d.ts.map +1 -0
- package/dist/date-time/iso.js +358 -0
- package/dist/date-time/iso.js.map +1 -0
- package/dist/date-time/now.d.ts +7 -6
- package/dist/date-time/now.d.ts.map +1 -1
- package/dist/date-time/now.js +3 -3
- package/dist/date-time/now.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/theme/index.d.ts +4 -3
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +3 -2
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/schema.d.ts +49 -33
- package/dist/theme/schema.d.ts.map +1 -1
- package/dist/theme/schema.js +30 -21
- package/dist/theme/schema.js.map +1 -1
- package/package.json +11 -59
- package/src/components/Badge/Badge.tsx +87 -49
- package/src/components/Badge/index.ts +10 -1
- package/src/components/BarChart/BarChart.tsx +37 -30
- package/src/components/Button/Button.tsx +129 -106
- package/src/components/Button/index.ts +10 -1
- package/src/components/Calendar/Calendar.tsx +104 -401
- package/src/components/Calendar/CalendarView.tsx +454 -0
- package/src/components/Calendar/calendar.types.ts +104 -29
- package/src/components/Calendar/index.ts +16 -17
- package/src/components/Card/Card.tsx +15 -2
- 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 +369 -42
- package/src/components/DatePicker/DateSegments.tsx +125 -0
- package/src/components/DatePicker/datepicker.types.ts +58 -39
- package/src/components/DatePicker/index.ts +11 -3
- package/src/components/DateRangePicker/DateRangePicker.tsx +38 -24
- package/src/components/DateRangePicker/daterangepicker.types.ts +29 -23
- package/src/components/DateRangePicker/index.ts +9 -1
- package/src/components/DateTimePicker/DateTimePicker.tsx +189 -88
- package/src/components/DateTimePicker/DateTimeSegments.tsx +113 -0
- package/src/components/DateTimePicker/datetimepicker.types.ts +29 -19
- package/src/components/DateTimePicker/index.ts +9 -1
- package/src/components/DateTimeRangePicker/DateTimeRangePicker.tsx +251 -126
- package/src/components/DateTimeRangePicker/datetimerangepicker.types.ts +31 -20
- package/src/components/DateTimeRangePicker/index.ts +9 -0
- package/src/components/Field/Field.tsx +25 -26
- 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 +164 -141
- package/src/components/Markdown/Markdown.tsx +21 -3
- package/src/components/Message/Message.tsx +83 -17
- package/src/components/Message/index.ts +1 -1
- package/src/components/Modal/Modal.tsx +157 -86
- package/src/components/Modal/components/ModalContext.tsx +14 -0
- package/src/components/Modal/components/ModalHeader.tsx +15 -3
- package/src/components/Popover/Popover.tsx +36 -0
- package/src/components/Popover/components/PopoverBody.tsx +6 -1
- package/src/components/Popover/components/PopoverContext.tsx +1 -0
- package/src/components/Popover/components/PopoverTrigger.tsx +2 -1
- package/src/components/ProgressBar/ProgressBar.tsx +46 -28
- 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 +75 -19
- package/src/components/Select/SelectDropdown.tsx +45 -12
- package/src/components/Select/SelectTrigger.tsx +31 -8
- package/src/components/Select/useSelectKeyboard.ts +20 -10
- package/src/components/Separator/Separator.tsx +10 -0
- package/src/components/Sheet/Sheet.tsx +114 -83
- package/src/components/Sheet/components/SheetContext.tsx +10 -0
- package/src/components/Sheet/components/SheetFooter.tsx +1 -1
- package/src/components/Sheet/components/SheetHeader.tsx +18 -3
- package/src/components/Sparkline/Sparkline.tsx +40 -36
- 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/TabsList.tsx +5 -3
- package/src/components/Tabs/components/TabsPanels.tsx +5 -3
- package/src/components/Tabs/components/TabsTrigger.tsx +22 -5
- package/src/components/TagChip/TagChip.tsx +27 -18
- package/src/components/TagInput/TagInput.tsx +16 -11
- 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 +157 -51
- package/src/components/TimePicker/TimeSegments.tsx +131 -0
- package/src/components/TimePicker/timepicker.hooks.ts +1 -24
- package/src/components/TimePicker/timepicker.types.ts +14 -16
- 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 +61 -1
- package/src/date-time/iso.ts +511 -0
- package/src/date-time/now.ts +10 -9
- package/src/internal/PickerField.tsx +90 -0
- package/src/internal/SegmentedField.tsx +445 -0
- package/src/internal/index.ts +2 -0
- package/src/theme/index.ts +11 -9
- package/src/theme/recipes/badge.css +140 -0
- package/src/theme/recipes/button.css +167 -0
- package/src/theme/recipes/card.css +26 -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 +59 -58
- package/src/theme/tokens.css +824 -0
- 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 -13
- package/dist/components/ColorDot/ColorDot.d.ts.map +0 -1
- package/dist/components/ColorDot/ColorDot.js +0 -34
- 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 -15
- package/dist/components/EmptyState/EmptyState.d.ts.map +0 -1
- package/dist/components/EmptyState/EmptyState.js +0 -7
- 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 -6
- 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 -15
- package/dist/components/NavBottom/NavBottom.d.ts.map +0 -1
- package/dist/components/NavBottom/NavBottom.js +0 -19
- 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 -15
- package/dist/components/NavSide/NavSide.d.ts.map +0 -1
- package/dist/components/NavSide/NavSide.js +0 -10
- 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 -3
- package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
- package/dist/components/Skeleton/Skeleton.js +0 -7
- 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 -13
- 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/dist/styles.css +0 -2
- package/dist/theme.generated.css +0 -438
- 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 -50
- package/src/components/ColorDot/index.ts +0 -1
- package/src/components/EmptyState/EmptyState.tsx +0 -29
- 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 -13
- package/src/components/MetricList/MetricRow.tsx +0 -30
- package/src/components/MetricList/index.ts +0 -2
- package/src/components/NavBottom/NavBottom.tsx +0 -53
- package/src/components/NavBottom/index.ts +0 -3
- package/src/components/NavSide/NavItem.tsx +0 -39
- package/src/components/NavSide/NavSide.tsx +0 -40
- 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 -7
- package/src/components/Skeleton/index.ts +0 -1
- package/src/components/StatsCard/StatsCard.tsx +0 -40
- package/src/components/StatsCard/index.ts +0 -1
- package/src/styles/base.css +0 -41
- package/src/theme/palette.json +0 -100
- package/src/theme/palette.schema.json +0 -40
- package/src/theme/theme.json +0 -349
- package/src/theme/theme.schema.json +0 -876
- package/src/theme/typography.json +0 -7
- package/src/theme/typography.schema.json +0 -36
- package/tailwind.config.ts +0 -261
|
@@ -1,28 +1,11 @@
|
|
|
1
1
|
import { cn } from "@sixthshift/design-system/utils";
|
|
2
|
-
import
|
|
2
|
+
import * as React from "react";
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
* The labelled identifier carve-out used by identity-disclosure surfaces
|
|
6
|
-
* (Person Detail's Identifiers card, Calendar Event's per-source provenance).
|
|
7
|
-
*
|
|
8
|
-
* Field exists because identifiers (JIDs, external IDs, OAuth subs) are
|
|
9
|
-
* *content* on these surfaces — they answer "what does PA know about this
|
|
10
|
-
* contact?" The default value rendering is monospaced with `break-all`
|
|
11
|
-
* because a raw JID is the canonical case and it must wrap inside the row.
|
|
12
|
-
*
|
|
13
|
-
* Sibling primitive — not a replacement: `MetricRow` (in `@sixthshift/design-system/metric-list`)
|
|
14
|
-
* carries runtime metrics ("CPU: 12.5%"). Both are label/value pairs but the
|
|
15
|
-
* value semantics differ: a metric is a short readable number; an identifier
|
|
16
|
-
* is a long opaque string. Forcing `MetricRow` to do both would conflate the
|
|
17
|
-
* two and break Identifiers-card wrapping.
|
|
18
|
-
*
|
|
19
|
-
* See: docs/engineering/explanation/concepts/identity-rendering.md
|
|
20
|
-
*/
|
|
21
4
|
export type FieldProps = {
|
|
22
5
|
/** The humane label for what the identifier identifies ("WhatsApp", "Email"). */
|
|
23
6
|
label: string;
|
|
24
7
|
/** The identifier itself. Rendered monospaced + breakable by default. */
|
|
25
|
-
children: ReactNode;
|
|
8
|
+
children: React.ReactNode;
|
|
26
9
|
/**
|
|
27
10
|
* `stacked` (default): label above, value below — best for long identifiers
|
|
28
11
|
* that need horizontal room to wrap.
|
|
@@ -39,22 +22,38 @@ export type FieldProps = {
|
|
|
39
22
|
className?: string;
|
|
40
23
|
};
|
|
41
24
|
|
|
42
|
-
|
|
43
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Read-only label/value pair for displaying an identifier on
|
|
27
|
+
* identity-disclosure surfaces — a contact's JIDs, external IDs, OAuth
|
|
28
|
+
* subjects. Not a form control: there is no input and nothing to submit.
|
|
29
|
+
*
|
|
30
|
+
* `layout="stacked"` (default) puts the label above the value, for long
|
|
31
|
+
* identifiers that need width to wrap; `layout="row"` puts label and value
|
|
32
|
+
* on one line with the value right-aligned. `mono` (default `true`) renders
|
|
33
|
+
* the value monospaced with `break-all`, since a raw identifier is the
|
|
34
|
+
* canonical case; set it `false` when the value is itself human-readable.
|
|
35
|
+
*
|
|
36
|
+
* Distinct from `FormField`, which is the label + input wrapper for
|
|
37
|
+
* interactive form controls. Both are label/value pairs, but this one is
|
|
38
|
+
* read-only: the value is a long opaque identifier, not an editable field.
|
|
39
|
+
*/
|
|
40
|
+
export const Field = React.forwardRef<HTMLDivElement, FieldProps>(({ label, children, layout = "stacked", mono = true, className }, ref) => {
|
|
41
|
+
const valueClass = cn("text-(--field-fg) text-xs", mono && "break-all font-mono");
|
|
44
42
|
|
|
45
43
|
if (layout === "row") {
|
|
46
44
|
return (
|
|
47
|
-
<div className={cn("flex items-baseline justify-between gap-3", className)}>
|
|
48
|
-
<span className="shrink-0 text-fg
|
|
45
|
+
<div ref={ref} className={cn("field flex items-baseline justify-between gap-3", className)}>
|
|
46
|
+
<span className="shrink-0 text-(--field-fg) text-sm">{label}</span>
|
|
49
47
|
<span className={cn(valueClass, "min-w-0 text-right")}>{children}</span>
|
|
50
48
|
</div>
|
|
51
49
|
);
|
|
52
50
|
}
|
|
53
51
|
|
|
54
52
|
return (
|
|
55
|
-
<div className={cn("flex flex-col gap-1", className)}>
|
|
56
|
-
<span className="text-fg
|
|
53
|
+
<div ref={ref} className={cn("field flex flex-col gap-1", className)}>
|
|
54
|
+
<span className="text-(--field-fg) text-xs uppercase tracking-wide">{label}</span>
|
|
57
55
|
<span className={valueClass}>{children}</span>
|
|
58
56
|
</div>
|
|
59
57
|
);
|
|
60
|
-
};
|
|
58
|
+
});
|
|
59
|
+
Field.displayName = "Field";
|
|
@@ -16,6 +16,21 @@ export type FormFieldProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
16
16
|
required?: boolean;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Wraps a form control with a label, optional description, and optional
|
|
21
|
+
* validation feedback — the composition point for `Input`, `Textarea`,
|
|
22
|
+
* `Select` and similar controls inside a form.
|
|
23
|
+
*
|
|
24
|
+
* Generates an `id` (or uses the one passed in) and clones it, plus
|
|
25
|
+
* `aria-describedby` (pointing at the description and/or feedback text) and
|
|
26
|
+
* `aria-invalid` (when `feedback.intent` is `"danger"`), onto its child —
|
|
27
|
+
* so the wrapped control does not need those wired by hand. It expects a
|
|
28
|
+
* single child control: the same id and aria attributes get cloned onto
|
|
29
|
+
* every child if more than one is passed.
|
|
30
|
+
*
|
|
31
|
+
* Distinct from `Field`, which displays a read-only label/value pair rather
|
|
32
|
+
* than wrapping an interactive control.
|
|
33
|
+
*/
|
|
19
34
|
const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(({ className, label, description, feedback, required, children, id, ...props }, ref) => {
|
|
20
35
|
const generatedId = React.useId();
|
|
21
36
|
const fieldId = id ?? generatedId;
|
|
@@ -77,6 +77,12 @@ type HoverCardComponent = typeof HoverCardRoot & {
|
|
|
77
77
|
Content: typeof HoverCardContent;
|
|
78
78
|
};
|
|
79
79
|
|
|
80
|
+
/**
|
|
81
|
+
* NOTE: Storybook shows the copy in HoverCard.stories.tsx
|
|
82
|
+
* (`parameters.docs.description.component`), not this comment. react-docgen
|
|
83
|
+
* cannot extract a description from this declaration shape, so keeping a
|
|
84
|
+
* second copy here would only drift. Edit the stories file.
|
|
85
|
+
*/
|
|
80
86
|
export const HoverCard: HoverCardComponent = Object.assign(HoverCardRoot, {
|
|
81
87
|
Trigger: HoverCardTrigger,
|
|
82
88
|
Content: HoverCardContent,
|
|
@@ -6,20 +6,35 @@ export type InputProps = React.InputHTMLAttributes<HTMLInputElement> & {
|
|
|
6
6
|
iconRight?: React.ReactNode;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
const iconSlotStyles = `absolute top-1/2 -translate-y-1/2 text-fg
|
|
9
|
+
const iconSlotStyles = `absolute top-1/2 -translate-y-1/2 text-(--input-icon-fg)
|
|
10
10
|
[&_svg]:h-4 [&_svg]:w-4
|
|
11
11
|
[&_button]:flex [&_button]:cursor-pointer [&_button]:appearance-none
|
|
12
12
|
[&_button]:border-0 [&_button]:bg-transparent`;
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Single-line text input for free-form text entry.
|
|
16
|
+
*
|
|
17
|
+
* Renders a plain `<input>` unless `iconLeft` or `iconRight` is supplied, in
|
|
18
|
+
* which case it wraps the input in a relatively positioned container so an
|
|
19
|
+
* icon — or an icon-styled button, as `SearchInput` uses for its clear
|
|
20
|
+
* button — can sit inside the field's padding without affecting layout.
|
|
21
|
+
*
|
|
22
|
+
* Controlled or uncontrolled exactly like a native input (`value`/`onChange`
|
|
23
|
+
* or `defaultValue`), and `type` is forwarded as-is, so `type="password"`,
|
|
24
|
+
* `type="number"`, etc. all work.
|
|
25
|
+
*
|
|
26
|
+
* Meant to be wrapped by `FormField` for label, description and validation
|
|
27
|
+
* wiring, or by `SearchInput` for a search affordance.
|
|
28
|
+
*/
|
|
14
29
|
const Input = React.forwardRef<HTMLInputElement, InputProps>(({ className, type, iconLeft, iconRight, ...props }, ref) => {
|
|
15
30
|
if (iconLeft || iconRight) {
|
|
16
31
|
return (
|
|
17
|
-
<div className={cn("relative h-9 w-full text-sm", className)}>
|
|
32
|
+
<div className={cn("input relative h-9 w-full text-sm", className)}>
|
|
18
33
|
{iconLeft && <span className={cn(iconSlotStyles, "left-3")}>{iconLeft}</span>}
|
|
19
34
|
<input
|
|
20
35
|
type={type}
|
|
21
36
|
className={cn(
|
|
22
|
-
`flex h-full w-full rounded-md border
|
|
37
|
+
`input border-(color:--input-border) focus-visible:ring-(color:--input-ring) flex h-full w-full rounded-md border bg-(--input-bg) py-1 text-[length:inherit] shadow-xs transition-colors file:border-0 file:bg-(--input-file-bg) file:font-medium file:text-(--input-file-fg) file:text-sm placeholder:text-(--input-placeholder-fg) focus-visible:outline-hidden focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50`,
|
|
23
38
|
iconLeft ? "pl-9" : "pl-3",
|
|
24
39
|
iconRight ? "pr-9" : "pr-3"
|
|
25
40
|
)}
|
|
@@ -35,7 +50,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(({ className, type,
|
|
|
35
50
|
<input
|
|
36
51
|
type={type}
|
|
37
52
|
className={cn(
|
|
38
|
-
`flex h-9 w-full rounded-md border
|
|
53
|
+
`input border-(color:--input-border) focus-visible:ring-(color:--input-ring) flex h-9 w-full rounded-md border bg-(--input-bg) px-3 py-1 text-sm shadow-xs transition-colors file:border-0 file:bg-(--input-file-bg) file:font-medium file:text-(--input-file-fg) file:text-sm placeholder:text-(--input-placeholder-fg) focus-visible:outline-hidden focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50`,
|
|
39
54
|
className
|
|
40
55
|
)}
|
|
41
56
|
ref={ref}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Tooltip } from "@sixthshift/design-system/tooltip";
|
|
2
2
|
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
-
import
|
|
3
|
+
import * as React from "react";
|
|
4
4
|
|
|
5
5
|
export type LineChartDataPoint = {
|
|
6
6
|
label: string;
|
|
@@ -96,156 +96,179 @@ function buildPath(points: { x: number; y: number }[], interpolation: Interpolat
|
|
|
96
96
|
return parts.join(" ");
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
99
|
+
/**
|
|
100
|
+
* Multi-series line chart, rendered as a single responsive SVG (a `viewBox`,
|
|
101
|
+
* no fixed pixel size) with one `<path>` per series, plus optional grid
|
|
102
|
+
* lines, axes, dots, and per-point value labels.
|
|
103
|
+
*
|
|
104
|
+
* Colour is per-series: pass a CSS color string via `color` on a
|
|
105
|
+
* `LineChartSeries` (typically a `var(--fg-*)` token), or omit it to cycle
|
|
106
|
+
* through the same default palette `BarChart` uses. The y-axis scale is
|
|
107
|
+
* computed from the data into "nice" round ticks unless `yMin`/`yMax`/
|
|
108
|
+
* `yTicks` override it.
|
|
109
|
+
*
|
|
110
|
+
* The chart has a single static accessible name — `<title>Line
|
|
111
|
+
* chart</title>` behind `role="img"` — regardless of what's plotted; it does
|
|
112
|
+
* not describe the series or values. `showTooltip` overlays a `Tooltip` at
|
|
113
|
+
* each data point, but the trigger is a plain, unfocusable `<span>`, so it
|
|
114
|
+
* only responds to mouse hover, not keyboard.
|
|
115
|
+
*/
|
|
116
|
+
export const LineChart = React.forwardRef<HTMLDivElement, LineChartProps>(
|
|
117
|
+
(
|
|
118
|
+
{
|
|
119
|
+
series,
|
|
120
|
+
height = 200,
|
|
121
|
+
showGrid = true,
|
|
122
|
+
showAxes = true,
|
|
123
|
+
showDots = true,
|
|
124
|
+
showLabels = true,
|
|
125
|
+
showValues = false,
|
|
126
|
+
interpolation = "monotone",
|
|
127
|
+
fillArea = false,
|
|
128
|
+
yMin: yMinProp,
|
|
129
|
+
yMax: yMaxProp,
|
|
130
|
+
yTicks = 4,
|
|
131
|
+
showTooltip = false,
|
|
132
|
+
formatTooltip,
|
|
133
|
+
formatValue = (v) => String(v),
|
|
134
|
+
className,
|
|
135
|
+
...rest
|
|
136
|
+
}: LineChartProps,
|
|
137
|
+
ref
|
|
138
|
+
) => {
|
|
139
|
+
const allValues = series.flatMap((s) => s.data.map((d) => d.value));
|
|
140
|
+
// Math.min() of an empty list is Infinity, which propagates NaN through the
|
|
141
|
+
// whole scale. Fall back to a plain 0-1 axis when there is no data.
|
|
142
|
+
const rawMin = yMinProp ?? (allValues.length > 0 ? Math.min(...allValues) : 0);
|
|
143
|
+
const rawMax = yMaxProp ?? (allValues.length > 0 ? Math.max(...allValues) : 1);
|
|
144
|
+
const scale = niceScale(rawMin, rawMax, yTicks);
|
|
145
|
+
|
|
146
|
+
const labelSet = new Set<string>();
|
|
147
|
+
for (const s of series) {
|
|
148
|
+
for (const d of s.data) {
|
|
149
|
+
labelSet.add(d.label);
|
|
150
|
+
}
|
|
129
151
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
const labelIndex = new Map(labels.map((l, i) => [l, i]));
|
|
152
|
+
const labels = [...labelSet];
|
|
153
|
+
const labelCount = labels.length;
|
|
154
|
+
const labelIndex = new Map(labels.map((l, i) => [l, i]));
|
|
134
155
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
156
|
+
const padding = showAxes ? PADDING : PADDING_NO_AXES;
|
|
157
|
+
const viewWidth = 600;
|
|
158
|
+
const chartW = viewWidth - padding.left - padding.right;
|
|
159
|
+
const chartH = height - padding.top - padding.bottom;
|
|
139
160
|
|
|
140
|
-
|
|
161
|
+
const xStep = labelCount > 1 ? chartW / (labelCount - 1) : 0;
|
|
141
162
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
163
|
+
function toX(i: number) {
|
|
164
|
+
return padding.left + i * xStep;
|
|
165
|
+
}
|
|
145
166
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
167
|
+
function toY(v: number) {
|
|
168
|
+
const ratio = (v - scale.min) / (scale.max - scale.min);
|
|
169
|
+
return padding.top + chartH - ratio * chartH;
|
|
170
|
+
}
|
|
150
171
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
172
|
+
const yTickValues: number[] = [];
|
|
173
|
+
for (let v = scale.min; v <= scale.max + scale.step * 0.01; v += scale.step) {
|
|
174
|
+
yTickValues.push(Math.round(v * 1e6) / 1e6);
|
|
175
|
+
}
|
|
155
176
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
177
|
+
function tooltipText(point: LineChartDataPoint, seriesName?: string) {
|
|
178
|
+
if (formatTooltip) return formatTooltip(point, seriesName);
|
|
179
|
+
const prefix = seriesName ? `${seriesName}: ` : `${point.label}: `;
|
|
180
|
+
return `${prefix}${formatValue(point.value)}`;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return (
|
|
184
|
+
<div ref={ref} {...rest} className={cn("relative w-full", className)}>
|
|
185
|
+
<svg viewBox={`0 0 ${viewWidth} ${height}`} className="w-full" preserveAspectRatio="xMidYMid meet" role="img">
|
|
186
|
+
<title>Line chart</title>
|
|
187
|
+
{showGrid &&
|
|
188
|
+
yTickValues.map((v) => (
|
|
189
|
+
<line
|
|
190
|
+
key={`grid-${v}`}
|
|
191
|
+
x1={padding.left}
|
|
192
|
+
y1={toY(v)}
|
|
193
|
+
x2={viewWidth - padding.right}
|
|
194
|
+
y2={toY(v)}
|
|
195
|
+
className="stroke-border-subtle"
|
|
196
|
+
strokeWidth={1}
|
|
197
|
+
strokeDasharray="4 4"
|
|
198
|
+
/>
|
|
199
|
+
))}
|
|
161
200
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
y1={padding.top + chartH}
|
|
186
|
-
x2={viewWidth - padding.right}
|
|
187
|
-
y2={padding.top + chartH}
|
|
188
|
-
className="stroke-border-normal"
|
|
189
|
-
strokeWidth={1}
|
|
190
|
-
/>
|
|
191
|
-
{yTickValues.map((v) => (
|
|
192
|
-
<text key={`ytick-${v}`} x={padding.left - 8} y={toY(v)} textAnchor="end" dominantBaseline="middle" className="fill-fg-subtle" fontSize={11}>
|
|
193
|
-
{formatValue(v)}
|
|
201
|
+
{showAxes && (
|
|
202
|
+
<>
|
|
203
|
+
<line x1={padding.left} y1={padding.top} x2={padding.left} y2={padding.top + chartH} className="stroke-border-normal" strokeWidth={1} />
|
|
204
|
+
<line
|
|
205
|
+
x1={padding.left}
|
|
206
|
+
y1={padding.top + chartH}
|
|
207
|
+
x2={viewWidth - padding.right}
|
|
208
|
+
y2={padding.top + chartH}
|
|
209
|
+
className="stroke-border-normal"
|
|
210
|
+
strokeWidth={1}
|
|
211
|
+
/>
|
|
212
|
+
{yTickValues.map((v) => (
|
|
213
|
+
<text key={`ytick-${v}`} x={padding.left - 8} y={toY(v)} textAnchor="end" dominantBaseline="middle" className="fill-fg-subtle" fontSize={11}>
|
|
214
|
+
{formatValue(v)}
|
|
215
|
+
</text>
|
|
216
|
+
))}
|
|
217
|
+
</>
|
|
218
|
+
)}
|
|
219
|
+
|
|
220
|
+
{showLabels &&
|
|
221
|
+
labels.map((label, i) => (
|
|
222
|
+
<text key={`xlabel-${label}`} x={toX(i)} y={height - 4} textAnchor="middle" className="fill-fg-subtle" fontSize={11}>
|
|
223
|
+
{label}
|
|
194
224
|
</text>
|
|
195
225
|
))}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
<text key={`xlabel-${label}`} x={toX(i)} y={height - 4} textAnchor="middle" className="fill-fg-subtle" fontSize={11}>
|
|
202
|
-
{label}
|
|
203
|
-
</text>
|
|
204
|
-
))}
|
|
205
|
-
|
|
206
|
-
{series.map((s, si) => {
|
|
207
|
-
const color = s.color ?? SERIES_COLORS[si % SERIES_COLORS.length];
|
|
208
|
-
const points = s.data.map((d) => ({ x: toX(labelIndex.get(d.label)!), y: toY(d.value) }));
|
|
209
|
-
const path = buildPath(points, interpolation);
|
|
210
|
-
|
|
211
|
-
return (
|
|
212
|
-
<g key={s.name ?? si}>
|
|
213
|
-
{fillArea && path && (
|
|
214
|
-
<path
|
|
215
|
-
d={`${path} L ${points[points.length - 1]!.x} ${padding.top + chartH} L ${points[0]!.x} ${padding.top + chartH} Z`}
|
|
216
|
-
fill={color}
|
|
217
|
-
opacity={0.1}
|
|
218
|
-
/>
|
|
219
|
-
)}
|
|
220
|
-
{path && <path d={path} fill="none" stroke={color} strokeWidth={2} strokeLinecap="round" strokeLinejoin="round" />}
|
|
221
|
-
{showDots && points.map((p, pi) => <circle key={`dot-${s.data[pi]!.label}`} cx={p.x} cy={p.y} r={3} fill={color} />)}
|
|
222
|
-
{showValues &&
|
|
223
|
-
points.map((p, vi) => (
|
|
224
|
-
<text key={`val-${s.data[vi]!.label}`} x={p.x} y={p.y - 10} textAnchor="middle" className="fill-fg-normal" fontSize={10} fontWeight={600}>
|
|
225
|
-
{formatValue(s.data[vi]!.value)}
|
|
226
|
-
</text>
|
|
227
|
-
))}
|
|
228
|
-
</g>
|
|
229
|
-
);
|
|
230
|
-
})}
|
|
231
|
-
</svg>
|
|
232
|
-
|
|
233
|
-
{showTooltip &&
|
|
234
|
-
series.map((s, si) =>
|
|
235
|
-
s.data.map((d) => {
|
|
236
|
-
const xPct = (toX(labelIndex.get(d.label)!) / viewWidth) * 100;
|
|
237
|
-
const yPct = (toY(d.value) / height) * 100;
|
|
226
|
+
|
|
227
|
+
{series.map((s, si) => {
|
|
228
|
+
const color = s.color ?? SERIES_COLORS[si % SERIES_COLORS.length];
|
|
229
|
+
const points = s.data.map((d) => ({ x: toX(labelIndex.get(d.label)!), y: toY(d.value) }));
|
|
230
|
+
const path = buildPath(points, interpolation);
|
|
238
231
|
|
|
239
232
|
return (
|
|
240
|
-
<
|
|
241
|
-
|
|
242
|
-
<
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
233
|
+
<g key={s.name ?? si}>
|
|
234
|
+
{fillArea && path && (
|
|
235
|
+
<path
|
|
236
|
+
d={`${path} L ${points[points.length - 1]!.x} ${padding.top + chartH} L ${points[0]!.x} ${padding.top + chartH} Z`}
|
|
237
|
+
fill={color}
|
|
238
|
+
opacity={0.1}
|
|
239
|
+
/>
|
|
240
|
+
)}
|
|
241
|
+
{path && <path d={path} fill="none" stroke={color} strokeWidth={2} strokeLinecap="round" strokeLinejoin="round" />}
|
|
242
|
+
{showDots && points.map((p, pi) => <circle key={`dot-${s.data[pi]!.label}`} cx={p.x} cy={p.y} r={3} fill={color} />)}
|
|
243
|
+
{showValues &&
|
|
244
|
+
points.map((p, vi) => (
|
|
245
|
+
<text key={`val-${s.data[vi]!.label}`} x={p.x} y={p.y - 10} textAnchor="middle" className="fill-fg-normal" fontSize={10} fontWeight={600}>
|
|
246
|
+
{formatValue(s.data[vi]!.value)}
|
|
247
|
+
</text>
|
|
248
|
+
))}
|
|
249
|
+
</g>
|
|
246
250
|
);
|
|
247
|
-
})
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
251
|
+
})}
|
|
252
|
+
</svg>
|
|
253
|
+
|
|
254
|
+
{showTooltip &&
|
|
255
|
+
series.map((s, si) =>
|
|
256
|
+
s.data.map((d) => {
|
|
257
|
+
const xPct = (toX(labelIndex.get(d.label)!) / viewWidth) * 100;
|
|
258
|
+
const yPct = (toY(d.value) / height) * 100;
|
|
259
|
+
|
|
260
|
+
return (
|
|
261
|
+
<Tooltip key={`tip-${s.name ?? si}-${d.label}`} delayShow={0}>
|
|
262
|
+
<Tooltip.Trigger asChild>
|
|
263
|
+
<span className="absolute block -translate-x-1/2 -translate-y-1/2" style={{ left: `${xPct}%`, top: `${yPct}%`, width: 16, height: 16 }} />
|
|
264
|
+
</Tooltip.Trigger>
|
|
265
|
+
<Tooltip.Body>{tooltipText(d, s.name)}</Tooltip.Body>
|
|
266
|
+
</Tooltip>
|
|
267
|
+
);
|
|
268
|
+
})
|
|
269
|
+
)}
|
|
270
|
+
</div>
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
);
|
|
274
|
+
LineChart.displayName = "LineChart";
|
|
@@ -2,6 +2,7 @@ import { Body } from "@sixthshift/design-system/body";
|
|
|
2
2
|
import { Emphasis } from "@sixthshift/design-system/emphasis";
|
|
3
3
|
import { Heading } from "@sixthshift/design-system/heading";
|
|
4
4
|
import { cn } from "@sixthshift/design-system/utils";
|
|
5
|
+
import * as React from "react";
|
|
5
6
|
import ReactMarkdown from "react-markdown";
|
|
6
7
|
|
|
7
8
|
export type MarkdownProps = {
|
|
@@ -9,8 +10,25 @@ export type MarkdownProps = {
|
|
|
9
10
|
className?: string;
|
|
10
11
|
};
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Renders a markdown string through the design system's own typography
|
|
15
|
+
* components (`Heading`, `Body`, `Emphasis`) rather than raw HTML tags, so
|
|
16
|
+
* markdown content picks up the same type ramp as everything else.
|
|
17
|
+
*
|
|
18
|
+
* Built for short, chat/assistant-style content rather than full documents:
|
|
19
|
+
* it covers headings, paragraphs, emphasis, links, lists, and code, but
|
|
20
|
+
* heading levels are compressed — `#` renders as `Heading as="h3"`, `##` as
|
|
21
|
+
* `Heading as="h4"`, and `###` as inline `Emphasis` rather than a heading at
|
|
22
|
+
* all — and `h4`+ and tables aren't specially handled: there's no
|
|
23
|
+
* `remark-gfm`, so GFM table syntax doesn't render as a table. Raw HTML
|
|
24
|
+
* embedded in the source is not rendered.
|
|
25
|
+
*
|
|
26
|
+
* `react-markdown` is an optional peer dependency of this package — a
|
|
27
|
+
* consuming app that imports `Markdown` without installing it will fail at
|
|
28
|
+
* runtime.
|
|
29
|
+
*/
|
|
30
|
+
export const Markdown = React.forwardRef<HTMLDivElement, MarkdownProps>(({ children, className }, ref) => (
|
|
31
|
+
<div ref={ref} className={cn("flex flex-col", className)}>
|
|
14
32
|
<ReactMarkdown
|
|
15
33
|
components={{
|
|
16
34
|
h1: ({ children }) => <Heading as="h3">{children}</Heading>,
|
|
@@ -36,5 +54,5 @@ export const Markdown = ({ children, className }: MarkdownProps) => (
|
|
|
36
54
|
{children}
|
|
37
55
|
</ReactMarkdown>
|
|
38
56
|
</div>
|
|
39
|
-
);
|
|
57
|
+
));
|
|
40
58
|
Markdown.displayName = "Markdown";
|