@sixthshift/design-system 0.5.0 → 0.6.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 +132 -87
- package/dist/components/Badge/Badge.d.ts +2 -2
- package/dist/components/Badge/Badge.js +2 -2
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button/Button.js +1 -1
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +1 -0
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Calendar/CalendarView.d.ts +0 -11
- package/dist/components/Calendar/CalendarView.d.ts.map +1 -1
- package/dist/components/Calendar/CalendarView.js +1 -0
- package/dist/components/Calendar/CalendarView.js.map +1 -1
- package/dist/components/Calendar/calendar.hooks.d.ts.map +1 -1
- package/dist/components/Calendar/calendar.hooks.js +1 -0
- package/dist/components/Calendar/calendar.hooks.js.map +1 -1
- package/dist/components/Card/Card.d.ts +2 -2
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.js +3 -2
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +1 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.js +1 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
- package/dist/components/Code/Editor/Editor.d.ts.map +1 -1
- package/dist/components/Code/Editor/Editor.js +1 -0
- package/dist/components/Code/Editor/Editor.js.map +1 -1
- package/dist/components/Code/Workspace/StatusBar.d.ts.map +1 -1
- package/dist/components/Code/Workspace/StatusBar.js +1 -0
- package/dist/components/Code/Workspace/StatusBar.js.map +1 -1
- package/dist/components/Code/Workspace/Toolbar.d.ts.map +1 -1
- package/dist/components/Code/Workspace/Toolbar.js +1 -0
- package/dist/components/Code/Workspace/Toolbar.js.map +1 -1
- package/dist/components/Code/Workspace/Workspace.d.ts.map +1 -1
- package/dist/components/Code/Workspace/Workspace.js +1 -0
- package/dist/components/Code/Workspace/Workspace.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.js +5 -0
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/DateSegments.d.ts.map +1 -1
- package/dist/components/DatePicker/DateSegments.js +1 -0
- package/dist/components/DatePicker/DateSegments.js.map +1 -1
- package/dist/components/DatePicker/datepicker.hooks.d.ts.map +1 -1
- package/dist/components/DatePicker/datepicker.hooks.js +1 -0
- package/dist/components/DatePicker/datepicker.hooks.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js +1 -0
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.js +5 -0
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/DateTimePicker/DateTimeSegments.d.ts.map +1 -1
- package/dist/components/DateTimePicker/DateTimeSegments.js +1 -0
- package/dist/components/DateTimePicker/DateTimeSegments.js.map +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +5 -0
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
- package/dist/components/FormField/FormField.d.ts +31 -10
- package/dist/components/FormField/FormField.d.ts.map +1 -1
- package/dist/components/FormField/FormField.js +46 -17
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/FormField/index.d.ts +2 -2
- package/dist/components/FormField/index.d.ts.map +1 -1
- package/dist/components/FormField/index.js +1 -1
- package/dist/components/FormField/index.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/components/HoverCard/HoverCard.js +1 -0
- package/dist/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/components/HoverCard/components/HoverCardContent.d.ts.map +1 -1
- package/dist/components/HoverCard/components/HoverCardContent.js +1 -0
- package/dist/components/HoverCard/components/HoverCardContent.js.map +1 -1
- package/dist/components/HoverCard/components/HoverCardContext.d.ts.map +1 -1
- package/dist/components/HoverCard/components/HoverCardContext.js +1 -0
- package/dist/components/HoverCard/components/HoverCardContext.js.map +1 -1
- package/dist/components/HoverCard/components/HoverCardTrigger.d.ts.map +1 -1
- package/dist/components/HoverCard/components/HoverCardTrigger.js +1 -0
- package/dist/components/HoverCard/components/HoverCardTrigger.js.map +1 -1
- package/dist/components/Message/Message.d.ts +1 -1
- package/dist/components/Message/Message.js +1 -1
- package/dist/components/Modal/Modal.d.ts +14 -9
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +42 -20
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/components/ModalContext.d.ts.map +1 -1
- package/dist/components/Modal/components/ModalContext.js +1 -0
- 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 +1 -0
- package/dist/components/Modal/components/ModalHeader.js.map +1 -1
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/Popover.js +5 -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 +1 -0
- package/dist/components/Popover/components/PopoverBody.js.map +1 -1
- package/dist/components/Popover/components/PopoverClose.d.ts.map +1 -1
- package/dist/components/Popover/components/PopoverClose.js +1 -0
- package/dist/components/Popover/components/PopoverClose.js.map +1 -1
- package/dist/components/Popover/components/PopoverContext.d.ts.map +1 -1
- package/dist/components/Popover/components/PopoverContext.js +1 -0
- 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 +1 -0
- package/dist/components/Popover/components/PopoverTrigger.js.map +1 -1
- package/dist/components/RadioButton/RadioButton.d.ts.map +1 -1
- package/dist/components/RadioButton/RadioButton.js +1 -0
- package/dist/components/RadioButton/RadioButton.js.map +1 -1
- package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -1
- package/dist/components/RadioButtonGroup/RadioButtonGroup.js +1 -0
- package/dist/components/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
- package/dist/components/SearchInput/SearchInput.d.ts +10 -7
- package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/components/SearchInput/SearchInput.js +11 -6
- package/dist/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/Select/Select.d.ts +6 -0
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +9 -3
- 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 +1 -0
- package/dist/components/Select/SelectDropdown.js.map +1 -1
- package/dist/components/Select/SelectTrigger.d.ts.map +1 -1
- package/dist/components/Select/SelectTrigger.js +5 -1
- package/dist/components/Select/SelectTrigger.js.map +1 -1
- package/dist/components/Select/useSelectKeyboard.d.ts.map +1 -1
- package/dist/components/Select/useSelectKeyboard.js +1 -0
- package/dist/components/Select/useSelectKeyboard.js.map +1 -1
- package/dist/components/Sheet/Sheet.d.ts.map +1 -1
- package/dist/components/Sheet/Sheet.js +23 -9
- package/dist/components/Sheet/Sheet.js.map +1 -1
- package/dist/components/Sheet/components/SheetContext.d.ts.map +1 -1
- package/dist/components/Sheet/components/SheetContext.js +1 -0
- package/dist/components/Sheet/components/SheetContext.js.map +1 -1
- package/dist/components/Sheet/components/SheetHeader.d.ts.map +1 -1
- package/dist/components/Sheet/components/SheetHeader.js +1 -0
- package/dist/components/Sheet/components/SheetHeader.js.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts +2 -2
- package/dist/components/Spinner/Spinner.js +2 -2
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/components/Switch/Switch.js +1 -0
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +1 -0
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/components/TabsContext.d.ts.map +1 -1
- package/dist/components/Tabs/components/TabsContext.js +1 -0
- package/dist/components/Tabs/components/TabsContext.js.map +1 -1
- package/dist/components/Tabs/components/TabsList.d.ts.map +1 -1
- package/dist/components/Tabs/components/TabsList.js +1 -0
- package/dist/components/Tabs/components/TabsList.js.map +1 -1
- package/dist/components/Tabs/components/TabsPanels.d.ts.map +1 -1
- package/dist/components/Tabs/components/TabsPanels.js +1 -0
- 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 +2 -1
- package/dist/components/Tabs/components/TabsTrigger.js.map +1 -1
- package/dist/components/TagChip/TagChip.d.ts.map +1 -1
- package/dist/components/TagChip/TagChip.js +1 -0
- package/dist/components/TagChip/TagChip.js.map +1 -1
- package/dist/components/TagInput/TagInput.d.ts +8 -2
- package/dist/components/TagInput/TagInput.d.ts.map +1 -1
- package/dist/components/TagInput/TagInput.js +8 -5
- package/dist/components/TagInput/TagInput.js.map +1 -1
- package/dist/components/Textarea/Textarea.d.ts +21 -5
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js +31 -5
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/TimePicker/PeriodSelector.d.ts.map +1 -1
- package/dist/components/TimePicker/PeriodSelector.js +1 -0
- package/dist/components/TimePicker/PeriodSelector.js.map +1 -1
- package/dist/components/TimePicker/TimeColumn.d.ts.map +1 -1
- package/dist/components/TimePicker/TimeColumn.js +1 -0
- package/dist/components/TimePicker/TimeColumn.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.d.ts.map +1 -1
- package/dist/components/TimePicker/TimePicker.js +5 -0
- package/dist/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/components/TimePicker/TimeSegments.d.ts.map +1 -1
- package/dist/components/TimePicker/TimeSegments.js +1 -0
- package/dist/components/TimePicker/TimeSegments.js.map +1 -1
- package/dist/components/Toast/Toast.d.ts +16 -2
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/Toast/Toast.js +16 -6
- package/dist/components/Toast/Toast.js.map +1 -1
- package/dist/components/Toggle/Toggle.d.ts +1 -1
- package/dist/components/Toggle/Toggle.d.ts.map +1 -1
- package/dist/components/Toggle/Toggle.js +2 -1
- package/dist/components/Toggle/Toggle.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts +2 -0
- package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupMultiple.js +4 -3
- package/dist/components/ToggleGroup/ToggleGroupMultiple.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts +2 -0
- package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroupSingle.js +4 -3
- package/dist/components/ToggleGroup/ToggleGroupSingle.js.map +1 -1
- package/dist/components/ToggleGroup/toggleGroup.types.d.ts +7 -0
- package/dist/components/ToggleGroup/toggleGroup.types.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +1 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/components/TooltipBody.d.ts.map +1 -1
- package/dist/components/Tooltip/components/TooltipBody.js +1 -0
- package/dist/components/Tooltip/components/TooltipBody.js.map +1 -1
- package/dist/components/Tooltip/components/TooltipContext.d.ts.map +1 -1
- package/dist/components/Tooltip/components/TooltipContext.js +1 -0
- package/dist/components/Tooltip/components/TooltipContext.js.map +1 -1
- package/dist/components/Tooltip/components/TooltipTrigger.d.ts.map +1 -1
- package/dist/components/Tooltip/components/TooltipTrigger.js +1 -0
- package/dist/components/Tooltip/components/TooltipTrigger.js.map +1 -1
- package/dist/hooks/useCollapsible.d.ts.map +1 -1
- package/dist/hooks/useCollapsible.js +1 -0
- package/dist/hooks/useCollapsible.js.map +1 -1
- package/dist/hooks/useControllableState.d.ts.map +1 -1
- package/dist/hooks/useControllableState.js +1 -0
- package/dist/hooks/useControllableState.js.map +1 -1
- package/dist/hooks/useDebouncedCallback.d.ts.map +1 -1
- package/dist/hooks/useDebouncedCallback.js +1 -0
- package/dist/hooks/useDebouncedCallback.js.map +1 -1
- package/dist/hooks/useDebouncedState.d.ts.map +1 -1
- package/dist/hooks/useDebouncedState.js +1 -0
- package/dist/hooks/useDebouncedState.js.map +1 -1
- package/dist/hooks/useDeviceFormFactor.d.ts.map +1 -1
- package/dist/hooks/useDeviceFormFactor.js +1 -0
- package/dist/hooks/useDeviceFormFactor.js.map +1 -1
- package/dist/hooks/useLocalStorage.d.ts.map +1 -1
- package/dist/hooks/useLocalStorage.js +1 -0
- package/dist/hooks/useLocalStorage.js.map +1 -1
- package/dist/hooks/useMergedFloatingRef.d.ts.map +1 -1
- package/dist/hooks/useMergedFloatingRef.js +1 -0
- package/dist/hooks/useMergedFloatingRef.js.map +1 -1
- package/dist/hooks/usePresence.d.ts.map +1 -1
- package/dist/hooks/usePresence.js +1 -0
- package/dist/hooks/usePresence.js.map +1 -1
- package/dist/hooks/useStack.d.ts.map +1 -1
- package/dist/hooks/useStack.js +34 -10
- package/dist/hooks/useStack.js.map +1 -1
- package/dist/hooks/useTheme.d.ts.map +1 -1
- package/dist/hooks/useTheme.js +1 -0
- package/dist/hooks/useTheme.js.map +1 -1
- package/dist/internal/PickerField.d.ts.map +1 -1
- package/dist/internal/PickerField.js +1 -0
- package/dist/internal/PickerField.js.map +1 -1
- package/dist/internal/SegmentedField.d.ts.map +1 -1
- package/dist/internal/SegmentedField.js +1 -0
- package/dist/internal/SegmentedField.js.map +1 -1
- package/dist/internal/escapeLayers.d.ts +12 -0
- package/dist/internal/escapeLayers.d.ts.map +1 -0
- package/dist/internal/escapeLayers.js +48 -0
- package/dist/internal/escapeLayers.js.map +1 -0
- package/dist/lib/ErrorBoundary.d.ts.map +1 -1
- package/dist/lib/ErrorBoundary.js +1 -0
- package/dist/lib/ErrorBoundary.js.map +1 -1
- package/dist/lib/contexts/ComponentsContext/ComponentsContext.d.ts.map +1 -1
- package/dist/lib/contexts/ComponentsContext/ComponentsContext.js +1 -0
- package/dist/lib/contexts/ComponentsContext/ComponentsContext.js.map +1 -1
- package/dist/lib/contexts/OverlayContext/OverlayContext.d.ts +9 -4
- package/dist/lib/contexts/OverlayContext/OverlayContext.d.ts.map +1 -1
- package/dist/lib/contexts/OverlayContext/OverlayContext.js +25 -12
- package/dist/lib/contexts/OverlayContext/OverlayContext.js.map +1 -1
- package/dist/lib/contexts/OverlayContext/ToastStack.d.ts +20 -0
- package/dist/lib/contexts/OverlayContext/ToastStack.d.ts.map +1 -0
- package/dist/lib/contexts/OverlayContext/ToastStack.js +45 -0
- package/dist/lib/contexts/OverlayContext/ToastStack.js.map +1 -0
- package/dist/lib/contexts/OverlayContext/hooks/useModal.d.ts.map +1 -1
- package/dist/lib/contexts/OverlayContext/hooks/useModal.js +1 -0
- package/dist/lib/contexts/OverlayContext/hooks/useModal.js.map +1 -1
- package/dist/lib/contexts/OverlayContext/hooks/useToast.d.ts +27 -10
- package/dist/lib/contexts/OverlayContext/hooks/useToast.d.ts.map +1 -1
- package/dist/lib/contexts/OverlayContext/hooks/useToast.js +31 -49
- package/dist/lib/contexts/OverlayContext/hooks/useToast.js.map +1 -1
- package/dist/lib/contexts/OverlayContext/index.d.ts +2 -0
- package/dist/lib/contexts/OverlayContext/index.d.ts.map +1 -1
- package/dist/lib/contexts/OverlayContext/index.js +2 -0
- package/dist/lib/contexts/OverlayContext/index.js.map +1 -1
- package/dist/lib/contexts/OverlayContext/toastStore.d.ts +68 -0
- package/dist/lib/contexts/OverlayContext/toastStore.d.ts.map +1 -0
- package/dist/lib/contexts/OverlayContext/toastStore.js +69 -0
- package/dist/lib/contexts/OverlayContext/toastStore.js.map +1 -0
- package/dist/lib/withErrorBoundary.d.ts.map +1 -1
- package/dist/lib/withErrorBoundary.js +1 -0
- package/dist/lib/withErrorBoundary.js.map +1 -1
- package/dist/lib/withSuspenseAndErrorBoundary.d.ts.map +1 -1
- package/dist/lib/withSuspenseAndErrorBoundary.js +1 -0
- package/dist/lib/withSuspenseAndErrorBoundary.js.map +1 -1
- package/dist/{theme/schema.d.ts → theming/vocabulary.d.ts} +4 -4
- package/dist/theming/vocabulary.d.ts.map +1 -0
- package/dist/{theme/schema.js → theming/vocabulary.js} +4 -4
- package/dist/theming/vocabulary.js.map +1 -0
- package/package.json +18 -6
- package/src/components/Badge/Badge.tsx +2 -2
- package/src/components/Button/Button.tsx +1 -1
- package/src/{theme/recipes/button.css → components/Button/button.recipe.css} +2 -2
- package/src/components/Calendar/Calendar.tsx +2 -0
- package/src/components/Calendar/CalendarView.tsx +2 -0
- package/src/components/Calendar/calendar.hooks.ts +2 -0
- package/src/components/Card/Card.tsx +4 -2
- package/src/components/Checkbox/Checkbox.tsx +2 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +2 -0
- package/src/components/Code/Editor/Editor.tsx +2 -0
- package/src/components/Code/Workspace/StatusBar.tsx +2 -0
- package/src/components/Code/Workspace/Toolbar.tsx +2 -0
- package/src/components/Code/Workspace/Workspace.tsx +2 -0
- package/src/components/DatePicker/DatePicker.tsx +7 -0
- package/src/components/DatePicker/DateSegments.tsx +2 -0
- package/src/components/DatePicker/datepicker.hooks.ts +2 -0
- package/src/components/DateRangePicker/DateRangePicker.tsx +2 -0
- package/src/components/DateTimePicker/DateTimePicker.tsx +7 -1
- package/src/components/DateTimePicker/DateTimeSegments.tsx +2 -0
- package/src/components/DateTimeRangePicker/DateTimeRangePicker.tsx +7 -1
- package/src/components/FormField/FormField.tsx +94 -42
- package/src/components/FormField/index.ts +2 -2
- package/src/components/HoverCard/HoverCard.tsx +2 -0
- package/src/components/HoverCard/components/HoverCardContent.tsx +2 -0
- package/src/components/HoverCard/components/HoverCardContext.tsx +2 -0
- package/src/components/HoverCard/components/HoverCardTrigger.tsx +2 -0
- package/src/components/Message/Message.tsx +1 -1
- package/src/components/Modal/Modal.tsx +77 -51
- package/src/components/Modal/components/ModalContext.tsx +2 -0
- package/src/components/Modal/components/ModalHeader.tsx +2 -0
- package/src/components/Popover/Popover.tsx +7 -0
- package/src/components/Popover/components/PopoverBody.tsx +2 -0
- package/src/components/Popover/components/PopoverClose.tsx +2 -0
- package/src/components/Popover/components/PopoverContext.tsx +2 -0
- package/src/components/Popover/components/PopoverTrigger.tsx +2 -0
- package/src/components/RadioButton/RadioButton.tsx +2 -0
- package/src/components/RadioButtonGroup/RadioButtonGroup.tsx +2 -0
- package/src/components/SearchInput/SearchInput.tsx +15 -8
- package/src/components/Select/Select.tsx +24 -1
- package/src/components/Select/SelectDropdown.tsx +2 -0
- package/src/components/Select/SelectTrigger.tsx +5 -0
- package/src/components/Select/useSelectKeyboard.ts +2 -0
- package/src/components/Sheet/Sheet.tsx +49 -34
- package/src/components/Sheet/components/SheetContext.tsx +2 -0
- package/src/components/Sheet/components/SheetHeader.tsx +2 -0
- package/src/components/Spinner/Spinner.tsx +2 -2
- package/src/components/Switch/Switch.tsx +2 -0
- package/src/components/Tabs/Tabs.tsx +2 -0
- package/src/components/Tabs/components/TabsContext.tsx +2 -0
- package/src/components/Tabs/components/TabsList.tsx +2 -0
- package/src/components/Tabs/components/TabsPanels.tsx +2 -0
- package/src/components/Tabs/components/TabsTrigger.tsx +3 -1
- package/src/{theme/recipes/tabs.css → components/Tabs/tabs.recipe.css} +1 -1
- package/src/components/TagChip/TagChip.tsx +2 -0
- package/src/components/TagInput/TagInput.tsx +15 -6
- package/src/components/Textarea/Textarea.tsx +42 -6
- package/src/{theme/recipes/textarea.css → components/Textarea/textarea.recipe.css} +1 -1
- package/src/components/TimePicker/PeriodSelector.tsx +2 -0
- package/src/components/TimePicker/TimeColumn.tsx +2 -0
- package/src/components/TimePicker/TimePicker.tsx +7 -0
- package/src/components/TimePicker/TimeSegments.tsx +2 -0
- package/src/components/Toast/Toast.tsx +22 -6
- package/src/components/Toggle/Toggle.tsx +3 -1
- package/src/components/ToggleGroup/ToggleGroupMultiple.tsx +6 -0
- package/src/components/ToggleGroup/ToggleGroupSingle.tsx +6 -0
- package/src/components/ToggleGroup/toggleGroup.types.ts +7 -0
- package/src/components/Tooltip/Tooltip.tsx +2 -0
- package/src/components/Tooltip/components/TooltipBody.tsx +2 -0
- package/src/components/Tooltip/components/TooltipContext.tsx +2 -0
- package/src/components/Tooltip/components/TooltipTrigger.tsx +2 -0
- package/src/hooks/useCollapsible.ts +2 -0
- package/src/hooks/useControllableState.ts +2 -0
- package/src/hooks/useDebouncedCallback.ts +2 -0
- package/src/hooks/useDebouncedState.ts +2 -0
- package/src/hooks/useDeviceFormFactor.ts +2 -0
- package/src/hooks/useLocalStorage.ts +2 -0
- package/src/hooks/useMergedFloatingRef.ts +2 -0
- package/src/hooks/usePresence.ts +2 -0
- package/src/hooks/useStack.ts +35 -12
- package/src/hooks/useTheme.ts +2 -0
- package/src/internal/PickerField.tsx +2 -0
- package/src/internal/SegmentedField.tsx +2 -0
- package/src/internal/escapeLayers.ts +53 -0
- package/src/lib/ErrorBoundary.tsx +2 -0
- package/src/lib/contexts/ComponentsContext/ComponentsContext.tsx +2 -0
- package/src/lib/contexts/OverlayContext/OverlayContext.tsx +42 -26
- package/src/lib/contexts/OverlayContext/ToastStack.tsx +71 -0
- package/src/lib/contexts/OverlayContext/hooks/useModal.tsx +2 -0
- package/src/lib/contexts/OverlayContext/hooks/useToast.ts +30 -73
- package/src/lib/contexts/OverlayContext/index.ts +2 -0
- package/src/lib/contexts/OverlayContext/toastStore.ts +138 -0
- package/src/lib/withErrorBoundary.tsx +2 -0
- package/src/lib/withSuspenseAndErrorBoundary.tsx +2 -0
- package/src/theme/linen/index.css +11 -0
- package/src/theme/linen/palette.css +87 -0
- package/src/theme/linen/theme.css +371 -0
- package/src/theming/tailwind.css +356 -0
- package/src/{theme/schema.ts → theming/vocabulary.ts} +3 -3
- package/dist/theme/index.d.ts +0 -9
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -8
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/schema.d.ts.map +0 -1
- package/dist/theme/schema.js.map +0 -1
- package/src/theme/index.ts +0 -39
- package/src/theme/recipes/index.css +0 -28
- package/src/theme/tokens.css +0 -824
- /package/src/{theme/recipes/badge.css → components/Badge/badge.recipe.css} +0 -0
- /package/src/{theme/recipes/card.css → components/Card/card.recipe.css} +0 -0
- /package/src/{theme/recipes/checkbox.css → components/Checkbox/checkbox.recipe.css} +0 -0
- /package/src/{theme/recipes/field.css → components/Field/field.recipe.css} +0 -0
- /package/src/{theme/recipes/input.css → components/Input/input.recipe.css} +0 -0
- /package/src/{theme/recipes/message.css → components/Message/message.recipe.css} +0 -0
- /package/src/{theme/recipes/modal.css → components/Modal/modal.recipe.css} +0 -0
- /package/src/{theme/recipes/radio-button.css → components/RadioButton/radio-button.recipe.css} +0 -0
- /package/src/{theme/recipes/search-input.css → components/SearchInput/search-input.recipe.css} +0 -0
- /package/src/{theme/recipes/select.css → components/Select/select.recipe.css} +0 -0
- /package/src/{theme/recipes/sheet.css → components/Sheet/sheet.recipe.css} +0 -0
- /package/src/{theme/recipes/spinner.css → components/Spinner/spinner.recipe.css} +0 -0
- /package/src/{theme/recipes/switch.css → components/Switch/switch.recipe.css} +0 -0
- /package/src/{theme/recipes/tag-chip.css → components/TagChip/tag-chip.recipe.css} +0 -0
- /package/src/{theme/recipes/toggle.css → components/Toggle/toggle.recipe.css} +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { FloatingPortal } from "@floating-ui/react";
|
|
4
|
+
import { Toast } from "@sixthshift/design-system/toast";
|
|
5
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
6
|
+
import { useCallback, useEffect, useSyncExternalStore } from "react";
|
|
7
|
+
import { toastStore as defaultStore } from "./toastStore.js";
|
|
8
|
+
const EMPTY = [];
|
|
9
|
+
/** The store's stack, re-rendering the caller as it changes. Empty during server rendering. */
|
|
10
|
+
export function useToasts(store = defaultStore) {
|
|
11
|
+
return useSyncExternalStore(store.subscribe, store.snapshot, () => EMPTY);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* One toast in the stack: the dismissal timer lives here, not in the store,
|
|
15
|
+
* so the store stays free of the DOM. Expiry and the X button take the same
|
|
16
|
+
* path — `open` flips false, `Toast` plays its exit, and `onClose` drops the
|
|
17
|
+
* record once the animation ends.
|
|
18
|
+
*/
|
|
19
|
+
function ToastItem({ record, store }) {
|
|
20
|
+
const { id, duration, closing } = record;
|
|
21
|
+
// `duration` is the stack's to act on, not the toast's to render.
|
|
22
|
+
const { component: Component = Toast, duration: _duration, ...props } = record.options;
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (duration <= 0 || closing)
|
|
25
|
+
return;
|
|
26
|
+
const timer = setTimeout(() => store.close(id), duration);
|
|
27
|
+
return () => clearTimeout(timer);
|
|
28
|
+
}, [id, duration, closing, store]);
|
|
29
|
+
const onClose = useCallback(() => store.remove(id), [store, id]);
|
|
30
|
+
return (_jsx("div", { className: "pointer-events-auto", "data-toast-id": id, "data-toast-intent": props.intent ?? "neutral", children: _jsx(Component, { ...props, standalone: false, open: !closing, onClose: onClose }) }));
|
|
31
|
+
}
|
|
32
|
+
/** The container's own classes: bottom centre, newest at the bottom, click-through between toasts. */
|
|
33
|
+
export const TOAST_STACK_CLASS = "pointer-events-none fixed bottom-6 left-1/2 z-toast flex -translate-x-1/2 flex-col-reverse items-center gap-3";
|
|
34
|
+
/**
|
|
35
|
+
* The open toasts, portalled and positioned. `OverlayProvider` renders one;
|
|
36
|
+
* render it yourself only when there is no provider to host it.
|
|
37
|
+
*/
|
|
38
|
+
export function ToastStack({ store = defaultStore, root, className }) {
|
|
39
|
+
const toasts = useToasts(store);
|
|
40
|
+
if (toasts.length === 0)
|
|
41
|
+
return null;
|
|
42
|
+
// `root` omitted rather than passed as `undefined`: see OverlayContext's `rootProp`.
|
|
43
|
+
return (_jsx(FloatingPortal, { ...(root === undefined ? {} : { root }), children: _jsx("div", { className: cn(TOAST_STACK_CLASS, className), "data-toast-stack": "", "data-count": toasts.length, children: toasts.map((record) => (_jsx(ToastItem, { record: record, store: store }, record.id))) }) }));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=ToastStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToastStack.js","sourceRoot":"","sources":["../../../../src/lib/contexts/OverlayContext/ToastStack.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,cAAc,EAA4B,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,UAAU,IAAI,YAAY,EAAqC,MAAM,cAAc,CAAC;AAE7F,MAAM,KAAK,GAA2B,EAAE,CAAC;AAEzC,+FAA+F;AAC/F,MAAM,UAAU,SAAS,CAAC,QAAoB,YAAY;IACxD,OAAO,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAA8C;IAC9E,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACzC,kEAAkE;IAClE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAEvF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,IAAI,CAAC,IAAI,OAAO;YAAE,OAAO;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjE,OAAO,CACL,cAAK,SAAS,EAAC,qBAAqB,mBAAgB,EAAE,uBAAqB,KAAK,CAAC,MAAM,IAAI,SAAS,YAClG,KAAC,SAAS,OAAK,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAI,GACzE,CACP,CAAC;AACJ,CAAC;AAWD,sGAAsG;AACtG,MAAM,CAAC,MAAM,iBAAiB,GAAG,+GAA+G,CAAC;AAEjJ;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,IAAI,EAAE,SAAS,EAAmB;IACnF,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,qFAAqF;IACrF,OAAO,CACL,KAAC,cAAc,OAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,YACtD,cAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,sBAAmB,EAAE,gBAAa,MAAM,CAAC,MAAM,YAC5F,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACtB,KAAC,SAAS,IAAiB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAvC,MAAM,CAAC,EAAE,CAAkC,CAC5D,CAAC,GACE,GACS,CAClB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/contexts/OverlayContext/hooks/useModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useModal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/contexts/OverlayContext/hooks/useModal.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAwC,MAAM,OAAO,CAAC;AAOjG,uCAAuC;AACvC,MAAM,MAAM,mBAAmB,CAAC,KAAK,GAAG,SAAS,IAAI;IACnD,uBAAuB;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,oCAAoC;IACpC,IAAI,EAAE,KAAK,CAAC;CACb,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;AAElD,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,UAAU,CAAC,GAAG;IAChG,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,iDAAiD;IACjD,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAMF,eAAO,MAAM,QAAQ;gBAuDhB,KAAK,yBAAyB,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,YAAW,gBAAgB,CAAC,KAAK,CAAC;;;0BA0B/E,KAAK;;;CAanC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModal.js","sourceRoot":"","sources":["../../../../../src/lib/contexts/OverlayContext/hooks/useModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useModal.js","sourceRoot":"","sources":["../../../../../src/lib/contexts/OverlayContext/hooks/useModal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,oBAAoB,EAAiC,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAsC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAwBtD,gFAAgF;AAChF,OAAO;AACP,gFAAgF;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,EACJ,UAAU,EAAE,CAAC,EAAE,QAAQ,CAAC,GACzB,GAAG,iBAAiB,EAAE,CAAC;IAExB,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7B;;OAEG;IACH,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAoB,SAAoD,EAAE,UAAmC,EAA6B,EAAE,EAAE;QAC5I,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC;QAElF,MAAM,UAAU,GAAY,GAAG,EAAE;YAC/B,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,EAAsB,EAAE,EAAE,CAAC,CACrD,KAAC,oBAAoB,IAAC,OAAO,EAAE,UAAU,YACvC,KAAC,QAAQ,IAAC,QAAQ,EAAE,gBAAgB,YAClC,KAAC,SAAS,IAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,WAAW,CAAU,KAAM,cAAc,GAAI,GAC7G,GACU,CACxB,CAAC;QAEF,QAAQ,CAAC;YACP,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE;gBACJ,EAAE;gBACF,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,UAAU;gBACnB,IAAI,EAAE,WAAW;aAClB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,OAAc,EAAE,EAAE;YAChC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC,EACD,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CACnC,CAAC;IAEF,OAAO;QACL,SAAS;QACT,cAAc;KACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,12 +1,29 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { type ToastOptions } from "../toastStore.js";
|
|
2
|
+
/**
|
|
3
|
+
* Open toasts on the provider's stack, with the content decided at the moment
|
|
4
|
+
* of opening: an error's message, a count, whatever the action produced.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* const { openToast } = useToast();
|
|
9
|
+
*
|
|
10
|
+
* async function save() {
|
|
11
|
+
* try {
|
|
12
|
+
* await api.save();
|
|
13
|
+
* openToast({ intent: "success", title: "Saved" });
|
|
14
|
+
* } catch (error) {
|
|
15
|
+
* openToast({ intent: "danger", title: "Could not save", children: String(error) });
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* Outside any provider this opens on the app's default stack, which is also
|
|
21
|
+
* what the plain `toast()` export uses, so code that is not a component — a
|
|
22
|
+
* store, a callback from a service worker — has the same door.
|
|
23
|
+
*/
|
|
24
|
+
export declare const useToast: () => {
|
|
25
|
+
openToast: (options: ToastOptions) => import("../index.js").ToastHandle;
|
|
26
|
+
closeToast: (id: string) => void;
|
|
27
|
+
closeAllToasts: () => void;
|
|
6
28
|
};
|
|
7
|
-
export declare const useToast: (args: ToastPropsWithDuration | FunctionComponent<ToastProps>) => {
|
|
8
|
-
openToast: () => void;
|
|
9
|
-
closeToast: () => void;
|
|
10
|
-
};
|
|
11
|
-
export {};
|
|
12
29
|
//# sourceMappingURL=useToast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToast.d.ts","sourceRoot":"","sources":["../../../../../src/lib/contexts/OverlayContext/hooks/useToast.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useToast.d.ts","sourceRoot":"","sources":["../../../../../src/lib/contexts/OverlayContext/hooks/useToast.ts"],"names":[],"mappings":"AAIA,OAAO,EAA8B,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,QAAQ;yBAGqB,YAAY;qBAChB,MAAM;;CAI3C,CAAC"}
|
|
@@ -1,52 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
import { useCallback
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback } from "react";
|
|
3
3
|
import { useOverlayContext } from "../OverlayContext.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
type: "push",
|
|
34
|
-
item: {
|
|
35
|
-
id,
|
|
36
|
-
component: component ?? Toast,
|
|
37
|
-
onClose: closeToast,
|
|
38
|
-
standalone: false, // OverlayContext handles positioning
|
|
39
|
-
...toastProps,
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
// Auto-dismiss if duration is set
|
|
43
|
-
if (autoDismiss > 0) {
|
|
44
|
-
setTimeout(closeToast, autoDismiss);
|
|
45
|
-
}
|
|
46
|
-
}, [dispatch, id, closeToast]);
|
|
47
|
-
return {
|
|
48
|
-
openToast,
|
|
49
|
-
closeToast,
|
|
50
|
-
};
|
|
4
|
+
import { toastStore as defaultStore } from "../toastStore.js";
|
|
5
|
+
/**
|
|
6
|
+
* Open toasts on the provider's stack, with the content decided at the moment
|
|
7
|
+
* of opening: an error's message, a count, whatever the action produced.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* const { openToast } = useToast();
|
|
12
|
+
*
|
|
13
|
+
* async function save() {
|
|
14
|
+
* try {
|
|
15
|
+
* await api.save();
|
|
16
|
+
* openToast({ intent: "success", title: "Saved" });
|
|
17
|
+
* } catch (error) {
|
|
18
|
+
* openToast({ intent: "danger", title: "Could not save", children: String(error) });
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* Outside any provider this opens on the app's default stack, which is also
|
|
24
|
+
* what the plain `toast()` export uses, so code that is not a component — a
|
|
25
|
+
* store, a callback from a service worker — has the same door.
|
|
26
|
+
*/
|
|
27
|
+
export const useToast = () => {
|
|
28
|
+
const store = useOverlayContext()?.toastStore ?? defaultStore;
|
|
29
|
+
const openToast = useCallback((options) => store.open(options), [store]);
|
|
30
|
+
const closeToast = useCallback((id) => store.close(id), [store]);
|
|
31
|
+
const closeAllToasts = useCallback(() => store.clear(), [store]);
|
|
32
|
+
return { openToast, closeToast, closeAllToasts };
|
|
51
33
|
};
|
|
52
34
|
//# sourceMappingURL=useToast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToast.js","sourceRoot":"","sources":["../../../../../src/lib/contexts/OverlayContext/hooks/useToast.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useToast.js","sourceRoot":"","sources":["../../../../../src/lib/contexts/OverlayContext/hooks/useToast.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,IAAI,YAAY,EAAqB,MAAM,eAAe,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,KAAK,GAAG,iBAAiB,EAAE,EAAE,UAAU,IAAI,YAAY,CAAC;IAE9D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,OAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AACnD,CAAC,CAAC"}
|
|
@@ -3,4 +3,6 @@ export { Modal } from "@sixthshift/design-system/modal";
|
|
|
3
3
|
export * from "./hooks/useModal.js";
|
|
4
4
|
export * from "./hooks/useToast.js";
|
|
5
5
|
export * from "./OverlayContext.js";
|
|
6
|
+
export { TOAST_STACK_CLASS, ToastStack, type ToastStackProps, useToasts } from "./ToastStack.js";
|
|
7
|
+
export * from "./toastStore.js";
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/contexts/OverlayContext/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/contexts/OverlayContext/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9F,cAAc,cAAc,CAAC"}
|
|
@@ -3,4 +3,6 @@ export { Modal } from "@sixthshift/design-system/modal";
|
|
|
3
3
|
export * from "./hooks/useModal.js";
|
|
4
4
|
export * from "./hooks/useToast.js";
|
|
5
5
|
export * from "./OverlayContext.js";
|
|
6
|
+
export { TOAST_STACK_CLASS, ToastStack, useToasts } from "./ToastStack.js";
|
|
7
|
+
export * from "./toastStore.js";
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/contexts/OverlayContext/index.ts"],"names":[],"mappings":"AACA,kDAAkD;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/contexts/OverlayContext/index.ts"],"names":[],"mappings":"AACA,kDAAkD;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAwB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9F,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ToastProps } from "@sixthshift/design-system/toast";
|
|
2
|
+
import type { FunctionComponent } from "react";
|
|
3
|
+
/** What a caller passes to open a toast: the `Toast`'s own props, plus how long it stays. */
|
|
4
|
+
export type ToastOptions = Omit<ToastProps, "onClose" | "open" | "standalone" | "root"> & {
|
|
5
|
+
/**
|
|
6
|
+
* Milliseconds until the toast dismisses itself. `0` keeps it until it is
|
|
7
|
+
* dismissed by hand. Default: `0` for `intent="danger"` (a failure usually
|
|
8
|
+
* carries a message worth reading, and often a retry), `5000` otherwise.
|
|
9
|
+
*/
|
|
10
|
+
duration?: number;
|
|
11
|
+
/** Render this instead of `Toast`. It receives `ToastProps` and must honour `open` and `onClose` as `Toast` does. */
|
|
12
|
+
component?: FunctionComponent<ToastProps>;
|
|
13
|
+
};
|
|
14
|
+
/** One toast as the stack holds it. */
|
|
15
|
+
export type ToastRecord = {
|
|
16
|
+
id: string;
|
|
17
|
+
options: ToastOptions;
|
|
18
|
+
/** The resolved lifetime, in ms; `0` sticks. */
|
|
19
|
+
duration: number;
|
|
20
|
+
/** Playing its exit; removed once the animation ends. */
|
|
21
|
+
closing: boolean;
|
|
22
|
+
};
|
|
23
|
+
/** What `open` hands back: the toast's id, and a way to close it early. */
|
|
24
|
+
export type ToastHandle = {
|
|
25
|
+
id: string;
|
|
26
|
+
close: () => void;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The stack of open toasts, with subscribers. No DOM and no timers: the
|
|
30
|
+
* `ToastStack` that renders it owns dismissal timing, and `Toast` owns the
|
|
31
|
+
* exit animation. Plain functions, so a toast can be opened from anywhere —
|
|
32
|
+
* an event handler, a store, a service-worker callback — not only from a
|
|
33
|
+
* component.
|
|
34
|
+
*/
|
|
35
|
+
export type ToastStore = {
|
|
36
|
+
/** Register a listener; returns the unsubscribe. */
|
|
37
|
+
subscribe: (listener: () => void) => () => void;
|
|
38
|
+
/** The current stack, oldest first. Reference-stable until it changes, as `useSyncExternalStore` needs. */
|
|
39
|
+
snapshot: () => readonly ToastRecord[];
|
|
40
|
+
/** Add a toast. Past `max`, the oldest is dropped at once. */
|
|
41
|
+
open: (options: ToastOptions) => ToastHandle;
|
|
42
|
+
/** Begin a toast's exit. It leaves the stack when `remove` is called, which `Toast` does after its animation. */
|
|
43
|
+
close: (id: string) => void;
|
|
44
|
+
/** Drop a toast at once. */
|
|
45
|
+
remove: (id: string) => void;
|
|
46
|
+
/** Begin every toast's exit. */
|
|
47
|
+
clear: () => void;
|
|
48
|
+
};
|
|
49
|
+
export type ToastStoreOptions = {
|
|
50
|
+
/** How many toasts show at once; the oldest falls off. Default: 3 — a short stack reads on a phone. */
|
|
51
|
+
max?: number;
|
|
52
|
+
/** Ids in open order. Injectable so a test can name them. */
|
|
53
|
+
newId?: () => string;
|
|
54
|
+
};
|
|
55
|
+
export declare const DEFAULT_TOAST_DURATION = 5000;
|
|
56
|
+
export declare const DEFAULT_MAX_TOASTS = 3;
|
|
57
|
+
/** The lifetime an intent gets when none is given: failures stay, everything else expires. */
|
|
58
|
+
export declare function defaultToastDuration(intent: ToastOptions["intent"]): number;
|
|
59
|
+
export declare function createToastStore({ max, newId }?: ToastStoreOptions): ToastStore;
|
|
60
|
+
/** The app's one stack: what `OverlayProvider` renders unless handed another. */
|
|
61
|
+
export declare const toastStore: ToastStore;
|
|
62
|
+
/** Open a toast on the app's stack, from anywhere. Returns its id and a way to close it early. */
|
|
63
|
+
export declare function toast(options: ToastOptions): ToastHandle;
|
|
64
|
+
/** Begin a toast's exit on the app's stack. */
|
|
65
|
+
export declare function closeToast(id: string): void;
|
|
66
|
+
/** Begin every toast's exit on the app's stack. */
|
|
67
|
+
export declare function closeAllToasts(): void;
|
|
68
|
+
//# sourceMappingURL=toastStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toastStore.d.ts","sourceRoot":"","sources":["../../../../src/lib/contexts/OverlayContext/toastStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAM/C,6FAA6F;AAC7F,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,GAAG;IACxF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qHAAqH;IACrH,SAAS,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;CAC3C,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,CAAC;IACtB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,oDAAoD;IACpD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,2GAA2G;IAC3G,QAAQ,EAAE,MAAM,SAAS,WAAW,EAAE,CAAC;IACvC,8DAA8D;IAC9D,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,WAAW,CAAC;IAC7C,iHAAiH;IACjH,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,4BAA4B;IAC5B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,gCAAgC;IAChC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,uGAAuG;IACvG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB,CAAC;AAMF,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,8FAA8F;AAC9F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,CAE3E;AAWD,wBAAgB,gBAAgB,CAAC,EAAE,GAAwB,EAAE,KAAc,EAAE,GAAE,iBAAsB,GAAG,UAAU,CAqCjH;AAED,iFAAiF;AACjF,eAAO,MAAM,UAAU,YAAqB,CAAC;AAE7C,kGAAkG;AAClG,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CAExD;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,mDAAmD;AACnD,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Defaults
|
|
3
|
+
// =============================================================================
|
|
4
|
+
export const DEFAULT_TOAST_DURATION = 5000;
|
|
5
|
+
export const DEFAULT_MAX_TOASTS = 3;
|
|
6
|
+
/** The lifetime an intent gets when none is given: failures stay, everything else expires. */
|
|
7
|
+
export function defaultToastDuration(intent) {
|
|
8
|
+
return intent === "danger" ? 0 : DEFAULT_TOAST_DURATION;
|
|
9
|
+
}
|
|
10
|
+
let opened = 0;
|
|
11
|
+
const nextId = () => `toast-${++opened}`;
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Store
|
|
14
|
+
// =============================================================================
|
|
15
|
+
const EMPTY = [];
|
|
16
|
+
export function createToastStore({ max = DEFAULT_MAX_TOASTS, newId = nextId } = {}) {
|
|
17
|
+
let toasts = EMPTY;
|
|
18
|
+
const listeners = new Set();
|
|
19
|
+
const set = (next) => {
|
|
20
|
+
toasts = next.length === 0 ? EMPTY : next;
|
|
21
|
+
for (const listener of [...listeners])
|
|
22
|
+
listener();
|
|
23
|
+
};
|
|
24
|
+
const close = (id) => {
|
|
25
|
+
const record = toasts.find((toast) => toast.id === id);
|
|
26
|
+
if (record === undefined || record.closing)
|
|
27
|
+
return;
|
|
28
|
+
set(toasts.map((toast) => (toast === record ? { ...toast, closing: true } : toast)));
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
subscribe(listener) {
|
|
32
|
+
listeners.add(listener);
|
|
33
|
+
return () => void listeners.delete(listener);
|
|
34
|
+
},
|
|
35
|
+
snapshot: () => toasts,
|
|
36
|
+
open(options) {
|
|
37
|
+
const id = newId();
|
|
38
|
+
const record = { id, options, duration: options.duration ?? defaultToastDuration(options.intent), closing: false };
|
|
39
|
+
set([...toasts, record].slice(-max));
|
|
40
|
+
return { id, close: () => close(id) };
|
|
41
|
+
},
|
|
42
|
+
close,
|
|
43
|
+
remove(id) {
|
|
44
|
+
const next = toasts.filter((toast) => toast.id !== id);
|
|
45
|
+
if (next.length !== toasts.length)
|
|
46
|
+
set(next);
|
|
47
|
+
},
|
|
48
|
+
clear() {
|
|
49
|
+
if (toasts.every((toast) => toast.closing))
|
|
50
|
+
return;
|
|
51
|
+
set(toasts.map((toast) => ({ ...toast, closing: true })));
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** The app's one stack: what `OverlayProvider` renders unless handed another. */
|
|
56
|
+
export const toastStore = createToastStore();
|
|
57
|
+
/** Open a toast on the app's stack, from anywhere. Returns its id and a way to close it early. */
|
|
58
|
+
export function toast(options) {
|
|
59
|
+
return toastStore.open(options);
|
|
60
|
+
}
|
|
61
|
+
/** Begin a toast's exit on the app's stack. */
|
|
62
|
+
export function closeToast(id) {
|
|
63
|
+
toastStore.close(id);
|
|
64
|
+
}
|
|
65
|
+
/** Begin every toast's exit on the app's stack. */
|
|
66
|
+
export function closeAllToasts() {
|
|
67
|
+
toastStore.clear();
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=toastStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toastStore.js","sourceRoot":"","sources":["../../../../src/lib/contexts/OverlayContext/toastStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/lib/withErrorBoundary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"withErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/lib/withErrorBoundary.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAC;YAC7G,CAAC;;EAWpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withErrorBoundary.js","sourceRoot":"","sources":["../../src/lib/withErrorBoundary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"withErrorBoundary.js","sourceRoot":"","sources":["../../src/lib/withErrorBoundary.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,aAAa,EAA2B,MAAM,iBAAiB,CAAC;AAEzE,MAAM,UAAU,iBAAiB,CAAmB,SAA2B,EAAE,QAAgE;IAC/I,SAAS,iBAAiB,CAAC,KAAQ;QACjC,OAAO,CACL,KAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,YAC/B,KAAC,SAAS,OAAK,KAAK,GAAI,GACV,CACjB,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,WAAW,GAAG,qBAAqB,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;IAE/G,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withSuspenseAndErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/lib/withSuspenseAndErrorBoundary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"withSuspenseAndErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/lib/withSuspenseAndErrorBoundary.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,KAAK,OAAO,GAAG;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC;CACvE,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO;YAG7D,CAAC;;EAa/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withSuspenseAndErrorBoundary.js","sourceRoot":"","sources":["../../src/lib/withSuspenseAndErrorBoundary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"withSuspenseAndErrorBoundary.js","sourceRoot":"","sources":["../../src/lib/withSuspenseAndErrorBoundary.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,aAAa,EAA2B,MAAM,iBAAiB,CAAC;AAOzE,MAAM,UAAU,4BAA4B,CAAmB,SAA2B,EAAE,OAAgB;IAC1G,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAE5C,SAAS,4BAA4B,CAAC,KAAQ;QAC5C,OAAO,CACL,KAAC,aAAa,IAAC,QAAQ,EAAE,aAAa,YACpC,KAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ,YAC1B,KAAC,SAAS,OAAK,KAAK,GAAI,GACf,GACG,CACjB,CAAC;IACJ,CAAC;IAED,4BAA4B,CAAC,WAAW,GAAG,gCAAgC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;IAErI,OAAO,4BAA4B,CAAC;AACtC,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Token naming vocabulary
|
|
3
3
|
*
|
|
4
4
|
* The naming convention for design tokens, as types and as data:
|
|
5
5
|
*
|
|
6
6
|
* {context}-[on-]{intent}[-{weight}][-{state}]
|
|
7
7
|
*
|
|
8
|
-
* src/theme/
|
|
9
|
-
* TypeScript from
|
|
8
|
+
* The theme sources (src/theme/<name>/ plus src/theming/tailwind.css) are the only place
|
|
9
|
+
* tokens are defined, and nothing derives TypeScript from them. These types describe the *shape* a token name can take
|
|
10
10
|
* rather than enumerating the names that happen to exist today, which is why the
|
|
11
11
|
* vocabulary below is the thing to edit when the system grows a new axis.
|
|
12
12
|
*
|
|
@@ -78,4 +78,4 @@ export type ThemeSchema = {
|
|
|
78
78
|
/** Type-safe CSS var reference */
|
|
79
79
|
export declare function cssVar(token: ColorToken): string;
|
|
80
80
|
export {};
|
|
81
|
-
//# sourceMappingURL=
|
|
81
|
+
//# sourceMappingURL=vocabulary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../../src/theming/vocabulary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Token naming vocabulary
|
|
3
3
|
*
|
|
4
4
|
* The naming convention for design tokens, as types and as data:
|
|
5
5
|
*
|
|
6
6
|
* {context}-[on-]{intent}[-{weight}][-{state}]
|
|
7
7
|
*
|
|
8
|
-
* src/theme/
|
|
9
|
-
* TypeScript from
|
|
8
|
+
* The theme sources (src/theme/<name>/ plus src/theming/tailwind.css) are the only place
|
|
9
|
+
* tokens are defined, and nothing derives TypeScript from them. These types describe the *shape* a token name can take
|
|
10
10
|
* rather than enumerating the names that happen to exist today, which is why the
|
|
11
11
|
* vocabulary below is the thing to edit when the system grows a new axis.
|
|
12
12
|
*
|
|
@@ -46,4 +46,4 @@ export const standaloneTokens = ["focus-ring"];
|
|
|
46
46
|
export function cssVar(token) {
|
|
47
47
|
return `var(--${token})`;
|
|
48
48
|
}
|
|
49
|
-
//# sourceMappingURL=
|
|
49
|
+
//# sourceMappingURL=vocabulary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../src/theming/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAYH,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,gDAAgD;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAU,CAAC;AAGxD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAGjE,mCAAmC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC;AAGlE,oBAAoB;AACpB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAU,CAAC;AAG9D,gFAAgF;AAChF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AAGnE,8DAA8D;AAC9D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAGrD,yBAAyB;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAGlE,0DAA0D;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,YAAY,CAAU,CAAC;AAiDxD,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,kCAAkC;AAClC,MAAM,UAAU,MAAM,CAAC,KAAiB;IACtC,OAAO,SAAS,KAAK,GAAG,CAAC;AAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sixthshift/design-system",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Personal design system - tokens, theme, and component library",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
"!src/testing"
|
|
39
39
|
],
|
|
40
40
|
"exports": {
|
|
41
|
-
"./
|
|
42
|
-
"./
|
|
43
|
-
"types": "./dist/
|
|
44
|
-
"import": "./dist/
|
|
41
|
+
"./themes/linen.css": "./src/theme/linen/index.css",
|
|
42
|
+
"./theming": {
|
|
43
|
+
"types": "./dist/theming/vocabulary.d.ts",
|
|
44
|
+
"import": "./dist/theming/vocabulary.js"
|
|
45
45
|
},
|
|
46
46
|
"./utils": {
|
|
47
47
|
"types": "./dist/lib/utils.d.ts",
|
|
@@ -318,11 +318,12 @@
|
|
|
318
318
|
},
|
|
319
319
|
"scripts": {
|
|
320
320
|
"prepare": "bun run build",
|
|
321
|
-
"build": "bun run clean:dist && bun run build:js && bun run scripts/check-exports.ts",
|
|
321
|
+
"build": "bun run clean:dist && bun run scripts/check-use-client.ts && bun run build:js && bun run scripts/check-exports.ts",
|
|
322
322
|
"build:js": "tsc -p tsconfig.build.json && bun run scripts/fix-extensions.ts",
|
|
323
323
|
"dev": "storybook dev -p 6006 --no-open",
|
|
324
324
|
"build:storybook": "storybook build",
|
|
325
325
|
"test": "vitest run --project unit --project date-time --project ssr --reporter=dot",
|
|
326
|
+
"test:coverage": "vitest run --project unit --project date-time --project ssr --coverage --reporter=dot",
|
|
326
327
|
"test:verbose": "vitest run --project unit --project date-time --project ssr",
|
|
327
328
|
"test:watch": "vitest --project unit --project date-time --project ssr",
|
|
328
329
|
"test:ssr": "vitest run --project ssr",
|
|
@@ -340,6 +341,13 @@
|
|
|
340
341
|
"check:fix": "biome check --write .",
|
|
341
342
|
"check:recipes": "bun run scripts/check-recipes.ts",
|
|
342
343
|
"check:contrast": "bun run scripts/check-contrast.ts",
|
|
344
|
+
"check:api": "bun run scripts/api-snapshot.ts --check",
|
|
345
|
+
"check:size": "bun run scripts/check-size.ts",
|
|
346
|
+
"api:update": "bun run scripts/api-snapshot.ts",
|
|
347
|
+
"check:published": "bun run scripts/check-published.ts",
|
|
348
|
+
"check:consumer-resolution": "bun run scripts/check-consumer-resolution.ts",
|
|
349
|
+
"check:use-client": "bun run scripts/check-use-client.ts",
|
|
350
|
+
"clean:artifacts": "rm -rf coverage .vitest-attachments",
|
|
343
351
|
"clean": "rm -rf dist node_modules *.tsbuildinfo",
|
|
344
352
|
"clean:dist": "rm -rf dist"
|
|
345
353
|
},
|
|
@@ -352,6 +360,7 @@
|
|
|
352
360
|
"tailwind-merge": "^3.4.0"
|
|
353
361
|
},
|
|
354
362
|
"devDependencies": {
|
|
363
|
+
"@arethetypeswrong/cli": "^0.18.5",
|
|
355
364
|
"@biomejs/biome": "2.4.15",
|
|
356
365
|
"@fontsource-variable/inter": "^5.2.8",
|
|
357
366
|
"@fontsource-variable/jetbrains-mono": "^5.2.8",
|
|
@@ -374,12 +383,15 @@
|
|
|
374
383
|
"@vitest/coverage-v8": "4.1.7",
|
|
375
384
|
"@vitest/ui": "4.1.7",
|
|
376
385
|
"commander": "^14.0.2",
|
|
386
|
+
"esbuild": "^0.28.2",
|
|
377
387
|
"happy-dom": "^20.9.0",
|
|
378
388
|
"monaco-editor": "^0.55.1",
|
|
379
389
|
"playwright": "^1.57.0",
|
|
390
|
+
"publint": "^0.3.24",
|
|
380
391
|
"react": "^18.2.0",
|
|
381
392
|
"react-dom": "^18.2.0",
|
|
382
393
|
"react-markdown": "^10.1.0",
|
|
394
|
+
"remark-gfm": "^4.0.1",
|
|
383
395
|
"storybook": "^10.1.8",
|
|
384
396
|
"tailwindcss": "^4",
|
|
385
397
|
"typescript": "~5.7.2",
|
|
@@ -6,7 +6,7 @@ import * as React from "react";
|
|
|
6
6
|
* Geometry and behaviour only.
|
|
7
7
|
*
|
|
8
8
|
* Every colour reads a `--badge-*` component token whose value is decided by
|
|
9
|
-
* src/
|
|
9
|
+
* src/components/Badge/badge.recipe.css. That file is the mapping from
|
|
10
10
|
* `(variant, intent)` to a semantic token — the layer that used to be
|
|
11
11
|
* `compoundVariants` here, where it was compiled into class-name literals and
|
|
12
12
|
* unreachable from outside. Nothing in this file names a colour, which is the
|
|
@@ -85,7 +85,7 @@ export type BadgeProps = React.HTMLAttributes<HTMLSpanElement> & {
|
|
|
85
85
|
* does not manage an accessible name of its own.
|
|
86
86
|
*
|
|
87
87
|
* Colour is not decided here: each `(variant, intent)` pairing resolves
|
|
88
|
-
* through a `--badge-*` component token (src/
|
|
88
|
+
* through a `--badge-*` component token (src/components/Badge/badge.recipe.css), the
|
|
89
89
|
* same seam Button uses, so a consumer can re-point a cell without a
|
|
90
90
|
* release.
|
|
91
91
|
*/
|
|
@@ -7,7 +7,7 @@ import { Slot } from "../../internal/Slot";
|
|
|
7
7
|
* Geometry and behaviour only.
|
|
8
8
|
*
|
|
9
9
|
* Every colour reads a `--button-*` component token whose value is decided by
|
|
10
|
-
* src/
|
|
10
|
+
* src/components/Button/button.recipe.css. That file is the mapping from
|
|
11
11
|
* `(variant, intent, state)` to a semantic token — the layer that used to be
|
|
12
12
|
* `compoundVariants` here, where it was compiled into class-name literals and
|
|
13
13
|
* unreachable from outside. Nothing in this file names a colour, which is the
|