pixelize-design-library 2.3.21 → 2.4.1-beta.1
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.
- package/.claude/settings.local.json +51 -0
- package/.cursor/modules/account-management/MODULE.md +18 -0
- package/.cursor/modules/buttons/MODULE.md +34 -0
- package/.cursor/modules/cards/MODULE.md +42 -0
- package/.cursor/modules/charts/MODULE.md +28 -1
- package/.cursor/modules/common/MODULE.md +23 -0
- package/.cursor/modules/contact-auth/MODULE.md +6 -0
- package/.cursor/modules/data-display/MODULE.md +22 -0
- package/.cursor/modules/feedback/MODULE.md +18 -0
- package/.cursor/modules/inputs-basic/MODULE.md +29 -0
- package/.cursor/modules/inputs-date-file/MODULE.md +37 -1
- package/.cursor/modules/inputs-select/MODULE.md +12 -0
- package/.cursor/modules/inputs-toggle/MODULE.md +5 -0
- package/.cursor/modules/kanban/MODULE.md +8 -0
- package/.cursor/modules/layout-navigation/MODULE.md +186 -20
- package/.cursor/modules/overlays/MODULE.md +39 -0
- package/.cursor/modules/playground/MODULE.md +13 -0
- package/.cursor/modules/table/MODULE.md +63 -0
- package/.cursor/modules/theme/MODULE.md +304 -5
- package/.cursor/modules/utility-ui/MODULE.md +35 -0
- package/.cursor/modules/utils-hooks/MODULE.md +12 -0
- package/.cursor/plans/current.theme-tokens-dark-mode.md +77 -0
- package/.cursor/plans/current.theme-tokens-dark.md +155 -0
- package/CLAUDE.md +29 -3
- package/README.md +77 -10
- package/__mocks__/styleMock.js +8 -0
- package/coverage/clover.xml +405 -0
- package/coverage/coverage-final.json +16 -0
- package/coverage/coverage-summary.json +50 -0
- package/coverage/lcov-report/Button/Button.tsx.html +244 -0
- package/coverage/lcov-report/Button/index.html +116 -0
- package/coverage/lcov-report/Checkbox/Checkbox.tsx.html +433 -0
- package/coverage/lcov-report/Checkbox/index.html +116 -0
- package/coverage/lcov-report/Common/ErrorMessage.tsx.html +148 -0
- package/coverage/lcov-report/Common/FormLabel.tsx.html +331 -0
- package/coverage/lcov-report/Common/HelperText.tsx.html +124 -0
- package/coverage/lcov-report/Common/index.html +146 -0
- package/coverage/lcov-report/Components/Button/Button.tsx.html +244 -0
- package/coverage/lcov-report/Components/Button/index.html +116 -0
- package/coverage/lcov-report/Components/Checkbox/Checkbox.tsx.html +433 -0
- package/coverage/lcov-report/Components/Checkbox/index.html +116 -0
- package/coverage/lcov-report/Components/Common/ErrorMessage.tsx.html +148 -0
- package/coverage/lcov-report/Components/Common/FormLabel.tsx.html +331 -0
- package/coverage/lcov-report/Components/Common/HelperText.tsx.html +124 -0
- package/coverage/lcov-report/Components/Common/index.html +146 -0
- package/coverage/lcov-report/Components/CustomModulesTable/CustomModulesTable.tsx.html +712 -0
- package/coverage/lcov-report/Components/CustomModulesTable/DeleteModuleModal.tsx.html +343 -0
- package/coverage/lcov-report/Components/CustomModulesTable/EditModuleModal.tsx.html +313 -0
- package/coverage/lcov-report/Components/CustomModulesTable/index.html +146 -0
- package/coverage/lcov-report/Components/Divider/Divider.tsx.html +133 -0
- package/coverage/lcov-report/Components/Divider/index.html +116 -0
- package/coverage/lcov-report/Components/Dropdown/DropDown.tsx.html +994 -0
- package/coverage/lcov-report/Components/Dropdown/index.html +116 -0
- package/coverage/lcov-report/Components/EmptyState/EmptyState.tsx.html +466 -0
- package/coverage/lcov-report/Components/EmptyState/index.html +116 -0
- package/coverage/lcov-report/Components/Header/HeaderActions.tsx.html +373 -0
- package/coverage/lcov-report/Components/Header/index.html +116 -0
- package/coverage/lcov-report/Components/Input/TextInput.tsx.html +487 -0
- package/coverage/lcov-report/Components/Input/index.html +116 -0
- package/coverage/lcov-report/Components/Input/textInputIconSize.ts.html +205 -0
- package/coverage/lcov-report/Components/KanbanBoard/AccountCard.tsx.html +547 -0
- package/coverage/lcov-report/Components/KanbanBoard/AccountRow.tsx.html +190 -0
- package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/KanbanActions.tsx.html +247 -0
- package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/index.html +116 -0
- package/coverage/lcov-report/Components/KanbanBoard/KanbanBoard.tsx.html +3598 -0
- package/coverage/lcov-report/Components/KanbanBoard/MeasuredItem.tsx.html +283 -0
- package/coverage/lcov-report/Components/KanbanBoard/index.html +161 -0
- package/coverage/lcov-report/Components/OrganizationDetails/CreateOrgModal.tsx.html +511 -0
- package/coverage/lcov-report/Components/OrganizationDetails/DeleteOrgModal.tsx.html +334 -0
- package/coverage/lcov-report/Components/OrganizationDetails/OrganizationDetails.tsx.html +1519 -0
- package/coverage/lcov-report/Components/OrganizationDetails/index.html +146 -0
- package/coverage/lcov-report/Components/RolesPermission/DeleteRoleModal.tsx.html +328 -0
- package/coverage/lcov-report/Components/RolesPermission/RolesPermission.tsx.html +1732 -0
- package/coverage/lcov-report/Components/RolesPermission/index.html +131 -0
- package/coverage/lcov-report/Components/SearchSelect/SearchSelect.tsx.html +2575 -0
- package/coverage/lcov-report/Components/SearchSelect/SelectTruncatedLabel.tsx.html +202 -0
- package/coverage/lcov-report/Components/SearchSelect/index.html +146 -0
- package/coverage/lcov-report/Components/SearchSelect/searchSelectSize.ts.html +496 -0
- package/coverage/lcov-report/Components/Select/Select.tsx.html +361 -0
- package/coverage/lcov-report/Components/Select/index.html +116 -0
- package/coverage/lcov-report/Components/SideBar/components/OtherApps.tsx.html +562 -0
- package/coverage/lcov-report/Components/SideBar/components/OverflowTooltipText.tsx.html +346 -0
- package/coverage/lcov-report/Components/SideBar/components/index.html +116 -0
- package/coverage/lcov-report/Components/SignInActivityTable/SignInActivityTable.tsx.html +490 -0
- package/coverage/lcov-report/Components/SignInActivityTable/index.html +116 -0
- package/coverage/lcov-report/Components/Table/components/TableActions.tsx.html +595 -0
- package/coverage/lcov-report/Components/Table/components/TableBody.tsx.html +2212 -0
- package/coverage/lcov-report/Components/Table/components/TableGroupRow.tsx.html +358 -0
- package/coverage/lcov-report/Components/Table/components/TableLoading.tsx.html +358 -0
- package/coverage/lcov-report/Components/Table/components/index.html +161 -0
- package/coverage/lcov-report/Components/Table/settings/ManageColumns.tsx.html +856 -0
- package/coverage/lcov-report/Components/Table/settings/index.html +116 -0
- package/coverage/lcov-report/Components/Tag/Tag.styles.tsx.html +331 -0
- package/coverage/lcov-report/Components/Tag/Tag.tsx.html +256 -0
- package/coverage/lcov-report/Components/Tag/index.html +131 -0
- package/coverage/lcov-report/Components/ToolTip/ToolTip.tsx.html +286 -0
- package/coverage/lcov-report/Components/ToolTip/index.html +116 -0
- package/coverage/lcov-report/Components/UserDetails/AddUserModal.tsx.html +709 -0
- package/coverage/lcov-report/Components/UserDetails/ChangeRoleModal.tsx.html +505 -0
- package/coverage/lcov-report/Components/UserDetails/DeactivateConfirmModal.tsx.html +379 -0
- package/coverage/lcov-report/Components/UserDetails/UserDetails.tsx.html +1900 -0
- package/coverage/lcov-report/Components/UserDetails/index.html +161 -0
- package/coverage/lcov-report/EmptyState/EmptyState.tsx.html +466 -0
- package/coverage/lcov-report/EmptyState/index.html +116 -0
- package/coverage/lcov-report/Hooks/index.html +116 -0
- package/coverage/lcov-report/Hooks/usePreferences.ts.html +421 -0
- package/coverage/lcov-report/Input/TextInput.tsx.html +487 -0
- package/coverage/lcov-report/Input/index.html +131 -0
- package/coverage/lcov-report/Input/textInputIconSize.ts.html +205 -0
- package/coverage/lcov-report/KanbanBoard.tsx.html +3481 -0
- package/coverage/lcov-report/OrganizationDetails/CreateOrgModal.tsx.html +511 -0
- package/coverage/lcov-report/OrganizationDetails/DeleteOrgModal.tsx.html +334 -0
- package/coverage/lcov-report/OrganizationDetails/OrganizationDetails.tsx.html +1519 -0
- package/coverage/lcov-report/OrganizationDetails/index.html +146 -0
- package/coverage/lcov-report/RolesPermission/DeleteRoleModal.tsx.html +328 -0
- package/coverage/lcov-report/RolesPermission/RolesPermission.tsx.html +1732 -0
- package/coverage/lcov-report/RolesPermission/index.html +116 -0
- package/coverage/lcov-report/SearchSelect/SearchSelect.tsx.html +2575 -0
- package/coverage/lcov-report/SearchSelect/SelectTruncatedLabel.tsx.html +202 -0
- package/coverage/lcov-report/SearchSelect/index.html +146 -0
- package/coverage/lcov-report/SearchSelect/searchSelectSize.ts.html +496 -0
- package/coverage/lcov-report/Table/CompactSelect.tsx.html +379 -0
- package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +514 -0
- package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +373 -0
- package/coverage/lcov-report/Table/Components/Pagination.tsx.html +574 -0
- package/coverage/lcov-report/Table/Components/TableActions.tsx.html +574 -0
- package/coverage/lcov-report/Table/Components/TableBody.tsx.html +1027 -0
- package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +397 -0
- package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +1060 -0
- package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +361 -0
- package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +337 -0
- package/coverage/lcov-report/Table/Components/index.html +266 -0
- package/coverage/lcov-report/Table/Components/useDebounce.ts.html +178 -0
- package/coverage/lcov-report/Table/Components/useTable.ts.html +778 -0
- package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +1810 -0
- package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +178 -0
- package/coverage/lcov-report/Table/Table.tsx.html +1567 -0
- package/coverage/lcov-report/Table/TableProps.tsx.html +658 -0
- package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +619 -0
- package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +229 -0
- package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +532 -0
- package/coverage/lcov-report/Table/TableSettings/index.html +146 -0
- package/coverage/lcov-report/Table/TableToDo.tsx.html +973 -0
- package/coverage/lcov-report/Table/TextOperationControls.tsx.html +271 -0
- package/coverage/lcov-report/Table/filterTypes.ts.html +97 -0
- package/coverage/lcov-report/Table/index.html +176 -0
- package/coverage/lcov-report/Table/settings/ManageColumns.tsx.html +856 -0
- package/coverage/lcov-report/Table/settings/index.html +116 -0
- package/coverage/lcov-report/Tag/Tag.tsx.html +256 -0
- package/coverage/lcov-report/Tag/index.html +116 -0
- package/coverage/lcov-report/Theme/buildBrandTokens.ts.html +175 -0
- package/coverage/lcov-report/Theme/chartColorsFromTheme.ts.html +214 -0
- package/coverage/lcov-report/Theme/index.html +131 -0
- package/coverage/lcov-report/Theme/useCustomTheme.ts.html +100 -0
- package/coverage/lcov-report/ToolTip/ToolTip.tsx.html +286 -0
- package/coverage/lcov-report/ToolTip/index.html +116 -0
- package/coverage/lcov-report/UserDetails/AddUserModal.tsx.html +709 -0
- package/coverage/lcov-report/UserDetails/ChangeRoleModal.tsx.html +505 -0
- package/coverage/lcov-report/UserDetails/index.html +116 -0
- package/coverage/lcov-report/Utils/functions.ts.html +106 -0
- package/coverage/lcov-report/Utils/index.html +116 -0
- package/coverage/lcov-report/Utils/table.ts.html +1189 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +251 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov.info +981 -0
- package/dist/App.d.ts +4 -0
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +95 -0
- package/dist/Assets/defaultLogo.tsx +30 -0
- package/dist/Components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/Components/Accordion/Accordion.js +15 -12
- package/dist/Components/Accordion/accordionColors.d.ts +6 -0
- package/dist/Components/Accordion/accordionColors.d.ts.map +1 -0
- package/dist/Components/Accordion/accordionColors.js +20 -0
- package/dist/Components/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/Components/AlertDialog/AlertDialog.js +4 -1
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.d.ts.map +1 -1
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.js +5 -1
- package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.d.ts.map +1 -1
- package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.js +6 -4
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.d.ts.map +1 -1
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.js +5 -1
- package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.d.ts.map +1 -1
- package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +5 -1
- package/dist/Components/Button/Button.styles.d.ts.map +1 -1
- package/dist/Components/Button/Button.styles.js +100 -47
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.d.ts.map +1 -1
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +11 -3
- package/dist/Components/Card/PaymentCard/PaymentCard.d.ts.map +1 -1
- package/dist/Components/Card/PaymentCard/PaymentCard.js +17 -12
- package/dist/Components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/Components/Checkbox/Checkbox.js +2 -1
- package/dist/Components/Common/ErrorComponent.d.ts.map +1 -1
- package/dist/Components/Common/ErrorComponent.js +7 -3
- package/dist/Components/Common/ErrorMessage.d.ts.map +1 -1
- package/dist/Components/Common/ErrorMessage.js +7 -1
- package/dist/Components/Common/FormLabel.d.ts.map +1 -1
- package/dist/Components/Common/FormLabel.js +7 -1
- package/dist/Components/Common/Label.d.ts.map +1 -1
- package/dist/Components/Common/Label.js +4 -2
- package/dist/Components/Common/fieldStyles.d.ts.map +1 -1
- package/dist/Components/Common/fieldStyles.js +3 -1
- package/dist/Components/CopyButton/CopyButton.d.ts.map +1 -1
- package/dist/Components/CopyButton/CopyButton.js +14 -6
- package/dist/Components/CustomModulesTable/CustomModulesTable.d.ts.map +1 -1
- package/dist/Components/CustomModulesTable/CustomModulesTable.js +9 -6
- package/dist/Components/CustomModulesTable/DeleteModuleModal.d.ts.map +1 -1
- package/dist/Components/CustomModulesTable/DeleteModuleModal.js +2 -2
- package/dist/Components/CustomModulesTable/EditModuleModal.d.ts.map +1 -1
- package/dist/Components/CustomModulesTable/EditModuleModal.js +2 -2
- package/dist/Components/DatePicker/CalendarPanel.js +1 -1
- package/dist/Components/DatePicker/DatePicker.js +1 -1
- package/dist/Components/DatePicker/RangeDatePicker.d.ts.map +1 -1
- package/dist/Components/DatePicker/RangeDatePicker.js +1 -1
- package/dist/Components/DatePicker/SingleDatePicker.d.ts.map +1 -1
- package/dist/Components/DatePicker/SingleDatePicker.js +1 -1
- package/dist/Components/DatePicker/TimeOnlyPicker.d.ts.map +1 -1
- package/dist/Components/DatePicker/TimeOnlyPicker.js +3 -1
- package/dist/Components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/Components/Drawer/Drawer.js +4 -1
- package/dist/Components/Dropdown/DropDown.js +5 -5
- package/dist/Components/Editor/Editor.d.ts.map +1 -1
- package/dist/Components/Editor/Editor.js +32 -2
- package/dist/Components/Editor/joditThemeVars.d.ts +21 -0
- package/dist/Components/Editor/joditThemeVars.d.ts.map +1 -0
- package/dist/Components/Editor/joditThemeVars.js +70 -0
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.d.ts.map +1 -1
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +5 -1
- package/dist/Components/EmptyState/EmptyState.js +3 -3
- package/dist/Components/FieldSelectModal/FieldSelectModal.d.ts.map +1 -1
- package/dist/Components/FieldSelectModal/FieldSelectModal.js +4 -2
- package/dist/Components/FilePreview/FilePreview.d.ts.map +1 -1
- package/dist/Components/FilePreview/FilePreview.js +7 -1
- package/dist/Components/FileUpload/FileUpload.js +4 -4
- package/dist/Components/FileUploader/FileUploader.d.ts.map +1 -1
- package/dist/Components/FileUploader/FileUploader.js +7 -2
- package/dist/Components/FilterSidebar/FilterSidebar.d.ts.map +1 -1
- package/dist/Components/FilterSidebar/FilterSidebar.js +166 -142
- package/dist/Components/FilterSidebar/filterHoverStyle.d.ts +12 -0
- package/dist/Components/FilterSidebar/filterHoverStyle.d.ts.map +1 -0
- package/dist/Components/FilterSidebar/filterHoverStyle.js +14 -0
- package/dist/Components/Form/FormWrapper.js +2 -2
- package/dist/Components/Header/Header.d.ts +17 -0
- package/dist/Components/Header/Header.d.ts.map +1 -1
- package/dist/Components/Header/Header.js +34 -6
- package/dist/Components/Header/HeaderActions.d.ts.map +1 -1
- package/dist/Components/Header/HeaderActions.js +3 -2
- package/dist/Components/Header/components/desktopMenu.d.ts.map +1 -1
- package/dist/Components/Header/components/desktopMenu.js +21 -5
- package/dist/Components/Input/Input/Input.d.ts.map +1 -1
- package/dist/Components/Input/Input/Input.js +6 -2
- package/dist/Components/Input/Switch/InputSwitch.d.ts.map +1 -1
- package/dist/Components/Input/Switch/InputSwitch.js +4 -2
- package/dist/Components/Input/TextInput.styles.d.ts.map +1 -1
- package/dist/Components/Input/TextInput.styles.js +6 -1
- package/dist/Components/InputTextArea/InputTextArea.style.d.ts.map +1 -1
- package/dist/Components/InputTextArea/InputTextArea.style.js +4 -1
- package/dist/Components/KanbanBoard/AccountCard.js +4 -4
- package/dist/Components/LazyWrapper/LazyWrapper.js +1 -2
- package/dist/Components/Modal/Modal.d.ts.map +1 -1
- package/dist/Components/Modal/Modal.js +4 -1
- package/dist/Components/MoreItems/MoreItems.d.ts.map +1 -1
- package/dist/Components/MoreItems/MoreItems.js +10 -4
- package/dist/Components/MultiSelect/MultiSelect.d.ts.map +1 -1
- package/dist/Components/MultiSelect/MultiSelect.js +5 -2
- package/dist/Components/NavigationBar/NavigationBar.d.ts.map +1 -1
- package/dist/Components/NavigationBar/NavigationBar.js +8 -2
- package/dist/Components/NoteTextArea/NoteTextArea.d.ts.map +1 -1
- package/dist/Components/NoteTextArea/NoteTextArea.js +5 -2
- package/dist/Components/Notification/Notification.d.ts.map +1 -1
- package/dist/Components/Notification/Notification.js +9 -5
- package/dist/Components/NumberInput/NumberInput.styles.d.ts.map +1 -1
- package/dist/Components/NumberInput/NumberInput.styles.js +4 -1
- package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts.map +1 -1
- package/dist/Components/OrgSwitcher/OrgSwitcher.js +14 -7
- package/dist/Components/OrganizationDetails/CreateOrgModal.d.ts.map +1 -1
- package/dist/Components/OrganizationDetails/CreateOrgModal.js +1 -1
- package/dist/Components/OrganizationDetails/DeleteOrgModal.js +2 -2
- package/dist/Components/OrganizationDetails/OrganizationDetails.js +11 -11
- package/dist/Components/PdfViewer/PdfViewer.js +1 -2
- package/dist/Components/PinInput/PinInput.d.ts.map +1 -1
- package/dist/Components/PinInput/PinInput.js +5 -1
- package/dist/Components/PinInputs/PinInputs.d.ts.map +1 -1
- package/dist/Components/PinInputs/PinInputs.js +3 -1
- package/dist/Components/ProductCard/ProductCard.js +1 -1
- package/dist/Components/ProductCard/ProductPrice.d.ts.map +1 -1
- package/dist/Components/ProductCard/ProductPrice.js +7 -4
- package/dist/Components/ProductCard/ProductReview.d.ts.map +1 -1
- package/dist/Components/ProductCard/ProductReview.js +7 -3
- package/dist/Components/ProductCard/ProductTags.js +1 -1
- package/dist/Components/ProductDetails/ProductDtlPrice.d.ts.map +1 -1
- package/dist/Components/ProductDetails/ProductDtlPrice.js +4 -1
- package/dist/Components/ProductDetails/ProductImageSlider.js +4 -4
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.d.ts.map +1 -1
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +10 -7
- package/dist/Components/Reorder/Reorder.js +2 -1
- package/dist/Components/RolesPermission/DeleteRoleModal.d.ts.map +1 -1
- package/dist/Components/RolesPermission/DeleteRoleModal.js +4 -2
- package/dist/Components/RolesPermission/RolesPermission.js +6 -6
- package/dist/Components/SearchSelect/SearchSelect.d.ts.map +1 -1
- package/dist/Components/SearchSelect/SearchSelect.js +4 -4
- package/dist/Components/Select/Select.styles.d.ts.map +1 -1
- package/dist/Components/Select/Select.styles.js +4 -1
- package/dist/Components/SelectSearch/SelectSearch.d.ts.map +1 -1
- package/dist/Components/SelectSearch/SelectSearch.js +5 -3
- package/dist/Components/SideBar/SecondaryBar.d.ts.map +1 -1
- package/dist/Components/SideBar/SecondaryBar.js +14 -3
- package/dist/Components/SideBar/SideBar.d.ts.map +1 -1
- package/dist/Components/SideBar/SideBar.js +18 -4
- package/dist/Components/SideBar/components/MenuItemBox.d.ts.map +1 -1
- package/dist/Components/SideBar/components/MenuItemBox.js +13 -9
- package/dist/Components/SideBar/components/MenuPopoverContent.d.ts.map +1 -1
- package/dist/Components/SideBar/components/MenuPopoverContent.js +7 -2
- package/dist/Components/SideBar/sidebarAccentColors.d.ts +21 -0
- package/dist/Components/SideBar/sidebarAccentColors.d.ts.map +1 -0
- package/dist/Components/SideBar/sidebarAccentColors.js +36 -0
- package/dist/Components/SignInActivityTable/SignInActivityTable.d.ts.map +1 -1
- package/dist/Components/SignInActivityTable/SignInActivityTable.js +7 -6
- package/dist/Components/StageProgress/StageProgress.d.ts.map +1 -1
- package/dist/Components/StageProgress/StageProgress.js +9 -4
- package/dist/Components/StageProgress/StageProgressProps.d.ts.map +1 -1
- package/dist/Components/StageProgress/StageProgressProps.js +13 -4
- package/dist/Components/StageProgress/StepperStage.js +1 -1
- package/dist/Components/Switch/Switch.d.ts.map +1 -1
- package/dist/Components/Switch/Switch.js +5 -3
- package/dist/Components/Table/Table.d.ts.map +1 -1
- package/dist/Components/Table/Table.js +9 -9
- package/dist/Components/Table/TableProps.d.ts +1 -0
- package/dist/Components/Table/TableProps.d.ts.map +1 -1
- package/dist/Components/Table/components/HeaderActions.d.ts.map +1 -1
- package/dist/Components/Table/components/HeaderActions.js +2 -1
- package/dist/Components/Table/components/TableActions.js +1 -1
- package/dist/Components/Table/components/TableBody.d.ts.map +1 -1
- package/dist/Components/Table/components/TableBody.js +21 -15
- package/dist/Components/Table/components/TableHeader.d.ts.map +1 -1
- package/dist/Components/Table/components/TableHeader.js +7 -4
- package/dist/Components/Table/components/tableRowHoverStyle.d.ts +13 -0
- package/dist/Components/Table/components/tableRowHoverStyle.d.ts.map +1 -0
- package/dist/Components/Table/components/tableRowHoverStyle.js +26 -0
- package/dist/Components/Table/filters/CompactSelect.d.ts.map +1 -1
- package/dist/Components/Table/filters/CompactSelect.js +4 -1
- package/dist/Components/Table/filters/LeftFilterPane.d.ts.map +1 -1
- package/dist/Components/Table/filters/LeftFilterPane.js +5 -4
- package/dist/Components/Tag/Tag.styles.d.ts.map +1 -1
- package/dist/Components/Tag/Tag.styles.js +21 -8
- package/dist/Components/Timeline/Timeline.d.ts.map +1 -1
- package/dist/Components/Timeline/Timeline.js +18 -17
- package/dist/Components/Toaster/Toaster.d.ts.map +1 -1
- package/dist/Components/Toaster/Toaster.js +8 -5
- package/dist/Components/Toggle/TableToggle.js +2 -2
- package/dist/Components/ToolTip/ToolTip.d.ts.map +1 -1
- package/dist/Components/ToolTip/ToolTip.js +14 -2
- package/dist/Components/Trail/EditableCell.js +1 -1
- package/dist/Components/UpgradeButton/UpgradeButton.d.ts.map +1 -1
- package/dist/Components/UpgradeButton/UpgradeButton.js +9 -4
- package/dist/Components/UserDetails/AddUserModal.d.ts.map +1 -1
- package/dist/Components/UserDetails/AddUserModal.js +1 -1
- package/dist/Components/UserDetails/ChangeRoleModal.js +2 -2
- package/dist/Components/UserDetails/DeactivateConfirmModal.d.ts.map +1 -1
- package/dist/Components/UserDetails/DeactivateConfirmModal.js +5 -2
- package/dist/Components/UserDetails/UserDetails.d.ts.map +1 -1
- package/dist/Components/UserDetails/UserDetails.js +15 -8
- package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.d.ts.map +1 -1
- package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +3 -1
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts.map +1 -1
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +5 -1
- package/dist/Layout.d.ts +3 -0
- package/dist/Layout.js +286 -0
- package/dist/Pages/TInput.d.ts +3 -0
- package/dist/Pages/TInput.d.ts.map +1 -0
- package/dist/Pages/TInput.js +20 -0
- package/dist/Pages/accordion.d.ts +3 -0
- package/dist/Pages/accordion.d.ts.map +1 -0
- package/dist/Pages/accordion.js +21 -0
- package/dist/Pages/alertdialog.d.ts +3 -0
- package/dist/Pages/alertdialog.d.ts.map +1 -0
- package/dist/Pages/alertdialog.js +53 -0
- package/dist/Pages/button.d.ts +3 -0
- package/dist/Pages/button.d.ts.map +1 -0
- package/dist/Pages/button.js +32 -0
- package/dist/Pages/card.d.ts +3 -0
- package/dist/Pages/card.d.ts.map +1 -0
- package/dist/Pages/card.js +102 -0
- package/dist/Pages/chart.d.ts +4 -0
- package/dist/Pages/chart.d.ts.map +1 -0
- package/dist/Pages/chart.js +25 -0
- package/dist/Pages/checkbox.d.ts +3 -0
- package/dist/Pages/checkbox.d.ts.map +1 -0
- package/dist/Pages/checkbox.js +11 -0
- package/dist/Pages/contactForm.d.ts +3 -0
- package/dist/Pages/contactForm.d.ts.map +1 -0
- package/dist/Pages/contactForm.js +15 -0
- package/dist/Pages/customModulesTable.d.ts +4 -0
- package/dist/Pages/customModulesTable.d.ts.map +1 -0
- package/dist/Pages/customModulesTable.js +25 -0
- package/dist/Pages/datePick.d.ts +3 -0
- package/dist/Pages/datePick.d.ts.map +1 -0
- package/dist/Pages/datePick.js +49 -0
- package/dist/Pages/drawer.d.ts +3 -0
- package/dist/Pages/drawer.d.ts.map +1 -0
- package/dist/Pages/drawer.js +53 -0
- package/dist/Pages/dropdown.d.ts +3 -0
- package/dist/Pages/dropdown.d.ts.map +1 -0
- package/dist/Pages/dropdown.js +21 -0
- package/dist/Pages/editor.d.ts +3 -0
- package/dist/Pages/editor.d.ts.map +1 -0
- package/dist/Pages/editor.js +13 -0
- package/dist/Pages/feedback.d.ts +2 -0
- package/dist/Pages/feedback.d.ts.map +1 -0
- package/dist/Pages/feedback.js +12 -0
- package/dist/Pages/fileUpload.d.ts +2 -0
- package/dist/Pages/fileUpload.d.ts.map +1 -0
- package/dist/Pages/fileUpload.js +36 -0
- package/dist/Pages/input.d.ts +3 -0
- package/dist/Pages/input.d.ts.map +1 -0
- package/dist/Pages/input.js +48 -0
- package/dist/Pages/kanbanboard.d.ts +3 -0
- package/dist/Pages/kanbanboard.d.ts.map +1 -0
- package/dist/Pages/kanbanboard.js +182 -0
- package/dist/Pages/modal.d.ts +3 -0
- package/dist/Pages/modal.d.ts.map +1 -0
- package/dist/Pages/modal.js +61 -0
- package/dist/Pages/multiSelect.d.ts +3 -0
- package/dist/Pages/multiSelect.d.ts.map +1 -0
- package/dist/Pages/multiSelect.js +22 -0
- package/dist/Pages/noteArea.d.ts +3 -0
- package/dist/Pages/noteArea.d.ts.map +1 -0
- package/dist/Pages/noteArea.js +26 -0
- package/dist/Pages/notification.d.ts +3 -0
- package/dist/Pages/notification.d.ts.map +1 -0
- package/dist/Pages/notification.js +37 -0
- package/dist/Pages/numberInput.d.ts +3 -0
- package/dist/Pages/numberInput.d.ts.map +1 -0
- package/dist/Pages/numberInput.js +16 -0
- package/dist/Pages/orgSwitcher.d.ts +4 -0
- package/dist/Pages/orgSwitcher.d.ts.map +1 -0
- package/dist/Pages/orgSwitcher.js +36 -0
- package/dist/Pages/organizationDetails.d.ts +4 -0
- package/dist/Pages/organizationDetails.d.ts.map +1 -0
- package/dist/Pages/organizationDetails.js +64 -0
- package/dist/Pages/photoViewer.d.ts +3 -0
- package/dist/Pages/photoViewer.d.ts.map +1 -0
- package/dist/Pages/photoViewer.js +12 -0
- package/dist/Pages/pinInputs.d.ts +3 -0
- package/dist/Pages/pinInputs.d.ts.map +1 -0
- package/dist/Pages/pinInputs.js +11 -0
- package/dist/Pages/productCaard.d.ts +3 -0
- package/dist/Pages/productCaard.d.ts.map +1 -0
- package/dist/Pages/productCaard.js +311 -0
- package/dist/Pages/productDetailCard.d.ts +3 -0
- package/dist/Pages/productDetailCard.d.ts.map +1 -0
- package/dist/Pages/productDetailCard.js +78 -0
- package/dist/Pages/productFilter.d.ts +3 -0
- package/dist/Pages/productFilter.d.ts.map +1 -0
- package/dist/Pages/productFilter.js +148 -0
- package/dist/Pages/progressbar.d.ts +3 -0
- package/dist/Pages/progressbar.d.ts.map +1 -0
- package/dist/Pages/progressbar.js +11 -0
- package/dist/Pages/radioButton.d.ts +3 -0
- package/dist/Pages/radioButton.d.ts.map +1 -0
- package/dist/Pages/radioButton.js +18 -0
- package/dist/Pages/rolesPermission.d.ts +4 -0
- package/dist/Pages/rolesPermission.d.ts.map +1 -0
- package/dist/Pages/rolesPermission.js +144 -0
- package/dist/Pages/search.d.ts +3 -0
- package/dist/Pages/search.d.ts.map +1 -0
- package/dist/Pages/search.js +21 -0
- package/dist/Pages/searchSelect.d.ts +3 -0
- package/dist/Pages/searchSelect.d.ts.map +1 -0
- package/dist/Pages/searchSelect.js +97 -0
- package/dist/Pages/select.d.ts +3 -0
- package/dist/Pages/select.d.ts.map +1 -0
- package/dist/Pages/select.js +20 -0
- package/dist/Pages/selectSearch.d.ts +3 -0
- package/dist/Pages/selectSearch.d.ts.map +1 -0
- package/dist/Pages/selectSearch.js +58 -0
- package/dist/Pages/signInActivityTable.d.ts +4 -0
- package/dist/Pages/signInActivityTable.d.ts.map +1 -0
- package/dist/Pages/signInActivityTable.js +17 -0
- package/dist/Pages/skeleton.d.ts +3 -0
- package/dist/Pages/skeleton.d.ts.map +1 -0
- package/dist/Pages/skeleton.js +12 -0
- package/dist/Pages/stageProgress.d.ts +4 -0
- package/dist/Pages/stageProgress.d.ts.map +1 -0
- package/dist/Pages/stageProgress.js +31 -0
- package/dist/Pages/switch.d.ts +3 -0
- package/dist/Pages/switch.d.ts.map +1 -0
- package/dist/Pages/switch.js +17 -0
- package/dist/Pages/table.d.ts +3 -0
- package/dist/Pages/table.d.ts.map +1 -0
- package/dist/Pages/table.js +182 -0
- package/dist/Pages/tag.d.ts +3 -0
- package/dist/Pages/tag.d.ts.map +1 -0
- package/dist/Pages/tag.js +27 -0
- package/dist/Pages/textArea.d.ts +3 -0
- package/dist/Pages/textArea.d.ts.map +1 -0
- package/dist/Pages/textArea.js +14 -0
- package/dist/Pages/tier1.d.ts +4 -0
- package/dist/Pages/tier1.d.ts.map +1 -0
- package/dist/Pages/tier1.js +86 -0
- package/dist/Pages/timeline.d.ts +3 -0
- package/dist/Pages/timeline.d.ts.map +1 -0
- package/dist/Pages/timeline.js +73 -0
- package/dist/Pages/tooltip.d.ts +3 -0
- package/dist/Pages/tooltip.d.ts.map +1 -0
- package/dist/Pages/tooltip.js +11 -0
- package/dist/Pages/toster.d.ts +3 -0
- package/dist/Pages/toster.d.ts.map +1 -0
- package/dist/Pages/toster.js +53 -0
- package/dist/Pages/upgradeButton.d.ts +4 -0
- package/dist/Pages/upgradeButton.d.ts.map +1 -0
- package/dist/Pages/upgradeButton.js +17 -0
- package/dist/Pages/userDetails.d.ts +4 -0
- package/dist/Pages/userDetails.d.ts.map +1 -0
- package/dist/Pages/userDetails.js +79 -0
- package/dist/Pages/verifyEmail.d.ts +3 -0
- package/dist/Pages/verifyEmail.d.ts.map +1 -0
- package/dist/Pages/verifyEmail.js +17 -0
- package/dist/Theme/chakra/common.web.d.ts +171 -0
- package/dist/Theme/chakra/common.web.d.ts.map +1 -0
- package/dist/Theme/chakra/common.web.js +21 -0
- package/dist/Theme/chakra/componentStyles.d.ts +13 -0
- package/dist/Theme/chakra/componentStyles.d.ts.map +1 -0
- package/dist/Theme/chakra/componentStyles.js +88 -0
- package/dist/Theme/chakra/createBrandTheme.d.ts +18 -0
- package/dist/Theme/chakra/createBrandTheme.d.ts.map +1 -0
- package/dist/Theme/chakra/createBrandTheme.js +78 -0
- package/dist/Theme/chakra/fonts.web.d.ts +42 -0
- package/dist/Theme/chakra/fonts.web.d.ts.map +1 -0
- package/dist/Theme/chakra/fonts.web.js +15 -0
- package/dist/Theme/index.d.ts +29 -8
- package/dist/Theme/index.d.ts.map +1 -1
- package/dist/Theme/index.js +54 -22
- package/dist/Theme/provider/PixelizeThemeProvider.d.ts +36 -0
- package/dist/Theme/provider/PixelizeThemeProvider.d.ts.map +1 -0
- package/dist/Theme/provider/PixelizeThemeProvider.js +91 -0
- package/dist/Theme/provider/ThemeSwitcher.d.ts +8 -0
- package/dist/Theme/provider/ThemeSwitcher.d.ts.map +1 -0
- package/dist/Theme/provider/ThemeSwitcher.js +99 -0
- package/dist/Theme/provider/colorModeStorage.d.ts +10 -0
- package/dist/Theme/provider/colorModeStorage.d.ts.map +1 -0
- package/dist/Theme/provider/colorModeStorage.js +106 -0
- package/dist/Theme/provider/index.d.ts +6 -0
- package/dist/Theme/provider/index.d.ts.map +1 -0
- package/dist/Theme/provider/index.js +9 -0
- package/dist/Theme/provider/useThemeMode.d.ts +3 -0
- package/dist/Theme/provider/useThemeMode.d.ts.map +1 -0
- package/dist/Theme/provider/useThemeMode.js +13 -0
- package/dist/Theme/themeProps.d.ts +10 -373
- package/dist/Theme/themeProps.d.ts.map +1 -1
- package/dist/Theme/tokens/brands/emerald/palette.dark.d.ts +7 -0
- package/dist/Theme/tokens/brands/emerald/palette.dark.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/emerald/palette.dark.js +13 -0
- package/dist/Theme/tokens/brands/emerald/palette.light.d.ts +375 -0
- package/dist/Theme/tokens/brands/emerald/palette.light.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/emerald/palette.light.js +135 -0
- package/dist/Theme/tokens/brands/index.d.ts +28 -0
- package/dist/Theme/tokens/brands/index.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/index.js +93 -0
- package/dist/Theme/tokens/brands/lavender/palette.dark.d.ts +7 -0
- package/dist/Theme/tokens/brands/lavender/palette.dark.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/lavender/palette.dark.js +13 -0
- package/dist/Theme/tokens/brands/lavender/palette.light.d.ts +375 -0
- package/dist/Theme/tokens/brands/lavender/palette.light.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/lavender/palette.light.js +316 -0
- package/dist/Theme/tokens/brands/meadow/palette.dark.d.ts +7 -0
- package/dist/Theme/tokens/brands/meadow/palette.dark.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/meadow/palette.dark.js +13 -0
- package/dist/Theme/tokens/brands/meadow/palette.light.d.ts +375 -0
- package/dist/Theme/tokens/brands/meadow/palette.light.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/meadow/palette.light.js +133 -0
- package/dist/Theme/tokens/brands/radiant/palette.dark.d.ts +7 -0
- package/dist/Theme/tokens/brands/radiant/palette.dark.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/radiant/palette.dark.js +13 -0
- package/dist/Theme/tokens/brands/radiant/palette.light.d.ts +375 -0
- package/dist/Theme/tokens/brands/radiant/palette.light.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/radiant/palette.light.js +135 -0
- package/dist/Theme/tokens/brands/rosewood/palette.dark.d.ts +7 -0
- package/dist/Theme/tokens/brands/rosewood/palette.dark.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/rosewood/palette.dark.js +13 -0
- package/dist/Theme/tokens/brands/rosewood/palette.light.d.ts +375 -0
- package/dist/Theme/tokens/brands/rosewood/palette.light.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/rosewood/palette.light.js +139 -0
- package/dist/Theme/tokens/brands/skyline/palette.dark.d.ts +7 -0
- package/dist/Theme/tokens/brands/skyline/palette.dark.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/skyline/palette.dark.js +13 -0
- package/dist/Theme/tokens/brands/skyline/palette.light.d.ts +375 -0
- package/dist/Theme/tokens/brands/skyline/palette.light.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/skyline/palette.light.js +133 -0
- package/dist/Theme/tokens/brands/slate/palette.dark.d.ts +7 -0
- package/dist/Theme/tokens/brands/slate/palette.dark.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/slate/palette.dark.js +13 -0
- package/dist/Theme/tokens/brands/slate/palette.light.d.ts +375 -0
- package/dist/Theme/tokens/brands/slate/palette.light.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/slate/palette.light.js +137 -0
- package/dist/Theme/tokens/brands/storefront/palette.dark.d.ts +7 -0
- package/dist/Theme/tokens/brands/storefront/palette.dark.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/storefront/palette.dark.js +13 -0
- package/dist/Theme/tokens/brands/storefront/palette.light.d.ts +375 -0
- package/dist/Theme/tokens/brands/storefront/palette.light.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/storefront/palette.light.js +127 -0
- package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts +204 -0
- package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/zinc/palette.dark.js +204 -0
- package/dist/Theme/tokens/brands/zinc/palette.light.d.ts +375 -0
- package/dist/Theme/tokens/brands/zinc/palette.light.d.ts.map +1 -0
- package/dist/Theme/tokens/brands/zinc/palette.light.js +383 -0
- package/dist/Theme/tokens/builders/accentText.d.ts +56 -0
- package/dist/Theme/tokens/builders/accentText.d.ts.map +1 -0
- package/dist/Theme/tokens/builders/accentText.js +92 -0
- package/dist/Theme/tokens/builders/buildBrandTokens.d.ts +16 -0
- package/dist/Theme/tokens/builders/buildBrandTokens.d.ts.map +1 -0
- package/dist/Theme/tokens/builders/buildBrandTokens.js +33 -0
- package/dist/Theme/tokens/builders/buildDarkPalette.d.ts +23 -0
- package/dist/Theme/tokens/builders/buildDarkPalette.d.ts.map +1 -0
- package/dist/Theme/tokens/builders/buildDarkPalette.js +282 -0
- package/dist/Theme/tokens/builders/chartColorsFromTheme.d.ts +17 -0
- package/dist/Theme/tokens/builders/chartColorsFromTheme.d.ts.map +1 -0
- package/dist/Theme/tokens/builders/chartColorsFromTheme.js +26 -0
- package/dist/Theme/tokens/builders/color.d.ts +50 -0
- package/dist/Theme/tokens/builders/color.d.ts.map +1 -0
- package/dist/Theme/tokens/builders/color.js +156 -0
- package/dist/Theme/tokens/builders/index.d.ts +6 -0
- package/dist/Theme/tokens/builders/index.d.ts.map +1 -0
- package/dist/Theme/tokens/builders/index.js +21 -0
- package/dist/Theme/tokens/index.d.ts +15 -0
- package/dist/Theme/tokens/index.d.ts.map +1 -0
- package/dist/Theme/tokens/index.js +30 -0
- package/dist/Theme/tokens/primitives/breakpoints.d.ts +9 -0
- package/dist/Theme/tokens/primitives/breakpoints.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/breakpoints.js +10 -0
- package/dist/Theme/tokens/primitives/index.d.ts +10 -0
- package/dist/Theme/tokens/primitives/index.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/index.js +27 -0
- package/dist/Theme/tokens/primitives/letterSpacings.d.ts +10 -0
- package/dist/Theme/tokens/primitives/letterSpacings.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/letterSpacings.js +11 -0
- package/dist/Theme/tokens/primitives/lineHeights.d.ts +19 -0
- package/dist/Theme/tokens/primitives/lineHeights.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/lineHeights.js +20 -0
- package/dist/Theme/tokens/primitives/radii.d.ts +13 -0
- package/dist/Theme/tokens/primitives/radii.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/radii.js +14 -0
- package/dist/Theme/tokens/primitives/shadows.d.ts +16 -0
- package/dist/Theme/tokens/primitives/shadows.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/shadows.js +17 -0
- package/dist/Theme/tokens/primitives/sizes.d.ts +63 -0
- package/dist/Theme/tokens/primitives/sizes.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/sizes.js +39 -0
- package/dist/Theme/tokens/primitives/space.d.ts +34 -0
- package/dist/Theme/tokens/primitives/space.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/space.js +35 -0
- package/dist/Theme/tokens/primitives/typography.d.ts +73 -0
- package/dist/Theme/tokens/primitives/typography.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/typography.js +43 -0
- package/dist/Theme/tokens/primitives/zIndices.d.ts +17 -0
- package/dist/Theme/tokens/primitives/zIndices.d.ts.map +1 -0
- package/dist/Theme/tokens/primitives/zIndices.js +18 -0
- package/dist/Theme/tokens/types.d.ts +116 -0
- package/dist/Theme/tokens/types.d.ts.map +1 -0
- package/dist/Theme/tokens/types.js +8 -0
- package/dist/Utils/table.d.ts +9 -2
- package/dist/Utils/table.d.ts.map +1 -1
- package/dist/Utils/table.js +23 -7
- package/dist/bootstrap.d.ts +2 -0
- package/dist/bootstrap.js +16 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -1
- package/package.json +2 -2
|
@@ -2,14 +2,313 @@
|
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Nine brand presets (lavender, meadow, radiant, skyline, slate, emerald, rosewood, storefront, zinc),
|
|
6
|
+
each with a **light and dark palette**; `useCustomTheme`, the legacy `withTheme` HOC,
|
|
7
|
+
`PixelizeThemeProvider` + `useThemeMode` + `ThemeSwitcher`, and the pure token layer shared with the
|
|
8
|
+
mobile design library.
|
|
6
9
|
|
|
7
10
|
## Key paths
|
|
8
11
|
|
|
9
|
-
- `src/Theme
|
|
10
|
-
-
|
|
12
|
+
- `src/Theme/tokens/` — **pure, platform-agnostic** (no Chakra/React/CSS imports)
|
|
13
|
+
- `types.ts` — `PaletteProps`, `ThemeName`, `ColorMode`, `ColorScale`
|
|
14
|
+
- `primitives/` — space, sizes, radii, shadows, typography, breakpoints, zIndices
|
|
15
|
+
- `builders/` — `color.ts` (hex/HSL/WCAG math), `buildDarkPalette.ts`
|
|
16
|
+
- `brands/<brand>/palette.light.ts` + `palette.dark.ts`
|
|
17
|
+
- `src/Theme/chakra/` — **web-only** binding: `createBrandTheme`, `componentStyles`, `fonts.web.ts`
|
|
18
|
+
- `src/Theme/provider/` — `PixelizeThemeProvider`, `useThemeMode`, `ThemeSwitcher`
|
|
19
|
+
- `src/Theme/useCustomTheme.ts` — hook read by ~127 components
|
|
20
|
+
- `src/Theme/index.ts` — `ThemesList` (light) + `brandThemes` (light+dark)
|
|
21
|
+
- `src/withTheme.tsx`
|
|
22
|
+
- Exports: `useCustomTheme`, `ThemesList`, `withTheme`, `PixelizeThemeProvider`, `useThemeMode`,
|
|
23
|
+
`ThemeSwitcher`, `brandThemes`, `lightPalettes`, `darkPalettes`, `palettes`, `themeNames`,
|
|
24
|
+
`buildDarkPalette`
|
|
25
|
+
- Also exported (Wave D follow-up, see below): the WCAG contrast helpers `isDarkCanvas`,
|
|
26
|
+
`onFilled`, `onGradient`, `accentTextOnCanvas`, `pickAccentText`, `AA_NORMAL_TEXT`,
|
|
27
|
+
`DARK_CANVAS_LUMINANCE` (`builders/accentText.ts`) and the pure color-math primitives
|
|
28
|
+
`relativeLuminance`, `contrastRatio`, `hexToRgb`, `hexToRgba`, `compositeOver`, `rgbToHex`,
|
|
29
|
+
`rgbToHsl`, `hslToRgb`, `hexToHsl`, `hslToHex`, `withLightness`, `mix` + types `Rgb`/`Hsl`
|
|
30
|
+
(`builders/color.ts`)
|
|
31
|
+
|
|
32
|
+
## How dark mode works
|
|
33
|
+
|
|
34
|
+
Dark mode **swaps which palette the theme carries** (`brandThemes[brand][light|dark]`) rather than
|
|
35
|
+
using Chakra `semanticTokens` / `_dark`. This is deliberate: components interpolate **resolved hex**
|
|
36
|
+
from `useCustomTheme()`, and `componentStyles` variants are functions of `({ theme })` — so both
|
|
37
|
+
follow the active palette with **zero per-component edits**.
|
|
38
|
+
|
|
39
|
+
Dark palettes are **derived** from each brand's own light palette by `buildDarkPalette`, so brand hue
|
|
40
|
+
carries through. Structural ramps (background/text/border/…) are rebuilt at explicit lightness
|
|
41
|
+
targets around the brand hue; utility hues are reversed; accents are **adaptively lifted** to
|
|
42
|
+
maximize canvas contrast without ever regressing the white-on-accent label below
|
|
43
|
+
`min(4.5, lightModeContrast)`.
|
|
11
44
|
|
|
12
45
|
## Key rules
|
|
13
46
|
|
|
14
|
-
-
|
|
15
|
-
|
|
47
|
+
- **`tokens/` must never import Chakra, React, or CSS** — it is copy-paste portable to the mobile
|
|
48
|
+
design library. Web-only concerns live in `chakra/`.
|
|
49
|
+
- **Never hardcode a hex in a component** — read from `useCustomTheme()`, or it is stuck in light mode.
|
|
50
|
+
- **`colors.white` is a foreground token** (the label on a filled button) and stays white in dark.
|
|
51
|
+
For a white *surface* use `colors.background[50]` — identical `#ffffff` in light, dark-aware.
|
|
52
|
+
- `withTheme` stays **light-only** so existing consumer apps are visually unchanged; dark is opt-in
|
|
53
|
+
via `PixelizeThemeProvider` (defaults to **`system`**).
|
|
54
|
+
- `src/index.ts` is **append-only** — `src/index.publicApi.test.ts` asserts every previously
|
|
55
|
+
published name still exists (consumer contract guard).
|
|
56
|
+
- Chart colors from theme via `chartColorsFromTheme`.
|
|
57
|
+
|
|
58
|
+
## Recent changes (WCAG contrast + dark-mode pass)
|
|
59
|
+
|
|
60
|
+
- **Badge** is now themed in `chakra/componentStyles.ts` (no `Components/Badge/` family — style
|
|
61
|
+
config lives here). `solid`/`subtle` variants guard non-hex `colorScheme` swatches (Chakra's
|
|
62
|
+
built-in `blackAlpha`/`whiteAlpha` are `rgba()` strings, not hex — `isHexColor()` falls back to
|
|
63
|
+
`swatch?.[800]` instead of throwing). `subtle` also verifies `contrastRatio(accent, bg) >= 4.5`
|
|
64
|
+
before using the brand-hue accent from `accentTextOnCanvas`, else falls back to `onFilled()`
|
|
65
|
+
(provably-always-AA) — fixes a near-miss (measured 4.42, needs 4.5) on the yellow scale in dark mode.
|
|
66
|
+
- `tokens/builders/accentText.ts`: `pickAccentText`/`accentTextOnCanvas` now take
|
|
67
|
+
`primary: ColorScale | undefined` and return a safe white/black fallback instead of throwing
|
|
68
|
+
when the scale is missing (regression: some call sites had dropped defensive `?.` chaining).
|
|
69
|
+
New `onFilled(fill, white, black)` export — provably clears AA against any fill; used by Badge.
|
|
70
|
+
- 4x `brands/{emerald,meadow,radiant,rosewood}/palette.light.ts`: `gray[500]` (the de-facto
|
|
71
|
+
muted-text token, ~43 call sites) retuned to clear AA (>=4.5) against every `backgroundColor`
|
|
72
|
+
surface actually rendered as a `bg=` today (main/secondary/light/subtle), while staying
|
|
73
|
+
lighter than `gray[600]` (ramp order preserved). See "Known gaps" below for what this did
|
|
74
|
+
**not** cover.
|
|
75
|
+
- `tokens/builders/chartColorsFromTheme.ts`: removed unused `chartTooltipBackground`/
|
|
76
|
+
`chartTooltipForeground` exports (dead code — no callers after `ApexLineChart.tsx` stopped
|
|
77
|
+
using them in this same pass).
|
|
78
|
+
|
|
79
|
+
## Wave D — WCAG follow-up pass
|
|
80
|
+
|
|
81
|
+
- `gray[500]` retune (same methodology as the four brands above) extended to
|
|
82
|
+
`brands/{lavender,skyline,slate}/palette.light.ts` — these three had the identical unfixed gap
|
|
83
|
+
(lavender failed all 4 `backgroundColor` surfaces at 3.96-4.45; skyline/slate failed
|
|
84
|
+
`secondary`/`subtle`), missed by the earlier pass.
|
|
85
|
+
- **Gradient stop retune (7 brands)** — every brand's `gradient: {from, to}` token had a stop pair
|
|
86
|
+
where neither pure white nor pure black cleared AA at both ends. Darkened the lighter stop per
|
|
87
|
+
brand (user-approved trade-off — this is the only Wave D change that visibly shifts brand
|
|
88
|
+
identity, not just a muted/secondary token) so white gradient-button text clears AA at both ends.
|
|
89
|
+
`accentText.ts` gained `onGradient(from, to, white, black)` — picks `onFilled` against whichever
|
|
90
|
+
stop has the higher `relativeLuminance` (the harder case); safe **once** the gradient's own stops
|
|
91
|
+
are tuned this way, not guaranteed for an arbitrary caller-overridden gradient (see
|
|
92
|
+
`account-management` MODULE.md — `UpgradeButton`'s `gradient` prop).
|
|
93
|
+
- **`error`/`red[500]` AA gap** — architecturally different from `gray[500]`: a saturated red's low
|
|
94
|
+
WCAG luminance weight makes a single-value retune mathematically impossible within the
|
|
95
|
+
`error600` lightness boundary. Fixed instead by routing every hardcoded `red[500]`/`error[500]`
|
|
96
|
+
text call site through `accentTextOnCanvas`, which walks to `error[700]` (clears 5.46-6.21 across
|
|
97
|
+
all 7 brands) automatically. No palette edits needed — `red`/`semantic.error` are identical
|
|
98
|
+
across brands (only `lavender` defines them; others inherit via spread).
|
|
99
|
+
- **`pickAccentText` hardened against a partial `ColorScale`** — the rung-walk in
|
|
100
|
+
`accentText.ts` previously assumed every caller supplies all of rungs 500-900 and crashed
|
|
101
|
+
(`hexToRgb(undefined)`) on a sparse scale (a real risk for any consumer with a hand-built or
|
|
102
|
+
test-mock theme, not just this repo's own tests). Now treats a missing rung as "doesn't clear
|
|
103
|
+
AA" and keeps walking; falls back to the nearest defined rung, then to safe white/black if the
|
|
104
|
+
scale is empty.
|
|
105
|
+
|
|
106
|
+
## Wave D — QA-driven follow-up (user ran a Chrome-extension-based contrast/AA pass against the live playground)
|
|
107
|
+
|
|
108
|
+
- **Margin-safety correction on the 7-brand gradient retune above.** Direct re-measurement found
|
|
109
|
+
every brand's darkened stop cleared AA by **less than 0.02** (e.g. 4.502 vs the 4.5 cutoff) —
|
|
110
|
+
too thin to trust against rounding/rendering variance, and a systemic gap across all 7 brands'
|
|
111
|
+
first-pass tuning (the search stopped the instant AA was crossed, with no margin built in).
|
|
112
|
+
Rebuilt every brand's thin-margin stop(s) with a **safe ≥4.6 target** instead of the bare 4.5
|
|
113
|
+
cutoff, using the same HSL-preserving-hue/saturation darkening search. Final margins verified
|
|
114
|
+
live via Playwright: 4.581–4.834 across all 7 brands. Established going forward: **a contrast
|
|
115
|
+
value that clears AA by <0.02 should be treated as failing**, not passing.
|
|
116
|
+
- **`Modal`/`AlertDialog`/`Drawer` dark-mode surface bug** — see overlays / layout-navigation
|
|
117
|
+
MODULE.md. Root cause: these hardcode Chakra's literal `colors.white` baseStyle (gated behind
|
|
118
|
+
`_dark`), unlike `Card`, which already routes through the patched `chakra-body-bg`/
|
|
119
|
+
`chakra-body-text` semantic tokens — the QA report's claim that `Card` was also broken did not
|
|
120
|
+
reproduce under direct Playwright measurement **at the time**, in a fresh browser context. See
|
|
121
|
+
the correction below: `Card` *can* break, conditionally, and the real fix was one level up
|
|
122
|
+
from any single component.
|
|
123
|
+
- **`Card`/`ProfileCard` dark-mode surface bug (user-reported via screenshot, blocking) — corrects
|
|
124
|
+
the claim above.** The claim that this app's theme-swap dark mode "never triggers" Chakra's
|
|
125
|
+
`_dark:` selector was wrong: `_dark:` maps to `.chakra-ui-dark &` / `[data-theme=dark] &`, and
|
|
126
|
+
Chakra's own `ColorModeProvider` (which every `ChakraProvider` wraps internally, regardless of
|
|
127
|
+
this app's separate palette-swap mechanism) sets that class/attribute from its **own**
|
|
128
|
+
`localStorage["chakra-ui-color-mode"]` key — entirely separate from this app's own
|
|
129
|
+
`"pixelize-theme"` storage key — and that stored value **wins over** `theme.config
|
|
130
|
+
.initialColorMode: "light"` on every load if present. A fresh browser context has no such
|
|
131
|
+
stored value, so the earlier Playwright measurement never saw the bug; a browser where
|
|
132
|
+
Chakra's native color mode was ever toggled to `"dark"` on this origin (by this app or an
|
|
133
|
+
earlier version of it) does, permanently, until that one key is cleared. Confirmed live:
|
|
134
|
+
seeding `localStorage["chakra-ui-color-mode"] = "dark"` reproduces the exact reported symptom —
|
|
135
|
+
`Card`'s default `"elevated"` variant carries Chakra's own un-migrated
|
|
136
|
+
`_dark: { bg: "colors.gray.700" }`, and this app's dark ramp runs dark→light, so `gray[700]`
|
|
137
|
+
resolves to L≈79% (a light, brand-tinted gray) instead of the correct dark `chakra-body-bg`.
|
|
138
|
+
`ProfileCard` hits the identical path (also a bare `ChakraCard` with no explicit `bg=`).
|
|
139
|
+
`PricingCard`/`PaymentCard` were never affected — they set an explicit `bg={theme.colors
|
|
140
|
+
.background[50]}` themselves, which wins over the variant's `_dark:` block regardless.
|
|
141
|
+
**Fixed at the root, not per-component:** `PixelizeThemeProvider` now passes a
|
|
142
|
+
`colorModeManager` to `ChakraProvider` that always returns `"light"` and never persists,
|
|
143
|
+
severing Chakra's native color mode from `localStorage` entirely — so no un-migrated `_dark:`
|
|
144
|
+
block anywhere (present or future, not just `Card`) can fire regardless of what's stored.
|
|
145
|
+
Verified live via Playwright: reproduced the bug by seeding the stale key, confirmed the fix
|
|
146
|
+
neutralizes it (`Card` background back to the correct dark canvas color in both the fresh and
|
|
147
|
+
stale-storage cases).
|
|
148
|
+
- Same "text-as-scale-rung fails AA against its canvas" pattern (established by the `error`/
|
|
149
|
+
`red[500]` fix above) applied to two more call sites found by the QA pass: `Notification`'s
|
|
150
|
+
time-elapsed orange icon/text (feedback module) and `FileUploader`'s blue accent text
|
|
151
|
+
(inputs-date-file module).
|
|
152
|
+
- **`gray[500]` margin widen (`slate`/`rosewood`), code-review catch:** the same "<0.02 margin
|
|
153
|
+
should be treated as failing" rule established above for the gradient stops also applied to
|
|
154
|
+
the earlier `gray[500]` retune — `slate` measured 4.509 and `rosewood` 4.516 against their
|
|
155
|
+
`secondary` `backgroundColor` surface, both too thin. Darkened each by ~0.7 lightness points
|
|
156
|
+
(hue/saturation preserved, same HSL search as the gradient fix) to a safe ≥4.6 margin against
|
|
157
|
+
all four surfaces; the other 5 brands' `gray[500]` already cleared ≥4.6 and needed no change.
|
|
158
|
+
All 7 brands' `gray[500]` comment updated to state the ≥4.6 standard explicitly.
|
|
159
|
+
- **`FormError` (`chakra/componentStyles.ts`), code-review catch:** Chakra's stock
|
|
160
|
+
`FormErrorMessage`/`FormErrorIcon` both hardcode `colors.red.500` via a shared `--form-error-color`
|
|
161
|
+
CSS var — the library's `FormError` override (added earlier this pass) fixed the `text` anatomy
|
|
162
|
+
part via `accentTextOnCanvas` but missed the `icon` part, which stayed on Chakra's raw
|
|
163
|
+
`red.500` and kept the same AA gap for any consumer rendering `<FormErrorIcon/>`. Both parts now
|
|
164
|
+
share one computed `color`.
|
|
165
|
+
|
|
166
|
+
## Wave D — public export of the WCAG contrast helpers (user request: "export anything useful for consumers")
|
|
167
|
+
|
|
168
|
+
- `accentText.ts`'s helpers and `color.ts`'s pure color math were internal-only (imported by
|
|
169
|
+
~25 components + `chakra/componentStyles.ts`) despite being generic, dependency-free, and
|
|
170
|
+
already the load-bearing logic behind this whole pass's AA fixes. Promoted to `src/index.ts`
|
|
171
|
+
as additive exports (append-only guard test updated) so a consumer building a custom component
|
|
172
|
+
against this library's `ColorScale`/`PaletteProps` tokens can reuse the same contrast logic
|
|
173
|
+
instead of re-deriving WCAG math themselves.
|
|
174
|
+
- **Deliberately NOT exported:** `pickActiveAccent` (`Header.tsx`, this pass's BLOCKING fix) — it's
|
|
175
|
+
a narrow, Header-specific non-text-accent picker (hardcoded `ACTIVE_ACCENT_TARGET = 3`, a search
|
|
176
|
+
order tuned for one component's underline accent), not a general-purpose public utility.
|
|
177
|
+
- `accentTextOnCanvas`'s search-direction assumption (canvas darkness implies a dark-mode-shaped
|
|
178
|
+
scale — see the Header bug in layout-navigation MODULE.md) holds for every one of its ~25
|
|
179
|
+
internal call sites because both the scale and the canvas always come from the SAME active
|
|
180
|
+
theme mode there. A consumer passing an unrelated custom scale/canvas pairing could still hit
|
|
181
|
+
the same edge case Header did; `pickAccentText(primary, canvas, mode)` (explicit mode, no
|
|
182
|
+
guessing) is the safer of the two for that case and is exported alongside it for that reason.
|
|
183
|
+
|
|
184
|
+
## Wave B — 8th brand (`storefront`), cross-repo coordination with the mobile design library
|
|
185
|
+
|
|
186
|
+
- Added `brands/storefront/palette.{light,dark}.ts`, registered in `types.ts` (`ThemeName`),
|
|
187
|
+
`brands/index.ts` (`lightPalettes`/`darkPalettes`/`palettes`/`themeNames`), `Theme/index.ts`
|
|
188
|
+
(`ThemesList`/`brandThemes`), and `provider/colorModeStorage.ts`'s `VALID_BRANDS` allowlist (a
|
|
189
|
+
hand-maintained literal array, **not** derived from `themeNames` — easy to miss; a stale stored
|
|
190
|
+
`brand: "storefront"` would otherwise be silently rejected back to the default brand).
|
|
191
|
+
- Anchor `primary[500] = "#004f4b"` (deep spruce teal, H≈177° S=100% L≈15.5%) — decided in
|
|
192
|
+
cross-repo coordination with the sibling `Mobile-Components` design library, which owns and has
|
|
193
|
+
already shipped the separate `zinc` brand (the true shadcn-clone) across all 8 brands; do not
|
|
194
|
+
conflate the two — `storefront` is this repo's own brand, `zinc` is mobile's.
|
|
195
|
+
- Structural ramps (`gray`, `background`, `border`, `boxborder`, `table.hover`, `backgroundColor`,
|
|
196
|
+
`sidebar.background`) were derived by **rehuing `emerald`'s exact ramp** (same lightness/
|
|
197
|
+
saturation curve per stop, hue rotated to storefront's 177°) rather than a fresh hand-tune —
|
|
198
|
+
emerald is the closest existing single-hue teal brand, so this reuses an already-AA-verified
|
|
199
|
+
shape instead of guessing new numbers. `primary` itself uses a custom lightness curve (500 pinned
|
|
200
|
+
to the exact anchor hex; 50-400 and 600-900 solved so the anchor sits proportionally where the
|
|
201
|
+
curve requires — emerald's own anchor is far lighter (L=33.7) than storefront's (L=15.5), so its
|
|
202
|
+
literal curve doesn't transplant; only the *shape* (fractional position + step ratios) carries
|
|
203
|
+
over). `gradient` mirrors emerald's "same hue, darker `to` stop" pattern, tuned to a ≥4.6 white-
|
|
204
|
+
text-contrast margin at both stops per the Wave D "don't trust a <0.02 margin" rule (measured
|
|
205
|
+
4.98 / 6.96).
|
|
206
|
+
- **Zero hand-tuning needed post-registration** — unlike the 7 existing brands (which each needed a
|
|
207
|
+
`gray[500]`/gradient retune pass, see Wave D above), `storefront` passed every existing
|
|
208
|
+
`it.each(themeNames)` AA assertion (`accentText.test.ts`, `buildDarkPalette.test.ts`, etc.) on the
|
|
209
|
+
first run, because the rehue-from-emerald approach inherited an already-AA-clean shape. Full gate
|
|
210
|
+
green: `tsc --noEmit` clean, `jest` 791/791 (65 suites), lint clean.
|
|
211
|
+
- Dark palette is the plain `buildDarkPalette(light)` derivation (matches `slate`'s pattern) — no
|
|
212
|
+
bespoke override needed. The generic derivation's `accentLightnessDelta` cap (which assumes a
|
|
213
|
+
white button label) is architecturally incompatible with a true "near-white primary in dark mode"
|
|
214
|
+
requirement, but `storefront` doesn't need that — that requirement belongs to mobile's `zinc`.
|
|
215
|
+
|
|
216
|
+
## Wave E — ThemeSwitcher brand-list `MenuList` dark-mode fix (user-reported, blocking)
|
|
217
|
+
|
|
218
|
+
`ThemeSwitcher.tsx`'s brand-picker (`BrandMenu` + `MenuVariant`) `MenuList` had no explicit `bg=`,
|
|
219
|
+
so in dark mode it fell through to Chakra's `Menu` baseStyle hardcoded `--menu-bg: #fff` (gated
|
|
220
|
+
behind `_dark`, same bug class as `NavigationBar`/`ButtonGroupIcon`'s `MenuList` fix above) — a
|
|
221
|
+
white dropdown with only the checked item's checkmark-opacity change to distinguish rows, so every
|
|
222
|
+
unselected brand name read as near-white-on-white. Fixed with the same pattern: both `bg=` (colors
|
|
223
|
+
the list's own box) **and** `sx={{ "--menu-bg": ... }}` (colors the var other pseudo-states read)
|
|
224
|
+
on both `MenuList`s, plus an explicit `color=` for the item text (was inheriting ambient
|
|
225
|
+
`text[900]`, now reads `menuColor` from the same theme-derived palette). New `useSwitcherColors()`
|
|
226
|
+
hook centralizes all of `ThemeSwitcher`'s token reads. Verified: `tsc`/lint clean, all 63 existing
|
|
227
|
+
`Theme/provider` tests still pass (no behavior regression, dark-mode-only fix).
|
|
228
|
+
|
|
229
|
+
## Wave F — 9th brand (`zinc`), ported from the mobile design library's shadcn clone
|
|
230
|
+
|
|
231
|
+
User request: "add zinc theme exactly same as mobile," then "both mobile and web's zinc theme
|
|
232
|
+
should me similar to shadcn theme as close as possible" — so the goal is maximum fidelity to
|
|
233
|
+
mobile's `zinc` (itself "the shadcn look"), adapted only where web's own invariants require it.
|
|
234
|
+
|
|
235
|
+
- Added `brands/zinc/palette.{light,dark}.ts`, registered in `types.ts` (`ThemeName`),
|
|
236
|
+
`brands/index.ts`, `Theme/index.ts` (`ThemesList`/`brandThemes`), and
|
|
237
|
+
`provider/colorModeStorage.ts`'s `VALID_BRANDS` allowlist — same 4-file wiring as `storefront`
|
|
238
|
+
(Wave B).
|
|
239
|
+
- **Light palette**: ported verbatim from `Mobile-Components/src/theme/tokens/brands/zinc/
|
|
240
|
+
palette.light.ts` — no web-side changes needed, passed every existing AA sweep unmodified.
|
|
241
|
+
- **Dark palette — INVERTS the primary**, unlike every other brand: the filled button is
|
|
242
|
+
near-white (`#e4e4e7`) carrying a near-black label (`#18181b`, 13.96:1), the opposite of every
|
|
243
|
+
other brand's "lifted-but-still-dark" dark primary. `primary`/`secondary`/the numeric
|
|
244
|
+
`background` ramp/`text`/`header`/`gray`/`border`/`boxborder`/`placeholder`/`disabled`/`table`
|
|
245
|
+
are pinned as literals ported verbatim from mobile to preserve the authentic shadcn look;
|
|
246
|
+
`accentText` is recomputed against the overridden `primary` (not spread from the generic
|
|
247
|
+
derivation, which would be stale).
|
|
248
|
+
- **`backgroundColor` (named surfaces) and `sidebar` intentionally do NOT port mobile's literal
|
|
249
|
+
values** — the one deliberate deviation from "exactly same as mobile," found by running zinc
|
|
250
|
+
through web's existing `it.each(themeNames)` test sweeps:
|
|
251
|
+
- Mobile's zinc dark `backgroundColor` maps its 12 named surfaces onto only 5 distinct hexes
|
|
252
|
+
(e.g. `quaternary`/`medium`/`neutral` are all `#18181b`), which fails web's
|
|
253
|
+
`darkSurfaces.test.ts` invariant that every named surface is a visually distinct elevation
|
|
254
|
+
step (`ALIASED_SURFACES = ["light","tertiary"]` is the only sanctioned exception, shared by
|
|
255
|
+
every brand). Retuning each collision by hand would be arbitrary; instead `backgroundColor`
|
|
256
|
+
falls through to `...derived` (the same generic `buildDarkPalette` staircase every other
|
|
257
|
+
brand gets) — zinc's hue (~240°, near-zero saturation) survives the derivation as a
|
|
258
|
+
visually-identical cool neutral, just with distinct steps.
|
|
259
|
+
- Mobile's zinc dark `sidebar` is separately tuned from its light `sidebar` — but every web
|
|
260
|
+
brand's dark `sidebar` is identical to its light `sidebar` (`buildDarkPalette.ts`: "sidebar is
|
|
261
|
+
already near-black in light mode, so it needs no inversion"), an invariant the SideBar
|
|
262
|
+
dark-mode accent fix (this repo, same branch) depends on. `sidebar` falls through to
|
|
263
|
+
`derived.sidebar` instead, matching every other brand.
|
|
264
|
+
- **Fixed 3 test assertions that hardcoded a white filled-button label**, a bar only zinc's
|
|
265
|
+
inverted primary fails (every other brand's dark primary still carries a white label, so this
|
|
266
|
+
was never exercised before): `accentText.test.ts` ("dark filled-button label never regresses
|
|
267
|
+
below its light-mode contrast") and `buildDarkPalette.test.ts` (2 assertions: "never lifts the
|
|
268
|
+
accent past what light theme already ships" + "keeps solid-button labels readable against the
|
|
269
|
+
accent fill"). All 3 now check via `onFilled(fill, white, black)` — whichever ink clears AA —
|
|
270
|
+
instead of assuming white specifically, which is the correct brand-agnostic contract (the same
|
|
271
|
+
one components already use) and a strictly more correct check, not a loosened one.
|
|
272
|
+
- **Fixed a pre-existing bug in `ButtonGroupIcon.tsx`'s gradient variant** (2 spots, both hardcoded
|
|
273
|
+
`theme.colors.white` for the label), independent of zinc but only caught because zinc's near-
|
|
274
|
+
white gradient stops (originally `{from:"#fafafa", to:"#a1a1aa"}`) make the failure visible —
|
|
275
|
+
same bug class already fixed elsewhere per `Button.styles.ts`'s own comment ("was a hardcoded
|
|
276
|
+
`theme.colors.white` — fails AA for any colorScheme whose [500] doesn't clear white contrast").
|
|
277
|
+
Now uses `onGradient(from, to, white, black)`, matching the established pattern.
|
|
278
|
+
- Full gate green: `tsc --noEmit` clean, lint clean, `jest` 902/902 (72 suites, up from 869/72 pre-
|
|
279
|
+
zinc — 33 new tests from the added `zinc` sweep, zero regressions).
|
|
280
|
+
|
|
281
|
+
**2026-07-18 — dark primary corrected to shadcn's actual value.** The original port used `#fafafa`
|
|
282
|
+
for the dark-mode filled primary, approximated as "near-white" rather than checked against shadcn's
|
|
283
|
+
real registry. Fetched shadcn's live zinc theme (`ui.shadcn.com/r/colors/zinc.json`, OKLCH tokens)
|
|
284
|
+
and converted precisely: shadcn's dark `--primary` is `oklch(0.92 0.004 286.32)` → `#e4e4e7`
|
|
285
|
+
(zinc-200), one shade dimmer than pure white — `#fafafa` is actually shadcn's `--foreground`
|
|
286
|
+
(default dark-mode body text), not `--primary`. Updated `PRIMARY_500` and the dependent
|
|
287
|
+
`gradient.from` (now references the constant instead of a duplicated literal) in both this repo and
|
|
288
|
+
Mobile-Components; `accentText`/`boxShadow.primary` recompute automatically since they already
|
|
289
|
+
derive from `PRIMARY_500` rather than being spread from the generic derivation. Light mode's
|
|
290
|
+
primary (`#18181b`) already matched shadcn's `--primary` exactly — no change there. Verified every
|
|
291
|
+
other light/dark role against the same live registry (`background`, `card`, `muted`/`secondary`/
|
|
292
|
+
`accent`, `border`/`input`, `muted-foreground`) — all already matched shadcn within rounding.
|
|
293
|
+
`fg.default`/`text[500]` (light `#18181b` vs shadcn `--foreground` `#09090b`) and the dark `bg.surface`
|
|
294
|
+
elevation step (`#0e0e11` vs shadcn's card `#18181b`) were deliberately left as-is: both are
|
|
295
|
+
shared-shape/shared-role values that would require restructuring the 10-step ramp or the
|
|
296
|
+
cross-brand `roles/bg.surface` mapping, not a zinc-only anchor swap — out of scope for a
|
|
297
|
+
change scoped to "don't break anything."
|
|
298
|
+
|
|
299
|
+
## Known gaps
|
|
300
|
+
|
|
301
|
+
- `KanbanBoard.tsx` uses `var(--chakra-colors-gray-300)`, but `cssVarPrefix` is `"ck"` — that
|
|
302
|
+
variable has never resolved (pre-existing; out of scope for the dark-mode task).
|
|
303
|
+
- `backgroundColor.muted`/`accent`/`tertiary`/`quaternary`/etc. are **not** covered by the
|
|
304
|
+
`gray[500]` retune above — 0-1 live usages in the whole codebase, and the one live
|
|
305
|
+
`backgroundColor.muted` usage pairs with `gray[600]` text, not `gray[500]`. Intentionally
|
|
306
|
+
deferred, not fixed.
|
|
307
|
+
- **Found during Wave D live re-verification, NOT fixed (outside the QA report's scope, flagging
|
|
308
|
+
for a follow-up pass):** the SideBar's notification-count badge ("10") measures ≈1.2-1.6:1
|
|
309
|
+
against its translucent primary-tinted pill background — fails badly. The playground's own
|
|
310
|
+
`/header` demo bar's raw-Chakra "Logout" ghost button measures ≈3.5:1 — same root cause as the
|
|
311
|
+
already-documented Header Bug B ("Login" button, layout-navigation MODULE.md): a raw Chakra
|
|
312
|
+
`Button` picking up the library's ghost-variant ink tuned for the page canvas, not Header's own
|
|
313
|
+
dark bar. Neither was in the QA report or its established follow-up patterns, so left untouched
|
|
314
|
+
rather than silently expanding this pass's scope.
|
|
@@ -13,3 +13,38 @@ Generic standalone UI helpers: CopyButton, ScrollToTop, LazyWrapper, MoreItems,
|
|
|
13
13
|
- FilePreview also exports `FilePreviewTrigger`; StageProgress also exports `StageItem` (StepperStage is internal)
|
|
14
14
|
- LazyWrapper wraps lazy/Suspense loading; ScrollToTop is a scroll-position helper — keep them framework-agnostic (props in, events out)
|
|
15
15
|
- Single-file components (CopyButton, ScrollToTop, LazyWrapper, PdfViewer, FieldSelectModal) have no colocated Props file — types are inline
|
|
16
|
+
|
|
17
|
+
## Dark mode
|
|
18
|
+
|
|
19
|
+
CopyButton, EmptyState, FieldSelectModal, FilePreview, LazyWrapper, MoreItems, PdfViewer,
|
|
20
|
+
ProfilePhotoViewer and StageProgress take their colors from `useCustomTheme()` or from Chakra scale
|
|
21
|
+
tokens (FilePreviewTrigger's `bg="gray.100"`) — both resolve against the swapped palette. The `#…` literals
|
|
22
|
+
left in FilePreview / StageProgressProps are `??` fallbacks behind optional token reads — never live
|
|
23
|
+
colors. `blackAlpha.*` scrims are deliberate: a scrim stays black in both modes.
|
|
24
|
+
|
|
25
|
+
- **Portalled overlay surfaces must pin their own `bg`.** Chakra drives Modal/Popover panels off its
|
|
26
|
+
own default (`colors.white`, or `gray.700` under `_dark` — a *light* grey in our derived dark
|
|
27
|
+
palettes), which does not track the swapped palette. FieldSelectModal, FilePreview and MoreItems
|
|
28
|
+
each set `bg={theme.colors.background[50]}`; MoreItems' `PopoverArrow` needs its own `bg` too
|
|
29
|
+
(that prop is what sets `--popper-arrow-bg`).
|
|
30
|
+
- StageProgress colors resolve through `resolveStagePalette(theme, colorScheme)` in
|
|
31
|
+
`StageProgressProps.tsx` — StageItem and StepperStage share it, so add a stage color there, not in
|
|
32
|
+
a component. Its `onStrong` (label on a filled stage) is now `onFilled(strong, white, black)` —
|
|
33
|
+
picks whichever of white/black clears AA against that scheme's actual `strong` rung, instead of
|
|
34
|
+
assuming white always works; StepperStage's *unfilled* circle still uses `background[50]` because
|
|
35
|
+
that one is a surface.
|
|
36
|
+
- LazyWrapper's default spinner lives in a `DefaultFallback` subcomponent — `useCustomTheme()` is a
|
|
37
|
+
hook, so it cannot be called from the plain `fallback` node.
|
|
38
|
+
|
|
39
|
+
### WCAG-contrast fixes (this pass)
|
|
40
|
+
|
|
41
|
+
- **CopyButton "menu-item" ink**: `accent` now resolves via `accentTextOnCanvas(theme.colors.primary,
|
|
42
|
+
theme.colors.backgroundColor.main)` instead of raw `primary[500]` — `primary[500]` is tuned for a
|
|
43
|
+
label *on* a filled button, not ink read directly off the canvas, and was failing AA (as low as
|
|
44
|
+
4.07 measured) in 5 of 7 brands in dark mode.
|
|
45
|
+
- **MoreItems popover item label**: reads `gray[500]` (the library's verified muted-text token) in
|
|
46
|
+
place of a locally-picked, non-standard rung.
|
|
47
|
+
- **Control-boundary borders** (WCAG 1.4.11, needs >=3.0 against any named surface up to `muted`)
|
|
48
|
+
bumped to `boxborder[800]`: CopyButton's "button"-variant border (was raw `gray[200]`) and
|
|
49
|
+
ProfilePhotoViewer's edit-icon border (was `boxborder[300]`) — both render as an actual control
|
|
50
|
+
boundary, not decoration, so they need the stronger rung.
|
|
@@ -21,3 +21,15 @@ truncation detection.
|
|
|
21
21
|
`overlays`).
|
|
22
22
|
- **`mergeRefs(...refs)`** (internal) — combine a caller ref with an injected one
|
|
23
23
|
when cloning an element.
|
|
24
|
+
|
|
25
|
+
## Recent changes
|
|
26
|
+
|
|
27
|
+
- **`table.ts` — AA-safe `onSolid` ink.** `TablePaletteColor` gained an optional
|
|
28
|
+
`onSolid` field; `buildTablePalette` and `pickTableColor` now compute it via
|
|
29
|
+
`onFilled()` (`Theme/tokens/builders/accentText.ts`) against the theme's
|
|
30
|
+
`white`/`black`, instead of assuming a fixed ink color. `pickTableColor` gained
|
|
31
|
+
an optional trailing `theme` param to supply this — both additions are
|
|
32
|
+
backward-compatible; existing callers without `theme` still work (fall back to
|
|
33
|
+
`#FFFFFF`/`#000000`). `table.test.ts` updated to assert the `onFilled()` math,
|
|
34
|
+
e.g. `#8B3FC8` clears white at 5.765 (onSolid stays white) while `#ff0000`
|
|
35
|
+
fails white at 3.998 and falls back to black at 5.252.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
|
|
2
|
+
---
|
|
3
|
+
|
|
4
|
+
# RESUME POINT — paused 2026-07-16 ~12:50, user resuming in ~1hr
|
|
5
|
+
|
|
6
|
+
## State: SAFE TO PAUSE
|
|
7
|
+
Working tree is green: `tsc` 0, `lint` clean, **679/679 tests**, `build` 0.
|
|
8
|
+
Nothing committed yet. Branch `feature/theme-tokens-dark-mode`. Vite dev server may still be on :5173.
|
|
9
|
+
|
|
10
|
+
## Scope decision (user answered popup — BINDING)
|
|
11
|
+
1. **"Full WCAG + polish now (light WILL change)"** — the earlier "never touch light / don't affect
|
|
12
|
+
consumers" constraint is now **RELEASED** for visual changes. API compatibility still absolute
|
|
13
|
+
(`src/index.publicApi.test.ts` must stay green). Light-mode *pixels* may change; consumers need
|
|
14
|
+
no code edits.
|
|
15
|
+
2. **shadcn theme = exact zinc/slate clone** — match real shadcn default tokens (zinc/slate
|
|
16
|
+
neutrals, near-black primary in light, near-white primary in dark, minimal color).
|
|
17
|
+
|
|
18
|
+
## What is DONE
|
|
19
|
+
- Portable `Theme/tokens/**` (pure, no Chakra/React/CSS) + `Theme/chakra/**` web binding.
|
|
20
|
+
- 7 brands x light+dark; `PixelizeThemeProvider` (defaults `system`) + `useThemeMode` + `ThemeSwitcher`.
|
|
21
|
+
- 29 families migrated hex->tokens. MODULE.md doc-sync done for 12 domains.
|
|
22
|
+
- Fixed already: `accentText` token; Button outline/ghost/link on-canvas text; ghost hover tint;
|
|
23
|
+
dark `gray[500]` ramp L48->L52.
|
|
24
|
+
|
|
25
|
+
## THE ROOT CAUSE (next thing to fix — Wave A)
|
|
26
|
+
`liftScale()` in `tokens/builders/buildDarkPalette.ts` adds a lightness delta to EVERY rung, so for
|
|
27
|
+
**brand (primary/secondary/tertiary) and semantic** scales in dark:
|
|
28
|
+
- `[50]`/`[100]` stay near-white (lum ~0.907) -> used as tint chips/avatars/hover => **17 pages
|
|
29
|
+
render light surfaces on the dark canvas** (this is the broken Accordion the user screenshotted).
|
|
30
|
+
- `[600]`+ stay DARKER than `[500]` -> but components use `primary[600]` as **text**
|
|
31
|
+
(e.g. `Accordion.tsx:90`) => dark-on-dark, contrast **1.34**.
|
|
32
|
+
- Utility hues (gray/red/green/blue/...) are `reverseScale`d and are CORRECT already.
|
|
33
|
+
|
|
34
|
+
**Fix:** give brand+semantic a proper dark ramp — monotonic **dark->light** across 50->900, with
|
|
35
|
+
`[500]` PINNED to the adaptive white-label-safe accent (`accentLightnessDelta`, do not change it).
|
|
36
|
+
Proposed targets (verify empirically): 50:12, 100:16, 200:22, 300:32, 400:44, 500:<accent>,
|
|
37
|
+
600:67, 700:76, 800:85, 900:93.
|
|
38
|
+
|
|
39
|
+
**Cascade (Wave A2):** flipping the ramp breaks `Button.styles.ts` `solid._hover: bg=[600]` /
|
|
40
|
+
`_active: bg=[700]` — those become LIGHT, so the white label fails. Semantics should be "one step
|
|
41
|
+
darker" per mode: light uses `[600]`/`[700]`, dark must use `[400]`/`[300]`. `onCanvasText` and
|
|
42
|
+
`onCanvasHoverBg` helpers already exist in `Button.styles.ts` — extend that pattern.
|
|
43
|
+
|
|
44
|
+
**Obsolete test:** `Button.styles.test.ts` "light mode is untouched" pins light to `primary[500]`.
|
|
45
|
+
The user has now approved light changes, so that test must be REWRITTEN (not deleted) to assert the
|
|
46
|
+
new intended light values.
|
|
47
|
+
|
|
48
|
+
## Verified audit numbers (baseline to beat)
|
|
49
|
+
Auditor: `scratchpad/audit-all-pages.cjs` (walks all 51 pages; `MODE=Light|Dark`, `ONLY_PAGE=<name>`).
|
|
50
|
+
Reports: `scratchpad/shots-all/report.json` (dark), `scratchpad/shots-light/report.json` (light).
|
|
51
|
+
|
|
52
|
+
| | DARK | LIGHT |
|
|
53
|
+
|------------------------|------|-------|
|
|
54
|
+
| failing text signatures | 95 | 118 |
|
|
55
|
+
| worst ratio | 1.0 | 1.0 |
|
|
56
|
+
| near-invisible (<1.5) | 16 | 6 |
|
|
57
|
+
| pages w/ light surface | 17 | n/a |
|
|
58
|
+
|
|
59
|
+
- 43 dark failures ALSO fail in light => pre-existing debt.
|
|
60
|
+
- **52 dark failures are NEW** across 24 pages => the dark-mode regression to fix.
|
|
61
|
+
- Light's 118 are PRE-EXISTING (present on base commit, untouched by this task).
|
|
62
|
+
|
|
63
|
+
## Known, deliberately NOT yet fixed
|
|
64
|
+
- `bg={colors.white}` used as a SURFACE in 8 files (never in the 29-family scope because they use a
|
|
65
|
+
token, not a hex — a hex-only grep could not see them):
|
|
66
|
+
FileUpload:153, Dropdown:197, Reorder:44, Form/FormWrapper:36, Accordion:46,
|
|
67
|
+
ProfilePhotoViewer:190, KanbanBoard/AccountCard:54, Header/components/desktopMenu:83
|
|
68
|
+
-> should become `colors.background[50]` (identical #ffffff in light, dark-aware).
|
|
69
|
+
- `KanbanBoard.tsx:876` uses `var(--chakra-colors-gray-300)` but `cssVarPrefix` is `"ck"` — that var
|
|
70
|
+
has NEVER resolved. Pre-existing; unrelated to dark mode.
|
|
71
|
+
|
|
72
|
+
## CI reality (pre-existing, do NOT silently "fix")
|
|
73
|
+
`.github/workflows/build.yml` runs `npm run test:coverage` with an 80% global threshold.
|
|
74
|
+
**Base commit already fails it** (branches 62.57%). Our branch reads ~42% because
|
|
75
|
+
`src/index.publicApi.test.ts` imports the barrel, growing the coverage denominator 101 -> 302 files.
|
|
76
|
+
That is the TRUE coverage finally being measured, not a regression. Lowering the threshold =
|
|
77
|
+
weakening a safety guard => user decision, not ours.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Theme refactor → portable tokens + full dark mode + exported theme switcher
|
|
2
|
+
|
|
3
|
+
## Complexity
|
|
4
|
+
hard
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
1. **Restructure theme into a pure, platform-agnostic token layer** (zero Chakra/React/CSS imports)
|
|
8
|
+
so the mobile design library can copy-paste it. Web-only Chakra binding lives separately.
|
|
9
|
+
2. **Full dark mode** across every component (derived from each brand's existing colors).
|
|
10
|
+
3. **Export** `PixelizeThemeProvider` + `useThemeMode()` + `<ThemeSwitcher/>` for consuming apps.
|
|
11
|
+
4. Refactor/improve along the way (dedupe 7 identical brand theme files, types, a11y contrast).
|
|
12
|
+
|
|
13
|
+
## Constraints (non-negotiable)
|
|
14
|
+
- **Backward compatible — zero consumer rework.** No removed/renamed public exports, no changed
|
|
15
|
+
prop signatures. `pixelize-design-library` stays **2.x**.
|
|
16
|
+
- **Light mode must stay pixel-identical.** Dark mode is purely additive.
|
|
17
|
+
- **Keep existing internal import paths as re-export shims** — `Theme/useCustomTheme` (91 importers)
|
|
18
|
+
and `Theme/themeProps` (~20 importers) must not move.
|
|
19
|
+
- Purity boundary: `Theme/tokens/**` must never import Chakra, React, or CSS.
|
|
20
|
+
(`fonts.ts` CSS side-effect + `common.ts` `cssVarPrefix` are web-only → stay in web layer.)
|
|
21
|
+
|
|
22
|
+
## Phase checklist
|
|
23
|
+
- [x] 1. Plan
|
|
24
|
+
- [ ] 2a. Wave 0a — token restructure (serial)
|
|
25
|
+
- [ ] 2b. Wave 0b — dark palettes + provider/hook/switcher (serial)
|
|
26
|
+
- [ ] 2c. Wave 1 — component hex migration (PARALLEL, 17 disjoint families)
|
|
27
|
+
- [ ] 3a/3b. Tests
|
|
28
|
+
- [ ] 3d. Doc sync
|
|
29
|
+
- [ ] 3c. PR readiness (lint + typecheck + test + build)
|
|
30
|
+
- [ ] 4. Review gate
|
|
31
|
+
- [ ] 5. Commit
|
|
32
|
+
|
|
33
|
+
## Baseline
|
|
34
|
+
- `npx tsc --noEmit` → **exit 0** (green before any change).
|
|
35
|
+
- Branch: `develop`, clean tree. Package v2.3.21.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Architecture — the linchpin
|
|
40
|
+
|
|
41
|
+
Components read **resolved hex strings** via `useCustomTheme()` and interpolate them:
|
|
42
|
+
```tsx
|
|
43
|
+
border={`0.063rem solid ${theme.colors.border?.[500]}`}
|
|
44
|
+
```
|
|
45
|
+
Chakra `semanticTokens` **cannot** work here (they only resolve as style-prop token names).
|
|
46
|
+
|
|
47
|
+
**Therefore:** make `useCustomTheme()` **color-mode-aware** — it returns the dark palette when
|
|
48
|
+
`colorMode === "dark"`. All **127** token-consuming files then flip to dark with **zero edits**.
|
|
49
|
+
Remaining real work = the **22** files that hardcode hex.
|
|
50
|
+
|
|
51
|
+
## Target structure
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
src/Theme/
|
|
55
|
+
tokens/ ← PURE. zero Chakra/React/CSS. Copy-paste to mobile.
|
|
56
|
+
index.ts ← barrel (brands, primitives, builders, types)
|
|
57
|
+
types.ts ← PaletteProps, ThemeName, ColorMode
|
|
58
|
+
primitives/ ← space, sizes, radii, shadows, zIndices,
|
|
59
|
+
breakpoints, lineHeights, letterSpacings, typography
|
|
60
|
+
builders/
|
|
61
|
+
buildBrandTokens.ts ← moved (already pure)
|
|
62
|
+
buildDarkPalette.ts ← NEW: pure light→dark derivation
|
|
63
|
+
brands/<brand>/palette.light.ts + palette.dark.ts ← 7 brands
|
|
64
|
+
chakra/ ← WEB-ONLY binding
|
|
65
|
+
createBrandTheme.ts ← factory replacing 7 duplicated theme.ts
|
|
66
|
+
componentStyles.ts ← moved
|
|
67
|
+
fonts.web.ts ← CSS side-effect import + typography
|
|
68
|
+
provider/ ← NEW
|
|
69
|
+
PixelizeThemeProvider.tsx, useThemeMode.ts, ThemeSwitcher.tsx, storage.ts
|
|
70
|
+
useCustomTheme.ts ← KEEP PATH, now color-mode-aware
|
|
71
|
+
themeProps.ts ← KEEP PATH, re-export shim
|
|
72
|
+
index.ts, <Brand>/theme.ts, <Brand>/palette.ts ← KEEP PATHS as shims
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Dark palette derivation (my call — "mix of existing theme colours")
|
|
76
|
+
Pure `buildDarkPalette(lightPalette)`, applied to all 7 brands — **role-preserving inversion**:
|
|
77
|
+
- **Surface/neutral/text/border scales** (`background`, `text`, `header`, `placeholder`, `border`,
|
|
78
|
+
`boxborder`, `table.hover`, `disabled`, `gray`): reverse the ramp (50↔900 …) so each index keeps
|
|
79
|
+
its semantic role but flips lightness. Because each brand's light ramps are already brand-tinted
|
|
80
|
+
(lavender's gray is violet-tinted), reversing yields **brand-tinted dark for free** — no invented hexes.
|
|
81
|
+
- **Named surface keys** (`backgroundColor.{main,secondary,…,tableHeader}`): explicit dark anchors;
|
|
82
|
+
elevation goes **lighter** in dark (inverse of light mode).
|
|
83
|
+
- **Brand/semantic** (`primary`, `secondary`, `tertiary`, `semantic.*`): keep hue; accessible accent
|
|
84
|
+
on dark shifts lighter.
|
|
85
|
+
- **`boxShadow`**: deepen. **`sidebar`**: already dark in light mode → keep near-identical.
|
|
86
|
+
- Verify WCAG AA contrast for text-on-surface pairs.
|
|
87
|
+
|
|
88
|
+
## API contract (FROZEN)
|
|
89
|
+
Additive exports from `src/index.ts` — nothing removed:
|
|
90
|
+
```ts
|
|
91
|
+
export { PixelizeThemeProvider } from "./Theme/provider/PixelizeThemeProvider";
|
|
92
|
+
export { useThemeMode } from "./Theme/provider/useThemeMode";
|
|
93
|
+
export { ThemeSwitcher } from "./Theme/provider/ThemeSwitcher";
|
|
94
|
+
export type { ColorMode, ThemeName, PaletteProps } from "./Theme/tokens/types";
|
|
95
|
+
// unchanged: default withTheme, useCustomTheme, ThemesList, all 73 components
|
|
96
|
+
```
|
|
97
|
+
```ts
|
|
98
|
+
type ColorMode = "light" | "dark" | "system";
|
|
99
|
+
useThemeMode(): {
|
|
100
|
+
mode: ColorMode; // user selection
|
|
101
|
+
resolvedMode: "light"|"dark";// after system resolution
|
|
102
|
+
setMode(m: ColorMode): void;
|
|
103
|
+
toggle(): void;
|
|
104
|
+
brand: ThemeName;
|
|
105
|
+
setBrand(b: ThemeName): void;
|
|
106
|
+
};
|
|
107
|
+
<PixelizeThemeProvider brand? defaultMode? storageKey? disablePersistence?>
|
|
108
|
+
<ThemeSwitcher variant?="icon"|"segmented"|"menu" showBrandPicker?=false />
|
|
109
|
+
```
|
|
110
|
+
- Persisted to localStorage; SSR-safe (no window access during render).
|
|
111
|
+
- `withTheme` keeps working unchanged (delegates to the provider internally).
|
|
112
|
+
|
|
113
|
+
## Wave plan (parallel/serial split)
|
|
114
|
+
- **Wave 0a — SERIAL (orchestrator).** Token restructure + shims. Pure moves, zero behavior change.
|
|
115
|
+
Gate: `tsc --noEmit` exit 0.
|
|
116
|
+
- **Wave 0b — SERIAL (orchestrator).** `buildDarkPalette`, 7 dark palettes, color-mode-aware
|
|
117
|
+
`useCustomTheme`, provider/hook/switcher, componentStyles `_dark`, exports.
|
|
118
|
+
Serial because every Wave-1 agent depends on this contract.
|
|
119
|
+
- **Wave 1 — PARALLEL (17 disjoint families).** Migrate the 22 hex files → tokens.
|
|
120
|
+
*Proof of independence:* each agent owns exactly one `src/Components/<Family>/` folder; the sets are
|
|
121
|
+
pairwise disjoint; **no agent touches** `src/index.ts`, `src/Theme/**`, `src/withTheme.tsx`,
|
|
122
|
+
`src/App.tsx`, `src/Layout.tsx`, `src/global.css`, or any git/npm command. No new exports needed
|
|
123
|
+
(all 22 files are in already-exported components) → shared registry untouched.
|
|
124
|
+
- **Wave 2 — SERIAL.** `global.css` dark, playground demo, docs, full verify.
|
|
125
|
+
|
|
126
|
+
## Files — Wave 1 lanes (22 files / 17 families, pairwise disjoint)
|
|
127
|
+
| Lane | Family | Files |
|
|
128
|
+
|---|---|---|
|
|
129
|
+
| 1 | UserDetails | UserDetails.tsx (16), DeactivateConfirmModal.tsx (3) |
|
|
130
|
+
| 2 | OrganizationDetails | OrganizationDetails.tsx (16), DeleteOrgModal.tsx (2) |
|
|
131
|
+
| 3 | OrgSwitcher | OrgSwitcher.tsx (13), OrgSwitcherProps.tsx (8) |
|
|
132
|
+
| 4 | RolesPermission | RolesPermission.tsx (8), DeleteRoleModal.tsx (2) |
|
|
133
|
+
| 5 | Toaster | Toaster.tsx (8) |
|
|
134
|
+
| 6 | StageProgress | StageProgressProps.tsx (7) |
|
|
135
|
+
| 7 | PdfViewer | PdfViewer.tsx (6) |
|
|
136
|
+
| 8 | CustomModulesTable | CustomModulesTable.tsx (5), DeleteModuleModal.tsx (2) |
|
|
137
|
+
| 9 | CopyButton | CopyButton.tsx (5) |
|
|
138
|
+
| 10 | SignInActivityTable | SignInActivityTable.tsx (5) |
|
|
139
|
+
| 11 | EmptyState | EmptyState.tsx (4) |
|
|
140
|
+
| 12 | FilePreview | FilePreview.tsx (4) |
|
|
141
|
+
| 13 | FieldSelectModal | FieldSelectModal.tsx (3) |
|
|
142
|
+
| 14 | UpgradeButton | UpgradeButton.tsx (3) |
|
|
143
|
+
| 15 | MoreItems | MoreItems.tsx (2) |
|
|
144
|
+
| 16 | LazyWrapper | LazyWrapper.tsx (1) |
|
|
145
|
+
| 17 | ToolTip | ToolTip.tsx (1) |
|
|
146
|
+
|
|
147
|
+
## Risks
|
|
148
|
+
- 38 **test/story** files assert hardcoded hex → may break when components move to tokens. Handled in 3a/3b.
|
|
149
|
+
- `Switch.tsx` / `InputSwitch.tsx` already call `useColorModeValue` → will finally activate under the
|
|
150
|
+
provider; verify they look right in both modes.
|
|
151
|
+
- `Theme/Default/palette` imported directly by 2 DatePicker tests → keep shim path.
|
|
152
|
+
- Coverage thresholds are 80% global; new provider/builder code needs tests to hold the gate.
|
|
153
|
+
|
|
154
|
+
## Files-changed manifest
|
|
155
|
+
(updated as waves land)
|