@bspk/ui 1.3.11 → 1.3.17

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 (506) hide show
  1. package/dist/components/Accordion/Accordion.d.ts +22 -20
  2. package/dist/components/Accordion/Accordion.js +22 -20
  3. package/dist/components/Accordion/Accordion.js.map +1 -1
  4. package/dist/components/Accordion/AccordionExample.js +5 -4
  5. package/dist/components/Accordion/AccordionExample.js.map +1 -1
  6. package/dist/components/Avatar/Avatar.d.ts +1 -2
  7. package/dist/components/Avatar/Avatar.js +2 -3
  8. package/dist/components/Avatar/Avatar.js.map +1 -1
  9. package/dist/components/Avatar/avatar.css +13 -8
  10. package/dist/components/Avatar/avatar.css.js +13 -8
  11. package/dist/components/AvatarGroup/AvatarGroup.d.ts +1 -1
  12. package/dist/components/AvatarGroup/AvatarGroup.js +1 -1
  13. package/dist/components/Badge/Badge.d.ts +1 -1
  14. package/dist/components/Badge/Badge.js +1 -1
  15. package/dist/components/Badge/BadgeExample.js +0 -1
  16. package/dist/components/Badge/BadgeExample.js.map +1 -1
  17. package/dist/components/BadgeDot/BadgeDot.d.ts +1 -1
  18. package/dist/components/BadgeDot/BadgeDot.js +1 -1
  19. package/dist/components/BadgeDot/BadgeDotExample.js +0 -1
  20. package/dist/components/BadgeDot/BadgeDotExample.js.map +1 -1
  21. package/dist/components/BannerAlert/BannerAlert.d.ts +14 -12
  22. package/dist/components/BannerAlert/BannerAlert.js +14 -12
  23. package/dist/components/BannerAlert/BannerAlert.js.map +1 -1
  24. package/dist/components/BannerAlert/BannerAlertExample.js +0 -1
  25. package/dist/components/BannerAlert/BannerAlertExample.js.map +1 -1
  26. package/dist/components/Breadcrumb/Breadcrumb.d.ts +20 -18
  27. package/dist/components/Breadcrumb/Breadcrumb.js +20 -18
  28. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
  29. package/dist/components/Button/Button.d.ts +29 -4
  30. package/dist/components/Button/Button.js +33 -8
  31. package/dist/components/Button/Button.js.map +1 -1
  32. package/dist/components/Button/button.css +4 -3
  33. package/dist/components/Button/button.css.js +4 -3
  34. package/dist/components/Calendar/Calendar.d.ts +5 -41
  35. package/dist/components/Calendar/Calendar.js +61 -185
  36. package/dist/components/Calendar/Calendar.js.map +1 -1
  37. package/dist/components/Calendar/CalendarExample.js +0 -1
  38. package/dist/components/Calendar/CalendarExample.js.map +1 -1
  39. package/dist/components/Calendar/calendar.css +35 -28
  40. package/dist/components/Calendar/calendar.css.js +35 -28
  41. package/dist/components/Calendar/index.d.ts +1 -0
  42. package/dist/components/Calendar/index.js +1 -0
  43. package/dist/components/Calendar/index.js.map +1 -1
  44. package/dist/components/Calendar/utils.d.ts +11 -0
  45. package/dist/components/Calendar/utils.js +76 -0
  46. package/dist/components/Calendar/utils.js.map +1 -0
  47. package/dist/components/Card/Card.d.ts +1 -1
  48. package/dist/components/Card/Card.js +1 -1
  49. package/dist/components/Carousel/Carousel.d.ts +8 -8
  50. package/dist/components/Carousel/Carousel.js +8 -8
  51. package/dist/components/Carousel/carousel.css +0 -1
  52. package/dist/components/Carousel/carousel.css.js +0 -1
  53. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  54. package/dist/components/Checkbox/Checkbox.js +1 -1
  55. package/dist/components/Checkbox/checkbox.css +3 -1
  56. package/dist/components/Checkbox/checkbox.css.js +3 -1
  57. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  58. package/dist/components/CheckboxGroup/CheckboxGroup.js +1 -1
  59. package/dist/components/CheckboxGroup/checkbox-group.css +1 -1
  60. package/dist/components/CheckboxGroup/checkbox-group.css.js +1 -1
  61. package/dist/components/CheckboxGroupField/CheckboxGroupField.d.ts +1 -1
  62. package/dist/components/CheckboxGroupField/CheckboxGroupField.js +1 -1
  63. package/dist/components/CheckboxOption/CheckboxOption.d.ts +1 -1
  64. package/dist/components/CheckboxOption/CheckboxOption.js +1 -1
  65. package/dist/components/Chip/Chip.d.ts +1 -1
  66. package/dist/components/Chip/Chip.js +1 -1
  67. package/dist/components/ChipGroup/ChipGroup.d.ts +1 -1
  68. package/dist/components/ChipGroup/ChipGroup.js +1 -1
  69. package/dist/components/DatePicker/DatePicker.d.ts +23 -11
  70. package/dist/components/DatePicker/DatePicker.js +20 -83
  71. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  72. package/dist/components/DatePicker/DatePickerExample.d.ts +1 -0
  73. package/dist/components/DatePicker/DatePickerExample.js +10 -2
  74. package/dist/components/DatePicker/DatePickerExample.js.map +1 -1
  75. package/dist/components/DatePicker/date-picker.css +9 -0
  76. package/dist/components/DatePicker/date-picker.css.js +9 -0
  77. package/dist/components/DatePickerField/DatePickerField.d.ts +1 -1
  78. package/dist/components/DatePickerField/DatePickerField.js +1 -1
  79. package/dist/components/Divider/Divider.d.ts +4 -4
  80. package/dist/components/Divider/Divider.js +4 -4
  81. package/dist/components/Divider/DividerExample.js +17 -20
  82. package/dist/components/Divider/DividerExample.js.map +1 -1
  83. package/dist/components/Drawer/Drawer.d.ts +8 -10
  84. package/dist/components/Drawer/Drawer.js +9 -12
  85. package/dist/components/Drawer/Drawer.js.map +1 -1
  86. package/dist/components/Drawer/DrawerExample.d.ts +1 -0
  87. package/dist/components/Drawer/DrawerExample.js +10 -4
  88. package/dist/components/Drawer/DrawerExample.js.map +1 -1
  89. package/dist/components/Drawer/drawer.css +6 -0
  90. package/dist/components/Drawer/drawer.css.js +6 -0
  91. package/dist/components/EmptyState/EmptyState.d.ts +2 -2
  92. package/dist/components/EmptyState/EmptyState.js +4 -7
  93. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  94. package/dist/components/EmptyState/EmptyStateExample.js +5 -6
  95. package/dist/components/EmptyState/EmptyStateExample.js.map +1 -1
  96. package/dist/components/ExamplePlaceholder/ExamplePlaceholder.d.ts +6 -13
  97. package/dist/components/ExamplePlaceholder/ExamplePlaceholder.js +12 -7
  98. package/dist/components/ExamplePlaceholder/ExamplePlaceholder.js.map +1 -1
  99. package/dist/components/Fab/Fab.d.ts +5 -3
  100. package/dist/components/Fab/Fab.js +8 -6
  101. package/dist/components/Fab/Fab.js.map +1 -1
  102. package/dist/components/Fab/FabExample.d.ts +1 -0
  103. package/dist/components/Fab/FabExample.js +6 -0
  104. package/dist/components/Fab/FabExample.js.map +1 -1
  105. package/dist/components/Fab/fab.css +5 -3
  106. package/dist/components/Fab/fab.css.js +5 -3
  107. package/dist/components/FileUpload/FileUpload.d.ts +1 -1
  108. package/dist/components/FileUpload/FileUpload.js +1 -1
  109. package/dist/components/FileUploadItem/FileUploadItem.d.ts +1 -1
  110. package/dist/components/FileUploadItem/FileUploadItem.js +1 -1
  111. package/dist/components/Flex/Flex.d.ts +55 -0
  112. package/dist/components/Flex/Flex.js +38 -0
  113. package/dist/components/Flex/Flex.js.map +1 -0
  114. package/dist/components/Flex/FlexExample.d.ts +5 -0
  115. package/dist/components/Flex/FlexExample.js +13 -0
  116. package/dist/components/Flex/FlexExample.js.map +1 -0
  117. package/dist/components/Flex/index.d.ts +1 -0
  118. package/dist/components/Flex/index.js +2 -0
  119. package/dist/components/Flex/index.js.map +1 -0
  120. package/dist/components/FormField/FormFieldExample.js +0 -1
  121. package/dist/components/FormField/FormFieldExample.js.map +1 -1
  122. package/dist/components/Grid/Grid.d.ts +48 -0
  123. package/dist/components/Grid/Grid.js +36 -0
  124. package/dist/components/Grid/Grid.js.map +1 -0
  125. package/dist/components/Grid/GridExample.d.ts +3 -0
  126. package/dist/components/Grid/GridExample.js +28 -0
  127. package/dist/components/Grid/GridExample.js.map +1 -0
  128. package/dist/components/Grid/index.d.ts +1 -0
  129. package/dist/components/Grid/index.js +2 -0
  130. package/dist/components/Grid/index.js.map +1 -0
  131. package/dist/components/InlineAlert/InlineAlert.d.ts +1 -1
  132. package/dist/components/InlineAlert/InlineAlert.js +1 -1
  133. package/dist/components/Input/Input.d.ts +5 -9
  134. package/dist/components/Input/Input.js +5 -9
  135. package/dist/components/Input/Input.js.map +1 -1
  136. package/dist/components/Input/InputElement.js +3 -6
  137. package/dist/components/Input/InputElement.js.map +1 -1
  138. package/dist/components/Input/InputExample.d.ts +1 -0
  139. package/dist/components/Input/InputExample.js +10 -1
  140. package/dist/components/Input/InputExample.js.map +1 -1
  141. package/dist/components/Input/input.css +6 -1
  142. package/dist/components/Input/input.css.js +6 -1
  143. package/dist/components/InputField/InputField.d.ts +1 -1
  144. package/dist/components/InputField/InputField.js +1 -1
  145. package/dist/components/InputNumber/InputNumber.d.ts +6 -15
  146. package/dist/components/InputNumber/InputNumber.js +6 -15
  147. package/dist/components/InputNumber/InputNumber.js.map +1 -1
  148. package/dist/components/InputNumber/InputNumberExample.d.ts +1 -0
  149. package/dist/components/InputNumber/InputNumberExample.js +10 -1
  150. package/dist/components/InputNumber/InputNumberExample.js.map +1 -1
  151. package/dist/components/InputNumber/input-number.css +6 -4
  152. package/dist/components/InputNumber/input-number.css.js +6 -4
  153. package/dist/components/InputNumberField/InputNumberField.d.ts +1 -1
  154. package/dist/components/InputNumberField/InputNumberField.js +1 -1
  155. package/dist/components/InputPhone/InputPhone.d.ts +7 -9
  156. package/dist/components/InputPhone/InputPhone.js +19 -19
  157. package/dist/components/InputPhone/InputPhone.js.map +1 -1
  158. package/dist/components/InputPhone/InputPhoneExample.d.ts +2 -1
  159. package/dist/components/InputPhone/InputPhoneExample.js +9 -1
  160. package/dist/components/InputPhone/InputPhoneExample.js.map +1 -1
  161. package/dist/components/InputPhoneField/InputPhoneField.d.ts +1 -1
  162. package/dist/components/InputPhoneField/InputPhoneField.js +1 -1
  163. package/dist/components/Link/Link.d.ts +1 -1
  164. package/dist/components/Link/Link.js +1 -1
  165. package/dist/components/ListItem/ListItem.d.ts +1 -1
  166. package/dist/components/ListItem/ListItem.js +1 -1
  167. package/dist/components/Menu/Menu.d.ts +1 -3
  168. package/dist/components/Menu/Menu.js +1 -3
  169. package/dist/components/Menu/Menu.js.map +1 -1
  170. package/dist/components/Modal/Modal.d.ts +1 -3
  171. package/dist/components/Modal/Modal.js +2 -4
  172. package/dist/components/Modal/Modal.js.map +1 -1
  173. package/dist/components/OTPInput/OTPInput.d.ts +1 -1
  174. package/dist/components/OTPInput/OTPInput.js +1 -1
  175. package/dist/components/OTPInput/OTPInputExample.js +0 -1
  176. package/dist/components/OTPInput/OTPInputExample.js.map +1 -1
  177. package/dist/components/PageControl/PageControl.d.ts +1 -1
  178. package/dist/components/PageControl/PageControl.js +1 -1
  179. package/dist/components/PageControl/PageControlExample.js +0 -1
  180. package/dist/components/PageControl/PageControlExample.js.map +1 -1
  181. package/dist/components/PageHeader/PageHeader.d.ts +57 -0
  182. package/dist/components/PageHeader/PageHeader.js +28 -0
  183. package/dist/components/PageHeader/PageHeader.js.map +1 -0
  184. package/dist/components/PageHeader/PageHeaderExample.d.ts +4 -0
  185. package/dist/components/PageHeader/PageHeaderExample.js +56 -0
  186. package/dist/components/PageHeader/PageHeaderExample.js.map +1 -0
  187. package/dist/components/PageHeader/index.d.ts +1 -0
  188. package/dist/components/PageHeader/index.js +2 -0
  189. package/dist/components/PageHeader/index.js.map +1 -0
  190. package/dist/components/PageHeader/page-header.css +35 -0
  191. package/dist/components/PageHeader/page-header.css.js +40 -0
  192. package/dist/components/Pagination/Pagination.d.ts +2 -2
  193. package/dist/components/Pagination/Pagination.js +8 -3
  194. package/dist/components/Pagination/Pagination.js.map +1 -1
  195. package/dist/components/Pagination/pagination.css +8 -2
  196. package/dist/components/Pagination/pagination.css.js +8 -2
  197. package/dist/components/Password/Password.d.ts +11 -16
  198. package/dist/components/Password/Password.js +11 -16
  199. package/dist/components/Password/Password.js.map +1 -1
  200. package/dist/components/Password/PasswordExample.d.ts +1 -0
  201. package/dist/components/Password/PasswordExample.js +9 -0
  202. package/dist/components/Password/PasswordExample.js.map +1 -1
  203. package/dist/components/PasswordField/PasswordField.d.ts +1 -1
  204. package/dist/components/PasswordField/PasswordField.js +1 -1
  205. package/dist/components/Popover/Popover.d.ts +1 -1
  206. package/dist/components/Popover/Popover.js +1 -1
  207. package/dist/components/Popover/PopoverExample.js +0 -1
  208. package/dist/components/Popover/PopoverExample.js.map +1 -1
  209. package/dist/components/Popover/popover.css +7 -5
  210. package/dist/components/Popover/popover.css.js +7 -5
  211. package/dist/components/ProgressBar/ProgressBar.d.ts +1 -1
  212. package/dist/components/ProgressBar/ProgressBar.js +1 -1
  213. package/dist/components/ProgressCircle/ProgressCircle.d.ts +1 -1
  214. package/dist/components/ProgressCircle/ProgressCircle.js +1 -1
  215. package/dist/components/ProgressionStepper/ProgressionStepper.d.ts +1 -1
  216. package/dist/components/ProgressionStepper/ProgressionStepper.js +1 -1
  217. package/dist/components/ProgressionStepper/ProgressionStepperExample.js +0 -1
  218. package/dist/components/ProgressionStepper/ProgressionStepperExample.js.map +1 -1
  219. package/dist/components/ProgressionStepper/progression-stepper.css +5 -3
  220. package/dist/components/ProgressionStepper/progression-stepper.css.js +5 -3
  221. package/dist/components/ProgressionStepperBar/ProgressionStepperBar.d.ts +1 -1
  222. package/dist/components/ProgressionStepperBar/ProgressionStepperBar.js +1 -1
  223. package/dist/components/ProgressionStepperBar/progression-stepper-bar.css +6 -6
  224. package/dist/components/ProgressionStepperBar/progression-stepper-bar.css.js +7 -7
  225. package/dist/components/RadioGroup/RadioGroup.d.ts +1 -1
  226. package/dist/components/RadioGroup/RadioGroup.js +1 -1
  227. package/dist/components/RadioGroup/radio-group.css +1 -1
  228. package/dist/components/RadioGroup/radio-group.css.js +1 -1
  229. package/dist/components/RadioGroupField/RadioGroupField.d.ts +1 -1
  230. package/dist/components/RadioGroupField/RadioGroupField.js +1 -1
  231. package/dist/components/Rating/Rating.d.ts +3 -2
  232. package/dist/components/Rating/Rating.js +5 -3
  233. package/dist/components/Rating/Rating.js.map +1 -1
  234. package/dist/components/SearchBar/SearchBar.d.ts +1 -1
  235. package/dist/components/SearchBar/SearchBar.js +3 -4
  236. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  237. package/dist/components/SegmentedControl/SegmentedControl.d.ts +1 -1
  238. package/dist/components/SegmentedControl/SegmentedControl.js +1 -1
  239. package/dist/components/SegmentedControl/segmented-control.css +3 -1
  240. package/dist/components/SegmentedControl/segmented-control.css.js +3 -1
  241. package/dist/components/Select/Select.d.ts +11 -24
  242. package/dist/components/Select/Select.js +11 -24
  243. package/dist/components/Select/Select.js.map +1 -1
  244. package/dist/components/Select/SelectExample.d.ts +1 -0
  245. package/dist/components/Select/SelectExample.js +18 -1
  246. package/dist/components/Select/SelectExample.js.map +1 -1
  247. package/dist/components/SelectField/SelectField.d.ts +1 -1
  248. package/dist/components/SelectField/SelectField.js +1 -1
  249. package/dist/components/Skeleton/Skeleton.d.ts +1 -1
  250. package/dist/components/Skeleton/Skeleton.js +1 -1
  251. package/dist/components/SkeletonText/SkeletonText.d.ts +1 -1
  252. package/dist/components/SkeletonText/SkeletonText.js +1 -1
  253. package/dist/components/Slider/Slider.d.ts +18 -3
  254. package/dist/components/Slider/Slider.js +20 -4
  255. package/dist/components/Slider/Slider.js.map +1 -1
  256. package/dist/components/Slider/SliderExample.d.ts +1 -0
  257. package/dist/components/Slider/SliderExample.js +7 -2
  258. package/dist/components/Slider/SliderExample.js.map +1 -1
  259. package/dist/components/Snackbar/Manager.d.ts +1 -1
  260. package/dist/components/Snackbar/Manager.js +1 -1
  261. package/dist/components/Snackbar/Snackbar.d.ts +1 -1
  262. package/dist/components/Snackbar/Snackbar.js +1 -1
  263. package/dist/components/Snackbar/SnackbarExample.js +0 -1
  264. package/dist/components/Snackbar/SnackbarExample.js.map +1 -1
  265. package/dist/components/Switch/Switch.d.ts +1 -1
  266. package/dist/components/Switch/Switch.js +1 -1
  267. package/dist/components/Switch/switch.css +11 -9
  268. package/dist/components/Switch/switch.css.js +11 -9
  269. package/dist/components/SwitchOption/SwitchOption.d.ts +1 -1
  270. package/dist/components/SwitchOption/SwitchOption.js +1 -1
  271. package/dist/components/TabGroup/TabGroup.d.ts +1 -1
  272. package/dist/components/TabGroup/TabGroup.js +1 -1
  273. package/dist/components/TabGroup/TabGroupExample.js +0 -1
  274. package/dist/components/TabGroup/TabGroupExample.js.map +1 -1
  275. package/dist/components/TabList/TabListExample.js +0 -1
  276. package/dist/components/TabList/TabListExample.js.map +1 -1
  277. package/dist/components/TabList/tab-list.css +5 -3
  278. package/dist/components/TabList/tab-list.css.js +5 -3
  279. package/dist/components/Table/Table.d.ts +2 -2
  280. package/dist/components/Table/Table.js +8 -8
  281. package/dist/components/Table/Table.js.map +1 -1
  282. package/dist/components/Table/TableExample.js +56 -54
  283. package/dist/components/Table/TableExample.js.map +1 -1
  284. package/dist/components/Table/utils.d.ts +2 -2
  285. package/dist/components/Table/utils.js +27 -22
  286. package/dist/components/Table/utils.js.map +1 -1
  287. package/dist/components/Tag/Tag.d.ts +1 -1
  288. package/dist/components/Tag/Tag.js +1 -1
  289. package/dist/components/Textarea/Textarea.d.ts +5 -8
  290. package/dist/components/Textarea/Textarea.js +5 -8
  291. package/dist/components/Textarea/Textarea.js.map +1 -1
  292. package/dist/components/Textarea/TextareaExample.d.ts +1 -0
  293. package/dist/components/Textarea/TextareaExample.js +12 -1
  294. package/dist/components/Textarea/TextareaExample.js.map +1 -1
  295. package/dist/components/Textarea/textarea.css +5 -3
  296. package/dist/components/Textarea/textarea.css.js +5 -3
  297. package/dist/components/TextareaField/TextareaField.d.ts +1 -1
  298. package/dist/components/TextareaField/TextareaField.js +1 -1
  299. package/dist/components/TimePicker/TimePicker.d.ts +5 -9
  300. package/dist/components/TimePicker/TimePicker.js +5 -9
  301. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  302. package/dist/components/TimePicker/TimePickerExample.d.ts +1 -0
  303. package/dist/components/TimePicker/TimePickerExample.js +9 -1
  304. package/dist/components/TimePicker/TimePickerExample.js.map +1 -1
  305. package/dist/components/TimePickerField/TimePickerField.d.ts +1 -1
  306. package/dist/components/TimePickerField/TimePickerField.js +1 -1
  307. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  308. package/dist/components/Tooltip/Tooltip.js +2 -2
  309. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  310. package/dist/components/Tooltip/tooltip.css +7 -3
  311. package/dist/components/Tooltip/tooltip.css.js +7 -3
  312. package/dist/components/Txt/Txt.d.ts +1 -1
  313. package/dist/components/Txt/Txt.js +1 -1
  314. package/dist/components/UIProvider/UIProvider.js +4 -6
  315. package/dist/components/UIProvider/UIProvider.js.map +1 -1
  316. package/dist/components/UIProvider/UIProviderExample.d.ts +0 -1
  317. package/dist/components/UIProvider/UIProviderExample.js +1 -46
  318. package/dist/components/UIProvider/UIProviderExample.js.map +1 -1
  319. package/dist/hooks/useControlledState.d.ts +7 -0
  320. package/dist/hooks/useControlledState.js +21 -0
  321. package/dist/hooks/useControlledState.js.map +1 -0
  322. package/dist/hooks/{useAddEventListener.js → useEventListener.js} +1 -1
  323. package/dist/hooks/useEventListener.js.map +1 -0
  324. package/dist/types/meta.d.ts +0 -1
  325. package/dist/types/meta.js +0 -7
  326. package/dist/types/meta.js.map +1 -1
  327. package/dist/utils/createCustomEvent.js +1 -1
  328. package/dist/utils/createCustomEvent.js.map +1 -1
  329. package/dist/utils/demo.d.ts +19 -2
  330. package/dist/utils/demo.js.map +1 -1
  331. package/dist/utils/dom.d.ts +1 -0
  332. package/dist/utils/dom.js +5 -0
  333. package/dist/utils/dom.js.map +1 -1
  334. package/dist/utils/handleKeyDown.d.ts +1 -0
  335. package/dist/utils/handleKeyDown.js +9 -3
  336. package/dist/utils/handleKeyDown.js.map +1 -1
  337. package/dist/utils/keyboard.d.ts +3 -1
  338. package/dist/utils/keyboard.js.map +1 -1
  339. package/dist/utils/sendAriaLiveMessage.d.ts +8 -0
  340. package/dist/utils/sendAriaLiveMessage.js +14 -0
  341. package/dist/utils/sendAriaLiveMessage.js.map +1 -0
  342. package/dist/utils/sizing.d.ts +3 -0
  343. package/dist/utils/sizing.js +28 -0
  344. package/dist/utils/sizing.js.map +1 -0
  345. package/dist/utils/uiContext.d.ts +0 -1
  346. package/dist/utils/uiContext.js.map +1 -1
  347. package/meta.ts +9 -8
  348. package/package.json +31 -25
  349. package/src/components/Accordion/Accordion.tsx +22 -20
  350. package/src/components/Accordion/AccordionExample.tsx +5 -4
  351. package/src/components/Avatar/Avatar.tsx +2 -3
  352. package/src/components/Avatar/avatar.scss +9 -6
  353. package/src/components/AvatarGroup/AvatarGroup.tsx +1 -1
  354. package/src/components/Badge/Badge.tsx +1 -1
  355. package/src/components/Badge/BadgeExample.tsx +0 -1
  356. package/src/components/BadgeDot/BadgeDot.tsx +1 -1
  357. package/src/components/BadgeDot/BadgeDotExample.tsx +0 -1
  358. package/src/components/BannerAlert/BannerAlert.tsx +14 -12
  359. package/src/components/BannerAlert/BannerAlertExample.tsx +0 -1
  360. package/src/components/Breadcrumb/Breadcrumb.tsx +20 -18
  361. package/src/components/Button/Button.tsx +36 -10
  362. package/src/components/Button/button.scss +13 -6
  363. package/src/components/Calendar/Calendar.rtl.test.tsx +1 -1
  364. package/src/components/Calendar/Calendar.tsx +156 -371
  365. package/src/components/Calendar/CalendarExample.tsx +0 -1
  366. package/src/components/Calendar/calendar.scss +46 -40
  367. package/src/components/Calendar/index.tsx +1 -0
  368. package/src/components/Calendar/utils.tsx +98 -0
  369. package/src/components/Card/Card.tsx +1 -1
  370. package/src/components/Carousel/Carousel.tsx +8 -8
  371. package/src/components/Carousel/carousel.scss +0 -1
  372. package/src/components/Checkbox/Checkbox.tsx +1 -1
  373. package/src/components/CheckboxGroup/CheckboxGroup.tsx +1 -1
  374. package/src/components/CheckboxGroupField/CheckboxGroupField.tsx +1 -1
  375. package/src/components/CheckboxOption/CheckboxOption.tsx +1 -1
  376. package/src/components/Chip/Chip.tsx +1 -1
  377. package/src/components/ChipGroup/ChipGroup.tsx +1 -1
  378. package/src/components/DatePicker/DatePicker.rtl.test.tsx +1 -1
  379. package/src/components/DatePicker/DatePicker.tsx +51 -106
  380. package/src/components/DatePicker/DatePickerExample.tsx +20 -3
  381. package/src/components/DatePicker/date-picker.scss +11 -0
  382. package/src/components/DatePickerField/DatePickerField.tsx +1 -1
  383. package/src/components/Divider/Divider.tsx +4 -4
  384. package/src/components/Divider/DividerExample.tsx +22 -23
  385. package/src/components/Drawer/Drawer.tsx +9 -16
  386. package/src/components/Drawer/DrawerExample.tsx +28 -4
  387. package/src/components/Drawer/drawer.scss +7 -0
  388. package/src/components/EmptyState/EmptyState.rtl.test.tsx +1 -1
  389. package/src/components/EmptyState/EmptyState.tsx +14 -21
  390. package/src/components/EmptyState/EmptyStateExample.tsx +5 -5
  391. package/src/components/ExamplePlaceholder/ExamplePlaceholder.tsx +17 -22
  392. package/src/components/Fab/Fab.tsx +10 -7
  393. package/src/components/Fab/FabExample.tsx +10 -1
  394. package/src/components/FileUpload/FileUpload.tsx +1 -1
  395. package/src/components/FileUploadItem/FileUploadItem.tsx +1 -1
  396. package/src/components/{Layout/Layout.rtl.test.tsx → Flex/Flex.rtl.test.tsx} +3 -3
  397. package/src/components/Flex/Flex.tsx +100 -0
  398. package/src/components/Flex/FlexExample.tsx +27 -0
  399. package/src/components/Flex/index.tsx +1 -0
  400. package/src/components/FormField/FormFieldExample.tsx +1 -2
  401. package/src/components/Grid/Grid.rtl.test.tsx +19 -0
  402. package/src/components/Grid/Grid.tsx +75 -0
  403. package/src/components/Grid/GridExample.tsx +42 -0
  404. package/src/components/Grid/index.tsx +1 -0
  405. package/src/components/InlineAlert/InlineAlert.tsx +1 -1
  406. package/src/components/Input/Input.tsx +5 -9
  407. package/src/components/Input/InputElement.tsx +4 -7
  408. package/src/components/Input/InputExample.tsx +19 -1
  409. package/src/components/Input/input.scss +9 -1
  410. package/src/components/InputField/InputField.tsx +1 -1
  411. package/src/components/InputNumber/InputNumber.tsx +6 -15
  412. package/src/components/InputNumber/InputNumberExample.tsx +24 -1
  413. package/src/components/InputNumberField/InputNumberField.tsx +1 -1
  414. package/src/components/InputPhone/InputPhone.tsx +18 -17
  415. package/src/components/InputPhone/InputPhoneExample.tsx +27 -2
  416. package/src/components/InputPhoneField/InputPhoneField.tsx +1 -1
  417. package/src/components/Link/Link.tsx +1 -1
  418. package/src/components/ListItem/ListItem.tsx +1 -1
  419. package/src/components/Menu/Menu.tsx +1 -3
  420. package/src/components/Modal/Modal.tsx +2 -4
  421. package/src/components/OTPInput/OTPInput.tsx +1 -1
  422. package/src/components/OTPInput/OTPInputExample.tsx +0 -1
  423. package/src/components/PageControl/PageControl.tsx +1 -1
  424. package/src/components/PageControl/PageControlExample.tsx +0 -1
  425. package/src/components/PageHeader/PageHeader.rtl.test.tsx +18 -0
  426. package/src/components/PageHeader/PageHeader.tsx +78 -0
  427. package/src/components/PageHeader/PageHeaderExample.tsx +58 -0
  428. package/src/components/PageHeader/index.tsx +1 -0
  429. package/src/components/PageHeader/page-header.scss +41 -0
  430. package/src/components/Pagination/Pagination.tsx +14 -3
  431. package/src/components/Pagination/pagination.scss +12 -5
  432. package/src/components/Password/Password.tsx +11 -16
  433. package/src/components/Password/PasswordExample.tsx +18 -1
  434. package/src/components/PasswordField/PasswordField.tsx +1 -1
  435. package/src/components/Popover/Popover.tsx +1 -1
  436. package/src/components/Popover/PopoverExample.tsx +0 -1
  437. package/src/components/ProgressBar/ProgressBar.tsx +1 -1
  438. package/src/components/ProgressCircle/ProgressCircle.tsx +1 -1
  439. package/src/components/ProgressionStepper/ProgressionStepper.tsx +1 -1
  440. package/src/components/ProgressionStepper/ProgressionStepperExample.tsx +0 -1
  441. package/src/components/ProgressionStepperBar/ProgressionStepperBar.tsx +1 -1
  442. package/src/components/RadioGroup/RadioGroup.tsx +1 -1
  443. package/src/components/RadioGroupField/RadioGroupField.tsx +1 -1
  444. package/src/components/Rating/Rating.tsx +7 -3
  445. package/src/components/SearchBar/SearchBar.tsx +3 -5
  446. package/src/components/SegmentedControl/SegmentedControl.tsx +1 -1
  447. package/src/components/Select/Select.tsx +11 -24
  448. package/src/components/Select/SelectExample.tsx +36 -1
  449. package/src/components/SelectField/SelectField.tsx +1 -1
  450. package/src/components/Skeleton/Skeleton.tsx +1 -1
  451. package/src/components/SkeletonText/SkeletonText.tsx +1 -1
  452. package/src/components/Slider/Slider.tsx +21 -4
  453. package/src/components/Slider/SliderExample.tsx +16 -2
  454. package/src/components/Snackbar/Manager.tsx +1 -1
  455. package/src/components/Snackbar/Snackbar.tsx +1 -1
  456. package/src/components/Snackbar/SnackbarExample.tsx +0 -1
  457. package/src/components/Switch/Switch.tsx +1 -1
  458. package/src/components/SwitchOption/SwitchOption.tsx +1 -1
  459. package/src/components/TabGroup/TabGroup.tsx +1 -1
  460. package/src/components/TabGroup/TabGroupExample.tsx +0 -1
  461. package/src/components/TabList/TabListExample.tsx +0 -1
  462. package/src/components/Table/Table.tsx +11 -16
  463. package/src/components/Table/TableExample.tsx +56 -54
  464. package/src/components/Table/utils.ts +31 -20
  465. package/src/components/Tag/Tag.tsx +1 -1
  466. package/src/components/Textarea/Textarea.tsx +5 -8
  467. package/src/components/Textarea/TextareaExample.tsx +21 -1
  468. package/src/components/TextareaField/TextareaField.tsx +1 -1
  469. package/src/components/TimePicker/TimePicker.tsx +5 -9
  470. package/src/components/TimePicker/TimePickerExample.tsx +18 -1
  471. package/src/components/TimePickerField/TimePickerField.tsx +1 -1
  472. package/src/components/Tooltip/Tooltip.tsx +2 -2
  473. package/src/components/Tooltip/tooltip.scss +2 -0
  474. package/src/components/Txt/Txt.tsx +1 -1
  475. package/src/components/UIProvider/UIProvider.tsx +1 -4
  476. package/src/components/UIProvider/UIProviderExample.tsx +0 -83
  477. package/src/hooks/useControlledState.ts +31 -0
  478. package/src/types/meta.ts +0 -8
  479. package/src/utils/createCustomEvent.ts +1 -1
  480. package/src/utils/demo.ts +19 -2
  481. package/src/utils/dom.ts +8 -0
  482. package/src/utils/handleKeyDown.ts +9 -3
  483. package/src/utils/keyboard.ts +5 -2
  484. package/src/utils/sendAriaLiveMessage.ts +17 -0
  485. package/src/utils/sizing.ts +30 -0
  486. package/src/utils/uiContext.ts +0 -1
  487. package/.scripts/index.ts +0 -110
  488. package/dist/components/Layout/Layout.d.ts +0 -50
  489. package/dist/components/Layout/Layout.js +0 -28
  490. package/dist/components/Layout/Layout.js.map +0 -1
  491. package/dist/components/Layout/LayoutExample.d.ts +0 -4
  492. package/dist/components/Layout/LayoutExample.js +0 -9
  493. package/dist/components/Layout/LayoutExample.js.map +0 -1
  494. package/dist/components/Layout/index.d.ts +0 -1
  495. package/dist/components/Layout/index.js +0 -2
  496. package/dist/components/Layout/index.js.map +0 -1
  497. package/dist/components/UIProvider/AriaLiveMessageHandler.d.ts +0 -13
  498. package/dist/components/UIProvider/AriaLiveMessageHandler.js +0 -31
  499. package/dist/components/UIProvider/AriaLiveMessageHandler.js.map +0 -1
  500. package/dist/hooks/useAddEventListener.js.map +0 -1
  501. package/src/components/Layout/Layout.tsx +0 -85
  502. package/src/components/Layout/LayoutExample.tsx +0 -17
  503. package/src/components/Layout/index.tsx +0 -1
  504. package/src/components/UIProvider/AriaLiveMessageHandler.tsx +0 -46
  505. /package/dist/hooks/{useAddEventListener.d.ts → useEventListener.d.ts} +0 -0
  506. /package/src/hooks/{useAddEventListener.ts → useEventListener.ts} +0 -0
@@ -0,0 +1,19 @@
1
+ import { Grid } from './Grid';
2
+ import { GridExample } from './GridExample';
3
+
4
+ import { hasNoBasicA11yIssues } from '-/rtl/hasNoBasicA11yIssues';
5
+ import { render } from '-/rtl/util';
6
+
7
+ const testBed = () => <Grid {...GridExample.defaultState}>{GridExample.defaultState?.children}</Grid>;
8
+
9
+ describe('Grid (RTL)', () => {
10
+ it(`has no basic a11y issues - ${GridExample.defaultState}`, hasNoBasicA11yIssues(testBed()));
11
+
12
+ it('renders', () => {
13
+ const { getByText } = render(testBed());
14
+ expect(getByText('Cell 1')).toBeInTheDocument();
15
+ expect(getByText('Cell 2')).toBeInTheDocument();
16
+ });
17
+ });
18
+
19
+ /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
@@ -0,0 +1,75 @@
1
+ import { ReactNode } from 'react';
2
+ import { SizingPixels, numToSizingVar } from '-/utils/sizing';
3
+
4
+ export type GridProps = {
5
+ /**
6
+ * The content of the grid.
7
+ *
8
+ * @required
9
+ */
10
+ children: ReactNode;
11
+ /**
12
+ * The number of columns in the grid or an array of column widths in fractions or other CSS units.
13
+ *
14
+ * Values may be "100px, auto, 2fr, 20%" for four columns with specific widths.
15
+ *
16
+ * @default 1
17
+ *
18
+ * @exampleType string
19
+ */
20
+ columns?: (number | string)[] | number;
21
+ /** The gap between the children. */
22
+ gap?: SizingPixels;
23
+ /** Additional styles for the grid container. */
24
+ style?: React.CSSProperties;
25
+ /**
26
+ * The minimum width of each column.
27
+ *
28
+ * @default auto
29
+ */
30
+ minColumnWidth?: string;
31
+ };
32
+
33
+ /**
34
+ * A utility component that arranges its children in a grid layout.
35
+ *
36
+ * @example
37
+ * import { Grid } from '@bspk/ui/Grid';
38
+ *
39
+ * <Grid columns={4} gap="8">
40
+ * <ExamplePlaceholder label="Cell 1" />
41
+ * <ExamplePlaceholder label="Cell 2" />
42
+ * <ExamplePlaceholder label="Cell 3" />
43
+ * <ExamplePlaceholder label="Cell 4" />
44
+ * </Grid>;
45
+ *
46
+ * @name Grid
47
+ * @phase Utility
48
+ */
49
+ export function Grid({ columns = 1, children, gap, style, minColumnWidth = 'auto' }: GridProps) {
50
+ let gridTemplateColumns = `repeat(auto-fit, minmax(${minColumnWidth}, 1fr))`;
51
+
52
+ // If columns is an array, map it to a string of fractions
53
+ if (Array.isArray(columns))
54
+ gridTemplateColumns =
55
+ columns?.map((width) => (typeof width === 'string' ? width : `${width}fr`)).join(' ') || 'auto';
56
+ // If columns is not an array, use the default repeat pattern
57
+ else gridTemplateColumns = `repeat(${columns}, minmax(${minColumnWidth}, 1fr))`;
58
+
59
+ return (
60
+ <div
61
+ data-bspk-utility="grid"
62
+ style={{
63
+ width: '100%',
64
+ display: 'grid',
65
+ gridTemplateColumns,
66
+ gap: numToSizingVar(gap),
67
+ ...style,
68
+ }}
69
+ >
70
+ {children}
71
+ </div>
72
+ );
73
+ }
74
+
75
+ /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
@@ -0,0 +1,42 @@
1
+ import { GridProps } from '.';
2
+ import { ExamplePlaceholder } from '-/components/ExamplePlaceholder';
3
+ import { ComponentExample } from '-/utils/demo';
4
+
5
+ export const GridExample: ComponentExample<GridProps> = {
6
+ defaultState: {
7
+ children: (
8
+ <>
9
+ <div>Cell 1</div>
10
+ <div>Cell 2</div>
11
+ </>
12
+ ),
13
+ columns: [1, 2],
14
+ },
15
+ render: ({ Component, props }) => {
16
+ const columns = convertColumns(`${props.columns}`);
17
+
18
+ return (
19
+ <Component {...props} columns={columns.value}>
20
+ {[...Array(columns.count)].map((_, index) => (
21
+ <ExamplePlaceholder key={index}>Cell {index + 1}</ExamplePlaceholder>
22
+ ))}
23
+ </Component>
24
+ );
25
+ },
26
+ };
27
+
28
+ const convertColumns = (columns: string): { value: (number | string)[] | number; count: number } => {
29
+ let value: (number | string)[] | number = 1;
30
+
31
+ if (columns.includes(','))
32
+ value = columns
33
+ .split(',')
34
+ .filter((col) => !!col.trim())
35
+ .map((col) => {
36
+ if (/^\d+$/.test(col.trim())) return parseInt(col.trim(), 10) || 1;
37
+ return col.trim();
38
+ });
39
+ else value = parseInt(columns, 10) || 1;
40
+
41
+ return { value, count: Array.isArray(value) ? value.length : value };
42
+ };
@@ -0,0 +1 @@
1
+ export * from './Grid';
@@ -35,7 +35,7 @@ export type InlineAlertProps = CommonProps<'owner'> & {
35
35
  * <InlineAlert variant="informational">Example informational inline alert</InlineAlert>;
36
36
  *
37
37
  * @name InlineAlert
38
- * @phase UXReview
38
+ * @phase Stable
39
39
  */
40
40
  export function InlineAlert({ children, variant = 'informational', id, owner }: InlineAlertProps) {
41
41
  return (
@@ -13,23 +13,19 @@ export type InputProps = Omit<InputElementProps, 'ariaDescribedBy' | 'ariaErrorM
13
13
  * @example
14
14
  * import { useState } from 'react';
15
15
  * import { Input } from '@bspk/ui/Input';
16
- * import { Field, FieldLabel } from '@bspk/ui/Field';
16
+ * import { Field, FieldLabel, FieldDescription } from '@bspk/ui/Field';
17
17
  *
18
18
  * () => {
19
- * const [value, setValue] = useState('');
19
+ * const [fieldDate, setFieldDate] = useState<string>();
20
20
  *
21
21
  * return (
22
- * <>
23
- * // standalone input example
24
- * <Input aria-label="Example Input" name="example-name" onChange={setValue} value={value} />
25
- * <br />
26
- * // input used within a field
22
+ * <div style={{ width: 320 }}>
27
23
  * <Field>
28
24
  * <FieldLabel>Example Label</FieldLabel>
29
- * <Input name="example-name" onChange={setValue} value={value} />
25
+ * <Input name="example-name" onChange={setFieldDate} value={fieldDate} />
30
26
  * <FieldDescription>This is an example input field.</FieldDescription>
31
27
  * </Field>
32
- * </>
28
+ * </div>
33
29
  * );
34
30
  * };
35
31
  *
@@ -1,6 +1,6 @@
1
1
  import './input.scss';
2
2
  import { SvgCancel } from '@bspk/icons/Cancel';
3
- import { HTMLInputTypeAttribute, ReactNode, useMemo, useRef, useState } from 'react';
3
+ import { HTMLInputTypeAttribute, ReactNode, useMemo, useRef } from 'react';
4
4
  import { Button } from '-/components/Button';
5
5
  import { FieldContextProps } from '-/components/Field';
6
6
  import { useTimeout } from '-/hooks/useTimeout';
@@ -112,11 +112,9 @@ export function InputElement({
112
112
  ariaErrorMessage,
113
113
  ...props
114
114
  }: ElementProps<InputElementProps, 'div'>) {
115
- const [focused, setFocused] = useState(false);
116
-
117
115
  const showClearButton = useMemo(
118
- () => !!(showClearButtonProp !== false && !readOnly && !disabled && value?.toString().length && focused),
119
- [showClearButtonProp, readOnly, disabled, value, focused],
116
+ () => showClearButtonProp !== false && !readOnly && !disabled && !!value?.toString().length,
117
+ [showClearButtonProp, readOnly, disabled, value],
120
118
  );
121
119
 
122
120
  const inputRefInternal = useRef<HTMLInputElement | null>(null);
@@ -150,14 +148,12 @@ export function InputElement({
150
148
  id={id}
151
149
  name={name}
152
150
  onBlur={(event) => {
153
- focusTimeout.set(() => setFocused(false), 750);
154
151
  inputProps?.onBlur?.(event);
155
152
  }}
156
153
  onChange={(event) => {
157
154
  onChange(event.target.value, event);
158
155
  }}
159
156
  onFocus={(event) => {
160
- focusTimeout.set(() => setFocused(true), 0);
161
157
  inputProps?.onFocus?.(event);
162
158
  }}
163
159
  placeholder={placeholder || ' '}
@@ -174,6 +170,7 @@ export function InputElement({
174
170
  {trailing && <span data-trailing>{trailing}</span>}
175
171
  {showClearButton && (
176
172
  <Button
173
+ data-clear-button
177
174
  icon={<SvgCancel />}
178
175
  iconOnly
179
176
  label="Clear"
@@ -1,9 +1,12 @@
1
- import { InputProps } from '.';
1
+ import { useState } from 'react';
2
+ import { Input, InputProps } from '.';
3
+ import { Field, FieldLabel, FieldDescription } from '-/components/Field';
2
4
  import { ComponentExample } from '-/utils/demo';
3
5
 
4
6
  export type InputExampleProps = InputProps & { label: string; description?: string };
5
7
 
6
8
  export const InputExample: ComponentExample<InputExampleProps> = {
9
+ containerStyle: { width: 320, padding: 0 },
7
10
  defaultState: {
8
11
  label: 'Property Description',
9
12
  'aria-label': 'input aria-label',
@@ -55,4 +58,19 @@ export const InputExample: ComponentExample<InputExampleProps> = {
55
58
  variants: {
56
59
  type: false,
57
60
  },
61
+ sections: [],
62
+ };
63
+
64
+ export const Usage = () => {
65
+ const [fieldDate, setFieldDate] = useState<string>();
66
+
67
+ return (
68
+ <div style={{ width: 320 }}>
69
+ <Field>
70
+ <FieldLabel>Example Label</FieldLabel>
71
+ <Input name="example-name" onChange={setFieldDate} value={fieldDate} />
72
+ <FieldDescription>This is an example input field.</FieldDescription>
73
+ </Field>
74
+ </div>
75
+ );
58
76
  };
@@ -3,6 +3,8 @@
3
3
 
4
4
  display: flex;
5
5
  flex-flow: row nowrap;
6
+ justify-content: center;
7
+ align-items: center;
6
8
  background-color: var(--surface-neutral-t1-base);
7
9
  border: solid 1px var(--border-color);
8
10
  height: var(--field-height);
@@ -11,7 +13,7 @@
11
13
  gap: var(--spacing-sizing-01);
12
14
  width: 100%;
13
15
 
14
- &[data-show-clear-button] {
16
+ &[data-show-clear-button]:focus-within {
15
17
  padding-right: 0;
16
18
  }
17
19
 
@@ -62,6 +64,12 @@
62
64
  --border-color: var(--status-error);
63
65
  }
64
66
 
67
+ &:not(:focus-within) {
68
+ [data-clear-button] {
69
+ display: none;
70
+ }
71
+ }
72
+
65
73
  &:focus-within {
66
74
  --border-color: var(--stroke-neutral-focus);
67
75
 
@@ -9,7 +9,7 @@ export type InputFieldProps = FormFieldControlProps<InputProps>;
9
9
  * This component takes properties from the FormField and Input components.
10
10
  *
11
11
  * @name InputField
12
- * @phase UXReview
12
+ * @phase Stable
13
13
  *
14
14
  * @generated
15
15
  */
@@ -54,37 +54,28 @@ export type InputNumberProps = CommonProps<'size'> &
54
54
  * import { InputNumber } from '@bspk/ui/InputNumber';
55
55
  *
56
56
  * () => {
57
- * const [state, setState] = useState<number | undefined>();
57
+ * const [value, setValue] = useState<number | undefined>();
58
58
  *
59
59
  * return (
60
- * <>
61
- * // standalone input number example
62
- * <InputNumber
63
- * aria-label="Example aria-label"
64
- * name="example-name"
65
- * onChange={(nextValue) => setState(nextValue)}
66
- * value={state}
67
- * />
68
- * <br />
69
- * // input number used within a field
60
+ * <div style={{ width: 320 }}>
70
61
  * <Field>
71
62
  * <FieldLabel>Example Input Number</FieldLabel>
72
63
  * <InputNumber
73
64
  * aria-label="Example aria-label"
74
65
  * name="example-name"
75
- * onChange={(nextValue) => setState(nextValue)}
76
- * value={state}
66
+ * onChange={(nextValue) => setValue(nextValue)}
67
+ * value={value}
77
68
  * />
78
69
  * <FieldDescription>
79
70
  * The input number allows you to increment or decrement a value.
80
71
  * </FieldDescription>
81
72
  * </Field>
82
- * </>
73
+ * </div>
83
74
  * );
84
75
  * };
85
76
  *
86
77
  * @name InputNumber
87
- * @phase UXReview
78
+ * @phase Stable
88
79
  */
89
80
  export function InputNumber({
90
81
  value: valueProp,
@@ -1,4 +1,6 @@
1
- import { InputNumberProps } from './InputNumber';
1
+ import { useState } from 'react';
2
+ import { InputNumber, InputNumberProps } from './InputNumber';
3
+ import { Field, FieldLabel, FieldDescription } from '-/components/Field';
2
4
  import { ComponentExample } from '-/utils/demo';
3
5
 
4
6
  export const InputNumberExample: ComponentExample<InputNumberProps> = {
@@ -7,4 +9,25 @@ export const InputNumberExample: ComponentExample<InputNumberProps> = {
7
9
  },
8
10
  render: ({ props, Component }) => <Component {...props} />,
9
11
  variants: false,
12
+ sections: [],
13
+ containerStyle: { width: 320, padding: 0 },
14
+ };
15
+
16
+ export const Usage = () => {
17
+ const [value, setValue] = useState<number | undefined>();
18
+
19
+ return (
20
+ <div style={{ width: 320 }}>
21
+ <Field>
22
+ <FieldLabel>Example Input Number</FieldLabel>
23
+ <InputNumber
24
+ aria-label="Example aria-label"
25
+ name="example-name"
26
+ onChange={(nextValue) => setValue(nextValue)}
27
+ value={value}
28
+ />
29
+ <FieldDescription>The input number allows you to increment or decrement a value.</FieldDescription>
30
+ </Field>
31
+ </div>
32
+ );
10
33
  };
@@ -9,7 +9,7 @@ export type InputNumberFieldProps = FormFieldControlProps<InputNumberProps>;
9
9
  * This component takes properties from the FormField and InputNumber components.
10
10
  *
11
11
  * @name InputNumberField
12
- * @phase UXReview
12
+ * @phase Stable
13
13
  *
14
14
  * @generated
15
15
  */
@@ -10,13 +10,13 @@ import { Menu } from '-/components/Menu';
10
10
  import { useArrowNavigation } from '-/hooks/useArrowNavigation';
11
11
  import { useFloating } from '-/hooks/useFloating';
12
12
  import { useOutsideClick } from '-/hooks/useOutsideClick';
13
- import { useUIContext } from '-/hooks/useUIContext';
14
13
  import { FieldControlProps } from '-/types/common';
15
14
  import { countryCodeData, countryCodes, SupportedCountryCode } from '-/utils/countryCodes';
16
15
  import { getElementById } from '-/utils/dom';
17
16
  import { guessUserCountryCode } from '-/utils/guessUserCountryCode';
18
17
  import { handleKeyDown } from '-/utils/handleKeyDown';
19
18
  import { scrollListItemsStyle, ScrollListItemsStyleProps } from '-/utils/scrollListItemsStyle';
19
+ import { sendAriaLiveMessage } from '-/utils/sendAriaLiveMessage';
20
20
  import { useIds } from '-/utils/useIds';
21
21
 
22
22
  const SELECT_OPTIONS = countryCodes.map((code) => {
@@ -58,34 +58,32 @@ export type InputPhoneProps = FieldControlProps<string, SupportedCountryCode> &
58
58
  *
59
59
  * @example
60
60
  * import { InputPhone } from '@bspk/ui/InputPhone';
61
+ * import { Field, FieldDescription, FieldLabel } from '@bspk/ui/Field';
61
62
  *
62
63
  * () => {
63
- * const [value, onChange] = useState<number | undefined>();
64
+ * const [value, onChange] = useState<string | undefined>();
64
65
  *
65
66
  * return (
66
- * <>
67
- * // standalone input phone example
68
- * <InputPhone aria-label="Phone Number" initialCountryCode="US" value={value} onChange={onChange} />;
69
- * <br />
70
- * // input phone used within a field
67
+ * <div style={{ width: 320 }}>
71
68
  * <Field>
72
69
  * <FieldLabel>Example Input Phone</FieldLabel>
73
70
  * <InputPhone
74
71
  * aria-label="Phone Number"
75
72
  * initialCountryCode="US"
76
- * value={value}
73
+ * name="example-name"
77
74
  * onChange={onChange}
75
+ * value={value}
78
76
  * />
79
77
  * <FieldDescription>
80
78
  * The phone input allows you to enter a phone number with country code.
81
79
  * </FieldDescription>
82
80
  * </Field>
83
- * </>
81
+ * </div>
84
82
  * );
85
83
  * };
86
84
  *
87
85
  * @name InputPhone
88
- * @phase UXReview
86
+ * @phase Stable
89
87
  */
90
88
  export function InputPhone({
91
89
  value,
@@ -155,19 +153,17 @@ export function InputPhone({
155
153
  }, [countryCode]);
156
154
 
157
155
  const handleChange = (newValue: string) => {
158
- let rawNumber = newValue.replace(/\D/g, '');
159
- if (rawNumber === value) return;
156
+ const numericChange = value?.replace(/\D/g, '') !== newValue?.replace(/\D/g, '');
160
157
 
161
- if (!disableFormatting) {
158
+ // only format if the numeric value has changed
159
+ if (!disableFormatting && numericChange) {
162
160
  const formatter = new AsYouType(countryCode);
163
- rawNumber = formatter.input(`${rawNumber}`);
161
+ newValue = formatter.input(`${newValue}`);
164
162
  }
165
163
 
166
- onChange(rawNumber, countryCode);
164
+ onChange(newValue, countryCode);
167
165
  };
168
166
 
169
- const { sendAriaLiveMessage } = useUIContext();
170
-
171
167
  return (
172
168
  <>
173
169
  <div
@@ -186,6 +182,7 @@ export function InputPhone({
186
182
  containerRef={elements.setReference}
187
183
  disabled={disabled}
188
184
  id={id}
185
+ inputMode="tel"
189
186
  inputRef={(node) => {
190
187
  inputRef?.(node);
191
188
  inputInternalRef.current = node;
@@ -239,6 +236,10 @@ export function InputPhone({
239
236
  }
240
237
  name={name}
241
238
  onChange={handleChange}
239
+ onKeyDown={(event) => {
240
+ // ignore non numeric keys
241
+ if (event.key.length === 1 && !/[0-9]/.test(event.key)) event.preventDefault();
242
+ }}
242
243
  owner="input-phone"
243
244
  readOnly={readOnly}
244
245
  required={required}
@@ -1,12 +1,37 @@
1
- import { InputPhoneProps } from '.';
2
- import { ComponentExample, Preset } from '-/utils/demo';
1
+ import { useState } from 'react';
2
+ import { InputPhone, InputPhoneProps } from '.';
3
+ import { Field, FieldDescription, FieldLabel } from '-/components/Field';
4
+ import { Preset, ComponentExample } from '-/utils/demo';
3
5
 
4
6
  export const presets: Preset<InputPhoneProps>[] = [];
5
7
 
6
8
  export const InputPhoneExample: ComponentExample<InputPhoneProps> = {
9
+ containerStyle: { width: 320, padding: 0 },
7
10
  defaultState: {
8
11
  'aria-label': 'input phone aria-label',
9
12
  },
10
13
  render: ({ props, Component }) => <Component {...props} />,
11
14
  variants: true,
12
15
  };
16
+
17
+ export const Usage = () => {
18
+ const [value, onChange] = useState<string | undefined>();
19
+
20
+ return (
21
+ <div style={{ width: 320 }}>
22
+ <Field>
23
+ <FieldLabel>Example Input Phone</FieldLabel>
24
+ <InputPhone
25
+ aria-label="Phone Number"
26
+ initialCountryCode="US"
27
+ name="example-name"
28
+ onChange={onChange}
29
+ value={value}
30
+ />
31
+ <FieldDescription>
32
+ The phone input allows you to enter a phone number with country code.
33
+ </FieldDescription>
34
+ </Field>
35
+ </div>
36
+ );
37
+ };
@@ -9,7 +9,7 @@ export type InputPhoneFieldProps = FormFieldControlProps<InputPhoneProps>;
9
9
  * This component takes properties from the FormField and InputPhone components.
10
10
  *
11
11
  * @name InputPhoneField
12
- * @phase UXReview
12
+ * @phase Stable
13
13
  *
14
14
  * @generated
15
15
  */
@@ -49,7 +49,7 @@ export type LinkProps = Pick<CommonPropsLibrary, 'disabled'> & {
49
49
  * <Link href="https://anywhere.re" label="Example label" trailingIcon="external" />;
50
50
  *
51
51
  * @name Link
52
- * @phase UXReview
52
+ * @phase Stable
53
53
  */
54
54
  export function Link({ label, trailingIcon, size, variant, target = '_self', ...props }: ElementProps<LinkProps, 'a'>) {
55
55
  let LazyIcon: LazyExoticComponent<ComponentType<unknown>> | undefined = undefined;
@@ -133,7 +133,7 @@ export type ListItemProps<As extends ElementType = ElementType> = CommonProps<'a
133
133
  * </div>;
134
134
  *
135
135
  * @name ListItem
136
- * @phase UXReview
136
+ * @phase Stable
137
137
  */
138
138
  function ListItem<As extends ElementType = ElementType>({
139
139
  active,
@@ -42,8 +42,6 @@ export type MenuProps<As extends ElementType = ElementType> = CommonProps<'id' |
42
42
  * A container housing a simple list of options presented to the customer to select one option at a time.
43
43
  *
44
44
  * @example
45
- * import React from 'react';
46
- *
47
45
  * import { Menu } from '@bspk/ui/Menu';
48
46
  *
49
47
  * <Menu>
@@ -53,7 +51,7 @@ export type MenuProps<As extends ElementType = ElementType> = CommonProps<'id' |
53
51
  * </Menu>;
54
52
  *
55
53
  * @name Menu
56
- * @phase UXReview
54
+ * @phase Stable
57
55
  */
58
56
  export function Menu({ as, innerRef, id: idProp, children, owner, label, ...props }: ElementProps<MenuProps, 'div'>) {
59
57
  const menuId = useId(idProp);
@@ -4,8 +4,8 @@ import { ReactNode, useMemo, useRef } from 'react';
4
4
  import { Button, ButtonProps } from '-/components/Button';
5
5
  import { DialogProps, Dialog } from '-/components/Dialog';
6
6
  import { Txt } from '-/components/Txt';
7
- import { useEventListener } from '-/hooks/useAddEventListener';
8
7
  import { useDebounceCallback } from '-/hooks/useDebounceCallback';
8
+ import { useEventListener } from '-/hooks/useEventListener';
9
9
  import { useUIContext } from '-/hooks/useUIContext';
10
10
  import { CallToActionButton } from '-/types/common';
11
11
 
@@ -109,8 +109,6 @@ export type ModalProps = Pick<
109
109
  * footer for the dialog.
110
110
  *
111
111
  * @example
112
- * import React from 'react';
113
- *
114
112
  * import { Button } from '@bspk/ui/Button';
115
113
  * import { Modal } from '@bspk/ui/Modal';
116
114
  *
@@ -133,7 +131,7 @@ export type ModalProps = Pick<
133
131
  * };
134
132
  *
135
133
  * @name Modal
136
- * @phase UXReview
134
+ * @phase Stable
137
135
  */
138
136
  export function Modal({
139
137
  header,
@@ -46,7 +46,7 @@ export type OTPInputProps = CommonProps<'aria-label' | 'id' | 'invalid' | 'name'
46
46
  * };
47
47
  *
48
48
  * @name OTPInput
49
- * @phase UXReview
49
+ * @phase Stable
50
50
  */
51
51
  export function OTPInput({
52
52
  value: valueProp,
@@ -21,7 +21,6 @@ export const presets: Preset<OTPInputProps>[] = [
21
21
  ];
22
22
 
23
23
  export const OTPInputExample: ComponentExample<OTPInputProps> = {
24
- containerStyle: { width: '100%' },
25
24
  defaultState: {
26
25
  value: '',
27
26
  length: 6,
@@ -43,7 +43,7 @@ export type DotSize = 'medium' | 'small' | 'x-small';
43
43
  * <PageControl value={1} numPages={3} />;
44
44
  *
45
45
  * @name PageControl
46
- * @phase UXReview
46
+ * @phase Stable
47
47
  */
48
48
  export function PageControl({ currentPage: currentProp, numPages: numPagesProp, variant = 'flat' }: PageControlProps) {
49
49
  const numPages = Number(numPagesProp);
@@ -26,7 +26,6 @@ export const presets: Preset<PageControlProps>[] = [
26
26
  ];
27
27
 
28
28
  export const PageControlExample: ComponentExample<PageControlProps> = {
29
- containerStyle: { width: '100%' },
30
29
  defaultState: {},
31
30
  disableProps: [],
32
31
  presets,