pixelize-design-library 2.4.2-beta.61 → 2.4.2-beta.62

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 (503) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/COMPONENT-GOTCHAS.md +119 -1
  3. package/dist/Components/Accordion/Accordion.js +2 -2
  4. package/dist/Components/AddressCard/AddressCard.js +2 -1
  5. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.js +1 -1
  6. package/dist/Components/AppSwitcher/AppSwitcher.js +1 -1
  7. package/dist/Components/AppearanceSettings/AppearanceSettings.js +1 -1
  8. package/dist/Components/AudioRecorder/AudioRecorder.js +2 -1
  9. package/dist/Components/Avatar/Avatar.d.ts +2 -1
  10. package/dist/Components/Avatar/Avatar.js +5 -3
  11. package/dist/Components/Backdrop/Backdrop.js +1 -1
  12. package/dist/Components/BagBar/BagBar.js +2 -1
  13. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +1 -1
  14. package/dist/Components/CalendarGrid/CalendarGrid.js +5 -5
  15. package/dist/Components/CalendarGrid/calendarMath.js +18 -6
  16. package/dist/Components/Card/PaymentCard/PaymentCard.js +6 -5
  17. package/dist/Components/CartItem/CartItem.js +2 -1
  18. package/dist/Components/Checkbox/Checkbox.d.ts +18 -3
  19. package/dist/Components/Checkbox/Checkbox.js +9 -7
  20. package/dist/Components/CheckoutKit/selectable.js +1 -1
  21. package/dist/Components/ChoiceCard/ChoiceCard.d.ts +3 -0
  22. package/dist/Components/ChoiceCard/ChoiceCard.js +16 -0
  23. package/dist/Components/ChoiceCard/ChoiceCardGroup.d.ts +3 -0
  24. package/dist/Components/ChoiceCard/ChoiceCardGroup.js +6 -0
  25. package/dist/Components/ChoiceCard/ChoiceCardProps.d.ts +28 -0
  26. package/dist/Components/ChoiceCard/ChoiceCardProps.js +2 -0
  27. package/dist/Components/CircularProgress/CircularProgress.js +4 -8
  28. package/dist/Components/CircularProgress/CircularProgressProps.d.ts +5 -3
  29. package/dist/Components/CircularProgress/arc.d.ts +9 -1
  30. package/dist/Components/CircularProgress/arc.js +15 -1
  31. package/dist/Components/Common/FormLabel.js +1 -1
  32. package/dist/Components/Common/FormattedDescription.js +1 -1
  33. package/dist/Components/Common/HelperText.d.ts +5 -4
  34. package/dist/Components/Common/HelperText.js +10 -7
  35. package/dist/Components/Common/fieldStyles.d.ts +4 -4
  36. package/dist/Components/Common/fieldStyles.js +2 -1
  37. package/dist/Components/ContactForm/ContactForm.js +1 -1
  38. package/dist/Components/CopyButton/CopyButton.js +12 -5
  39. package/dist/Components/CouponField/CouponField.js +4 -3
  40. package/dist/Components/CustomModulesTable/CustomModulesTableProps.d.ts +18 -0
  41. package/dist/Components/CustomModulesTable/EditModuleModal.js +1 -1
  42. package/dist/Components/DatePicker/CalendarPanel.js +2 -2
  43. package/dist/Components/DatePicker/DatePicker.js +8 -2
  44. package/dist/Components/DatePicker/RangeDatePicker.d.ts +9 -3
  45. package/dist/Components/DatePicker/RangeDatePicker.js +6 -5
  46. package/dist/Components/DatePicker/SingleDatePicker.d.ts +9 -5
  47. package/dist/Components/DatePicker/SingleDatePicker.js +7 -4
  48. package/dist/Components/DatePicker/ThemeDatePicker.d.ts +8 -4
  49. package/dist/Components/DatePicker/ThemeDatePicker.js +9 -6
  50. package/dist/Components/DatePicker/TimeOnlyPicker.d.ts +9 -5
  51. package/dist/Components/DatePicker/TimeOnlyPicker.js +6 -4
  52. package/dist/Components/DatePicker/TimePickerInput.d.ts +2 -2
  53. package/dist/Components/DatePicker/TimePickerInput.js +6 -5
  54. package/dist/Components/DescriptionList/DescriptionList.d.ts +1 -1
  55. package/dist/Components/DescriptionList/DescriptionList.js +3 -3
  56. package/dist/Components/DescriptionList/DescriptionListProps.d.ts +3 -3
  57. package/dist/Components/Dropdown/DropDown.js +12 -4
  58. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -1
  59. package/dist/Components/EmptyState/EmptyState.js +2 -2
  60. package/dist/Components/EmptyState/EmptyStateProps.d.ts +3 -3
  61. package/dist/Components/FileUpload/FileUpload.js +21 -15
  62. package/dist/Components/FileUpload/useObjectUrl.d.ts +1 -0
  63. package/dist/Components/FileUpload/useObjectUrl.js +14 -0
  64. package/dist/Components/FileUploader/FileUploader.js +9 -3
  65. package/dist/Components/FileUploader/FileUploaderProps.d.ts +8 -0
  66. package/dist/Components/FilterBar/FilterBar.d.ts +1 -1
  67. package/dist/Components/FilterBar/FilterBar.js +2 -2
  68. package/dist/Components/FilterBar/FilterBarProps.d.ts +3 -3
  69. package/dist/Components/FilterSidebar/FilterSidebar.js +10 -6
  70. package/dist/Components/Form/FormWrapper.js +1 -1
  71. package/dist/Components/FormField/FormField.d.ts +3 -0
  72. package/dist/Components/FormField/FormField.js +57 -0
  73. package/dist/Components/FormField/FormFieldProps.d.ts +33 -0
  74. package/dist/Components/FormField/FormFieldProps.js +2 -0
  75. package/dist/Components/Header/HeaderActions.js +2 -2
  76. package/dist/Components/Header/components/mobileMenu.js +1 -1
  77. package/dist/Components/IconButton/IconButton.d.ts +5 -0
  78. package/dist/Components/IconButton/IconButton.js +24 -0
  79. package/dist/Components/IconButton/IconButtonProps.d.ts +10 -0
  80. package/dist/Components/IconButton/IconButtonProps.js +2 -0
  81. package/dist/Components/Input/PhoneNumberInput.js +14 -0
  82. package/dist/Components/Input/PhoneNumberInputProps.d.ts +1 -0
  83. package/dist/Components/KanbanBoard/AccountCard.js +3 -2
  84. package/dist/Components/KanbanBoard/AccountRow.js +1 -1
  85. package/dist/Components/KanbanBoard/KanbanBoard.js +56 -39
  86. package/dist/Components/KanbanBoard/MeasuredItem.js +6 -14
  87. package/dist/Components/KanbanBoard/boardStore.d.ts +8 -0
  88. package/dist/Components/KanbanBoard/boardStore.js +27 -0
  89. package/dist/Components/Kbd/Kbd.js +1 -1
  90. package/dist/Components/LimitReachedModal/LimitReachedModal.js +1 -1
  91. package/dist/Components/Loading/Loading.js +1 -1
  92. package/dist/Components/MediaGallery/MediaGallery.js +1 -1
  93. package/dist/Components/MediaGallery/MediaLightbox.js +2 -1
  94. package/dist/Components/MediaGallery/glass.js +2 -1
  95. package/dist/Components/MediaViewer/MediaViewer.js +1 -1
  96. package/dist/Components/MediaViewer/components/MediaAudioPlayer.js +7 -7
  97. package/dist/Components/MediaViewer/components/MediaImageViewer.js +1 -1
  98. package/dist/Components/MediaViewer/components/MediaScrubber.js +5 -1
  99. package/dist/Components/MediaViewer/components/MediaVideoPlayer.js +7 -7
  100. package/dist/Components/MediaViewer/components/PlaybackTimeline.d.ts +20 -0
  101. package/dist/Components/MediaViewer/components/PlaybackTimeline.js +47 -0
  102. package/dist/Components/MediaViewer/components/TileChip.js +1 -1
  103. package/dist/Components/Modal/Modal.js +1 -1
  104. package/dist/Components/MoreItems/MoreItems.js +2 -2
  105. package/dist/Components/NavigationBar/NavigationBar.js +2 -2
  106. package/dist/Components/NoteTextArea/NoteTextArea.js +18 -4
  107. package/dist/Components/NoteTextArea/NoteTextAreaProps.d.ts +12 -0
  108. package/dist/Components/Notification/Notification.js +17 -3
  109. package/dist/Components/Notification/NotificationProps.d.ts +17 -1
  110. package/dist/Components/NotificationBell/NotificationBell.js +5 -1
  111. package/dist/Components/NotificationBell/NotificationItem.js +1 -1
  112. package/dist/Components/NotificationBell/NotificationList.js +1 -1
  113. package/dist/Components/OffersList/OffersList.js +2 -1
  114. package/dist/Components/OptionChip/OptionChip.js +3 -2
  115. package/dist/Components/OrderStatusTimeline/OrderStatusTimeline.js +2 -1
  116. package/dist/Components/OrderSummary/OrderSummary.js +5 -5
  117. package/dist/Components/OrganizationDetails/OrganizationDetails.js +7 -1
  118. package/dist/Components/PageHeader/PageHeader.d.ts +1 -1
  119. package/dist/Components/PageHeader/PageHeader.js +2 -2
  120. package/dist/Components/PageHeader/PageHeaderProps.d.ts +3 -3
  121. package/dist/Components/Pagination/Pagination.d.ts +5 -0
  122. package/dist/Components/Pagination/Pagination.js +48 -0
  123. package/dist/Components/Pagination/PaginationProps.d.ts +46 -0
  124. package/dist/Components/Pagination/PaginationProps.js +9 -0
  125. package/dist/Components/Pagination/pageWindow.d.ts +4 -0
  126. package/dist/Components/Pagination/pageWindow.js +22 -0
  127. package/dist/Components/PaymentOption/PaymentOption.js +1 -1
  128. package/dist/Components/PersonChip/PersonChip.js +2 -2
  129. package/dist/Components/PinInput/PinInput.d.ts +1 -1
  130. package/dist/Components/PinInput/PinInput.js +17 -2
  131. package/dist/Components/PinInput/PinInputProps.d.ts +9 -1
  132. package/dist/Components/PincodeChecker/PincodeChecker.js +4 -4
  133. package/dist/Components/PlanPill/PlanPill.js +2 -1
  134. package/dist/Components/PriceBlock/PriceBlock.js +3 -3
  135. package/dist/Components/Primitives/Primitives.d.ts +2 -2
  136. package/dist/Components/Primitives/Primitives.js +2 -3
  137. package/dist/Components/ProductBadges/ProductBadges.js +2 -1
  138. package/dist/Components/ProductCard/ProductCard.js +1 -1
  139. package/dist/Components/ProductCard/ProductCardAction.js +2 -2
  140. package/dist/Components/ProductCard/ProductCardSwatches.js +2 -1
  141. package/dist/Components/ProductCard/cardMetrics.d.ts +1 -1
  142. package/dist/Components/ProductCard/cardMetrics.js +5 -1
  143. package/dist/Components/ProfileCard/ProfileCardProps.d.ts +11 -0
  144. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +3 -2
  145. package/dist/Components/QuantityStepper/QuantityStepper.js +2 -1
  146. package/dist/Components/RadioButton/RadioButton.d.ts +11 -2
  147. package/dist/Components/RadioButton/RadioButton.js +9 -6
  148. package/dist/Components/RangeSlider/RangeSlider.js +3 -3
  149. package/dist/Components/Rating/Rating.js +2 -1
  150. package/dist/Components/Reorder/Reorder.js +3 -2
  151. package/dist/Components/ReviewList/ReviewList.js +3 -3
  152. package/dist/Components/ReviewSummary/ReviewSummary.js +3 -3
  153. package/dist/Components/SaveBar/SaveBar.d.ts +1 -1
  154. package/dist/Components/SaveBar/SaveBar.js +2 -2
  155. package/dist/Components/SaveBar/SaveBarProps.d.ts +3 -3
  156. package/dist/Components/Search/Search.js +2 -9
  157. package/dist/Components/Search/ctrlShortcut.d.ts +1 -0
  158. package/dist/Components/Search/ctrlShortcut.js +29 -0
  159. package/dist/Components/SearchSelect/SearchSelect.js +117 -30
  160. package/dist/Components/SegmentedControl/SegmentedControl.d.ts +8 -2
  161. package/dist/Components/SegmentedControl/SegmentedControl.js +9 -5
  162. package/dist/Components/Select/SelectPopup.js +6 -4
  163. package/dist/Components/SelectSearch/SelectSearch.js +5 -4
  164. package/dist/Components/SettingRow/SettingRow.js +1 -1
  165. package/dist/Components/SideBar/SecondaryBar.js +2 -1
  166. package/dist/Components/SideBar/SideBar.js +82 -21
  167. package/dist/Components/SideBar/components/MenuItemBox.d.ts +2 -2
  168. package/dist/Components/SideBar/components/MenuItemBox.js +4 -3
  169. package/dist/Components/SideBar/components/MenuItems.d.ts +2 -2
  170. package/dist/Components/SideBar/components/MenuItems.js +3 -3
  171. package/dist/Components/SideBar/components/OtherApps.js +5 -1
  172. package/dist/Components/SideBar/components/OverflowTooltipText.js +4 -5
  173. package/dist/Components/SideBar/components/PinnedSection.js +2 -2
  174. package/dist/Components/SideBar/components/TextTruncation.js +11 -6
  175. package/dist/Components/SideBar/sidebarScale.d.ts +1 -1
  176. package/dist/Components/SideBar/sidebarScale.js +2 -1
  177. package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +8 -0
  178. package/dist/Components/Skeletons/SkeletonProps.d.ts +5 -2
  179. package/dist/Components/Skeletons/Skeletons.d.ts +1 -1
  180. package/dist/Components/Skeletons/Skeletons.js +4 -2
  181. package/dist/Components/SkipLink/SkipLink.d.ts +4 -0
  182. package/dist/Components/SkipLink/SkipLink.js +54 -0
  183. package/dist/Components/SkipLink/SkipLinkProps.d.ts +8 -0
  184. package/dist/Components/SkipLink/SkipLinkProps.js +2 -0
  185. package/dist/Components/Slider/Slider.d.ts +2 -2
  186. package/dist/Components/Slider/Slider.js +11 -4
  187. package/dist/Components/SpecTable/SpecTable.js +2 -1
  188. package/dist/Components/StageProgress/StageItem.js +2 -5
  189. package/dist/Components/StageProgress/StageProgress.js +2 -1
  190. package/dist/Components/StageProgress/StageProgressProps.d.ts +1 -1
  191. package/dist/Components/StageProgress/StepperStage.js +2 -6
  192. package/dist/Components/StageProgress/centerInStrip.d.ts +2 -0
  193. package/dist/Components/StageProgress/centerInStrip.js +15 -0
  194. package/dist/Components/StatCard/StatCard.d.ts +1 -1
  195. package/dist/Components/StatCard/StatCard.js +5 -4
  196. package/dist/Components/StatCard/StatCardProps.d.ts +3 -3
  197. package/dist/Components/StickyBuyBar/StickyBuyBar.js +1 -1
  198. package/dist/Components/Table/components/TableActions.js +40 -24
  199. package/dist/Components/Table/components/TableBody.js +25 -40
  200. package/dist/Components/Table/components/rowMeasurer.d.ts +8 -0
  201. package/dist/Components/Table/components/rowMeasurer.js +71 -0
  202. package/dist/Components/Table/filters/TableFilters.js +2 -13
  203. package/dist/Components/Table/hooks/useTable.js +12 -9
  204. package/dist/Components/Tabs/components/CountBadge.js +3 -3
  205. package/dist/Components/Tabs/components/Tab.d.ts +2 -1
  206. package/dist/Components/Tabs/components/Tab.js +4 -3
  207. package/dist/Components/Tabs/components/TabList.js +16 -1
  208. package/dist/Components/Tag/Tag.d.ts +2 -2
  209. package/dist/Components/Tag/Tag.js +15 -12
  210. package/dist/Components/Tag/Tag.styles.js +6 -4
  211. package/dist/Components/TagInput/TagInput.d.ts +3 -0
  212. package/dist/Components/TagInput/TagInput.js +99 -0
  213. package/dist/Components/TagInput/TagInputProps.d.ts +46 -0
  214. package/dist/Components/TagInput/TagInputProps.js +2 -0
  215. package/dist/Components/TagInput/tagEntries.d.ts +15 -0
  216. package/dist/Components/TagInput/tagEntries.js +45 -0
  217. package/dist/Components/TimePicker/TimePicker.d.ts +3 -0
  218. package/dist/Components/TimePicker/TimePicker.js +50 -0
  219. package/dist/Components/TimePicker/TimePickerProps.d.ts +44 -0
  220. package/dist/Components/TimePicker/TimePickerProps.js +2 -0
  221. package/dist/Components/TimePicker/timeParts.d.ts +10 -0
  222. package/dist/Components/TimePicker/timeParts.js +36 -0
  223. package/dist/Components/Timeline/Timeline.js +11 -9
  224. package/dist/Components/Toaster/Toaster.js +2 -1
  225. package/dist/Components/Toggle/TableToggle.js +4 -3
  226. package/dist/Components/ToggleSwitch/ToggleSwitch.d.ts +3 -2
  227. package/dist/Components/ToggleSwitch/ToggleSwitch.js +6 -5
  228. package/dist/Components/ToolTip/ToolTip.js +86 -8
  229. package/dist/Components/UpgradeButton/UpgradeButton.js +4 -2
  230. package/dist/Components/UserDetails/UserDetails.js +7 -1
  231. package/dist/Components/VisuallyHidden/VisuallyHidden.d.ts +15 -0
  232. package/dist/Components/VisuallyHidden/VisuallyHidden.js +21 -0
  233. package/dist/Components/VisuallyHidden/VisuallyHiddenProps.d.ts +3 -0
  234. package/dist/Components/VisuallyHidden/VisuallyHiddenProps.js +2 -0
  235. package/dist/Components/WizardDialog/WizardDialog.js +10 -5
  236. package/dist/Components/WizardDialog/WizardDialogProps.d.ts +4 -0
  237. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +5 -1
  238. package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +15 -2
  239. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +2 -1
  240. package/dist/Hooks/sharedResizeObserver.d.ts +6 -0
  241. package/dist/Hooks/sharedResizeObserver.js +77 -0
  242. package/dist/Hooks/useIsTruncated.js +3 -4
  243. package/dist/Theme/chakra/Menu.styles.d.ts +1 -1
  244. package/dist/Theme/chakra/common.web.d.ts +1 -0
  245. package/dist/Theme/chakra/componentStyles.d.ts +1 -1
  246. package/dist/Theme/chakra/createBrandTheme.d.ts +3 -0
  247. package/dist/Theme/chakra/createBrandTheme.js +34 -4
  248. package/dist/Theme/chakra/focusRing.styles.d.ts +2 -0
  249. package/dist/Theme/chakra/focusRing.styles.js +5 -1
  250. package/dist/Theme/chakra/fonts.web.d.ts +2 -0
  251. package/dist/Theme/chakra/motion.d.ts +14 -0
  252. package/dist/Theme/chakra/motion.js +26 -1
  253. package/dist/Theme/index.d.ts +2 -1
  254. package/dist/Theme/index.js +12 -9
  255. package/dist/Theme/provider/PixelizeThemeProvider.d.ts +4 -1
  256. package/dist/Theme/provider/PixelizeThemeProvider.js +21 -12
  257. package/dist/Theme/provider/ThemeSwitcher.js +3 -2
  258. package/dist/Theme/themeProps.d.ts +3 -0
  259. package/dist/Theme/tokens/brands/emerald/palette.dark.js +2 -1
  260. package/dist/Theme/tokens/brands/index.d.ts +1 -1
  261. package/dist/Theme/tokens/brands/index.js +14 -13
  262. package/dist/Theme/tokens/brands/lavender/palette.dark.js +2 -1
  263. package/dist/Theme/tokens/brands/meadow/palette.dark.js +2 -1
  264. package/dist/Theme/tokens/brands/radiant/palette.dark.js +2 -1
  265. package/dist/Theme/tokens/brands/rosewood/palette.dark.js +2 -1
  266. package/dist/Theme/tokens/brands/skyline/palette.dark.js +2 -1
  267. package/dist/Theme/tokens/brands/slate/palette.dark.js +2 -1
  268. package/dist/Theme/tokens/brands/storefront/palette.dark.js +2 -1
  269. package/dist/Theme/tokens/brands/zinc/palette.dark.js +28 -24
  270. package/dist/Theme/tokens/builders/color.js +11 -7
  271. package/dist/Theme/tokens/builders/filledSurface.d.ts +3 -1
  272. package/dist/Theme/tokens/builders/filledSurface.js +7 -7
  273. package/dist/Theme/tokens/builders/lazy.d.ts +5 -0
  274. package/dist/Theme/tokens/builders/lazy.js +55 -0
  275. package/dist/Theme/tokens/builders/memo.d.ts +9 -0
  276. package/dist/Theme/tokens/builders/memo.js +28 -0
  277. package/dist/Theme/tokens/builders/memoByReads.d.ts +2 -0
  278. package/dist/Theme/tokens/builders/memoByReads.js +50 -0
  279. package/dist/Theme/tokens/builders/outlineRung.js +10 -2
  280. package/dist/Theme/tokens/builders/tone.js +5 -4
  281. package/dist/Theme/tokens/primitives/borderWidths.d.ts +6 -0
  282. package/dist/Theme/tokens/primitives/borderWidths.js +5 -0
  283. package/dist/Theme/tokens/primitives/index.d.ts +8 -3
  284. package/dist/Theme/tokens/primitives/index.js +8 -1
  285. package/dist/Theme/tokens/primitives/motion.d.ts +25 -2
  286. package/dist/Theme/tokens/primitives/motion.js +23 -5
  287. package/dist/Theme/tokens/primitives/optionRowSizes.d.ts +1 -1
  288. package/dist/Theme/tokens/primitives/optionRowSizes.js +2 -1
  289. package/dist/Theme/tokens/primitives/radii.d.ts +15 -0
  290. package/dist/Theme/tokens/primitives/radii.js +14 -0
  291. package/dist/Theme/tokens/primitives/shadows.d.ts +5 -1
  292. package/dist/Theme/tokens/primitives/shadows.js +5 -1
  293. package/dist/Theme/tokens/primitives/states.d.ts +1 -0
  294. package/dist/Theme/tokens/primitives/states.js +4 -0
  295. package/dist/Theme/tokens/primitives/typography.d.ts +17 -0
  296. package/dist/Theme/tokens/primitives/typography.js +21 -1
  297. package/dist/Theme/tokens/primitives/zIndices.d.ts +1 -0
  298. package/dist/Theme/tokens/primitives/zIndices.js +1 -0
  299. package/dist/Utils/formatDate.d.ts +25 -0
  300. package/dist/Utils/formatDate.js +144 -0
  301. package/dist/esm/Components/Accordion/Accordion.js +2 -2
  302. package/dist/esm/Components/AddressCard/AddressCard.js +2 -1
  303. package/dist/esm/Components/Apexcharts/ApexLineChart/ApexLineChart.js +1 -1
  304. package/dist/esm/Components/AppSwitcher/AppSwitcher.js +1 -1
  305. package/dist/esm/Components/AppearanceSettings/AppearanceSettings.js +1 -1
  306. package/dist/esm/Components/AudioRecorder/AudioRecorder.js +2 -1
  307. package/dist/esm/Components/Avatar/Avatar.js +6 -4
  308. package/dist/esm/Components/Backdrop/Backdrop.js +1 -1
  309. package/dist/esm/Components/BagBar/BagBar.js +2 -1
  310. package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +1 -1
  311. package/dist/esm/Components/CalendarGrid/CalendarGrid.js +6 -6
  312. package/dist/esm/Components/CalendarGrid/calendarMath.js +18 -6
  313. package/dist/esm/Components/Card/PaymentCard/PaymentCard.js +6 -5
  314. package/dist/esm/Components/CartItem/CartItem.js +2 -1
  315. package/dist/esm/Components/Checkbox/Checkbox.js +8 -5
  316. package/dist/esm/Components/CheckoutKit/selectable.js +1 -1
  317. package/dist/esm/Components/ChoiceCard/ChoiceCard.js +14 -0
  318. package/dist/esm/Components/ChoiceCard/ChoiceCardGroup.js +4 -0
  319. package/dist/esm/Components/ChoiceCard/ChoiceCardProps.js +1 -0
  320. package/dist/esm/Components/CircularProgress/CircularProgress.js +5 -9
  321. package/dist/esm/Components/CircularProgress/arc.js +13 -0
  322. package/dist/esm/Components/Common/FormLabel.js +1 -1
  323. package/dist/esm/Components/Common/FormattedDescription.js +1 -1
  324. package/dist/esm/Components/Common/HelperText.js +11 -8
  325. package/dist/esm/Components/Common/fieldStyles.js +2 -1
  326. package/dist/esm/Components/ContactForm/ContactForm.js +1 -1
  327. package/dist/esm/Components/CopyButton/CopyButton.js +14 -7
  328. package/dist/esm/Components/CouponField/CouponField.js +4 -3
  329. package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +1 -1
  330. package/dist/esm/Components/DatePicker/CalendarPanel.js +2 -2
  331. package/dist/esm/Components/DatePicker/DatePicker.js +8 -2
  332. package/dist/esm/Components/DatePicker/RangeDatePicker.js +8 -6
  333. package/dist/esm/Components/DatePicker/SingleDatePicker.js +7 -4
  334. package/dist/esm/Components/DatePicker/ThemeDatePicker.js +7 -4
  335. package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +5 -3
  336. package/dist/esm/Components/DatePicker/TimePickerInput.js +8 -6
  337. package/dist/esm/Components/DescriptionList/DescriptionList.js +3 -3
  338. package/dist/esm/Components/Dropdown/DropDown.js +12 -4
  339. package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -1
  340. package/dist/esm/Components/EmptyState/EmptyState.js +2 -2
  341. package/dist/esm/Components/FileUpload/FileUpload.js +21 -15
  342. package/dist/esm/Components/FileUpload/useObjectUrl.js +10 -0
  343. package/dist/esm/Components/FileUploader/FileUploader.js +9 -3
  344. package/dist/esm/Components/FilterBar/FilterBar.js +2 -2
  345. package/dist/esm/Components/FilterSidebar/FilterSidebar.js +10 -6
  346. package/dist/esm/Components/Form/FormWrapper.js +1 -1
  347. package/dist/esm/Components/FormField/FormField.js +52 -0
  348. package/dist/esm/Components/FormField/FormFieldProps.js +1 -0
  349. package/dist/esm/Components/Header/HeaderActions.js +2 -2
  350. package/dist/esm/Components/Header/components/mobileMenu.js +1 -1
  351. package/dist/esm/Components/IconButton/IconButton.js +21 -0
  352. package/dist/esm/Components/IconButton/IconButtonProps.js +1 -0
  353. package/dist/esm/Components/Input/PhoneNumberInput.js +15 -1
  354. package/dist/esm/Components/KanbanBoard/AccountCard.js +3 -2
  355. package/dist/esm/Components/KanbanBoard/AccountRow.js +1 -1
  356. package/dist/esm/Components/KanbanBoard/KanbanBoard.js +56 -39
  357. package/dist/esm/Components/KanbanBoard/MeasuredItem.js +6 -14
  358. package/dist/esm/Components/KanbanBoard/boardStore.js +22 -0
  359. package/dist/esm/Components/Kbd/Kbd.js +1 -1
  360. package/dist/esm/Components/LimitReachedModal/LimitReachedModal.js +1 -1
  361. package/dist/esm/Components/Loading/Loading.js +1 -1
  362. package/dist/esm/Components/MediaGallery/MediaGallery.js +2 -2
  363. package/dist/esm/Components/MediaGallery/MediaLightbox.js +2 -1
  364. package/dist/esm/Components/MediaGallery/glass.js +2 -1
  365. package/dist/esm/Components/MediaViewer/MediaViewer.js +1 -1
  366. package/dist/esm/Components/MediaViewer/components/MediaAudioPlayer.js +7 -7
  367. package/dist/esm/Components/MediaViewer/components/MediaImageViewer.js +1 -1
  368. package/dist/esm/Components/MediaViewer/components/MediaScrubber.js +5 -1
  369. package/dist/esm/Components/MediaViewer/components/MediaVideoPlayer.js +7 -7
  370. package/dist/esm/Components/MediaViewer/components/PlaybackTimeline.js +38 -0
  371. package/dist/esm/Components/MediaViewer/components/TileChip.js +1 -1
  372. package/dist/esm/Components/Modal/Modal.js +1 -1
  373. package/dist/esm/Components/MoreItems/MoreItems.js +2 -2
  374. package/dist/esm/Components/NavigationBar/NavigationBar.js +2 -2
  375. package/dist/esm/Components/NoteTextArea/NoteTextArea.js +18 -4
  376. package/dist/esm/Components/Notification/Notification.js +17 -3
  377. package/dist/esm/Components/NotificationBell/NotificationBell.js +2 -1
  378. package/dist/esm/Components/NotificationBell/NotificationItem.js +1 -1
  379. package/dist/esm/Components/NotificationBell/NotificationList.js +1 -1
  380. package/dist/esm/Components/OffersList/OffersList.js +2 -1
  381. package/dist/esm/Components/OptionChip/OptionChip.js +3 -2
  382. package/dist/esm/Components/OrderStatusTimeline/OrderStatusTimeline.js +2 -1
  383. package/dist/esm/Components/OrderSummary/OrderSummary.js +5 -5
  384. package/dist/esm/Components/OrganizationDetails/OrganizationDetails.js +7 -1
  385. package/dist/esm/Components/PageHeader/PageHeader.js +2 -2
  386. package/dist/esm/Components/Pagination/Pagination.js +42 -0
  387. package/dist/esm/Components/Pagination/PaginationProps.js +6 -0
  388. package/dist/esm/Components/Pagination/pageWindow.js +16 -0
  389. package/dist/esm/Components/PaymentOption/PaymentOption.js +1 -1
  390. package/dist/esm/Components/PersonChip/PersonChip.js +2 -2
  391. package/dist/esm/Components/PinInput/PinInput.js +14 -2
  392. package/dist/esm/Components/PincodeChecker/PincodeChecker.js +4 -4
  393. package/dist/esm/Components/PlanPill/PlanPill.js +2 -1
  394. package/dist/esm/Components/PriceBlock/PriceBlock.js +3 -3
  395. package/dist/esm/Components/Primitives/Primitives.js +1 -1
  396. package/dist/esm/Components/ProductBadges/ProductBadges.js +2 -1
  397. package/dist/esm/Components/ProductCard/ProductCard.js +1 -1
  398. package/dist/esm/Components/ProductCard/ProductCardAction.js +3 -3
  399. package/dist/esm/Components/ProductCard/ProductCardSwatches.js +2 -1
  400. package/dist/esm/Components/ProductCard/cardMetrics.js +2 -1
  401. package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +3 -2
  402. package/dist/esm/Components/QuantityStepper/QuantityStepper.js +2 -1
  403. package/dist/esm/Components/RadioButton/RadioButton.js +7 -4
  404. package/dist/esm/Components/RangeSlider/RangeSlider.js +3 -3
  405. package/dist/esm/Components/Rating/Rating.js +2 -1
  406. package/dist/esm/Components/Reorder/Reorder.js +3 -2
  407. package/dist/esm/Components/ReviewList/ReviewList.js +3 -3
  408. package/dist/esm/Components/ReviewSummary/ReviewSummary.js +3 -3
  409. package/dist/esm/Components/SaveBar/SaveBar.js +2 -2
  410. package/dist/esm/Components/Search/Search.js +2 -9
  411. package/dist/esm/Components/Search/ctrlShortcut.js +25 -0
  412. package/dist/esm/Components/SearchSelect/SearchSelect.js +120 -33
  413. package/dist/esm/Components/SegmentedControl/SegmentedControl.js +11 -6
  414. package/dist/esm/Components/Select/SelectPopup.js +6 -4
  415. package/dist/esm/Components/SelectSearch/SelectSearch.js +5 -4
  416. package/dist/esm/Components/SettingRow/SettingRow.js +1 -1
  417. package/dist/esm/Components/SideBar/SecondaryBar.js +2 -1
  418. package/dist/esm/Components/SideBar/SideBar.js +83 -22
  419. package/dist/esm/Components/SideBar/components/MenuItemBox.js +4 -3
  420. package/dist/esm/Components/SideBar/components/MenuItems.js +4 -4
  421. package/dist/esm/Components/SideBar/components/OtherApps.js +2 -1
  422. package/dist/esm/Components/SideBar/components/OverflowTooltipText.js +4 -5
  423. package/dist/esm/Components/SideBar/components/PinnedSection.js +2 -2
  424. package/dist/esm/Components/SideBar/components/TextTruncation.js +9 -7
  425. package/dist/esm/Components/SideBar/sidebarScale.js +2 -1
  426. package/dist/esm/Components/Skeletons/Skeletons.js +4 -2
  427. package/dist/esm/Components/SkipLink/SkipLink.js +50 -0
  428. package/dist/esm/Components/SkipLink/SkipLinkProps.js +1 -0
  429. package/dist/esm/Components/Slider/Slider.js +11 -4
  430. package/dist/esm/Components/SpecTable/SpecTable.js +2 -1
  431. package/dist/esm/Components/StageProgress/StageItem.js +2 -5
  432. package/dist/esm/Components/StageProgress/StageProgress.js +2 -1
  433. package/dist/esm/Components/StageProgress/StepperStage.js +2 -6
  434. package/dist/esm/Components/StageProgress/centerInStrip.js +11 -0
  435. package/dist/esm/Components/StatCard/StatCard.js +5 -4
  436. package/dist/esm/Components/StickyBuyBar/StickyBuyBar.js +2 -2
  437. package/dist/esm/Components/Table/components/TableActions.js +42 -26
  438. package/dist/esm/Components/Table/components/TableBody.js +25 -40
  439. package/dist/esm/Components/Table/components/rowMeasurer.js +66 -0
  440. package/dist/esm/Components/Table/filters/TableFilters.js +3 -14
  441. package/dist/esm/Components/Table/hooks/useTable.js +12 -9
  442. package/dist/esm/Components/Tabs/components/CountBadge.js +3 -3
  443. package/dist/esm/Components/Tabs/components/Tab.js +5 -4
  444. package/dist/esm/Components/Tabs/components/TabList.js +16 -1
  445. package/dist/esm/Components/Tag/Tag.js +11 -8
  446. package/dist/esm/Components/Tag/Tag.styles.js +6 -4
  447. package/dist/esm/Components/TagInput/TagInput.js +94 -0
  448. package/dist/esm/Components/TagInput/TagInputProps.js +1 -0
  449. package/dist/esm/Components/TagInput/tagEntries.js +39 -0
  450. package/dist/esm/Components/TimePicker/TimePicker.js +45 -0
  451. package/dist/esm/Components/TimePicker/TimePickerProps.js +1 -0
  452. package/dist/esm/Components/TimePicker/timeParts.js +26 -0
  453. package/dist/esm/Components/Timeline/Timeline.js +11 -9
  454. package/dist/esm/Components/Toaster/Toaster.js +2 -1
  455. package/dist/esm/Components/Toggle/TableToggle.js +4 -3
  456. package/dist/esm/Components/ToggleSwitch/ToggleSwitch.js +7 -5
  457. package/dist/esm/Components/ToolTip/ToolTip.js +89 -11
  458. package/dist/esm/Components/UpgradeButton/UpgradeButton.js +4 -2
  459. package/dist/esm/Components/UserDetails/UserDetails.js +7 -1
  460. package/dist/esm/Components/VisuallyHidden/VisuallyHidden.js +18 -0
  461. package/dist/esm/Components/VisuallyHidden/VisuallyHiddenProps.js +1 -0
  462. package/dist/esm/Components/WizardDialog/WizardDialog.js +11 -6
  463. package/dist/esm/Components/WorkspaceWindow/WorkspaceTrayPreview.js +2 -1
  464. package/dist/esm/Components/WorkspaceWindow/WorkspaceWindow.js +13 -3
  465. package/dist/esm/Hooks/sharedResizeObserver.js +73 -0
  466. package/dist/esm/Hooks/useIsTruncated.js +3 -4
  467. package/dist/esm/Theme/chakra/createBrandTheme.js +34 -4
  468. package/dist/esm/Theme/chakra/focusRing.styles.js +3 -0
  469. package/dist/esm/Theme/chakra/motion.js +25 -0
  470. package/dist/esm/Theme/index.js +12 -9
  471. package/dist/esm/Theme/provider/PixelizeThemeProvider.js +22 -13
  472. package/dist/esm/Theme/provider/ThemeSwitcher.js +3 -2
  473. package/dist/esm/Theme/tokens/brands/emerald/palette.dark.js +2 -1
  474. package/dist/esm/Theme/tokens/brands/index.js +14 -13
  475. package/dist/esm/Theme/tokens/brands/lavender/palette.dark.js +2 -1
  476. package/dist/esm/Theme/tokens/brands/meadow/palette.dark.js +2 -1
  477. package/dist/esm/Theme/tokens/brands/radiant/palette.dark.js +2 -1
  478. package/dist/esm/Theme/tokens/brands/rosewood/palette.dark.js +2 -1
  479. package/dist/esm/Theme/tokens/brands/skyline/palette.dark.js +2 -1
  480. package/dist/esm/Theme/tokens/brands/slate/palette.dark.js +2 -1
  481. package/dist/esm/Theme/tokens/brands/storefront/palette.dark.js +2 -1
  482. package/dist/esm/Theme/tokens/brands/zinc/palette.dark.js +28 -24
  483. package/dist/esm/Theme/tokens/builders/color.js +10 -6
  484. package/dist/esm/Theme/tokens/builders/filledSurface.js +7 -7
  485. package/dist/esm/Theme/tokens/builders/lazy.js +49 -0
  486. package/dist/esm/Theme/tokens/builders/memo.js +21 -0
  487. package/dist/esm/Theme/tokens/builders/memoByReads.js +46 -0
  488. package/dist/esm/Theme/tokens/builders/outlineRung.js +10 -2
  489. package/dist/esm/Theme/tokens/builders/tone.js +5 -4
  490. package/dist/esm/Theme/tokens/primitives/borderWidths.js +2 -0
  491. package/dist/esm/Theme/tokens/primitives/index.js +5 -3
  492. package/dist/esm/Theme/tokens/primitives/motion.js +20 -4
  493. package/dist/esm/Theme/tokens/primitives/optionRowSizes.js +2 -1
  494. package/dist/esm/Theme/tokens/primitives/radii.js +13 -0
  495. package/dist/esm/Theme/tokens/primitives/shadows.js +3 -1
  496. package/dist/esm/Theme/tokens/primitives/states.js +1 -0
  497. package/dist/esm/Theme/tokens/primitives/typography.js +20 -0
  498. package/dist/esm/Theme/tokens/primitives/zIndices.js +1 -0
  499. package/dist/esm/Utils/formatDate.js +138 -0
  500. package/dist/esm/index.js +18 -2
  501. package/dist/index.d.ts +33 -5
  502. package/dist/index.js +47 -4
  503. package/package.json +1 -1
@@ -9,13 +9,14 @@ const react_2 = require("@chakra-ui/react");
9
9
  const TabsContext_1 = require("../TabsContext");
10
10
  const useTabAppearance_1 = require("../useTabAppearance");
11
11
  const CountBadge_1 = __importDefault(require("./CountBadge"));
12
- const Tab = ({ value, children, icon, count, isDisabled }) => {
12
+ /** One role="tab" button inside a TabList; `ref` is that `<button>`. */
13
+ const Tab = (0, react_1.forwardRef)(function Tab({ value, children, icon, count, isDisabled }, ref) {
13
14
  var _a;
14
15
  const ctx = (0, TabsContext_1.useTabsContext)();
15
- const ref = (0, react_1.useRef)(null);
16
16
  const isSelected = ctx.selectedId === value;
17
17
  const isFocusTarget = ((_a = ctx.focusedId) !== null && _a !== void 0 ? _a : ctx.selectedId) === value;
18
18
  const { colors, canvas, scale, style, iconSize, iconSx, boxProps } = (0, useTabAppearance_1.useTabAppearance)(isSelected, isDisabled);
19
19
  return ((0, jsx_runtime_1.jsxs)(react_2.Box, { as: "button", type: "button", ref: ref, role: "tab", id: (0, TabsContext_1.tabId)(ctx.baseId, value), "aria-selected": isSelected, "aria-disabled": isDisabled || undefined, "aria-controls": ctx.hasPanels ? (0, TabsContext_1.panelId)(ctx.baseId, value) : undefined, "data-value": value, tabIndex: isDisabled ? -1 : isFocusTarget ? 0 : -1, disabled: isDisabled, onClick: () => !isDisabled && ctx.select(value), onFocus: () => ctx.focusTab(value), ...boxProps, children: [icon ? ((0, jsx_runtime_1.jsx)(react_2.Box, { as: "span", "aria-hidden": true, boxSize: `${iconSize}px`, sx: iconSx, children: icon })) : null, (0, jsx_runtime_1.jsx)(react_2.Box, { as: "span", children: children }), count !== undefined ? ((0, jsx_runtime_1.jsx)(CountBadge_1.default, { count: count, colors: colors, scale: scale, surface: ctx.variant === "solid" && isSelected ? style.bg : canvas, size: ctx.size })) : null] }));
20
- };
20
+ });
21
+ Tab.displayName = "Tab";
21
22
  exports.default = Tab;
@@ -8,19 +8,34 @@ const scrollbar_1 = require("../../../Theme/tokens/builders/scrollbar");
8
8
  const TabsContext_1 = require("../TabsContext");
9
9
  const ENABLED_TAB_SELECTOR = '[role="tab"]:not([aria-disabled="true"])';
10
10
  const findByValue = (container, value) => Array.from(container.querySelectorAll("[data-value]")).find((node) => node.dataset.value === value);
11
+ const overshoot = (start, end, boxStart, boxEnd) => start < boxStart ? start - boxStart : Math.max(0, end - boxEnd);
12
+ const revealWithinList = (list, tab) => {
13
+ const box = list.getBoundingClientRect();
14
+ const rect = tab.getBoundingClientRect();
15
+ list.scrollLeft += overshoot(rect.left, rect.right, box.left, box.right);
16
+ list.scrollTop += overshoot(rect.top, rect.bottom, box.top, box.bottom);
17
+ };
11
18
  const TabList = ({ children, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy }) => {
12
19
  const { colors } = (0, useCustomTheme_1.useCustomTheme)();
13
20
  const ctx = (0, TabsContext_1.useTabsContext)();
14
21
  const ref = (0, react_1.useRef)(null);
15
22
  const isVertical = ctx.orientation === "vertical";
16
23
  const isLine = ctx.variant === "line";
24
+ const revealed = (0, react_1.useRef)(false);
17
25
  (0, react_1.useEffect)(() => {
18
26
  var _a, _b;
19
27
  const activeId = (_a = ctx.focusedId) !== null && _a !== void 0 ? _a : ctx.selectedId;
20
28
  if (!activeId || !ref.current)
21
29
  return;
22
30
  const el = findByValue(ref.current, activeId);
23
- (_b = el === null || el === void 0 ? void 0 : el.scrollIntoView) === null || _b === void 0 ? void 0 : _b.call(el, { block: "nearest", inline: "nearest" });
31
+ if (!el)
32
+ return;
33
+ if (!revealed.current) {
34
+ revealed.current = true;
35
+ revealWithinList(ref.current, el);
36
+ return;
37
+ }
38
+ (_b = el.scrollIntoView) === null || _b === void 0 ? void 0 : _b.call(el, { block: "nearest", inline: "nearest" });
24
39
  }, [ctx.focusedId, ctx.selectedId]);
25
40
  const focusAndMaybeSelect = (el) => {
26
41
  el.focus();
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
2
  import { TagProps } from "./TagProps";
3
- /** Renders a pill-shaped status/filter chip (Chakra Tag) — not interchangeable with the raw Badge primitive's static marker. */
4
- declare const Tag: React.FC<TagProps>;
3
+ /** Pill-shaped status/filter chip (Chakra Tag), not the raw Badge primitive; `ref` is the root element. */
4
+ declare const Tag: React.ForwardRefExoticComponent<TagProps & React.RefAttributes<HTMLElement>>;
5
5
  export default Tag;
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const jsx_runtime_1 = require("react/jsx-runtime");
4
- const react_1 = require("@chakra-ui/react");
4
+ const react_1 = require("react");
5
+ const react_2 = require("@chakra-ui/react");
5
6
  const tone_1 = require("../../Theme/tokens/builders/tone");
6
7
  const motion_1 = require("../../Theme/tokens/primitives/motion");
8
+ const states_1 = require("../../Theme/tokens/primitives/states");
7
9
  const motion_2 = require("../../Theme/chakra/motion");
8
10
  const focusRing_styles_1 = require("../../Theme/chakra/focusRing.styles");
9
11
  const useCustomTheme_1 = require("../../Theme/useCustomTheme");
10
12
  const tagDot_1 = require("./tagDot");
11
13
  // NOTE: the label's pill radius would slice descenders, so clipping lives on a square child.
12
- const LabelText = ({ children, title }) => ((0, jsx_runtime_1.jsx)(react_1.Box, { as: "span", title: title, display: "block", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", borderRadius: 0, px: "0.05em", mx: "-0.05em", children: children }));
14
+ const LabelText = ({ children, title }) => ((0, jsx_runtime_1.jsx)(react_2.Box, { as: "span", title: title, display: "block", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", borderRadius: 0, px: "0.05em", mx: "-0.05em", children: children }));
13
15
  const ICON_SIZE = {
14
16
  xs: "0.75rem",
15
17
  sm: "0.875rem",
@@ -17,23 +19,24 @@ const ICON_SIZE = {
17
19
  lg: "1.1em",
18
20
  };
19
21
  const DOT_FONT_SIZE = {
20
- xs: "0.75rem",
21
- sm: "0.8125rem",
22
- md: "0.875rem",
22
+ xs: "xs",
23
+ sm: "xs-plus",
24
+ md: "sm",
23
25
  lg: "0.9375rem",
24
26
  };
25
- /** Renders a pill-shaped status/filter chip (Chakra Tag) — not interchangeable with the raw Badge primitive's static marker. */
26
- const Tag = ({ label, colorScheme = "primary", tone, variant = "subtle", display = "chip", size = "sm", maxW, icon, leadingIcon, onTagClick, onIconClick, isDisabled, "data-testid": testId, }) => {
27
+ /** Pill-shaped status/filter chip (Chakra Tag), not the raw Badge primitive; `ref` is the root element. */
28
+ const Tag = (0, react_1.forwardRef)(function Tag({ label, colorScheme = "primary", tone, variant = "subtle", display = "chip", size = "sm", maxW, icon, leadingIcon, onTagClick, onIconClick, isDisabled, "data-testid": testId, }, ref) {
27
29
  const { colors } = (0, useCustomTheme_1.useCustomTheme)();
28
30
  const isInteractive = !!onTagClick;
29
31
  if (display === "dot") {
30
- return ((0, jsx_runtime_1.jsxs)(react_1.Flex, { as: isInteractive ? "button" : "span", ...(isInteractive ? { type: "button", disabled: isDisabled || undefined } : {}), display: "inline-flex", alignItems: "center", gap: 2, maxW: maxW, minW: 0, borderRadius: "sm", bg: "transparent", fontSize: DOT_FONT_SIZE[size], fontWeight: 500, color: colors.text[700], cursor: isInteractive ? "pointer" : undefined, opacity: isDisabled ? 0.5 : undefined, onClick: isInteractive && !isDisabled ? onTagClick : undefined, "data-testid": testId, "data-display": "dot", "data-disabled": isDisabled || undefined, sx: isInteractive ? (0, focusRing_styles_1.focusVisibleStyles)(colors) : undefined, children: [(0, jsx_runtime_1.jsx)(react_1.Box, { as: "span", "aria-hidden": true, boxSize: "0.5rem", flexShrink: 0, borderRadius: "full", bg: (0, tagDot_1.dotColor)(colors, tone, colorScheme) }), (0, jsx_runtime_1.jsx)(react_1.Text, { as: "span", noOfLines: 1, title: maxW ? label : undefined, children: label })] }));
32
+ return ((0, jsx_runtime_1.jsxs)(react_2.Flex, { ref: ref, as: isInteractive ? "button" : "span", ...(isInteractive ? { type: "button", disabled: isDisabled || undefined } : {}), display: "inline-flex", alignItems: "center", gap: 2, maxW: maxW, minW: 0, borderRadius: "sm", bg: "transparent", fontSize: DOT_FONT_SIZE[size], fontWeight: 500, color: colors.text[700], cursor: isInteractive ? "pointer" : undefined, opacity: isDisabled ? states_1.DISABLED_OPACITY : undefined, onClick: isInteractive && !isDisabled ? onTagClick : undefined, "data-testid": testId, "data-display": "dot", "data-disabled": isDisabled || undefined, sx: isInteractive ? (0, focusRing_styles_1.focusVisibleStyles)(colors) : undefined, children: [(0, jsx_runtime_1.jsx)(react_2.Box, { as: "span", "aria-hidden": true, boxSize: "0.5rem", flexShrink: 0, borderRadius: "full", bg: (0, tagDot_1.dotColor)(colors, tone, colorScheme) }), (0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", noOfLines: 1, title: maxW ? label : undefined, children: label })] }));
31
33
  }
32
- return ((0, jsx_runtime_1.jsxs)(react_1.Tag, { size: size, variant: variant, colorScheme: tone ? tone_1.toneToColorScheme[tone] : colorScheme, borderRadius: "full", maxW: maxW, "data-testid": testId, "data-interactive": isInteractive || undefined, "data-disabled": isDisabled || undefined, "aria-disabled": isDisabled || undefined, children: [leadingIcon && (0, jsx_runtime_1.jsx)(react_1.TagLeftIcon, { as: leadingIcon, boxSize: ICON_SIZE[size], "aria-hidden": true }), isInteractive ? ((0, jsx_runtime_1.jsx)(react_1.TagLabel, { as: "button", type: "button", noOfLines: undefined, disabled: isDisabled || undefined, cursor: "pointer", onClick: isDisabled ? undefined : onTagClick, children: (0, jsx_runtime_1.jsx)(LabelText, { title: maxW ? label : undefined, children: label }) })) : ((0, jsx_runtime_1.jsx)(react_1.TagLabel, { noOfLines: undefined, children: (0, jsx_runtime_1.jsx)(LabelText, { title: maxW ? label : undefined, children: label }) })), icon &&
33
- (onIconClick ? ((0, jsx_runtime_1.jsx)(react_1.Box, { as: "button", type: "button", "aria-label": `Remove ${label}`, "data-testid": testId ? `${testId}-remove` : undefined, disabled: isDisabled || undefined, onClick: (e) => {
34
+ return ((0, jsx_runtime_1.jsxs)(react_2.Tag, { ref: ref, size: size, variant: variant, colorScheme: tone ? tone_1.toneToColorScheme[tone] : colorScheme, borderRadius: "full", maxW: maxW, "data-testid": testId, "data-interactive": isInteractive || undefined, "data-disabled": isDisabled || undefined, "aria-disabled": isDisabled || undefined, children: [leadingIcon && (0, jsx_runtime_1.jsx)(react_2.TagLeftIcon, { as: leadingIcon, boxSize: ICON_SIZE[size], "aria-hidden": true }), isInteractive ? ((0, jsx_runtime_1.jsx)(react_2.TagLabel, { as: "button", type: "button", noOfLines: undefined, disabled: isDisabled || undefined, cursor: "pointer", onClick: isDisabled ? undefined : onTagClick, children: (0, jsx_runtime_1.jsx)(LabelText, { title: maxW ? label : undefined, children: label }) })) : ((0, jsx_runtime_1.jsx)(react_2.TagLabel, { noOfLines: undefined, children: (0, jsx_runtime_1.jsx)(LabelText, { title: maxW ? label : undefined, children: label }) })), icon &&
35
+ (onIconClick ? ((0, jsx_runtime_1.jsx)(react_2.Box, { as: "button", type: "button", "aria-label": `Remove ${label}`, "data-testid": testId ? `${testId}-remove` : undefined, disabled: isDisabled || undefined, onClick: (e) => {
34
36
  e.stopPropagation();
35
37
  if (!isDisabled)
36
38
  onIconClick();
37
- }, display: "inline-flex", alignItems: "center", flexShrink: 0, ml: "0.25rem", borderRadius: "full", transition: (0, motion_1.transitionFor)(["opacity"]), _hover: { opacity: 0.8 }, sx: { ...(0, focusRing_styles_1.focusVisibleStyles)(colors), ...(0, motion_2.reducedMotionSx)() }, children: (0, jsx_runtime_1.jsx)(react_1.Icon, { as: icon, boxSize: ICON_SIZE[size] }) })) : ((0, jsx_runtime_1.jsx)(react_1.TagRightIcon, { as: icon, boxSize: ICON_SIZE[size], "aria-hidden": true })))] }));
38
- };
39
+ }, display: "inline-flex", alignItems: "center", flexShrink: 0, ml: "0.25rem", borderRadius: "full", transition: (0, motion_1.transitionFor)(["opacity"]), _hover: { opacity: 0.8 }, sx: { ...(0, focusRing_styles_1.focusVisibleStyles)(colors), ...(0, motion_2.reducedMotionSx)() }, children: (0, jsx_runtime_1.jsx)(react_2.Icon, { as: icon, boxSize: ICON_SIZE[size] }) })) : ((0, jsx_runtime_1.jsx)(react_2.TagRightIcon, { as: icon, boxSize: ICON_SIZE[size], "aria-hidden": true })))] }));
40
+ });
41
+ Tag.displayName = "Tag";
39
42
  exports.default = Tag;
@@ -5,6 +5,8 @@ const accentText_1 = require("../../Theme/tokens/builders/accentText");
5
5
  const filledSurface_1 = require("../../Theme/tokens/builders/filledSurface");
6
6
  const tone_1 = require("../../Theme/tokens/builders/tone");
7
7
  const motion_1 = require("../../Theme/tokens/primitives/motion");
8
+ const states_1 = require("../../Theme/tokens/primitives/states");
9
+ const typography_1 = require("../../Theme/tokens/primitives/typography");
8
10
  const motion_2 = require("../../Theme/chakra/motion");
9
11
  const focusRing_styles_1 = require("../../Theme/chakra/focusRing.styles");
10
12
  exports.INTERACTIVE_HOVER = "&[data-interactive]:hover";
@@ -33,7 +35,7 @@ exports.Tag = {
33
35
  transition: (0, motion_1.transitionFor)(["background-color", "color", "border-color", "box-shadow"]),
34
36
  ...(0, motion_2.reducedMotionSx)(),
35
37
  "&[data-interactive]": { cursor: "pointer" },
36
- "&[data-disabled]": { opacity: 0.5, cursor: "not-allowed", pointerEvents: "none" },
38
+ "&[data-disabled]": { opacity: states_1.DISABLED_OPACITY, cursor: "not-allowed", pointerEvents: "none" },
37
39
  },
38
40
  label: {
39
41
  lineHeight: 1.45,
@@ -45,13 +47,13 @@ exports.Tag = {
45
47
  }),
46
48
  sizes: {
47
49
  xs: {
48
- container: { fontSize: "0.6875rem", px: 2, h: "1.25rem" },
50
+ container: { fontSize: typography_1.fontSizes["xs-minus"], px: 2, h: "1.25rem" },
49
51
  },
50
52
  sm: {
51
- container: { fontSize: "0.75rem", px: 2.5, h: "1.5rem" },
53
+ container: { fontSize: typography_1.fontSizes.xs, px: 2.5, h: "1.5rem" },
52
54
  },
53
55
  md: {
54
- container: { fontSize: "0.8125rem", px: 3, h: "1.75rem" },
56
+ container: { fontSize: typography_1.fontSizes["xs-plus"], px: 3, h: "1.75rem" },
55
57
  },
56
58
  lg: {
57
59
  container: { fontSize: "0.9375rem", px: 3.5, h: "2rem" },
@@ -0,0 +1,3 @@
1
+ import type { TagInputProps } from "./TagInputProps";
2
+ declare const TagInput: import("react").ForwardRefExoticComponent<TagInputProps & import("react").RefAttributes<HTMLInputElement>>;
3
+ export default TagInput;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("react");
8
+ const react_2 = require("@chakra-ui/react");
9
+ const lucide_react_1 = require("lucide-react");
10
+ const useCustomTheme_1 = require("../../Theme/useCustomTheme");
11
+ const controlSizes_1 = require("../../Theme/tokens/primitives/controlSizes");
12
+ const placeholderInk_1 = require("../../Theme/tokens/builders/placeholderInk");
13
+ const motion_1 = require("../../Theme/chakra/motion");
14
+ const fieldStyles_1 = require("../Common/fieldStyles");
15
+ const FormLabel_1 = require("../Common/FormLabel");
16
+ const FieldMessage_1 = __importDefault(require("../Common/FieldMessage"));
17
+ const useFieldIds_1 = require("../Common/useFieldIds");
18
+ const searchSelectSize_1 = require("../SearchSelect/searchSelectSize");
19
+ const Tag_1 = __importDefault(require("../Tag/Tag"));
20
+ const tagEntries_1 = require("./tagEntries");
21
+ const TagInput = (0, react_1.forwardRef)(function TagInput({ value, onChange, validate, maxTags, allowDuplicates = false, addOnBlur = false, id, name, label, "aria-label": ariaLabel, placeholder, isRequired = false, isInformation, informationMessage, isDisabled = false, isReadOnly = false, error, errorMessage, helperText, size = controlSizes_1.DEFAULT_CONTROL_SIZE, width = "100%", }, ref) {
22
+ const theme = (0, useCustomTheme_1.useCustomTheme)();
23
+ const s = (0, searchSelectSize_1.getSearchSelectSizeStyles)(size);
24
+ const inputRef = (0, react_1.useRef)(null);
25
+ const mergedRef = (0, react_2.useMergeRefs)(inputRef, ref);
26
+ const [draft, setDraft] = (0, react_1.useState)("");
27
+ const [rejection, setRejection] = (0, react_1.useState)(null);
28
+ const [announcement, setAnnouncement] = (0, react_1.useState)("");
29
+ const isInvalid = Boolean(error || rejection);
30
+ const shownError = rejection !== null && rejection !== void 0 ? rejection : errorMessage;
31
+ const ids = (0, useFieldIds_1.useFieldIds)(id, { error: isInvalid, errorMessage: shownError, helperText });
32
+ const locked = isDisabled || isReadOnly;
33
+ const commit = (text) => {
34
+ const result = (0, tagEntries_1.addTags)(value, (0, tagEntries_1.splitEntries)(text), { validate, maxTags, allowDuplicates });
35
+ if (result.added.length) {
36
+ onChange(result.tags);
37
+ setAnnouncement(`Added ${result.added.join(", ")}`);
38
+ }
39
+ setRejection(result.message);
40
+ setDraft(result.rejected.join(", "));
41
+ };
42
+ const removeAt = (index) => {
43
+ const removed = value[index];
44
+ onChange(value.filter((_, i) => i !== index));
45
+ setAnnouncement(`Removed ${removed}`);
46
+ setRejection(null);
47
+ };
48
+ const onKeyDown = (event) => {
49
+ if (locked)
50
+ return;
51
+ if (event.key === "Enter" || event.key === ",") {
52
+ if (event.key === "Enter" && !draft.trim())
53
+ return;
54
+ event.preventDefault();
55
+ commit(draft);
56
+ }
57
+ else if (event.key === "Backspace" && draft === "" && value.length > 0) {
58
+ removeAt(value.length - 1);
59
+ }
60
+ };
61
+ const onPaste = (event) => {
62
+ const pasted = event.clipboardData.getData("text");
63
+ if (locked || !(0, tagEntries_1.hasSeparator)(pasted))
64
+ return;
65
+ event.preventDefault();
66
+ const { selectionStart, selectionEnd } = event.currentTarget;
67
+ commit(`${draft.slice(0, selectionStart !== null && selectionStart !== void 0 ? selectionStart : draft.length)}${pasted}${draft.slice(selectionEnd !== null && selectionEnd !== void 0 ? selectionEnd : draft.length)}`);
68
+ };
69
+ const onInput = (event) => {
70
+ setDraft(event.target.value);
71
+ setRejection(null);
72
+ };
73
+ const onBlur = () => {
74
+ if (addOnBlur && !locked && draft.trim())
75
+ commit(draft);
76
+ };
77
+ const focusFromBox = (event) => {
78
+ var _a;
79
+ if (event.target !== event.currentTarget || isDisabled)
80
+ return;
81
+ event.preventDefault();
82
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
83
+ };
84
+ return ((0, jsx_runtime_1.jsxs)(react_2.Box, { width: width, children: [label && ((0, jsx_runtime_1.jsx)(FormLabel_1.TextLabel, { label: label, id: ids.inputId, isRequired: isRequired, isInformation: isInformation, informationMessage: informationMessage })), (0, jsx_runtime_1.jsxs)(react_2.Flex, { wrap: "wrap", gap: s.gap, align: "center", px: s.px, minH: s.minH, onMouseDown: focusFromBox, sx: {
85
+ ...(0, fieldStyles_1.getFieldStateStyles)(theme, { error: isInvalid, disabled: isDisabled }),
86
+ ...(0, motion_1.reducedMotionSx)(),
87
+ }, _hover: isDisabled || isInvalid ? undefined : { borderColor: (0, fieldStyles_1.fieldHoverBorder)(theme.colors) }, _focusWithin: {
88
+ borderColor: isInvalid ? theme.colors.semanticText.error : theme.colors.primary[500],
89
+ boxShadow: (0, fieldStyles_1.fieldFocusRing)(theme),
90
+ }, children: [value.map((tag, index) => ((0, jsx_runtime_1.jsx)(Tag_1.default, { size: s.tagSize, colorScheme: "primary", label: tag, isDisabled: isDisabled, icon: locked ? undefined : lucide_react_1.X, onIconClick: locked
91
+ ? undefined
92
+ : () => {
93
+ var _a;
94
+ removeAt(index);
95
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
96
+ } }, `${index}:${tag}`))), (0, jsx_runtime_1.jsx)(react_2.Input, { ref: mergedRef, type: "text", value: draft, isDisabled: isDisabled, isReadOnly: isReadOnly, isRequired: isRequired, isInvalid: isInvalid, ...ids.controlProps, "aria-label": label ? undefined : ariaLabel, size: size, variant: "unstyled", h: s.fieldHeight, minH: s.fieldHeight, fontSize: s.fieldFontSize, fontWeight: 400, color: theme.colors.text[900], flex: "1", minW: 0, _placeholder: { color: (0, placeholderInk_1.placeholderInk)(theme.colors), opacity: 1 }, style: { backgroundColor: "transparent" }, onChange: onInput, onKeyDown: onKeyDown, onPaste: onPaste, onBlur: onBlur, placeholder: value.length === 0 ? placeholder : "" })] }), name && value.map((tag, index) => (0, jsx_runtime_1.jsx)("input", { type: "hidden", name: name, value: tag }, `${index}:${tag}`)), (0, jsx_runtime_1.jsx)(react_2.VisuallyHidden, { role: "status", "aria-live": "polite", position: "fixed", top: 0, left: 0, children: announcement }), (0, jsx_runtime_1.jsx)(FieldMessage_1.default, { error: isInvalid, errorMessage: shownError, helperText: helperText, helperId: ids.helperId, errorId: ids.errorId })] }));
97
+ });
98
+ TagInput.displayName = "TagInput";
99
+ exports.default = TagInput;
@@ -0,0 +1,46 @@
1
+ import type { ControlSize } from "../../Theme/tokens/primitives/controlSizes";
2
+ /** `false` or a non-empty string rejects `tag` (the string is shown as the message); `true` or `undefined` accepts. */
3
+ export type TagValidator = (tag: string, tags: readonly string[]) => boolean | string | undefined;
4
+ /** Free-text chips: Enter or comma adds, Backspace on an empty input removes the last; `ref` is the text `<input>`. */
5
+ export type TagInputProps = {
6
+ /** The committed tags, in order. Controlled: the field never edits it itself. */
7
+ value: string[];
8
+ /** Called with the next list after an add or a remove. */
9
+ onChange: (tags: string[]) => void;
10
+ /** Runs on each trimmed entry before it is added; a rejected entry stays in the input with its message. */
11
+ validate?: TagValidator;
12
+ /** Cap on tags; adding past it is rejected with a message. */
13
+ maxTags?: number;
14
+ /** Allows the same tag twice. Defaults to false, compared case-insensitively. */
15
+ allowDuplicates?: boolean;
16
+ /** Also commits the typed text when focus leaves the input. Defaults to false. */
17
+ addOnBlur?: boolean;
18
+ /** DOM id of the text input; the label's `for` and the message ids derive from it. Generated when omitted. */
19
+ id?: string;
20
+ /** Submits each tag as its own hidden input with this name; the half-typed text is never submitted. */
21
+ name?: string;
22
+ label?: string;
23
+ /** Names the input when there is no visible `label`. */
24
+ "aria-label"?: string;
25
+ /** Shown only while there are no tags. */
26
+ placeholder?: string;
27
+ /** Label asterisk plus native `required` on the input. */
28
+ isRequired?: boolean;
29
+ /** Shows an info icon beside the label; needs both `label` and `informationMessage`. */
30
+ isInformation?: boolean;
31
+ informationMessage?: string;
32
+ /** Dims the chips, disables the input and drops the remove buttons. */
33
+ isDisabled?: boolean;
34
+ /** Keeps the input focusable but drops typing and the remove buttons. */
35
+ isReadOnly?: boolean;
36
+ /** Error border and `aria-invalid`; swaps `helperText` for `errorMessage`. A rejected entry sets this too. */
37
+ error?: boolean;
38
+ /** Shown while `error` is true; a rejected entry's own message wins until the input changes. */
39
+ errorMessage?: string;
40
+ /** Shown under the field when there is no error; linked via `aria-describedby`. */
41
+ helperText?: string;
42
+ /** Field height on the control scale: xs 32, sm 38, md 40, lg 48px; grows a row at a time. Defaults to `sm`. */
43
+ size?: ControlSize;
44
+ /** Width of the whole field; defaults to "100%". */
45
+ width?: string | number;
46
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ import type { TagValidator } from "./TagInputProps";
2
+ export type AddRules = {
3
+ validate?: TagValidator;
4
+ maxTags?: number;
5
+ allowDuplicates?: boolean;
6
+ };
7
+ export type AddResult = {
8
+ tags: string[];
9
+ added: string[];
10
+ rejected: string[];
11
+ message: string | null;
12
+ };
13
+ export declare const hasSeparator: (text: string) => boolean;
14
+ export declare const splitEntries: (text: string) => string[];
15
+ export declare const addTags: (current: readonly string[], entries: readonly string[], rules: AddRules) => AddResult;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addTags = exports.splitEntries = exports.hasSeparator = void 0;
4
+ const SEPARATORS = /[,\r\n]/;
5
+ const hasSeparator = (text) => SEPARATORS.test(text);
6
+ exports.hasSeparator = hasSeparator;
7
+ const splitEntries = (text) => text
8
+ .split(SEPARATORS)
9
+ .map((entry) => entry.trim())
10
+ .filter(Boolean);
11
+ exports.splitEntries = splitEntries;
12
+ const fold = (tag) => tag.toLocaleLowerCase();
13
+ const rejection = (entry, tags, seen, rules) => {
14
+ const { validate, maxTags, allowDuplicates = false } = rules;
15
+ if (maxTags !== undefined && tags.length >= maxTags)
16
+ return `You can add up to ${maxTags} ${maxTags === 1 ? "tag" : "tags"}.`;
17
+ if (!allowDuplicates && seen.has(fold(entry)))
18
+ return `"${entry}" is already added.`;
19
+ const verdict = validate === null || validate === void 0 ? void 0 : validate(entry, tags);
20
+ if (verdict === false)
21
+ return `"${entry}" is not valid.`;
22
+ if (typeof verdict === "string" && verdict)
23
+ return verdict;
24
+ return null;
25
+ };
26
+ const addTags = (current, entries, rules) => {
27
+ const tags = [...current];
28
+ const seen = new Set(tags.map(fold));
29
+ const added = [];
30
+ const rejected = [];
31
+ let message = null;
32
+ for (const entry of entries) {
33
+ const reason = rejection(entry, tags, seen, rules);
34
+ if (reason) {
35
+ rejected.push(entry);
36
+ message = message !== null && message !== void 0 ? message : reason;
37
+ continue;
38
+ }
39
+ tags.push(entry);
40
+ seen.add(fold(entry));
41
+ added.push(entry);
42
+ }
43
+ return { tags, added, rejected, message };
44
+ };
45
+ exports.addTags = addTags;
@@ -0,0 +1,3 @@
1
+ import type { TimePickerProps } from "./TimePickerProps";
2
+ declare const TimePicker: import("react").ForwardRefExoticComponent<TimePickerProps & import("react").RefAttributes<HTMLSelectElement>>;
3
+ export default TimePicker;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("react");
8
+ const react_2 = require("@chakra-ui/react");
9
+ const useCustomTheme_1 = require("../../Theme/useCustomTheme");
10
+ const controlSizes_1 = require("../../Theme/tokens/primitives/controlSizes");
11
+ const FormLabel_1 = require("../Common/FormLabel");
12
+ const FieldMessage_1 = __importDefault(require("../Common/FieldMessage"));
13
+ const useFieldIds_1 = require("../Common/useFieldIds");
14
+ const fieldStyles_1 = require("../Common/fieldStyles");
15
+ const timeParts_1 = require("./timeParts");
16
+ const EMPTY = "";
17
+ const TimePicker = (0, react_1.forwardRef)(function TimePicker({ value, date, onChange, use24Hour, dateFormat, minuteStep, baseDate, isDisabled, disabled: legacyDisabled, id, name, label, "aria-label": ariaLabel, isRequired = false, isInformation, informationMessage, error, errorMessage, helperText, size = controlSizes_1.DEFAULT_CONTROL_SIZE, width = "100%", }, ref) {
18
+ var _a;
19
+ const theme = (0, useCustomTheme_1.useCustomTheme)();
20
+ const ids = (0, useFieldIds_1.useFieldIds)(id, { error, errorMessage, helperText });
21
+ const current = value !== undefined ? value : date !== null && date !== void 0 ? date : null;
22
+ const twelveHour = (0, timeParts_1.isTwelveHour)(use24Hour, dateFormat);
23
+ const minutes = (0, react_1.useMemo)(() => (0, timeParts_1.minuteOptions)(minuteStep, current ? current.getMinutes() : null), [minuteStep, current]);
24
+ const disabled = (_a = isDisabled !== null && isDisabled !== void 0 ? isDisabled : legacyDisabled) !== null && _a !== void 0 ? _a : false;
25
+ const selectSx = (0, react_1.useMemo)(() => (0, fieldStyles_1.fieldControlStyles)(theme.colors), [theme.colors]);
26
+ const hour24 = current ? current.getHours() : null;
27
+ const commit = (nextHour24, nextMinute) => { var _a; return onChange((0, timeParts_1.atTime)((_a = current !== null && current !== void 0 ? current : baseDate) !== null && _a !== void 0 ? _a : new Date(), nextHour24, nextMinute)); };
28
+ const onHour = (event) => {
29
+ const picked = Number(event.target.value);
30
+ const next = twelveHour ? (0, timeParts_1.toHour24)(picked, hour24 === null ? "AM" : (0, timeParts_1.meridiemOf)(hour24)) : picked;
31
+ commit(next, current ? current.getMinutes() : 0);
32
+ };
33
+ const onMinute = (event) => commit(hour24 !== null && hour24 !== void 0 ? hour24 : 0, Number(event.target.value));
34
+ const onMeridiem = (event) => {
35
+ const meridiem = event.target.value === "PM" ? "PM" : "AM";
36
+ commit((0, timeParts_1.toHour24)(hour24 === null ? 12 : (0, timeParts_1.displayHour)(hour24, true), meridiem), current ? current.getMinutes() : 0);
37
+ };
38
+ const shared = {
39
+ flex: "1",
40
+ minW: 0,
41
+ size,
42
+ isDisabled: disabled,
43
+ sx: selectSx,
44
+ "aria-describedby": ids.describedBy,
45
+ };
46
+ const placeholder = current ? null : ((0, jsx_runtime_1.jsx)("option", { value: EMPTY, disabled: true, children: "--" }));
47
+ return ((0, jsx_runtime_1.jsxs)(react_2.FormControl, { isDisabled: disabled, isInvalid: error, isRequired: isRequired, width: width, "aria-labelledby": label ? ids.labelId : undefined, "aria-label": label ? undefined : ariaLabel, children: [label && ((0, jsx_runtime_1.jsx)(react_2.Box, { id: ids.labelId, children: (0, jsx_runtime_1.jsx)(FormLabel_1.TextLabel, { label: label, id: `${ids.inputId}-hour`, isRequired: isRequired, isInformation: isInformation, informationMessage: informationMessage }) })), (0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 1.5, w: "100%", children: [(0, jsx_runtime_1.jsxs)(react_2.Select, { ...shared, ref: ref, id: `${ids.inputId}-hour`, "aria-label": "Hour", value: hour24 === null ? EMPTY : (0, timeParts_1.displayHour)(hour24, twelveHour), onChange: onHour, children: [placeholder, (twelveHour ? timeParts_1.HOURS_12 : timeParts_1.HOURS_24).map((hour) => ((0, jsx_runtime_1.jsx)("option", { value: hour, children: (0, timeParts_1.pad2)(hour) }, hour)))] }), (0, jsx_runtime_1.jsxs)(react_2.Select, { ...shared, id: `${ids.inputId}-minute`, "aria-label": "Minute", value: current ? current.getMinutes() : EMPTY, onChange: onMinute, children: [placeholder, minutes.map((minute) => ((0, jsx_runtime_1.jsx)("option", { value: minute, children: (0, timeParts_1.pad2)(minute) }, minute)))] }), twelveHour && ((0, jsx_runtime_1.jsxs)(react_2.Select, { ...shared, id: `${ids.inputId}-meridiem`, "aria-label": "AM or PM", value: hour24 === null ? EMPTY : (0, timeParts_1.meridiemOf)(hour24), onChange: onMeridiem, children: [placeholder, (0, jsx_runtime_1.jsx)("option", { value: "AM", children: "AM" }), (0, jsx_runtime_1.jsx)("option", { value: "PM", children: "PM" })] }))] }), name && (0, jsx_runtime_1.jsx)("input", { type: "hidden", name: name, value: current ? `${(0, timeParts_1.pad2)(current.getHours())}:${(0, timeParts_1.pad2)(current.getMinutes())}` : EMPTY }), (0, jsx_runtime_1.jsx)(FieldMessage_1.default, { error: error, errorMessage: errorMessage, helperText: helperText, helperId: ids.helperId, errorId: ids.errorId })] }));
48
+ });
49
+ TimePicker.displayName = "TimePicker";
50
+ exports.default = TimePicker;
@@ -0,0 +1,44 @@
1
+ import type { ControlSize } from "../../Theme/tokens/primitives/controlSizes";
2
+ /** Inline hour, minute and AM/PM selects with the field label and message row; `ref` is the hour `<select>`. */
3
+ export type TimePickerProps = {
4
+ /** Controlled time; `null` or omitted shows "--" in every select until one is picked. */
5
+ value?: Date | null;
6
+ /** @deprecated Use `value`; kept so the old DatePicker `TimePickerProps` shape still fits. `value` wins. */
7
+ date?: Date;
8
+ /** Fires with a Date on the day of `value` (else `baseDate`, else today) at the picked time, seconds zeroed. */
9
+ onChange: (date: Date) => void;
10
+ /** 24-hour selects instead of 12-hour plus AM/PM. Defaults to false. */
11
+ use24Hour?: boolean;
12
+ /** @deprecated Use `use24Hour`; only read to pick 12h (`h` then `a`, e.g. `hh:mm a`) or 24h. `use24Hour` wins. */
13
+ dateFormat?: string;
14
+ /** Minutes offered, floored and clamped to 1-60; a `value` off the step is still listed. Defaults to 1. */
15
+ minuteStep?: number;
16
+ /** Day a picked time lands on while `value` is empty; defaults to today. */
17
+ baseDate?: Date;
18
+ isDisabled?: boolean;
19
+ /** @deprecated Use `isDisabled`; `isDisabled` wins when both are set. */
20
+ disabled?: boolean;
21
+ /** Base id: the selects get `<id>-hour`, `<id>-minute`, `<id>-meridiem`; generated when omitted. */
22
+ id?: string;
23
+ /** Submits the time as `HH:mm` (24-hour) through a hidden input, or "" while empty. */
24
+ name?: string;
25
+ /** Visible label; names the group, and clicking it focuses the hour select. */
26
+ label?: string;
27
+ /** Names the group when there is no visible `label`. */
28
+ "aria-label"?: string;
29
+ /** Label asterisk plus native `required` on every select. */
30
+ isRequired?: boolean;
31
+ /** Shows an info icon beside the label; needs both `label` and `informationMessage`. */
32
+ isInformation?: boolean;
33
+ informationMessage?: string;
34
+ /** Error border and `aria-invalid` on every select; swaps `helperText` for `errorMessage`. */
35
+ error?: boolean;
36
+ /** Shown while `error` is true. */
37
+ errorMessage?: string;
38
+ /** Shown under the selects when there is no error; linked via `aria-describedby`. */
39
+ helperText?: string;
40
+ /** Control-scale height of each select: xs 32, sm 38, md 40, lg 48px. Defaults to `sm`, as in DatePicker. */
41
+ size?: ControlSize;
42
+ /** Width of the whole field; defaults to "100%". */
43
+ width?: string | number;
44
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ export type Meridiem = "AM" | "PM";
2
+ export declare const HOURS_12: readonly number[];
3
+ export declare const HOURS_24: readonly number[];
4
+ export declare const pad2: (value: number) => string;
5
+ export declare const isTwelveHour: (use24Hour: boolean | undefined, dateFormat: string | undefined) => boolean;
6
+ export declare const minuteOptions: (step: number | undefined, current: number | null) => number[];
7
+ export declare const displayHour: (hour24: number, twelveHour: boolean) => number;
8
+ export declare const meridiemOf: (hour24: number) => Meridiem;
9
+ export declare const toHour24: (hour12: number, meridiem: Meridiem) => number;
10
+ export declare const atTime: (day: Date, hour24: number, minute: number) => Date;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.atTime = exports.toHour24 = exports.meridiemOf = exports.displayHour = exports.minuteOptions = exports.isTwelveHour = exports.pad2 = exports.HOURS_24 = exports.HOURS_12 = void 0;
4
+ exports.HOURS_12 = Array.from({ length: 12 }, (_, i) => i + 1);
5
+ exports.HOURS_24 = Array.from({ length: 24 }, (_, i) => i);
6
+ const TWELVE_HOUR_FORMAT = /h.*a/i;
7
+ const pad2 = (value) => String(value).padStart(2, "0");
8
+ exports.pad2 = pad2;
9
+ const isTwelveHour = (use24Hour, dateFormat) => {
10
+ if (use24Hour !== undefined)
11
+ return !use24Hour;
12
+ if (dateFormat !== undefined)
13
+ return TWELVE_HOUR_FORMAT.test(dateFormat);
14
+ return true;
15
+ };
16
+ exports.isTwelveHour = isTwelveHour;
17
+ const minuteOptions = (step, current) => {
18
+ const size = Math.min(60, Math.max(1, Math.floor(step !== null && step !== void 0 ? step : 1) || 1));
19
+ const minutes = [];
20
+ for (let minute = 0; minute < 60; minute += size)
21
+ minutes.push(minute);
22
+ if (current !== null && !minutes.includes(current)) {
23
+ minutes.push(current);
24
+ minutes.sort((a, b) => a - b);
25
+ }
26
+ return minutes;
27
+ };
28
+ exports.minuteOptions = minuteOptions;
29
+ const displayHour = (hour24, twelveHour) => twelveHour ? hour24 % 12 || 12 : hour24;
30
+ exports.displayHour = displayHour;
31
+ const meridiemOf = (hour24) => (hour24 >= 12 ? "PM" : "AM");
32
+ exports.meridiemOf = meridiemOf;
33
+ const toHour24 = (hour12, meridiem) => (hour12 % 12) + (meridiem === "PM" ? 12 : 0);
34
+ exports.toHour24 = toHour24;
35
+ const atTime = (day, hour24, minute) => new Date(day.getFullYear(), day.getMonth(), day.getDate(), hour24, minute, 0, 0);
36
+ exports.atTime = atTime;