pixelize-design-library 2.3.22 → 2.4.1-beta.2
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/TASK-SETUP.md +43 -0
- package/.cursor/agents/be-impl.md +37 -0
- package/.cursor/agents/fe-impl.md +39 -0
- package/.cursor/agents/task-plan.md +56 -0
- package/.cursor/agents/test-create.md +31 -0
- package/.cursor/agents/test-exec.md +26 -0
- package/.cursor/hooks/task-hint.env +1 -0
- package/.cursor/hooks/task-skill-nudge.sh +71 -0
- package/.cursor/hooks/task-slash-guard.sh +31 -0
- package/.cursor/hooks.json +13 -0
- package/.cursor/modules/account-management/MODULE.md +41 -0
- package/.cursor/modules/buttons/MODULE.md +47 -0
- package/.cursor/modules/cards/MODULE.md +55 -0
- package/.cursor/modules/charts/MODULE.md +40 -0
- package/.cursor/modules/common/MODULE.md +36 -0
- package/.cursor/modules/contact-auth/MODULE.md +19 -0
- package/.cursor/modules/data-display/MODULE.md +42 -0
- package/.cursor/modules/feedback/MODULE.md +38 -0
- package/.cursor/modules/form/MODULE.md +13 -0
- package/.cursor/modules/inputs-basic/MODULE.md +42 -0
- package/.cursor/modules/inputs-date-file/MODULE.md +67 -0
- package/.cursor/modules/inputs-select/MODULE.md +89 -0
- package/.cursor/modules/inputs-toggle/MODULE.md +24 -0
- package/.cursor/modules/kanban/MODULE.md +22 -0
- package/.cursor/modules/layout-navigation/MODULE.md +319 -0
- package/.cursor/modules/overlays/MODULE.md +82 -0
- package/.cursor/modules/playground/MODULE.md +28 -0
- package/.cursor/modules/table/MODULE.md +84 -0
- package/.cursor/modules/theme/MODULE.md +431 -0
- package/.cursor/modules/types-exports/MODULE.md +17 -0
- package/.cursor/modules/utility-ui/MODULE.md +50 -0
- package/.cursor/modules/utils-hooks/MODULE.md +35 -0
- package/.cursor/pixelize-task-statusline.sh +64 -0
- package/.cursor/plans/blocked/.gitkeep +0 -0
- package/.cursor/plans/current.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/.cursor/plans/done/.gitkeep +0 -0
- package/.cursor/rules +31 -0
- package/.cursor/skills/task/SKILL.md +167 -0
- package/CLAUDE.md +148 -0
- 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.d.ts.map +1 -1
- package/dist/Assets/defaultLogo.js +1 -3
- package/dist/Assets/defaultLogo.tsx +26 -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.d.ts.map +1 -1
- package/dist/Components/DatePicker/CalendarPanel.js +13 -4
- 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 +11 -9
- package/dist/Components/DatePicker/TimeOnlyPicker.d.ts.map +1 -1
- package/dist/Components/DatePicker/TimeOnlyPicker.js +5 -3
- package/dist/Components/DatePicker/TimePicker.d.ts.map +1 -1
- package/dist/Components/DatePicker/TimePicker.js +14 -2
- package/dist/Components/DatePicker/TimePickerInput.d.ts.map +1 -1
- package/dist/Components/DatePicker/TimePickerInput.js +9 -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/SelectV2/SelectV2.d.ts +3 -0
- package/dist/Components/SelectV2/SelectV2.d.ts.map +1 -0
- package/dist/Components/SelectV2/SelectV2.js +185 -0
- package/dist/Components/SelectV2/SelectV2Props.d.ts +67 -0
- package/dist/Components/SelectV2/SelectV2Props.d.ts.map +1 -0
- package/dist/Components/SelectV2/SelectV2Props.js +2 -0
- 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 +19 -5
- 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 +4 -1
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts +2 -2
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts.map +1 -1
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +29 -4
- package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +18 -0
- package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts.map +1 -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/Avatar.styles.d.ts +33 -0
- package/dist/Theme/chakra/Avatar.styles.d.ts.map +1 -0
- package/dist/Theme/chakra/Avatar.styles.js +28 -0
- package/dist/Theme/chakra/Drawer.styles.d.ts +32 -0
- package/dist/Theme/chakra/Drawer.styles.d.ts.map +1 -0
- package/dist/Theme/chakra/Drawer.styles.js +26 -0
- package/dist/Theme/chakra/Menu.styles.d.ts +70 -0
- package/dist/Theme/chakra/Menu.styles.d.ts.map +1 -0
- package/dist/Theme/chakra/Menu.styles.js +50 -0
- package/dist/Theme/chakra/Modal.styles.d.ts +32 -0
- package/dist/Theme/chakra/Modal.styles.d.ts.map +1 -0
- package/dist/Theme/chakra/Modal.styles.js +26 -0
- package/dist/Theme/chakra/Popover.styles.d.ts +37 -0
- package/dist/Theme/chakra/Popover.styles.d.ts.map +1 -0
- package/dist/Theme/chakra/Popover.styles.js +30 -0
- package/dist/Theme/chakra/Slider.styles.d.ts +31 -0
- package/dist/Theme/chakra/Slider.styles.d.ts.map +1 -0
- package/dist/Theme/chakra/Slider.styles.js +25 -0
- package/dist/Theme/chakra/Switch.styles.d.ts +31 -0
- package/dist/Theme/chakra/Switch.styles.d.ts.map +1 -0
- package/dist/Theme/chakra/Switch.styles.js +24 -0
- package/dist/Theme/chakra/Tabs.styles.d.ts +43 -0
- package/dist/Theme/chakra/Tabs.styles.d.ts.map +1 -0
- package/dist/Theme/chakra/Tabs.styles.js +41 -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 +240 -0
- package/dist/Theme/chakra/componentStyles.d.ts.map +1 -0
- package/dist/Theme/chakra/componentStyles.js +150 -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 +46 -0
- package/dist/Theme/provider/PixelizeThemeProvider.d.ts.map +1 -0
- package/dist/Theme/provider/PixelizeThemeProvider.js +124 -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 +111 -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 +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -1
- package/eslint.config.js +48 -0
- package/index.html +13 -0
- package/package.json +2 -6
- package/vite.config.ts +13 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
# Theme
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
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.
|
|
9
|
+
|
|
10
|
+
## Key paths
|
|
11
|
+
|
|
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)`.
|
|
44
|
+
|
|
45
|
+
## Key rules
|
|
46
|
+
|
|
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
|
+
**2026-07-20 — `PixelizeThemeProvider` gained an optional `themeOverrides` prop.** Found while
|
|
300
|
+
wiring dark mode into the **tickets** consumer app: it has its own font-stack/compact-control-size/
|
|
301
|
+
component-defaultProps customizations layered onto the brand theme (the old `withTheme(app, theme)`
|
|
302
|
+
pattern spread these onto `ThemesList[brand]` directly), and `PixelizeThemeProvider` had no
|
|
303
|
+
equivalent injection point — its internal `ChakraProvider` is hardcoded to
|
|
304
|
+
`brandThemes[brand][resolvedMode]`. Without this, every consumer app with its own theme
|
|
305
|
+
customizations would have had to build the same workaround (mount its own second `ChakraProvider`
|
|
306
|
+
inside the provider's tree, shadowing the internal one). `themeOverrides?: Record<string, unknown>`
|
|
307
|
+
is deep-merged via `extendTheme(brandThemes[brand][resolvedMode], themeOverrides)`, re-computed
|
|
308
|
+
whenever `brand`/`resolvedMode`/`themeOverrides` change so overrides always layer onto the *current*
|
|
309
|
+
palette. Safe post-resolution: `createBrandTheme` already fixes `config.initialColorMode` to
|
|
310
|
+
`"light"` on every palette, and `extendTheme` is a pure additive merge that doesn't re-derive
|
|
311
|
+
`_dark:` blocks — so this cannot reintroduce the double-adaptation bug the forced light
|
|
312
|
+
`colorModeManager` avoids. Optional, defaults to `undefined` — zero behavior change for existing
|
|
313
|
+
consumers that don't pass it.
|
|
314
|
+
|
|
315
|
+
**2026-07-20 — `PixelizeThemeProvider` re-syncs `brandState` when the `brand` prop changes post-mount.**
|
|
316
|
+
`brandProp` previously only seeded initial state (`useState(brandProp)`), so a consumer that
|
|
317
|
+
re-renders with a new `brand` after mount (e.g. persisting the pick through its own Redux store
|
|
318
|
+
instead of calling this provider's own `setBrand`) never saw it applied — the same gap `mode`
|
|
319
|
+
already had, worked around elsewhere by callers mirroring it in an effect. Fixed with a `useEffect`
|
|
320
|
+
on `brandProp` (skipping the first run, so it doesn't fight the rehydrate-from-storage effect) that
|
|
321
|
+
calls `setBrandState(brandProp)` only when the **prop itself** changes — not on every local
|
|
322
|
+
`setBrand()` call, so it doesn't fight the user's own in-session `ThemeSwitcher` picking.
|
|
323
|
+
|
|
324
|
+
**2026-07-20 — `ThemeSwitcher`'s brand menus gained a color swatch dot per brand.** `BrandMenu`
|
|
325
|
+
(icon variant) and `MenuVariant`'s brand submenu both previously showed only the brand name text.
|
|
326
|
+
Each option now renders a small (`0.625rem`) filled circle before the label, colored from that
|
|
327
|
+
brand's own `colors.primary[500]` in **light** mode (`brandThemes[brand].light...primary[500]`) —
|
|
328
|
+
always the light-mode anchor regardless of the switcher's current mode, so the dot is a stable
|
|
329
|
+
brand identifier rather than something that itself flips with dark mode. `ThemeSwitcher.tsx` also
|
|
330
|
+
stopped re-deriving `menuBg`/pushing it back via `sx` on every render (`useSwitcherColors()`) now
|
|
331
|
+
that `Menu.styles.ts` (Wave G) supplies `--menu-bg` centrally — removes a redundant Emotion style
|
|
332
|
+
recompute per render that showed up as flicker while hovering/scrolling the brand list.
|
|
333
|
+
|
|
334
|
+
## Wave G — global `Menu` component style override (`--menu-bg`), found while auditing tickets
|
|
335
|
+
|
|
336
|
+
Same bug class as Wave E's `ThemeSwitcher` fix, but at the root instead of per-call-site: Chakra's
|
|
337
|
+
own `Menu` baseStyle hardcodes the `--menu-bg` CSS var to `"#fff"` (gated behind `_dark`, which this
|
|
338
|
+
app's theme-swap never triggers — `PixelizeThemeProvider`'s forced-light `colorModeManager`, Wave D
|
|
339
|
+
above). Every **bare** `<MenuList>` in every consuming app (tickets' board overflow menu,
|
|
340
|
+
`TicketOptionMenu`, rows-per-page menu, etc.) rendered a white dropdown on a dark canvas, and a
|
|
341
|
+
call-site `bg=` prop alone doesn't fix it — that only recolors the list's own box, not the CSS var
|
|
342
|
+
`MenuItem`'s `_focus`/`_active`/`_expanded` states read.
|
|
343
|
+
|
|
344
|
+
Added `src/Theme/chakra/Menu.styles.ts` (new file, registered in `componentStyles.ts`): a
|
|
345
|
+
`definePartsStyle` override on the `list` anatomy part that sets `--menu-bg` (via `cssVar`) to
|
|
346
|
+
`theme.colors.backgroundColor?.light ?? theme.colors.background?.[50] ?? "#fff"` and `color` to
|
|
347
|
+
`theme.colors.text?.[900]`. This fixes every consumer's bare `MenuList` app-wide with zero
|
|
348
|
+
per-call-site changes — `ThemeSwitcher`'s existing manual `bg=`/`sx={{"--menu-bg": ...}}` workaround
|
|
349
|
+
(Wave E) still works alongside it (an explicit call-site override still wins), it's just no longer
|
|
350
|
+
required for a plain `<MenuList>`. Verified: `tsc --noEmit` clean, lint clean, full `jest` suite
|
|
351
|
+
905/905 (72 suites, up from 902/72 pre-fix — 3 new but this pass added no dedicated `Menu.styles`
|
|
352
|
+
test, the count reflects unrelated in-flight suite growth).
|
|
353
|
+
|
|
354
|
+
## Wave H — `Popover`/`Skeleton` component-style overrides + native UI `color-scheme`, same audit as Wave G
|
|
355
|
+
|
|
356
|
+
Same bug class as Wave G's `Menu` fix, found while sweeping the rest of Chakra's own component
|
|
357
|
+
themes for the identical `_dark`-gated hardcoded-white pattern — plus one new bug *class* (native
|
|
358
|
+
browser chrome) the earlier waves never covered.
|
|
359
|
+
|
|
360
|
+
- **`Popover`** — Chakra's own Popover baseStyle hardcodes `--popper-bg` to `"colors.white"` and
|
|
361
|
+
`--popper-arrow-shadow-color` to `"colors.gray.200"`, both gated behind `_dark` (confirmed by
|
|
362
|
+
reading `@chakra-ui/theme`'s `popover.mjs` source directly — `content` is the anatomy part that
|
|
363
|
+
owns both vars; `--popper-arrow-bg` is untouched because Chakra's own baseStyle already points it
|
|
364
|
+
at `$popperBg`, so fixing `$popperBg` fixes the arrow fill for free). Every bare
|
|
365
|
+
`<PopoverContent>` rendered a white card with a light arrow shadow on the dark canvas. Added
|
|
366
|
+
`src/Theme/chakra/Popover.styles.ts` (new file, registered in `componentStyles.ts`) mirroring
|
|
367
|
+
`Menu.styles.ts` exactly: `createMultiStyleConfigHelpers(popoverAnatomy.keys)` +
|
|
368
|
+
`definePartsStyle` on the `content` part, `[$popperBg.variable]` sourced from
|
|
369
|
+
`theme.colors.backgroundColor?.light ?? theme.colors.background?.[50] ?? "#fff"` (identical
|
|
370
|
+
fallback chain to Menu) and `[$arrowShadowColor.variable]` from `theme.colors.border?.[200]`.
|
|
371
|
+
- **`Skeleton`** — Chakra's own Skeleton baseStyle hardcodes `--skeleton-start-color`/
|
|
372
|
+
`--skeleton-end-color` to `colors.gray.100`/`colors.gray.400`, same `_dark`-gated pattern.
|
|
373
|
+
Verified in `@chakra-ui/react`'s actual `skeleton.mjs` that Chakra's `Skeleton` is a
|
|
374
|
+
**single-part** style config (`defineStyleConfig`, not a multi-part anatomy like Menu/Popover),
|
|
375
|
+
and that its `startColor`/`endColor` are **props**, not style-config keys — but those props only
|
|
376
|
+
ever populate the same two CSS vars when a caller actually passes them (`useToken("colors", ["",
|
|
377
|
+
""])` resolves to `undefined`, so `cssVarStyles` stays empty and the base style's vars pass
|
|
378
|
+
through untouched). That confirms Chakra's own prop-vs-style precedence already does the right
|
|
379
|
+
thing, so the fix was made at the `componentStyles.ts` level (a `Skeleton: ComponentStyleConfig`
|
|
380
|
+
entry, same file as `Badge`/`FormError`) rather than touching `Components/Skeletons/Skeletons.tsx`
|
|
381
|
+
— zero risk to the existing prop passthrough there; a caller-supplied `startColor`/`endColor`
|
|
382
|
+
still wins exactly as before. Rungs: `gray[100]`/`gray[300]` — `buildDarkPalette.ts`'s `gray`
|
|
383
|
+
ramp is already role-reversed for dark mode (low rungs go dark, high rungs go light there), so
|
|
384
|
+
the same two rung indices read as a light shimmer in light mode and a subtle dark-on-dark shimmer
|
|
385
|
+
in dark mode with no mode branching needed in the override itself.
|
|
386
|
+
- **`color-scheme` CSS property (new bug class)** — native browser UI (the `<select>` popup
|
|
387
|
+
chrome, the `<input type="date">` calendar picker) is painted by the browser's own UA stylesheet
|
|
388
|
+
keyed off the CSS `color-scheme` property, entirely outside Chakra/React theming — no component
|
|
389
|
+
style or palette swap can reach it, which is why this wasn't caught by any earlier wave's
|
|
390
|
+
component-by-component audit. Neither repo set it anywhere, so that native chrome always rendered
|
|
391
|
+
light regardless of the app's resolved mode. Fixed in `PixelizeThemeProvider.tsx` with a
|
|
392
|
+
`useEffect` that sets `document.documentElement.style.colorScheme = resolvedMode` whenever
|
|
393
|
+
`resolvedMode` changes. Scoped to the provider (not a global stylesheet or index.css rule) so
|
|
394
|
+
`withTheme` consumers — deliberately light-only per this doc's "Key rules" — see no change;
|
|
395
|
+
only `PixelizeThemeProvider`/`useThemeMode` consumers get mode-aware native chrome.
|
|
396
|
+
- Full gate green: `tsc --noEmit` clean, lint clean, `jest` 905/905 (72 suites, unchanged from
|
|
397
|
+
pre-Wave-H — no new dedicated test file added for these three, consistent with Wave G's Menu fix
|
|
398
|
+
which also shipped without one).
|
|
399
|
+
|
|
400
|
+
## Wave I — remaining `_dark`-gated component overrides (Modal/Drawer/Avatar/Tabs/Slider/Switch/Tooltip)
|
|
401
|
+
|
|
402
|
+
Completes the Wave G/H sweep: every other Chakra component whose own baseStyle hardcodes a
|
|
403
|
+
literal behind the never-triggered `_dark` gate (or, for Slider/Switch, no gate at all), fixed
|
|
404
|
+
the same way — a `definePartsStyle`/`ComponentStyleConfig` override registered in
|
|
405
|
+
`componentStyles.ts`, sourcing color from `theme.colors.backgroundColor?.light ?? theme.colors
|
|
406
|
+
.background?.[50]` (or the relevant token) instead of Chakra's literal. See each domain
|
|
407
|
+
MODULE.md for the consumer-facing detail: `Modal`/`Drawer` (overlays, layout-navigation —
|
|
408
|
+
supersedes those modules' earlier per-call-site `bg=` fixes), `Avatar` (account-management),
|
|
409
|
+
`Tabs` (table), `Slider`/`Switch` (inputs-toggle), `Tooltip`/`Skeleton` (overlays, feedback —
|
|
410
|
+
`Tooltip` pins `black`/`white`, the two tokens `buildDarkPalette` never remaps, since a tooltip
|
|
411
|
+
must stay a stable dark chip in either mode rather than following the canvas).
|
|
412
|
+
`componentStyles.ts` now registers 10 chakra-native theme keys total (`Drawer`, `Menu`, `Modal`,
|
|
413
|
+
`Popover`, `Slider`, `Switch`, `Tabs`, `Avatar`, `Skeleton`, `Tooltip`) alongside the library's
|
|
414
|
+
own `Checkbox`/`Input`/`Button`/`Badge`/`FormError`/etc.
|
|
415
|
+
|
|
416
|
+
## Known gaps
|
|
417
|
+
|
|
418
|
+
- `KanbanBoard.tsx` uses `var(--chakra-colors-gray-300)`, but `cssVarPrefix` is `"ck"` — that
|
|
419
|
+
variable has never resolved (pre-existing; out of scope for the dark-mode task).
|
|
420
|
+
- `backgroundColor.muted`/`accent`/`tertiary`/`quaternary`/etc. are **not** covered by the
|
|
421
|
+
`gray[500]` retune above — 0-1 live usages in the whole codebase, and the one live
|
|
422
|
+
`backgroundColor.muted` usage pairs with `gray[600]` text, not `gray[500]`. Intentionally
|
|
423
|
+
deferred, not fixed.
|
|
424
|
+
- **Found during Wave D live re-verification, NOT fixed (outside the QA report's scope, flagging
|
|
425
|
+
for a follow-up pass):** the SideBar's notification-count badge ("10") measures ≈1.2-1.6:1
|
|
426
|
+
against its translucent primary-tinted pill background — fails badly. The playground's own
|
|
427
|
+
`/header` demo bar's raw-Chakra "Logout" ghost button measures ≈3.5:1 — same root cause as the
|
|
428
|
+
already-documented Header Bug B ("Login" button, layout-navigation MODULE.md): a raw Chakra
|
|
429
|
+
`Button` picking up the library's ghost-variant ink tuned for the page canvas, not Header's own
|
|
430
|
+
dark bar. Neither was in the QA report or its established follow-up patterns, so left untouched
|
|
431
|
+
rather than silently expanding this pass's scope.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Types & Exports
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Public API surface — semver-sensitive.
|
|
6
|
+
|
|
7
|
+
## Key paths
|
|
8
|
+
|
|
9
|
+
- `src/index.ts` (~80 value exports + typed Props groups for UserDetails, RolesPermission, CustomModulesTable, SignInActivityTable, OrganizationDetails)
|
|
10
|
+
- `src/types/`
|
|
11
|
+
- `src/withTheme.tsx`
|
|
12
|
+
|
|
13
|
+
## Key rules
|
|
14
|
+
|
|
15
|
+
- Every public component must be exported here
|
|
16
|
+
- Breaking export changes require major version bump
|
|
17
|
+
- Run `npm run build` after export changes
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Utility UI
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Generic standalone UI helpers: CopyButton, ScrollToTop, LazyWrapper, MoreItems, EmptyState, PdfViewer, FilePreview, FieldSelectModal, ProfilePhotoViewer, StageProgress.
|
|
6
|
+
|
|
7
|
+
## Key paths
|
|
8
|
+
|
|
9
|
+
- `src/Components/CopyButton/`, `ScrollToTop/`, `LazyWrapper/`, `MoreItems/`, `EmptyState/`, `PdfViewer/`, `FilePreview/`, `FieldSelectModal/`, `ProfilePhotoViewer/`, `StageProgress/`
|
|
10
|
+
|
|
11
|
+
## Key rules
|
|
12
|
+
|
|
13
|
+
- FilePreview also exports `FilePreviewTrigger`; StageProgress also exports `StageItem` (StepperStage is internal)
|
|
14
|
+
- LazyWrapper wraps lazy/Suspense loading; ScrollToTop is a scroll-position helper — keep them framework-agnostic (props in, events out)
|
|
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.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Utils & Hooks
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Shared utilities and hooks: debounce, table helpers, preferences, ref merging,
|
|
6
|
+
truncation detection.
|
|
7
|
+
|
|
8
|
+
## Key paths
|
|
9
|
+
|
|
10
|
+
- `src/Utils/table.ts`, `src/Utils/mergeRefs.ts`, `src/Hooks/usePreferences.ts`,
|
|
11
|
+
`src/Hooks/useIsTruncated.ts`, `src/services/feedback.ts`
|
|
12
|
+
|
|
13
|
+
## Key rules
|
|
14
|
+
|
|
15
|
+
- `debounce` exported from index.ts
|
|
16
|
+
- **`useIsTruncated(content?, enabled?)`** (exported) — returns `{ ref, isTruncated }`;
|
|
17
|
+
attach `ref` to a clamped element to detect real overflow (`scrollWidth/Height`
|
|
18
|
+
vs `clientWidth/Height`, single- and multi-line). Re-measures on mount, element
|
|
19
|
+
resize (`ResizeObserver`), and `content` change — never on hover/scroll. Pass
|
|
20
|
+
`enabled=false` to make it fully inert. Powers `ToolTip overflowOnly` (see
|
|
21
|
+
`overlays`).
|
|
22
|
+
- **`mergeRefs(...refs)`** (internal) — combine a caller ref with an injected one
|
|
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,64 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Local status line only — never sent to the model. See .cursor/TASK-SETUP.md
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
STATE_FILE="${HOME}/.cursor/pixelize-skill-session-state.json"
|
|
6
|
+
|
|
7
|
+
payload=$(cat)
|
|
8
|
+
dir=$(echo "$payload" | jq -r ".cwd // .workspace.current_dir // empty")
|
|
9
|
+
session_id=$(echo "$payload" | jq -r ".session_id // empty")
|
|
10
|
+
base=$(basename "$dir")
|
|
11
|
+
|
|
12
|
+
show_no_skill_warning=false
|
|
13
|
+
if [[ -n "$session_id" && -f "$STATE_FILE" ]]; then
|
|
14
|
+
if jq -e --arg id "$session_id" '.[$id].chatting_without_skill == true' "$STATE_FILE" >/dev/null 2>&1; then
|
|
15
|
+
show_no_skill_warning=true
|
|
16
|
+
fi
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
case "$base" in
|
|
20
|
+
account-frontend|account-service)
|
|
21
|
+
line1="/ → task (Account FE + BE)"
|
|
22
|
+
line2=""
|
|
23
|
+
;;
|
|
24
|
+
crm-frontend|crm-service)
|
|
25
|
+
line1="/ → task (this repo)"
|
|
26
|
+
line2="/ → crm-task (CRM FE + BE)"
|
|
27
|
+
;;
|
|
28
|
+
social-frontend|social-service)
|
|
29
|
+
line1="/ → task (this repo)"
|
|
30
|
+
line2="/ → social-task (Social FE + BE)"
|
|
31
|
+
;;
|
|
32
|
+
tickets-frontend)
|
|
33
|
+
line1="/ → task (this repo)"
|
|
34
|
+
line2="/ → tickets-task"
|
|
35
|
+
;;
|
|
36
|
+
crm-mobile)
|
|
37
|
+
line1="/ → task (this repo)"
|
|
38
|
+
line2="/ → crm-mobile-task"
|
|
39
|
+
;;
|
|
40
|
+
Micro-Components)
|
|
41
|
+
line1="/ → task (this repo)"
|
|
42
|
+
line2="/ → design-task"
|
|
43
|
+
;;
|
|
44
|
+
hrms)
|
|
45
|
+
line1="/ → task (this repo)"
|
|
46
|
+
line2="/ → hrms-task (HRMS FE + BE)"
|
|
47
|
+
;;
|
|
48
|
+
*)
|
|
49
|
+
line1="Open a Pixelize repo root for / → task"
|
|
50
|
+
line2=""
|
|
51
|
+
;;
|
|
52
|
+
esac
|
|
53
|
+
|
|
54
|
+
if [[ "$show_no_skill_warning" == "true" ]]; then
|
|
55
|
+
echo -e "\033[1;33m\033[7m ⚠ CHATTING WITHOUT TASK SKILL — use / menu ⚠ \033[0m"
|
|
56
|
+
echo -e "\033[1;33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
echo -e "\033[1;33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
|
|
60
|
+
echo -e "\033[1;33m FEATURE WORK → $line1\033[0m"
|
|
61
|
+
if [ -n "$line2" ]; then
|
|
62
|
+
echo -e "\033[1;33m Full pipeline → $line2\033[0m"
|
|
63
|
+
fi
|
|
64
|
+
echo -e "\033[1;33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
|
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Fix Kanban collapsed column reset on drag
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
`collapsedColumns` is re-hydrated from stale `kanbanPreferencesJson` whenever `mergedColumns` changes (e.g. after drag when parent updates `data`).
|
|
5
|
+
|
|
6
|
+
## Solution
|
|
7
|
+
1. Hydrate `collapsedColumns` from preferences **once** (when prefs load and columns exist).
|
|
8
|
+
2. On `mergedColumns` change, only **prune** keys for removed columns — never re-apply saved prefs.
|
|
9
|
+
|
|
10
|
+
## Files
|
|
11
|
+
- `src/Components/KanbanBoard/KanbanBoard.tsx`
|
|
12
|
+
- `src/Components/KanbanBoard/KanbanBoard.test.tsx`
|