@sixthshift/design-system 0.2.1 → 0.3.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 +135 -28
- package/dist/components/Badge/Badge.d.ts +5 -2
- package/dist/components/Badge/Badge.d.ts.map +1 -1
- package/dist/components/Badge/Badge.js +5 -3
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/BarChart/BarChart.d.ts +8 -2
- package/dist/components/BarChart/BarChart.d.ts.map +1 -1
- package/dist/components/BarChart/BarChart.js +5 -3
- package/dist/components/BarChart/BarChart.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +17 -1
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +80 -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 +255 -0
- package/dist/components/Calendar/CalendarView.js.map +1 -0
- package/dist/components/Calendar/calendar.types.d.ts +78 -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/ColorDot/ColorDot.d.ts +9 -3
- package/dist/components/ColorDot/ColorDot.d.ts.map +1 -1
- package/dist/components/ColorDot/ColorDot.js +5 -3
- package/dist/components/ColorDot/ColorDot.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +2 -2
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.js +65 -10
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/datepicker.types.d.ts +34 -36
- 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 +3 -2
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js +17 -21
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/DateRangePicker/daterangepicker.types.d.ts +20 -20
- 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 +3 -3
- package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.js +30 -12
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/DateTimePicker/datetimepicker.types.d.ts +20 -17
- 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 +3 -3
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +41 -20
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
- package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts +22 -18
- 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/EmptyState/EmptyState.d.ts +16 -5
- package/dist/components/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.js +5 -3
- package/dist/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/components/Field/Field.d.ts +3 -3
- package/dist/components/Field/Field.d.ts.map +1 -1
- package/dist/components/Field/Field.js +6 -4
- package/dist/components/Field/Field.js.map +1 -1
- package/dist/components/LineChart/LineChart.d.ts +18 -2
- package/dist/components/LineChart/LineChart.d.ts.map +1 -1
- package/dist/components/LineChart/LineChart.js +5 -3
- package/dist/components/LineChart/LineChart.js.map +1 -1
- package/dist/components/Markdown/Markdown.d.ts +2 -4
- package/dist/components/Markdown/Markdown.d.ts.map +1 -1
- package/dist/components/Markdown/Markdown.js +3 -2
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Message/Message.d.ts.map +1 -1
- package/dist/components/Message/Message.js +16 -1
- package/dist/components/Message/Message.js.map +1 -1
- package/dist/components/MetricList/MetricList.d.ts +3 -3
- package/dist/components/MetricList/MetricList.d.ts.map +1 -1
- package/dist/components/MetricList/MetricList.js +5 -3
- package/dist/components/MetricList/MetricList.js.map +1 -1
- package/dist/components/Modal/Modal.d.ts +24 -5
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +16 -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/NavBottom/NavBottom.d.ts +2 -1
- package/dist/components/NavBottom/NavBottom.d.ts.map +1 -1
- package/dist/components/NavBottom/NavBottom.js +6 -4
- package/dist/components/NavBottom/NavBottom.js.map +1 -1
- package/dist/components/NavSide/NavItem.js +1 -1
- package/dist/components/NavSide/NavItem.js.map +1 -1
- package/dist/components/NavSide/NavSide.d.ts +2 -1
- package/dist/components/NavSide/NavSide.d.ts.map +1 -1
- package/dist/components/NavSide/NavSide.js +5 -3
- package/dist/components/NavSide/NavSide.js.map +1 -1
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/Popover.js +7 -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 +2 -1
- package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/components/ProgressBar/ProgressBar.js +5 -3
- package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/components/Select/Select.d.ts +11 -2
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +64 -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 +19 -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/Sheet/Sheet.d.ts +19 -5
- package/dist/components/Sheet/Sheet.d.ts.map +1 -1
- package/dist/components/Sheet/Sheet.js +18 -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/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/Skeleton/Skeleton.d.ts +2 -1
- package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/Skeleton/Skeleton.js +5 -3
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Sparkline/Sparkline.d.ts +10 -2
- package/dist/components/Sparkline/Sparkline.d.ts.map +1 -1
- package/dist/components/Sparkline/Sparkline.js +5 -3
- package/dist/components/Sparkline/Sparkline.js.map +1 -1
- package/dist/components/StatsCard/StatsCard.d.ts +4 -4
- package/dist/components/StatsCard/StatsCard.d.ts.map +1 -1
- package/dist/components/StatsCard/StatsCard.js +5 -3
- package/dist/components/StatsCard/StatsCard.js.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts +2 -2
- 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/TagChip/TagChip.d.ts +2 -1
- package/dist/components/TagChip/TagChip.d.ts.map +1 -1
- package/dist/components/TagChip/TagChip.js +5 -3
- package/dist/components/TagChip/TagChip.js.map +1 -1
- package/dist/components/TagInput/TagInput.d.ts +1 -1
- package/dist/components/TagInput/TagInput.d.ts.map +1 -1
- package/dist/components/TagInput/TagInput.js +5 -4
- package/dist/components/TagInput/TagInput.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.d.ts +2 -2
- package/dist/components/TimePicker/TimePicker.d.ts.map +1 -1
- package/dist/components/TimePicker/TimePicker.js +27 -11
- package/dist/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/components/TimePicker/timepicker.types.d.ts +14 -13
- 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/date-time/index.d.ts +2 -0
- package/dist/date-time/index.d.ts.map +1 -1
- package/dist/date-time/index.js +9 -0
- 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/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 +70 -32
- package/dist/theme/schema.d.ts.map +1 -1
- package/dist/theme/schema.js +36 -18
- package/dist/theme/schema.js.map +1 -1
- package/package.json +9 -15
- package/src/components/Badge/Badge.tsx +5 -4
- package/src/components/BarChart/BarChart.tsx +25 -30
- package/src/components/Calendar/Calendar.tsx +91 -401
- package/src/components/Calendar/CalendarView.tsx +445 -0
- package/src/components/Calendar/calendar.types.ts +94 -29
- package/src/components/Calendar/index.ts +16 -17
- package/src/components/ColorDot/ColorDot.tsx +6 -4
- package/src/components/DatePicker/DatePicker.tsx +92 -16
- package/src/components/DatePicker/datepicker.types.ts +38 -39
- package/src/components/DatePicker/index.ts +11 -10
- package/src/components/DateRangePicker/DateRangePicker.tsx +17 -21
- package/src/components/DateRangePicker/daterangepicker.types.ts +22 -22
- package/src/components/DateRangePicker/index.ts +9 -1
- package/src/components/DateTimePicker/DateTimePicker.tsx +46 -18
- package/src/components/DateTimePicker/datetimepicker.types.ts +22 -18
- package/src/components/DateTimePicker/index.ts +9 -1
- package/src/components/DateTimeRangePicker/DateTimeRangePicker.tsx +62 -28
- package/src/components/DateTimeRangePicker/datetimerangepicker.types.ts +24 -19
- package/src/components/DateTimeRangePicker/index.ts +9 -0
- package/src/components/EmptyState/EmptyState.tsx +8 -7
- package/src/components/Field/Field.tsx +7 -6
- package/src/components/LineChart/LineChart.tsx +147 -141
- package/src/components/Markdown/Markdown.tsx +4 -3
- package/src/components/Message/Message.tsx +17 -1
- package/src/components/MetricList/MetricList.tsx +10 -5
- package/src/components/Modal/Modal.tsx +119 -87
- package/src/components/Modal/components/ModalContext.tsx +14 -0
- package/src/components/Modal/components/ModalHeader.tsx +14 -2
- package/src/components/NavBottom/NavBottom.tsx +6 -4
- package/src/components/NavSide/NavItem.tsx +1 -1
- package/src/components/NavSide/NavSide.tsx +5 -3
- package/src/components/Popover/Popover.tsx +7 -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 +32 -28
- package/src/components/Select/Select.tsx +76 -19
- package/src/components/Select/SelectDropdown.tsx +32 -3
- package/src/components/Select/SelectTrigger.tsx +26 -3
- package/src/components/Select/useSelectKeyboard.ts +20 -10
- package/src/components/Sheet/Sheet.tsx +108 -83
- package/src/components/Sheet/components/SheetContext.tsx +10 -0
- package/src/components/Sheet/components/SheetHeader.tsx +17 -2
- package/src/components/Skeleton/Skeleton.tsx +5 -3
- package/src/components/Sparkline/Sparkline.tsx +29 -36
- package/src/components/StatsCard/StatsCard.tsx +7 -6
- package/src/components/Tabs/components/TabsList.tsx +5 -3
- package/src/components/Tabs/components/TabsPanels.tsx +5 -3
- package/src/components/TagChip/TagChip.tsx +10 -3
- package/src/components/TagInput/TagInput.tsx +5 -3
- package/src/components/TimePicker/TimePicker.tsx +31 -13
- package/src/components/TimePicker/timepicker.types.ts +14 -13
- package/src/date-time/index.ts +61 -0
- package/src/date-time/iso.ts +511 -0
- package/src/date-time/now.ts +10 -9
- package/src/theme/index.ts +11 -3
- package/src/theme/schema.ts +82 -54
- package/src/theme/tokens.css +807 -0
- package/dist/styles.css +0 -2
- package/dist/theme.generated.css +0 -438
- 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,77 +1,85 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the keydown handler for an open Select. It is attached to the element
|
|
4
|
+
* that actually holds focus — the listbox, or the search input in searchable
|
|
5
|
+
* mode — rather than to `document`.
|
|
6
|
+
*
|
|
7
|
+
* A document-level listener fired for every keystroke on the page while any
|
|
8
|
+
* Select was open, which meant a Select could swallow Escape or an arrow key
|
|
9
|
+
* from an overlay stacked above it, and two open Selects raced each other. It
|
|
10
|
+
* also decoupled key handling from focus, so nothing guaranteed the element the
|
|
11
|
+
* user was typing into was the one being navigated. Scoping the handler to the
|
|
12
|
+
* focused element makes both problems structurally impossible and is what lets
|
|
13
|
+
* `aria-activedescendant` mean something: the focused element owns the active
|
|
14
|
+
* option.
|
|
15
|
+
*/
|
|
2
16
|
export function useSelectKeyboard({ open, searchable, searchValue, highlightedIndex, displayOptions, setOpen, setHighlightedIndex, setSearchValue, handleSelect, focusTrigger, }) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
setSearchValue("");
|
|
15
|
-
setHighlightedIndex(0);
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
setOpen(false);
|
|
19
|
-
focusTrigger();
|
|
20
|
-
}
|
|
21
|
-
break;
|
|
22
|
-
case "ArrowDown":
|
|
23
|
-
event.preventDefault();
|
|
24
|
-
setHighlightedIndex((prev) => (prev < displayOptions.length - 1 ? prev + 1 : prev));
|
|
25
|
-
break;
|
|
26
|
-
case "ArrowUp":
|
|
27
|
-
event.preventDefault();
|
|
28
|
-
setHighlightedIndex((prev) => (prev > 0 ? prev - 1 : prev));
|
|
29
|
-
break;
|
|
30
|
-
case "Home":
|
|
31
|
-
event.preventDefault();
|
|
17
|
+
return useCallback((event) => {
|
|
18
|
+
if (!open)
|
|
19
|
+
return;
|
|
20
|
+
const isTyping = searchable && event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;
|
|
21
|
+
if (isTyping)
|
|
22
|
+
return;
|
|
23
|
+
switch (event.key) {
|
|
24
|
+
case "Escape":
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
if (searchable && searchValue) {
|
|
27
|
+
setSearchValue("");
|
|
32
28
|
setHighlightedIndex(0);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
setOpen(false);
|
|
32
|
+
focusTrigger();
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
case "ArrowDown":
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
setHighlightedIndex((prev) => (prev < displayOptions.length - 1 ? prev + 1 : prev));
|
|
38
|
+
break;
|
|
39
|
+
case "ArrowUp":
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
setHighlightedIndex((prev) => (prev > 0 ? prev - 1 : prev));
|
|
42
|
+
break;
|
|
43
|
+
case "Home":
|
|
44
|
+
event.preventDefault();
|
|
45
|
+
setHighlightedIndex(0);
|
|
46
|
+
break;
|
|
47
|
+
case "End":
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
setHighlightedIndex(displayOptions.length - 1);
|
|
50
|
+
break;
|
|
51
|
+
case "Enter":
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
if (highlightedIndex >= 0 && highlightedIndex < displayOptions.length) {
|
|
54
|
+
handleSelect(displayOptions[highlightedIndex].value);
|
|
55
|
+
}
|
|
56
|
+
break;
|
|
57
|
+
case " ":
|
|
58
|
+
if (!searchable) {
|
|
39
59
|
event.preventDefault();
|
|
40
60
|
if (highlightedIndex >= 0 && highlightedIndex < displayOptions.length) {
|
|
41
61
|
handleSelect(displayOptions[highlightedIndex].value);
|
|
42
62
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case "Tab":
|
|
66
|
+
setOpen(false);
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
if (!searchable && event.key.length === 1) {
|
|
70
|
+
const letter = event.key.toLowerCase();
|
|
71
|
+
const startIndex = highlightedIndex + 1;
|
|
72
|
+
const matchIndex = displayOptions.findIndex((opt, idx) => idx >= startIndex && opt.label.toLowerCase().startsWith(letter));
|
|
73
|
+
if (matchIndex >= 0) {
|
|
74
|
+
setHighlightedIndex(matchIndex);
|
|
50
75
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
default:
|
|
56
|
-
if (!searchable && event.key.length === 1) {
|
|
57
|
-
const letter = event.key.toLowerCase();
|
|
58
|
-
const startIndex = highlightedIndex + 1;
|
|
59
|
-
const matchIndex = displayOptions.findIndex((opt, idx) => idx >= startIndex && opt.label.toLowerCase().startsWith(letter));
|
|
60
|
-
if (matchIndex >= 0) {
|
|
61
|
-
setHighlightedIndex(matchIndex);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const wrapMatchIndex = displayOptions.findIndex((opt) => opt.label.toLowerCase().startsWith(letter));
|
|
65
|
-
if (wrapMatchIndex >= 0) {
|
|
66
|
-
setHighlightedIndex(wrapMatchIndex);
|
|
67
|
-
}
|
|
76
|
+
else {
|
|
77
|
+
const wrapMatchIndex = displayOptions.findIndex((opt) => opt.label.toLowerCase().startsWith(letter));
|
|
78
|
+
if (wrapMatchIndex >= 0) {
|
|
79
|
+
setHighlightedIndex(wrapMatchIndex);
|
|
68
80
|
}
|
|
69
81
|
}
|
|
70
|
-
|
|
71
|
-
};
|
|
72
|
-
if (open) {
|
|
73
|
-
document.addEventListener("keydown", handleKeyDown);
|
|
74
|
-
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
82
|
+
}
|
|
75
83
|
}
|
|
76
84
|
}, [open, searchable, searchValue, highlightedIndex, displayOptions, setOpen, setHighlightedIndex, setSearchValue, handleSelect, focusTrigger]);
|
|
77
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelectKeyboard.js","sourceRoot":"","sources":["../../../src/components/Select/useSelectKeyboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useSelectKeyboard.js","sourceRoot":"","sources":["../../../src/components/Select/useSelectKeyboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
-
export type SheetProps = Pick<HTMLAttributes<HTMLDivElement>, "className" | "style"> & {
|
|
2
|
+
export type SheetProps = Pick<HTMLAttributes<HTMLDivElement>, "className" | "style" | "aria-label" | "aria-labelledby" | "aria-describedby"> & {
|
|
3
3
|
/** Whether the sheet is open. Sheet owns its own mount lifecycle so exit animations can play. */
|
|
4
4
|
open: boolean;
|
|
5
5
|
/** Called when the sheet requests a state change (Esc, outside press, X button). */
|
|
@@ -17,10 +17,24 @@ export type SheetProps = Pick<HTMLAttributes<HTMLDivElement>, "className" | "sty
|
|
|
17
17
|
/** Children — use Sheet.Header, Sheet.Body, Sheet.Footer */
|
|
18
18
|
children: ReactNode;
|
|
19
19
|
};
|
|
20
|
-
export declare const Sheet: {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
export declare const Sheet: import("react").ForwardRefExoticComponent<Pick<HTMLAttributes<HTMLDivElement>, "className" | "style" | "aria-describedby" | "aria-label" | "aria-labelledby"> & {
|
|
21
|
+
/** Whether the sheet is open. Sheet owns its own mount lifecycle so exit animations can play. */
|
|
22
|
+
open: boolean;
|
|
23
|
+
/** Called when the sheet requests a state change (Esc, outside press, X button). */
|
|
24
|
+
onOpenChange: (open: boolean) => void;
|
|
25
|
+
/** Which edge the sheet slides in from */
|
|
26
|
+
side?: "right" | "left";
|
|
27
|
+
/** Sheet width on desktop — mobile is always full width */
|
|
28
|
+
size?: "sm" | "md" | "lg";
|
|
29
|
+
/** When true (default), Esc closes the sheet. */
|
|
30
|
+
dismissable?: boolean;
|
|
31
|
+
/** When true, clicking outside the sheet closes it. Defaults to false — Sheet is a persistent workspace, not a transient popover. */
|
|
32
|
+
dismissOnOutsidePress?: boolean;
|
|
33
|
+
/** When true, shows a close (X) button in the header */
|
|
34
|
+
closable?: boolean;
|
|
35
|
+
/** Children — use Sheet.Header, Sheet.Body, Sheet.Footer */
|
|
36
|
+
children: ReactNode;
|
|
37
|
+
} & import("react").RefAttributes<HTMLDivElement>> & {
|
|
24
38
|
Header: import("react").ForwardRefExoticComponent<import("./components/index.js").SheetHeaderProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
25
39
|
Body: import("react").ForwardRefExoticComponent<import("./components/index.js").SheetBodyProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
26
40
|
Footer: import("react").ForwardRefExoticComponent<import("./components/index.js").SheetFooterProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sheet.d.ts","sourceRoot":"","sources":["../../../src/components/Sheet/Sheet.tsx"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"Sheet.d.ts","sourceRoot":"","sources":["../../../src/components/Sheet/Sheet.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,cAAc,EAAE,KAAK,SAAS,EAAoD,MAAM,OAAO,CAAC;AAO1H,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,GAAG;IAC7I,iGAAiG;IACjG,IAAI,EAAE,OAAO,CAAC;IACd,oFAAoF;IACpF,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qIAAqI;IACrI,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAiIF,eAAO,MAAM,KAAK;IAjJhB,iGAAiG;UAC3F,OAAO;IACb,oFAAoF;kBACtE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;IACrC,0CAA0C;WACnC,OAAO,GAAG,MAAM;IACvB,2DAA2D;WACpD,IAAI,GAAG,IAAI,GAAG,IAAI;IACzB,iDAAiD;kBACnC,OAAO;IACrB,qIAAqI;4BAC7G,OAAO;IAC/B,wDAAwD;eAC7C,OAAO;IAClB,4DAA4D;cAClD,SAAS;;;;;CAsInB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { FloatingFocusManager, useDismiss, useFloating, useInteractions, useRole } from "@floating-ui/react";
|
|
3
3
|
import { useMergedFloatingRef, usePresence } from "@sixthshift/design-system/hooks";
|
|
4
4
|
import { cn } from "@sixthshift/design-system/utils";
|
|
5
|
-
import { useCallback, useEffect, useMemo } from "react";
|
|
5
|
+
import { forwardRef, useCallback, useEffect, useId, useMemo, useState } from "react";
|
|
6
6
|
import { SheetBody, SheetContext, SheetFooter, SheetHeader } from "./components/index.js";
|
|
7
7
|
// =============================================================================
|
|
8
8
|
// Size classes
|
|
@@ -15,7 +15,7 @@ const sizeClasses = {
|
|
|
15
15
|
// =============================================================================
|
|
16
16
|
// Sheet
|
|
17
17
|
// =============================================================================
|
|
18
|
-
const SheetRoot = ({ open, onOpenChange, side = "right", size = "md", dismissable = true, dismissOnOutsidePress = false, closable, className, style, children, }) => {
|
|
18
|
+
const SheetRoot = forwardRef(({ open, onOpenChange, side = "right", size = "md", dismissable = true, dismissOnOutsidePress = false, closable, className, style, children, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, }, ref) => {
|
|
19
19
|
const { ref: presenceRef, state, isMounted, show, hide } = usePresence();
|
|
20
20
|
// Drive presence from the controlled `open` prop.
|
|
21
21
|
// When `open` flips to false, we play the exit animation, then unmount.
|
|
@@ -37,7 +37,7 @@ const SheetRoot = ({ open, onOpenChange, side = "right", size = "md", dismissabl
|
|
|
37
37
|
requestClose();
|
|
38
38
|
},
|
|
39
39
|
});
|
|
40
|
-
const mergedRef = useMergedFloatingRef(refs, presenceRef);
|
|
40
|
+
const mergedRef = useMergedFloatingRef(refs, presenceRef, ref);
|
|
41
41
|
const dismiss = useDismiss(context, {
|
|
42
42
|
enabled: dismissable,
|
|
43
43
|
escapeKey: true,
|
|
@@ -46,13 +46,25 @@ const SheetRoot = ({ open, onOpenChange, side = "right", size = "md", dismissabl
|
|
|
46
46
|
});
|
|
47
47
|
const role = useRole(context, { role: "dialog" });
|
|
48
48
|
const { getFloatingProps } = useInteractions([dismiss, role]);
|
|
49
|
-
|
|
49
|
+
// Named from its header, same contract as Modal — see SheetContext.
|
|
50
|
+
const titleId = useId();
|
|
51
|
+
const [hasTitle, setHasTitle] = useState(false);
|
|
52
|
+
const registerTitle = useCallback((present) => setHasTitle(present), []);
|
|
53
|
+
// `aria-labelledby` beats `aria-label` in the name computation, so a caller
|
|
54
|
+
// who passes a label must not also be pointed at the header — they would
|
|
55
|
+
// never see their own string win.
|
|
56
|
+
const labelledBy = ariaLabelledBy ?? (ariaLabel || !hasTitle ? undefined : titleId);
|
|
57
|
+
const sheetContextValue = useMemo(() => ({ onClose: requestClose, closable, titleId, registerTitle }), [requestClose, closable, titleId, registerTitle]);
|
|
50
58
|
if (!isMounted)
|
|
51
59
|
return null;
|
|
52
60
|
const isEntering = state === "entering";
|
|
53
61
|
const isExiting = state === "exiting";
|
|
54
|
-
return (_jsx(FloatingFocusManager, { context: context, modal: false, children: _jsx("div", { ref: mergedRef,
|
|
55
|
-
|
|
62
|
+
return (_jsx(FloatingFocusManager, { context: context, modal: false, children: _jsx("div", { ref: mergedRef,
|
|
63
|
+
// Explicit, though `getFloatingProps` also supplies it from `useRole`:
|
|
64
|
+
// the ARIA attributes below are only valid on a dialog, and static
|
|
65
|
+
// analysis cannot see a role that arrives through a spread. Matches Modal.
|
|
66
|
+
role: "dialog", "aria-label": ariaLabel, "aria-labelledby": labelledBy, "aria-describedby": ariaDescribedBy, tabIndex: -1, "data-state": state, "data-side": side, className: cn("fixed top-0 bottom-0 z-sheet flex flex-col overflow-hidden bg-bg-normal outline-hidden", "border-border-normal shadow-lg", side === "right" ? "right-0 border-l" : "left-0 border-r", sizeClasses[size], "max-sm:inset-x-0", isEntering && side === "right" && "animate-slide-right-in", isExiting && side === "right" && "animate-slide-right-out", isEntering && side === "left" && "animate-slide-left-in", isExiting && side === "left" && "animate-slide-left-out", className), style: style, ...getFloatingProps({}), children: _jsx(SheetContext.Provider, { value: sheetContextValue, children: children }) }) }));
|
|
67
|
+
});
|
|
56
68
|
SheetRoot.displayName = "Sheet";
|
|
57
69
|
// =============================================================================
|
|
58
70
|
// Compound Component Export
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sheet.js","sourceRoot":"","sources":["../../../src/components/Sheet/Sheet.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AACrD,OAAO,EAAuC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Sheet.js","sourceRoot":"","sources":["../../../src/components/Sheet/Sheet.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,16 @@ export type OnClose = (event?: MouseEvent<Element> | KeyboardEvent<Element>) =>
|
|
|
3
3
|
interface SheetContextValue {
|
|
4
4
|
onClose: OnClose;
|
|
5
5
|
closable?: boolean | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* The id `Sheet.Header` stamps on itself so the dialog can name itself from
|
|
8
|
+
* its own title instead of being announced as a bare "dialog".
|
|
9
|
+
*/
|
|
10
|
+
titleId?: string;
|
|
11
|
+
/**
|
|
12
|
+
* The header reports its presence — a headerless sheet must not point
|
|
13
|
+
* `aria-labelledby` at an element that never rendered.
|
|
14
|
+
*/
|
|
15
|
+
registerTitle?: (present: boolean) => void;
|
|
6
16
|
}
|
|
7
17
|
export declare const SheetContext: import("react").Context<SheetContextValue | null>;
|
|
8
18
|
export declare function useSheetContext(): SheetContextValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetContext.d.ts","sourceRoot":"","sources":["../../../../src/components/Sheet/components/SheetContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAuB,MAAM,OAAO,CAAC;AAExH,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AAErF,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"SheetContext.d.ts","sourceRoot":"","sources":["../../../../src/components/Sheet/components/SheetContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAuB,MAAM,OAAO,CAAC;AAExH,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AAErF,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,YAAY,mDAAgD,CAAC;AAE1E,wBAAgB,eAAe,sBAM9B;AAED,eAAO,MAAM,oBAAoB,oCAAqC,iBAAiB,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,gCAGhI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetContext.js","sourceRoot":"","sources":["../../../../src/components/Sheet/components/SheetContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAA+D,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SheetContext.js","sourceRoot":"","sources":["../../../../src/components/Sheet/components/SheetContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAA+D,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAmBxH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAE1E,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAA+D,EAAE,EAAE;IACnI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1E,OAAO,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CAAC;AACjF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/Sheet/components/SheetHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAEpE,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"SheetHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/Sheet/components/SheetHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAEpE,eAAO,MAAM,WAAW,yFAmCtB,CAAC"}
|
|
@@ -3,11 +3,20 @@ import { cn } from "@sixthshift/design-system/utils";
|
|
|
3
3
|
import { X } from "lucide-react";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { SheetContext } from "./SheetContext.js";
|
|
6
|
-
export const SheetHeader = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
6
|
+
export const SheetHeader = React.forwardRef(({ className, children, id, ...props }, ref) => {
|
|
7
7
|
const context = React.useContext(SheetContext);
|
|
8
8
|
const closable = context?.closable;
|
|
9
9
|
const onClose = context?.onClose;
|
|
10
|
-
|
|
10
|
+
const registerTitle = context?.registerTitle;
|
|
11
|
+
// Report the title to the sheet so it can name itself, and withdraw it on
|
|
12
|
+
// unmount. A caller-supplied `id` wins over the generated one — which the
|
|
13
|
+
// sheet can no longer resolve, so it is told there is no title to point at.
|
|
14
|
+
const ownsTitleId = id === undefined;
|
|
15
|
+
React.useEffect(() => {
|
|
16
|
+
registerTitle?.(ownsTitleId);
|
|
17
|
+
return () => registerTitle?.(false);
|
|
18
|
+
}, [registerTitle, ownsTitleId]);
|
|
19
|
+
return (_jsxs("div", { ref: ref, id: id ?? context?.titleId, className: cn("flex flex-col space-y-1.5 border-border-normal border-b p-6", closable && "pr-12", className), ...props, children: [children, closable && (_jsx("button", { type: "button", onClick: onClose, "aria-label": "Close", className: "absolute top-4 right-4 cursor-pointer rounded-md p-1 text-fg-subtle transition-colors hover:bg-bg-subtle hover:text-fg-normal", children: _jsx(X, { size: 16 }) }))] }));
|
|
11
20
|
});
|
|
12
21
|
SheetHeader.displayName = "SheetHeader";
|
|
13
22
|
//# sourceMappingURL=SheetHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetHeader.js","sourceRoot":"","sources":["../../../../src/components/Sheet/components/SheetHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAmC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"SheetHeader.js","sourceRoot":"","sources":["../../../../src/components/Sheet/components/SheetHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAmC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC3H,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IACjC,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;IAE7C,0EAA0E;IAC1E,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,WAAW,GAAG,EAAE,KAAK,SAAS,CAAC;IACrC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjC,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,IAAI,OAAO,EAAE,OAAO,EAC1B,SAAS,EAAE,EAAE,CAAC,6DAA6D,EAAE,QAAQ,IAAI,OAAO,EAAE,SAAS,CAAC,KACxG,KAAK,aAER,QAAQ,EACR,QAAQ,IAAI,CACX,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,gBACL,OAAO,EAClB,SAAS,EAAC,+HAA+H,YAEzI,KAAC,CAAC,IAAC,IAAI,EAAE,EAAE,GAAI,GACR,CACV,IACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const Skeleton: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2
3
|
export { Skeleton };
|
|
3
4
|
//# sourceMappingURL=Skeleton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,QAAA,MAAM,QAAQ,6GAEZ,CAAC;AAGH,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
const Skeleton = React.forwardRef(({ className, ...props }, ref) => {
|
|
5
|
+
return _jsx("div", { ref: ref, className: cn("animate-pulse rounded-md bg-bg-strong/10", className), ...props });
|
|
6
|
+
});
|
|
7
|
+
Skeleton.displayName = "Skeleton";
|
|
6
8
|
export { Skeleton };
|
|
7
9
|
//# sourceMappingURL=Skeleton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Skeleton.js","sourceRoot":"","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"Skeleton.js","sourceRoot":"","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAuD,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACvH,OAAO,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,0CAA0C,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC5G,CAAC,CAAC,CAAC;AACH,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Interpolation } from "@sixthshift/design-system/line-chart";
|
|
2
|
-
import
|
|
2
|
+
import * as React from "react";
|
|
3
3
|
export type SparklineProps = React.HTMLAttributes<HTMLSpanElement> & {
|
|
4
4
|
data: number[];
|
|
5
5
|
width?: number;
|
|
@@ -9,5 +9,13 @@ export type SparklineProps = React.HTMLAttributes<HTMLSpanElement> & {
|
|
|
9
9
|
interpolation?: Interpolation;
|
|
10
10
|
strokeWidth?: number;
|
|
11
11
|
};
|
|
12
|
-
export declare const Sparkline:
|
|
12
|
+
export declare const Sparkline: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & {
|
|
13
|
+
data: number[];
|
|
14
|
+
width?: number;
|
|
15
|
+
height?: number;
|
|
16
|
+
color?: string;
|
|
17
|
+
fillArea?: boolean;
|
|
18
|
+
interpolation?: Interpolation;
|
|
19
|
+
strokeWidth?: number;
|
|
20
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
13
21
|
//# sourceMappingURL=Sparkline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../../src/components/Sparkline/Sparkline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../../src/components/Sparkline/Sparkline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG;IACnE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAyCF,eAAO,MAAM,SAAS;UAhDd,MAAM,EAAE;YACN,MAAM;aACL,MAAM;YACP,MAAM;eACH,OAAO;oBACF,aAAa;kBACf,MAAM;yCAyErB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
3
4
|
function buildPath(points, interpolation) {
|
|
4
5
|
if (points.length === 0)
|
|
5
6
|
return "";
|
|
@@ -37,7 +38,7 @@ function buildPath(points, interpolation) {
|
|
|
37
38
|
}
|
|
38
39
|
return parts.join(" ");
|
|
39
40
|
}
|
|
40
|
-
export const Sparkline = ({ data, width = 80, height = 24, color = "var(--fg-brand)", fillArea = false, interpolation = "monotone", strokeWidth = 1.5, className, ...rest }) => {
|
|
41
|
+
export const Sparkline = React.forwardRef(({ data, width = 80, height = 24, color = "var(--fg-brand)", fillArea = false, interpolation = "monotone", strokeWidth = 1.5, className, ...rest }, ref) => {
|
|
41
42
|
if (data.length < 2)
|
|
42
43
|
return null;
|
|
43
44
|
const min = Math.min(...data);
|
|
@@ -52,6 +53,7 @@ export const Sparkline = ({ data, width = 80, height = 24, color = "var(--fg-bra
|
|
|
52
53
|
y: padY + innerH - ((v - min) / range) * innerH,
|
|
53
54
|
}));
|
|
54
55
|
const path = buildPath(points, interpolation);
|
|
55
|
-
return (_jsx("span", { ...rest, className: cn("inline-block align-middle", className), children: _jsxs("svg", { width: width, height: height, viewBox: `0 0 ${width} ${height}`, role: "img", "aria-label": "Trend line", children: [fillArea && path && (_jsx("path", { d: `${path} L ${points[points.length - 1].x} ${height - padY} L ${points[0].x} ${height - padY} Z`, fill: color, opacity: 0.12 })), _jsx("path", { d: path, fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round" })] }) }));
|
|
56
|
-
};
|
|
56
|
+
return (_jsx("span", { ref: ref, ...rest, className: cn("inline-block align-middle", className), children: _jsxs("svg", { width: width, height: height, viewBox: `0 0 ${width} ${height}`, role: "img", "aria-label": "Trend line", children: [fillArea && path && (_jsx("path", { d: `${path} L ${points[points.length - 1].x} ${height - padY} L ${points[0].x} ${height - padY} Z`, fill: color, opacity: 0.12 })), _jsx("path", { d: path, fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round" })] }) }));
|
|
57
|
+
});
|
|
58
|
+
Sparkline.displayName = "Sparkline";
|
|
57
59
|
//# sourceMappingURL=Sparkline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../../../src/components/Sparkline/Sparkline.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../../../src/components/Sparkline/Sparkline.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,SAAS,SAAS,CAAC,MAAkC,EAAE,aAA4B;IACjF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpD,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,UAAU;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM;QACR,KAAK,WAAW;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,MAAM;QACR,KAAK,YAAY;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,MAAM;QACR;YACE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,MAAM;IACV,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CACvC,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,iBAAiB,EAAE,QAAQ,GAAG,KAAK,EAAE,aAAa,GAAG,UAAU,EAAE,WAAW,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IACzJ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAE7B,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM;QAC1C,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM;KAChD,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE9C,OAAO,CACL,eAAM,GAAG,EAAE,GAAG,KAAM,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,YAC7E,eAAK,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,MAAM,EAAE,EAAE,IAAI,EAAC,KAAK,gBAAY,YAAY,aACrG,QAAQ,IAAI,IAAI,IAAI,CACnB,eAAM,CAAC,EAAE,GAAG,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,MAAM,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAI,CAC3I,EACD,eAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,IAC/G,GACD,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AACF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from "react";
|
|
2
2
|
export type StatsCardProps = {
|
|
3
3
|
/** Title of the stats card */
|
|
4
4
|
title: string;
|
|
5
5
|
/** Description text shown below the title */
|
|
6
6
|
description: string;
|
|
7
7
|
/** Optional icon displayed in the header */
|
|
8
|
-
icon?: ReactNode;
|
|
8
|
+
icon?: React.ReactNode;
|
|
9
9
|
/** Visual status indicator via left border color */
|
|
10
10
|
status?: "healthy" | "warning" | "error" | "neutral";
|
|
11
11
|
/** Card content */
|
|
12
|
-
children: ReactNode;
|
|
12
|
+
children: React.ReactNode;
|
|
13
13
|
/** Additional CSS classes */
|
|
14
14
|
className?: string;
|
|
15
15
|
};
|
|
16
|
-
export declare const StatsCard:
|
|
16
|
+
export declare const StatsCard: React.ForwardRefExoticComponent<StatsCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
17
17
|
//# sourceMappingURL=StatsCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatsCard.d.ts","sourceRoot":"","sources":["../../../src/components/StatsCard/StatsCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"StatsCard.d.ts","sourceRoot":"","sources":["../../../src/components/StatsCard/StatsCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,cAAc,GAAG;IAC3B,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,oDAAoD;IACpD,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACrD,mBAAmB;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AASF,eAAO,MAAM,SAAS,uFAapB,CAAC"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Caption } from "@sixthshift/design-system/caption";
|
|
3
3
|
import { cn } from "@sixthshift/design-system/utils";
|
|
4
|
+
import * as React from "react";
|
|
4
5
|
const statusColors = {
|
|
5
6
|
healthy: "border-l-green-500",
|
|
6
7
|
warning: "border-l-amber-500",
|
|
7
8
|
error: "border-l-red-500",
|
|
8
9
|
neutral: "border-l-border-subtle",
|
|
9
10
|
};
|
|
10
|
-
export const StatsCard = ({ title, description, icon, status = "neutral", children, className }) => {
|
|
11
|
-
return (_jsxs("div", { className: cn("flex flex-col gap-3 rounded border border-border-subtle border-l-2 bg-bg-subtle p-4", statusColors[status], className), children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex flex-col gap-0.5", children: [_jsx("span", { className: "font-medium text-fg-normal", children: title }), _jsx(Caption, { children: description })] }), icon && _jsx("div", { className: "text-fg-subtle", children: icon })] }), _jsx("div", { className: "flex-1", children: children })] }));
|
|
12
|
-
};
|
|
11
|
+
export const StatsCard = React.forwardRef(({ title, description, icon, status = "neutral", children, className }, ref) => {
|
|
12
|
+
return (_jsxs("div", { ref: ref, className: cn("flex flex-col gap-3 rounded border border-border-subtle border-l-2 bg-bg-subtle p-4", statusColors[status], className), children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex flex-col gap-0.5", children: [_jsx("span", { className: "font-medium text-fg-normal", children: title }), _jsx(Caption, { children: description })] }), icon && _jsx("div", { className: "text-fg-subtle", children: icon })] }), _jsx("div", { className: "flex-1", children: children })] }));
|
|
13
|
+
});
|
|
14
|
+
StatsCard.displayName = "StatsCard";
|
|
13
15
|
//# sourceMappingURL=StatsCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatsCard.js","sourceRoot":"","sources":["../../../src/components/StatsCard/StatsCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"StatsCard.js","sourceRoot":"","sources":["../../../src/components/StatsCard/StatsCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,oBAAoB;IAC7B,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,wBAAwB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAiC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE;IACvJ,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,qFAAqF,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,aAClJ,eAAK,SAAS,EAAC,wCAAwC,aACrD,eAAK,SAAS,EAAC,uBAAuB,aACpC,eAAM,SAAS,EAAC,4BAA4B,YAAE,KAAK,GAAQ,EAC3D,KAAC,OAAO,cAAE,WAAW,GAAW,IAC5B,EACL,IAAI,IAAI,cAAK,SAAS,EAAC,gBAAgB,YAAE,IAAI,GAAO,IACjD,EACN,cAAK,SAAS,EAAC,QAAQ,YAAE,QAAQ,GAAO,IACpC,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"}
|
|
@@ -13,8 +13,8 @@ export type TabsProps = {
|
|
|
13
13
|
children: React.ReactNode;
|
|
14
14
|
};
|
|
15
15
|
export declare const Tabs: (({ items, value: controlledValue, defaultValue, onValueChange, children }: TabsProps) => React.JSX.Element) & {
|
|
16
|
-
List:
|
|
17
|
-
Panels:
|
|
16
|
+
List: React.ForwardRefExoticComponent<import("./index.js").TabsListProps & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
+
Panels: React.ForwardRefExoticComponent<import("./index.js").TabsPanelsProps & React.RefAttributes<HTMLDivElement>>;
|
|
18
18
|
};
|
|
19
19
|
export type { TabItem };
|
|
20
20
|
//# sourceMappingURL=Tabs.d.ts.map
|
|
@@ -5,5 +5,5 @@ export type TabsListProps = {
|
|
|
5
5
|
/** Additional CSS classes */
|
|
6
6
|
className?: string;
|
|
7
7
|
};
|
|
8
|
-
export declare const TabsList:
|
|
8
|
+
export declare const TabsList: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
|
|
9
9
|
//# sourceMappingURL=TabsList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabsList.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/components/TabsList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAKpC,MAAM,MAAM,aAAa,GAAG;IAC1B,uBAAuB;IACvB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"TabsList.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/components/TabsList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAKpC,MAAM,MAAM,aAAa,GAAG;IAC1B,uBAAuB;IACvB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,QAAQ,sFAqFnB,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
-
import { useCallback, useRef } from "react";
|
|
3
|
+
import { forwardRef, useCallback, useRef } from "react";
|
|
4
4
|
import { useTabsContext } from "./TabsContext.js";
|
|
5
5
|
import { TabsTrigger } from "./TabsTrigger.js";
|
|
6
|
-
export const TabsList = ({ orientation = "horizontal", className }) => {
|
|
6
|
+
export const TabsList = forwardRef(({ orientation = "horizontal", className }, ref) => {
|
|
7
7
|
const { items, value, onValueChange } = useTabsContext();
|
|
8
8
|
const triggerRefs = useRef([]);
|
|
9
9
|
// Get enabled items and their indices
|
|
@@ -54,8 +54,9 @@ export const TabsList = ({ orientation = "horizontal", className }) => {
|
|
|
54
54
|
focusAndSelect(targetItem.index);
|
|
55
55
|
}
|
|
56
56
|
}, [orientation, getCurrentEnabledIndex, enabledItems, focusAndSelect]);
|
|
57
|
-
return (_jsx("div", { role: "tablist", "aria-orientation": orientation, className: cn("inline-flex gap-1", orientation === "vertical" ? "flex-col" : "flex-row items-center", className), onKeyDown: handleKeyDown, children: items.map((item, index) => (_jsx(TabsTrigger, { item: item, index: index, ref: (el) => {
|
|
57
|
+
return (_jsx("div", { ref: ref, role: "tablist", "aria-orientation": orientation, className: cn("inline-flex gap-1", orientation === "vertical" ? "flex-col" : "flex-row items-center", className), onKeyDown: handleKeyDown, children: items.map((item, index) => (_jsx(TabsTrigger, { item: item, index: index, ref: (el) => {
|
|
58
58
|
triggerRefs.current[index] = el;
|
|
59
59
|
} }, item.value))) }));
|
|
60
|
-
};
|
|
60
|
+
});
|
|
61
|
+
TabsList.displayName = "TabsList";
|
|
61
62
|
//# sourceMappingURL=TabsList.js.map
|