pixelize-design-library 2.4.2-beta.4 → 2.4.2-beta.40

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 (525) hide show
  1. package/COMPONENT-GOTCHAS.md +1087 -0
  2. package/README.md +26 -0
  3. package/dist/Components/Accordion/Accordion.d.ts +1 -0
  4. package/dist/Components/Accordion/Accordion.js +4 -1
  5. package/dist/Components/Accordion/AccordionProps.d.ts +2 -0
  6. package/dist/Components/AlertDialog/AlertDialog.d.ts +1 -0
  7. package/dist/Components/AlertDialog/AlertDialog.js +1 -0
  8. package/dist/Components/AlertDialog/AlertDialogProps.d.ts +2 -0
  9. package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChart.d.ts +1 -0
  10. package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +1 -0
  11. package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChartProps.d.ts +4 -0
  12. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.d.ts +1 -0
  13. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.js +1 -0
  14. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChartProps.d.ts +6 -0
  15. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.d.ts +1 -0
  16. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.js +1 -0
  17. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChartProps.d.ts +8 -0
  18. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.d.ts +1 -0
  19. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.js +1 -0
  20. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChartProps.d.ts +6 -0
  21. package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.d.ts +1 -0
  22. package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +1 -0
  23. package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarChartsProps.d.ts +3 -0
  24. package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChart.d.ts +1 -0
  25. package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +1 -0
  26. package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChartProps.d.ts +3 -0
  27. package/dist/Components/AppSwitcher/AppMark.d.ts +19 -0
  28. package/dist/Components/AppSwitcher/AppMark.js +62 -0
  29. package/dist/Components/AppSwitcher/AppSwitcher.d.ts +4 -0
  30. package/dist/Components/AppSwitcher/AppSwitcher.js +278 -0
  31. package/dist/Components/AppSwitcher/AppSwitcherProps.d.ts +70 -0
  32. package/dist/Components/AppSwitcher/AppSwitcherProps.js +86 -0
  33. package/dist/Components/AppSwitcher/useAppSwitcherShortcut.d.ts +3 -0
  34. package/dist/Components/AppSwitcher/useAppSwitcherShortcut.js +31 -0
  35. package/dist/Components/AppearanceSettings/AppearanceSettings.js +2 -1
  36. package/dist/Components/AppearanceSettings/AppearanceSettingsProps.d.ts +2 -0
  37. package/dist/Components/Breadcrumbs/BreadcrumbsProps.d.ts +3 -0
  38. package/dist/Components/Button/Button.d.ts +2 -2
  39. package/dist/Components/Button/Button.js +4 -3
  40. package/dist/Components/Button/Button.styles.js +37 -23
  41. package/dist/Components/Button/ButtonProps.d.ts +9 -1
  42. package/dist/Components/ButtonGroupIcon/ButtonGoupIconProps.d.ts +7 -0
  43. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +2 -4
  44. package/dist/Components/Buttons/ButtonsProps.d.ts +2 -0
  45. package/dist/Components/Card/Card.d.ts +1 -1
  46. package/dist/Components/Card/Card.js +2 -2
  47. package/dist/Components/Card/CardProps.d.ts +3 -1
  48. package/dist/Components/Card/PaymentCard/PaymentCard.js +21 -12
  49. package/dist/Components/Card/PaymentCard/PaymentCardProps.d.ts +6 -0
  50. package/dist/Components/Checkbox/Checkbox.d.ts +1 -0
  51. package/dist/Components/Checkbox/Checkbox.js +2 -1
  52. package/dist/Components/Checkbox/Checkbox.styles.js +12 -7
  53. package/dist/Components/Checkbox/CheckboxProps.d.ts +4 -0
  54. package/dist/Components/Common/ErrorComponent.d.ts +2 -0
  55. package/dist/Components/Common/ErrorComponent.js +7 -5
  56. package/dist/Components/Common/ErrorMessage.js +2 -2
  57. package/dist/Components/Common/FormLabel.d.ts +4 -0
  58. package/dist/Components/Common/FormLabel.js +1 -0
  59. package/dist/Components/Common/FormattedDescription.d.ts +2 -0
  60. package/dist/Components/Common/FormattedDescription.js +1 -0
  61. package/dist/Components/Common/HelperText.d.ts +2 -0
  62. package/dist/Components/Common/HelperText.js +2 -0
  63. package/dist/Components/Common/Label.d.ts +1 -0
  64. package/dist/Components/Common/Label.js +1 -0
  65. package/dist/Components/Common/fieldStyles.js +1 -1
  66. package/dist/Components/ContactForm/ContactForm.d.ts +1 -0
  67. package/dist/Components/ContactForm/ContactForm.js +1 -0
  68. package/dist/Components/ContactForm/ContactFormProps.d.ts +4 -0
  69. package/dist/Components/CopyButton/CopyButton.d.ts +3 -1
  70. package/dist/Components/CopyButton/CopyButton.js +9 -3
  71. package/dist/Components/CustomModulesTable/CustomModulesTableProps.d.ts +8 -0
  72. package/dist/Components/DatePicker/CalendarPanel.d.ts +6 -0
  73. package/dist/Components/DatePicker/CalendarPanel.js +37 -15
  74. package/dist/Components/DatePicker/DatePicker.d.ts +1 -0
  75. package/dist/Components/DatePicker/DatePicker.js +1 -0
  76. package/dist/Components/DatePicker/DatePickerProps.d.ts +30 -0
  77. package/dist/Components/DatePicker/RangeDatePicker.d.ts +1 -0
  78. package/dist/Components/DatePicker/RangeDatePicker.js +30 -5
  79. package/dist/Components/DatePicker/SingleDatePicker.d.ts +1 -0
  80. package/dist/Components/DatePicker/SingleDatePicker.js +49 -14
  81. package/dist/Components/DatePicker/ThemeDatePicker.d.ts +1 -0
  82. package/dist/Components/DatePicker/ThemeDatePicker.js +1 -0
  83. package/dist/Components/DatePicker/TimeOnlyPicker.d.ts +1 -0
  84. package/dist/Components/DatePicker/TimeOnlyPicker.js +11 -2
  85. package/dist/Components/DatePicker/TimePicker.d.ts +1 -0
  86. package/dist/Components/DatePicker/TimePicker.js +4 -3
  87. package/dist/Components/DatePicker/TimePickerInput.d.ts +1 -0
  88. package/dist/Components/DatePicker/TimePickerInput.js +2 -1
  89. package/dist/Components/DatePicker/dayStates.d.ts +56 -0
  90. package/dist/Components/DatePicker/dayStates.js +87 -0
  91. package/dist/Components/Divider/Divider.d.ts +1 -0
  92. package/dist/Components/Divider/Divider.js +1 -0
  93. package/dist/Components/Drawer/DrawerProps.d.ts +2 -0
  94. package/dist/Components/Dropdown/DropDown.d.ts +1 -0
  95. package/dist/Components/Dropdown/DropDown.js +22 -6
  96. package/dist/Components/Dropdown/DropdownProps.d.ts +3 -0
  97. package/dist/Components/Editor/Editor.d.ts +1 -0
  98. package/dist/Components/Editor/Editor.js +1 -0
  99. package/dist/Components/Editor/EditorProps.d.ts +2 -0
  100. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.d.ts +1 -0
  101. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -5
  102. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtpProps.d.ts +4 -0
  103. package/dist/Components/EmptyState/EmptyState.d.ts +1 -0
  104. package/dist/Components/EmptyState/EmptyState.js +4 -2
  105. package/dist/Components/EmptyState/EmptyStateProps.d.ts +3 -0
  106. package/dist/Components/FeedbackForm/FeedbackForm.d.ts +3 -0
  107. package/dist/Components/FeedbackForm/FeedbackForm.js +1 -0
  108. package/dist/Components/FieldSelectModal/FieldSelectModal.d.ts +3 -2
  109. package/dist/Components/FieldSelectModal/FieldSelectModal.js +1 -0
  110. package/dist/Components/FilePreview/FilePreview.d.ts +1 -0
  111. package/dist/Components/FilePreview/FilePreview.js +3 -1
  112. package/dist/Components/FilePreview/FilePreviewProps.d.ts +5 -2
  113. package/dist/Components/FileUpload/FileUpload.d.ts +1 -0
  114. package/dist/Components/FileUpload/FileUpload.js +7 -5
  115. package/dist/Components/FileUpload/FileUploadProps.d.ts +7 -1
  116. package/dist/Components/FileUpload/constants.js +1 -0
  117. package/dist/Components/FileUploader/FileUploader.d.ts +1 -0
  118. package/dist/Components/FileUploader/FileUploader.js +1 -0
  119. package/dist/Components/FileUploader/FileUploaderProps.d.ts +2 -0
  120. package/dist/Components/FilterSidebar/FilterSidebar.d.ts +3 -0
  121. package/dist/Components/FilterSidebar/FilterSidebar.js +5 -5
  122. package/dist/Components/FilterSidebar/filterHoverStyle.d.ts +2 -10
  123. package/dist/Components/FilterSidebar/filterHoverStyle.js +3 -10
  124. package/dist/Components/Form/FormWrapper.d.ts +3 -0
  125. package/dist/Components/Form/FormWrapper.js +2 -1
  126. package/dist/Components/Header/HeaderProps.d.ts +5 -0
  127. package/dist/Components/Header/components/mobileMenu.js +12 -3
  128. package/dist/Components/Input/Input/InputProps.d.ts +2 -0
  129. package/dist/Components/Input/PhoneNumberInput.d.ts +1 -0
  130. package/dist/Components/Input/PhoneNumberInput.js +1 -0
  131. package/dist/Components/Input/PhoneNumberInputProps.d.ts +3 -0
  132. package/dist/Components/Input/Switch/InputSwitch.d.ts +2 -0
  133. package/dist/Components/Input/Switch/InputSwitch.js +1 -0
  134. package/dist/Components/Input/TextInput.js +1 -0
  135. package/dist/Components/Input/TextInput.styles.js +8 -10
  136. package/dist/Components/Input/TextInputProps.d.ts +2 -0
  137. package/dist/Components/InputTextArea/InputTextArea.d.ts +1 -0
  138. package/dist/Components/InputTextArea/InputTextArea.js +1 -0
  139. package/dist/Components/InputTextArea/InputTextArea.style.js +7 -6
  140. package/dist/Components/InputTextArea/InputTextAreaProps.d.ts +1 -0
  141. package/dist/Components/KanbanBoard/AccountCard.d.ts +3 -0
  142. package/dist/Components/KanbanBoard/AccountCard.js +1 -0
  143. package/dist/Components/KanbanBoard/AccountRow.d.ts +1 -0
  144. package/dist/Components/KanbanBoard/AccountRow.js +1 -0
  145. package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.d.ts +2 -0
  146. package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.js +2 -2
  147. package/dist/Components/KanbanBoard/KanbanBoard.d.ts +1 -0
  148. package/dist/Components/KanbanBoard/KanbanBoard.js +1 -0
  149. package/dist/Components/KanbanBoard/KanbanBoardProps.d.ts +39 -14
  150. package/dist/Components/KanbanBoard/MeasuredItem.d.ts +1 -0
  151. package/dist/Components/KanbanBoard/MeasuredItem.js +1 -0
  152. package/dist/Components/LazyWrapper/LazyWrapper.d.ts +3 -2
  153. package/dist/Components/LazyWrapper/LazyWrapper.js +1 -0
  154. package/dist/Components/LimitReachedModal/LimitReachedModalProps.d.ts +4 -1
  155. package/dist/Components/LimitReachedModal/limitReachedCopy.d.ts +2 -0
  156. package/dist/Components/LimitReachedModal/limitReachedCopy.js +2 -0
  157. package/dist/Components/Loading/Loading.d.ts +1 -0
  158. package/dist/Components/Loading/Loading.js +16 -14
  159. package/dist/Components/Loading/LoadingProps.d.ts +2 -0
  160. package/dist/Components/Modal/ModalProps.d.ts +2 -0
  161. package/dist/Components/MoreItems/MoreItems.d.ts +1 -0
  162. package/dist/Components/MoreItems/MoreItems.js +4 -1
  163. package/dist/Components/MoreItems/MoreItemsProps.d.ts +4 -2
  164. package/dist/Components/MultiSelect/MultiSelect.js +2 -2
  165. package/dist/Components/MultiSelect/MultiSelectProps.d.ts +2 -0
  166. package/dist/Components/NavigationBar/NavigationBar.js +9 -10
  167. package/dist/Components/NavigationBar/NavigationBarProps.d.ts +3 -0
  168. package/dist/Components/NoteTextArea/NoteTextArea.d.ts +1 -0
  169. package/dist/Components/NoteTextArea/NoteTextArea.js +10 -4
  170. package/dist/Components/NoteTextArea/NoteTextAreaProps.d.ts +2 -0
  171. package/dist/Components/Notification/Notification.d.ts +1 -0
  172. package/dist/Components/Notification/Notification.js +1 -0
  173. package/dist/Components/Notification/NotificationProps.d.ts +6 -0
  174. package/dist/Components/NumberInput/NumberInput.d.ts +1 -0
  175. package/dist/Components/NumberInput/NumberInput.js +4 -1
  176. package/dist/Components/NumberInput/NumberInput.styles.js +7 -6
  177. package/dist/Components/NumberInput/NumberInputProps.d.ts +3 -0
  178. package/dist/Components/OrgSwitcher/OrgSwitcher.js +14 -10
  179. package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +6 -1
  180. package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +1 -0
  181. package/dist/Components/OrganizationDetails/OrganizationDetails.d.ts +1 -0
  182. package/dist/Components/OrganizationDetails/OrganizationDetails.js +4 -2
  183. package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +16 -4
  184. package/dist/Components/PdfViewer/PdfViewer.d.ts +2 -1
  185. package/dist/Components/PdfViewer/PdfViewer.js +7 -1
  186. package/dist/Components/PinInput/PinInput.d.ts +1 -0
  187. package/dist/Components/PinInput/PinInput.js +1 -0
  188. package/dist/Components/PinInput/PinInputProps.d.ts +2 -0
  189. package/dist/Components/PinInputs/PinInputs.d.ts +1 -0
  190. package/dist/Components/PinInputs/PinInputs.js +1 -0
  191. package/dist/Components/PinInputs/PinInputsProps.d.ts +1 -0
  192. package/dist/Components/PlanBadge/PlanBadgeProps.d.ts +2 -0
  193. package/dist/Components/PlanPill/PlanPillProps.d.ts +2 -0
  194. package/dist/Components/Primitives/Primitives.d.ts +6 -0
  195. package/dist/Components/Primitives/Primitives.js +113 -0
  196. package/dist/Components/ProductCard/ProductCardProps.d.ts +10 -0
  197. package/dist/Components/ProductCard/ProductReview.d.ts +1 -0
  198. package/dist/Components/ProductCard/ProductReview.js +6 -1
  199. package/dist/Components/ProductCard/ProductTags.js +1 -1
  200. package/dist/Components/ProductDetails/ProductDetailsProps.d.ts +7 -0
  201. package/dist/Components/ProfileCard/ProfileCard.js +1 -1
  202. package/dist/Components/ProfileCard/ProfileCardProps.d.ts +3 -0
  203. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +1 -0
  204. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +5 -3
  205. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewerProps.d.ts +9 -1
  206. package/dist/Components/ProgressBar/ProgressBar.d.ts +1 -0
  207. package/dist/Components/ProgressBar/ProgressBar.js +1 -0
  208. package/dist/Components/ProgressBar/ProgressBarProps.d.ts +2 -0
  209. package/dist/Components/RadioButton/RadioButton.js +3 -2
  210. package/dist/Components/RadioButton/RadioButtonProps.d.ts +2 -0
  211. package/dist/Components/Reorder/Reorder.d.ts +2 -0
  212. package/dist/Components/Reorder/Reorder.js +1 -0
  213. package/dist/Components/Reorder/ReorderProps.d.ts +3 -0
  214. package/dist/Components/RolesPermission/RolesPermission.d.ts +1 -0
  215. package/dist/Components/RolesPermission/RolesPermission.js +5 -3
  216. package/dist/Components/RolesPermission/RolesPermissionProps.d.ts +16 -1
  217. package/dist/Components/ScrollToTop/ScrollToTop.d.ts +3 -2
  218. package/dist/Components/ScrollToTop/ScrollToTop.js +4 -1
  219. package/dist/Components/ScrollbarBox/ScrollbarBox.d.ts +7 -0
  220. package/dist/Components/ScrollbarBox/ScrollbarBox.js +1 -0
  221. package/dist/Components/Search/Search.d.ts +1 -0
  222. package/dist/Components/Search/Search.js +3 -2
  223. package/dist/Components/Search/SearchProps.d.ts +2 -0
  224. package/dist/Components/SearchSelect/SearchSelect.d.ts +1 -0
  225. package/dist/Components/SearchSelect/SearchSelect.js +48 -37
  226. package/dist/Components/SearchSelect/SearchSelectProps.d.ts +23 -0
  227. package/dist/Components/SegmentedControl/SegmentedControl.d.ts +3 -0
  228. package/dist/Components/SegmentedControl/SegmentedControl.js +89 -0
  229. package/dist/Components/SegmentedControl/SegmentedControlProps.d.ts +23 -0
  230. package/dist/Components/SegmentedControl/SegmentedControlProps.js +2 -0
  231. package/dist/Components/Select/Select.d.ts +1 -1
  232. package/dist/Components/Select/Select.js +4 -2
  233. package/dist/Components/Select/Select.styles.js +3 -2
  234. package/dist/Components/Select/SelectProps.d.ts +6 -0
  235. package/dist/Components/SelectSearch/SelectSearch.d.ts +1 -0
  236. package/dist/Components/SelectSearch/SelectSearch.js +37 -15
  237. package/dist/Components/SelectSearch/SelectSearchProps.d.ts +5 -0
  238. package/dist/Components/SelectV2/SelectV2.d.ts +1 -0
  239. package/dist/Components/SelectV2/SelectV2.js +20 -5
  240. package/dist/Components/SelectV2/SelectV2Props.d.ts +6 -1
  241. package/dist/Components/SideBar/SecondaryBar.js +1 -1
  242. package/dist/Components/SideBar/SideBar.js +5 -3
  243. package/dist/Components/SideBar/SideBarProps.d.ts +38 -24
  244. package/dist/Components/SideBar/components/MenuPopoverContent.js +2 -2
  245. package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +3 -0
  246. package/dist/Components/Skeletons/SkeletonProps.d.ts +2 -0
  247. package/dist/Components/Skeletons/Skeletons.d.ts +1 -0
  248. package/dist/Components/Skeletons/Skeletons.js +1 -0
  249. package/dist/Components/Slider/Slider.d.ts +3 -0
  250. package/dist/Components/Slider/Slider.js +9 -1
  251. package/dist/Components/StageProgress/StageItem.d.ts +1 -0
  252. package/dist/Components/StageProgress/StageItem.js +1 -0
  253. package/dist/Components/StageProgress/StageProgress.d.ts +1 -0
  254. package/dist/Components/StageProgress/StageProgress.js +1 -0
  255. package/dist/Components/StageProgress/StageProgressProps.d.ts +45 -4
  256. package/dist/Components/StageProgress/StageProgressProps.js +6 -4
  257. package/dist/Components/StageProgress/StepperStage.js +2 -2
  258. package/dist/Components/Switch/Switch.d.ts +1 -0
  259. package/dist/Components/Switch/Switch.js +1 -0
  260. package/dist/Components/Switch/SwitchProps.d.ts +1 -0
  261. package/dist/Components/Table/Table.d.ts +2 -1
  262. package/dist/Components/Table/Table.js +15 -5
  263. package/dist/Components/Table/TableProps.d.ts +47 -0
  264. package/dist/Components/Table/components/Pagination.js +1 -1
  265. package/dist/Components/Table/components/TableActions.js +2 -2
  266. package/dist/Components/Table/components/TableBody.js +44 -18
  267. package/dist/Components/Table/components/TableGroupRow.js +1 -1
  268. package/dist/Components/Table/components/TableHeader.js +21 -8
  269. package/dist/Components/Table/components/TableSearch.js +1 -1
  270. package/dist/Components/Table/filters/CompactSelect.d.ts +1 -0
  271. package/dist/Components/Table/filters/CompactSelect.js +29 -8
  272. package/dist/Components/Table/filters/LeftFilterPane.d.ts +9 -1
  273. package/dist/Components/Table/filters/LeftFilterPane.js +1 -1
  274. package/dist/Components/Table/settings/ManageColumns.js +8 -5
  275. package/dist/Components/Table/settings/TableSettings.js +6 -4
  276. package/dist/Components/Table/variants/TableVariantContext.d.ts +4 -0
  277. package/dist/Components/Table/variants/TableVariantContext.js +17 -0
  278. package/dist/Components/Table/variants/classic.d.ts +6 -0
  279. package/dist/Components/Table/variants/classic.js +47 -0
  280. package/dist/Components/Table/variants/index.d.ts +7 -0
  281. package/dist/Components/Table/variants/index.js +27 -0
  282. package/dist/Components/Table/variants/pillInk.d.ts +6 -0
  283. package/dist/Components/Table/variants/pillInk.js +21 -0
  284. package/dist/Components/Table/variants/studio.d.ts +6 -0
  285. package/dist/Components/Table/variants/studio.js +50 -0
  286. package/dist/Components/Table/variants/tokens.d.ts +49 -0
  287. package/dist/Components/Table/variants/tokens.js +2 -0
  288. package/dist/Components/Tag/Tag.d.ts +1 -0
  289. package/dist/Components/Tag/Tag.js +1 -0
  290. package/dist/Components/Tag/Tag.styles.js +16 -11
  291. package/dist/Components/Tag/TagProps.d.ts +7 -0
  292. package/dist/Components/Timeline/Timeline.d.ts +1 -0
  293. package/dist/Components/Timeline/Timeline.js +1 -0
  294. package/dist/Components/Timeline/TimelineProps.d.ts +8 -0
  295. package/dist/Components/Toaster/Toaster.d.ts +1 -0
  296. package/dist/Components/Toaster/Toaster.js +1 -0
  297. package/dist/Components/Toaster/ToasterProps.d.ts +3 -0
  298. package/dist/Components/Toggle/TableToggle.d.ts +1 -0
  299. package/dist/Components/Toggle/TableToggle.js +73 -18
  300. package/dist/Components/Toggle/TableToggleProps.d.ts +6 -0
  301. package/dist/Components/ToggleSwitch/ToggleSwitch.d.ts +3 -0
  302. package/dist/Components/ToggleSwitch/ToggleSwitch.js +19 -0
  303. package/dist/Components/ToggleSwitch/ToggleSwitchProps.d.ts +13 -0
  304. package/dist/Components/ToggleSwitch/ToggleSwitchProps.js +2 -0
  305. package/dist/Components/ToolTip/ToolTip.d.ts +1 -0
  306. package/dist/Components/ToolTip/ToolTip.js +7 -6
  307. package/dist/Components/ToolTip/ToolTipProps.d.ts +5 -1
  308. package/dist/Components/Trail/EditableCell.d.ts +2 -0
  309. package/dist/Components/Trail/EditableCell.js +2 -1
  310. package/dist/Components/Trail/SelectAllCheckbox.d.ts +1 -0
  311. package/dist/Components/Trail/SelectAllCheckbox.js +1 -0
  312. package/dist/Components/Trail/TrailWorks.d.ts +1 -0
  313. package/dist/Components/Trail/TrailWorks.js +2 -1
  314. package/dist/Components/UpgradeButton/UpgradeButtonProps.d.ts +6 -2
  315. package/dist/Components/UserDetails/DeactivateConfirmModal.js +1 -1
  316. package/dist/Components/UserDetails/UserDetails.d.ts +1 -0
  317. package/dist/Components/UserDetails/UserDetails.js +6 -3
  318. package/dist/Components/UserDetails/UserDetailsProps.d.ts +30 -1
  319. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +6 -1
  320. package/dist/Hooks/exclusiveOverlay.d.ts +4 -0
  321. package/dist/Hooks/exclusiveOverlay.js +22 -0
  322. package/dist/Hooks/useExclusiveOverlay.d.ts +5 -0
  323. package/dist/Hooks/useExclusiveOverlay.js +24 -0
  324. package/dist/Theme/assertPalette.d.ts +1 -1
  325. package/dist/Theme/assertPalette.js +3 -2
  326. package/dist/Theme/chakra/Menu.styles.d.ts +2 -0
  327. package/dist/Theme/chakra/Menu.styles.js +9 -5
  328. package/dist/Theme/chakra/Popover.styles.d.ts +3 -0
  329. package/dist/Theme/chakra/Popover.styles.js +5 -1
  330. package/dist/Theme/chakra/componentStyles.d.ts +5 -0
  331. package/dist/Theme/chakra/componentStyles.js +16 -9
  332. package/dist/Theme/chakra/createBrandTheme.js +22 -9
  333. package/dist/Theme/chakra/focusRing.styles.d.ts +52 -0
  334. package/dist/Theme/chakra/focusRing.styles.js +46 -0
  335. package/dist/Theme/provider/ThemeSwitcher.js +5 -2
  336. package/dist/Theme/tokens/brands/index.js +6 -1
  337. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts +1 -0
  338. package/dist/Theme/tokens/builders/buildDarkPalette.js +6 -1
  339. package/dist/Theme/tokens/builders/chartColorsFromTheme.js +1 -1
  340. package/dist/Theme/tokens/builders/filledSurface.d.ts +29 -0
  341. package/dist/Theme/tokens/builders/filledSurface.js +74 -0
  342. package/dist/Theme/tokens/builders/focusRing.d.ts +52 -0
  343. package/dist/Theme/tokens/builders/focusRing.js +92 -0
  344. package/dist/Theme/tokens/builders/index.d.ts +2 -0
  345. package/dist/Theme/tokens/builders/index.js +2 -0
  346. package/dist/Theme/tokens/builders/outlineRung.d.ts +41 -3
  347. package/dist/Theme/tokens/builders/outlineRung.js +82 -5
  348. package/dist/Theme/tokens/builders/placeholderInk.d.ts +19 -0
  349. package/dist/Theme/tokens/builders/placeholderInk.js +35 -0
  350. package/dist/Theme/tokens/builders/resolvedRungs.d.ts +5 -1
  351. package/dist/Theme/tokens/builders/resolvedRungs.js +7 -2
  352. package/dist/Theme/tokens/builders/rowStates.d.ts +13 -0
  353. package/dist/Theme/tokens/builders/rowStates.js +19 -0
  354. package/dist/Theme/tokens/builders/scrollShadow.d.ts +2 -0
  355. package/dist/Theme/tokens/builders/scrollShadow.js +16 -0
  356. package/dist/Theme/tokens/builders/surfaceRungs.d.ts +5 -2
  357. package/dist/Theme/tokens/builders/surfaceRungs.js +19 -9
  358. package/dist/Theme/tokens/types.d.ts +21 -1
  359. package/dist/Utils/table.d.ts +3 -0
  360. package/dist/Utils/table.js +49 -3
  361. package/dist/esm/Components/Accordion/Accordion.js +4 -1
  362. package/dist/esm/Components/AlertDialog/AlertDialog.js +1 -0
  363. package/dist/esm/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +1 -0
  364. package/dist/esm/Components/Apexcharts/ApexBarChart/ApexBarChart.js +1 -0
  365. package/dist/esm/Components/Apexcharts/ApexLineChart/ApexLineChart.js +1 -0
  366. package/dist/esm/Components/Apexcharts/ApexPieChart/ApexPieChart.js +1 -0
  367. package/dist/esm/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +1 -0
  368. package/dist/esm/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +1 -0
  369. package/dist/esm/Components/AppSwitcher/AppMark.js +56 -0
  370. package/dist/esm/Components/AppSwitcher/AppSwitcher.js +243 -0
  371. package/dist/esm/Components/AppSwitcher/AppSwitcherProps.js +78 -0
  372. package/dist/esm/Components/AppSwitcher/useAppSwitcherShortcut.js +27 -0
  373. package/dist/esm/Components/AppearanceSettings/AppearanceSettings.js +2 -1
  374. package/dist/esm/Components/Button/Button.js +5 -4
  375. package/dist/esm/Components/Button/Button.styles.js +38 -24
  376. package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +2 -4
  377. package/dist/esm/Components/Card/Card.js +2 -2
  378. package/dist/esm/Components/Card/PaymentCard/PaymentCard.js +21 -12
  379. package/dist/esm/Components/Checkbox/Checkbox.js +2 -1
  380. package/dist/esm/Components/Checkbox/Checkbox.styles.js +13 -8
  381. package/dist/esm/Components/Common/ErrorComponent.js +7 -5
  382. package/dist/esm/Components/Common/ErrorMessage.js +2 -2
  383. package/dist/esm/Components/Common/FormLabel.js +1 -0
  384. package/dist/esm/Components/Common/FormattedDescription.js +1 -0
  385. package/dist/esm/Components/Common/HelperText.js +2 -0
  386. package/dist/esm/Components/Common/Label.js +1 -0
  387. package/dist/esm/Components/Common/fieldStyles.js +1 -1
  388. package/dist/esm/Components/ContactForm/ContactForm.js +1 -0
  389. package/dist/esm/Components/CopyButton/CopyButton.js +10 -4
  390. package/dist/esm/Components/DatePicker/CalendarPanel.js +38 -16
  391. package/dist/esm/Components/DatePicker/DatePicker.js +1 -0
  392. package/dist/esm/Components/DatePicker/RangeDatePicker.js +31 -6
  393. package/dist/esm/Components/DatePicker/SingleDatePicker.js +50 -15
  394. package/dist/esm/Components/DatePicker/ThemeDatePicker.js +1 -0
  395. package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +11 -2
  396. package/dist/esm/Components/DatePicker/TimePicker.js +4 -3
  397. package/dist/esm/Components/DatePicker/TimePickerInput.js +2 -1
  398. package/dist/esm/Components/DatePicker/dayStates.js +79 -0
  399. package/dist/esm/Components/Divider/Divider.js +1 -0
  400. package/dist/esm/Components/Dropdown/DropDown.js +23 -7
  401. package/dist/esm/Components/Editor/Editor.js +1 -0
  402. package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -5
  403. package/dist/esm/Components/EmptyState/EmptyState.js +4 -2
  404. package/dist/esm/Components/FeedbackForm/FeedbackForm.js +1 -0
  405. package/dist/esm/Components/FieldSelectModal/FieldSelectModal.js +1 -0
  406. package/dist/esm/Components/FilePreview/FilePreview.js +3 -1
  407. package/dist/esm/Components/FileUpload/FileUpload.js +8 -6
  408. package/dist/esm/Components/FileUpload/constants.js +1 -0
  409. package/dist/esm/Components/FileUploader/FileUploader.js +1 -0
  410. package/dist/esm/Components/FilterSidebar/FilterSidebar.js +5 -5
  411. package/dist/esm/Components/FilterSidebar/filterHoverStyle.js +3 -10
  412. package/dist/esm/Components/Form/FormWrapper.js +2 -1
  413. package/dist/esm/Components/Header/components/mobileMenu.js +12 -3
  414. package/dist/esm/Components/Input/PhoneNumberInput.js +1 -0
  415. package/dist/esm/Components/Input/Switch/InputSwitch.js +1 -0
  416. package/dist/esm/Components/Input/TextInput.js +1 -0
  417. package/dist/esm/Components/Input/TextInput.styles.js +8 -10
  418. package/dist/esm/Components/InputTextArea/InputTextArea.js +1 -0
  419. package/dist/esm/Components/InputTextArea/InputTextArea.style.js +7 -6
  420. package/dist/esm/Components/KanbanBoard/AccountCard.js +1 -0
  421. package/dist/esm/Components/KanbanBoard/AccountRow.js +1 -0
  422. package/dist/esm/Components/KanbanBoard/KanbanActions/KanbanActions.js +2 -2
  423. package/dist/esm/Components/KanbanBoard/KanbanBoard.js +1 -0
  424. package/dist/esm/Components/KanbanBoard/MeasuredItem.js +1 -0
  425. package/dist/esm/Components/LazyWrapper/LazyWrapper.js +1 -0
  426. package/dist/esm/Components/LimitReachedModal/limitReachedCopy.js +2 -0
  427. package/dist/esm/Components/Loading/Loading.js +13 -11
  428. package/dist/esm/Components/MoreItems/MoreItems.js +4 -1
  429. package/dist/esm/Components/MultiSelect/MultiSelect.js +2 -2
  430. package/dist/esm/Components/NavigationBar/NavigationBar.js +9 -10
  431. package/dist/esm/Components/NoteTextArea/NoteTextArea.js +10 -4
  432. package/dist/esm/Components/Notification/Notification.js +1 -0
  433. package/dist/esm/Components/NumberInput/NumberInput.js +5 -2
  434. package/dist/esm/Components/NumberInput/NumberInput.styles.js +7 -6
  435. package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +14 -10
  436. package/dist/esm/Components/OrgSwitcher/OrgSwitcherProps.js +1 -0
  437. package/dist/esm/Components/OrganizationDetails/OrganizationDetails.js +5 -3
  438. package/dist/esm/Components/PdfViewer/PdfViewer.js +7 -1
  439. package/dist/esm/Components/PinInput/PinInput.js +1 -0
  440. package/dist/esm/Components/PinInputs/PinInputs.js +1 -0
  441. package/dist/esm/Components/Primitives/Primitives.js +6 -0
  442. package/dist/esm/Components/ProductCard/ProductReview.js +6 -1
  443. package/dist/esm/Components/ProductCard/ProductTags.js +1 -1
  444. package/dist/esm/Components/ProfileCard/ProfileCard.js +1 -1
  445. package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +6 -4
  446. package/dist/esm/Components/ProgressBar/ProgressBar.js +1 -0
  447. package/dist/esm/Components/RadioButton/RadioButton.js +3 -2
  448. package/dist/esm/Components/Reorder/Reorder.js +1 -0
  449. package/dist/esm/Components/RolesPermission/RolesPermission.js +5 -3
  450. package/dist/esm/Components/ScrollToTop/ScrollToTop.js +4 -1
  451. package/dist/esm/Components/ScrollbarBox/ScrollbarBox.js +1 -0
  452. package/dist/esm/Components/Search/Search.js +3 -2
  453. package/dist/esm/Components/SearchSelect/SearchSelect.js +48 -37
  454. package/dist/esm/Components/SegmentedControl/SegmentedControl.js +86 -0
  455. package/dist/esm/Components/SegmentedControl/SegmentedControlProps.js +1 -0
  456. package/dist/esm/Components/Select/Select.js +5 -3
  457. package/dist/esm/Components/Select/Select.styles.js +3 -2
  458. package/dist/esm/Components/SelectSearch/SelectSearch.js +37 -15
  459. package/dist/esm/Components/SelectV2/SelectV2.js +20 -5
  460. package/dist/esm/Components/SideBar/SecondaryBar.js +1 -1
  461. package/dist/esm/Components/SideBar/SideBar.js +5 -3
  462. package/dist/esm/Components/SideBar/components/MenuPopoverContent.js +2 -2
  463. package/dist/esm/Components/Skeletons/Skeletons.js +1 -0
  464. package/dist/esm/Components/Slider/Slider.js +9 -1
  465. package/dist/esm/Components/StageProgress/StageItem.js +1 -0
  466. package/dist/esm/Components/StageProgress/StageProgress.js +1 -0
  467. package/dist/esm/Components/StageProgress/StageProgressProps.js +7 -5
  468. package/dist/esm/Components/StageProgress/StepperStage.js +2 -2
  469. package/dist/esm/Components/Switch/Switch.js +1 -0
  470. package/dist/esm/Components/Table/Table.js +15 -5
  471. package/dist/esm/Components/Table/components/Pagination.js +1 -1
  472. package/dist/esm/Components/Table/components/TableActions.js +2 -2
  473. package/dist/esm/Components/Table/components/TableBody.js +44 -18
  474. package/dist/esm/Components/Table/components/TableGroupRow.js +1 -1
  475. package/dist/esm/Components/Table/components/TableHeader.js +21 -8
  476. package/dist/esm/Components/Table/components/TableSearch.js +1 -1
  477. package/dist/esm/Components/Table/filters/CompactSelect.js +29 -8
  478. package/dist/esm/Components/Table/filters/LeftFilterPane.js +1 -1
  479. package/dist/esm/Components/Table/settings/ManageColumns.js +8 -5
  480. package/dist/esm/Components/Table/settings/TableSettings.js +7 -5
  481. package/dist/esm/Components/Table/variants/TableVariantContext.js +13 -0
  482. package/dist/esm/Components/Table/variants/classic.js +43 -0
  483. package/dist/esm/Components/Table/variants/index.js +9 -0
  484. package/dist/esm/Components/Table/variants/pillInk.js +18 -0
  485. package/dist/esm/Components/Table/variants/studio.js +46 -0
  486. package/dist/esm/Components/Table/variants/tokens.js +1 -0
  487. package/dist/esm/Components/Tag/Tag.js +1 -0
  488. package/dist/esm/Components/Tag/Tag.styles.js +17 -12
  489. package/dist/esm/Components/Timeline/Timeline.js +1 -0
  490. package/dist/esm/Components/Toaster/Toaster.js +1 -0
  491. package/dist/esm/Components/Toggle/TableToggle.js +72 -17
  492. package/dist/esm/Components/ToggleSwitch/ToggleSwitch.js +16 -0
  493. package/dist/esm/Components/ToggleSwitch/ToggleSwitchProps.js +1 -0
  494. package/dist/esm/Components/ToolTip/ToolTip.js +7 -6
  495. package/dist/esm/Components/Trail/EditableCell.js +2 -1
  496. package/dist/esm/Components/Trail/SelectAllCheckbox.js +1 -0
  497. package/dist/esm/Components/Trail/TrailWorks.js +2 -1
  498. package/dist/esm/Components/UserDetails/DeactivateConfirmModal.js +1 -1
  499. package/dist/esm/Components/UserDetails/UserDetails.js +6 -3
  500. package/dist/esm/Hooks/exclusiveOverlay.js +16 -0
  501. package/dist/esm/Hooks/useExclusiveOverlay.js +20 -0
  502. package/dist/esm/Theme/assertPalette.js +3 -2
  503. package/dist/esm/Theme/chakra/Menu.styles.js +9 -5
  504. package/dist/esm/Theme/chakra/Popover.styles.js +5 -1
  505. package/dist/esm/Theme/chakra/componentStyles.js +16 -9
  506. package/dist/esm/Theme/chakra/createBrandTheme.js +22 -9
  507. package/dist/esm/Theme/chakra/focusRing.styles.js +40 -0
  508. package/dist/esm/Theme/provider/ThemeSwitcher.js +5 -2
  509. package/dist/esm/Theme/tokens/brands/index.js +6 -1
  510. package/dist/esm/Theme/tokens/builders/buildDarkPalette.js +6 -1
  511. package/dist/esm/Theme/tokens/builders/chartColorsFromTheme.js +1 -1
  512. package/dist/esm/Theme/tokens/builders/filledSurface.js +67 -0
  513. package/dist/esm/Theme/tokens/builders/focusRing.js +85 -0
  514. package/dist/esm/Theme/tokens/builders/index.js +2 -0
  515. package/dist/esm/Theme/tokens/builders/outlineRung.js +78 -4
  516. package/dist/esm/Theme/tokens/builders/placeholderInk.js +29 -0
  517. package/dist/esm/Theme/tokens/builders/resolvedRungs.js +7 -2
  518. package/dist/esm/Theme/tokens/builders/rowStates.js +15 -0
  519. package/dist/esm/Theme/tokens/builders/scrollShadow.js +13 -0
  520. package/dist/esm/Theme/tokens/builders/surfaceRungs.js +20 -10
  521. package/dist/esm/Utils/table.js +50 -5
  522. package/dist/esm/index.js +26 -1
  523. package/dist/index.d.ts +26 -3
  524. package/dist/index.js +67 -4
  525. package/package.json +11 -4
@@ -1,5 +1,7 @@
1
- import { accentTextOnCanvas, isDarkCanvas, onFilled } from "../../Theme/tokens/builders/accentText.js";
1
+ import { accentTextOnCanvas } from "../../Theme/tokens/builders/accentText.js";
2
+ import { darkerFillRung, labelOnFill, solidFillRung, } from "../../Theme/tokens/builders/filledSurface.js";
2
3
  import { resolveGradient, gradientCss } from "../../Theme/tokens/builders/gradientInk.js";
4
+ import { focusVisibleStyles } from "../../Theme/chakra/focusRing.styles.js";
3
5
  /**
4
6
  * Outline/ghost/link text sits ON the canvas, so it needs a rung that stays readable there —
5
7
  * `[500]` is pinned dark enough to carry a white label on the solid variant and measures only
@@ -17,24 +19,28 @@ const onCanvasHoverBg = (theme, colorScheme, step) => {
17
19
  const scale = theme.colors[colorScheme];
18
20
  return "opacity" in scale ? scale.opacity[step] : scale[50];
19
21
  };
20
- /**
21
- * The rung one/two steps DARKER than the accent — what a filled button's hover/active needs so its
22
- * white label stays legible.
23
- *
24
- * Every dark scale runs dark -> light across 50 -> 900 (brand scales are rebuilt that way, utility
25
- * hues are reversed), the mirror of light mode. So "darker than [500]" is [600]/[700] in light but
26
- * [400]/[300] in dark. Hardcoding [600] would hand the label a LIGHTER fill in dark and drop it to
27
- * ~3.2 contrast.
28
- */
29
- const FILL_STEP_RUNGS = { light: [600, 700], dark: [400, 300] };
22
+ const swatch = (theme, colorScheme) => theme.colors[colorScheme];
23
+ const buttonSolidRung = (theme, colorScheme) => solidFillRung(swatch(theme, colorScheme), theme.colors.white);
30
24
  const darkerFill = (theme, colorScheme, step) => {
31
- const mode = isDarkCanvas(theme.colors.backgroundColor.main) ? "dark" : "light";
32
- return theme.colors[colorScheme][FILL_STEP_RUNGS[mode][step]];
25
+ const scale = swatch(theme, colorScheme);
26
+ const rung = darkerFillRung(scale, theme.colors.backgroundColor.main, theme.colors.white, step);
27
+ return scale[rung];
33
28
  };
34
29
  /** Label for the solid variant's filled bg — derived from THAT fill, since hover/active swap it. */
35
- const labelFor = (theme, fill) => onFilled(fill, theme.colors.white, theme.colors.black);
30
+ const labelFor = (theme, fill) => labelOnFill(fill, theme.colors.white, theme.colors.black);
31
+ /**
32
+ * The two-tone `:focus-visible` ring, from the palette's derived `focusRing` pair.
33
+ *
34
+ * Every variant spreads this. Before it, none of them defined `_focusVisible` at all, so every
35
+ * button in every consuming app fell through to Chakra's stock `shadows.outline` — one fixed blue
36
+ * that measured 1.83:1 on the canvas and 1.38:1 on a primary fill, failing WCAG 1.4.11 (3:1) on
37
+ * all nine brands. `focusRing.test.ts` is the gate that keeps this true.
38
+ */
39
+ const focusRing = (theme) => focusVisibleStyles(theme.colors);
36
40
  export const Button = {
37
- baseStyle: () => ({
41
+ // The ring is repeated on every variant below AND here, so a variant name this file does not
42
+ // define (a consumer's own, or an `IconButton` falling through) still gets an indicator.
43
+ baseStyle: ({ theme }) => ({
38
44
  borderRadius: "lg",
39
45
  fontWeight: 500,
40
46
  fontSize: "1rem",
@@ -43,10 +49,11 @@ export const Button = {
43
49
  opacity: 0.6,
44
50
  cursor: "not-allowed",
45
51
  },
52
+ ...focusRing(theme),
46
53
  }),
47
54
  variants: {
48
55
  solid: ({ theme, colorScheme = "primary" }) => {
49
- const fill = theme.colors[colorScheme][500];
56
+ const fill = theme.colors[colorScheme][buttonSolidRung(theme, colorScheme)];
50
57
  const hoverFill = darkerFill(theme, colorScheme, 0);
51
58
  const activeFill = darkerFill(theme, colorScheme, 1);
52
59
  const hoverLabel = labelFor(theme, hoverFill);
@@ -75,25 +82,26 @@ export const Button = {
75
82
  color: hoverLabel,
76
83
  },
77
84
  },
85
+ ...focusRing(theme),
78
86
  };
79
87
  },
80
88
  outline: ({ theme, colorScheme = "primary" }) => {
81
- const hoverFill = theme.colors[colorScheme][500];
89
+ // Same rung as `solid`'s fill, not raw [500] — keeps hover bg AA-safe for white text.
90
+ const hoverFill = theme.colors[colorScheme][buttonSolidRung(theme, colorScheme)];
82
91
  const activeFill = darkerFill(theme, colorScheme, 0);
92
+ const ink = onCanvasText(theme, colorScheme);
83
93
  return {
84
94
  border: "0.1rem solid",
85
- borderColor: theme.colors[colorScheme][500],
86
- color: onCanvasText(theme, colorScheme),
95
+ borderColor: ink,
96
+ color: ink,
87
97
  bg: "transparent",
88
98
  _hover: {
89
99
  bg: hoverFill,
90
100
  borderColor: activeFill,
91
- // Was a hardcoded `theme.colors.white` — fails AA for any colorScheme whose [500]
92
- // doesn't clear white contrast (e.g. emerald/rosewood primary in dark, 3.38/3.46).
93
101
  color: labelFor(theme, hoverFill),
94
102
  _disabled: {
95
103
  // bg: theme.colors[colorScheme][500],
96
- color: onCanvasText(theme, colorScheme),
104
+ color: ink,
97
105
  },
98
106
  },
99
107
  _active: {
@@ -102,8 +110,9 @@ export const Button = {
102
110
  },
103
111
  _loading: {
104
112
  // bg: theme.colors[colorScheme][500],
105
- color: onCanvasText(theme, colorScheme),
113
+ color: ink,
106
114
  },
115
+ ...focusRing(theme),
107
116
  };
108
117
  },
109
118
  ghost: ({ theme, colorScheme = "primary" }) => ({
@@ -116,6 +125,7 @@ export const Button = {
116
125
  _active: {
117
126
  bg: onCanvasHoverBg(theme, colorScheme, 24),
118
127
  },
128
+ ...focusRing(theme),
119
129
  }),
120
130
  link: ({ theme, colorScheme = "primary" }) => ({
121
131
  color: onCanvasText(theme, colorScheme),
@@ -128,13 +138,16 @@ export const Button = {
128
138
  _active: {
129
139
  color: onCanvasText(theme, colorScheme),
130
140
  },
141
+ ...focusRing(theme),
131
142
  }),
132
- unstyled: () => ({
143
+ // `unstyled` drops the fill, not the affordance: a focus indicator is not styling.
144
+ unstyled: ({ theme }) => ({
133
145
  bg: "transparent",
134
146
  color: "inherit",
135
147
  _hover: {
136
148
  bg: "transparent",
137
149
  },
150
+ ...focusRing(theme),
138
151
  }),
139
152
  // Theme-based two-tone gradient: each theme defines its own `gradient` {from,to} pair.
140
153
  // Ignores colorScheme; hover/active shift brightness so it works for any pair.
@@ -161,6 +174,7 @@ export const Button = {
161
174
  filter: "brightness(0.92)",
162
175
  _hover: { bgImage: bg, filter: "brightness(0.92)" },
163
176
  },
177
+ ...focusRing(theme),
164
178
  };
165
179
  },
166
180
  },
@@ -69,7 +69,7 @@ rightIconDropdown, menulistStyle, menuItemStyle, isLoading, divider = true, left
69
69
  // this theme-swap app never triggers) — our `bg` prop above only recolors the list
70
70
  // itself, not the inherited var, so items fell back to white until hover/focus (which
71
71
  // our own sx already overrides). Setting the var here fixes the rest state too.
72
- sx: { "--menu-bg": theme.colors.backgroundColor.light }, border: "1px solid", borderColor: theme.colors.boxborder[500], borderRadius: "xl", boxShadow: "lg", py: "0.375rem", minW: "12rem", overflow: "hidden", children: dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.map((option, index) => (_jsxs(MenuItem, { onClick: (event) => handleMenuClick(event, option), style: menuItemStyle, sx: {
72
+ sx: { "--menu-bg": theme.colors.backgroundColor.light }, borderRadius: "xl", boxShadow: "lg", py: "0.375rem", minW: "12rem", overflow: "hidden", children: dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.map((option, index) => (_jsxs(MenuItem, { onClick: (event) => handleMenuClick(event, option), style: menuItemStyle, sx: {
73
73
  display: "flex",
74
74
  alignItems: "center",
75
75
  gap: "0.5rem",
@@ -79,7 +79,7 @@ rightIconDropdown, menulistStyle, menuItemStyle, isLoading, divider = true, left
79
79
  borderRadius: "lg",
80
80
  fontSize: "13px",
81
81
  fontWeight: 500,
82
- color: theme.colors.gray[700],
82
+ color: theme.colors.text[700],
83
83
  transition: "background 0.12s",
84
84
  "& svg": { width: "16px", height: "16px" },
85
85
  ...(divider
@@ -90,8 +90,6 @@ rightIconDropdown, menulistStyle, menuItemStyle, isLoading, divider = true, left
90
90
  borderColor: theme.colors.boxborder[200],
91
91
  }
92
92
  : {}),
93
- _hover: { bg: theme.colors.primary[50], color: theme.colors.primary[700] },
94
- _focus: { bg: theme.colors.primary[50], color: theme.colors.primary[700] },
95
93
  "&:last-child": { borderBottom: "none" },
96
94
  }, children: [option === null || option === void 0 ? void 0 : option.image, option.label] }, index))) }) })] })) : (rightIcon && (_jsx(IconButton, { "aria-label": "Right icon button", icon: rightIcon, isLoading: RightIconLoading, onClick: onRightIconClick, onBlur: onBlurRightIcon, style: buttonGroupRightIconStyle, sx: gradientItemSx })))] }));
97
95
  }
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Card as ChakraCard } from "@chakra-ui/react";
3
- export default function Card({ key, maxW, align, variant, direction, justify, children, size, color, overflow, sx, }) {
4
- return (_jsx(ChakraCard, { maxW: maxW, align: align, variant: variant, direction: direction, justify: justify, size: size, overflow: overflow, colorScheme: color, p: 4, sx: sx, children: children }, key));
3
+ export default function Card({ maxW, align, variant, direction, justify, children, size, color, overflow, sx, }) {
4
+ return (_jsx(ChakraCard, { maxW: maxW, align: align, variant: variant, direction: direction, justify: justify, size: size, overflow: overflow, colorScheme: color, p: 4, sx: sx, children: children }));
5
5
  }
@@ -2,19 +2,26 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import { Box, Badge, Flex, GridItem, Heading, Icon, Text, VStack, Skeleton, SkeletonText, } from "@chakra-ui/react";
3
3
  import { Check } from "lucide-react";
4
4
  import { useCustomTheme } from "../../../Theme/useCustomTheme.js";
5
- import { onFilled } from "../../../Theme/tokens/builders/accentText.js";
5
+ import { resolveFilledSurface } from "../../../Theme/tokens/builders/filledSurface.js";
6
6
  import Button from "../../Button/Button.js";
7
7
  const getCardStyles = (isActive, isNextUpgrade, popular, theme) => {
8
- const withOnButtonColor = (styles) => ({
9
- ...styles,
10
- onButtonColor: onFilled(styles.buttonColor, theme.colors.white, theme.colors.black),
11
- });
8
+ const withOnButtonColor = (styles) => {
9
+ const scale = theme.colors[styles.buttonScale];
10
+ const solid = resolveFilledSurface(scale, theme.colors);
11
+ return {
12
+ ...styles,
13
+ buttonColor: solid.fill,
14
+ onButtonColor: solid.color,
15
+ };
16
+ };
12
17
  if (isActive) {
13
18
  return withOnButtonColor({
14
19
  badgeText: "Active Plan",
15
20
  badgeColor: `0.125rem solid ${theme.colors.green[500]}`,
16
21
  buttonColor: theme.colors.green[500],
22
+ buttonScale: "green",
17
23
  buttonColor50: theme.colors.green[50],
24
+ colorScheme: "green",
18
25
  });
19
26
  }
20
27
  if (isNextUpgrade) {
@@ -22,7 +29,9 @@ const getCardStyles = (isActive, isNextUpgrade, popular, theme) => {
22
29
  badgeText: "Upgrade Your Plan",
23
30
  badgeColor: `0.125rem solid ${theme.colors.primary[500]}`,
24
31
  buttonColor: theme.colors.primary[500],
32
+ buttonScale: "primary",
25
33
  buttonColor50: theme.colors.primary[50],
34
+ colorScheme: "primary",
26
35
  });
27
36
  }
28
37
  if (popular) {
@@ -30,25 +39,25 @@ const getCardStyles = (isActive, isNextUpgrade, popular, theme) => {
30
39
  badgeText: "Most Popular",
31
40
  badgeColor: `0.125rem solid ${theme.colors.primary[500]}`,
32
41
  buttonColor: theme.colors.primary[500],
42
+ buttonScale: "primary",
33
43
  buttonColor50: theme.colors.primary[50],
44
+ colorScheme: "primary",
34
45
  });
35
46
  }
36
47
  return withOnButtonColor({
37
48
  badgeText: "",
38
49
  badgeColor: "",
39
50
  buttonColor: theme.colors.primary[500],
51
+ buttonScale: "primary",
40
52
  buttonColor50: theme.colors.primary[50],
53
+ colorScheme: "primary",
41
54
  });
42
55
  };
43
56
  const PaymentCard = ({ plan, isActive = false, isNextUpgrade = false, billingCycle, onSelect, onHover, buttonLoading, isLoading = false, isRenewal = false, }) => {
44
57
  const theme = useCustomTheme();
45
- const { badgeText, badgeColor, buttonColor, buttonColor50, onButtonColor } = getCardStyles(isActive, isNextUpgrade, !!plan.popular, theme);
58
+ const { badgeText, badgeColor, buttonColor, buttonColor50, onButtonColor, colorScheme } = getCardStyles(isActive, isNextUpgrade, !!plan.popular, theme);
46
59
  const variantStyles = plan.buttonVariant === "outline"
47
- ? {
48
- borderColor: buttonColor,
49
- color: buttonColor,
50
- _hover: { bg: buttonColor50 },
51
- }
60
+ ? {}
52
61
  : {
53
62
  bg: buttonColor,
54
63
  color: onButtonColor,
@@ -60,6 +69,6 @@ const PaymentCard = ({ plan, isActive = false, isNextUpgrade = false, billingCyc
60
69
  // 🔹 Actual Card Content
61
70
  _jsxs(_Fragment, { children: [badgeText && (_jsx(Badge, { position: "absolute", top: "-0.75rem", left: "50%", transform: "translateX(-50%)", bg: buttonColor, color: onButtonColor, fontSize: "sm", px: 4, py: 1, borderRadius: "full", children: badgeText })), _jsxs(Box, { textAlign: "center", mb: 6, children: [_jsx(Flex, { justify: "center", align: "center", w: "3.125rem", h: "3.125rem", borderRadius: "lg", bg: buttonColor50, color: buttonColor, mx: "auto", mb: 4, children: plan.icon }), _jsx(Heading, { as: "h3", size: "lg", mb: 4, color: theme.colors.gray[800], children: plan.name }), (plan.yearlyPrice !== 0 || plan.monthlyPrice !== 0) && (_jsxs(Heading, { as: "h4", size: "2xl", mb: 1, color: theme.colors.gray[800], display: "flex", justifyContent: "center", children: [_jsx(Box, { fontSize: "1.5rem", children: "\u20B9" }), billingCycle === "yearly"
62
71
  ? plan.yearlyPrice
63
- : plan.monthlyPrice, _jsxs(Box, { display: "flex", flexDirection: "column", justifyContent: "end", ml: 1, children: [_jsx(Text, { fontSize: "0.9rem", fontWeight: "normal", color: theme.colors.gray[600], children: plan.billing }), _jsx(Text, { fontSize: "0.7rem", fontWeight: "normal", color: theme.colors.gray[600], children: plan.tax })] })] })), plan.priceDescription && (_jsx(Text, { color: theme.colors.green[800], mt: 2, children: plan === null || plan === void 0 ? void 0 : plan.priceDescription })), _jsx(Text, { color: theme.colors.gray[600], mt: 2, children: plan.description })] }), ((!isActive && plan.buttonText) || isRenewal) && (_jsx(Button, { isLoading: plan.plan_id === buttonLoading, loadingText: plan.buttonLoadingText, width: "full", variant: plan.buttonVariant, size: "lg", onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(plan.plan_id), onMouseEnter: () => onHover === null || onHover === void 0 ? void 0 : onHover(plan.plan_id, "button", true), onMouseLeave: () => onHover === null || onHover === void 0 ? void 0 : onHover(plan.plan_id, "button", false), ...variantStyles, children: plan.buttonText })), _jsx(VStack, { align: "start", spacing: 3, mt: 6, children: plan.features.map((feature, i) => (_jsxs(Flex, { align: "center", children: [_jsx(Icon, { as: Check, color: theme.colors.green[500], mr: 2 }), _jsx(Text, { fontSize: "sm", children: feature })] }, i))) })] })) }) }));
72
+ : plan.monthlyPrice, _jsxs(Box, { display: "flex", flexDirection: "column", justifyContent: "end", ml: 1, children: [_jsx(Text, { fontSize: "0.9rem", fontWeight: "normal", color: theme.colors.gray[600], children: plan.billing }), _jsx(Text, { fontSize: "0.7rem", fontWeight: "normal", color: theme.colors.gray[600], children: plan.tax })] })] })), plan.priceDescription && (_jsx(Text, { color: theme.colors.green[800], mt: 2, children: plan === null || plan === void 0 ? void 0 : plan.priceDescription })), _jsx(Text, { color: theme.colors.gray[600], mt: 2, children: plan.description })] }), ((!isActive && plan.buttonText) || isRenewal) && (_jsx(Button, { isLoading: plan.plan_id === buttonLoading, loadingText: plan.buttonLoadingText, width: "full", variant: plan.buttonVariant, colorScheme: colorScheme, size: "lg", onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(plan.plan_id), onMouseEnter: () => onHover === null || onHover === void 0 ? void 0 : onHover(plan.plan_id, "button", true), onMouseLeave: () => onHover === null || onHover === void 0 ? void 0 : onHover(plan.plan_id, "button", false), ...variantStyles, children: plan.buttonText })), _jsx(VStack, { align: "start", spacing: 3, mt: 6, children: plan.features.map((feature, i) => (_jsxs(Flex, { align: "center", children: [_jsx(Icon, { as: Check, color: theme.colors.green[500], mr: 2 }), _jsx(Text, { fontSize: "sm", children: feature })] }, i))) })] })) }) }));
64
73
  };
65
74
  export default PaymentCard;
@@ -4,6 +4,7 @@ import { useCustomTheme } from "../../Theme/useCustomTheme.js";
4
4
  import ErrorMessage from "../Common/ErrorMessage.js";
5
5
  import HelperText from "../Common/HelperText.js";
6
6
  import ToolTip from "../ToolTip/ToolTip.js";
7
+ /** Renders Chakra's native role="checkbox"; label is optional and falls back to aria-label — pass isInvalid (not just error) for the invalid state to register. */
7
8
  export default function CheckBox({ label, labelFontSize, showLabelTooltip, labelTooltip, labelClampLines, spacing, isInvalid, color, iconColor, iconSize, isChecked, isIndeterminate, onChange, isDisabled, size = "md", value, defaultChecked, sx, error, errorMessage, helperText, onClick, labelSx, ...aria }) {
8
9
  const theme = useCustomTheme();
9
10
  const controlSize = size === "sm" ? "1rem"
@@ -21,7 +22,7 @@ export default function CheckBox({ label, labelFontSize, showLabelTooltip, label
21
22
  ...labelSx,
22
23
  }
23
24
  : { ...labelSx };
24
- return (_jsxs(_Fragment, { children: [_jsx(ChakraCheckbox, { ...aria, onClick: onClick, spacing: spacing !== null && spacing !== void 0 ? spacing : "0.5rem", isInvalid: isInvalid, colorScheme: color, iconColor: iconColor, iconSize: iconSize, isChecked: isChecked, isIndeterminate: isIndeterminate, onChange: onChange, isDisabled: isDisabled, size: size, value: value, defaultChecked: defaultChecked, borderColor: theme.colors.gray[500], display: "flex", alignItems: "center", sx: {
25
+ return (_jsxs(_Fragment, { children: [_jsx(ChakraCheckbox, { ...aria, onClick: onClick, spacing: spacing !== null && spacing !== void 0 ? spacing : "0.5rem", isInvalid: isInvalid, colorScheme: color, iconColor: iconColor, iconSize: iconSize, isChecked: isChecked, isIndeterminate: isIndeterminate, onChange: onChange, isDisabled: isDisabled, size: size, value: value, defaultChecked: defaultChecked, borderColor: theme.colors.boxborder[500], display: "flex", alignItems: "center", sx: {
25
26
  ...sx,
26
27
  ".chakra-checkbox__control": { w: controlSize, h: controlSize },
27
28
  }, children: label && (showLabelTooltip ? (_jsx(ToolTip, { label: labelTooltip !== null && labelTooltip !== void 0 ? labelTooltip : label, hasArrow: true, placement: "top", fontSize: "0.75rem", children: _jsx(Box, { as: "span", sx: clampStyles, fontSize: labelFontSize !== null && labelFontSize !== void 0 ? labelFontSize : "0.8125rem", color: theme.colors.text[700], fontWeight: 500, ml: 0, children: label }) })) : (_jsx(Box, { as: "span", sx: clampStyles, fontSize: labelFontSize !== null && labelFontSize !== void 0 ? labelFontSize : "0.8125rem", color: theme.colors.text[700], fontWeight: 500, ml: 0, children: label }))) }), error && _jsx(ErrorMessage, { errorMessage: errorMessage }), helperText && !error && _jsx(HelperText, { helperText: helperText })] }));
@@ -1,20 +1,22 @@
1
- import { resolveHoverTint } from "../../Theme/tokens/builders/outlineRung.js";
1
+ import { AA_NON_TEXT, liftToContrast, resolveHoverTint } from "../../Theme/tokens/builders/outlineRung.js";
2
+ import { onFilled } from "../../Theme/tokens/builders/accentText.js";
2
3
  export const Checkbox = {
3
4
  baseStyle: ({ theme, colorScheme = "primary" }) => {
4
5
  var _a;
5
6
  const palette = (_a = theme.colors[colorScheme]) !== null && _a !== void 0 ? _a : theme.colors.primary;
6
- // A browser probe found the checked checkbox's hover repeating its own resting `[600]` fill.
7
- // Chakra's stock control also carries a checked-hover at `_checked._hover` (this override
8
- // nests the other way, `_hover._checked`) — two different key paths landing on the same
9
- // selector, so whichever one the cascade picks must still differ from resting. Setting both
10
- // paths to the same lifted value removes that ambiguity outright.
7
+ // Both `_checked._hover` and `_hover._checked` paths get the same lifted value.
11
8
  const hoverChecked = resolveHoverTint(palette[600], palette[600]);
9
+ const checkedIcon = onFilled(palette[600], theme.colors.white, theme.colors.black);
10
+ const hoverCheckedIcon = onFilled(hoverChecked, theme.colors.white, theme.colors.black);
11
+ const focusRing = liftToContrast(palette[300], theme.colors.backgroundColor.main, AA_NON_TEXT);
12
12
  return {
13
13
  control: {
14
14
  width: "1.25rem",
15
15
  height: "1.25rem",
16
16
  borderWidth: "1.6px",
17
17
  borderRadius: "base",
18
+ // Without a resting colour Chakra falls back to its own gray.500.
19
+ borderColor: theme.colors.boxborder[500],
18
20
  transition: "background 0.15s, border-color 0.15s, box-shadow 0.15s",
19
21
  _disabled: {
20
22
  bg: theme.colors.background[50],
@@ -49,7 +51,7 @@ export const Checkbox = {
49
51
  },
50
52
  },
51
53
  _focus: {
52
- boxShadow: `0 0 0 2px ${palette[300]}`,
54
+ boxShadow: `0 0 0 2px ${focusRing}`,
53
55
  borderColor: palette[500],
54
56
  },
55
57
  _active: {
@@ -58,7 +60,10 @@ export const Checkbox = {
58
60
  },
59
61
  },
60
62
  icon: {
61
- color: theme.colors.background[50],
63
+ color: checkedIcon,
64
+ _hover: {
65
+ color: hoverCheckedIcon,
66
+ },
62
67
  },
63
68
  };
64
69
  },
@@ -1,12 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { HStack, Text } from "@chakra-ui/react";
3
3
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
4
- import { onFilled } from "../../Theme/tokens/builders/accentText.js";
4
+ import { resolveFilledSurface } from "../../Theme/tokens/builders/filledSurface.js";
5
+ /** Inline error row for Input/PinInputs; `error` is the message text itself, not ErrorMessage's boolean `error` + `errorMessage` pair, and there's no `id` for aria-describedby. */
5
6
  const ErrorComponent = ({ error, errorClassName, }) => {
6
7
  const { colors } = useCustomTheme();
7
- const errorFill = colors.semanticText.error;
8
- // errorFill is ink, not a fill tuned to carry a mark — pick the mark's ink structurally.
9
- const markInk = onFilled(errorFill, colors.white, colors.black);
10
- return (_jsxs(HStack, { as: "p", align: "flex-start", spacing: 1, mt: 1, fontSize: "sm", color: errorFill, className: errorClassName, children: [_jsxs("svg", { width: "12", height: "12", viewBox: "0 0 100 100", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, children: [_jsx("circle", { cx: "50", cy: "50", r: "50", fill: errorFill }), _jsx("rect", { x: "46", y: "40", width: "8", height: "30", rx: "2", fill: markInk }), _jsx("circle", { cx: "50", cy: "28", r: "4", fill: markInk })] }), _jsx(Text, { as: "span", children: error })] }));
8
+ const errorText = colors.semanticText.error;
9
+ const errorSolid = resolveFilledSurface(colors.semantic.error, colors);
10
+ const errorFill = errorSolid.fill;
11
+ const markInk = errorSolid.color;
12
+ return (_jsxs(HStack, { as: "p", align: "flex-start", spacing: 1, mt: 1, fontSize: "sm", color: errorText, className: errorClassName, children: [_jsxs("svg", { width: "12", height: "12", viewBox: "0 0 100 100", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, children: [_jsx("circle", { cx: "50", cy: "50", r: "50", fill: errorFill }), _jsx("rect", { x: "46", y: "40", width: "8", height: "30", rx: "2", fill: markInk }), _jsx("circle", { cx: "50", cy: "28", r: "4", fill: markInk })] }), _jsx(Text, { as: "span", children: error })] }));
11
13
  };
12
14
  export default ErrorComponent;
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Flex, Text, } from "@chakra-ui/react";
3
3
  import { Info } from "lucide-react";
4
4
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
5
- // `id` lets a field point `aria-describedby` here so the message is part of the control's
6
- // description on every focus. `role="alert"` alone announces once, when it first renders.
5
+ // `id` lets a field point `aria-describedby` here; `role="alert"` announces once, on render.
6
+ // Always pass `errorMessage` when `error` is true — omitted, this renders the literal word "Error", and every caller hides `helperText` while `error` is true.
7
7
  const ErrorMessage = ({ errorMessage, id }) => {
8
8
  const { colors } = useCustomTheme();
9
9
  return (_jsxs(Flex, { id: id, align: "center", color: colors.semanticText.error, fontSize: "0.875rem", role: "alert", children: [_jsx(Info, { width: "0.875rem" }), _jsx(Text, { ml: "0.188rem", children: errorMessage !== null && errorMessage !== void 0 ? errorMessage : "Error" })] }));
@@ -3,6 +3,7 @@ import { Box, Icon } from "@chakra-ui/react";
3
3
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
4
4
  import { InfoIcon } from "lucide-react";
5
5
  import ToolTip from "../ToolTip/ToolTip.js";
6
+ /** Renders a real `<label htmlFor>` only when `id` is given, else a `<span>` — not a substitute for `Label` (Common/Label.tsx), which always renders a `FormLabel`. */
6
7
  export const TextLabel = ({ label, id, isRequired = false, isInformation = false, informationMessage = "", fontSize, showTooltip, tooltipLabel, clampLines, inline = false, }) => {
7
8
  const theme = useCustomTheme();
8
9
  const clampStyles = clampLines ? {
@@ -39,6 +39,7 @@ const InlineText = ({ text }) => {
39
39
  }
40
40
  return _jsx(_Fragment, { children: nodes });
41
41
  };
42
+ /** Not a full Markdown renderer — lists, links and code blocks render as literal text; returns null (no wrapper) when `content` is falsy. */
42
43
  const FormattedDescription = ({ content }) => {
43
44
  const { colors } = useCustomTheme();
44
45
  if (!content)
@@ -1,6 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { FormHelperText, Text, useFormControlContext } from "@chakra-ui/react";
3
3
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
4
+ /** `id` is optional — pass one to control aria-describedby yourself; omitted, Chakra auto-generates one only inside a FormControl ancestor. */
5
+ /** Renders `helperText` unconditionally; each field hides this while showing an error (see ErrorMessage) — HelperText itself has no `error` prop. */
4
6
  const HelperText = ({ helperText, id }) => {
5
7
  const theme = useCustomTheme();
6
8
  const field = useFormControlContext();
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { FormLabel, Text } from "@chakra-ui/react";
3
3
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
4
+ /** Always renders a real Chakra `<label>` (FormLabel), even without `htmlFor` — unlike `TextLabel` (FormLabel.tsx), which falls back to a plain `<span>`. */
4
5
  const Label = ({ label, htmlFor, labelClassName, isRequired, }) => {
5
6
  const { colors } = useCustomTheme();
6
7
  return (_jsxs(FormLabel, { htmlFor: htmlFor, mb: 1, fontSize: "sm", fontWeight: "medium", className: labelClassName, color: colors.header[500], children: [label, isRequired && (_jsx(Text, { as: "span", color: colors.semanticText.error, ml: 1, children: "*" }))] }));
@@ -17,7 +17,7 @@ export const getFieldStateStyles = (theme, { error = false, focused = false } =
17
17
  const ringPrimary = theme.colors.boxShadow.primary;
18
18
  const ringError = theme.colors.boxShadow.error;
19
19
  return {
20
- bg: theme.colors.gray[50],
20
+ bg: theme.colors.background[50],
21
21
  borderRadius: FIELD_RADIUS,
22
22
  border: `${FIELD_BORDER_WIDTH} solid`,
23
23
  borderColor: error ? errorColor : focused ? primary : idleBorder,
@@ -6,6 +6,7 @@ import { CircleCheck, CircleX } from "lucide-react";
6
6
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
7
7
  import InputTextArea from "../InputTextArea/InputTextArea.js";
8
8
  import Button from "../Button/Button.js";
9
+ /** Fully self-contained enquiry form — validates, POSTs to apiKey, and renders its own success/error alert; there is no onSubmit/onSuccess callback. */
9
10
  const ContactForm = ({ apiKey, customFields, getCustomValues, isDisabled = false, organizationId, customerId, buttonColorScheme = "primary", buttonSx, }) => {
10
11
  const { colors } = useCustomTheme();
11
12
  const [formData, setFormData] = useState({
@@ -3,8 +3,11 @@ import { useEffect, useRef, useState } from "react";
3
3
  import { Box, Flex, IconButton, Text } from "@chakra-ui/react";
4
4
  import { Check, Copy } from "lucide-react";
5
5
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
6
- import { accentTextOnCanvas } from "../../Theme/tokens/builders/accentText.js";
6
+ import { accentTextOnCanvas, AA_NORMAL_TEXT } from "../../Theme/tokens/builders/accentText.js";
7
+ import { listRowBackgrounds } from "../../Theme/tokens/builders/rowStates.js";
8
+ import { liftToContrast } from "../../Theme/tokens/builders/outlineRung.js";
7
9
  import ToolTip from "../ToolTip/ToolTip.js";
10
+ /** Copies `value` to the clipboard in 3 layouts (icon/button/menu-item) — not a full share/export action. */
8
11
  const CopyButton = ({ value, variant = "icon", label = "Copy", copiedLabel = "Copied!", tooltip = "Copy", feedbackDuration = 1500, iconSize = 16, size = "sm", onCopy, }) => {
9
12
  const theme = useCustomTheme();
10
13
  const [copied, setCopied] = useState(false);
@@ -28,14 +31,17 @@ const CopyButton = ({ value, variant = "icon", label = "Copy", copiedLabel = "Co
28
31
  // nearest rung that clears AA against the canvas this button actually sits on.
29
32
  const accent = accentTextOnCanvas(theme.colors.primary, theme.colors.backgroundColor.main);
30
33
  const success = theme.colors.semanticText.success;
34
+ const rowBackgrounds = listRowBackgrounds(theme.colors);
31
35
  if (variant === "menu-item") {
32
- return (_jsxs(Flex, { align: "center", gap: "0.5rem", px: "12px", py: "8px", width: "100%", cursor: "pointer", borderRadius: "md", transition: "background 0.15s ease", _hover: { bg: theme.colors.gray[100] }, onClick: handleCopy, children: [copied ? _jsx(Check, { size: iconSize, color: success }) : _jsx(Copy, { size: iconSize, color: accent }), _jsx(Box, { fontSize: "14px", fontWeight: 500, color: copied ? success : accent, children: copied ? copiedLabel : label })] }));
36
+ const hoverAccent = accentTextOnCanvas(theme.colors.primary, rowBackgrounds.active);
37
+ const hoverSuccess = liftToContrast(theme.colors.semantic.success[500], rowBackgrounds.active, AA_NORMAL_TEXT);
38
+ return (_jsxs(Flex, { align: "center", gap: "0.5rem", px: "12px", py: "8px", width: "100%", cursor: "pointer", borderRadius: "md", transition: "background 0.15s ease", _hover: { bg: rowBackgrounds.active }, onClick: handleCopy, children: [copied ? (_jsx(Check, { size: iconSize, color: hoverSuccess })) : (_jsx(Copy, { size: iconSize, color: hoverAccent })), _jsx(Box, { fontSize: "14px", fontWeight: 500, color: copied ? hoverSuccess : hoverAccent, children: copied ? copiedLabel : label })] }));
33
39
  }
34
40
  if (variant === "button") {
35
41
  return (_jsxs(Flex, { as: "button", align: "center", gap: "6px", px: "12px", py: "6px", borderRadius: "lg", border: "1px solid",
36
42
  // [800], not [500]: a real control boundary needs >=3:1 on every surface up to `muted`.
37
- borderColor: copied ? success : theme.colors.boxborder[500], bg: "transparent", color: copied ? success : theme.colors.gray[700], fontSize: "14px", fontWeight: 500, transition: "all 0.15s ease", _hover: { borderColor: accent, color: accent }, onClick: handleCopy, children: [copied ? _jsx(Check, { size: iconSize }) : _jsx(Copy, { size: iconSize }), _jsx(Text, { children: copied ? copiedLabel : label })] }));
43
+ borderColor: copied ? success : theme.colors.boxborder[500], bg: "transparent", color: copied ? success : theme.colors.text[700], fontSize: "14px", fontWeight: 500, transition: "all 0.15s ease", _hover: { borderColor: accent, color: accent }, onClick: handleCopy, children: [copied ? _jsx(Check, { size: iconSize }) : _jsx(Copy, { size: iconSize }), _jsx(Text, { children: copied ? copiedLabel : label })] }));
38
44
  }
39
- return (_jsx(ToolTip, { label: copied ? copiedLabel : tooltip, placement: "top", children: _jsx(IconButton, { "aria-label": tooltip, size: size, variant: "ghost", onClick: handleCopy, color: copied ? success : theme.colors.gray[500], _hover: { color: accent, bg: theme.colors.primary[50] }, icon: copied ? _jsx(Check, { size: iconSize }) : _jsx(Copy, { size: iconSize }) }) }));
45
+ return (_jsx(ToolTip, { label: copied ? copiedLabel : tooltip, placement: "top", children: _jsx(IconButton, { "aria-label": tooltip, size: size, variant: "ghost", onClick: handleCopy, color: copied ? success : theme.colors.textMuted, _hover: { color: accent, bg: rowBackgrounds.active }, icon: copied ? _jsx(Check, { size: iconSize }) : _jsx(Copy, { size: iconSize }) }) }));
40
46
  };
41
47
  export default CopyButton;
@@ -1,11 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Grid } from "@chakra-ui/react";
2
+ import { Box } from "@chakra-ui/react";
3
3
  import { format, startOfMonth, endOfMonth, startOfWeek, endOfWeek, addDays } from "date-fns";
4
4
  import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
5
5
  import Button from "../Button/Button.js";
6
6
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
7
- import { onFilled } from "../../Theme/tokens/builders/accentText.js";
8
- export const CalendarPanel = ({ currentMonth, setCurrentMonth, today, isRange, tempDate, tempRangeStart, tempRangeEnd, isSameDay, isBefore, isAfter, minDate, maxDate, disablePastDates, disableFutureDates, disableToday, onDaySelect, hoveredDate, onDayHover, renderWeekdays, }) => {
7
+ import { resolveFilledSurface } from "../../Theme/tokens/builders/filledSurface.js";
8
+ import { DAY_CLASS, dayAccessibleName, dayStateClassName, resolveDayStateVisual, } from "./dayStates.js";
9
+ /** Internal month grid shared by Single/RangeDatePicker; not published from index.ts, so only reachable via a deep import. */
10
+ export const CalendarPanel = ({ currentMonth, setCurrentMonth, today, isRange, tempDate, tempRangeStart, tempRangeEnd, isSameDay, isBefore, isAfter, minDate, maxDate, disablePastDates, disableFutureDates, disableToday, onDaySelect, hoveredDate, onDayHover, renderWeekdays, dayStates, renderDayContent, }) => {
9
11
  const theme = useCustomTheme();
10
12
  const rangeBg = theme.colors.primary.opacity[16];
11
13
  const isViewingCurrentMonth = currentMonth.getFullYear() === today.getFullYear() &&
@@ -45,6 +47,7 @@ export const CalendarPanel = ({ currentMonth, setCurrentMonth, today, isRange, t
45
47
  },
46
48
  };
47
49
  const renderDays = () => {
50
+ var _a;
48
51
  const monthStart = startOfMonth(currentMonth);
49
52
  const monthEnd = endOfMonth(currentMonth);
50
53
  const startDate = startOfWeek(monthStart);
@@ -63,12 +66,17 @@ export const CalendarPanel = ({ currentMonth, setCurrentMonth, today, isRange, t
63
66
  const isSelected = !!(!isRange && tempDate && isSameDay(thisDay, tempDate));
64
67
  const isTentativeEnd = isEnd && isTentative;
65
68
  const circleSolid = !!(isSelected || (isRange && isStart) || (isEnd && !isTentative));
69
+ // Marking is not disabling: only the `disabled` state key blocks selection, and only
70
+ // because the caller asked for it by name.
71
+ const states = (_a = dayStates === null || dayStates === void 0 ? void 0 : dayStates(thisDay)) !== null && _a !== void 0 ? _a : [];
72
+ const stateVisual = states.length ? resolveDayStateVisual(states, theme.colors) : null;
66
73
  const disabled = !isInCurrentMonth ||
67
74
  !!(minDate && isBefore(thisDay, minDate)) ||
68
75
  !!(maxDate && isAfter(thisDay, maxDate)) ||
69
76
  !!(disablePastDates && isBefore(thisDay, today) && !isSameDay(thisDay, today)) ||
70
77
  !!(disableFutureDates && isAfter(thisDay, today) && !isSameDay(thisDay, today)) ||
71
- !!(disableToday && isToday);
78
+ !!(disableToday && isToday) ||
79
+ !!(stateVisual === null || stateVisual === void 0 ? void 0 : stateVisual.blocksSelection);
72
80
  // Connected range band painted on the cell background; start/end use a
73
81
  // half gradient so the band meets the solid day circle cleanly.
74
82
  let cellBg;
@@ -82,19 +90,21 @@ export const CalendarPanel = ({ currentMonth, setCurrentMonth, today, isRange, t
82
90
  else if (isEnd)
83
91
  cellBg = `linear-gradient(to right, ${rangeBg} 50%, transparent 50%)`;
84
92
  }
93
+ // Selection feedback outranks a state tint — the band is what tells the user what they picked.
94
+ if (!cellBg && (stateVisual === null || stateVisual === void 0 ? void 0 : stateVisual.cellBg))
95
+ cellBg = stateVisual.cellBg;
85
96
  // Solid fill (selected/range-endpoint) needs the ink checked against that
86
97
  // specific fill — `primary[500]` doesn't reliably clear AA for white text on
87
98
  // every brand/mode (same gap the solid Button variant already accounts for).
88
- const solidFill = theme.colors.primary[500];
89
- const solidHoverFill = theme.colors.primary[600];
99
+ const primarySolid = resolveFilledSurface(theme.colors.primary, theme.colors);
100
+ const solidFill = primarySolid.fill;
101
+ const solidHoverFill = primarySolid.hoverFill;
90
102
  const circleColor = circleSolid
91
- ? onFilled(solidFill, theme.colors.white, theme.colors.black)
103
+ ? primarySolid.color
92
104
  : isInCurrentMonth
93
105
  ? theme.colors.text[700]
94
106
  : theme.colors.gray[400];
95
- const circleHoverColor = circleSolid
96
- ? onFilled(solidHoverFill, theme.colors.white, theme.colors.black)
97
- : circleColor;
107
+ const circleHoverColor = circleSolid ? primarySolid.hoverColor : circleColor;
98
108
  const circleBorder = circleSolid
99
109
  ? "1px solid transparent"
100
110
  : isTentativeEnd
@@ -102,21 +112,33 @@ export const CalendarPanel = ({ currentMonth, setCurrentMonth, today, isRange, t
102
112
  : isToday
103
113
  ? `1px solid ${theme.colors.primary[300]}`
104
114
  : "1px solid transparent";
105
- days.push(_jsx(Box, { h: "2rem", display: "flex", alignItems: "center", justifyContent: "center", style: cellBg ? { background: cellBg } : undefined, children: _jsx(Box, { as: "button", type: "button", disabled: disabled, onClick: () => !disabled && onDaySelect(new Date(thisDay)), onMouseEnter: () => !disabled && (onDayHover === null || onDayHover === void 0 ? void 0 : onDayHover(new Date(thisDay))), w: "1.75rem", h: "1.75rem", borderRadius: "full", display: "flex", alignItems: "center", justifyContent: "center", fontSize: "0.8125rem", fontWeight: circleSolid ? 600 : 500, lineHeight: "1", cursor: disabled ? "not-allowed" : "pointer", bg: circleSolid ? solidFill : "transparent", color: circleColor, border: circleBorder, transition: "background 0.12s, color 0.12s", _hover: disabled
115
+ // A filled circle owns its own ink (checked against that fill by `onFilled`), so a state
116
+ // never repaints a selected day — it would undo that contrast guarantee.
117
+ const dayColor = !circleSolid && (stateVisual === null || stateVisual === void 0 ? void 0 : stateVisual.color) ? stateVisual.color : circleColor;
118
+ const dayBorder = !circleSolid && (stateVisual === null || stateVisual === void 0 ? void 0 : stateVisual.border) ? stateVisual.border : circleBorder;
119
+ const customContent = renderDayContent ? renderDayContent(thisDay, states) : null;
120
+ const markerColor = customContent == null && (stateVisual === null || stateVisual === void 0 ? void 0 : stateVisual.markerColor) ? stateVisual.markerColor : null;
121
+ const hasDayOverlay = customContent != null || markerColor != null;
122
+ const dayLabel = dayStates
123
+ ? dayAccessibleName(format(thisDay, "d MMMM yyyy"), states)
124
+ : format(thisDay, "d MMMM yyyy");
125
+ days.push(_jsx(Box, { role: "gridcell", h: "2rem", display: "flex", alignItems: "center", justifyContent: "center", style: cellBg ? { background: cellBg } : undefined, children: _jsxs(Box, { as: "button", type: "button", disabled: disabled, className: dayStates ? dayStateClassName(states) : undefined, "aria-label": dayLabel, "aria-selected": isSelected || isStart || isEnd || undefined, "aria-current": isToday ? "date" : undefined, onClick: () => !disabled && onDaySelect(new Date(thisDay)), onMouseEnter: () => !disabled && (onDayHover === null || onDayHover === void 0 ? void 0 : onDayHover(new Date(thisDay))), position: hasDayOverlay ? "relative" : undefined, w: "1.75rem", h: "1.75rem", borderRadius: "full", display: "flex", alignItems: "center", justifyContent: "center", fontSize: "0.8125rem", fontWeight: circleSolid ? 600 : 500, lineHeight: "1", cursor: disabled ? "not-allowed" : "pointer", bg: circleSolid ? solidFill : "transparent", color: dayColor, textDecoration: (stateVisual === null || stateVisual === void 0 ? void 0 : stateVisual.strikethrough) ? "line-through" : undefined, border: dayBorder, transition: "background 0.12s, color 0.12s", _hover: disabled
106
126
  ? {}
107
127
  : circleSolid
108
128
  ? { bg: solidHoverFill, color: circleHoverColor }
109
- : { bg: rangeBg }, children: format(thisDay, "d") }) }, thisDay.toString()));
129
+ : { bg: rangeBg }, children: [format(thisDay, "d"), hasDayOverlay && (_jsx(Box, { as: "span", className: `${DAY_CLASS}__content`, position: "absolute", left: 0, right: 0, bottom: "0.0625rem", display: "flex", alignItems: "flex-end", justifyContent: "center", lineHeight: "1", fontSize: "0.5rem",
130
+ // The overlay is decoration: clicks belong to the day button under it.
131
+ pointerEvents: "none", children: customContent !== null && customContent !== void 0 ? customContent : (_jsx(Box, { as: "span", className: `${DAY_CLASS}__marker`, w: "0.25rem", h: "0.25rem", borderRadius: "full", bg: markerColor })) }))] }) }, thisDay.toString()));
110
132
  day = addDays(day, 1);
111
133
  }
112
- rows.push(_jsx(Grid, { templateColumns: "repeat(7, 1fr)", gap: 0, children: days }, day.toString()));
134
+ rows.push(_jsx(Box, { role: "row", display: "grid", gridTemplateColumns: "repeat(7, 1fr)", gap: 0, children: days }, day.toString()));
113
135
  }
114
136
  return rows;
115
137
  };
116
- return (_jsxs(Box, { children: [_jsxs(Box, { display: "flex", alignItems: "center", justifyContent: "space-between", mb: 2, gap: 1, children: [_jsx(Button, { variant: "ghost", size: "xs", sx: { flexShrink: 0 }, onClick: () => setCurrentMonth((prev) => new Date(prev.getFullYear(), prev.getMonth() - 1, 1)), "aria-label": "Previous month", children: _jsx(ChevronLeftIcon, { size: 16 }) }), _jsxs(Box, { display: "flex", alignItems: "center", gap: 1.5, minW: 0, children: [_jsx(Box, { as: "select", value: currentMonth.getMonth(), onChange: (e) => {
138
+ return (_jsxs(Box, { children: [_jsxs(Box, { display: "flex", alignItems: "center", justifyContent: "space-between", mb: 2, gap: 1, children: [_jsx(Button, { variant: "ghost", size: "xs", sx: { flexShrink: 0 }, onClick: () => setCurrentMonth((prev) => new Date(prev.getFullYear(), prev.getMonth() - 1, 1)), "aria-label": "Previous month", children: _jsx(ChevronLeftIcon, { size: 16 }) }), _jsxs(Box, { display: "flex", alignItems: "center", gap: 1.5, minW: 0, children: [_jsx(Box, { as: "select", "aria-label": "Month", value: currentMonth.getMonth(), onChange: (e) => {
117
139
  const newMonth = parseInt(e.target.value, 10);
118
140
  setCurrentMonth((prev) => new Date(prev.getFullYear(), newMonth, 1));
119
- }, ...selectStyles, children: Array.from({ length: 12 }).map((_, i) => (_jsx("option", { value: i, children: format(new Date(2000, i, 1), "MMMM") }, i))) }), _jsx(Box, { as: "select", value: currentMonth.getFullYear(), onChange: (e) => {
141
+ }, ...selectStyles, children: Array.from({ length: 12 }).map((_, i) => (_jsx("option", { value: i, children: format(new Date(2000, i, 1), "MMMM") }, i))) }), _jsx(Box, { as: "select", "aria-label": "Year", value: currentMonth.getFullYear(), onChange: (e) => {
120
142
  const newYear = parseInt(e.target.value, 10);
121
143
  setCurrentMonth((prev) => new Date(newYear, prev.getMonth(), 1));
122
144
  }, ...selectStyles, children: Array.from({ length: 100 }).map((_, i) => {
@@ -127,6 +149,6 @@ export const CalendarPanel = ({ currentMonth, setCurrentMonth, today, isRange, t
127
149
  if (!disableToday) {
128
150
  onDaySelect(new Date(today));
129
151
  }
130
- }, "aria-label": "Today", sx: { fontSize: "0.7rem", px: 2, flexShrink: 0 }, isDisabled: disableToday, children: "Today" })), _jsx(Button, { variant: "ghost", size: "xs", sx: { flexShrink: 0 }, onClick: () => setCurrentMonth((prev) => new Date(prev.getFullYear(), prev.getMonth() + 1, 1)), "aria-label": "Next month", children: _jsx(ChevronRightIcon, { size: 16 }) })] })] }), renderWeekdays !== null && renderWeekdays !== void 0 ? renderWeekdays : (_jsx(Grid, { templateColumns: "repeat(7, 1fr)", gap: 0, mb: 1, children: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((day) => (_jsx(Box, { textAlign: "center", fontSize: "0.7rem", fontWeight: 600, textTransform: "uppercase", letterSpacing: "0.02em", color: theme.colors.textMuted, py: 1, children: day }, day))) })), _jsx(Box, { onMouseLeave: () => onDayHover === null || onDayHover === void 0 ? void 0 : onDayHover(null), children: renderDays() })] }));
152
+ }, "aria-label": "Today", sx: { fontSize: "0.7rem", px: 2, flexShrink: 0 }, isDisabled: disableToday, children: "Today" })), _jsx(Button, { variant: "ghost", size: "xs", sx: { flexShrink: 0 }, onClick: () => setCurrentMonth((prev) => new Date(prev.getFullYear(), prev.getMonth() + 1, 1)), "aria-label": "Next month", children: _jsx(ChevronRightIcon, { size: 16 }) })] })] }), _jsxs(Box, { role: "grid", "aria-label": "Calendar", children: [renderWeekdays !== null && renderWeekdays !== void 0 ? renderWeekdays : (_jsx(Box, { role: "row", display: "grid", gridTemplateColumns: "repeat(7, 1fr)", gap: 0, mb: 1, children: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((day) => (_jsx(Box, { role: "columnheader", textAlign: "center", fontSize: "0.7rem", fontWeight: 600, textTransform: "uppercase", letterSpacing: "0.02em", color: theme.colors.textMuted, py: 1, children: day }, day))) })), _jsx(Box, { onMouseLeave: () => onDayHover === null || onDayHover === void 0 ? void 0 : onDayHover(null), children: renderDays() })] })] }));
131
153
  };
132
154
  export default CalendarPanel;
@@ -18,6 +18,7 @@ const inferPickerTypeFromFormat = (formatStr) => {
18
18
  return "time";
19
19
  return "date";
20
20
  };
21
+ /** Legacy pre-split implementation, still used internally by Table's filter pane — new code should use ThemeDatePicker (exported as DatePicker). */
21
22
  export default function CustomDatePicker(props) {
22
23
  var _a, _b;
23
24
  const { id, name, label, isRequired, isInformation, informationMessage, error, errorMessage, helperText, placeholderText = "Select a date", dateFormat = "dd/MM/yyyy", pickerType, minDate, maxDate, disableFutureDates, disablePastDates, isRange, autoComplete = "off", disabled, width = "100%", disableToday = false, size = "md", } = props;