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