pixelize-design-library 2.4.1-beta.2 → 2.4.1-beta.3
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/dist/Components/Accordion/accordionColors.d.ts.map +1 -1
- package/dist/Components/Accordion/accordionColors.js +17 -3
- package/dist/Components/Checkbox/Checkbox.styles.d.ts.map +1 -1
- package/dist/Components/Checkbox/Checkbox.styles.js +13 -2
- package/dist/Components/CustomModulesTable/EditModuleModal.d.ts.map +1 -1
- package/dist/Components/CustomModulesTable/EditModuleModal.js +5 -1
- package/dist/Components/DatePicker/CalendarPanel.d.ts.map +1 -1
- package/dist/Components/DatePicker/CalendarPanel.js +3 -1
- package/dist/Components/Editor/joditThemeVars.d.ts.map +1 -1
- package/dist/Components/Editor/joditThemeVars.js +9 -0
- package/dist/Components/FilePreview/FilePreview.d.ts.map +1 -1
- package/dist/Components/FilePreview/FilePreview.js +3 -1
- package/dist/Components/FileUploader/FileUploader.js +2 -2
- package/dist/Components/FilterSidebar/FilterSidebar.js +1 -1
- package/dist/Components/NavigationBar/NavigationBar.d.ts.map +1 -1
- package/dist/Components/NavigationBar/NavigationBar.js +10 -6
- package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts.map +1 -1
- package/dist/Components/OrgSwitcher/OrgSwitcher.js +22 -3
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +1 -0
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts.map +1 -1
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +3 -3
- package/dist/Components/OrganizationDetails/CreateOrgModal.js +6 -4
- package/dist/Components/OrganizationDetails/OrganizationDetails.d.ts.map +1 -1
- package/dist/Components/OrganizationDetails/OrganizationDetails.js +55 -7
- package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +24 -14
- package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts.map +1 -1
- package/dist/Components/PlanPill/PlanPill.d.ts +5 -0
- package/dist/Components/PlanPill/PlanPill.d.ts.map +1 -0
- package/dist/Components/PlanPill/PlanPill.js +41 -0
- package/dist/Components/PlanPill/PlanPillProps.d.ts +28 -0
- package/dist/Components/PlanPill/PlanPillProps.d.ts.map +1 -0
- package/dist/Components/PlanPill/PlanPillProps.js +2 -0
- package/dist/Components/Search/Search.d.ts.map +1 -1
- package/dist/Components/Search/Search.js +4 -2
- package/dist/Components/Select/Select.styles.d.ts.map +1 -1
- package/dist/Components/Select/Select.styles.js +29 -20
- package/dist/Components/SelectSearch/SelectSearch.js +1 -1
- package/dist/Components/SideBar/SecondaryBar.d.ts.map +1 -1
- package/dist/Components/SideBar/SecondaryBar.js +10 -2
- package/dist/Components/SideBar/SideBar.js +1 -1
- package/dist/Components/SideBar/components/MenuItemBox.d.ts.map +1 -1
- package/dist/Components/SideBar/components/MenuItemBox.js +7 -6
- package/dist/Components/Table/components/tableRowHoverStyle.d.ts +9 -8
- package/dist/Components/Table/components/tableRowHoverStyle.d.ts.map +1 -1
- package/dist/Components/Table/components/tableRowHoverStyle.js +12 -12
- package/dist/Components/Table/settings/ManageColumns.js +2 -2
- package/dist/Components/UpgradeButton/UpgradeButton.d.ts.map +1 -1
- package/dist/Components/UpgradeButton/UpgradeButton.js +25 -7
- package/dist/Components/UserDetails/UserDetails.d.ts.map +1 -1
- package/dist/Components/UserDetails/UserDetails.js +5 -2
- package/dist/Theme/chakra/componentStyles.d.ts +2 -0
- package/dist/Theme/chakra/componentStyles.d.ts.map +1 -1
- package/dist/Theme/chakra/componentStyles.js +74 -0
- package/dist/Theme/chakra/createBrandTheme.d.ts.map +1 -1
- package/dist/Theme/chakra/createBrandTheme.js +47 -0
- package/dist/Theme/tokens/brands/index.d.ts.map +1 -1
- package/dist/Theme/tokens/brands/index.js +20 -18
- package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts.map +1 -1
- package/dist/Theme/tokens/brands/zinc/palette.dark.js +4 -2
- package/dist/Theme/tokens/builders/outlineRung.d.ts +35 -0
- package/dist/Theme/tokens/builders/outlineRung.d.ts.map +1 -0
- package/dist/Theme/tokens/builders/outlineRung.js +69 -0
- package/dist/Theme/tokens/builders/statusTone.d.ts +35 -0
- package/dist/Theme/tokens/builders/statusTone.d.ts.map +1 -0
- package/dist/Theme/tokens/builders/statusTone.js +63 -0
- package/dist/Utils/planExpiry.d.ts +19 -0
- package/dist/Utils/planExpiry.d.ts.map +1 -0
- package/dist/Utils/planExpiry.js +61 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -3
- package/package.json +5 -1
- package/.claude/settings.local.json +0 -51
- package/.cursor/TASK-SETUP.md +0 -43
- package/.cursor/agents/be-impl.md +0 -37
- package/.cursor/agents/fe-impl.md +0 -39
- package/.cursor/agents/task-plan.md +0 -56
- package/.cursor/agents/test-create.md +0 -31
- package/.cursor/agents/test-exec.md +0 -26
- package/.cursor/hooks/task-hint.env +0 -1
- package/.cursor/hooks/task-skill-nudge.sh +0 -71
- package/.cursor/hooks/task-slash-guard.sh +0 -31
- package/.cursor/hooks.json +0 -13
- package/.cursor/modules/account-management/MODULE.md +0 -41
- package/.cursor/modules/buttons/MODULE.md +0 -47
- package/.cursor/modules/cards/MODULE.md +0 -55
- package/.cursor/modules/charts/MODULE.md +0 -40
- package/.cursor/modules/common/MODULE.md +0 -36
- package/.cursor/modules/contact-auth/MODULE.md +0 -19
- package/.cursor/modules/data-display/MODULE.md +0 -42
- package/.cursor/modules/feedback/MODULE.md +0 -38
- package/.cursor/modules/form/MODULE.md +0 -13
- package/.cursor/modules/inputs-basic/MODULE.md +0 -42
- package/.cursor/modules/inputs-date-file/MODULE.md +0 -67
- package/.cursor/modules/inputs-select/MODULE.md +0 -89
- package/.cursor/modules/inputs-toggle/MODULE.md +0 -24
- package/.cursor/modules/kanban/MODULE.md +0 -22
- package/.cursor/modules/layout-navigation/MODULE.md +0 -319
- package/.cursor/modules/overlays/MODULE.md +0 -82
- package/.cursor/modules/playground/MODULE.md +0 -28
- package/.cursor/modules/table/MODULE.md +0 -84
- package/.cursor/modules/theme/MODULE.md +0 -431
- package/.cursor/modules/types-exports/MODULE.md +0 -17
- package/.cursor/modules/utility-ui/MODULE.md +0 -50
- package/.cursor/modules/utils-hooks/MODULE.md +0 -35
- package/.cursor/pixelize-task-statusline.sh +0 -64
- package/.cursor/plans/blocked/.gitkeep +0 -0
- package/.cursor/plans/current.md +0 -12
- package/.cursor/plans/current.theme-tokens-dark-mode.md +0 -77
- package/.cursor/plans/current.theme-tokens-dark.md +0 -155
- package/.cursor/plans/done/.gitkeep +0 -0
- package/.cursor/rules +0 -31
- package/.cursor/skills/task/SKILL.md +0 -167
- package/CLAUDE.md +0 -148
- package/__mocks__/styleMock.js +0 -8
- package/coverage/clover.xml +0 -405
- package/coverage/coverage-final.json +0 -16
- package/coverage/coverage-summary.json +0 -50
- package/coverage/lcov-report/Button/Button.tsx.html +0 -244
- package/coverage/lcov-report/Button/index.html +0 -116
- package/coverage/lcov-report/Checkbox/Checkbox.tsx.html +0 -433
- package/coverage/lcov-report/Checkbox/index.html +0 -116
- package/coverage/lcov-report/Common/ErrorMessage.tsx.html +0 -148
- package/coverage/lcov-report/Common/FormLabel.tsx.html +0 -331
- package/coverage/lcov-report/Common/HelperText.tsx.html +0 -124
- package/coverage/lcov-report/Common/index.html +0 -146
- package/coverage/lcov-report/Components/Button/Button.tsx.html +0 -244
- package/coverage/lcov-report/Components/Button/index.html +0 -116
- package/coverage/lcov-report/Components/Checkbox/Checkbox.tsx.html +0 -433
- package/coverage/lcov-report/Components/Checkbox/index.html +0 -116
- package/coverage/lcov-report/Components/Common/ErrorMessage.tsx.html +0 -148
- package/coverage/lcov-report/Components/Common/FormLabel.tsx.html +0 -331
- package/coverage/lcov-report/Components/Common/HelperText.tsx.html +0 -124
- package/coverage/lcov-report/Components/Common/index.html +0 -146
- package/coverage/lcov-report/Components/CustomModulesTable/CustomModulesTable.tsx.html +0 -712
- package/coverage/lcov-report/Components/CustomModulesTable/DeleteModuleModal.tsx.html +0 -343
- package/coverage/lcov-report/Components/CustomModulesTable/EditModuleModal.tsx.html +0 -313
- package/coverage/lcov-report/Components/CustomModulesTable/index.html +0 -146
- package/coverage/lcov-report/Components/Divider/Divider.tsx.html +0 -133
- package/coverage/lcov-report/Components/Divider/index.html +0 -116
- package/coverage/lcov-report/Components/Dropdown/DropDown.tsx.html +0 -994
- package/coverage/lcov-report/Components/Dropdown/index.html +0 -116
- package/coverage/lcov-report/Components/EmptyState/EmptyState.tsx.html +0 -466
- package/coverage/lcov-report/Components/EmptyState/index.html +0 -116
- package/coverage/lcov-report/Components/Header/HeaderActions.tsx.html +0 -373
- package/coverage/lcov-report/Components/Header/index.html +0 -116
- package/coverage/lcov-report/Components/Input/TextInput.tsx.html +0 -487
- package/coverage/lcov-report/Components/Input/index.html +0 -116
- package/coverage/lcov-report/Components/Input/textInputIconSize.ts.html +0 -205
- package/coverage/lcov-report/Components/KanbanBoard/AccountCard.tsx.html +0 -547
- package/coverage/lcov-report/Components/KanbanBoard/AccountRow.tsx.html +0 -190
- package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/KanbanActions.tsx.html +0 -247
- package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/index.html +0 -116
- package/coverage/lcov-report/Components/KanbanBoard/KanbanBoard.tsx.html +0 -3598
- package/coverage/lcov-report/Components/KanbanBoard/MeasuredItem.tsx.html +0 -283
- package/coverage/lcov-report/Components/KanbanBoard/index.html +0 -161
- package/coverage/lcov-report/Components/OrganizationDetails/CreateOrgModal.tsx.html +0 -511
- package/coverage/lcov-report/Components/OrganizationDetails/DeleteOrgModal.tsx.html +0 -334
- package/coverage/lcov-report/Components/OrganizationDetails/OrganizationDetails.tsx.html +0 -1519
- package/coverage/lcov-report/Components/OrganizationDetails/index.html +0 -146
- package/coverage/lcov-report/Components/RolesPermission/DeleteRoleModal.tsx.html +0 -328
- package/coverage/lcov-report/Components/RolesPermission/RolesPermission.tsx.html +0 -1732
- package/coverage/lcov-report/Components/RolesPermission/index.html +0 -131
- package/coverage/lcov-report/Components/SearchSelect/SearchSelect.tsx.html +0 -2575
- package/coverage/lcov-report/Components/SearchSelect/SelectTruncatedLabel.tsx.html +0 -202
- package/coverage/lcov-report/Components/SearchSelect/index.html +0 -146
- package/coverage/lcov-report/Components/SearchSelect/searchSelectSize.ts.html +0 -496
- package/coverage/lcov-report/Components/Select/Select.tsx.html +0 -361
- package/coverage/lcov-report/Components/Select/index.html +0 -116
- package/coverage/lcov-report/Components/SideBar/components/OtherApps.tsx.html +0 -562
- package/coverage/lcov-report/Components/SideBar/components/OverflowTooltipText.tsx.html +0 -346
- package/coverage/lcov-report/Components/SideBar/components/index.html +0 -116
- package/coverage/lcov-report/Components/SignInActivityTable/SignInActivityTable.tsx.html +0 -490
- package/coverage/lcov-report/Components/SignInActivityTable/index.html +0 -116
- package/coverage/lcov-report/Components/Table/components/TableActions.tsx.html +0 -595
- package/coverage/lcov-report/Components/Table/components/TableBody.tsx.html +0 -2212
- package/coverage/lcov-report/Components/Table/components/TableGroupRow.tsx.html +0 -358
- package/coverage/lcov-report/Components/Table/components/TableLoading.tsx.html +0 -358
- package/coverage/lcov-report/Components/Table/components/index.html +0 -161
- package/coverage/lcov-report/Components/Table/settings/ManageColumns.tsx.html +0 -856
- package/coverage/lcov-report/Components/Table/settings/index.html +0 -116
- package/coverage/lcov-report/Components/Tag/Tag.styles.tsx.html +0 -331
- package/coverage/lcov-report/Components/Tag/Tag.tsx.html +0 -256
- package/coverage/lcov-report/Components/Tag/index.html +0 -131
- package/coverage/lcov-report/Components/ToolTip/ToolTip.tsx.html +0 -286
- package/coverage/lcov-report/Components/ToolTip/index.html +0 -116
- package/coverage/lcov-report/Components/UserDetails/AddUserModal.tsx.html +0 -709
- package/coverage/lcov-report/Components/UserDetails/ChangeRoleModal.tsx.html +0 -505
- package/coverage/lcov-report/Components/UserDetails/DeactivateConfirmModal.tsx.html +0 -379
- package/coverage/lcov-report/Components/UserDetails/UserDetails.tsx.html +0 -1900
- package/coverage/lcov-report/Components/UserDetails/index.html +0 -161
- package/coverage/lcov-report/EmptyState/EmptyState.tsx.html +0 -466
- package/coverage/lcov-report/EmptyState/index.html +0 -116
- package/coverage/lcov-report/Hooks/index.html +0 -116
- package/coverage/lcov-report/Hooks/usePreferences.ts.html +0 -421
- package/coverage/lcov-report/Input/TextInput.tsx.html +0 -487
- package/coverage/lcov-report/Input/index.html +0 -131
- package/coverage/lcov-report/Input/textInputIconSize.ts.html +0 -205
- package/coverage/lcov-report/KanbanBoard.tsx.html +0 -3481
- package/coverage/lcov-report/OrganizationDetails/CreateOrgModal.tsx.html +0 -511
- package/coverage/lcov-report/OrganizationDetails/DeleteOrgModal.tsx.html +0 -334
- package/coverage/lcov-report/OrganizationDetails/OrganizationDetails.tsx.html +0 -1519
- package/coverage/lcov-report/OrganizationDetails/index.html +0 -146
- package/coverage/lcov-report/RolesPermission/DeleteRoleModal.tsx.html +0 -328
- package/coverage/lcov-report/RolesPermission/RolesPermission.tsx.html +0 -1732
- package/coverage/lcov-report/RolesPermission/index.html +0 -116
- package/coverage/lcov-report/SearchSelect/SearchSelect.tsx.html +0 -2575
- package/coverage/lcov-report/SearchSelect/SelectTruncatedLabel.tsx.html +0 -202
- package/coverage/lcov-report/SearchSelect/index.html +0 -146
- package/coverage/lcov-report/SearchSelect/searchSelectSize.ts.html +0 -496
- package/coverage/lcov-report/Table/CompactSelect.tsx.html +0 -379
- package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +0 -514
- package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +0 -373
- package/coverage/lcov-report/Table/Components/Pagination.tsx.html +0 -574
- package/coverage/lcov-report/Table/Components/TableActions.tsx.html +0 -574
- package/coverage/lcov-report/Table/Components/TableBody.tsx.html +0 -1027
- package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +0 -397
- package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +0 -1060
- package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +0 -361
- package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +0 -337
- package/coverage/lcov-report/Table/Components/index.html +0 -266
- package/coverage/lcov-report/Table/Components/useDebounce.ts.html +0 -178
- package/coverage/lcov-report/Table/Components/useTable.ts.html +0 -778
- package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +0 -1810
- package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +0 -178
- package/coverage/lcov-report/Table/Table.tsx.html +0 -1567
- package/coverage/lcov-report/Table/TableProps.tsx.html +0 -658
- package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +0 -619
- package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +0 -229
- package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +0 -532
- package/coverage/lcov-report/Table/TableSettings/index.html +0 -146
- package/coverage/lcov-report/Table/TableToDo.tsx.html +0 -973
- package/coverage/lcov-report/Table/TextOperationControls.tsx.html +0 -271
- package/coverage/lcov-report/Table/filterTypes.ts.html +0 -97
- package/coverage/lcov-report/Table/index.html +0 -176
- package/coverage/lcov-report/Table/settings/ManageColumns.tsx.html +0 -856
- package/coverage/lcov-report/Table/settings/index.html +0 -116
- package/coverage/lcov-report/Tag/Tag.tsx.html +0 -256
- package/coverage/lcov-report/Tag/index.html +0 -116
- package/coverage/lcov-report/Theme/buildBrandTokens.ts.html +0 -175
- package/coverage/lcov-report/Theme/chartColorsFromTheme.ts.html +0 -214
- package/coverage/lcov-report/Theme/index.html +0 -131
- package/coverage/lcov-report/Theme/useCustomTheme.ts.html +0 -100
- package/coverage/lcov-report/ToolTip/ToolTip.tsx.html +0 -286
- package/coverage/lcov-report/ToolTip/index.html +0 -116
- package/coverage/lcov-report/UserDetails/AddUserModal.tsx.html +0 -709
- package/coverage/lcov-report/UserDetails/ChangeRoleModal.tsx.html +0 -505
- package/coverage/lcov-report/UserDetails/index.html +0 -116
- package/coverage/lcov-report/Utils/functions.ts.html +0 -106
- package/coverage/lcov-report/Utils/index.html +0 -116
- package/coverage/lcov-report/Utils/table.ts.html +0 -1189
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -251
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov.info +0 -981
- package/dist/Theme/Dark/theme.d.ts +0 -3
- package/dist/Theme/Dark/theme.d.ts.map +0 -1
- package/dist/Theme/Dark/theme.js +0 -277
- package/dist/Theme/Default/palette.d.ts +0 -375
- package/dist/Theme/Default/palette.d.ts.map +0 -1
- package/dist/Theme/Default/palette.js +0 -306
- package/dist/Theme/Default/theme.d.ts +0 -3
- package/dist/Theme/Default/theme.d.ts.map +0 -1
- package/dist/Theme/Default/theme.js +0 -19
- package/dist/Theme/Emerald/palette.d.ts +0 -375
- package/dist/Theme/Emerald/palette.d.ts.map +0 -1
- package/dist/Theme/Emerald/palette.js +0 -125
- package/dist/Theme/Emerald/theme.d.ts +0 -3
- package/dist/Theme/Emerald/theme.d.ts.map +0 -1
- package/dist/Theme/Emerald/theme.js +0 -19
- package/dist/Theme/Meadow/palette.d.ts +0 -375
- package/dist/Theme/Meadow/palette.d.ts.map +0 -1
- package/dist/Theme/Meadow/palette.js +0 -123
- package/dist/Theme/Meadow/theme.d.ts +0 -3
- package/dist/Theme/Meadow/theme.d.ts.map +0 -1
- package/dist/Theme/Meadow/theme.js +0 -19
- package/dist/Theme/Radiant/palette.d.ts +0 -375
- package/dist/Theme/Radiant/palette.d.ts.map +0 -1
- package/dist/Theme/Radiant/palette.js +0 -125
- package/dist/Theme/Radiant/theme.d.ts +0 -3
- package/dist/Theme/Radiant/theme.d.ts.map +0 -1
- package/dist/Theme/Radiant/theme.js +0 -19
- package/dist/Theme/Rosewood/palette.d.ts +0 -375
- package/dist/Theme/Rosewood/palette.d.ts.map +0 -1
- package/dist/Theme/Rosewood/palette.js +0 -125
- package/dist/Theme/Rosewood/theme.d.ts +0 -3
- package/dist/Theme/Rosewood/theme.d.ts.map +0 -1
- package/dist/Theme/Rosewood/theme.js +0 -19
- package/dist/Theme/Skyline/palette.d.ts +0 -375
- package/dist/Theme/Skyline/palette.d.ts.map +0 -1
- package/dist/Theme/Skyline/palette.js +0 -123
- package/dist/Theme/Skyline/theme.d.ts +0 -3
- package/dist/Theme/Skyline/theme.d.ts.map +0 -1
- package/dist/Theme/Skyline/theme.js +0 -19
- package/dist/Theme/Slate/palette.d.ts +0 -375
- package/dist/Theme/Slate/palette.d.ts.map +0 -1
- package/dist/Theme/Slate/palette.js +0 -123
- package/dist/Theme/Slate/theme.d.ts +0 -3
- package/dist/Theme/Slate/theme.d.ts.map +0 -1
- package/dist/Theme/Slate/theme.js +0 -19
- package/dist/Theme/buildBrandTokens.d.ts +0 -16
- package/dist/Theme/buildBrandTokens.d.ts.map +0 -1
- package/dist/Theme/buildBrandTokens.js +0 -33
- package/dist/Theme/chartColorsFromTheme.d.ts +0 -19
- package/dist/Theme/chartColorsFromTheme.d.ts.map +0 -1
- package/dist/Theme/chartColorsFromTheme.js +0 -34
- package/dist/Theme/common.d.ts +0 -167
- package/dist/Theme/common.d.ts.map +0 -1
- package/dist/Theme/common.js +0 -112
- package/dist/Theme/componentStyles.d.ts +0 -10
- package/dist/Theme/componentStyles.d.ts.map +0 -1
- package/dist/Theme/componentStyles.js +0 -19
- package/dist/Theme/fonts.d.ts +0 -37
- package/dist/Theme/fonts.d.ts.map +0 -1
- package/dist/Theme/fonts.js +0 -41
- package/dist/Theme/space.d.ts +0 -34
- package/dist/Theme/space.d.ts.map +0 -1
- package/dist/Theme/space.js +0 -35
- package/dist/Theme/theme.d.ts +0 -3
- package/dist/Theme/theme.d.ts.map +0 -1
- package/dist/Theme/theme.js +0 -12
- package/eslint.config.js +0 -48
- package/index.html +0 -13
- package/vite.config.ts +0 -13
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getTableRowHoverStyle = void 0;
|
|
4
4
|
/**
|
|
5
|
-
* Per-cell hover fill for a table row. `table.hover[300]`
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* palette's
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
5
|
+
* Per-cell hover fill for a table row. `table.hover[300]` works in light mode — a pale tint on a
|
|
6
|
+
* white canvas — but in dark mode that rung sits within ~10 lightness points of the near-black
|
|
7
|
+
* canvas, computing to ~1.2:1: invisible, as QA reported.
|
|
8
|
+
*
|
|
9
|
+
* The first fix for that overshot to `background[900]`, the palette's BRIGHTEST rung (~10:1), and
|
|
10
|
+
* had to invert the row's ink to keep it readable — a near-white slab in a dark table. Dark-mode
|
|
11
|
+
* hover is a *lifted surface*, not an inversion: `table.hover[500]` is a visible step up from the
|
|
12
|
+
* canvas while staying dark enough that the row's resting `text[500]` ink is still legible, so no
|
|
13
|
+
* `color` flip is needed. Pinned by tableRowHoverStyle.test.ts.
|
|
13
14
|
*/
|
|
14
15
|
const getTableRowHoverStyle = (colors, isDark) => {
|
|
15
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j
|
|
16
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
16
17
|
if (isDark) {
|
|
17
18
|
return {
|
|
18
|
-
backgroundColor: (_b = (_a = colors.
|
|
19
|
-
color: (_e = colors.backgroundColor) === null || _e === void 0 ? void 0 : _e.main,
|
|
19
|
+
backgroundColor: (_c = (_b = (_a = colors.table) === null || _a === void 0 ? void 0 : _a.hover) === null || _b === void 0 ? void 0 : _b[500]) !== null && _c !== void 0 ? _c : (_d = colors.background) === null || _d === void 0 ? void 0 : _d[400],
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
return {
|
|
23
|
-
backgroundColor: (
|
|
23
|
+
backgroundColor: (_g = (_f = (_e = colors.table) === null || _e === void 0 ? void 0 : _e.hover) === null || _f === void 0 ? void 0 : _f[300]) !== null && _g !== void 0 ? _g : (_j = (_h = colors.secondary) === null || _h === void 0 ? void 0 : _h.opacity) === null || _j === void 0 ? void 0 : _j[4],
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
26
|
exports.getTableRowHoverStyle = getTableRowHoverStyle;
|
|
@@ -95,7 +95,7 @@ const ManageColumns = ({ columns, items, setItems, childInputMethodsRef, }) => {
|
|
|
95
95
|
// color={theme.colors.gray[300]}
|
|
96
96
|
_hover: { color: theme.colors.gray[500], bg: "transparent" } }), (0, jsx_runtime_1.jsx)(Checkbox_1.default, { isChecked: !item.isHidden, label: String(item.label), onChange: () => toggleCheckbox(item.id), size: "sm", labelSx: {
|
|
97
97
|
color: item.isHidden ? theme.colors.gray[500] : theme.colors.gray[700],
|
|
98
|
-
} }), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "12px", color: theme.colors.gray[
|
|
99
|
-
})) : ((0, jsx_runtime_1.jsx)(react_2.Text, { color: "gray.
|
|
98
|
+
} }), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "12px", color: theme.colors.gray[500], ml: 'auto', children: index + 1 })] }, item.id));
|
|
99
|
+
})) : ((0, jsx_runtime_1.jsx)(react_2.Text, { color: "gray.500", textAlign: "center", fontSize: "sm", py: 6, children: "No columns found" })) }), (0, jsx_runtime_1.jsxs)(react_2.Text, { fontSize: "xs", color: theme.colors.gray[500], mt: 2, textAlign: "right", children: [visibleCount, " / ", items.length, " visible"] })] }));
|
|
100
100
|
};
|
|
101
101
|
exports.default = ManageColumns;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpgradeButton.d.ts","sourceRoot":"","sources":["../../../src/Components/UpgradeButton/UpgradeButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UpgradeButton.d.ts","sourceRoot":"","sources":["../../../src/Components/UpgradeButton/UpgradeButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EACL,kBAAkB,EAGnB,MAAM,sBAAsB,CAAC;AAgB9B,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAyK/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -5,21 +5,33 @@ const react_1 = require("@chakra-ui/react");
|
|
|
5
5
|
const lucide_react_1 = require("lucide-react");
|
|
6
6
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
7
7
|
const accentText_1 = require("../../Theme/tokens/builders/accentText");
|
|
8
|
+
const color_1 = require("../../Theme/tokens/builders/color");
|
|
9
|
+
const outlineRung_1 = require("../../Theme/tokens/builders/outlineRung");
|
|
10
|
+
/** The brand's gold sparkle accent, kept only where it clears 3:1 on the button's own fill. */
|
|
11
|
+
const ACCENT_GOLD = "#FFD66B";
|
|
8
12
|
const sizeMap = {
|
|
9
|
-
|
|
13
|
+
// Compact, not tiny: an 8px subtitle was unreadable, so `sm` sits deliberately
|
|
14
|
+
// close to `md` — it's the dense variant of the same badge, not a smaller one.
|
|
15
|
+
sm: { px: "14px", py: "4px", font: "13px", sub: "9px", icon: 12, radius: "44px" },
|
|
10
16
|
md: { px: "20px", py: "5px", font: "14px", sub: "10px", icon: 13, radius: "50px" },
|
|
11
17
|
lg: { px: "26px", py: "8px", font: "16px", sub: "11px", icon: 16, radius: "60px" },
|
|
12
18
|
};
|
|
13
|
-
const UpgradeButton = ({ label, mobileLabel, subtitle, icon = lucide_react_1.Sparkles, iconColor
|
|
19
|
+
const UpgradeButton = ({ label, mobileLabel, subtitle, icon = lucide_react_1.Sparkles, iconColor, variant = "brand", gradient, size = "md", shimmer = true, isLoading = false, isDisabled = false, maxLabelWidth = "160px", ariaLabel, onClick, }) => {
|
|
14
20
|
var _a, _b;
|
|
15
21
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
16
22
|
const c = theme.colors;
|
|
17
23
|
// Only reachable if a consumer hand-builds a palette without `gradient`; every shipped brand sets it.
|
|
18
24
|
const themeGradient = (_a = c.gradient) !== null && _a !== void 0 ? _a : { from: c.primary[500], to: c.primary[700] };
|
|
25
|
+
// `primary`/`secondary` at [500]->[700] / [400]->[600] sit in the mid-luminance band where
|
|
26
|
+
// neither white nor black ink clears AA at both ends at once (measured worst-case as low as
|
|
27
|
+
// 2.72:1 across brands — no ink choice fixes a gradient with no readable ink at all). One rung
|
|
28
|
+
// darker moves both stops onto the same side of that divide; verified universally >=4.5 at
|
|
29
|
+
// both ends across all 9 brands x both modes. `success`/`warning`/`danger`/`info` already sit
|
|
30
|
+
// there at [400]->[600] and don't need the shift.
|
|
19
31
|
const variantGradient = {
|
|
20
32
|
brand: themeGradient,
|
|
21
|
-
primary: { from: c.primary[
|
|
22
|
-
secondary: { from: c.secondary[
|
|
33
|
+
primary: { from: c.primary[600], to: c.primary[800] },
|
|
34
|
+
secondary: { from: c.secondary[600], to: c.secondary[800] },
|
|
23
35
|
success: { from: c.semantic.success[400], to: c.semantic.success[600] },
|
|
24
36
|
warning: { from: c.semantic.warning[400], to: c.semantic.warning[600] },
|
|
25
37
|
danger: { from: c.semantic.error[400], to: c.semantic.error[600] },
|
|
@@ -27,9 +39,15 @@ const UpgradeButton = ({ label, mobileLabel, subtitle, icon = lucide_react_1.Spa
|
|
|
27
39
|
};
|
|
28
40
|
const resolved = (_b = gradient !== null && gradient !== void 0 ? gradient : variantGradient[variant]) !== null && _b !== void 0 ? _b : themeGradient;
|
|
29
41
|
// `iconColor`'s gold default fails AA as body text against this gradient (measured ~1.4-3.3
|
|
30
|
-
// across brands) — the label/subtitle share this computed ink instead.
|
|
31
|
-
// `iconColor` since non-text UI only needs WCAG 1.4.11's 3:1, which the gold clears.
|
|
42
|
+
// across brands) — the label/subtitle share this computed ink instead.
|
|
32
43
|
const ink = (0, accentText_1.onGradient)(resolved.from, resolved.to, c.white, c.black);
|
|
44
|
+
// The gold only clears 1.4.11's 3:1 on a DARK gradient. zinc dark inverts `primary` to a
|
|
45
|
+
// near-white fill, where gold-on-near-white measures ~1.3:1 and the icon vanishes, so fall
|
|
46
|
+
// back to the label's ink whenever the gold misses either stop.
|
|
47
|
+
const resolvedIconColor = iconColor !== null && iconColor !== void 0 ? iconColor : ((0, color_1.contrastRatio)(ACCENT_GOLD, resolved.from) >= outlineRung_1.AA_NON_TEXT &&
|
|
48
|
+
(0, color_1.contrastRatio)(ACCENT_GOLD, resolved.to) >= outlineRung_1.AA_NON_TEXT
|
|
49
|
+
? ACCENT_GOLD
|
|
50
|
+
: ink);
|
|
33
51
|
const s = sizeMap[size];
|
|
34
52
|
const Icon = icon;
|
|
35
53
|
const blocked = isLoading || isDisabled;
|
|
@@ -58,6 +76,6 @@ const UpgradeButton = ({ label, mobileLabel, subtitle, icon = lucide_react_1.Spa
|
|
|
58
76
|
pointerEvents: "none",
|
|
59
77
|
},
|
|
60
78
|
}
|
|
61
|
-
: undefined, children: [(0, jsx_runtime_1.jsxs)(react_1.Flex, { align: "center", gap: "6px", maxW: maxLabelWidth, overflow: "hidden", whiteSpace: "nowrap", zIndex: 1, children: [(0, jsx_runtime_1.jsx)(react_1.Text, { as: "span", fontSize: s.font, overflow: "hidden", textOverflow: "ellipsis", display: hasMobile ? { base: "none", md: "block" } : "block", children: label }), hasMobile && ((0, jsx_runtime_1.jsx)(react_1.Text, { as: "span", fontSize: s.font, overflow: "hidden", textOverflow: "ellipsis", display: { base: "block", md: "none" }, children: mobileLabel })), isLoading ? ((0, jsx_runtime_1.jsx)(react_1.Spinner, { size: "xs", thickness: "1.5px", color:
|
|
79
|
+
: undefined, children: [(0, jsx_runtime_1.jsxs)(react_1.Flex, { align: "center", gap: "6px", maxW: maxLabelWidth, overflow: "hidden", whiteSpace: "nowrap", zIndex: 1, children: [(0, jsx_runtime_1.jsx)(react_1.Text, { as: "span", fontSize: s.font, overflow: "hidden", textOverflow: "ellipsis", display: hasMobile ? { base: "none", md: "block" } : "block", children: label }), hasMobile && ((0, jsx_runtime_1.jsx)(react_1.Text, { as: "span", fontSize: s.font, overflow: "hidden", textOverflow: "ellipsis", display: { base: "block", md: "none" }, children: mobileLabel })), isLoading ? ((0, jsx_runtime_1.jsx)(react_1.Spinner, { size: "xs", thickness: "1.5px", color: resolvedIconColor })) : (Icon && (0, jsx_runtime_1.jsx)(Icon, { size: s.icon, color: resolvedIconColor, style: { flexShrink: 0 } }))] }), subtitle && ((0, jsx_runtime_1.jsx)(react_1.Text, { as: "span", mt: "1px", fontSize: s.sub, fontWeight: "bold", color: ink, maxW: maxLabelWidth, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", zIndex: 1, children: subtitle }))] }));
|
|
62
80
|
};
|
|
63
81
|
exports.default = UpgradeButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserDetails.d.ts","sourceRoot":"","sources":["../../../src/Components/UserDetails/UserDetails.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UserDetails.d.ts","sourceRoot":"","sources":["../../../src/Components/UserDetails/UserDetails.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAmCjD,OAAO,EAEL,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAyC5B,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAwhB3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -41,6 +41,7 @@ const react_1 = __importStar(require("react"));
|
|
|
41
41
|
const react_2 = require("@chakra-ui/react");
|
|
42
42
|
const lucide_react_1 = require("lucide-react");
|
|
43
43
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
44
|
+
const outlineRung_1 = require("../../Theme/tokens/builders/outlineRung");
|
|
44
45
|
const accentText_1 = require("../../Theme/tokens/builders/accentText");
|
|
45
46
|
const EmptyState_1 = __importDefault(require("../EmptyState/EmptyState"));
|
|
46
47
|
const AddUserModal_1 = __importDefault(require("./AddUserModal"));
|
|
@@ -130,9 +131,11 @@ const UserDetails = ({ users, selectedUser, selectedUserId, roleOptions = [], ca
|
|
|
130
131
|
onConfirmOpen();
|
|
131
132
|
}
|
|
132
133
|
}, children: labels.deactivateUser }))] }))] }), (0, jsx_runtime_1.jsxs)(react_2.Box, { p: 4, children: [(0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "xs", fontWeight: 600, textTransform: "uppercase", letterSpacing: "0.05em", color: muted, mb: 3, children: labels.personalInformation }), (0, jsx_runtime_1.jsx)(react_2.Box, { border: "1px solid", borderColor: border, borderRadius: "lg", overflow: "hidden", children: selectedUser.details.map((detail, index) => {
|
|
133
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
134
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
134
135
|
const Icon = (_a = detail.icon) !== null && _a !== void 0 ? _a : lucide_react_1.UserRound;
|
|
135
|
-
return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { gap: 3, px: 3, py: 2.5, _hover: {
|
|
136
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { gap: 3, px: 3, py: 2.5, _hover: {
|
|
137
|
+
bg: (0, outlineRung_1.resolveHoverTint)((_c = (_b = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _b === void 0 ? void 0 : _b[50]) !== null && _c !== void 0 ? _c : "#F8FAFC", (_e = (_d = colors === null || colors === void 0 ? void 0 : colors.background) === null || _d === void 0 ? void 0 : _d[50]) !== null && _e !== void 0 ? _e : "#ffffff"),
|
|
138
|
+
}, alignItems: "center", transition: "background 0.15s ease", children: [(0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: "30px", bg: (_g = (_f = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _f === void 0 ? void 0 : _f[50]) !== null && _g !== void 0 ? _g : "#EEF2FF", borderRadius: "lg", color: (_j = (_h = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _h === void 0 ? void 0 : _h[600]) !== null && _j !== void 0 ? _j : "#4F46E5", flexShrink: 0, children: (0, jsx_runtime_1.jsx)(Icon, { size: 15 }) }), (0, jsx_runtime_1.jsx)(react_2.Box, { minWidth: "110px", children: (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "xs", fontWeight: 600, color: muted, children: detail.label }) }), (0, jsx_runtime_1.jsx)(react_2.Box, { flex: 1, children: (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", color: heading, fontWeight: 500, children: detail.value }) })] }), index < selectedUser.details.length - 1 && ((0, jsx_runtime_1.jsx)(react_2.Divider, { borderColor: border }))] }, index));
|
|
136
139
|
}) })] })] })) : ((0, jsx_runtime_1.jsx)(EmptyState_1.default, { icon: lucide_react_1.UserRound, title: labels.selectTeamMember, description: labels.noUserSelected, minH: "300px" })) })] }), (0, jsx_runtime_1.jsx)(AddUserModal_1.default, { isOpen: isAddUserOpen, onClose: onAddUserClose, roleOptions: roleOptions, isLoading: isAddUserLoading, onSubmit: async (values) => {
|
|
137
140
|
await (onAddUserSubmit === null || onAddUserSubmit === void 0 ? void 0 : onAddUserSubmit(values));
|
|
138
141
|
onAddUserClose();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ComponentStyleConfig, StyleFunctionProps } from "@chakra-ui/react";
|
|
2
2
|
export declare const componentStyles: {
|
|
3
3
|
Checkbox: ComponentStyleConfig;
|
|
4
|
+
Radio: import("@chakra-ui/react").ComponentSingleStyleConfig;
|
|
4
5
|
Input: ComponentStyleConfig;
|
|
5
6
|
Button: ComponentStyleConfig;
|
|
6
7
|
Select: ComponentStyleConfig;
|
|
@@ -236,5 +237,6 @@ export declare const componentStyles: {
|
|
|
236
237
|
};
|
|
237
238
|
Skeleton: import("@chakra-ui/react").ComponentSingleStyleConfig;
|
|
238
239
|
Tooltip: import("@chakra-ui/react").ComponentSingleStyleConfig;
|
|
240
|
+
CloseButton: import("@chakra-ui/react").ComponentSingleStyleConfig;
|
|
239
241
|
};
|
|
240
242
|
//# sourceMappingURL=componentStyles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentStyles.d.ts","sourceRoot":"","sources":["../../../src/Theme/chakra/componentStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAU,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"componentStyles.d.ts","sourceRoot":"","sources":["../../../src/Theme/chakra/componentStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAU,MAAM,kBAAkB,CAAC;AAqMpF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsB3B,CAAC"}
|
|
@@ -11,6 +11,7 @@ const InputTextArea_style_1 = require("../../Components/InputTextArea/InputTextA
|
|
|
11
11
|
const NumberInput_styles_1 = require("../../Components/NumberInput/NumberInput.styles");
|
|
12
12
|
const accentText_1 = require("../tokens/builders/accentText");
|
|
13
13
|
const color_1 = require("../tokens/builders/color");
|
|
14
|
+
const outlineRung_1 = require("../tokens/builders/outlineRung");
|
|
14
15
|
const Drawer_styles_1 = require("./Drawer.styles");
|
|
15
16
|
const Menu_styles_1 = require("./Menu.styles");
|
|
16
17
|
const Modal_styles_1 = require("./Modal.styles");
|
|
@@ -127,8 +128,80 @@ const Skeleton = {
|
|
|
127
128
|
});
|
|
128
129
|
},
|
|
129
130
|
};
|
|
131
|
+
// Chakra's `extendTheme` does not REPLACE a component's stock baseStyle when ours is also a
|
|
132
|
+
// function — it calls BOTH and deep-merges the two returned plain objects, key by key. Chakra's
|
|
133
|
+
// own stock Radio (@chakra-ui/theme radio.mjs) writes its checked dot with the shorthand style
|
|
134
|
+
// props `bg`/`w`/`h`/`pos`; an earlier version of this override used the full CSS property names
|
|
135
|
+
// (`background`/`width`/`height`/`position`). A deep merge treats those as DIFFERENT keys, so
|
|
136
|
+
// both survived into the final style object instead of one cleanly overwriting the other — and
|
|
137
|
+
// in practice Chakra's own `bg: "currentColor"` rung won, leaving a hardcoded-black dot. Using
|
|
138
|
+
// the exact same keys Chakra's stock style uses makes every one of ours a scalar overwrite, and
|
|
139
|
+
// `!important` on the two colour-bearing declarations removes any remaining doubt about which
|
|
140
|
+
// value survives serialization — verified against the actual rendered cascade, not just this
|
|
141
|
+
// function's return value (see componentStyles.radioDotMerge.test.ts, which asserts the merge
|
|
142
|
+
// behavior directly rather than only the function output).
|
|
143
|
+
const Radio = {
|
|
144
|
+
baseStyle: ({ theme, colorScheme }) => {
|
|
145
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
146
|
+
const swatch = (_a = theme.colors) === null || _a === void 0 ? void 0 : _a[colorScheme];
|
|
147
|
+
const fill = (_b = swatch === null || swatch === void 0 ? void 0 : swatch[500]) !== null && _b !== void 0 ? _b : (_d = (_c = theme.colors) === null || _c === void 0 ? void 0 : _c.primary) === null || _d === void 0 ? void 0 : _d[500];
|
|
148
|
+
const white = (_f = (_e = theme.colors) === null || _e === void 0 ? void 0 : _e.white) !== null && _f !== void 0 ? _f : "#ffffff";
|
|
149
|
+
const black = (_h = (_g = theme.colors) === null || _g === void 0 ? void 0 : _g.black) !== null && _h !== void 0 ? _h : "#000000";
|
|
150
|
+
const dot = (0, accentText_1.onFilled)(fill, white, black);
|
|
151
|
+
// A browser probe found the checked radio's hover repeating its own resting `fill` —
|
|
152
|
+
// Chakra's stock checked._hover (inherited from checkbox) lands on the SAME `bg`/`borderColor`
|
|
153
|
+
// keys we do, so extendTheme's merge is a scalar overwrite here, not a coexisting selector;
|
|
154
|
+
// ours must supply a value that actually differs from resting, same fix shape as
|
|
155
|
+
// NavigationBar/OrgSwitcher's "hand a fill its own resting bg as the backdrop" pattern.
|
|
156
|
+
const hoverFill = (0, outlineRung_1.resolveHoverTint)(fill, fill);
|
|
157
|
+
return {
|
|
158
|
+
control: {
|
|
159
|
+
borderColor: (_k = (_j = theme.colors) === null || _j === void 0 ? void 0 : _j.boxborder) === null || _k === void 0 ? void 0 : _k[500],
|
|
160
|
+
_checked: {
|
|
161
|
+
bg: `${fill} !important`,
|
|
162
|
+
borderColor: `${fill} !important`,
|
|
163
|
+
color: `${dot} !important`,
|
|
164
|
+
_before: {
|
|
165
|
+
content: `""`,
|
|
166
|
+
display: "inline-block",
|
|
167
|
+
pos: "relative",
|
|
168
|
+
w: "50%",
|
|
169
|
+
h: "50%",
|
|
170
|
+
borderRadius: "50%",
|
|
171
|
+
bg: `${dot} !important`,
|
|
172
|
+
},
|
|
173
|
+
_hover: { bg: `${hoverFill} !important`, borderColor: `${hoverFill} !important` },
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
},
|
|
178
|
+
defaultProps: { colorScheme: "primary" },
|
|
179
|
+
};
|
|
180
|
+
const $closeButtonBg = (0, react_1.cssVar)("close-button-bg");
|
|
181
|
+
/**
|
|
182
|
+
* Chakra's stock CloseButton hover/active wash (`blackAlpha.100`/`.200`) only swaps to
|
|
183
|
+
* `whiteAlpha.100`/`.200` under `_dark` — dead in this app (see createBrandTheme's colorMode
|
|
184
|
+
* comment) — so a CloseButton on a dark canvas keeps the light-mode blackAlpha wash, which reads
|
|
185
|
+
* as almost no affordance against a dark surface. The light-mode values themselves also measure
|
|
186
|
+
* borderline against `background[50]` (1.14/1.19, under `MIN_PERCEPTIBLE_STEP`). Branch on the
|
|
187
|
+
* palette's own actual canvas (`isDarkCanvas`), not Chakra's dead colorMode, and step one rung up
|
|
188
|
+
* each scale (`.200`/`.300`) — verified >=1.19 across all 9 brands x both modes
|
|
189
|
+
* (closeButtonHover.test.ts).
|
|
190
|
+
*/
|
|
191
|
+
const CloseButton = {
|
|
192
|
+
baseStyle: ({ theme }) => {
|
|
193
|
+
var _a, _b, _c, _d, _e;
|
|
194
|
+
const dark = (0, accentText_1.isDarkCanvas)((_c = (_b = (_a = theme.colors) === null || _a === void 0 ? void 0 : _a.backgroundColor) === null || _b === void 0 ? void 0 : _b.main) !== null && _c !== void 0 ? _c : "#ffffff");
|
|
195
|
+
const alpha = dark ? (_d = theme.colors) === null || _d === void 0 ? void 0 : _d.whiteAlpha : (_e = theme.colors) === null || _e === void 0 ? void 0 : _e.blackAlpha;
|
|
196
|
+
return {
|
|
197
|
+
_hover: { [$closeButtonBg.variable]: alpha === null || alpha === void 0 ? void 0 : alpha[200] },
|
|
198
|
+
_active: { [$closeButtonBg.variable]: alpha === null || alpha === void 0 ? void 0 : alpha[300] },
|
|
199
|
+
};
|
|
200
|
+
},
|
|
201
|
+
};
|
|
130
202
|
exports.componentStyles = {
|
|
131
203
|
Checkbox: Checkbox_styles_1.Checkbox,
|
|
204
|
+
Radio,
|
|
132
205
|
Input: TextInput_styles_1.Input,
|
|
133
206
|
Button: Button_styles_1.Button,
|
|
134
207
|
Select: Select_styles_1.Select,
|
|
@@ -147,4 +220,5 @@ exports.componentStyles = {
|
|
|
147
220
|
Avatar: Avatar_styles_1.Avatar,
|
|
148
221
|
Skeleton,
|
|
149
222
|
Tooltip,
|
|
223
|
+
CloseButton,
|
|
150
224
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBrandTheme.d.ts","sourceRoot":"","sources":["../../../src/Theme/chakra/createBrandTheme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"createBrandTheme.d.ts","sourceRoot":"","sources":["../../../src/Theme/chakra/createBrandTheme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAOvE,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,YAAY,EACrB,UAAS,uBAA4B,wBAuGtC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -8,6 +8,7 @@ const react_1 = require("@chakra-ui/react");
|
|
|
8
8
|
const common_web_1 = __importDefault(require("./common.web"));
|
|
9
9
|
const fonts_web_1 = __importDefault(require("./fonts.web"));
|
|
10
10
|
const componentStyles_1 = require("./componentStyles");
|
|
11
|
+
const accentText_1 = require("../tokens/builders/accentText");
|
|
11
12
|
/**
|
|
12
13
|
* Builds a Chakra theme from a pure brand palette.
|
|
13
14
|
*
|
|
@@ -63,10 +64,56 @@ const createBrandTheme = (palette, options = {}) => {
|
|
|
63
64
|
? {
|
|
64
65
|
styles: {
|
|
65
66
|
global: {
|
|
67
|
+
// Native widgets the page cannot style — the `<select>` dropdown list and the
|
|
68
|
+
// time/date picker popups — are painted by the browser, which defaults to light
|
|
69
|
+
// and produced white popups on the dark canvas. `color-scheme` is the only way to
|
|
70
|
+
// tell it otherwise.
|
|
71
|
+
html: {
|
|
72
|
+
colorScheme: "dark",
|
|
73
|
+
},
|
|
66
74
|
body: {
|
|
67
75
|
bg: palette.backgroundColor.main,
|
|
68
76
|
color: palette.text[900],
|
|
69
77
|
},
|
|
78
|
+
// Text selection is another browser-painted surface `color-scheme` doesn't cover —
|
|
79
|
+
// the UA default `::selection` stays a light highlight regardless of theme, so
|
|
80
|
+
// selecting text anywhere (e.g. a table cell) shows a stray white/lavender patch on
|
|
81
|
+
// the dark canvas. Brand it instead, with WCAG-safe ink via the same `onFilled` math
|
|
82
|
+
// used for buttons/badges.
|
|
83
|
+
"::selection": {
|
|
84
|
+
background: palette.primary[500],
|
|
85
|
+
color: (0, accentText_1.onFilled)(palette.primary[500], palette.white, palette.black),
|
|
86
|
+
},
|
|
87
|
+
"::-moz-selection": {
|
|
88
|
+
background: palette.primary[500],
|
|
89
|
+
color: (0, accentText_1.onFilled)(palette.primary[500], palette.white, palette.black),
|
|
90
|
+
},
|
|
91
|
+
// `color-scheme: dark` gives WebKit/Blink a dark scrollbar by default, but it's the
|
|
92
|
+
// OS's generic dark gray, not brand-aware — style it explicitly so it matches the
|
|
93
|
+
// canvas instead of floating as a mismatched gray bar.
|
|
94
|
+
"::-webkit-scrollbar": {
|
|
95
|
+
width: "10px",
|
|
96
|
+
height: "10px",
|
|
97
|
+
},
|
|
98
|
+
"::-webkit-scrollbar-track": {
|
|
99
|
+
background: palette.backgroundColor.main,
|
|
100
|
+
},
|
|
101
|
+
"::-webkit-scrollbar-thumb": {
|
|
102
|
+
background: palette.gray[600],
|
|
103
|
+
borderRadius: "6px",
|
|
104
|
+
},
|
|
105
|
+
"::-webkit-scrollbar-thumb:hover": {
|
|
106
|
+
background: palette.gray[500],
|
|
107
|
+
},
|
|
108
|
+
// Chrome/Edge autofill paints its own opaque yellow/white fill behind the input
|
|
109
|
+
// text via `-webkit-box-shadow` (not `background`), so a plain `bg` override never
|
|
110
|
+
// reaches it — a bright light box survives on every dark autofilled field unless
|
|
111
|
+
// overridden with the same trick.
|
|
112
|
+
"input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus": {
|
|
113
|
+
WebkitBoxShadow: `0 0 0px 1000px ${palette.backgroundColor.secondary} inset`,
|
|
114
|
+
WebkitTextFillColor: palette.text[900],
|
|
115
|
+
caretColor: palette.text[900],
|
|
116
|
+
},
|
|
70
117
|
},
|
|
71
118
|
},
|
|
72
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Theme/tokens/brands/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAC9C,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAC9C,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAC1C,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAC9C,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,IAAI,MAAM,sBAAsB,CAAC;AAExC,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Theme/tokens/brands/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAC9C,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAC9C,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAC1C,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAC9C,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,IAAI,MAAM,sBAAsB,CAAC;AAExC,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAgB3E,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC1F,OAAO,EACL,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,CAAC;AAKF,4EAA4E;AAC5E,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAUzD,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAUxD,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAU/E,CAAC;AAEF,eAAO,MAAM,UAAU,EAAiC,SAAS,EAAE,CAAC"}
|
|
@@ -41,6 +41,7 @@ exports.storefrontDark = palette_dark_8.default;
|
|
|
41
41
|
const palette_dark_9 = __importDefault(require("./zinc/palette.dark"));
|
|
42
42
|
exports.zincDark = palette_dark_9.default;
|
|
43
43
|
const accentText_1 = require("../builders/accentText");
|
|
44
|
+
const outlineRung_1 = require("../builders/outlineRung");
|
|
44
45
|
/**
|
|
45
46
|
* Derived here rather than hand-written into each brand's literal: it must track that brand's
|
|
46
47
|
* own primary scale and canvas, and a stale hand-copied hex would silently fail AA.
|
|
@@ -53,29 +54,30 @@ const withAccentText = (palette) => {
|
|
|
53
54
|
accentText: (_a = palette.accentText) !== null && _a !== void 0 ? _a : (0, accentText_1.pickAccentText)(palette.primary, palette.backgroundColor.main, "light"),
|
|
54
55
|
});
|
|
55
56
|
};
|
|
57
|
+
const lightBrand = (palette) => (0, outlineRung_1.withOutlineRung)(withAccentText(palette), "light");
|
|
56
58
|
/** Light palette per brand. `lavender` is the base the other six extend. */
|
|
57
59
|
exports.lightPalettes = {
|
|
58
|
-
lavender:
|
|
59
|
-
meadow:
|
|
60
|
-
radiant:
|
|
61
|
-
skyline:
|
|
62
|
-
slate:
|
|
63
|
-
emerald:
|
|
64
|
-
rosewood:
|
|
65
|
-
storefront:
|
|
66
|
-
zinc:
|
|
60
|
+
lavender: lightBrand(palette_light_1.default),
|
|
61
|
+
meadow: lightBrand(palette_light_2.default),
|
|
62
|
+
radiant: lightBrand(palette_light_3.default),
|
|
63
|
+
skyline: lightBrand(palette_light_4.default),
|
|
64
|
+
slate: lightBrand(palette_light_5.default),
|
|
65
|
+
emerald: lightBrand(palette_light_6.default),
|
|
66
|
+
rosewood: lightBrand(palette_light_7.default),
|
|
67
|
+
storefront: lightBrand(palette_light_8.default),
|
|
68
|
+
zinc: lightBrand(palette_light_9.default),
|
|
67
69
|
};
|
|
68
70
|
/** Dark palette per brand, derived from the matching light palette. */
|
|
69
71
|
exports.darkPalettes = {
|
|
70
|
-
lavender: palette_dark_1.default,
|
|
71
|
-
meadow: palette_dark_2.default,
|
|
72
|
-
radiant: palette_dark_3.default,
|
|
73
|
-
skyline: palette_dark_4.default,
|
|
74
|
-
slate: palette_dark_5.default,
|
|
75
|
-
emerald: palette_dark_6.default,
|
|
76
|
-
rosewood: palette_dark_7.default,
|
|
77
|
-
storefront: palette_dark_8.default,
|
|
78
|
-
zinc: palette_dark_9.default,
|
|
72
|
+
lavender: (0, outlineRung_1.withOutlineRung)(palette_dark_1.default, "dark"),
|
|
73
|
+
meadow: (0, outlineRung_1.withOutlineRung)(palette_dark_2.default, "dark"),
|
|
74
|
+
radiant: (0, outlineRung_1.withOutlineRung)(palette_dark_3.default, "dark"),
|
|
75
|
+
skyline: (0, outlineRung_1.withOutlineRung)(palette_dark_4.default, "dark"),
|
|
76
|
+
slate: (0, outlineRung_1.withOutlineRung)(palette_dark_5.default, "dark"),
|
|
77
|
+
emerald: (0, outlineRung_1.withOutlineRung)(palette_dark_6.default, "dark"),
|
|
78
|
+
rosewood: (0, outlineRung_1.withOutlineRung)(palette_dark_7.default, "dark"),
|
|
79
|
+
storefront: (0, outlineRung_1.withOutlineRung)(palette_dark_8.default, "dark"),
|
|
80
|
+
zinc: (0, outlineRung_1.withOutlineRung)(palette_dark_9.default, "dark"),
|
|
79
81
|
};
|
|
80
82
|
// Built from lightPalettes/darkPalettes (not the raw literals) so accentText can never be
|
|
81
83
|
// present on one map and missing on the other.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.dark.d.ts","sourceRoot":"","sources":["../../../../../src/Theme/tokens/brands/zinc/palette.dark.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"palette.dark.d.ts","sourceRoot":"","sources":["../../../../../src/Theme/tokens/brands/zinc/palette.dark.ts"],"names":[],"mappings":"AAuLA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -93,13 +93,15 @@ const header = {
|
|
|
93
93
|
900: "#ffffff",
|
|
94
94
|
};
|
|
95
95
|
// muted-foreground = gray[500] = #a1a1aa (5.81:1 on the #27272a muted surface); it also serves
|
|
96
|
-
// as the focus ring on the #09090b canvas (7.76:1). gray[400] = the
|
|
96
|
+
// as the focus ring on the #09090b canvas (7.76:1). gray[400] = the interactive border/icon rung:
|
|
97
|
+
// #6b6b75 (matching border[500]) measured 2.95:1 on the LIGHTEST named surface, just under the 3:1
|
|
98
|
+
// non-text bar it is used at, so it is one step lighter than border[500] here.
|
|
97
99
|
const gray = {
|
|
98
100
|
50: "#18181b",
|
|
99
101
|
100: "#27272a",
|
|
100
102
|
200: "#3f3f46",
|
|
101
103
|
300: "#52525b",
|
|
102
|
-
400: "#
|
|
104
|
+
400: "#71717a",
|
|
103
105
|
500: "#a1a1aa",
|
|
104
106
|
600: "#b4b4bb",
|
|
105
107
|
700: "#d4d4d8",
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PaletteProps, ResolvedColorMode } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* The floor a hover/active state's step off its own resting surface must clear to be seen at
|
|
4
|
+
* all — same value the SideBar ladder, Accordion, and NavigationBar hover states are held to.
|
|
5
|
+
* A "hover" a user cannot perceive is not a hover.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MIN_PERCEPTIBLE_STEP = 1.15;
|
|
8
|
+
/** WCAG 1.4.11 — a control outline is a UI component boundary, held to 3:1. */
|
|
9
|
+
export declare const AA_NON_TEXT = 3;
|
|
10
|
+
/**
|
|
11
|
+
* Walks a hex toward `target` contrast against `backdrop`, keeping its hue and saturation so the
|
|
12
|
+
* result still reads as the same colour. Darkens when `mode` is light, lightens when dark, and
|
|
13
|
+
* stops at the FIRST passing step so nothing overshoots to black or white.
|
|
14
|
+
*/
|
|
15
|
+
export declare function liftToContrast(hex: string, backdrop: string, mode: ResolvedColorMode, target?: number): string;
|
|
16
|
+
/**
|
|
17
|
+
* `boxborder[500]` is the rung every control outline reads (Checkbox, SearchSelect, the date
|
|
18
|
+
* pickers, the editor's inputs). It was authored as a decorative value — measured 1.30-2.56:1
|
|
19
|
+
* across brands, so those controls rendered effectively borderless in BOTH modes. Resolved here
|
|
20
|
+
* rather than hand-pinned per brand: a copied hex goes stale the moment a canvas moves.
|
|
21
|
+
*
|
|
22
|
+
* `border[*]` is deliberately untouched — that ramp draws table gridlines, which are decorative
|
|
23
|
+
* and outside 1.4.11.
|
|
24
|
+
*/
|
|
25
|
+
export declare function withOutlineRung(palette: PaletteProps, mode: ResolvedColorMode): PaletteProps;
|
|
26
|
+
/**
|
|
27
|
+
* A hover/active tint resolved against the surface it actually sits on, guaranteed to clear
|
|
28
|
+
* `MIN_PERCEPTIBLE_STEP`. Written for the recurring shape found across NavigationBar, UserDetails
|
|
29
|
+
* and Accordion: a pale `primary[50]`/`gray[50]` tint that measures near-1.0 on a near-white
|
|
30
|
+
* surface — invisible — with no dark-mode branch, so the same call site is wrong in both modes at
|
|
31
|
+
* once. `restSurface` is required rather than assumed white/black: a menu item's hover sits on
|
|
32
|
+
* its OWN list background, not necessarily the page canvas.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveHoverTint(seed: string, restSurface: string): string;
|
|
35
|
+
//# sourceMappingURL=outlineRung.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outlineRung.d.ts","sourceRoot":"","sources":["../../../../src/Theme/tokens/builders/outlineRung.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,+EAA+E;AAC/E,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,iBAAiB,EACvB,MAAM,GAAE,MAAoB,GAC3B,MAAM,CAaR;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,GAAG,YAAY,CAc5F;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAG1E"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AA_NON_TEXT = exports.MIN_PERCEPTIBLE_STEP = void 0;
|
|
4
|
+
exports.liftToContrast = liftToContrast;
|
|
5
|
+
exports.withOutlineRung = withOutlineRung;
|
|
6
|
+
exports.resolveHoverTint = resolveHoverTint;
|
|
7
|
+
const color_1 = require("./color");
|
|
8
|
+
const accentText_1 = require("./accentText");
|
|
9
|
+
/**
|
|
10
|
+
* The floor a hover/active state's step off its own resting surface must clear to be seen at
|
|
11
|
+
* all — same value the SideBar ladder, Accordion, and NavigationBar hover states are held to.
|
|
12
|
+
* A "hover" a user cannot perceive is not a hover.
|
|
13
|
+
*/
|
|
14
|
+
exports.MIN_PERCEPTIBLE_STEP = 1.15;
|
|
15
|
+
/** WCAG 1.4.11 — a control outline is a UI component boundary, held to 3:1. */
|
|
16
|
+
exports.AA_NON_TEXT = 3;
|
|
17
|
+
/**
|
|
18
|
+
* Walks a hex toward `target` contrast against `backdrop`, keeping its hue and saturation so the
|
|
19
|
+
* result still reads as the same colour. Darkens when `mode` is light, lightens when dark, and
|
|
20
|
+
* stops at the FIRST passing step so nothing overshoots to black or white.
|
|
21
|
+
*/
|
|
22
|
+
function liftToContrast(hex, backdrop, mode, target = exports.AA_NON_TEXT) {
|
|
23
|
+
if ((0, color_1.contrastRatio)(hex, backdrop) >= target)
|
|
24
|
+
return hex;
|
|
25
|
+
const { s } = (0, color_1.hexToHsl)(hex);
|
|
26
|
+
const step = mode === "dark" ? 1 : -1;
|
|
27
|
+
let { l } = (0, color_1.hexToHsl)(hex);
|
|
28
|
+
while (l > 0 && l < 100) {
|
|
29
|
+
l += step;
|
|
30
|
+
const next = (0, color_1.withLightness)(hex, l, s);
|
|
31
|
+
if ((0, color_1.contrastRatio)(next, backdrop) >= target)
|
|
32
|
+
return next;
|
|
33
|
+
}
|
|
34
|
+
return (0, color_1.withLightness)(hex, mode === "dark" ? 100 : 0, s);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* `boxborder[500]` is the rung every control outline reads (Checkbox, SearchSelect, the date
|
|
38
|
+
* pickers, the editor's inputs). It was authored as a decorative value — measured 1.30-2.56:1
|
|
39
|
+
* across brands, so those controls rendered effectively borderless in BOTH modes. Resolved here
|
|
40
|
+
* rather than hand-pinned per brand: a copied hex goes stale the moment a canvas moves.
|
|
41
|
+
*
|
|
42
|
+
* `border[*]` is deliberately untouched — that ramp draws table gridlines, which are decorative
|
|
43
|
+
* and outside 1.4.11.
|
|
44
|
+
*/
|
|
45
|
+
function withOutlineRung(palette, mode) {
|
|
46
|
+
const current = palette.boxborder[500];
|
|
47
|
+
// The border sits between the control's fill and the surface behind it; hold it to the
|
|
48
|
+
// harder of the two.
|
|
49
|
+
const backdrop = (0, color_1.contrastRatio)(current, palette.backgroundColor.main) <=
|
|
50
|
+
(0, color_1.contrastRatio)(current, palette.background[50])
|
|
51
|
+
? palette.backgroundColor.main
|
|
52
|
+
: palette.background[50];
|
|
53
|
+
const resolved = liftToContrast(current, backdrop, mode);
|
|
54
|
+
if (resolved === current)
|
|
55
|
+
return palette;
|
|
56
|
+
return { ...palette, boxborder: { ...palette.boxborder, 500: resolved } };
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A hover/active tint resolved against the surface it actually sits on, guaranteed to clear
|
|
60
|
+
* `MIN_PERCEPTIBLE_STEP`. Written for the recurring shape found across NavigationBar, UserDetails
|
|
61
|
+
* and Accordion: a pale `primary[50]`/`gray[50]` tint that measures near-1.0 on a near-white
|
|
62
|
+
* surface — invisible — with no dark-mode branch, so the same call site is wrong in both modes at
|
|
63
|
+
* once. `restSurface` is required rather than assumed white/black: a menu item's hover sits on
|
|
64
|
+
* its OWN list background, not necessarily the page canvas.
|
|
65
|
+
*/
|
|
66
|
+
function resolveHoverTint(seed, restSurface) {
|
|
67
|
+
const mode = (0, accentText_1.isDarkCanvas)(restSurface) ? "dark" : "light";
|
|
68
|
+
return liftToContrast(seed, restSurface, mode, exports.MIN_PERCEPTIBLE_STEP);
|
|
69
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ColorScale, ResolvedColorMode } from "../types";
|
|
2
|
+
export type StatusTone = {
|
|
3
|
+
/** Chip fill. */
|
|
4
|
+
bg: string;
|
|
5
|
+
/** Label ink, guaranteed >= 4.5:1 on `bg`. */
|
|
6
|
+
fg: string;
|
|
7
|
+
/** Chip outline, guaranteed >= 3:1 on `bg`. */
|
|
8
|
+
border: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Status chips (open / in-progress / resolved …) were authored as `X.500` text on an `X.100`
|
|
12
|
+
* tint, which measures 3.3-4.4:1 — under the 4.5:1 body-text bar in BOTH modes. The ink is
|
|
13
|
+
* resolved from the scale's own hue instead of pinned, so every brand and both modes land on the
|
|
14
|
+
* lightest ink that still passes rather than a hand-copied hex that goes stale.
|
|
15
|
+
*
|
|
16
|
+
* `reverseScale` flips the utility ramps in dark, so `X.100` is already a dark tint there and the
|
|
17
|
+
* ink walks lighter instead of darker — hence the mode argument.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveStatusTone(scale: ColorScale, mode: ResolvedColorMode): StatusTone;
|
|
20
|
+
/**
|
|
21
|
+
* Avatar initials are drawn white on a generated fill. The seed hues in use measured 1.92:1
|
|
22
|
+
* (`#eab308`), 2.54:1 (`#10b981`) and 3.76:1 (`#ef4444`) — failing in light mode too, not just
|
|
23
|
+
* dark. Darkening the fill keeps the intended hue and the white-initials look while clearing AA.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveAvatarFill(hex: string, target?: number): string;
|
|
26
|
+
/**
|
|
27
|
+
* Hue set for generated avatars. Values are seeds, not final fills — always pass them through
|
|
28
|
+
* `resolveAvatarFill` so the white initials stay legible.
|
|
29
|
+
*/
|
|
30
|
+
export declare const AVATAR_SEEDS: readonly ["#ef4444", "#f97316", "#eab308", "#22c55e", "#10b981", "#06b6d4", "#3b82f6", "#8b5cf6", "#ec4899"];
|
|
31
|
+
/** Stable per-name avatar fill: same name always yields the same accessible colour. */
|
|
32
|
+
export declare function avatarFillFor(seedText: string): string;
|
|
33
|
+
/** True when `fg` clears the body-text bar on `bg` — exported for consumer assertions. */
|
|
34
|
+
export declare const meetsBodyText: (fg: string, bg: string) => boolean;
|
|
35
|
+
//# sourceMappingURL=statusTone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusTone.d.ts","sourceRoot":"","sources":["../../../../src/Theme/tokens/builders/statusTone.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,MAAM,UAAU,GAAG;IACvB,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,GAAG,UAAU,CAUxF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAuB,GAAG,MAAM,CAGtF;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,8GAUf,CAAC;AAEX,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED,0FAA0F;AAC1F,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,EAAE,IAAI,MAAM,KAAG,OACd,CAAC"}
|