@sixthshift/design-system 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/README.md +242 -33
  2. package/dist/components/Badge/Badge.d.ts +65 -7
  3. package/dist/components/Badge/Badge.d.ts.map +1 -1
  4. package/dist/components/Badge/Badge.js +56 -46
  5. package/dist/components/Badge/Badge.js.map +1 -1
  6. package/dist/components/Badge/index.d.ts +1 -1
  7. package/dist/components/Badge/index.d.ts.map +1 -1
  8. package/dist/components/Badge/index.js +1 -1
  9. package/dist/components/Badge/index.js.map +1 -1
  10. package/dist/components/BarChart/BarChart.d.ts +20 -2
  11. package/dist/components/BarChart/BarChart.d.ts.map +1 -1
  12. package/dist/components/BarChart/BarChart.js +17 -3
  13. package/dist/components/BarChart/BarChart.js.map +1 -1
  14. package/dist/components/Button/Button.d.ts +85 -6
  15. package/dist/components/Button/Button.d.ts.map +1 -1
  16. package/dist/components/Button/Button.js +97 -106
  17. package/dist/components/Button/Button.js.map +1 -1
  18. package/dist/components/Button/index.d.ts +1 -1
  19. package/dist/components/Button/index.d.ts.map +1 -1
  20. package/dist/components/Button/index.js +1 -1
  21. package/dist/components/Button/index.js.map +1 -1
  22. package/dist/components/Calendar/Calendar.d.ts +31 -1
  23. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  24. package/dist/components/Calendar/Calendar.js +94 -225
  25. package/dist/components/Calendar/Calendar.js.map +1 -1
  26. package/dist/components/Calendar/CalendarView.d.ts +15 -0
  27. package/dist/components/Calendar/CalendarView.d.ts.map +1 -0
  28. package/dist/components/Calendar/CalendarView.js +263 -0
  29. package/dist/components/Calendar/CalendarView.js.map +1 -0
  30. package/dist/components/Calendar/calendar.types.d.ts +87 -27
  31. package/dist/components/Calendar/calendar.types.d.ts.map +1 -1
  32. package/dist/components/Calendar/calendar.types.js +10 -3
  33. package/dist/components/Calendar/calendar.types.js.map +1 -1
  34. package/dist/components/Calendar/index.d.ts +16 -2
  35. package/dist/components/Calendar/index.d.ts.map +1 -1
  36. package/dist/components/Calendar/index.js +15 -1
  37. package/dist/components/Calendar/index.js.map +1 -1
  38. package/dist/components/Card/Card.d.ts +13 -0
  39. package/dist/components/Card/Card.d.ts.map +1 -1
  40. package/dist/components/Card/Card.js +15 -2
  41. package/dist/components/Card/Card.js.map +1 -1
  42. package/dist/components/Checkbox/Checkbox.d.ts +21 -0
  43. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  44. package/dist/components/Checkbox/Checkbox.js +22 -1
  45. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  46. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +22 -0
  47. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  48. package/dist/components/CheckboxGroup/CheckboxGroup.js +22 -0
  49. package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
  50. package/dist/components/Code/Editor/Editor.js +2 -2
  51. package/dist/components/Code/Editor/Editor.js.map +1 -1
  52. package/dist/components/Code/Editor/themes.d.ts +2 -2
  53. package/dist/components/Code/Editor/themes.d.ts.map +1 -1
  54. package/dist/components/Code/Editor/themes.js +50 -32
  55. package/dist/components/Code/Editor/themes.js.map +1 -1
  56. package/dist/components/Code/ValidationStatus/ValidationStatus.d.ts.map +1 -1
  57. package/dist/components/Code/ValidationStatus/ValidationStatus.js.map +1 -1
  58. package/dist/components/DatePicker/DatePicker.d.ts +45 -2
  59. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
  60. package/dist/components/DatePicker/DatePicker.js +228 -11
  61. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  62. package/dist/components/DatePicker/DateSegments.d.ts +60 -0
  63. package/dist/components/DatePicker/DateSegments.d.ts.map +1 -0
  64. package/dist/components/DatePicker/DateSegments.js +80 -0
  65. package/dist/components/DatePicker/DateSegments.js.map +1 -0
  66. package/dist/components/DatePicker/datepicker.types.d.ts +53 -37
  67. package/dist/components/DatePicker/datepicker.types.d.ts.map +1 -1
  68. package/dist/components/DatePicker/datepicker.types.js +5 -3
  69. package/dist/components/DatePicker/datepicker.types.js.map +1 -1
  70. package/dist/components/DatePicker/index.d.ts +10 -1
  71. package/dist/components/DatePicker/index.d.ts.map +1 -1
  72. package/dist/components/DatePicker/index.js +8 -0
  73. package/dist/components/DatePicker/index.js.map +1 -1
  74. package/dist/components/DateRangePicker/DateRangePicker.d.ts +22 -3
  75. package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  76. package/dist/components/DateRangePicker/DateRangePicker.js +38 -24
  77. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  78. package/dist/components/DateRangePicker/daterangepicker.types.d.ts +26 -21
  79. package/dist/components/DateRangePicker/daterangepicker.types.d.ts.map +1 -1
  80. package/dist/components/DateRangePicker/daterangepicker.types.js +6 -0
  81. package/dist/components/DateRangePicker/daterangepicker.types.js.map +1 -1
  82. package/dist/components/DateRangePicker/index.d.ts +8 -1
  83. package/dist/components/DateRangePicker/index.d.ts.map +1 -1
  84. package/dist/components/DateRangePicker/index.js +6 -0
  85. package/dist/components/DateRangePicker/index.js.map +1 -1
  86. package/dist/components/DateTimePicker/DateTimePicker.d.ts +32 -4
  87. package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
  88. package/dist/components/DateTimePicker/DateTimePicker.js +133 -42
  89. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  90. package/dist/components/DateTimePicker/DateTimeSegments.d.ts +41 -0
  91. package/dist/components/DateTimePicker/DateTimeSegments.d.ts.map +1 -0
  92. package/dist/components/DateTimePicker/DateTimeSegments.js +67 -0
  93. package/dist/components/DateTimePicker/DateTimeSegments.js.map +1 -0
  94. package/dist/components/DateTimePicker/datetimepicker.types.d.ts +26 -18
  95. package/dist/components/DateTimePicker/datetimepicker.types.d.ts.map +1 -1
  96. package/dist/components/DateTimePicker/datetimepicker.types.js +10 -0
  97. package/dist/components/DateTimePicker/datetimepicker.types.js.map +1 -1
  98. package/dist/components/DateTimePicker/index.d.ts +8 -1
  99. package/dist/components/DateTimePicker/index.d.ts.map +1 -1
  100. package/dist/components/DateTimePicker/index.js +6 -0
  101. package/dist/components/DateTimePicker/index.js.map +1 -1
  102. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts +30 -4
  103. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
  104. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +171 -72
  105. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
  106. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts +28 -19
  107. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts.map +1 -1
  108. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.js +8 -0
  109. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.js.map +1 -1
  110. package/dist/components/DateTimeRangePicker/index.d.ts +8 -0
  111. package/dist/components/DateTimeRangePicker/index.d.ts.map +1 -1
  112. package/dist/components/DateTimeRangePicker/index.js +7 -0
  113. package/dist/components/DateTimeRangePicker/index.js.map +1 -1
  114. package/dist/components/Field/Field.d.ts +18 -20
  115. package/dist/components/Field/Field.d.ts.map +1 -1
  116. package/dist/components/Field/Field.js +22 -5
  117. package/dist/components/Field/Field.js.map +1 -1
  118. package/dist/components/FormField/FormField.d.ts +15 -0
  119. package/dist/components/FormField/FormField.d.ts.map +1 -1
  120. package/dist/components/FormField/FormField.js +15 -0
  121. package/dist/components/FormField/FormField.js.map +1 -1
  122. package/dist/components/HoverCard/HoverCard.d.ts +6 -0
  123. package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
  124. package/dist/components/HoverCard/HoverCard.js +6 -0
  125. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  126. package/dist/components/Input/Input.d.ts +15 -0
  127. package/dist/components/Input/Input.d.ts.map +1 -1
  128. package/dist/components/Input/Input.js +18 -3
  129. package/dist/components/Input/Input.js.map +1 -1
  130. package/dist/components/LineChart/LineChart.d.ts +35 -2
  131. package/dist/components/LineChart/LineChart.d.ts.map +1 -1
  132. package/dist/components/LineChart/LineChart.js +22 -3
  133. package/dist/components/LineChart/LineChart.js.map +1 -1
  134. package/dist/components/Markdown/Markdown.d.ts +19 -4
  135. package/dist/components/Markdown/Markdown.d.ts.map +1 -1
  136. package/dist/components/Markdown/Markdown.js +20 -2
  137. package/dist/components/Markdown/Markdown.js.map +1 -1
  138. package/dist/components/Message/Message.d.ts +49 -4
  139. package/dist/components/Message/Message.d.ts.map +1 -1
  140. package/dist/components/Message/Message.js +62 -11
  141. package/dist/components/Message/Message.js.map +1 -1
  142. package/dist/components/Message/index.d.ts +1 -1
  143. package/dist/components/Message/index.d.ts.map +1 -1
  144. package/dist/components/Modal/Modal.d.ts +60 -5
  145. package/dist/components/Modal/Modal.d.ts.map +1 -1
  146. package/dist/components/Modal/Modal.js +52 -6
  147. package/dist/components/Modal/Modal.js.map +1 -1
  148. package/dist/components/Modal/components/ModalContext.d.ts +14 -0
  149. package/dist/components/Modal/components/ModalContext.d.ts.map +1 -1
  150. package/dist/components/Modal/components/ModalContext.js.map +1 -1
  151. package/dist/components/Modal/components/ModalHeader.d.ts.map +1 -1
  152. package/dist/components/Modal/components/ModalHeader.js +13 -2
  153. package/dist/components/Modal/components/ModalHeader.js.map +1 -1
  154. package/dist/components/Popover/Popover.d.ts +29 -0
  155. package/dist/components/Popover/Popover.d.ts.map +1 -1
  156. package/dist/components/Popover/Popover.js +36 -0
  157. package/dist/components/Popover/Popover.js.map +1 -1
  158. package/dist/components/Popover/components/PopoverBody.d.ts.map +1 -1
  159. package/dist/components/Popover/components/PopoverBody.js +5 -2
  160. package/dist/components/Popover/components/PopoverBody.js.map +1 -1
  161. package/dist/components/Popover/components/PopoverContext.d.ts +1 -0
  162. package/dist/components/Popover/components/PopoverContext.d.ts.map +1 -1
  163. package/dist/components/Popover/components/PopoverContext.js.map +1 -1
  164. package/dist/components/Popover/components/PopoverTrigger.d.ts.map +1 -1
  165. package/dist/components/Popover/components/PopoverTrigger.js +2 -2
  166. package/dist/components/Popover/components/PopoverTrigger.js.map +1 -1
  167. package/dist/components/ProgressBar/ProgressBar.d.ts +16 -1
  168. package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -1
  169. package/dist/components/ProgressBar/ProgressBar.js +19 -3
  170. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  171. package/dist/components/RadioButton/RadioButton.d.ts +26 -0
  172. package/dist/components/RadioButton/RadioButton.d.ts.map +1 -1
  173. package/dist/components/RadioButton/RadioButton.js +35 -1
  174. package/dist/components/RadioButton/RadioButton.js.map +1 -1
  175. package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts +26 -0
  176. package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -1
  177. package/dist/components/RadioButtonGroup/RadioButtonGroup.js +33 -0
  178. package/dist/components/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  179. package/dist/components/SearchInput/SearchInput.d.ts +10 -0
  180. package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
  181. package/dist/components/SearchInput/SearchInput.js +12 -1
  182. package/dist/components/SearchInput/SearchInput.js.map +1 -1
  183. package/dist/components/Select/Select.d.ts +10 -2
  184. package/dist/components/Select/Select.d.ts.map +1 -1
  185. package/dist/components/Select/Select.js +63 -18
  186. package/dist/components/Select/Select.js.map +1 -1
  187. package/dist/components/Select/SelectDropdown.d.ts +14 -2
  188. package/dist/components/Select/SelectDropdown.d.ts.map +1 -1
  189. package/dist/components/Select/SelectDropdown.js +20 -4
  190. package/dist/components/Select/SelectDropdown.js.map +1 -1
  191. package/dist/components/Select/SelectTrigger.d.ts +10 -3
  192. package/dist/components/Select/SelectTrigger.d.ts.map +1 -1
  193. package/dist/components/Select/SelectTrigger.js +12 -3
  194. package/dist/components/Select/SelectTrigger.js.map +1 -1
  195. package/dist/components/Select/useSelectKeyboard.d.ts +15 -1
  196. package/dist/components/Select/useSelectKeyboard.d.ts.map +1 -1
  197. package/dist/components/Select/useSelectKeyboard.js +73 -65
  198. package/dist/components/Select/useSelectKeyboard.js.map +1 -1
  199. package/dist/components/Separator/Separator.d.ts +10 -0
  200. package/dist/components/Separator/Separator.d.ts.map +1 -1
  201. package/dist/components/Separator/Separator.js +10 -0
  202. package/dist/components/Separator/Separator.js.map +1 -1
  203. package/dist/components/Sheet/Sheet.d.ts +25 -5
  204. package/dist/components/Sheet/Sheet.d.ts.map +1 -1
  205. package/dist/components/Sheet/Sheet.js +24 -6
  206. package/dist/components/Sheet/Sheet.js.map +1 -1
  207. package/dist/components/Sheet/components/SheetContext.d.ts +10 -0
  208. package/dist/components/Sheet/components/SheetContext.d.ts.map +1 -1
  209. package/dist/components/Sheet/components/SheetContext.js.map +1 -1
  210. package/dist/components/Sheet/components/SheetFooter.js +1 -1
  211. package/dist/components/Sheet/components/SheetFooter.js.map +1 -1
  212. package/dist/components/Sheet/components/SheetHeader.d.ts.map +1 -1
  213. package/dist/components/Sheet/components/SheetHeader.js +11 -2
  214. package/dist/components/Sheet/components/SheetHeader.js.map +1 -1
  215. package/dist/components/Sparkline/Sparkline.d.ts +21 -2
  216. package/dist/components/Sparkline/Sparkline.d.ts.map +1 -1
  217. package/dist/components/Sparkline/Sparkline.js +16 -3
  218. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  219. package/dist/components/Spinner/Spinner.d.ts +27 -2
  220. package/dist/components/Spinner/Spinner.d.ts.map +1 -1
  221. package/dist/components/Spinner/Spinner.js +28 -3
  222. package/dist/components/Spinner/Spinner.js.map +1 -1
  223. package/dist/components/Switch/Switch.d.ts +18 -0
  224. package/dist/components/Switch/Switch.d.ts.map +1 -1
  225. package/dist/components/Switch/Switch.js +19 -1
  226. package/dist/components/Switch/Switch.js.map +1 -1
  227. package/dist/components/Tabs/Tabs.d.ts +8 -2
  228. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  229. package/dist/components/Tabs/Tabs.js +6 -0
  230. package/dist/components/Tabs/Tabs.js.map +1 -1
  231. package/dist/components/Tabs/components/TabsList.d.ts +1 -1
  232. package/dist/components/Tabs/components/TabsList.d.ts.map +1 -1
  233. package/dist/components/Tabs/components/TabsList.js +5 -4
  234. package/dist/components/Tabs/components/TabsList.js.map +1 -1
  235. package/dist/components/Tabs/components/TabsPanels.d.ts +1 -1
  236. package/dist/components/Tabs/components/TabsPanels.d.ts.map +1 -1
  237. package/dist/components/Tabs/components/TabsPanels.js +5 -3
  238. package/dist/components/Tabs/components/TabsPanels.js.map +1 -1
  239. package/dist/components/Tabs/components/TabsTrigger.d.ts.map +1 -1
  240. package/dist/components/Tabs/components/TabsTrigger.js +22 -6
  241. package/dist/components/Tabs/components/TabsTrigger.js.map +1 -1
  242. package/dist/components/TagChip/TagChip.d.ts +16 -13
  243. package/dist/components/TagChip/TagChip.d.ts.map +1 -1
  244. package/dist/components/TagChip/TagChip.js +18 -3
  245. package/dist/components/TagChip/TagChip.js.map +1 -1
  246. package/dist/components/TagInput/TagInput.d.ts +12 -9
  247. package/dist/components/TagInput/TagInput.d.ts.map +1 -1
  248. package/dist/components/TagInput/TagInput.js +16 -4
  249. package/dist/components/TagInput/TagInput.js.map +1 -1
  250. package/dist/components/Text/Text.d.ts +9 -0
  251. package/dist/components/Text/Text.d.ts.map +1 -1
  252. package/dist/components/Text/Text.js +9 -0
  253. package/dist/components/Text/Text.js.map +1 -1
  254. package/dist/components/TextInline/TextInline.d.ts +15 -4
  255. package/dist/components/TextInline/TextInline.d.ts.map +1 -1
  256. package/dist/components/TextInline/TextInline.js +11 -0
  257. package/dist/components/TextInline/TextInline.js.map +1 -1
  258. package/dist/components/Textarea/Textarea.d.ts +12 -0
  259. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  260. package/dist/components/Textarea/Textarea.js +13 -1
  261. package/dist/components/Textarea/Textarea.js.map +1 -1
  262. package/dist/components/TimePicker/TimeColumn.d.ts +10 -1
  263. package/dist/components/TimePicker/TimeColumn.d.ts.map +1 -1
  264. package/dist/components/TimePicker/TimeColumn.js +8 -1
  265. package/dist/components/TimePicker/TimeColumn.js.map +1 -1
  266. package/dist/components/TimePicker/TimePicker.d.ts +34 -2
  267. package/dist/components/TimePicker/TimePicker.d.ts.map +1 -1
  268. package/dist/components/TimePicker/TimePicker.js +118 -15
  269. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  270. package/dist/components/TimePicker/TimeSegments.d.ts +50 -0
  271. package/dist/components/TimePicker/TimeSegments.d.ts.map +1 -0
  272. package/dist/components/TimePicker/TimeSegments.js +93 -0
  273. package/dist/components/TimePicker/TimeSegments.js.map +1 -0
  274. package/dist/components/TimePicker/timepicker.hooks.d.ts +0 -4
  275. package/dist/components/TimePicker/timepicker.hooks.d.ts.map +1 -1
  276. package/dist/components/TimePicker/timepicker.hooks.js +1 -23
  277. package/dist/components/TimePicker/timepicker.hooks.js.map +1 -1
  278. package/dist/components/TimePicker/timepicker.types.d.ts +14 -15
  279. package/dist/components/TimePicker/timepicker.types.d.ts.map +1 -1
  280. package/dist/components/TimePicker/timepicker.types.js +4 -3
  281. package/dist/components/TimePicker/timepicker.types.js.map +1 -1
  282. package/dist/components/Toast/Toast.d.ts +27 -0
  283. package/dist/components/Toast/Toast.d.ts.map +1 -1
  284. package/dist/components/Toast/Toast.js +28 -1
  285. package/dist/components/Toast/Toast.js.map +1 -1
  286. package/dist/components/Toggle/Toggle.d.ts +31 -12
  287. package/dist/components/Toggle/Toggle.d.ts.map +1 -1
  288. package/dist/components/Toggle/Toggle.js +19 -31
  289. package/dist/components/Toggle/Toggle.js.map +1 -1
  290. package/dist/components/Toggle/index.d.ts +1 -1
  291. package/dist/components/Toggle/index.d.ts.map +1 -1
  292. package/dist/components/Toggle/index.js +1 -1
  293. package/dist/components/Toggle/index.js.map +1 -1
  294. package/dist/components/ToggleGroup/ToggleGroup.d.ts +17 -0
  295. package/dist/components/ToggleGroup/ToggleGroup.d.ts.map +1 -1
  296. package/dist/components/ToggleGroup/ToggleGroup.js +17 -0
  297. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  298. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
  299. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts.map +1 -1
  300. package/dist/components/ToggleGroup/ToggleGroupItem.js +7 -6
  301. package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  302. package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts +4 -3
  303. package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts.map +1 -1
  304. package/dist/components/ToggleGroup/ToggleGroupMultiple.js +2 -2
  305. package/dist/components/ToggleGroup/ToggleGroupMultiple.js.map +1 -1
  306. package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts +4 -3
  307. package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts.map +1 -1
  308. package/dist/components/ToggleGroup/ToggleGroupSingle.js +2 -2
  309. package/dist/components/ToggleGroup/ToggleGroupSingle.js.map +1 -1
  310. package/dist/components/ToggleGroup/toggleGroup.types.d.ts +12 -3
  311. package/dist/components/ToggleGroup/toggleGroup.types.d.ts.map +1 -1
  312. package/dist/components/Tooltip/Tooltip.d.ts +6 -0
  313. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  314. package/dist/components/Tooltip/Tooltip.js +6 -0
  315. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  316. package/dist/date-time/index.d.ts +2 -0
  317. package/dist/date-time/index.d.ts.map +1 -1
  318. package/dist/date-time/index.js +9 -1
  319. package/dist/date-time/index.js.map +1 -1
  320. package/dist/date-time/iso.d.ts +261 -0
  321. package/dist/date-time/iso.d.ts.map +1 -0
  322. package/dist/date-time/iso.js +358 -0
  323. package/dist/date-time/iso.js.map +1 -0
  324. package/dist/date-time/now.d.ts +7 -6
  325. package/dist/date-time/now.d.ts.map +1 -1
  326. package/dist/date-time/now.js +3 -3
  327. package/dist/date-time/now.js.map +1 -1
  328. package/dist/internal/PickerField.d.ts +45 -0
  329. package/dist/internal/PickerField.d.ts.map +1 -0
  330. package/dist/internal/PickerField.js +24 -0
  331. package/dist/internal/PickerField.js.map +1 -0
  332. package/dist/internal/SegmentedField.d.ts +98 -0
  333. package/dist/internal/SegmentedField.d.ts.map +1 -0
  334. package/dist/internal/SegmentedField.js +315 -0
  335. package/dist/internal/SegmentedField.js.map +1 -0
  336. package/dist/internal/index.d.ts +2 -0
  337. package/dist/internal/index.d.ts.map +1 -1
  338. package/dist/internal/index.js +2 -0
  339. package/dist/internal/index.js.map +1 -1
  340. package/dist/theme/index.d.ts +4 -3
  341. package/dist/theme/index.d.ts.map +1 -1
  342. package/dist/theme/index.js +3 -2
  343. package/dist/theme/index.js.map +1 -1
  344. package/dist/theme/schema.d.ts +49 -33
  345. package/dist/theme/schema.d.ts.map +1 -1
  346. package/dist/theme/schema.js +30 -21
  347. package/dist/theme/schema.js.map +1 -1
  348. package/package.json +11 -59
  349. package/src/components/Badge/Badge.tsx +87 -49
  350. package/src/components/Badge/index.ts +10 -1
  351. package/src/components/BarChart/BarChart.tsx +37 -30
  352. package/src/components/Button/Button.tsx +129 -106
  353. package/src/components/Button/index.ts +10 -1
  354. package/src/components/Calendar/Calendar.tsx +104 -401
  355. package/src/components/Calendar/CalendarView.tsx +454 -0
  356. package/src/components/Calendar/calendar.types.ts +104 -29
  357. package/src/components/Calendar/index.ts +16 -17
  358. package/src/components/Card/Card.tsx +15 -2
  359. package/src/components/Checkbox/Checkbox.tsx +22 -2
  360. package/src/components/CheckboxGroup/CheckboxGroup.tsx +22 -0
  361. package/src/components/Code/Editor/Editor.tsx +2 -2
  362. package/src/components/Code/Editor/themes.ts +50 -32
  363. package/src/components/Code/ValidationStatus/ValidationStatus.tsx +6 -3
  364. package/src/components/DatePicker/DatePicker.tsx +369 -42
  365. package/src/components/DatePicker/DateSegments.tsx +125 -0
  366. package/src/components/DatePicker/datepicker.types.ts +58 -39
  367. package/src/components/DatePicker/index.ts +11 -3
  368. package/src/components/DateRangePicker/DateRangePicker.tsx +38 -24
  369. package/src/components/DateRangePicker/daterangepicker.types.ts +29 -23
  370. package/src/components/DateRangePicker/index.ts +9 -1
  371. package/src/components/DateTimePicker/DateTimePicker.tsx +189 -88
  372. package/src/components/DateTimePicker/DateTimeSegments.tsx +113 -0
  373. package/src/components/DateTimePicker/datetimepicker.types.ts +29 -19
  374. package/src/components/DateTimePicker/index.ts +9 -1
  375. package/src/components/DateTimeRangePicker/DateTimeRangePicker.tsx +251 -126
  376. package/src/components/DateTimeRangePicker/datetimerangepicker.types.ts +31 -20
  377. package/src/components/DateTimeRangePicker/index.ts +9 -0
  378. package/src/components/Field/Field.tsx +25 -26
  379. package/src/components/FormField/FormField.tsx +15 -0
  380. package/src/components/HoverCard/HoverCard.tsx +6 -0
  381. package/src/components/Input/Input.tsx +19 -4
  382. package/src/components/LineChart/LineChart.tsx +164 -141
  383. package/src/components/Markdown/Markdown.tsx +21 -3
  384. package/src/components/Message/Message.tsx +83 -17
  385. package/src/components/Message/index.ts +1 -1
  386. package/src/components/Modal/Modal.tsx +157 -86
  387. package/src/components/Modal/components/ModalContext.tsx +14 -0
  388. package/src/components/Modal/components/ModalHeader.tsx +15 -3
  389. package/src/components/Popover/Popover.tsx +36 -0
  390. package/src/components/Popover/components/PopoverBody.tsx +6 -1
  391. package/src/components/Popover/components/PopoverContext.tsx +1 -0
  392. package/src/components/Popover/components/PopoverTrigger.tsx +2 -1
  393. package/src/components/ProgressBar/ProgressBar.tsx +46 -28
  394. package/src/components/RadioButton/RadioButton.tsx +34 -3
  395. package/src/components/RadioButtonGroup/RadioButtonGroup.tsx +32 -0
  396. package/src/components/SearchInput/SearchInput.tsx +13 -2
  397. package/src/components/Select/Select.tsx +75 -19
  398. package/src/components/Select/SelectDropdown.tsx +45 -12
  399. package/src/components/Select/SelectTrigger.tsx +31 -8
  400. package/src/components/Select/useSelectKeyboard.ts +20 -10
  401. package/src/components/Separator/Separator.tsx +10 -0
  402. package/src/components/Sheet/Sheet.tsx +114 -83
  403. package/src/components/Sheet/components/SheetContext.tsx +10 -0
  404. package/src/components/Sheet/components/SheetFooter.tsx +1 -1
  405. package/src/components/Sheet/components/SheetHeader.tsx +18 -3
  406. package/src/components/Sparkline/Sparkline.tsx +40 -36
  407. package/src/components/Spinner/Spinner.tsx +28 -3
  408. package/src/components/Switch/Switch.tsx +27 -4
  409. package/src/components/Tabs/Tabs.tsx +6 -0
  410. package/src/components/Tabs/components/TabsList.tsx +5 -3
  411. package/src/components/Tabs/components/TabsPanels.tsx +5 -3
  412. package/src/components/Tabs/components/TabsTrigger.tsx +22 -5
  413. package/src/components/TagChip/TagChip.tsx +27 -18
  414. package/src/components/TagInput/TagInput.tsx +16 -11
  415. package/src/components/Text/Text.tsx +9 -0
  416. package/src/components/TextInline/TextInline.tsx +11 -0
  417. package/src/components/Textarea/Textarea.tsx +13 -1
  418. package/src/components/TimePicker/TimeColumn.tsx +24 -1
  419. package/src/components/TimePicker/TimePicker.tsx +157 -51
  420. package/src/components/TimePicker/TimeSegments.tsx +131 -0
  421. package/src/components/TimePicker/timepicker.hooks.ts +1 -24
  422. package/src/components/TimePicker/timepicker.types.ts +14 -16
  423. package/src/components/Toast/Toast.tsx +28 -1
  424. package/src/components/Toggle/Toggle.tsx +34 -32
  425. package/src/components/Toggle/index.ts +1 -1
  426. package/src/components/ToggleGroup/ToggleGroup.tsx +17 -0
  427. package/src/components/ToggleGroup/ToggleGroupItem.tsx +13 -8
  428. package/src/components/ToggleGroup/ToggleGroupMultiple.tsx +3 -1
  429. package/src/components/ToggleGroup/ToggleGroupSingle.tsx +3 -1
  430. package/src/components/ToggleGroup/toggleGroup.types.ts +12 -3
  431. package/src/components/Tooltip/Tooltip.tsx +6 -0
  432. package/src/date-time/index.ts +61 -1
  433. package/src/date-time/iso.ts +511 -0
  434. package/src/date-time/now.ts +10 -9
  435. package/src/internal/PickerField.tsx +90 -0
  436. package/src/internal/SegmentedField.tsx +445 -0
  437. package/src/internal/index.ts +2 -0
  438. package/src/theme/index.ts +11 -9
  439. package/src/theme/recipes/badge.css +140 -0
  440. package/src/theme/recipes/button.css +167 -0
  441. package/src/theme/recipes/card.css +26 -0
  442. package/src/theme/recipes/checkbox.css +44 -0
  443. package/src/theme/recipes/field.css +14 -0
  444. package/src/theme/recipes/index.css +28 -0
  445. package/src/theme/recipes/input.css +29 -0
  446. package/src/theme/recipes/message.css +47 -0
  447. package/src/theme/recipes/modal.css +31 -0
  448. package/src/theme/recipes/radio-button.css +42 -0
  449. package/src/theme/recipes/search-input.css +16 -0
  450. package/src/theme/recipes/select.css +105 -0
  451. package/src/theme/recipes/sheet.css +34 -0
  452. package/src/theme/recipes/spinner.css +17 -0
  453. package/src/theme/recipes/switch.css +39 -0
  454. package/src/theme/recipes/tabs.css +41 -0
  455. package/src/theme/recipes/tag-chip.css +27 -0
  456. package/src/theme/recipes/textarea.css +20 -0
  457. package/src/theme/recipes/toggle.css +92 -0
  458. package/src/theme/schema.ts +59 -58
  459. package/src/theme/tokens.css +824 -0
  460. package/dist/components/Avatar/Avatar.d.ts +0 -6
  461. package/dist/components/Avatar/Avatar.d.ts.map +0 -1
  462. package/dist/components/Avatar/Avatar.js +0 -11
  463. package/dist/components/Avatar/Avatar.js.map +0 -1
  464. package/dist/components/Avatar/index.d.ts +0 -2
  465. package/dist/components/Avatar/index.d.ts.map +0 -1
  466. package/dist/components/Avatar/index.js +0 -2
  467. package/dist/components/Avatar/index.js.map +0 -1
  468. package/dist/components/Breadcrumb/Breadcrumb.d.ts +0 -12
  469. package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +0 -1
  470. package/dist/components/Breadcrumb/Breadcrumb.js +0 -19
  471. package/dist/components/Breadcrumb/Breadcrumb.js.map +0 -1
  472. package/dist/components/Breadcrumb/index.d.ts +0 -2
  473. package/dist/components/Breadcrumb/index.d.ts.map +0 -1
  474. package/dist/components/Breadcrumb/index.js +0 -2
  475. package/dist/components/Breadcrumb/index.js.map +0 -1
  476. package/dist/components/ColorDot/ColorDot.d.ts +0 -13
  477. package/dist/components/ColorDot/ColorDot.d.ts.map +0 -1
  478. package/dist/components/ColorDot/ColorDot.js +0 -34
  479. package/dist/components/ColorDot/ColorDot.js.map +0 -1
  480. package/dist/components/ColorDot/index.d.ts +0 -2
  481. package/dist/components/ColorDot/index.d.ts.map +0 -1
  482. package/dist/components/ColorDot/index.js +0 -2
  483. package/dist/components/ColorDot/index.js.map +0 -1
  484. package/dist/components/EmptyState/EmptyState.d.ts +0 -15
  485. package/dist/components/EmptyState/EmptyState.d.ts.map +0 -1
  486. package/dist/components/EmptyState/EmptyState.js +0 -7
  487. package/dist/components/EmptyState/EmptyState.js.map +0 -1
  488. package/dist/components/EmptyState/index.d.ts +0 -2
  489. package/dist/components/EmptyState/index.d.ts.map +0 -1
  490. package/dist/components/EmptyState/index.js +0 -2
  491. package/dist/components/EmptyState/index.js.map +0 -1
  492. package/dist/components/HeatMap/HeatMapCalendar.d.ts +0 -11
  493. package/dist/components/HeatMap/HeatMapCalendar.d.ts.map +0 -1
  494. package/dist/components/HeatMap/HeatMapCalendar.js +0 -68
  495. package/dist/components/HeatMap/HeatMapCalendar.js.map +0 -1
  496. package/dist/components/HeatMap/HeatMapMatrix.d.ts +0 -12
  497. package/dist/components/HeatMap/HeatMapMatrix.d.ts.map +0 -1
  498. package/dist/components/HeatMap/HeatMapMatrix.js +0 -35
  499. package/dist/components/HeatMap/HeatMapMatrix.js.map +0 -1
  500. package/dist/components/HeatMap/heat-map.utils.d.ts +0 -10
  501. package/dist/components/HeatMap/heat-map.utils.d.ts.map +0 -1
  502. package/dist/components/HeatMap/heat-map.utils.js +0 -10
  503. package/dist/components/HeatMap/heat-map.utils.js.map +0 -1
  504. package/dist/components/HeatMap/index.d.ts +0 -4
  505. package/dist/components/HeatMap/index.d.ts.map +0 -1
  506. package/dist/components/HeatMap/index.js +0 -3
  507. package/dist/components/HeatMap/index.js.map +0 -1
  508. package/dist/components/MetricList/MetricList.d.ts +0 -9
  509. package/dist/components/MetricList/MetricList.d.ts.map +0 -1
  510. package/dist/components/MetricList/MetricList.js +0 -6
  511. package/dist/components/MetricList/MetricList.js.map +0 -1
  512. package/dist/components/MetricList/MetricRow.d.ts +0 -13
  513. package/dist/components/MetricList/MetricRow.d.ts.map +0 -1
  514. package/dist/components/MetricList/MetricRow.js +0 -13
  515. package/dist/components/MetricList/MetricRow.js.map +0 -1
  516. package/dist/components/MetricList/index.d.ts +0 -3
  517. package/dist/components/MetricList/index.d.ts.map +0 -1
  518. package/dist/components/MetricList/index.js +0 -3
  519. package/dist/components/MetricList/index.js.map +0 -1
  520. package/dist/components/NavBottom/NavBottom.d.ts +0 -15
  521. package/dist/components/NavBottom/NavBottom.d.ts.map +0 -1
  522. package/dist/components/NavBottom/NavBottom.js +0 -19
  523. package/dist/components/NavBottom/NavBottom.js.map +0 -1
  524. package/dist/components/NavBottom/index.d.ts +0 -3
  525. package/dist/components/NavBottom/index.d.ts.map +0 -1
  526. package/dist/components/NavBottom/index.js +0 -2
  527. package/dist/components/NavBottom/index.js.map +0 -1
  528. package/dist/components/NavSide/NavItem.d.ts +0 -9
  529. package/dist/components/NavSide/NavItem.d.ts.map +0 -1
  530. package/dist/components/NavSide/NavItem.js +0 -13
  531. package/dist/components/NavSide/NavItem.js.map +0 -1
  532. package/dist/components/NavSide/NavSide.d.ts +0 -15
  533. package/dist/components/NavSide/NavSide.d.ts.map +0 -1
  534. package/dist/components/NavSide/NavSide.js +0 -10
  535. package/dist/components/NavSide/NavSide.js.map +0 -1
  536. package/dist/components/NavSide/index.d.ts +0 -3
  537. package/dist/components/NavSide/index.d.ts.map +0 -1
  538. package/dist/components/NavSide/index.js +0 -2
  539. package/dist/components/NavSide/index.js.map +0 -1
  540. package/dist/components/NavSide/types.d.ts +0 -38
  541. package/dist/components/NavSide/types.d.ts.map +0 -1
  542. package/dist/components/NavSide/types.js +0 -2
  543. package/dist/components/NavSide/types.js.map +0 -1
  544. package/dist/components/Pagination/Pagination.d.ts +0 -35
  545. package/dist/components/Pagination/Pagination.d.ts.map +0 -1
  546. package/dist/components/Pagination/Pagination.js +0 -26
  547. package/dist/components/Pagination/Pagination.js.map +0 -1
  548. package/dist/components/Pagination/index.d.ts +0 -3
  549. package/dist/components/Pagination/index.d.ts.map +0 -1
  550. package/dist/components/Pagination/index.js +0 -2
  551. package/dist/components/Pagination/index.js.map +0 -1
  552. package/dist/components/Skeleton/Skeleton.d.ts +0 -3
  553. package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
  554. package/dist/components/Skeleton/Skeleton.js +0 -7
  555. package/dist/components/Skeleton/Skeleton.js.map +0 -1
  556. package/dist/components/Skeleton/index.d.ts +0 -2
  557. package/dist/components/Skeleton/index.d.ts.map +0 -1
  558. package/dist/components/Skeleton/index.js +0 -2
  559. package/dist/components/Skeleton/index.js.map +0 -1
  560. package/dist/components/StatsCard/StatsCard.d.ts +0 -17
  561. package/dist/components/StatsCard/StatsCard.d.ts.map +0 -1
  562. package/dist/components/StatsCard/StatsCard.js +0 -13
  563. package/dist/components/StatsCard/StatsCard.js.map +0 -1
  564. package/dist/components/StatsCard/index.d.ts +0 -2
  565. package/dist/components/StatsCard/index.d.ts.map +0 -1
  566. package/dist/components/StatsCard/index.js +0 -2
  567. package/dist/components/StatsCard/index.js.map +0 -1
  568. package/dist/styles.css +0 -2
  569. package/dist/theme.generated.css +0 -438
  570. package/src/components/Avatar/Avatar.tsx +0 -19
  571. package/src/components/Avatar/index.ts +0 -1
  572. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -47
  573. package/src/components/Breadcrumb/index.ts +0 -5
  574. package/src/components/ColorDot/ColorDot.tsx +0 -50
  575. package/src/components/ColorDot/index.ts +0 -1
  576. package/src/components/EmptyState/EmptyState.tsx +0 -29
  577. package/src/components/EmptyState/index.ts +0 -1
  578. package/src/components/HeatMap/HeatMapCalendar.tsx +0 -127
  579. package/src/components/HeatMap/HeatMapMatrix.tsx +0 -75
  580. package/src/components/HeatMap/heat-map.utils.ts +0 -15
  581. package/src/components/HeatMap/index.ts +0 -3
  582. package/src/components/MetricList/MetricList.tsx +0 -13
  583. package/src/components/MetricList/MetricRow.tsx +0 -30
  584. package/src/components/MetricList/index.ts +0 -2
  585. package/src/components/NavBottom/NavBottom.tsx +0 -53
  586. package/src/components/NavBottom/index.ts +0 -3
  587. package/src/components/NavSide/NavItem.tsx +0 -39
  588. package/src/components/NavSide/NavSide.tsx +0 -40
  589. package/src/components/NavSide/index.ts +0 -2
  590. package/src/components/NavSide/types.ts +0 -36
  591. package/src/components/Pagination/Pagination.tsx +0 -86
  592. package/src/components/Pagination/index.ts +0 -2
  593. package/src/components/Skeleton/Skeleton.tsx +0 -7
  594. package/src/components/Skeleton/index.ts +0 -1
  595. package/src/components/StatsCard/StatsCard.tsx +0 -40
  596. package/src/components/StatsCard/index.ts +0 -1
  597. package/src/styles/base.css +0 -41
  598. package/src/theme/palette.json +0 -100
  599. package/src/theme/palette.schema.json +0 -40
  600. package/src/theme/theme.json +0 -349
  601. package/src/theme/theme.schema.json +0 -876
  602. package/src/theme/typography.json +0 -7
  603. package/src/theme/typography.schema.json +0 -36
  604. package/tailwind.config.ts +0 -261
@@ -4,16 +4,32 @@ import { cva } from "class-variance-authority";
4
4
  import { forwardRef } from "react";
5
5
  import { type TabItem, useTabsContext } from "./TabsContext";
6
6
 
7
+ /**
8
+ * Geometry and behaviour only.
9
+ *
10
+ * Colour reads `--tabs-trigger-bg` / `--tabs-trigger-fg` component tokens
11
+ * (each with a `-hovered` state) whose values are decided by
12
+ * src/theme/recipes/tabs.css. That file is the mapping from `selected` to a
13
+ * semantic token — the layer that used to be the two branches of a `cva`
14
+ * `selected` variant here, compiled into class-name literals and unreachable
15
+ * from outside. Nothing in this file names a colour, which is the point: the
16
+ * semantics are now configurable without a release.
17
+ */
7
18
  const tabsTriggerVariants = cva(
8
- `inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md
9
- px-3 py-1.5 text-sm font-medium cursor-pointer transition-colors focus-visible:outline-hidden
10
- focus-visible:ring-2 focus-visible:ring-focus-ring
19
+ `tabs-trigger inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md
20
+ px-3 py-1.5 text-sm font-medium cursor-pointer transition-colors bg-(--tabs-trigger-bg)
21
+ text-(--tabs-trigger-fg) hover:bg-(--tabs-trigger-bg-hovered) hover:text-(--tabs-trigger-fg-hovered)
22
+ focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-(color:--tabs-trigger-ring)
11
23
  focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,
12
24
  {
13
25
  variants: {
26
+ // No longer carries colour — see the recipe file. Kept as a variant
27
+ // (rather than dropped) purely so `data-selected` and the exported
28
+ // `tabsTriggerVariants` shape stay symmetric with the `isSelected` prop
29
+ // callers already pass.
14
30
  selected: {
15
- true: "bg-bg-brand-pressed text-fg-on-brand-pressed",
16
- false: "text-fg-subtle hover:bg-bg-subtle-hovered hover:text-fg-normal",
31
+ true: "",
32
+ false: "",
17
33
  },
18
34
  },
19
35
  defaultVariants: {
@@ -53,6 +69,7 @@ export const TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(({ it
53
69
  tabIndex={isSelected ? 0 : -1}
54
70
  disabled={item.disabled}
55
71
  data-index={index}
72
+ data-selected={isSelected}
56
73
  className={cn(tabsTriggerVariants({ selected: isSelected }))}
57
74
  onClick={handleClick}
58
75
  >
@@ -1,46 +1,55 @@
1
1
  import { Badge } from "@sixthshift/design-system/badge";
2
2
  import { cn } from "@sixthshift/design-system/utils";
3
3
  import { X } from "lucide-react";
4
+ import * as React from "react";
4
5
 
5
- /**
6
- * One tag, rendered prettily. A `namespace:value` tag (`project:website`)
7
- * shows the namespace muted; a plain tag (`urgent`) renders as-is.
8
- *
9
- * Pure presentation. Entity-reference tags (`person:per_…`) are NOT rendered
10
- * here — the web `TagRef` intercepts those and resolves them to a name chip
11
- * (identity-rendering.md); TagChip never shows a raw id.
12
- *
13
- * Two disjoint modes: navigable (no `onRemove`; the caller wraps it in a link)
14
- * or removable (`onRemove` renders an × — used by `TagInput` and edit surfaces).
15
- */
16
6
  export type TagChipProps = {
17
7
  tag: string;
18
8
  /** When set, renders an × affordance. Omit for read-only / navigable chips. */
19
9
  onRemove?: () => void;
20
- /** `sm` (default) for rows; `default` for detail pages. */
21
- size?: "sm" | "default";
10
+ /** `sm` (default) for rows; `md` for detail pages. */
11
+ size?: "sm" | "md";
22
12
  className?: string;
23
13
  };
24
14
 
25
- export const TagChip = ({ tag, onRemove, size = "sm", className }: TagChipProps) => {
15
+ /**
16
+ * One tag, rendered prettily. A `namespace:value` tag (`project:website`)
17
+ * shows the namespace muted; a plain tag (`urgent`) renders as-is.
18
+ *
19
+ * Pure presentation. Entity-reference tags (`person:per_…`) are NOT rendered
20
+ * here — the consuming app is expected to intercept those and resolve them to
21
+ * a name chip; TagChip never shows a raw id.
22
+ *
23
+ * Two disjoint modes, chosen by whether `onRemove` is passed: navigable (no
24
+ * `onRemove`; the caller wraps it in a link) or removable (`onRemove` renders
25
+ * an × — used by `TagInput` and edit surfaces). Built on `Badge`
26
+ * (`variant="outline" intent="muted"`).
27
+ */
28
+ export const TagChip = React.forwardRef<HTMLSpanElement, TagChipProps>(({ tag, onRemove, size = "sm", className }, ref) => {
26
29
  const sep = tag.indexOf(":");
27
30
  const namespace = sep > 0 ? tag.slice(0, sep) : null;
28
31
  const value = sep > 0 ? tag.slice(sep + 1) : tag;
29
32
 
30
33
  return (
31
- <Badge variant="outline" intent="muted" className={cn("gap-1 font-normal", size === "sm" ? "px-1.5 py-0 text-[10px]" : "px-2 py-0.5 text-xs", className)}>
32
- {namespace && <span className="text-fg-subtle">{namespace}:</span>}
34
+ <Badge
35
+ ref={ref}
36
+ variant="outline"
37
+ intent="muted"
38
+ className={cn("tag-chip gap-1 font-normal", size === "sm" ? "px-1.5 py-0 text-[10px]" : "px-2 py-0.5 text-xs", className)}
39
+ >
40
+ {namespace && <span className="text-(--tag-chip-namespace-fg)">{namespace}:</span>}
33
41
  <span>{value}</span>
34
42
  {onRemove && (
35
43
  <button
36
44
  type="button"
37
45
  onClick={onRemove}
38
46
  aria-label={`Remove ${tag}`}
39
- className="-mr-0.5 ml-0.5 rounded-sm text-fg-subtle hover:text-fg-normal focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring"
47
+ className="focus-visible:ring-(color:--tag-chip-remove-ring) -mr-0.5 ml-0.5 rounded-sm text-(--tag-chip-remove-fg) hover:text-(--tag-chip-remove-fg-hovered) focus-visible:outline-none focus-visible:ring-2"
40
48
  >
41
49
  <X className="h-3 w-3" />
42
50
  </button>
43
51
  )}
44
52
  </Badge>
45
53
  );
46
- };
54
+ });
55
+ TagChip.displayName = "TagChip";
@@ -1,15 +1,7 @@
1
1
  import { TagChip } from "@sixthshift/design-system/tag-chip";
2
2
  import { cn } from "@sixthshift/design-system/utils";
3
- import { type KeyboardEvent, useState } from "react";
3
+ import { forwardRef, type KeyboardEvent, useState } from "react";
4
4
 
5
- /**
6
- * Token input for tags: existing tags render as removable chips, typing plus
7
- * Enter or comma commits a new one, Backspace on an empty field removes the
8
- * last. Duplicates are ignored. Controlled — the parent owns `value`.
9
- *
10
- * The chrome matches `Input` (same border/focus tokens) so it sits naturally
11
- * among other form fields.
12
- */
13
5
  export type TagInputProps = {
14
6
  value: string[];
15
7
  onChange: (tags: string[]) => void;
@@ -18,7 +10,18 @@ export type TagInputProps = {
18
10
  className?: string;
19
11
  };
20
12
 
21
- export const TagInput = ({ value, onChange, placeholder = "Add a tag…", id, className }: TagInputProps) => {
13
+ /**
14
+ * Token input for tags: existing tags render as removable `TagChip`s, typing
15
+ * plus Enter or comma commits a new one, Backspace on an empty field removes
16
+ * the last. Duplicates are ignored. Controlled only — there is no
17
+ * `defaultValue`, the parent always owns `value`.
18
+ *
19
+ * The chrome matches `Input` (same border/focus tokens) so it sits naturally
20
+ * among other form fields; the field has no visible label of its own, so
21
+ * give it an accessible name via a `<label htmlFor={id}>` (pass `id`) or
22
+ * `aria-label`.
23
+ */
24
+ export const TagInput = forwardRef<HTMLDivElement, TagInputProps>(({ value, onChange, placeholder = "Add a tag…", id, className }, ref) => {
22
25
  const [draft, setDraft] = useState("");
23
26
 
24
27
  const commit = () => {
@@ -38,6 +41,7 @@ export const TagInput = ({ value, onChange, placeholder = "Add a tag…", id, cl
38
41
 
39
42
  return (
40
43
  <div
44
+ ref={ref}
41
45
  className={cn(
42
46
  "flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-border-normal bg-bg-normal px-2 py-1.5 text-sm shadow-xs transition-colors focus-within:ring-2 focus-within:ring-focus-ring",
43
47
  className
@@ -57,4 +61,5 @@ export const TagInput = ({ value, onChange, placeholder = "Add a tag…", id, cl
57
61
  />
58
62
  </div>
59
63
  );
60
- };
64
+ });
65
+ TagInput.displayName = "TagInput";
@@ -22,6 +22,15 @@ export type TextProps = React.HTMLAttributes<HTMLElement> & {
22
22
  as?: TextElement;
23
23
  };
24
24
 
25
+ /**
26
+ * The polymorphic base every typography preset (`Heading`, `Body`,
27
+ * `Emphasis`, ...) is built on: renders as `as` (default `span`) and applies
28
+ * no styling of its own beyond `className`.
29
+ *
30
+ * Reach for a preset first — the typographic ramp (docs/visual-hierarchy.md)
31
+ * is what keeps text sizing and color consistent across the app. Use `Text`
32
+ * directly only for one-off text that doesn't fit an existing preset.
33
+ */
25
34
  const Text = React.forwardRef<HTMLElement, TextProps>(({ as: Comp = "span", className, ...props }, ref) => (
26
35
  <Comp
27
36
  // biome-ignore lint/suspicious/noExplicitAny: polymorphic ref requires any
@@ -27,6 +27,17 @@ const textInlineVariants = cva("inline-flex items-center", {
27
27
 
28
28
  export type TextInlineProps = React.HTMLAttributes<HTMLSpanElement> & VariantProps<typeof textInlineVariants>;
29
29
 
30
+ /**
31
+ * Lays out several inline fragments — typically `Text` nodes, but any inline
32
+ * content works — in a single flex row with a consistent gap and cross-axis
33
+ * alignment, so a label/value pair or a value/badge pair doesn't need one-off
34
+ * spacing classes at every call site.
35
+ *
36
+ * Renders a single `<span>`. `gap` (default `sm`) and `align` (default
37
+ * `baseline`) are the only two axes; there's no `as` polymorphism, and this
38
+ * is not a variant of `Text` — `TextInline` is about spacing *between*
39
+ * inline children, not about styling the text itself.
40
+ */
30
41
  const TextInline = React.forwardRef<HTMLSpanElement, TextInlineProps>(({ className, gap, align, ...props }, ref) => (
31
42
  <span ref={ref} className={cn(textInlineVariants({ gap, align }), className)} {...props} />
32
43
  ));
@@ -3,11 +3,23 @@ import * as React from "react";
3
3
 
4
4
  export type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;
5
5
 
6
+ /**
7
+ * Multi-line text input for longer free-form text.
8
+ *
9
+ * A thin styled wrapper around `<textarea>` — no custom props beyond
10
+ * `React.TextareaHTMLAttributes`, no auto-resize, and no maximum-length UI of
11
+ * its own. Height comes from a `min-h-[60px]` default plus whatever `rows`
12
+ * or `className` the caller passes; growing with content is the caller's
13
+ * responsibility. Controlled or uncontrolled exactly like a native textarea.
14
+ *
15
+ * Meant to be wrapped by `FormField` for label, description and validation
16
+ * wiring.
17
+ */
6
18
  const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, ...props }, ref) => {
7
19
  return (
8
20
  <textarea
9
21
  className={cn(
10
- "flex min-h-[60px] w-full rounded-md border border-border-normal bg-transparent px-3 py-2 text-sm shadow-xs placeholder:text-fg-subtle focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring disabled:cursor-not-allowed disabled:opacity-50",
22
+ "textarea border-(color:--textarea-border) focus-visible:ring-(color:--textarea-ring) flex min-h-[60px] w-full rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs placeholder:text-(--textarea-placeholder-fg) focus-visible:outline-hidden focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50",
11
23
  className
12
24
  )}
13
25
  ref={ref}
@@ -7,9 +7,25 @@ export type TimeColumnProps = {
7
7
  onSelect: (value: number) => void;
8
8
  formatValue?: (value: number) => string;
9
9
  disabled?: (value: number) => boolean;
10
+ /**
11
+ * Move DOM focus to the selected option on mount.
12
+ *
13
+ * Off by default: a column that grabs focus when it appears is wrong for a
14
+ * pointer user who clicked a trigger. `TimePicker` turns it on only when the
15
+ * popover was opened from the keyboard (`Alt+ArrowDown`), where the whole
16
+ * point of opening it was to pick an hour.
17
+ */
18
+ autoFocusSelected?: boolean;
10
19
  };
11
20
 
12
- export const TimeColumn = ({ values, selected, onSelect, formatValue = (v) => String(v).padStart(2, "0"), disabled }: TimeColumnProps) => {
21
+ export const TimeColumn = ({
22
+ values,
23
+ selected,
24
+ onSelect,
25
+ formatValue = (v) => String(v).padStart(2, "0"),
26
+ disabled,
27
+ autoFocusSelected = false,
28
+ }: TimeColumnProps) => {
13
29
  const containerRef = useRef<HTMLDivElement>(null);
14
30
  const selectedRef = useRef<HTMLButtonElement>(null);
15
31
 
@@ -25,6 +41,13 @@ export const TimeColumn = ({ values, selected, onSelect, formatValue = (v) => St
25
41
  }
26
42
  }, []);
27
43
 
44
+ // Seed focus once, when the caller asked for it. Keyed on the flag alone:
45
+ // `selected` changes as the user picks, and re-running then would drag focus
46
+ // back to the option they started from.
47
+ useEffect(() => {
48
+ if (autoFocusSelected) selectedRef.current?.focus();
49
+ }, [autoFocusSelected]);
50
+
28
51
  return (
29
52
  <div ref={containerRef} role="listbox" className="h-48 w-14 overflow-y-auto overscroll-contain rounded-lg border border-border-subtle bg-bg-subtle/50">
30
53
  {/* Top spacer for centering first items */}
@@ -1,15 +1,17 @@
1
1
  import { autoUpdate, FloatingPortal, flip, offset, shift, useClick, useDismiss, useFloating, useInteractions } from "@floating-ui/react";
2
2
  import { useControllableState } from "@sixthshift/design-system/hooks";
3
3
  import { cn } from "@sixthshift/design-system/utils";
4
- import { Clock, X } from "lucide-react";
5
- import type * as React from "react";
6
- import { useCallback, useId, useState } from "react";
4
+ import { Clock } from "lucide-react";
5
+ import * as React from "react";
6
+ import { useCallback, useId, useMemo, useState } from "react";
7
+ import { fromISOTime, fromISOTimeOrUndefined, type Temporal, toISOTimeOrUndefined } from "../../date-time";
8
+ import { PickerField } from "../../internal";
7
9
  import { Button } from "../Button";
8
10
  import { Separator } from "../Separator";
9
11
  import { PeriodSelector } from "./PeriodSelector";
10
12
  import { TimeColumn } from "./TimeColumn";
13
+ import { TimeSegments } from "./TimeSegments";
11
14
  import {
12
- formatTimeDisplay,
13
15
  generateHours,
14
16
  generateMinutes,
15
17
  generateSeconds,
@@ -25,7 +27,39 @@ import type { ParsedTime, TimePeriod, TimePickerProps, TimePresetOption } from "
25
27
 
26
28
  export type { TimePickerProps };
27
29
 
28
- export const TimePicker = (props: TimePickerProps) => {
30
+ /**
31
+ * A typeable time field and a popover of scrollable hour/minute(/second)
32
+ * columns, as one control. The value is an `ISOTime` string — `"09:30"` and
33
+ * `"09:30:00"` are both accepted as input, and `onChange` always emits the
34
+ * canonical `HH:MM:SS` form regardless of `format`. There is no timezone
35
+ * conversion: the value is a plain time, not an instant.
36
+ *
37
+ * The field is spinbutton segments rather than a text box, and is built to be
38
+ * typed straight through: `0230p` is half past two in the afternoon, `345` in a
39
+ * 24-hour field is 03:45 (there is no 30th hour, so the digit rolls into the
40
+ * minute). `a`/`p` set the meridiem, arrows step any segment, `Alt+ArrowDown`
41
+ * opens the columns and moves focus to the hour, and `Enter` is Apply. See
42
+ * `SegmentedField` for the full keyboard model. `minuteStep` sets the column's
43
+ * increment and deliberately does not constrain typing.
44
+ *
45
+ * Typing and picking move one value: the segments show the draft while the
46
+ * popover is open and the committed value while it is closed. A partial time is
47
+ * never reported — clearing a segment reports `undefined`.
48
+ *
49
+ * Supports both controlled (`value`/`onChange`) and uncontrolled
50
+ * (`defaultValue`) use. Opening the popover seeds the draft columns from the
51
+ * committed value (or the current time, if none); scrolling the columns only
52
+ * updates the draft, and the footer's Apply commits it and closes, Cancel
53
+ * discards it. A "Now" button resets the draft to the current time without
54
+ * closing the popover.
55
+ *
56
+ * `format` (`"HH:mm" | "HH:mm:ss"`) shows or hides the seconds column;
57
+ * `clockFormat` (`"12h" | "24h"`) shows or hides the AM/PM selector.
58
+ * `minTime`/`maxTime` bound the selectable time inclusively — Apply is a
59
+ * no-op while the draft falls outside them. `minuteStep` controls the minute
60
+ * column's increment. `presets` renders a sidebar of quick picks.
61
+ */
62
+ export const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>((props, ref) => {
29
63
  const {
30
64
  value,
31
65
  defaultValue,
@@ -36,7 +70,6 @@ export const TimePicker = (props: TimePickerProps) => {
36
70
  minTime,
37
71
  maxTime,
38
72
  presets,
39
- placeholder = "Select time",
40
73
  name,
41
74
  isDisabled = false,
42
75
  isInvalid = false,
@@ -46,11 +79,27 @@ export const TimePicker = (props: TimePickerProps) => {
46
79
  // Open state
47
80
  const [open, setOpen] = useState(false);
48
81
 
82
+ // ---------------------------------------------------------------------------
83
+ // The ISO boundary.
84
+ //
85
+ // Props arrive as ISO time strings and onChange emits the canonical
86
+ // `HH:MM:SS` form; everything below works in Temporal.PlainTime as before.
87
+ // Each conversion is memoised on its source string, so the Temporal values
88
+ // handed to the hooks below stay referentially stable across renders.
89
+ // ---------------------------------------------------------------------------
90
+
91
+ const temporalValue = useMemo(() => fromISOTimeOrUndefined(value), [value]);
92
+ const temporalDefaultValue = useMemo(() => fromISOTimeOrUndefined(defaultValue), [defaultValue]);
93
+ const temporalMinTime = useMemo(() => fromISOTimeOrUndefined(minTime), [minTime]);
94
+ const temporalMaxTime = useMemo(() => fromISOTimeOrUndefined(maxTime), [maxTime]);
95
+
96
+ const handleChange = useCallback((next: Temporal.PlainTime | undefined) => onChange?.(toISOTimeOrUndefined(next)), [onChange]);
97
+
49
98
  // Controllable value state (external/committed value)
50
- const [committedValue, setCommittedValue] = useControllableState({
51
- value,
52
- defaultValue,
53
- onChange,
99
+ const [committedValue, setCommittedValue] = useControllableState<Temporal.PlainTime | undefined>({
100
+ value: temporalValue,
101
+ defaultValue: temporalDefaultValue,
102
+ onChange: handleChange,
54
103
  });
55
104
 
56
105
  // Parse committed value
@@ -67,10 +116,20 @@ export const TimePicker = (props: TimePickerProps) => {
67
116
  return "AM";
68
117
  });
69
118
 
119
+ // Whether the hour column should take focus when the popover mounts — true
120
+ // only when it was opened from the keyboard. See `openWithColumnFocus`.
121
+ const [autoFocusHour, setAutoFocusHour] = useState(false);
122
+ // The draft is three numbers, so it cannot represent "no time". This does:
123
+ // clearing a segment while the popover is open has to stick rather than being
124
+ // instantly resynced back from the draft.
125
+ const [draftCleared, setDraftCleared] = useState(false);
126
+
70
127
  // Sync draft when popup opens
71
128
  const handleOpenChange = useCallback(
72
129
  (newOpen: boolean) => {
130
+ if (!newOpen) setAutoFocusHour(false);
73
131
  if (newOpen) {
132
+ setDraftCleared(false);
74
133
  if (committedValue) {
75
134
  const parsed = temporalToParsed(committedValue);
76
135
  setDraftHour(clockFormat === "12h" ? to12Hour(parsed.hour).hour12 : parsed.hour);
@@ -104,17 +163,22 @@ export const TimePicker = (props: TimePickerProps) => {
104
163
 
105
164
  // Apply changes
106
165
  const handleApply = useCallback(() => {
166
+ if (draftCleared) {
167
+ setCommittedValue(undefined);
168
+ setOpen(false);
169
+ return;
170
+ }
107
171
  const parsed = getDraftTime();
108
172
  const temporalTime = parsedToTemporal(parsed);
109
173
 
110
174
  // Check if disabled
111
- if (isTimeDisabled(temporalTime, minTime, maxTime)) {
175
+ if (isTimeDisabled(temporalTime, temporalMinTime, temporalMaxTime)) {
112
176
  return;
113
177
  }
114
178
 
115
179
  setCommittedValue(temporalTime);
116
180
  setOpen(false);
117
- }, [getDraftTime, minTime, maxTime, setCommittedValue]);
181
+ }, [draftCleared, getDraftTime, temporalMinTime, temporalMaxTime, setCommittedValue]);
118
182
 
119
183
  // Cancel changes
120
184
  const handleCancel = useCallback(() => {
@@ -144,7 +208,7 @@ export const TimePicker = (props: TimePickerProps) => {
144
208
  // Preset selection
145
209
  const handlePresetClick = useCallback(
146
210
  (preset: TimePresetOption) => {
147
- const parsed = temporalToParsed(preset.value);
211
+ const parsed = temporalToParsed(fromISOTime(preset.value));
148
212
  setDraftHour(clockFormat === "12h" ? to12Hour(parsed.hour).hour12 : parsed.hour);
149
213
  setDraftMinute(parsed.minute);
150
214
  setDraftSecond(parsed.second);
@@ -157,7 +221,7 @@ export const TimePicker = (props: TimePickerProps) => {
157
221
  const isPresetActive = useCallback(
158
222
  (preset: TimePresetOption): boolean => {
159
223
  const draftTime = getDraftTime();
160
- const presetParsed = temporalToParsed(preset.value);
224
+ const presetParsed = temporalToParsed(fromISOTime(preset.value));
161
225
 
162
226
  return (
163
227
  draftTime.hour === presetParsed.hour && draftTime.minute === presetParsed.minute && (format === "HH:mm" || draftTime.second === presetParsed.second)
@@ -185,9 +249,55 @@ export const TimePicker = (props: TimePickerProps) => {
185
249
  const inputId = `timepicker-input-${id}`;
186
250
 
187
251
  // Display value
188
- const displayValue = committedValue ? formatTimeDisplay(committedValue, clockFormat, format) : "";
189
252
  const hasValue = Boolean(committedValue);
190
253
 
254
+ // ---------------------------------------------------------------------------
255
+ // The typeable field.
256
+ //
257
+ // One value, two ways to move it: the segments show the draft while the
258
+ // popover is open and the committed value while it is closed, so typing a time
259
+ // moves the columns and scrolling a column shows up in the segments. The
260
+ // commit contract stays single — open means Apply/Cancel owns it, closed means
261
+ // a complete time commits as soon as it is complete.
262
+ // ---------------------------------------------------------------------------
263
+
264
+ const draftTime = parsedToTemporal(getDraftTime());
265
+ const segmentValue = open ? (draftCleared ? undefined : draftTime) : committedValue;
266
+
267
+ // A typed time can fall outside `minTime`/`maxTime`, which the columns would
268
+ // refuse. The field says so rather than silently clamping. See DatePicker.
269
+ const outOfBounds = segmentValue !== undefined && isTimeDisabled(segmentValue, temporalMinTime, temporalMaxTime);
270
+
271
+ const handleSegmentsChange = useCallback(
272
+ (time: Temporal.PlainTime | undefined) => {
273
+ if (!open) {
274
+ setCommittedValue(time);
275
+ return;
276
+ }
277
+ if (!time) {
278
+ setDraftCleared(true);
279
+ return;
280
+ }
281
+ setDraftCleared(false);
282
+ setDraftHour(clockFormat === "12h" ? to12Hour(time.hour).hour12 : time.hour);
283
+ setDraftMinute(time.minute);
284
+ setDraftSecond(time.second);
285
+ setDraftPeriod(to12Hour(time.hour).period);
286
+ },
287
+ [clockFormat, open, setCommittedValue]
288
+ );
289
+
290
+ /** `Alt+ArrowDown` from a segment: open the columns *and* go there. */
291
+ const openWithColumnFocus = useCallback(() => {
292
+ setAutoFocusHour(true);
293
+ handleOpenChange(true);
294
+ }, [handleOpenChange]);
295
+
296
+ /** `Enter` in a segment commits the draft, matching the popover's Apply. */
297
+ const handleFieldSubmit = useCallback(() => {
298
+ if (open) handleApply();
299
+ }, [handleApply, open]);
300
+
191
301
  // Generate column values
192
302
  const hours = generateHours(clockFormat);
193
303
  const minutes = generateMinutes(minuteStep);
@@ -196,39 +306,33 @@ export const TimePicker = (props: TimePickerProps) => {
196
306
  return (
197
307
  <>
198
308
  {/* Trigger Input */}
199
- <div className="relative flex items-center">
200
- <Clock className="pointer-events-none absolute left-3 h-4 w-4 text-fg-subtle" />
201
- <input
202
- ref={refs.setReference as React.Ref<HTMLInputElement>}
203
- id={inputId}
204
- type="text"
205
- readOnly
206
- value={displayValue}
207
- placeholder={placeholder}
208
- disabled={isDisabled}
209
- role="combobox"
210
- aria-invalid={isInvalid}
211
- aria-haspopup="dialog"
212
- aria-expanded={open}
213
- aria-controls={open ? contentId : undefined}
214
- className={cn(
215
- `flex h-9 w-full cursor-pointer rounded-md border border-border-normal bg-transparent py-1 pl-9 text-sm shadow-xs transition-colors placeholder:text-fg-subtle focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring disabled:cursor-not-allowed disabled:opacity-50`,
216
- hasValue ? "pr-9" : "pr-3",
217
- isInvalid && "border-border-danger",
218
- className
219
- )}
220
- {...getReferenceProps()}
221
- />
222
- {hasValue && !isDisabled && (
223
- <button
224
- type="button"
225
- onClick={handleClear}
226
- className="absolute right-3 rounded-sm p-0.5 text-fg-subtle hover:bg-bg-subtle hover:text-fg-normal focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring"
227
- aria-label="Clear time"
228
- >
229
- <X className="h-3.5 w-3.5" />
230
- </button>
231
- )}
309
+ <div ref={ref} className="relative flex items-center">
310
+ <PickerField
311
+ ref={refs.setReference as React.Ref<HTMLDivElement>}
312
+ className={cn("w-full min-w-45", className)}
313
+ icon={<Clock className="h-4 w-4" />}
314
+ toggleLabel="Open time picker"
315
+ toggleProps={getReferenceProps()}
316
+ isOpen={open}
317
+ contentId={contentId}
318
+ isDisabled={isDisabled}
319
+ isInvalid={isInvalid || outOfBounds}
320
+ onClear={hasValue && !isDisabled ? handleClear : undefined}
321
+ clearLabel="Clear time"
322
+ >
323
+ <TimeSegments
324
+ className="h-full flex-1"
325
+ id={inputId}
326
+ value={segmentValue}
327
+ onChange={handleSegmentsChange}
328
+ format={format}
329
+ clockFormat={clockFormat}
330
+ isDisabled={isDisabled}
331
+ isInvalid={isInvalid || outOfBounds}
332
+ onOpenRequest={openWithColumnFocus}
333
+ onSubmit={handleFieldSubmit}
334
+ />
335
+ </PickerField>
232
336
 
233
337
  {/* Hidden input for form submission */}
234
338
  {name && committedValue && <input type="hidden" name={name} value={temporalTimeToISO(committedValue, format)} />}
@@ -241,7 +345,7 @@ export const TimePicker = (props: TimePickerProps) => {
241
345
  ref={refs.setFloating}
242
346
  id={contentId}
243
347
  role="dialog"
244
- aria-modal="true"
348
+ aria-label="Choose time"
245
349
  style={floatingStyles}
246
350
  className="z-popover rounded-xl border border-border-normal bg-bg-normal p-4 shadow-lg"
247
351
  {...getFloatingProps()}
@@ -285,6 +389,7 @@ export const TimePicker = (props: TimePickerProps) => {
285
389
  selected={draftHour}
286
390
  onSelect={setDraftHour}
287
391
  formatValue={clockFormat === "12h" ? (v) => String(v) : (v) => String(v).padStart(2, "0")}
392
+ autoFocusSelected={autoFocusHour}
288
393
  />
289
394
 
290
395
  {/* Minutes */}
@@ -308,7 +413,7 @@ export const TimePicker = (props: TimePickerProps) => {
308
413
  <Button type="button" variant="ghost" size="sm" onClick={handleCancel}>
309
414
  Cancel
310
415
  </Button>
311
- <Button type="button" variant="solid" size="sm" onClick={handleApply}>
416
+ <Button type="button" variant="solid" intent="brand" size="sm" onClick={handleApply}>
312
417
  Apply
313
418
  </Button>
314
419
  </div>
@@ -320,4 +425,5 @@ export const TimePicker = (props: TimePickerProps) => {
320
425
  )}
321
426
  </>
322
427
  );
323
- };
428
+ });
429
+ TimePicker.displayName = "TimePicker";