@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.
Files changed (288) hide show
  1. package/README.md +135 -28
  2. package/dist/components/Badge/Badge.d.ts +5 -2
  3. package/dist/components/Badge/Badge.d.ts.map +1 -1
  4. package/dist/components/Badge/Badge.js +5 -3
  5. package/dist/components/Badge/Badge.js.map +1 -1
  6. package/dist/components/BarChart/BarChart.d.ts +8 -2
  7. package/dist/components/BarChart/BarChart.d.ts.map +1 -1
  8. package/dist/components/BarChart/BarChart.js +5 -3
  9. package/dist/components/BarChart/BarChart.js.map +1 -1
  10. package/dist/components/Calendar/Calendar.d.ts +17 -1
  11. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  12. package/dist/components/Calendar/Calendar.js +80 -225
  13. package/dist/components/Calendar/Calendar.js.map +1 -1
  14. package/dist/components/Calendar/CalendarView.d.ts +15 -0
  15. package/dist/components/Calendar/CalendarView.d.ts.map +1 -0
  16. package/dist/components/Calendar/CalendarView.js +255 -0
  17. package/dist/components/Calendar/CalendarView.js.map +1 -0
  18. package/dist/components/Calendar/calendar.types.d.ts +78 -27
  19. package/dist/components/Calendar/calendar.types.d.ts.map +1 -1
  20. package/dist/components/Calendar/calendar.types.js +10 -3
  21. package/dist/components/Calendar/calendar.types.js.map +1 -1
  22. package/dist/components/Calendar/index.d.ts +16 -2
  23. package/dist/components/Calendar/index.d.ts.map +1 -1
  24. package/dist/components/Calendar/index.js +15 -1
  25. package/dist/components/Calendar/index.js.map +1 -1
  26. package/dist/components/ColorDot/ColorDot.d.ts +9 -3
  27. package/dist/components/ColorDot/ColorDot.d.ts.map +1 -1
  28. package/dist/components/ColorDot/ColorDot.js +5 -3
  29. package/dist/components/ColorDot/ColorDot.js.map +1 -1
  30. package/dist/components/DatePicker/DatePicker.d.ts +2 -2
  31. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
  32. package/dist/components/DatePicker/DatePicker.js +65 -10
  33. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  34. package/dist/components/DatePicker/datepicker.types.d.ts +34 -36
  35. package/dist/components/DatePicker/datepicker.types.d.ts.map +1 -1
  36. package/dist/components/DatePicker/datepicker.types.js +5 -3
  37. package/dist/components/DatePicker/datepicker.types.js.map +1 -1
  38. package/dist/components/DatePicker/index.d.ts +10 -1
  39. package/dist/components/DatePicker/index.d.ts.map +1 -1
  40. package/dist/components/DatePicker/index.js +8 -0
  41. package/dist/components/DatePicker/index.js.map +1 -1
  42. package/dist/components/DateRangePicker/DateRangePicker.d.ts +3 -2
  43. package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  44. package/dist/components/DateRangePicker/DateRangePicker.js +17 -21
  45. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  46. package/dist/components/DateRangePicker/daterangepicker.types.d.ts +20 -20
  47. package/dist/components/DateRangePicker/daterangepicker.types.d.ts.map +1 -1
  48. package/dist/components/DateRangePicker/daterangepicker.types.js +6 -0
  49. package/dist/components/DateRangePicker/daterangepicker.types.js.map +1 -1
  50. package/dist/components/DateRangePicker/index.d.ts +8 -1
  51. package/dist/components/DateRangePicker/index.d.ts.map +1 -1
  52. package/dist/components/DateRangePicker/index.js +6 -0
  53. package/dist/components/DateRangePicker/index.js.map +1 -1
  54. package/dist/components/DateTimePicker/DateTimePicker.d.ts +3 -3
  55. package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
  56. package/dist/components/DateTimePicker/DateTimePicker.js +30 -12
  57. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  58. package/dist/components/DateTimePicker/datetimepicker.types.d.ts +20 -17
  59. package/dist/components/DateTimePicker/datetimepicker.types.d.ts.map +1 -1
  60. package/dist/components/DateTimePicker/datetimepicker.types.js +10 -0
  61. package/dist/components/DateTimePicker/datetimepicker.types.js.map +1 -1
  62. package/dist/components/DateTimePicker/index.d.ts +8 -1
  63. package/dist/components/DateTimePicker/index.d.ts.map +1 -1
  64. package/dist/components/DateTimePicker/index.js +6 -0
  65. package/dist/components/DateTimePicker/index.js.map +1 -1
  66. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts +3 -3
  67. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
  68. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +41 -20
  69. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
  70. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts +22 -18
  71. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts.map +1 -1
  72. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.js +8 -0
  73. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.js.map +1 -1
  74. package/dist/components/DateTimeRangePicker/index.d.ts +8 -0
  75. package/dist/components/DateTimeRangePicker/index.d.ts.map +1 -1
  76. package/dist/components/DateTimeRangePicker/index.js +7 -0
  77. package/dist/components/DateTimeRangePicker/index.js.map +1 -1
  78. package/dist/components/EmptyState/EmptyState.d.ts +16 -5
  79. package/dist/components/EmptyState/EmptyState.d.ts.map +1 -1
  80. package/dist/components/EmptyState/EmptyState.js +5 -3
  81. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  82. package/dist/components/Field/Field.d.ts +3 -3
  83. package/dist/components/Field/Field.d.ts.map +1 -1
  84. package/dist/components/Field/Field.js +6 -4
  85. package/dist/components/Field/Field.js.map +1 -1
  86. package/dist/components/LineChart/LineChart.d.ts +18 -2
  87. package/dist/components/LineChart/LineChart.d.ts.map +1 -1
  88. package/dist/components/LineChart/LineChart.js +5 -3
  89. package/dist/components/LineChart/LineChart.js.map +1 -1
  90. package/dist/components/Markdown/Markdown.d.ts +2 -4
  91. package/dist/components/Markdown/Markdown.d.ts.map +1 -1
  92. package/dist/components/Markdown/Markdown.js +3 -2
  93. package/dist/components/Markdown/Markdown.js.map +1 -1
  94. package/dist/components/Message/Message.d.ts.map +1 -1
  95. package/dist/components/Message/Message.js +16 -1
  96. package/dist/components/Message/Message.js.map +1 -1
  97. package/dist/components/MetricList/MetricList.d.ts +3 -3
  98. package/dist/components/MetricList/MetricList.d.ts.map +1 -1
  99. package/dist/components/MetricList/MetricList.js +5 -3
  100. package/dist/components/MetricList/MetricList.js.map +1 -1
  101. package/dist/components/Modal/Modal.d.ts +24 -5
  102. package/dist/components/Modal/Modal.d.ts.map +1 -1
  103. package/dist/components/Modal/Modal.js +16 -6
  104. package/dist/components/Modal/Modal.js.map +1 -1
  105. package/dist/components/Modal/components/ModalContext.d.ts +14 -0
  106. package/dist/components/Modal/components/ModalContext.d.ts.map +1 -1
  107. package/dist/components/Modal/components/ModalContext.js.map +1 -1
  108. package/dist/components/Modal/components/ModalHeader.d.ts.map +1 -1
  109. package/dist/components/Modal/components/ModalHeader.js +13 -2
  110. package/dist/components/Modal/components/ModalHeader.js.map +1 -1
  111. package/dist/components/NavBottom/NavBottom.d.ts +2 -1
  112. package/dist/components/NavBottom/NavBottom.d.ts.map +1 -1
  113. package/dist/components/NavBottom/NavBottom.js +6 -4
  114. package/dist/components/NavBottom/NavBottom.js.map +1 -1
  115. package/dist/components/NavSide/NavItem.js +1 -1
  116. package/dist/components/NavSide/NavItem.js.map +1 -1
  117. package/dist/components/NavSide/NavSide.d.ts +2 -1
  118. package/dist/components/NavSide/NavSide.d.ts.map +1 -1
  119. package/dist/components/NavSide/NavSide.js +5 -3
  120. package/dist/components/NavSide/NavSide.js.map +1 -1
  121. package/dist/components/Popover/Popover.d.ts.map +1 -1
  122. package/dist/components/Popover/Popover.js +7 -0
  123. package/dist/components/Popover/Popover.js.map +1 -1
  124. package/dist/components/Popover/components/PopoverBody.d.ts.map +1 -1
  125. package/dist/components/Popover/components/PopoverBody.js +5 -2
  126. package/dist/components/Popover/components/PopoverBody.js.map +1 -1
  127. package/dist/components/Popover/components/PopoverContext.d.ts +1 -0
  128. package/dist/components/Popover/components/PopoverContext.d.ts.map +1 -1
  129. package/dist/components/Popover/components/PopoverContext.js.map +1 -1
  130. package/dist/components/Popover/components/PopoverTrigger.d.ts.map +1 -1
  131. package/dist/components/Popover/components/PopoverTrigger.js +2 -2
  132. package/dist/components/Popover/components/PopoverTrigger.js.map +1 -1
  133. package/dist/components/ProgressBar/ProgressBar.d.ts +2 -1
  134. package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -1
  135. package/dist/components/ProgressBar/ProgressBar.js +5 -3
  136. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  137. package/dist/components/Select/Select.d.ts +11 -2
  138. package/dist/components/Select/Select.d.ts.map +1 -1
  139. package/dist/components/Select/Select.js +64 -18
  140. package/dist/components/Select/Select.js.map +1 -1
  141. package/dist/components/Select/SelectDropdown.d.ts +14 -2
  142. package/dist/components/Select/SelectDropdown.d.ts.map +1 -1
  143. package/dist/components/Select/SelectDropdown.js +19 -4
  144. package/dist/components/Select/SelectDropdown.js.map +1 -1
  145. package/dist/components/Select/SelectTrigger.d.ts +10 -3
  146. package/dist/components/Select/SelectTrigger.d.ts.map +1 -1
  147. package/dist/components/Select/SelectTrigger.js +12 -3
  148. package/dist/components/Select/SelectTrigger.js.map +1 -1
  149. package/dist/components/Select/useSelectKeyboard.d.ts +15 -1
  150. package/dist/components/Select/useSelectKeyboard.d.ts.map +1 -1
  151. package/dist/components/Select/useSelectKeyboard.js +73 -65
  152. package/dist/components/Select/useSelectKeyboard.js.map +1 -1
  153. package/dist/components/Sheet/Sheet.d.ts +19 -5
  154. package/dist/components/Sheet/Sheet.d.ts.map +1 -1
  155. package/dist/components/Sheet/Sheet.js +18 -6
  156. package/dist/components/Sheet/Sheet.js.map +1 -1
  157. package/dist/components/Sheet/components/SheetContext.d.ts +10 -0
  158. package/dist/components/Sheet/components/SheetContext.d.ts.map +1 -1
  159. package/dist/components/Sheet/components/SheetContext.js.map +1 -1
  160. package/dist/components/Sheet/components/SheetHeader.d.ts.map +1 -1
  161. package/dist/components/Sheet/components/SheetHeader.js +11 -2
  162. package/dist/components/Sheet/components/SheetHeader.js.map +1 -1
  163. package/dist/components/Skeleton/Skeleton.d.ts +2 -1
  164. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
  165. package/dist/components/Skeleton/Skeleton.js +5 -3
  166. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  167. package/dist/components/Sparkline/Sparkline.d.ts +10 -2
  168. package/dist/components/Sparkline/Sparkline.d.ts.map +1 -1
  169. package/dist/components/Sparkline/Sparkline.js +5 -3
  170. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  171. package/dist/components/StatsCard/StatsCard.d.ts +4 -4
  172. package/dist/components/StatsCard/StatsCard.d.ts.map +1 -1
  173. package/dist/components/StatsCard/StatsCard.js +5 -3
  174. package/dist/components/StatsCard/StatsCard.js.map +1 -1
  175. package/dist/components/Tabs/Tabs.d.ts +2 -2
  176. package/dist/components/Tabs/components/TabsList.d.ts +1 -1
  177. package/dist/components/Tabs/components/TabsList.d.ts.map +1 -1
  178. package/dist/components/Tabs/components/TabsList.js +5 -4
  179. package/dist/components/Tabs/components/TabsList.js.map +1 -1
  180. package/dist/components/Tabs/components/TabsPanels.d.ts +1 -1
  181. package/dist/components/Tabs/components/TabsPanels.d.ts.map +1 -1
  182. package/dist/components/Tabs/components/TabsPanels.js +5 -3
  183. package/dist/components/Tabs/components/TabsPanels.js.map +1 -1
  184. package/dist/components/TagChip/TagChip.d.ts +2 -1
  185. package/dist/components/TagChip/TagChip.d.ts.map +1 -1
  186. package/dist/components/TagChip/TagChip.js +5 -3
  187. package/dist/components/TagChip/TagChip.js.map +1 -1
  188. package/dist/components/TagInput/TagInput.d.ts +1 -1
  189. package/dist/components/TagInput/TagInput.d.ts.map +1 -1
  190. package/dist/components/TagInput/TagInput.js +5 -4
  191. package/dist/components/TagInput/TagInput.js.map +1 -1
  192. package/dist/components/TimePicker/TimePicker.d.ts +2 -2
  193. package/dist/components/TimePicker/TimePicker.d.ts.map +1 -1
  194. package/dist/components/TimePicker/TimePicker.js +27 -11
  195. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  196. package/dist/components/TimePicker/timepicker.types.d.ts +14 -13
  197. package/dist/components/TimePicker/timepicker.types.d.ts.map +1 -1
  198. package/dist/components/TimePicker/timepicker.types.js +4 -3
  199. package/dist/components/TimePicker/timepicker.types.js.map +1 -1
  200. package/dist/date-time/index.d.ts +2 -0
  201. package/dist/date-time/index.d.ts.map +1 -1
  202. package/dist/date-time/index.js +9 -0
  203. package/dist/date-time/index.js.map +1 -1
  204. package/dist/date-time/iso.d.ts +261 -0
  205. package/dist/date-time/iso.d.ts.map +1 -0
  206. package/dist/date-time/iso.js +358 -0
  207. package/dist/date-time/iso.js.map +1 -0
  208. package/dist/date-time/now.d.ts +7 -6
  209. package/dist/date-time/now.d.ts.map +1 -1
  210. package/dist/date-time/now.js +3 -3
  211. package/dist/date-time/now.js.map +1 -1
  212. package/dist/theme/index.d.ts +4 -3
  213. package/dist/theme/index.d.ts.map +1 -1
  214. package/dist/theme/index.js +3 -2
  215. package/dist/theme/index.js.map +1 -1
  216. package/dist/theme/schema.d.ts +70 -32
  217. package/dist/theme/schema.d.ts.map +1 -1
  218. package/dist/theme/schema.js +36 -18
  219. package/dist/theme/schema.js.map +1 -1
  220. package/package.json +9 -15
  221. package/src/components/Badge/Badge.tsx +5 -4
  222. package/src/components/BarChart/BarChart.tsx +25 -30
  223. package/src/components/Calendar/Calendar.tsx +91 -401
  224. package/src/components/Calendar/CalendarView.tsx +445 -0
  225. package/src/components/Calendar/calendar.types.ts +94 -29
  226. package/src/components/Calendar/index.ts +16 -17
  227. package/src/components/ColorDot/ColorDot.tsx +6 -4
  228. package/src/components/DatePicker/DatePicker.tsx +92 -16
  229. package/src/components/DatePicker/datepicker.types.ts +38 -39
  230. package/src/components/DatePicker/index.ts +11 -10
  231. package/src/components/DateRangePicker/DateRangePicker.tsx +17 -21
  232. package/src/components/DateRangePicker/daterangepicker.types.ts +22 -22
  233. package/src/components/DateRangePicker/index.ts +9 -1
  234. package/src/components/DateTimePicker/DateTimePicker.tsx +46 -18
  235. package/src/components/DateTimePicker/datetimepicker.types.ts +22 -18
  236. package/src/components/DateTimePicker/index.ts +9 -1
  237. package/src/components/DateTimeRangePicker/DateTimeRangePicker.tsx +62 -28
  238. package/src/components/DateTimeRangePicker/datetimerangepicker.types.ts +24 -19
  239. package/src/components/DateTimeRangePicker/index.ts +9 -0
  240. package/src/components/EmptyState/EmptyState.tsx +8 -7
  241. package/src/components/Field/Field.tsx +7 -6
  242. package/src/components/LineChart/LineChart.tsx +147 -141
  243. package/src/components/Markdown/Markdown.tsx +4 -3
  244. package/src/components/Message/Message.tsx +17 -1
  245. package/src/components/MetricList/MetricList.tsx +10 -5
  246. package/src/components/Modal/Modal.tsx +119 -87
  247. package/src/components/Modal/components/ModalContext.tsx +14 -0
  248. package/src/components/Modal/components/ModalHeader.tsx +14 -2
  249. package/src/components/NavBottom/NavBottom.tsx +6 -4
  250. package/src/components/NavSide/NavItem.tsx +1 -1
  251. package/src/components/NavSide/NavSide.tsx +5 -3
  252. package/src/components/Popover/Popover.tsx +7 -0
  253. package/src/components/Popover/components/PopoverBody.tsx +6 -1
  254. package/src/components/Popover/components/PopoverContext.tsx +1 -0
  255. package/src/components/Popover/components/PopoverTrigger.tsx +2 -1
  256. package/src/components/ProgressBar/ProgressBar.tsx +32 -28
  257. package/src/components/Select/Select.tsx +76 -19
  258. package/src/components/Select/SelectDropdown.tsx +32 -3
  259. package/src/components/Select/SelectTrigger.tsx +26 -3
  260. package/src/components/Select/useSelectKeyboard.ts +20 -10
  261. package/src/components/Sheet/Sheet.tsx +108 -83
  262. package/src/components/Sheet/components/SheetContext.tsx +10 -0
  263. package/src/components/Sheet/components/SheetHeader.tsx +17 -2
  264. package/src/components/Skeleton/Skeleton.tsx +5 -3
  265. package/src/components/Sparkline/Sparkline.tsx +29 -36
  266. package/src/components/StatsCard/StatsCard.tsx +7 -6
  267. package/src/components/Tabs/components/TabsList.tsx +5 -3
  268. package/src/components/Tabs/components/TabsPanels.tsx +5 -3
  269. package/src/components/TagChip/TagChip.tsx +10 -3
  270. package/src/components/TagInput/TagInput.tsx +5 -3
  271. package/src/components/TimePicker/TimePicker.tsx +31 -13
  272. package/src/components/TimePicker/timepicker.types.ts +14 -13
  273. package/src/date-time/index.ts +61 -0
  274. package/src/date-time/iso.ts +511 -0
  275. package/src/date-time/now.ts +10 -9
  276. package/src/theme/index.ts +11 -3
  277. package/src/theme/schema.ts +82 -54
  278. package/src/theme/tokens.css +807 -0
  279. package/dist/styles.css +0 -2
  280. package/dist/theme.generated.css +0 -438
  281. package/src/styles/base.css +0 -41
  282. package/src/theme/palette.json +0 -100
  283. package/src/theme/palette.schema.json +0 -40
  284. package/src/theme/theme.json +0 -349
  285. package/src/theme/theme.schema.json +0 -876
  286. package/src/theme/typography.json +0 -7
  287. package/src/theme/typography.schema.json +0 -36
  288. package/tailwind.config.ts +0 -261
@@ -1,77 +1,85 @@
1
- import { useEffect } from "react";
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
- useEffect(() => {
4
- const handleKeyDown = (event) => {
5
- if (!open)
6
- return;
7
- const isTyping = searchable && event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;
8
- if (isTyping)
9
- return;
10
- switch (event.key) {
11
- case "Escape":
12
- event.preventDefault();
13
- if (searchable && searchValue) {
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
- break;
34
- case "End":
35
- event.preventDefault();
36
- setHighlightedIndex(displayOptions.length - 1);
37
- break;
38
- case "Enter":
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
- break;
44
- case " ":
45
- if (!searchable) {
46
- event.preventDefault();
47
- if (highlightedIndex >= 0 && highlightedIndex < displayOptions.length) {
48
- handleSelect(displayOptions[highlightedIndex].value);
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
- break;
52
- case "Tab":
53
- setOpen(false);
54
- break;
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":"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"}
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
- ({ open, onOpenChange, side, size, dismissable, dismissOnOutsidePress, closable, className, style, children, }: SheetProps): import("react").JSX.Element | null;
22
- displayName: string;
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,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAmC,MAAM,OAAO,CAAC;AAO7F,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG;IACrF,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;AAwGF,eAAO,MAAM,KAAK;oHA7Ef,UAAU;;;;;;CAiFX,CAAC"}
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
- const sheetContextValue = useMemo(() => ({ onClose: requestClose, closable }), [requestClose, closable]);
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, 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 }) }) }));
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":"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"}
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;CAChC;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
+ {"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;AASxH,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
+ {"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,yFAoBtB,CAAC"}
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
- return (_jsxs("div", { ref: ref, 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 }) }))] }));
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;IACvH,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;IAEjC,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,6DAA6D,EAAE,QAAQ,IAAI,OAAO,EAAE,SAAS,CAAC,KAAM,KAAK,aACnI,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
+ {"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
- declare const Skeleton: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
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":"AAEA,QAAA,MAAM,QAAQ,4BAA6B,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,gCAE9E,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
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
- const Skeleton = ({ className, ...props }) => {
4
- return _jsx("div", { className: cn("animate-pulse rounded-md bg-bg-strong/10", className), ...props });
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;AAErD,MAAM,QAAQ,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAwC,EAAE,EAAE;IACjF,OAAO,cAAK,SAAS,EAAE,EAAE,CAAC,0CAA0C,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAClG,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,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 type * as React from "react";
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: ({ data, width, height, color, fillArea, interpolation, strokeWidth, className, ...rest }: SparklineProps) => React.JSX.Element | null;
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,KAAK,MAAM,OAAO,CAAC;AAEpC,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,6FAUnB,cAAc,6BA6BhB,CAAC"}
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":"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"}
1
+ {"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../../../src/components/Sparkline/Sparkline.tsx"],"names":[],"mappings":"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"}
@@ -1,17 +1,17 @@
1
- import type { ReactNode } from "react";
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: ({ title, description, icon, status, children, className }: StatsCardProps) => import("react").JSX.Element;
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,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,cAAc,GAAG;IAC3B,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oDAAoD;IACpD,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACrD,mBAAmB;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AASF,eAAO,MAAM,SAAS,8DAA2E,cAAc,gCAa9G,CAAC"}
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;AAkBrD,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,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAkB,EAAE,EAAE;IACjH,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qFAAqF,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,aACxI,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"}
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: ({ orientation, className }: import("./index.js").TabsListProps) => React.JSX.Element;
17
- Panels: ({ className }: import("./index.js").TabsPanelsProps) => React.JSX.Element | null;
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: ({ orientation, className }: TabsListProps) => React.JSX.Element;
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,+BAA+C,aAAa,sBAoFhF,CAAC"}
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