@bspk/ui 1.3.2 → 1.3.4

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 (751) hide show
  1. package/build.ts +41 -10
  2. package/dist/components/AvatarGroup/AvatarGroup.d.ts +1 -1
  3. package/dist/components/AvatarGroup/AvatarGroup.js +1 -1
  4. package/dist/components/Breadcrumb/Breadcrumb.d.ts +4 -23
  5. package/dist/components/Breadcrumb/Breadcrumb.js +3 -7
  6. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
  7. package/dist/components/Breadcrumb/BreadcumbDropdown.d.ts +27 -0
  8. package/dist/components/Breadcrumb/BreadcumbDropdown.js +68 -0
  9. package/dist/components/Breadcrumb/BreadcumbDropdown.js.map +1 -0
  10. package/dist/components/Button/Button.d.ts +5 -1
  11. package/dist/components/Button/Button.js +2 -2
  12. package/dist/components/Button/Button.js.map +1 -1
  13. package/dist/components/Button/button.css +5 -5
  14. package/dist/components/Button/button.css.js +5 -5
  15. package/dist/components/Calendar/Calendar.d.ts +33 -0
  16. package/dist/components/{CalendarPicker/CalendarPicker.js → Calendar/Calendar.js} +30 -34
  17. package/dist/components/Calendar/Calendar.js.map +1 -0
  18. package/dist/components/Calendar/CalendarExample.d.ts +4 -0
  19. package/dist/components/Calendar/CalendarExample.js +29 -0
  20. package/dist/components/Calendar/CalendarExample.js.map +1 -0
  21. package/dist/components/{CalendarPicker/calendar-picker.css → Calendar/calendar.css} +16 -16
  22. package/dist/components/{CalendarPicker/calendar-picker.css.js → Calendar/calendar.css.js} +16 -16
  23. package/dist/components/Calendar/index.d.ts +1 -0
  24. package/dist/components/Calendar/index.js +2 -0
  25. package/dist/components/Calendar/index.js.map +1 -0
  26. package/dist/components/Checkbox/Checkbox.d.ts +5 -3
  27. package/dist/components/Checkbox/Checkbox.js +2 -2
  28. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  29. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +6 -25
  30. package/dist/components/CheckboxGroup/CheckboxGroup.js +15 -5
  31. package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
  32. package/dist/components/CheckboxGroup/CheckboxGroupExample.js +3 -0
  33. package/dist/components/CheckboxGroup/CheckboxGroupExample.js.map +1 -1
  34. package/dist/components/CheckboxGroup/checkbox-group.css +7 -0
  35. package/dist/components/{DateField/date-field.css.js → CheckboxGroup/checkbox-group.css.js} +4 -5
  36. package/dist/components/CheckboxGroupField/CheckboxGroupField.d.ts +15 -0
  37. package/dist/components/CheckboxGroupField/CheckboxGroupField.js +17 -0
  38. package/dist/components/CheckboxGroupField/CheckboxGroupField.js.map +1 -0
  39. package/dist/components/CheckboxGroupField/index.d.ts +1 -0
  40. package/dist/components/CheckboxGroupField/index.js +2 -0
  41. package/dist/components/CheckboxGroupField/index.js.map +1 -0
  42. package/dist/components/{ChipUtility/ChipUtility.d.ts → Chip/Chip.d.ts} +6 -6
  43. package/dist/components/Chip/Chip.js +25 -0
  44. package/dist/components/Chip/Chip.js.map +1 -0
  45. package/dist/components/Chip/ChipExample.d.ts +4 -0
  46. package/dist/components/{ChipUtility/ChipUtilityExample.js → Chip/ChipExample.js} +2 -2
  47. package/dist/components/Chip/ChipExample.js.map +1 -0
  48. package/dist/components/{ChipUtility/chip-utility.css → Chip/chip.css} +10 -10
  49. package/dist/components/{ChipUtility/chip-utility.css.js → Chip/chip.css.js} +10 -10
  50. package/dist/components/Chip/index.d.ts +1 -0
  51. package/dist/components/Chip/index.js +2 -0
  52. package/dist/components/Chip/index.js.map +1 -0
  53. package/dist/components/ChipGroup/ChipGroup.d.ts +8 -7
  54. package/dist/components/ChipGroup/ChipGroup.js +5 -4
  55. package/dist/components/ChipGroup/ChipGroup.js.map +1 -1
  56. package/dist/components/ChipGroup/ChipGroupExample.js +4 -31
  57. package/dist/components/ChipGroup/ChipGroupExample.js.map +1 -1
  58. package/dist/components/DatePicker/DatePicker.d.ts +50 -0
  59. package/dist/components/DatePicker/DatePicker.js +133 -0
  60. package/dist/components/DatePicker/DatePicker.js.map +1 -0
  61. package/dist/components/DatePicker/DatePickerExample.d.ts +3 -0
  62. package/dist/components/DatePicker/DatePickerExample.js +10 -0
  63. package/dist/components/DatePicker/DatePickerExample.js.map +1 -0
  64. package/dist/components/{DateInput/date-input.css → DatePicker/date-picker.css} +2 -3
  65. package/dist/components/{DateInput/date-input.css.js → DatePicker/date-picker.css.js} +2 -3
  66. package/dist/components/DatePicker/index.d.ts +1 -0
  67. package/dist/components/DatePicker/index.js +2 -0
  68. package/dist/components/DatePicker/index.js.map +1 -0
  69. package/dist/components/DatePickerField/DatePickerField.d.ts +15 -0
  70. package/dist/components/DatePickerField/DatePickerField.js +17 -0
  71. package/dist/components/DatePickerField/DatePickerField.js.map +1 -0
  72. package/dist/components/DatePickerField/index.d.ts +1 -0
  73. package/dist/components/DatePickerField/index.js +2 -0
  74. package/dist/components/DatePickerField/index.js.map +1 -0
  75. package/dist/components/Drawer/Drawer.d.ts +1 -1
  76. package/dist/components/Drawer/Drawer.js +1 -1
  77. package/dist/components/Drawer/DrawerExample.js +3 -3
  78. package/dist/components/Drawer/DrawerExample.js.map +1 -1
  79. package/dist/components/EmptyState/EmptyState.d.ts +1 -1
  80. package/dist/components/EmptyState/EmptyState.js +1 -1
  81. package/dist/components/Fab/Fab.d.ts +1 -1
  82. package/dist/components/Fab/Fab.js +1 -1
  83. package/dist/components/Field/Field.d.ts +58 -0
  84. package/dist/components/Field/Field.js +70 -0
  85. package/dist/components/Field/Field.js.map +1 -0
  86. package/dist/components/Field/FieldDescription.d.ts +7 -0
  87. package/dist/components/Field/FieldDescription.js +9 -0
  88. package/dist/components/Field/FieldDescription.js.map +1 -0
  89. package/dist/components/Field/FieldError.d.ts +5 -0
  90. package/dist/components/Field/FieldError.js +8 -0
  91. package/dist/components/Field/FieldError.js.map +1 -0
  92. package/dist/components/Field/FieldExample.d.ts +5 -0
  93. package/dist/components/Field/FieldExample.js +10 -0
  94. package/dist/components/Field/FieldExample.js.map +1 -0
  95. package/dist/components/Field/FieldLabel.d.ts +15 -0
  96. package/dist/components/Field/FieldLabel.js +8 -0
  97. package/dist/components/Field/FieldLabel.js.map +1 -0
  98. package/dist/components/Field/field.css +36 -0
  99. package/dist/components/Field/field.css.js +41 -0
  100. package/dist/components/Field/index.d.ts +5 -0
  101. package/dist/components/Field/index.js +6 -0
  102. package/dist/components/Field/index.js.map +1 -0
  103. package/dist/components/Field/utils.d.ts +39 -0
  104. package/dist/components/Field/utils.js +35 -0
  105. package/dist/components/Field/utils.js.map +1 -0
  106. package/dist/components/FormField/FormField.d.ts +32 -17
  107. package/dist/components/FormField/FormField.js +10 -18
  108. package/dist/components/FormField/FormField.js.map +1 -1
  109. package/dist/components/FormField/FormFieldExample.d.ts +10 -4
  110. package/dist/components/FormField/FormFieldExample.js +97 -9
  111. package/dist/components/FormField/FormFieldExample.js.map +1 -1
  112. package/dist/components/Img/Img.d.ts +1 -1
  113. package/dist/components/Img/Img.js +1 -1
  114. package/dist/components/InlineAlert/InlineAlert.d.ts +4 -4
  115. package/dist/components/InlineAlert/InlineAlert.js +3 -3
  116. package/dist/components/InlineAlert/InlineAlert.js.map +1 -1
  117. package/dist/components/Input/Input.d.ts +37 -0
  118. package/dist/components/Input/Input.js +48 -0
  119. package/dist/components/Input/Input.js.map +1 -0
  120. package/dist/components/Input/InputElement.d.ts +77 -0
  121. package/dist/components/{TextInput/TextInput.js → Input/InputElement.js} +17 -16
  122. package/dist/components/Input/InputElement.js.map +1 -0
  123. package/dist/components/Input/InputExample.d.ts +8 -0
  124. package/dist/components/{TextInput/TextInputExample.js → Input/InputExample.js} +20 -9
  125. package/dist/components/Input/InputExample.js.map +1 -0
  126. package/dist/components/Input/index.d.ts +2 -0
  127. package/dist/components/Input/index.js +3 -0
  128. package/dist/components/Input/index.js.map +1 -0
  129. package/dist/components/{TextInput/text-input.css → Input/input.css} +23 -23
  130. package/dist/components/{TextInput/text-input.css.js → Input/input.css.js} +23 -23
  131. package/dist/components/InputField/InputField.d.ts +15 -0
  132. package/dist/components/InputField/InputField.js +17 -0
  133. package/dist/components/InputField/InputField.js.map +1 -0
  134. package/dist/components/InputField/index.d.ts +1 -0
  135. package/dist/components/InputField/index.js +2 -0
  136. package/dist/components/InputField/index.js.map +1 -0
  137. package/dist/components/{NumberInput → InputNumber}/IncrementButton.js.map +1 -1
  138. package/dist/components/InputNumber/InputNumber.d.ts +74 -0
  139. package/dist/components/InputNumber/InputNumber.js +78 -0
  140. package/dist/components/InputNumber/InputNumber.js.map +1 -0
  141. package/dist/components/InputNumber/InputNumberExample.d.ts +3 -0
  142. package/dist/components/{NumberInput/NumberInputExample.js → InputNumber/InputNumberExample.js} +2 -2
  143. package/dist/components/InputNumber/InputNumberExample.js.map +1 -0
  144. package/dist/components/InputNumber/index.d.ts +1 -0
  145. package/dist/components/InputNumber/index.js +2 -0
  146. package/dist/components/InputNumber/index.js.map +1 -0
  147. package/dist/components/{NumberInput/number-input.css → InputNumber/input-number.css} +21 -21
  148. package/dist/components/{NumberInput/number-input.css.js → InputNumber/input-number.css.js} +21 -21
  149. package/dist/components/InputNumberField/InputNumberField.d.ts +15 -0
  150. package/dist/components/InputNumberField/InputNumberField.js +17 -0
  151. package/dist/components/InputNumberField/InputNumberField.js.map +1 -0
  152. package/dist/components/InputNumberField/index.d.ts +1 -0
  153. package/dist/components/InputNumberField/index.js +2 -0
  154. package/dist/components/InputNumberField/index.js.map +1 -0
  155. package/dist/components/InputPhone/InputPhone.d.ts +57 -0
  156. package/dist/components/InputPhone/InputPhone.js +161 -0
  157. package/dist/components/InputPhone/InputPhone.js.map +1 -0
  158. package/dist/components/InputPhone/InputPhoneExample.d.ts +4 -0
  159. package/dist/components/InputPhone/InputPhoneExample.js +7 -0
  160. package/dist/components/InputPhone/InputPhoneExample.js.map +1 -0
  161. package/dist/components/InputPhone/index.d.ts +1 -0
  162. package/dist/components/InputPhone/index.js +2 -0
  163. package/dist/components/InputPhone/index.js.map +1 -0
  164. package/dist/components/InputPhone/input-phone.css +42 -0
  165. package/dist/components/InputPhone/input-phone.css.js +47 -0
  166. package/dist/components/InputPhoneField/InputPhoneField.d.ts +15 -0
  167. package/dist/components/InputPhoneField/InputPhoneField.js +17 -0
  168. package/dist/components/InputPhoneField/InputPhoneField.js.map +1 -0
  169. package/dist/components/InputPhoneField/index.d.ts +1 -0
  170. package/dist/components/InputPhoneField/index.js +2 -0
  171. package/dist/components/InputPhoneField/index.js.map +1 -0
  172. package/dist/components/Layout/Layout.d.ts +1 -1
  173. package/dist/components/Layout/Layout.js +1 -1
  174. package/dist/components/Link/Link.d.ts +1 -1
  175. package/dist/components/Link/Link.js +1 -1
  176. package/dist/components/ListItem/ListItem.d.ts +20 -11
  177. package/dist/components/ListItem/ListItem.js +12 -8
  178. package/dist/components/ListItem/ListItem.js.map +1 -1
  179. package/dist/components/ListItem/ListItemExample.d.ts +1 -1
  180. package/dist/components/ListItem/ListItemExample.js +72 -3
  181. package/dist/components/ListItem/ListItemExample.js.map +1 -1
  182. package/dist/components/ListItem/list-item.css +13 -7
  183. package/dist/components/ListItem/list-item.css.js +13 -7
  184. package/dist/components/Menu/Menu.d.ts +1 -1
  185. package/dist/components/Menu/Menu.js +1 -1
  186. package/dist/components/Menu/MenuExample.js +1 -1
  187. package/dist/components/Menu/MenuExample.js.map +1 -1
  188. package/dist/components/MenuButton/MenuButton.d.ts +1 -1
  189. package/dist/components/MenuButton/MenuButton.js +1 -1
  190. package/dist/components/Modal/Modal.d.ts +1 -1
  191. package/dist/components/Modal/Modal.js +1 -1
  192. package/dist/components/Modal/ModalExample.js +1 -1
  193. package/dist/components/Modal/ModalExample.js.map +1 -1
  194. package/dist/components/Pagination/PageInput.js +2 -2
  195. package/dist/components/Pagination/PageInput.js.map +1 -1
  196. package/dist/components/Password/Password.d.ts +43 -0
  197. package/dist/components/Password/Password.js +63 -0
  198. package/dist/components/Password/Password.js.map +1 -0
  199. package/dist/components/Password/index.d.ts +1 -0
  200. package/dist/components/Password/index.js +2 -0
  201. package/dist/components/Password/index.js.map +1 -0
  202. package/dist/components/Password/password.css +21 -0
  203. package/dist/components/Password/password.css.js +26 -0
  204. package/dist/components/PasswordField/PasswordField.d.ts +8 -24
  205. package/dist/components/PasswordField/PasswordField.js +7 -23
  206. package/dist/components/PasswordField/PasswordField.js.map +1 -1
  207. package/dist/components/Popover/Popover.d.ts +3 -3
  208. package/dist/components/Popover/Popover.js +2 -1
  209. package/dist/components/Popover/Popover.js.map +1 -1
  210. package/dist/components/Popover/PopoverExample.js +2 -2
  211. package/dist/components/Popover/PopoverExample.js.map +1 -1
  212. package/dist/components/ProgressBar/ProgressBar.d.ts +1 -1
  213. package/dist/components/ProgressBar/ProgressBar.js +1 -1
  214. package/dist/components/ProgressCircle/ProgressCircle.d.ts +1 -1
  215. package/dist/components/ProgressCircle/ProgressCircle.js +1 -1
  216. package/dist/components/ProgressionStepper/ProgressionStepper.d.ts +4 -8
  217. package/dist/components/ProgressionStepper/ProgressionStepper.js +11 -6
  218. package/dist/components/ProgressionStepper/ProgressionStepper.js.map +1 -1
  219. package/dist/components/ProgressionStepper/ProgressionStepperExample.js +20 -4
  220. package/dist/components/ProgressionStepper/ProgressionStepperExample.js.map +1 -1
  221. package/dist/components/Radio/Radio.d.ts +2 -2
  222. package/dist/components/Radio/Radio.js.map +1 -1
  223. package/dist/components/RadioGroup/RadioGroup.d.ts +7 -36
  224. package/dist/components/RadioGroup/RadioGroup.js +15 -9
  225. package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
  226. package/dist/components/RadioGroup/radio-group.css +2 -1
  227. package/dist/components/RadioGroup/radio-group.css.js +2 -1
  228. package/dist/components/RadioGroupField/RadioGroupField.d.ts +15 -0
  229. package/dist/components/RadioGroupField/RadioGroupField.js +17 -0
  230. package/dist/components/RadioGroupField/RadioGroupField.js.map +1 -0
  231. package/dist/components/RadioGroupField/index.d.ts +1 -0
  232. package/dist/components/RadioGroupField/index.js +2 -0
  233. package/dist/components/RadioGroupField/index.js.map +1 -0
  234. package/dist/components/SearchBar/SearchBar.d.ts +37 -45
  235. package/dist/components/SearchBar/SearchBar.js +104 -53
  236. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  237. package/dist/components/SearchBar/SearchBarExample.js +2 -1
  238. package/dist/components/SearchBar/SearchBarExample.js.map +1 -1
  239. package/dist/components/SegmentedControl/SegmentedControl.d.ts +1 -1
  240. package/dist/components/SegmentedControl/SegmentedControl.js +1 -1
  241. package/dist/components/Select/Select.d.ts +41 -36
  242. package/dist/components/Select/Select.js +52 -26
  243. package/dist/components/Select/Select.js.map +1 -1
  244. package/dist/components/Select/SelectExample.js +1 -9
  245. package/dist/components/Select/SelectExample.js.map +1 -1
  246. package/dist/components/SelectField/SelectField.d.ts +6 -26
  247. package/dist/components/SelectField/SelectField.js +5 -27
  248. package/dist/components/SelectField/SelectField.js.map +1 -1
  249. package/dist/components/Skeleton/SkeletonExample.js +2 -2
  250. package/dist/components/Skeleton/SkeletonExample.js.map +1 -1
  251. package/dist/components/Snackbar/Snackbar.d.ts +72 -14
  252. package/dist/components/Snackbar/Snackbar.js +38 -9
  253. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  254. package/dist/components/Snackbar/SnackbarExample.d.ts +1 -1
  255. package/dist/components/Snackbar/SnackbarExample.js +5 -3
  256. package/dist/components/Snackbar/SnackbarExample.js.map +1 -1
  257. package/dist/components/Snackbar/snackbar.css +31 -2
  258. package/dist/components/Snackbar/snackbar.css.js +31 -2
  259. package/dist/components/StylesProviderDemo/StylesProviderDemo.d.ts +1 -1
  260. package/dist/components/StylesProviderDemo/StylesProviderDemo.js +3 -1
  261. package/dist/components/StylesProviderDemo/StylesProviderDemo.js.map +1 -1
  262. package/dist/components/StylesProviderDemo/exampleCss.d.ts +1 -0
  263. package/dist/components/StylesProviderDemo/exampleCss.js +1900 -0
  264. package/dist/components/StylesProviderDemo/exampleCss.js.map +1 -0
  265. package/dist/components/Switch/Switch.d.ts +5 -3
  266. package/dist/components/Switch/Switch.js +2 -2
  267. package/dist/components/Switch/Switch.js.map +1 -1
  268. package/dist/components/SwitchOption/SwitchOption.js +1 -1
  269. package/dist/components/SwitchOption/SwitchOption.js.map +1 -1
  270. package/dist/components/TabGroup/TabGroup.d.ts +2 -2
  271. package/dist/components/TabGroup/TabGroup.js +3 -3
  272. package/dist/components/TabGroup/TabGroup.js.map +1 -1
  273. package/dist/components/TabList/TabList.d.ts +6 -3
  274. package/dist/components/TabList/TabList.js +6 -3
  275. package/dist/components/TabList/TabList.js.map +1 -1
  276. package/dist/components/TabList/tab-list.css +6 -0
  277. package/dist/components/TabList/tab-list.css.js +6 -0
  278. package/dist/components/Tag/Tag.d.ts +1 -1
  279. package/dist/components/Tag/Tag.js +1 -1
  280. package/dist/components/Textarea/Textarea.d.ts +20 -26
  281. package/dist/components/Textarea/Textarea.js +29 -11
  282. package/dist/components/Textarea/Textarea.js.map +1 -1
  283. package/dist/components/Textarea/textarea.css +24 -10
  284. package/dist/components/Textarea/textarea.css.js +24 -10
  285. package/dist/components/TextareaField/TextareaField.d.ts +6 -30
  286. package/dist/components/TextareaField/TextareaField.js +5 -31
  287. package/dist/components/TextareaField/TextareaField.js.map +1 -1
  288. package/dist/components/TimePicker/Listbox.d.ts +15 -0
  289. package/dist/components/{TimeInput → TimePicker}/Listbox.js +2 -2
  290. package/dist/components/TimePicker/Listbox.js.map +1 -0
  291. package/dist/components/TimePicker/Segment.d.ts +21 -0
  292. package/dist/components/{TimeInput → TimePicker}/Segment.js +2 -1
  293. package/dist/components/TimePicker/Segment.js.map +1 -0
  294. package/dist/components/TimePicker/TimePicker.d.ts +36 -0
  295. package/dist/components/TimePicker/TimePicker.js +133 -0
  296. package/dist/components/TimePicker/TimePicker.js.map +1 -0
  297. package/dist/components/TimePicker/TimePickerExample.d.ts +3 -0
  298. package/dist/components/TimePicker/TimePickerExample.js +6 -0
  299. package/dist/components/TimePicker/TimePickerExample.js.map +1 -0
  300. package/dist/components/TimePicker/index.d.ts +1 -0
  301. package/dist/components/TimePicker/index.js +2 -0
  302. package/dist/components/TimePicker/index.js.map +1 -0
  303. package/dist/components/{TimeInput/time-input.css → TimePicker/time-picker.css} +28 -26
  304. package/dist/components/{TimeInput/time-input.css.js → TimePicker/time-picker.css.js} +28 -26
  305. package/dist/components/TimePicker/utils.d.ts +11 -0
  306. package/dist/components/TimePicker/utils.js +35 -0
  307. package/dist/components/TimePicker/utils.js.map +1 -0
  308. package/dist/components/TimePickerField/TimePickerField.d.ts +15 -0
  309. package/dist/components/TimePickerField/TimePickerField.js +17 -0
  310. package/dist/components/TimePickerField/TimePickerField.js.map +1 -0
  311. package/dist/components/TimePickerField/index.d.ts +1 -0
  312. package/dist/components/TimePickerField/index.js +2 -0
  313. package/dist/components/TimePickerField/index.js.map +1 -0
  314. package/dist/components/ToggleOption/ToggleOption.js +3 -2
  315. package/dist/components/ToggleOption/ToggleOption.js.map +1 -1
  316. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  317. package/dist/components/Tooltip/Tooltip.js +1 -1
  318. package/dist/components/Tooltip/TooltipExample.js +2 -2
  319. package/dist/components/Tooltip/TooltipExample.js.map +1 -1
  320. package/dist/components/Txt/Txt.d.ts +1 -1
  321. package/dist/components/Txt/Txt.js +1 -1
  322. package/dist/constants/brands.d.ts +1 -1
  323. package/dist/constants/brands.js +4 -0
  324. package/dist/constants/brands.js.map +1 -1
  325. package/dist/hooks/useArrowNavigation.js +6 -1
  326. package/dist/hooks/useArrowNavigation.js.map +1 -1
  327. package/dist/hooks/useCheckboxGroupState.d.ts +1 -1
  328. package/dist/hooks/useCheckboxGroupState.js +1 -1
  329. package/dist/hooks/useCheckboxState.d.ts +1 -1
  330. package/dist/hooks/useCheckboxState.js +1 -1
  331. package/dist/hooks/useContainerWidth.d.ts +1 -1
  332. package/dist/hooks/useContainerWidth.js +1 -1
  333. package/dist/hooks/useModalState.d.ts +1 -1
  334. package/dist/hooks/useModalState.js +1 -1
  335. package/dist/hooks/useOutsideClick.d.ts +5 -4
  336. package/dist/hooks/useOutsideClick.js +14 -3
  337. package/dist/hooks/useOutsideClick.js.map +1 -1
  338. package/dist/hooks/useRadioState.d.ts +2 -2
  339. package/dist/hooks/useRadioState.js +1 -1
  340. package/dist/hooks/useTimeout.d.ts +1 -1
  341. package/dist/styles/base.css +3 -0
  342. package/dist/styles/base.css.js +3 -0
  343. package/dist/types/common.d.ts +18 -10
  344. package/dist/types/common.js.map +1 -1
  345. package/dist/types/meta.d.ts +1 -0
  346. package/dist/types/meta.js.map +1 -1
  347. package/dist/utils/demo.d.ts +1 -0
  348. package/dist/utils/demo.js.map +1 -1
  349. package/meta.ts +1 -0
  350. package/package.json +37 -37
  351. package/src/components/AvatarGroup/AvatarGroup.tsx +1 -1
  352. package/src/components/Breadcrumb/Breadcrumb.tsx +5 -56
  353. package/src/components/Breadcrumb/BreadcumbDropdown.tsx +135 -0
  354. package/src/components/Button/Button.tsx +7 -1
  355. package/src/components/Button/button.scss +5 -5
  356. package/src/components/Calendar/Calendar.rtl.test.tsx +22 -0
  357. package/src/components/{CalendarPicker/CalendarPicker.tsx → Calendar/Calendar.tsx} +86 -87
  358. package/src/components/Calendar/CalendarExample.tsx +31 -0
  359. package/src/components/{CalendarPicker/calendar-picker.scss → Calendar/calendar.scss} +1 -1
  360. package/src/components/Calendar/index.tsx +1 -0
  361. package/src/components/Checkbox/Checkbox.tsx +28 -26
  362. package/src/components/CheckboxGroup/CheckboxGroup.tsx +73 -77
  363. package/src/components/CheckboxGroup/CheckboxGroupExample.tsx +3 -0
  364. package/src/components/CheckboxGroup/checkbox-group.scss +8 -0
  365. package/src/components/CheckboxGroupField/CheckboxGroupField.rtl.test.tsx +27 -0
  366. package/src/components/CheckboxGroupField/CheckboxGroupField.tsx +36 -0
  367. package/src/components/CheckboxGroupField/index.tsx +1 -0
  368. package/src/components/{ChipUtility/ChipUtility.rtl.test.tsx → Chip/Chip.rtl.test.tsx} +5 -5
  369. package/src/components/{ChipUtility/ChipUtility.tsx → Chip/Chip.tsx} +26 -28
  370. package/src/components/{ChipUtility/ChipUtilityExample.tsx → Chip/ChipExample.tsx} +3 -3
  371. package/src/components/{ChipUtility/chip-utility.scss → Chip/chip.scss} +1 -1
  372. package/src/components/Chip/index.tsx +1 -0
  373. package/src/components/ChipGroup/ChipGroup.rtl.test.tsx +7 -7
  374. package/src/components/ChipGroup/ChipGroup.tsx +8 -7
  375. package/src/components/ChipGroup/ChipGroupExample.tsx +38 -138
  376. package/src/components/DatePicker/DatePicker.rtl.test.tsx +17 -0
  377. package/src/components/DatePicker/DatePicker.tsx +227 -0
  378. package/src/components/DatePicker/DatePickerExample.tsx +12 -0
  379. package/src/components/{DateInput/date-input.scss → DatePicker/date-picker.scss} +2 -3
  380. package/src/components/DatePicker/index.tsx +1 -0
  381. package/src/components/DatePickerField/DatePickerField.rtl.test.tsx +17 -0
  382. package/src/components/DatePickerField/DatePickerField.tsx +30 -0
  383. package/src/components/DatePickerField/index.tsx +1 -0
  384. package/src/components/Drawer/Drawer.tsx +1 -1
  385. package/src/components/Drawer/DrawerExample.tsx +2 -2
  386. package/src/components/EmptyState/EmptyState.tsx +1 -1
  387. package/src/components/Fab/Fab.tsx +1 -1
  388. package/src/components/Field/Field.rtl.test.tsx +23 -0
  389. package/src/components/Field/Field.tsx +110 -0
  390. package/src/components/Field/FieldDescription.tsx +15 -0
  391. package/src/components/Field/FieldError.tsx +19 -0
  392. package/src/components/Field/FieldExample.tsx +21 -0
  393. package/src/components/Field/FieldLabel.tsx +38 -0
  394. package/src/components/Field/field.scss +43 -0
  395. package/src/components/Field/index.tsx +5 -0
  396. package/src/components/Field/utils.ts +79 -0
  397. package/src/components/FormField/FormField.rtl.test.tsx +11 -21
  398. package/src/components/FormField/FormField.tsx +44 -66
  399. package/src/components/FormField/FormFieldExample.tsx +275 -38
  400. package/src/components/Img/Img.tsx +1 -1
  401. package/src/components/InlineAlert/InlineAlert.tsx +5 -5
  402. package/src/components/{NumberInput/NumberInput.rtl.test.tsx → Input/Input.rtl.test.tsx} +3 -3
  403. package/src/components/Input/Input.tsx +99 -0
  404. package/src/components/{TextInput/TextInput.tsx → Input/InputElement.tsx} +69 -77
  405. package/src/components/Input/InputExample.tsx +57 -0
  406. package/src/components/Input/index.tsx +2 -0
  407. package/src/components/{TextInput/text-input.scss → Input/input.scss} +7 -7
  408. package/src/components/InputField/InputField.rtl.test.tsx +15 -0
  409. package/src/components/InputField/InputField.tsx +24 -0
  410. package/src/components/InputField/index.tsx +1 -0
  411. package/src/components/{TextField/TextField.rtl.test.tsx → InputNumber/InputNumber.rtl.test.tsx} +3 -12
  412. package/src/components/{NumberInput/NumberInput.tsx → InputNumber/InputNumber.tsx} +61 -56
  413. package/src/components/{NumberInput/NumberInputExample.tsx → InputNumber/InputNumberExample.tsx} +2 -2
  414. package/src/components/InputNumber/index.tsx +1 -0
  415. package/src/components/{NumberInput/number-input.scss → InputNumber/input-number.scss} +1 -1
  416. package/src/components/InputNumberField/InputNumberField.rtl.test.tsx +17 -0
  417. package/src/components/InputNumberField/InputNumberField.tsx +30 -0
  418. package/src/components/InputNumberField/index.tsx +1 -0
  419. package/src/components/InputPhone/InputPhone.rtl.test.tsx +17 -0
  420. package/src/components/InputPhone/InputPhone.tsx +290 -0
  421. package/src/components/InputPhone/InputPhoneExample.tsx +9 -0
  422. package/src/components/InputPhone/index.tsx +1 -0
  423. package/src/components/{PhoneNumberInput/phone-number-input.scss → InputPhone/input-phone.scss} +13 -18
  424. package/src/components/InputPhoneField/InputPhoneField.rtl.test.tsx +17 -0
  425. package/src/components/InputPhoneField/InputPhoneField.tsx +30 -0
  426. package/src/components/InputPhoneField/index.tsx +1 -0
  427. package/src/components/Layout/Layout.tsx +1 -1
  428. package/src/components/Link/Link.tsx +1 -1
  429. package/src/components/ListItem/ListItem.rtl.test.tsx +4 -1
  430. package/src/components/ListItem/ListItem.tsx +48 -23
  431. package/src/components/ListItem/ListItemExample.tsx +74 -4
  432. package/src/components/ListItem/list-item.scss +26 -17
  433. package/src/components/Menu/Menu.tsx +1 -1
  434. package/src/components/Menu/MenuExample.tsx +1 -0
  435. package/src/components/MenuButton/MenuButton.tsx +1 -1
  436. package/src/components/Modal/Modal.tsx +1 -1
  437. package/src/components/Modal/ModalExample.tsx +4 -6
  438. package/src/components/Pagination/PageInput.tsx +2 -2
  439. package/src/components/{CalendarPicker/CalendarPicker.rtl.test.tsx → Password/Password.rtl.test.tsx} +4 -4
  440. package/src/components/Password/Password.tsx +113 -0
  441. package/src/components/Password/index.tsx +1 -0
  442. package/src/components/Password/password.scss +31 -0
  443. package/src/components/PasswordField/PasswordField.rtl.test.tsx +4 -11
  444. package/src/components/PasswordField/PasswordField.tsx +10 -53
  445. package/src/components/Popover/Popover.tsx +3 -2
  446. package/src/components/Popover/PopoverExample.tsx +2 -2
  447. package/src/components/ProgressBar/ProgressBar.tsx +1 -1
  448. package/src/components/ProgressCircle/ProgressCircle.tsx +1 -1
  449. package/src/components/ProgressionStepper/ProgressionStepper.tsx +24 -20
  450. package/src/components/ProgressionStepper/ProgressionStepperExample.tsx +20 -4
  451. package/src/components/Radio/Radio.tsx +15 -16
  452. package/src/components/RadioGroup/RadioGroup.rtl.test.tsx +4 -5
  453. package/src/components/RadioGroup/RadioGroup.tsx +51 -71
  454. package/src/components/RadioGroup/radio-group.scss +3 -1
  455. package/src/components/RadioGroupField/RadioGroupField.rtl.test.tsx +27 -0
  456. package/src/components/RadioGroupField/RadioGroupField.tsx +36 -0
  457. package/src/components/RadioGroupField/index.tsx +1 -0
  458. package/src/components/SearchBar/SearchBar.rtl.test.tsx +3 -4
  459. package/src/components/SearchBar/SearchBar.tsx +190 -126
  460. package/src/components/SearchBar/SearchBarExample.tsx +2 -1
  461. package/src/components/SegmentedControl/SegmentedControl.tsx +1 -1
  462. package/src/components/Select/Select.rtl.test.tsx +6 -5
  463. package/src/components/Select/Select.tsx +62 -66
  464. package/src/components/Select/SelectExample.tsx +1 -14
  465. package/src/components/SelectField/SelectField.rtl.test.tsx +9 -6
  466. package/src/components/SelectField/SelectField.tsx +9 -56
  467. package/src/components/Skeleton/SkeletonExample.tsx +1 -3
  468. package/src/components/Snackbar/Snackbar.tsx +124 -28
  469. package/src/components/Snackbar/SnackbarExample.tsx +9 -3
  470. package/src/components/Snackbar/snackbar.scss +48 -16
  471. package/src/components/StylesProviderDemo/StylesProviderDemo.tsx +5 -2
  472. package/src/components/StylesProviderDemo/exampleCss.ts +1899 -0
  473. package/src/components/Switch/Switch.rtl.test.tsx +3 -1
  474. package/src/components/Switch/Switch.tsx +5 -3
  475. package/src/components/SwitchOption/SwitchOption.rtl.test.tsx +3 -1
  476. package/src/components/SwitchOption/SwitchOption.tsx +1 -1
  477. package/src/components/TabGroup/TabGroup.tsx +2 -2
  478. package/src/components/TabList/TabList.tsx +16 -5
  479. package/src/components/TabList/tab-list.scss +12 -0
  480. package/src/components/Tag/Tag.tsx +1 -1
  481. package/src/components/Textarea/Textarea.rtl.test.tsx +1 -1
  482. package/src/components/Textarea/Textarea.tsx +72 -68
  483. package/src/components/Textarea/textarea.scss +41 -19
  484. package/src/components/TextareaField/TextareaField.rtl.test.tsx +4 -11
  485. package/src/components/TextareaField/TextareaField.tsx +9 -74
  486. package/src/components/{TimeInput → TimePicker}/Listbox.tsx +5 -5
  487. package/src/components/{TimeInput → TimePicker}/Segment.tsx +8 -5
  488. package/src/components/{TextInput/TextInput.rtl.test.tsx → TimePicker/TimePicker.rtl.test.tsx} +3 -3
  489. package/src/components/{TimeInput/TimeInput.tsx → TimePicker/TimePicker.tsx} +104 -67
  490. package/src/components/TimePicker/TimePickerExample.tsx +8 -0
  491. package/src/components/TimePicker/index.tsx +1 -0
  492. package/src/components/{TimeInput/time-input.scss → TimePicker/time-picker.scss} +7 -5
  493. package/src/components/TimePicker/utils.test.tsx +26 -0
  494. package/src/components/TimePicker/utils.ts +44 -0
  495. package/src/components/TimePickerField/TimePickerField.rtl.test.tsx +17 -0
  496. package/src/components/TimePickerField/TimePickerField.tsx +30 -0
  497. package/src/components/TimePickerField/index.tsx +1 -0
  498. package/src/components/ToggleOption/ToggleOption.tsx +10 -5
  499. package/src/components/Tooltip/Tooltip.tsx +1 -1
  500. package/src/components/Tooltip/TooltipExample.tsx +7 -9
  501. package/src/components/Txt/Txt.tsx +1 -1
  502. package/src/constants/brands.ts +5 -1
  503. package/src/hooks/useArrowNavigation.ts +6 -1
  504. package/src/hooks/useCheckboxGroupState.ts +1 -1
  505. package/src/hooks/useCheckboxState.ts +1 -1
  506. package/src/hooks/useContainerWidth.tsx +1 -1
  507. package/src/hooks/useModalState.ts +1 -1
  508. package/src/hooks/useOutsideClick.ts +17 -4
  509. package/src/hooks/useRadioState.ts +1 -1
  510. package/src/hooks/useTimeout.ts +1 -1
  511. package/src/styles/base.scss +3 -0
  512. package/src/types/common.ts +28 -10
  513. package/src/types/meta.ts +1 -0
  514. package/src/utils/demo.ts +1 -0
  515. package/dist/components/CalendarPicker/CalendarPicker.d.ts +0 -32
  516. package/dist/components/CalendarPicker/CalendarPicker.js.map +0 -1
  517. package/dist/components/CalendarPicker/CalendarPickerExample.d.ts +0 -3
  518. package/dist/components/CalendarPicker/CalendarPickerExample.js +0 -17
  519. package/dist/components/CalendarPicker/CalendarPickerExample.js.map +0 -1
  520. package/dist/components/CalendarPicker/index.d.ts +0 -1
  521. package/dist/components/CalendarPicker/index.js +0 -2
  522. package/dist/components/CalendarPicker/index.js.map +0 -1
  523. package/dist/components/ChipAssist/ChipAssist.d.ts +0 -24
  524. package/dist/components/ChipAssist/ChipAssist.js +0 -26
  525. package/dist/components/ChipAssist/ChipAssist.js.map +0 -1
  526. package/dist/components/ChipAssist/ChipAssistExample.d.ts +0 -4
  527. package/dist/components/ChipAssist/ChipAssistExample.js +0 -32
  528. package/dist/components/ChipAssist/ChipAssistExample.js.map +0 -1
  529. package/dist/components/ChipAssist/index.d.ts +0 -1
  530. package/dist/components/ChipAssist/index.js +0 -2
  531. package/dist/components/ChipAssist/index.js.map +0 -1
  532. package/dist/components/ChipFilter/ChipFilter.d.ts +0 -40
  533. package/dist/components/ChipFilter/ChipFilter.js +0 -31
  534. package/dist/components/ChipFilter/ChipFilter.js.map +0 -1
  535. package/dist/components/ChipFilter/ChipFilterExample.d.ts +0 -3
  536. package/dist/components/ChipFilter/ChipFilterExample.js +0 -62
  537. package/dist/components/ChipFilter/ChipFilterExample.js.map +0 -1
  538. package/dist/components/ChipFilter/index.d.ts +0 -1
  539. package/dist/components/ChipFilter/index.js +0 -2
  540. package/dist/components/ChipFilter/index.js.map +0 -1
  541. package/dist/components/ChipInput/ChipInput.d.ts +0 -31
  542. package/dist/components/ChipInput/ChipInput.js +0 -27
  543. package/dist/components/ChipInput/ChipInput.js.map +0 -1
  544. package/dist/components/ChipInput/ChipInputExample.d.ts +0 -4
  545. package/dist/components/ChipInput/ChipInputExample.js +0 -47
  546. package/dist/components/ChipInput/ChipInputExample.js.map +0 -1
  547. package/dist/components/ChipInput/index.d.ts +0 -1
  548. package/dist/components/ChipInput/index.js +0 -2
  549. package/dist/components/ChipInput/index.js.map +0 -1
  550. package/dist/components/ChipSuggestion/ChipSuggestion.d.ts +0 -17
  551. package/dist/components/ChipSuggestion/ChipSuggestion.js +0 -19
  552. package/dist/components/ChipSuggestion/ChipSuggestion.js.map +0 -1
  553. package/dist/components/ChipSuggestion/ChipSuggestionExample.d.ts +0 -4
  554. package/dist/components/ChipSuggestion/ChipSuggestionExample.js +0 -24
  555. package/dist/components/ChipSuggestion/ChipSuggestionExample.js.map +0 -1
  556. package/dist/components/ChipSuggestion/index.d.ts +0 -1
  557. package/dist/components/ChipSuggestion/index.js +0 -2
  558. package/dist/components/ChipSuggestion/index.js.map +0 -1
  559. package/dist/components/ChipUtility/ChipUtility.js +0 -25
  560. package/dist/components/ChipUtility/ChipUtility.js.map +0 -1
  561. package/dist/components/ChipUtility/ChipUtilityExample.d.ts +0 -4
  562. package/dist/components/ChipUtility/ChipUtilityExample.js.map +0 -1
  563. package/dist/components/ChipUtility/index.d.ts +0 -1
  564. package/dist/components/ChipUtility/index.js +0 -2
  565. package/dist/components/ChipUtility/index.js.map +0 -1
  566. package/dist/components/DateField/DateField.d.ts +0 -32
  567. package/dist/components/DateField/DateField.js +0 -34
  568. package/dist/components/DateField/DateField.js.map +0 -1
  569. package/dist/components/DateField/DateFieldExample.d.ts +0 -4
  570. package/dist/components/DateField/DateFieldExample.js +0 -11
  571. package/dist/components/DateField/DateFieldExample.js.map +0 -1
  572. package/dist/components/DateField/date-field.css +0 -8
  573. package/dist/components/DateField/index.d.ts +0 -1
  574. package/dist/components/DateField/index.js +0 -2
  575. package/dist/components/DateField/index.js.map +0 -1
  576. package/dist/components/DateInput/DateInput.d.ts +0 -39
  577. package/dist/components/DateInput/DateInput.js +0 -102
  578. package/dist/components/DateInput/DateInput.js.map +0 -1
  579. package/dist/components/DateInput/DateInputExample.d.ts +0 -4
  580. package/dist/components/DateInput/DateInputExample.js +0 -14
  581. package/dist/components/DateInput/DateInputExample.js.map +0 -1
  582. package/dist/components/DateInput/index.d.ts +0 -1
  583. package/dist/components/DateInput/index.js +0 -2
  584. package/dist/components/DateInput/index.js.map +0 -1
  585. package/dist/components/FormField/form-field.css +0 -17
  586. package/dist/components/FormField/form-field.css.js +0 -22
  587. package/dist/components/ListItemMenu/ListItemMenu.d.ts +0 -146
  588. package/dist/components/ListItemMenu/ListItemMenu.js +0 -159
  589. package/dist/components/ListItemMenu/ListItemMenu.js.map +0 -1
  590. package/dist/components/ListItemMenu/index.d.ts +0 -1
  591. package/dist/components/ListItemMenu/index.js +0 -2
  592. package/dist/components/ListItemMenu/index.js.map +0 -1
  593. package/dist/components/NumberField/NumberField.d.ts +0 -33
  594. package/dist/components/NumberField/NumberField.js +0 -35
  595. package/dist/components/NumberField/NumberField.js.map +0 -1
  596. package/dist/components/NumberField/index.d.ts +0 -1
  597. package/dist/components/NumberField/index.js +0 -2
  598. package/dist/components/NumberField/index.js.map +0 -1
  599. package/dist/components/NumberInput/NumberInput.d.ts +0 -63
  600. package/dist/components/NumberInput/NumberInput.js +0 -64
  601. package/dist/components/NumberInput/NumberInput.js.map +0 -1
  602. package/dist/components/NumberInput/NumberInputExample.d.ts +0 -3
  603. package/dist/components/NumberInput/NumberInputExample.js.map +0 -1
  604. package/dist/components/NumberInput/index.d.ts +0 -1
  605. package/dist/components/NumberInput/index.js +0 -2
  606. package/dist/components/NumberInput/index.js.map +0 -1
  607. package/dist/components/PasswordInput/PasswordInput.d.ts +0 -21
  608. package/dist/components/PasswordInput/PasswordInput.js +0 -34
  609. package/dist/components/PasswordInput/PasswordInput.js.map +0 -1
  610. package/dist/components/PasswordInput/index.d.ts +0 -1
  611. package/dist/components/PasswordInput/index.js +0 -2
  612. package/dist/components/PasswordInput/index.js.map +0 -1
  613. package/dist/components/PasswordInput/password-input.css +0 -28
  614. package/dist/components/PasswordInput/password-input.css.js +0 -33
  615. package/dist/components/PhoneNumberField/PhoneNumberField.d.ts +0 -14
  616. package/dist/components/PhoneNumberField/PhoneNumberField.js +0 -16
  617. package/dist/components/PhoneNumberField/PhoneNumberField.js.map +0 -1
  618. package/dist/components/PhoneNumberField/index.d.ts +0 -1
  619. package/dist/components/PhoneNumberField/index.js +0 -2
  620. package/dist/components/PhoneNumberField/index.js.map +0 -1
  621. package/dist/components/PhoneNumberInput/PhoneNumberInput.d.ts +0 -37
  622. package/dist/components/PhoneNumberInput/PhoneNumberInput.js +0 -83
  623. package/dist/components/PhoneNumberInput/PhoneNumberInput.js.map +0 -1
  624. package/dist/components/PhoneNumberInput/PhoneNumberInputExample.d.ts +0 -4
  625. package/dist/components/PhoneNumberInput/PhoneNumberInputExample.js +0 -5
  626. package/dist/components/PhoneNumberInput/PhoneNumberInputExample.js.map +0 -1
  627. package/dist/components/PhoneNumberInput/index.d.ts +0 -1
  628. package/dist/components/PhoneNumberInput/index.js +0 -2
  629. package/dist/components/PhoneNumberInput/index.js.map +0 -1
  630. package/dist/components/PhoneNumberInput/phone-number-input.css +0 -46
  631. package/dist/components/PhoneNumberInput/phone-number-input.css.js +0 -51
  632. package/dist/components/SelectField/SelectFieldExample.d.ts +0 -23
  633. package/dist/components/SelectField/SelectFieldExample.js +0 -13
  634. package/dist/components/SelectField/SelectFieldExample.js.map +0 -1
  635. package/dist/components/SnackbarProvider/SnackbarProvider.d.ts +0 -90
  636. package/dist/components/SnackbarProvider/SnackbarProvider.js +0 -115
  637. package/dist/components/SnackbarProvider/SnackbarProvider.js.map +0 -1
  638. package/dist/components/SnackbarProvider/SnackbarProviderExample.d.ts +0 -4
  639. package/dist/components/SnackbarProvider/SnackbarProviderExample.js +0 -59
  640. package/dist/components/SnackbarProvider/SnackbarProviderExample.js.map +0 -1
  641. package/dist/components/SnackbarProvider/index.d.ts +0 -1
  642. package/dist/components/SnackbarProvider/index.js +0 -2
  643. package/dist/components/SnackbarProvider/index.js.map +0 -1
  644. package/dist/components/SnackbarProvider/snackbar-provider-example.css +0 -15
  645. package/dist/components/SnackbarProvider/snackbar-provider-example.css.js +0 -20
  646. package/dist/components/SnackbarProvider/snackbar-provider.css +0 -15
  647. package/dist/components/SnackbarProvider/snackbar-provider.css.js +0 -20
  648. package/dist/components/TextField/TextField.d.ts +0 -31
  649. package/dist/components/TextField/TextField.js +0 -33
  650. package/dist/components/TextField/TextField.js.map +0 -1
  651. package/dist/components/TextField/TextFieldExample.d.ts +0 -3
  652. package/dist/components/TextField/TextFieldExample.js +0 -6
  653. package/dist/components/TextField/TextFieldExample.js.map +0 -1
  654. package/dist/components/TextField/index.d.ts +0 -1
  655. package/dist/components/TextField/index.js +0 -2
  656. package/dist/components/TextField/index.js.map +0 -1
  657. package/dist/components/TextInput/TextInput.d.ts +0 -78
  658. package/dist/components/TextInput/TextInput.js.map +0 -1
  659. package/dist/components/TextInput/TextInputExample.d.ts +0 -3
  660. package/dist/components/TextInput/TextInputExample.js.map +0 -1
  661. package/dist/components/TextInput/index.d.ts +0 -1
  662. package/dist/components/TextInput/index.js +0 -2
  663. package/dist/components/TextInput/index.js.map +0 -1
  664. package/dist/components/TextareaField/TextareaFieldExample.d.ts +0 -3
  665. package/dist/components/TextareaField/TextareaFieldExample.js +0 -10
  666. package/dist/components/TextareaField/TextareaFieldExample.js.map +0 -1
  667. package/dist/components/TimeInput/Listbox.d.ts +0 -15
  668. package/dist/components/TimeInput/Listbox.js.map +0 -1
  669. package/dist/components/TimeInput/Segment.d.ts +0 -20
  670. package/dist/components/TimeInput/Segment.js.map +0 -1
  671. package/dist/components/TimeInput/TimeInput.d.ts +0 -24
  672. package/dist/components/TimeInput/TimeInput.js +0 -115
  673. package/dist/components/TimeInput/TimeInput.js.map +0 -1
  674. package/dist/components/TimeInput/TimeInputExample.d.ts +0 -3
  675. package/dist/components/TimeInput/TimeInputExample.js +0 -4
  676. package/dist/components/TimeInput/TimeInputExample.js.map +0 -1
  677. package/dist/components/TimeInput/index.d.ts +0 -1
  678. package/dist/components/TimeInput/index.js +0 -2
  679. package/dist/components/TimeInput/index.js.map +0 -1
  680. package/dist/hooks/useSnackbarContext.d.ts +0 -1
  681. package/dist/hooks/useSnackbarContext.js +0 -16
  682. package/dist/hooks/useSnackbarContext.js.map +0 -1
  683. package/dist/utils/snackbarContext.d.ts +0 -38
  684. package/dist/utils/snackbarContext.js +0 -3
  685. package/dist/utils/snackbarContext.js.map +0 -1
  686. package/src/components/CalendarPicker/CalendarPickerExample.tsx +0 -24
  687. package/src/components/CalendarPicker/index.tsx +0 -1
  688. package/src/components/ChipAssist/ChipAssist.rtl.test.tsx +0 -16
  689. package/src/components/ChipAssist/ChipAssist.tsx +0 -37
  690. package/src/components/ChipAssist/ChipAssistExample.tsx +0 -34
  691. package/src/components/ChipAssist/index.tsx +0 -1
  692. package/src/components/ChipFilter/ChipFilter.rtl.test.tsx +0 -15
  693. package/src/components/ChipFilter/ChipFilter.tsx +0 -75
  694. package/src/components/ChipFilter/ChipFilterExample.tsx +0 -63
  695. package/src/components/ChipFilter/index.tsx +0 -1
  696. package/src/components/ChipInput/ChipInput.rtl.test.tsx +0 -16
  697. package/src/components/ChipInput/ChipInput.tsx +0 -47
  698. package/src/components/ChipInput/ChipInputExample.tsx +0 -49
  699. package/src/components/ChipInput/index.tsx +0 -1
  700. package/src/components/ChipSuggestion/ChipSuggestion.rtl.test.tsx +0 -19
  701. package/src/components/ChipSuggestion/ChipSuggestion.tsx +0 -22
  702. package/src/components/ChipSuggestion/ChipSuggestionExample.tsx +0 -26
  703. package/src/components/ChipSuggestion/index.tsx +0 -1
  704. package/src/components/ChipUtility/index.tsx +0 -1
  705. package/src/components/DateField/DateField.rtl.test.tsx +0 -24
  706. package/src/components/DateField/DateField.tsx +0 -58
  707. package/src/components/DateField/DateFieldExample.tsx +0 -13
  708. package/src/components/DateField/date-field.scss +0 -8
  709. package/src/components/DateField/index.tsx +0 -1
  710. package/src/components/DateInput/DateInput.rtl.test.tsx +0 -17
  711. package/src/components/DateInput/DateInput.tsx +0 -197
  712. package/src/components/DateInput/DateInputExample.tsx +0 -17
  713. package/src/components/DateInput/index.tsx +0 -1
  714. package/src/components/FormField/form-field.scss +0 -19
  715. package/src/components/ListItemMenu/ListItemMenu.tsx +0 -358
  716. package/src/components/ListItemMenu/index.tsx +0 -1
  717. package/src/components/NumberField/NumberField.rtl.test.tsx +0 -24
  718. package/src/components/NumberField/NumberField.tsx +0 -70
  719. package/src/components/NumberField/index.tsx +0 -1
  720. package/src/components/NumberInput/index.tsx +0 -1
  721. package/src/components/PasswordInput/PasswordInput.rtl.test.tsx +0 -15
  722. package/src/components/PasswordInput/PasswordInput.tsx +0 -115
  723. package/src/components/PasswordInput/index.tsx +0 -1
  724. package/src/components/PasswordInput/password-input.scss +0 -36
  725. package/src/components/PhoneNumberField/PhoneNumberField.rtl.test.tsx +0 -24
  726. package/src/components/PhoneNumberField/PhoneNumberField.tsx +0 -41
  727. package/src/components/PhoneNumberField/index.tsx +0 -1
  728. package/src/components/PhoneNumberInput/PhoneNumberInput.rtl.test.tsx +0 -17
  729. package/src/components/PhoneNumberInput/PhoneNumberInput.tsx +0 -186
  730. package/src/components/PhoneNumberInput/PhoneNumberInputExample.tsx +0 -8
  731. package/src/components/PhoneNumberInput/index.tsx +0 -1
  732. package/src/components/SelectField/SelectFieldExample.tsx +0 -16
  733. package/src/components/SnackbarProvider/SnackbarProvider.tsx +0 -160
  734. package/src/components/SnackbarProvider/SnackbarProviderExample.tsx +0 -127
  735. package/src/components/SnackbarProvider/index.tsx +0 -1
  736. package/src/components/SnackbarProvider/snackbar-provider-example.scss +0 -17
  737. package/src/components/SnackbarProvider/snackbar-provider.scss +0 -15
  738. package/src/components/TextField/TextField.tsx +0 -67
  739. package/src/components/TextField/TextFieldExample.tsx +0 -8
  740. package/src/components/TextField/index.tsx +0 -1
  741. package/src/components/TextInput/TextInputExample.tsx +0 -44
  742. package/src/components/TextInput/index.tsx +0 -1
  743. package/src/components/TextareaField/TextareaFieldExample.tsx +0 -13
  744. package/src/components/TimeInput/TimeInput.rtl.test.tsx +0 -15
  745. package/src/components/TimeInput/TimeInputExample.tsx +0 -6
  746. package/src/components/TimeInput/index.tsx +0 -1
  747. package/src/hooks/useSnackbarContext.ts +0 -18
  748. package/src/utils/snackbarContext.tsx +0 -43
  749. /package/dist/components/{NumberInput → InputNumber}/IncrementButton.d.ts +0 -0
  750. /package/dist/components/{NumberInput → InputNumber}/IncrementButton.js +0 -0
  751. /package/src/components/{NumberInput → InputNumber}/IncrementButton.tsx +0 -0
@@ -1,12 +1,12 @@
1
- import { TextInput } from './TextInput';
1
+ import { TimePicker } from './';
2
2
  import { hasNoBasicA11yIssues } from '-/rtl/hasNoBasicA11yIssues';
3
3
  import { render } from '-/rtl/util';
4
4
 
5
5
  const TestBed = () => (
6
- <TextInput aria-label="Example label" name="Example name" onChange={() => {}} value="text value" />
6
+ <TimePicker aria-label="Example label" name="example-name" onChange={() => {}} value="text value" />
7
7
  );
8
8
 
9
- describe('TextInput (RTL)', () => {
9
+ describe('TimePicker (RTL)', () => {
10
10
  it('has no basic a11y issues', hasNoBasicA11yIssues(<TestBed />));
11
11
 
12
12
  it('renders', () => {
@@ -1,81 +1,99 @@
1
- import './time-input.scss';
1
+ import './time-picker.scss';
2
2
  import { SvgSchedule } from '@bspk/icons/Schedule';
3
3
  import { FocusTrap } from 'focus-trap-react';
4
- import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
- import { TimeInputListbox } from './Listbox';
6
- import { TimeInputSegment } from './Segment';
4
+ import { useCallback, useMemo, useRef, useState } from 'react';
5
+ import { TimePickerListbox } from './Listbox';
6
+ import { TimePickerSegment } from './Segment';
7
+ import {
8
+ HOUR_OPTIONS,
9
+ MINUTE_OPTIONS,
10
+ MERIDIEM_OPTIONS,
11
+ Meridiem,
12
+ partsToStringValue,
13
+ stringValueToParts,
14
+ } from './utils';
7
15
  import { Button } from '-/components/Button';
16
+ import { useFieldInit } from '-/components/Field';
17
+ import { InputProps } from '-/components/Input';
8
18
  import { Menu } from '-/components/Menu';
9
19
  import { Portal } from '-/components/Portal';
10
- import { TextInputProps } from '-/components/TextInput';
11
20
  import { useFloating } from '-/hooks/useFloating';
12
- import { useId } from '-/hooks/useId';
13
21
  import { useOutsideClick } from '-/hooks/useOutsideClick';
22
+ import { ElementProps, FieldControlProps } from '-/types/common';
14
23
  import { handleKeyDown } from '-/utils/handleKeyDown';
15
24
 
16
- export const MINUTE_OPTIONS = ['00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'];
17
- export const HOUR_OPTIONS = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
18
- export const MERIDIEM_OPTIONS = ['AM', 'PM'];
19
-
20
- type Minute = (typeof MINUTE_OPTIONS)[number];
21
- type Hour = (typeof HOUR_OPTIONS)[number];
22
- type Meridiem = (typeof MERIDIEM_OPTIONS)[number];
23
-
24
- export type TimeInputProps = Pick<
25
- TextInputProps,
26
- | 'aria-describedby'
27
- | 'aria-errormessage'
28
- | 'aria-label'
29
- | 'disabled'
30
- | 'id'
31
- | 'invalid'
32
- | 'name'
33
- | 'readOnly'
34
- | 'size'
35
- > & {
36
- value?: string;
37
- };
25
+ export type TimePickerProps = FieldControlProps & Pick<InputProps, 'size'>;
38
26
 
39
27
  /**
40
28
  * An input field that allows a customer to manually type in a specific time or triggers a time picker combobox to
41
29
  * select a date.
42
30
  *
31
+ * For a more complete example with field usage, see the TimePickerField component.
32
+ *
43
33
  * @example
44
- * import { TimeInput } from '@bspk/ui/TimeInput';
34
+ * import { TimePicker } from '@bspk/ui/TimePicker';
35
+ *
36
+ * function ExampleStandalone() {
37
+ * const [value, onChange] = React.useState('');
38
+ *
39
+ * return <TimePicker aria-label="Time" name="time" value={value} onChange={onChange} />;
40
+ * }
45
41
  *
46
- * function Example() {
47
- * return <TimeInput>Example TimeInput</TimeInput>;
42
+ * function ExampleWithField() {
43
+ * const [value, onChange] = React.useState('');
44
+ *
45
+ * return (
46
+ * <Field>
47
+ * <FieldLabel>Time</FieldLabel>
48
+ * <TimePicker value={value} onChange={onChange} />
49
+ * <FieldDescription>The time picker allows you to select a time.</FieldDescription>
50
+ * </Field>
51
+ * );
48
52
  * }
49
53
  *
50
- * @name TimeInput
54
+ * @name TimePicker
51
55
  * @phase UXReview
52
56
  */
53
- export function TimeInput({
57
+ export function TimePicker({
54
58
  value,
55
- 'aria-label': ariaLabel,
56
59
  disabled,
57
60
  id: idProp,
58
- invalid,
61
+ invalid: invalidProp,
59
62
  readOnly,
60
63
  name,
61
64
  size,
62
- 'aria-describedby': ariaDescribedBy,
63
- 'aria-errormessage': ariaErrorMessage,
64
- }: TimeInputProps) {
65
- const id = useId(idProp);
65
+ required = false,
66
+ onChange: onChangeProp,
67
+ 'aria-label': ariaLabel = 'Time picker',
68
+ ...props
69
+ }: ElementProps<TimePickerProps, 'div'>) {
70
+ const { id, ariaDescribedBy, ariaErrorMessage, invalid } = useFieldInit({
71
+ idProp,
72
+ required,
73
+ disabled,
74
+ readOnly,
75
+ invalidProp,
76
+ });
66
77
 
67
- const [inputValue, setInputValue] = useState(value);
78
+ const menuId = `${id}-time-picker-menu`;
68
79
 
69
- const [hours, setHours] = useState<(typeof HOUR_OPTIONS)[number]>();
70
- const [minutes, setMinutes] = useState<(typeof MINUTE_OPTIONS)[number]>();
71
- const [meridiem, setMeridiem] = useState<(typeof MERIDIEM_OPTIONS)[number]>('AM');
80
+ const { hours, minutes, meridiem } = useMemo(() => stringValueToParts(value || '00:00'), [value]);
72
81
 
73
- useEffect(() => {
74
- setInputValue(
75
- `${hours?.toString().padStart(2, '0')}:${minutes?.toString().padStart(2, '0')} ${meridiem || ''}`.trim(),
76
- );
77
- if (hours !== undefined && minutes === undefined) setMinutes('00');
78
- }, [hours, minutes, meridiem]);
82
+ const setValue = useCallback(
83
+ (
84
+ params: Partial<{
85
+ hours?: string;
86
+ minutes?: string;
87
+ meridiem?: Meridiem;
88
+ }>,
89
+ ) => {
90
+ const nextValue = { hours, minutes, meridiem, ...params };
91
+ onChangeProp(
92
+ partsToStringValue(nextValue.hours?.toString(), nextValue.minutes?.toString(), nextValue.meridiem),
93
+ );
94
+ },
95
+ [hours, minutes, meridiem, onChangeProp],
96
+ );
79
97
 
80
98
  const [open, setOpenState] = useState(false);
81
99
 
@@ -132,20 +150,22 @@ export function TimeInput({
132
150
  } | null>(null);
133
151
  const buttonRef = useRef<HTMLElement | null>(null);
134
152
 
153
+ const [firstField, setFirstField] = useState<HTMLElement | null>(null);
154
+
135
155
  return (
136
156
  <>
137
157
  <div
158
+ {...props}
138
159
  aria-describedby={ariaErrorMessage || ariaDescribedBy || undefined}
139
- data-aria-label={ariaLabel || undefined}
140
- data-bspk="time-input"
160
+ aria-label={ariaLabel || undefined}
161
+ data-bspk="time-picker"
141
162
  data-disabled={disabled || undefined}
142
163
  data-invalid={invalid || undefined}
143
164
  data-name={name || undefined}
144
165
  data-open={open || undefined}
145
166
  data-readonly={readOnly || undefined}
146
167
  data-size={size || undefined}
147
- data-value={inputValue || undefined}
148
- id={id}
168
+ data-value={value || undefined}
149
169
  onClickCapture={() => {
150
170
  if (disabled || readOnly) return;
151
171
  elements.reference?.querySelector<HTMLElement>('[tabIndex]')?.focus();
@@ -155,34 +175,49 @@ export function TimeInput({
155
175
  elements.setReference(node);
156
176
  }}
157
177
  role="group"
158
- tabIndex={disabled || readOnly ? -1 : 0}
178
+ tabIndex={-1}
159
179
  >
160
- <TimeInputSegment
180
+ <input
181
+ aria-hidden
182
+ data-sr-only
183
+ id={id}
184
+ name={name}
185
+ onChange={(e) => onChangeProp(e.target.value)}
186
+ onFocus={() => firstField?.focus()}
187
+ tabIndex={-1}
188
+ value={value}
189
+ />
190
+ <TimePickerSegment
161
191
  disabled={disabled}
162
192
  name={`${name}-hours`}
163
- onChange={(next) => setHours(next || undefined)}
193
+ onChange={(next) => setValue({ hours: next || undefined })}
164
194
  readOnly={readOnly}
195
+ setRef={setFirstField}
165
196
  type="hours"
166
197
  value={hours}
167
198
  />
168
199
  <span aria-hidden="true">:</span>
169
- <TimeInputSegment
200
+ <TimePickerSegment
170
201
  disabled={disabled}
171
202
  name={`${name}-minutes`}
172
- onChange={(next) => setMinutes(next || undefined)}
203
+ onChange={(next) => setValue({ minutes: next || undefined })}
173
204
  readOnly={readOnly}
174
205
  type="minutes"
175
206
  value={minutes}
176
207
  />
177
- <TimeInputSegment
208
+ <TimePickerSegment
178
209
  disabled={disabled}
179
210
  name={`${name}-meridiem`}
180
- onChange={(next) => setMeridiem(next || 'AM')}
211
+ onChange={(next) => setValue({ meridiem: next || 'AM' })}
181
212
  readOnly={readOnly}
182
213
  type="meridiem"
183
214
  value={meridiem}
184
215
  />
185
216
  <Button
217
+ aria-controls={open ? menuId : undefined}
218
+ aria-expanded={open}
219
+ aria-haspopup="listbox"
220
+ as="span"
186
221
  disabled={disabled || readOnly}
187
222
  icon={<SvgSchedule />}
188
223
  iconOnly
@@ -191,18 +226,20 @@ export function TimeInput({
191
226
  }}
192
227
  label={`${open ? 'Close' : 'Open'} Time Picker`}
193
228
  onClick={() => setOpen(!open)}
229
+ role="combobox"
194
230
  variant="tertiary"
195
231
  />
196
232
  </div>
197
233
  {!!open && (
198
234
  <Portal>
199
235
  <Menu
236
+ id={menuId}
200
237
  innerRef={(node) => {
201
238
  if (!node) return;
202
239
  elements.setFloating(node as HTMLElement);
203
240
  }}
204
241
  label="Select time"
205
- owner="time-input"
242
+ owner="time-picker"
206
243
  style={floatingStyles}
207
244
  >
208
245
  <FocusTrap
@@ -222,27 +259,27 @@ export function TimeInput({
222
259
  listBoxRefs.current.hours?.focus();
223
260
  }}
224
261
  >
225
- <TimeInputListbox
262
+ <TimePickerListbox
226
263
  onSelect={(next) => {
227
- setHours(next as Hour);
264
+ setValue({ hours: next });
228
265
  setTimeout(() => listBoxRefs.current?.minutes?.focus(), 10);
229
266
  }}
230
267
  options={hourOptions}
231
268
  selectedValue={hours}
232
269
  type="hours"
233
270
  />
234
- <TimeInputListbox
271
+ <TimePickerListbox
235
272
  onSelect={(next) => {
236
- setMinutes(next as Minute);
273
+ setValue({ minutes: next });
237
274
  setTimeout(() => listBoxRefs.current?.meridiem?.focus(), 10);
238
275
  }}
239
276
  options={minuteOptions}
240
277
  selectedValue={minutes}
241
278
  type="minutes"
242
279
  />
243
- <TimeInputListbox
280
+ <TimePickerListbox
244
281
  onSelect={(next) => {
245
- setMeridiem(next as Meridiem);
282
+ setValue({ meridiem: next as Meridiem });
246
283
  setOpen(false);
247
284
  setTimeout(() => buttonRef.current?.focus(), 10);
248
285
  }}
@@ -0,0 +1,8 @@
1
+ import { TimePickerProps } from './TimePicker';
2
+ import { ComponentExample } from '-/utils/demo';
3
+
4
+ export const TimePickerExample: ComponentExample<TimePickerProps> = {
5
+ variants: false,
6
+
7
+ render: ({ props, Component }) => <Component {...props} />,
8
+ };
@@ -0,0 +1 @@
1
+ export * from './TimePicker';
@@ -1,4 +1,4 @@
1
- [data-bspk='time-input'] {
1
+ [data-bspk='time-picker'] {
2
2
  --border-color: var(--stroke-neutral-base);
3
3
 
4
4
  display: flex;
@@ -7,18 +7,18 @@
7
7
  border: solid 1px var(--border-color);
8
8
  height: var(--field-height);
9
9
  border-radius: var(--radius-sm);
10
- padding: 0 0 0 var(--field-padding);
10
+ padding: 0 0 0 var(--field-padding, var(--spacing-sizing-02));
11
11
  width: 100%;
12
12
  justify-content: flex-start;
13
13
  align-items: center;
14
14
 
15
- &:hover:not(:focus-within) {
15
+ &:hover:not(:focus-within, [data-disabled], [data-readonly]) {
16
16
  background:
17
17
  linear-gradient(var(--interactions-hover-opacity), var(--interactions-hover-opacity)),
18
18
  linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base));
19
19
  }
20
20
 
21
- &:active:not(:focus-within) {
21
+ &:active:not(:focus-within, [data-disabled], [data-readonly]) {
22
22
  background:
23
23
  linear-gradient(var(--interactions-press-opacity), var(--interactions-press-opacity)),
24
24
  linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base));
@@ -27,6 +27,7 @@
27
27
  &[data-readonly] {
28
28
  --border-color: var(--stroke-neutral-disabled-light);
29
29
 
30
+ pointer-events: none;
30
31
  background:
31
32
  linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)),
32
33
  linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base));
@@ -36,6 +37,7 @@
36
37
  &:has(input[disabled]) {
37
38
  --border-color: var(--stroke-neutral-disabled-light);
38
39
 
40
+ pointer-events: none;
39
41
  background:
40
42
  linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)),
41
43
  linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base));
@@ -110,7 +112,7 @@
110
112
  }
111
113
  }
112
114
 
113
- [data-bspk-owner='time-input'][data-bspk-utility='menu'] {
115
+ [data-bspk-owner='time-picker'][data-bspk-utility='menu'] {
114
116
  overflow: hidden;
115
117
  height: 324px;
116
118
 
@@ -0,0 +1,26 @@
1
+ import { stringValueToParts, Meridiem, partsToStringValue } from './utils';
2
+
3
+ const FIXTURES: {
4
+ hours: string;
5
+ minutes: string;
6
+ meridiem: Meridiem;
7
+ str: string;
8
+ }[] = [
9
+ { hours: '12', minutes: '00', meridiem: 'AM', str: '00:00' },
10
+ { hours: '01', minutes: '15', meridiem: 'AM', str: '01:15' },
11
+ { hours: '12', minutes: '30', meridiem: 'PM', str: '12:30' },
12
+ { hours: '03', minutes: '45', meridiem: 'PM', str: '15:45' },
13
+ { hours: '11', minutes: '59', meridiem: 'PM', str: '23:59' },
14
+ ];
15
+
16
+ describe('stringValueToParts', () => {
17
+ FIXTURES.forEach(({ str, hours, minutes, meridiem }) => {
18
+ it(`should parse "${str}" correctly`, () => {
19
+ expect(stringValueToParts(str)).toEqual({ hours, minutes, meridiem, str });
20
+ });
21
+
22
+ it(`should unParse "${JSON.stringify({ hours, minutes, meridiem })}" correctly`, () => {
23
+ expect(partsToStringValue(hours, minutes, meridiem)).toEqual(str);
24
+ });
25
+ });
26
+ });
@@ -0,0 +1,44 @@
1
+ import { format, isValid, parse } from 'date-fns';
2
+
3
+ export const MINUTE_OPTIONS = ['00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'];
4
+ export const HOUR_OPTIONS = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
5
+ export const MERIDIEM_OPTIONS = ['AM', 'PM'];
6
+
7
+ export type Meridiem = 'AM' | 'PM';
8
+
9
+ export function stringValueToParts(timeString: string) {
10
+ // Parse the 24-hour time string into a Date object
11
+ // 'HH:mm' is the format for 24-hour time (e.g., '14:30')
12
+ // new Date() provides a base date for parsing, which is necessary
13
+ // but the date part won't affect the time parsing here.
14
+
15
+ const dateObj = parse(timeString, 'HH:mm', new Date());
16
+
17
+ const isValidDate = isValid(dateObj);
18
+
19
+ // Extract hours, minutes, and AM/PM using format
20
+ return {
21
+ hours: isValidDate ? format(dateObj, 'hh') : undefined,
22
+ minutes: isValidDate ? format(dateObj, 'mm') : undefined,
23
+ meridiem: isValidDate ? (format(dateObj, 'a') as Meridiem) : 'AM',
24
+ str: timeString,
25
+ };
26
+ }
27
+
28
+ export function partsToStringValue(hours: string | undefined, minutes: string | undefined, meridiem: Meridiem): string {
29
+ if (typeof hours === 'undefined' || typeof minutes === 'undefined') {
30
+ return '';
31
+ }
32
+
33
+ const minutesNumber = Number(minutes);
34
+
35
+ let hours24 = Number(hours);
36
+ if (meridiem === 'PM' && hours24 < 12) {
37
+ hours24 += 12;
38
+ } else if (meridiem === 'AM' && hours24 === 12) {
39
+ hours24 = 0;
40
+ }
41
+
42
+ // Format the date object back to a 24-hour time string
43
+ return `${hours24.toString().padStart(2, '0')}:${minutesNumber.toString().padStart(2, '0')}`;
44
+ }
@@ -0,0 +1,17 @@
1
+ import { TimePickerField } from '.';
2
+ import { hasNoBasicA11yIssues } from '-/rtl/hasNoBasicA11yIssues';
3
+ import { render } from '-/rtl/util';
4
+
5
+ const TestBed = () => (
6
+ <TimePickerField label="Example field label" name="example-field-name" onChange={() => {}} value="" />
7
+ );
8
+
9
+ describe('TimePickerField (RTL)', () => {
10
+ it('has no basic a11y issues', hasNoBasicA11yIssues(<TestBed />));
11
+
12
+ it('renders', () => {
13
+ const { getAllByLabelText } = render(<TestBed />);
14
+
15
+ expect(getAllByLabelText('Example field label')[0]).toBeInTheDocument();
16
+ });
17
+ });
@@ -0,0 +1,30 @@
1
+ import { FormField, FormFieldControlProps } from '-/components/FormField';
2
+ import { TimePicker, TimePickerProps } from '-/components/TimePicker';
3
+
4
+ export type TimePickerFieldProps = FormFieldControlProps<TimePickerProps>;
5
+
6
+ /**
7
+ * A field wrapper for the TimePicker component.
8
+ *
9
+ * This component takes properties from the FormField and TimePicker components.
10
+ *
11
+ * @name TimePickerField
12
+ * @phase UXReview
13
+ *
14
+ * @generated
15
+ */
16
+ export function TimePickerField({
17
+ label,
18
+ helperText,
19
+ labelTrailing,
20
+ errorMessage,
21
+ ...controlProps
22
+ }: TimePickerFieldProps) {
23
+ return (
24
+ <FormField errorMessage={errorMessage} helperText={helperText} label={label} labelTrailing={labelTrailing}>
25
+ <TimePicker {...controlProps} />
26
+ </FormField>
27
+ );
28
+ }
29
+
30
+ /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
@@ -0,0 +1 @@
1
+ export * from './TimePickerField';
@@ -1,5 +1,6 @@
1
1
  import './toggle-option.scss';
2
2
  import { ReactElement } from 'react';
3
+ import { ListItem } from '-/components/ListItem';
3
4
  import { CommonProps } from '-/types/common';
4
5
 
5
6
  export type ToggleOptionControlProps<T extends { 'aria-label'?: string }> = Omit<T, 'aria-label'> &
@@ -31,11 +32,15 @@ export type ToggleOptionProps = CommonProps<'disabled' | 'readOnly'> & {
31
32
  */
32
33
  export function ToggleOption({ label, description, children, disabled, readOnly }: ToggleOptionProps) {
33
34
  return (
34
- <label aria-disabled={!!disabled || !!readOnly || undefined} data-bspk="toggle-option">
35
- <span data-control>{children}</span>
36
- <span data-label>{label}</span>
37
- {description && <span data-description>{description}</span>}
38
- </label>
35
+ <ListItem
36
+ as="label"
37
+ data-disabled={disabled}
38
+ data-readonly={readOnly}
39
+ label={label}
40
+ leading={children}
41
+ subText={description}
42
+ width="hug"
43
+ />
39
44
  );
40
45
  }
41
46
 
@@ -44,7 +44,7 @@ export type TooltipProps = {
44
44
  * import { Tooltip } from '@bspk/ui/Tooltip';
45
45
  * import { Button } from '@bspk/ui/Button';
46
46
  *
47
- * export function Example() {
47
+ * function Example() {
48
48
  * return (
49
49
  * <Tooltip label="I explain what this button does" placement="top">
50
50
  * {(triggerProps) => <Button {...triggerProps}>Click me</Button>}
@@ -5,15 +5,13 @@ import { ComponentExample } from '-/utils/demo';
5
5
  export const TooltipExample: ComponentExample<TooltipProps> = {
6
6
  render: ({ props: state, Component }) => {
7
7
  return (
8
- <>
9
- <Component
10
- {...state}
11
- label={`Hover over me ${state.label || ''}`}
12
- placement={[state.placement].flat()[0] || 'top'}
13
- >
14
- {(triggerProps) => <Button {...triggerProps} label="Hover over me" variant="secondary" />}
15
- </Component>
16
- </>
8
+ <Component
9
+ {...state}
10
+ label={`Hover over me ${state.label || ''}`}
11
+ placement={[state.placement].flat()[0] || 'top'}
12
+ >
13
+ {(triggerProps) => <Button {...triggerProps} label="Hover over me" variant="secondary" />}
14
+ </Component>
17
15
  );
18
16
  },
19
17
  };
@@ -49,7 +49,7 @@ export type TxtProps<As extends ElementType = 'span'> = {
49
49
  * @example
50
50
  * import { Txt } from '@bspk/ui/Txt';
51
51
  *
52
- * export function Example() {
52
+ * function Example() {
53
53
  * return <Txt>Example Txt</Txt>;
54
54
  * }
55
55
  *
@@ -4,7 +4,7 @@ export const BRANDS: {
4
4
  /** The title of the brand. */
5
5
  title: string;
6
6
  /** The slug of the brand, used in URLs and identifiers. */
7
- slug: Brand;
7
+ slug: Brand | 'example';
8
8
  }[] = [
9
9
  {
10
10
  title: 'Anywhere',
@@ -42,4 +42,8 @@ export const BRANDS: {
42
42
  title: "Sotheby's",
43
43
  slug: 'sothebys',
44
44
  },
45
+ {
46
+ title: 'Example',
47
+ slug: 'example',
48
+ },
45
49
  ] as const;
@@ -1,4 +1,4 @@
1
- import { useState, KeyboardEvent } from 'react';
1
+ import { useState, KeyboardEvent, useEffect } from 'react';
2
2
  import { getElementById } from '-/utils/dom';
3
3
  import { KeysCallback } from '-/utils/handleKeyDown';
4
4
  import { KeyboardEventCode } from '-/utils/keyboard';
@@ -66,6 +66,11 @@ export function useArrowNavigation({
66
66
  } {
67
67
  const [activeElementId, setActiveElementIdBase] = useState<string | null>(defaultActiveId || null);
68
68
 
69
+ useEffect(() => {
70
+ // If the active element is not in the list, reset the first ID as active
71
+ if (activeElementId && !ids.includes(activeElementId)) setActiveElementIdBase(ids[0]);
72
+ }, [ids, activeElementId]);
73
+
69
74
  const setActiveElementId = (id: string | null) => {
70
75
  setActiveElementIdBase(id);
71
76
  getElementById(id)?.scrollIntoView({
@@ -9,7 +9,7 @@ import { CheckboxProps } from '-/components/Checkbox';
9
9
  * import { Checkbox } from "@bspk/ui/Checkbox";
10
10
  * import { useCheckboxGroupState } from "@bspk/ui/hooks/useCheckboxGroupState";
11
11
  *
12
- * export function Example() {
12
+ * function Example() {
13
13
  * const allValues = ["Red", "Orange", "Yellow", "Green"];
14
14
  *
15
15
  * const { allCheckboxProps, checkboxProps, values } = useCheckboxGroupState(allValues, "fruits");
@@ -9,7 +9,7 @@ import { CheckboxProps } from '-/components/Checkbox';
9
9
  * import { Checkbox } from '@bspk/ui/Checkbox';
10
10
  * import { useCheckboxState } from '@bspk/ui/hooks/useCheckboxState';
11
11
  *
12
- * export function Example() {
12
+ * function Example() {
13
13
  * const { checkboxProps } = useCheckboxState('fruits');
14
14
  * return <Checkbox aria-label="cherry" {...checkboxProps('cherry')} />;
15
15
  * }
@@ -5,7 +5,7 @@ import { useState, useLayoutEffect } from 'react';
5
5
  * @example
6
6
  * import { useRef } from 'react';
7
7
  * import { useContainerWidth } from '@bspk/ui/hooks/useContainerWidth';
8
- * export function Example() {
8
+ * function Example() {
9
9
  * const containerRef = useRef<HTMLDivElement>(null);
10
10
  * const width = useContainerWidth(containerRef);
11
11
  * return <div ref={containerRef}>Width: {width}px</div>;
@@ -7,7 +7,7 @@ import { useEffect, useState } from 'react';
7
7
  * import { Modal } from '@bspk/ui/Modal';
8
8
  * import { useModalState } from '@bspk/ui/hooks/useModalState';
9
9
  *
10
- * export function Example() {
10
+ * function Example() {
11
11
  * const modalProps = useModalState(false);
12
12
  * return <Modal {...modalProps}>...</Modal>
13
13
  * }