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
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Block first message without / task skill; flag session for status-line warning. Zero tokens.
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
STATE_FILE="${HOME}/.cursor/pixelize-skill-session-state.json"
|
|
6
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
7
|
-
# shellcheck disable=SC1091
|
|
8
|
-
source "$SCRIPT_DIR/task-hint.env"
|
|
9
|
-
|
|
10
|
-
INPUT=$(cat)
|
|
11
|
-
PROMPT=$(echo "$INPUT" | jq -r '.prompt // empty')
|
|
12
|
-
CONV_ID=$(echo "$INPUT" | jq -r '.conversation_id // empty')
|
|
13
|
-
|
|
14
|
-
if [[ -z "$CONV_ID" ]]; then
|
|
15
|
-
echo '{"continue":true}'
|
|
16
|
-
exit 0
|
|
17
|
-
fi
|
|
18
|
-
|
|
19
|
-
has_skill() {
|
|
20
|
-
echo "$PROMPT" | grep -qiE '^\s*/(task|crm-task|social-task|tickets-task|crm-mobile-task|design-task|hrms-task)\b'
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
ensure_state_file() {
|
|
24
|
-
mkdir -p "$(dirname "$STATE_FILE")"
|
|
25
|
-
[[ -f "$STATE_FILE" ]] || echo '{}' >"$STATE_FILE"
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
update_state() {
|
|
29
|
-
local first_nudge="$1"
|
|
30
|
-
local chatting="$2"
|
|
31
|
-
ensure_state_file
|
|
32
|
-
local tmp
|
|
33
|
-
tmp=$(mktemp)
|
|
34
|
-
jq --arg id "$CONV_ID" \
|
|
35
|
-
--argjson first "$first_nudge" \
|
|
36
|
-
--argjson chatting "$chatting" \
|
|
37
|
-
'.[$id] = {first_nudge_done: $first, chatting_without_skill: $chatting}' \
|
|
38
|
-
"$STATE_FILE" >"$tmp" && mv "$tmp" "$STATE_FILE"
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if has_skill; then
|
|
42
|
-
if [[ -f "$STATE_FILE" ]] && jq -e --arg id "$CONV_ID" '.[$id]' "$STATE_FILE" >/dev/null 2>&1; then
|
|
43
|
-
update_state true false
|
|
44
|
-
fi
|
|
45
|
-
echo '{"continue":true}'
|
|
46
|
-
exit 0
|
|
47
|
-
fi
|
|
48
|
-
|
|
49
|
-
ensure_state_file
|
|
50
|
-
FIRST_DONE=$(jq -r --arg id "$CONV_ID" '.[$id].first_nudge_done // false' "$STATE_FILE")
|
|
51
|
-
|
|
52
|
-
if [[ "$FIRST_DONE" != "true" ]]; then
|
|
53
|
-
update_state true false
|
|
54
|
-
MSG="━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
55
|
-
NO TASK SKILL LOADED
|
|
56
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
57
|
-
|
|
58
|
-
You are chatting WITHOUT a pipeline skill.
|
|
59
|
-
|
|
60
|
-
For feature / bugfix work, use the / menu first:
|
|
61
|
-
${REPO_HINT}
|
|
62
|
-
|
|
63
|
-
Then type your goal in the SAME input (do not type the skill name).
|
|
64
|
-
|
|
65
|
-
Send this message AGAIN to continue without a skill."
|
|
66
|
-
jq -n --arg msg "$MSG" '{continue: false, user_message: $msg}'
|
|
67
|
-
exit 0
|
|
68
|
-
fi
|
|
69
|
-
|
|
70
|
-
update_state true true
|
|
71
|
-
echo '{"continue":true}'
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Blocks plain-text task skill names (not / menu picks). Zero API tokens.
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
6
|
-
# shellcheck disable=SC1091
|
|
7
|
-
source "$SCRIPT_DIR/task-hint.env"
|
|
8
|
-
|
|
9
|
-
INPUT=$(cat)
|
|
10
|
-
PROMPT=$(echo "$INPUT" | jq -r '.prompt // empty')
|
|
11
|
-
|
|
12
|
-
# Menu picker embeds "/tickets-task ..." in prompt; attachments stay empty.
|
|
13
|
-
# Only block plain-text mistakes: skill name at start without a leading slash.
|
|
14
|
-
if echo "$PROMPT" | grep -qiE '^\s*@?(task|crm-task|social-task|tickets-task|crm-mobile-task|design-task|hrms-task)\b'; then
|
|
15
|
-
MSG="⚠️ TASK PIPELINE NOT ACTIVE
|
|
16
|
-
|
|
17
|
-
You typed a task command as plain text. The skill was NOT loaded.
|
|
18
|
-
|
|
19
|
-
To run the pipeline:
|
|
20
|
-
1. Click the chat input
|
|
21
|
-
2. Type / and pick the skill from the menu
|
|
22
|
-
3. Send your goal
|
|
23
|
-
|
|
24
|
-
For this repo use: ${REPO_HINT}
|
|
25
|
-
|
|
26
|
-
Do not type task skill names in the message body — use the / menu picker."
|
|
27
|
-
jq -n --arg msg "$MSG" '{continue: false, user_message: $msg}'
|
|
28
|
-
exit 0
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
echo '{"continue":true}'
|
package/.cursor/hooks.json
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Account Management
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Account/admin-facing components: UserDetails, RolesPermission, CustomModulesTable, SignInActivityTable, OrganizationDetails, OrgSwitcher, UpgradeButton.
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/UserDetails/`, `RolesPermission/`, `CustomModulesTable/`, `SignInActivityTable/`, `OrganizationDetails/`, `OrgSwitcher/`, `UpgradeButton/`
|
|
10
|
-
- Tests: `UserDetails.test.tsx`, `RolesPermission.test.tsx`, `CustomModulesTable.test.tsx`, `SignInActivityTable.test.tsx`, `OrganizationDetails.test.tsx`
|
|
11
|
-
|
|
12
|
-
## Key rules
|
|
13
|
-
|
|
14
|
-
- UserDetails, RolesPermission, CustomModulesTable, OrganizationDetails bundle their own action modals (Add/Edit/Delete/ChangeRole) in the same folder
|
|
15
|
-
- Each exports typed Props/Labels from `<Name>Props.tsx` via `src/index.ts` — keep props API-generic, no CRM/API logic in the library
|
|
16
|
-
- Labels are injectable for i18n; consumers pass data and handlers (props in, events out)
|
|
17
|
-
|
|
18
|
-
## Dark mode
|
|
19
|
-
|
|
20
|
-
- Every component here reads colors via `useCustomTheme()`, so all follow the active light/dark palette
|
|
21
|
-
- Tables/detail views alias tokens once at the top — `border`/`surface`/`muted`/`heading`/`headBg` from `boxborder[200]`/`background[50]`/`gray[500]`/`gray[800]`/`gray[50]`; reuse those names when adding UI
|
|
22
|
-
- `surface` reads `background[50]`, never `colors.white` — white is a foreground token and stays white in dark
|
|
23
|
-
- Remaining hex literals are `??` fallbacks, not live values: a hand-built palette may omit rungs (tests `jest.mock` a partial one), so keep the fallback when adding a token read
|
|
24
|
-
- Fixed by design, not palette-following: `avatarColor()`'s `AVATAR_COLORS` (OrgSwitcher — deterministic identity fill seeded by org name, white label on top) and `UpgradeButton`'s `iconColor` default (icon on a gradient fill). Colored fills/foregrounds, not canvas surfaces
|
|
25
|
-
- **OrgSwitcher popover bg bug (same class as the ButtonGroupIcon menu bug in `buttons`):** `PopoverContent` had no `bg=`, so it fell through to Chakra's baseStyle `var(--popper-bg)` — hardcoded to `colors.white`, gated behind Chakra's own `_dark` which this app's palette-swap dark mode never triggers — rendering a white popover in dark mode regardless of theme. Fixed with an explicit `bg={theme.colors.backgroundColor.light}`; now also covered app-wide by the theme-level `Popover` style override (`Theme/chakra/Popover.styles.ts`, overlays module / theme module Wave H)
|
|
26
|
-
- OrgSwitcher trigger border: `borderColor` switched from `gray[200]` to `boxborder?.[800] ?? gray[200]` — it styles a real `<button>`, so its border is a control boundary needing WCAG 1.4.11 (>=3.0 non-text contrast) against any surface up to `muted`, which `gray[200]` failed in dark. Org name/role text switched from `gray[800]`/`gray[500]` to `text[900]`/`text[500]` — mode-adaptive text tokens, the correct choice over mode-invariant gray literals for body text
|
|
27
|
-
- UserDetails avatar initials color: replaced the fixed `primary[600]` rung with `accentTextOnCanvas(colors.primary, avatarBg)` (guarded `colors?.primary ? accentTextOnCanvas(...) : "#4F46E5"` fallback) — picks contrast dynamically against the avatar bg instead of assuming one fixed rung clears AA 4.5 for every brand's dark palette
|
|
28
|
-
- **Avatar badge/container ring bug (theme-level fix):** Chakra's own `Avatar` baseStyle
|
|
29
|
-
hardcodes the badge/container cutout border to `colors.white` (a ring meant to match the
|
|
30
|
-
surface the avatar sits on), behind `_dark`, same never-triggered gate as Modal/Menu — every
|
|
31
|
-
bare `<Avatar>`/`<AvatarBadge>` (used here in `UserDetails`, `OrgSwitcher`,
|
|
32
|
-
`OrganizationDetails`, plus `NavigationBar`/`Notification`/`SelectSearch` elsewhere) rendered a
|
|
33
|
-
white ring on the dark canvas. Fixed centrally in `Theme/chakra/Avatar.styles.ts` (registered
|
|
34
|
-
in `componentStyles.ts`), not per-component.
|
|
35
|
-
- **Modal surface bug (QA-caught, blocking) — 6 action modals:** `AddUserModal`,
|
|
36
|
-
`DeactivateConfirmModal`, `ChangeRoleModal` (UserDetails), `DeleteRoleModal` (RolesPermission),
|
|
37
|
-
`CreateOrgModal`, `DeleteOrgModal` (OrganizationDetails) all rendered a raw Chakra `ModalContent`
|
|
38
|
-
with no explicit `bg=`, hitting the same Chakra-hardcoded-`colors.white`-behind-`_dark` bug as
|
|
39
|
-
`Modal`/`AlertDialog` (overlays module) and `Drawer` (layout-navigation module). Fixed with
|
|
40
|
-
`bg={colors?.background?.[50]}` (`colors` was already destructured from `useCustomTheme()` in
|
|
41
|
-
every one of these files, so no new hook import was needed).
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# Buttons
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Button, ButtonGroupIcon, Buttons variants.
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/Button/`, `ButtonGroupIcon/`, `Buttons/`
|
|
10
|
-
|
|
11
|
-
## Key rules
|
|
12
|
-
|
|
13
|
-
- Match Chakra button theming via design tokens
|
|
14
|
-
- `Button.styles.ts` variants are `({ theme })` functions reading `theme.colors` — no hex
|
|
15
|
-
literals, so they follow whichever palette the theme carries (light or dark)
|
|
16
|
-
- Filled labels (`solid` bg, and `outline`/`ghost` hover/active fills) no longer hardcode
|
|
17
|
-
`theme.colors.white` — they pick ink via `onFilled(fill, white, black)`
|
|
18
|
-
(`Theme/tokens/builders/accentText.ts`), which provably clears AA 4.5 by preferring white and
|
|
19
|
-
falling back to black only when the fill itself can't carry white. Never use white for a button
|
|
20
|
-
*surface* either way
|
|
21
|
-
|
|
22
|
-
## Dark mode
|
|
23
|
-
|
|
24
|
-
- `outline` / `ghost` / `link` text sits on the canvas, so it goes through
|
|
25
|
-
`accentTextOnCanvas(scale, colors.backgroundColor.main)` instead of `[500]` directly.
|
|
26
|
-
`[500]` is pinned dark enough to carry a white label on `solid`, leaving it ~4.2 as text on
|
|
27
|
-
the dark canvas; the helper steps to a lighter rung there to clear AA 4.5. Light canvases
|
|
28
|
-
return `[500]` unchanged, so existing apps are pixel-identical.
|
|
29
|
-
- **Ghost hover gotcha:** brand scales are *lifted* for dark, not reversed, so `primary[50]`
|
|
30
|
-
stays near-white — a white chip on a near-black canvas. On dark canvases the hover/active
|
|
31
|
-
tint uses the translucent `scale.opacity[16]` / `[24]` so it composites over the canvas.
|
|
32
|
-
Only brand scales carry `opacity`; utility scales (red, green…) fall back to `[50]`, which
|
|
33
|
-
is already dark because those scales *are* reversed for dark.
|
|
34
|
-
- **Solid/outline label-ink fix:** `Button.styles.ts` derives each state's label from *that
|
|
35
|
-
state's* fill (`labelFor`, per hover/active/loading) instead of assuming white always works —
|
|
36
|
-
some brands' dark `primary[500]` fails AA against white (radiant/emerald/rosewood measure
|
|
37
|
-
4.37/3.38/3.46) and now fall back to black. `Button.styles.test.ts` verifies this with real
|
|
38
|
-
`contrastRatio` checks per brand rather than asserting a fixed white label.
|
|
39
|
-
- **ButtonGroupIcon menu bug (new, generalizable):** Chakra's `MenuItem` baseStyle renders
|
|
40
|
-
`background: var(--menu-bg)` at rest, and `MenuList`'s baseStyle hardcodes that var to `#fff`
|
|
41
|
-
behind `_dark` — which this app's theme-swap dark mode (palette swapped, Chakra `colorMode`
|
|
42
|
-
stays `"light"`) never triggers. Setting `bg=` on `MenuList` alone recolors the list but not the
|
|
43
|
-
inherited var, so items rendered white at rest until hover/focus masked it. Fixed here via
|
|
44
|
-
`sx={{ "--menu-bg": theme.colors.backgroundColor.light }}` alongside `bg=`.
|
|
45
|
-
- **Known gap:** any other Chakra `Menu`/`Popover` usage is at risk of the same bug. A known
|
|
46
|
-
remaining instance — `Trail`/`EditableCell.tsx` (data-display module) — is **not fixed** in
|
|
47
|
-
this pass.
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# Cards
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Card, PaymentCard, ProfileCard, ProductCard, ProductDetails.
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/Card/`, `Card/PaymentCard/`, `ProfileCard/`, `ProductCard/`, `ProductDetails/`
|
|
10
|
-
|
|
11
|
-
## Key rules
|
|
12
|
-
|
|
13
|
-
- ProfileCard has Header/Body/Footer subcomponents
|
|
14
|
-
|
|
15
|
-
## Dark mode
|
|
16
|
-
|
|
17
|
-
PaymentCard, ProductCard, ProductPrice, ProductDtlPrice and ProductImageSlider read their colors
|
|
18
|
-
from `useCustomTheme()` instead of hex literals, so they follow the active light/dark palette.
|
|
19
|
-
|
|
20
|
-
- Surfaces use `colors.background[50]`, never `colors.white` — `white` is a foreground token and
|
|
21
|
-
stays white in dark. Covers the card body, the ProductPrice dropdown panel and its radio dot,
|
|
22
|
-
the unselected pack chip in ProductDtlPrice, and the play-button circle in ProductImageSlider.
|
|
23
|
-
- PaymentCard's badge/button label no longer hardcodes `colors.white` — it's picked per
|
|
24
|
-
`buttonColor` via `onFilled()` (`Theme/tokens/builders/accentText`), which falls back to
|
|
25
|
-
`colors.black` when white would fail AA on that fill. Guarantees WCAG AA across the
|
|
26
|
-
active/upgrade/popular/default button colors instead of assuming white always works.
|
|
27
|
-
- The product components keep Chakra literals for offer/pack chrome (`red.50`, `orange.50`,
|
|
28
|
-
`green.100`). Those are dark-aware already — the theme carries the palette as `colors`, and
|
|
29
|
-
`buildDarkPalette` reverses utility hue ramps so index roles survive (`red.50` = pale badge
|
|
30
|
-
background in light, deep in dark). They track the hue, not the brand accent.
|
|
31
|
-
- ProductPrice's struck-through original price bumped `gray.400` → `gray.500` (still a raw
|
|
32
|
-
Chakra literal, not a theme token) for AA contrast against the card surface.
|
|
33
|
-
- ProductTags' label swapped `colors.black` → `colors.text[900]` (mode-adaptive ink token) so it
|
|
34
|
-
stays legible in dark mode.
|
|
35
|
-
- **Known gap:** ProductReview's rating chip (`bg="teal.50"` / `color="teal.900"`) and its star
|
|
36
|
-
fill (`RATING_STAR_FILL`, a pinned `#ECC94B` hex — see in-file comment) are still raw
|
|
37
|
-
Chakra/hex literals, not `useCustomTheme()` tokens. Pre-existing pattern, not worsened by this
|
|
38
|
-
pass, but won't track brand hue or dark mode — needs a mode-stable "rating gold" token added to
|
|
39
|
-
`pixelize-design-library` before this can move off literals.
|
|
40
|
-
|
|
41
|
-
## WCAG contrast pass (Wave D, QA-driven)
|
|
42
|
-
|
|
43
|
-
- **ProductPrice.tsx** — dropdown-arrow `red.400` (on `red.50` canvas) and discounted/final-price
|
|
44
|
-
`red.500` text (on `red.50`/`background[50]` depending on selection state) failed AA (2.6-3.7:1).
|
|
45
|
-
Fixed via `accentTextOnCanvas(theme.colors.red, <the actual local canvas>)` at each of the 3
|
|
46
|
-
call sites, matching the canvas each already renders on (including the existing `isSelected`
|
|
47
|
-
bg ternary). The dot-fill `bg="red.500"` (a filled swatch, not text) was left unchanged — it
|
|
48
|
-
clears the 3:1 non-text bar against `background[50]`.
|
|
49
|
-
- **ProductDtlPrice.tsx** — price `Text` hardcoded `theme.colors.red[500]` (≈3.46:1 vs the page
|
|
50
|
-
canvas, fails) and the pack-swatch `color="orange.600"` (≈2.47-2.67:1 vs either bg state,
|
|
51
|
-
fails) both routed through `accentTextOnCanvas`. `borderColor`/`bg` on the swatch button are
|
|
52
|
-
decorative and were left alone.
|
|
53
|
-
- **ProductImageSlider.tsx** — checked, not changed: all 6 `theme.colors.red[500]` Play-icon
|
|
54
|
-
usages sit on an opaque `background[50]` circular scrim (not the raw image), so the applicable
|
|
55
|
-
bar is 3:1 (graphical object, not text) — clears at ≈3.68:1 light / ≈6.48:1 dark.
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# Charts
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Apexcharts wrappers: Bar, Line, Pie, Polar.
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/Apexcharts/ApexBarChart/`, `ApexLineChart/`, `ApexPieChart/`, `ApexPolarCharts/`
|
|
10
|
-
- `src/Theme/tokens/builders/chartColorsFromTheme.ts` — shared chart color helpers (+ test)
|
|
11
|
-
|
|
12
|
-
## Key rules
|
|
13
|
-
|
|
14
|
-
- react-apexcharts; every color is a theme token, never a literal. Shared helpers:
|
|
15
|
-
`getDefaultSeriesColors` (primary / error / success / orange `500`), `mergeChartTitleStyle`
|
|
16
|
-
(title → `primary[500]`), `chartAxisLabelColor` (`gray[700]`). The rest read `palette` directly:
|
|
17
|
-
legend `text[900]` (Pie/Polar), Bar data labels `primary[500]`, Polar stroke `white`.
|
|
18
|
-
- All four read `useTheme().colors` (cast to `CustomThemeProps["colors"]`) rather than styling via
|
|
19
|
-
Chakra props, because ApexCharts `options` need resolved hex **strings**.
|
|
20
|
-
- The helper sits in the pure token layer: type-only imports, never Chakra/React (see CLAUDE.md).
|
|
21
|
-
|
|
22
|
-
## Dark mode
|
|
23
|
-
|
|
24
|
-
- Dark-aware for free — the theme swaps in the dark palette and these tokens re-resolve. No hex
|
|
25
|
-
literals remain under `Apexcharts/`.
|
|
26
|
-
- Caller color props (`barColor`, `lineColors`, `chartColor`/`donutColors`, `chartColors`,
|
|
27
|
-
`titleStyle`, `legendStyle`) override the token defaults and are **not** dark-aware: a consumer
|
|
28
|
-
passing a hardcoded hex keeps it in both modes.
|
|
29
|
-
- ApexPolarCharts `basic`/`monochrome` stroke slice borders with `colors.white` — foreground on a
|
|
30
|
-
filled slice, so it correctly stays white; not a missed `background[50]` surface.
|
|
31
|
-
- All four now also set ApexCharts' own `options.theme.mode` (`"dark"`/`"light"`) from
|
|
32
|
-
`isDarkCanvas(palette.backgroundColor.main)` (`Theme/tokens/builders/accentText.ts`), so
|
|
33
|
-
ApexCharts' internal chrome (gridlines, built-in tooltip, etc.) follows the active canvas too,
|
|
34
|
-
not just the token-driven series/title/legend colors. No change to any chart's data/options
|
|
35
|
-
prop contract.
|
|
36
|
-
- Removed `chartTooltipBackground`/`chartTooltipForeground` from `chartColorsFromTheme.ts` (they
|
|
37
|
-
always resolved to a hardcoded dark-styled tooltip — `gray[700]`/`white` — regardless of mode,
|
|
38
|
-
now unused repo-wide). `ApexLineChart`'s title-truncation `ToolTip` no longer overrides
|
|
39
|
-
`bg`/`color`; it defers to `ToolTip`'s own theme-aware default instead.
|
|
40
|
-
- Known gap: titles/legends use `primary[500]` / `text[900]`, not the AA-safe `accentText` token.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Common Helpers
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Internal shared helpers under `Components/Common/` — not all exported from index.
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/Common/` — ErrorComponent, FormLabel, etc.
|
|
10
|
-
|
|
11
|
-
## Key rules
|
|
12
|
-
|
|
13
|
-
- Internal use by other components; export only if needed publicly
|
|
14
|
-
|
|
15
|
-
## Dark mode
|
|
16
|
-
|
|
17
|
-
- **FormLabel** (`TextLabel`): both tooltips (`showTooltip` / `isInformation`) swapped
|
|
18
|
-
Chakra's own `Tooltip` for the library's `ToolTip` (`../ToolTip/ToolTip`), dropping the
|
|
19
|
-
hardcoded `bg={gray[600]}` / `color={white}` — `ToolTip` owns its own theme-aware
|
|
20
|
-
contrast (see `overlays` MODULE.md). No `TextLabel` prop changes.
|
|
21
|
-
- **fieldStyles.ts** (`getFieldStateStyles`): idle border bumped `boxborder[500]` →
|
|
22
|
-
`boxborder[800]` — `[500]` failed WCAG 1.4.11 (>=3:1 non-text contrast) against
|
|
23
|
-
surfaces up to `muted`; `[800]` clears with margin. Focus/error ring colors and the
|
|
24
|
-
function signature are unchanged.
|
|
25
|
-
- **ErrorMessage.tsx**, **ErrorComponent.tsx**, **FormLabel.tsx** (required-asterisk), **Label.tsx**:
|
|
26
|
-
error text color switched from a hardcoded `theme.colors.red[500]` / `semantic.error[500]` to
|
|
27
|
-
`accentTextOnCanvas(scale, canvas)` (`../../Theme/tokens/builders/accentText`) — `red[500]` alone
|
|
28
|
-
fails AA (~3.4:1) against the page canvas in every brand; see `theme` MODULE.md "Wave D" for why
|
|
29
|
-
this couldn't be a token retune. No prop/API changes.
|
|
30
|
-
- **ErrorComponent.tsx's SVG mark ink (code-review catch):** the circle/rect/dot marks drawn on
|
|
31
|
-
top of the `errorFill` circle were hardcoded `theme.colors.white`. `errorFill` is tuned for
|
|
32
|
-
text-on-page-canvas contrast, not for "carries a white mark on top of itself" — those are
|
|
33
|
-
different constraints, and nothing guaranteed white would keep clearing AA there if the token
|
|
34
|
-
ever changed (it happened to today). Replaced with
|
|
35
|
-
`onFilled(errorFill, theme.colors.white, theme.colors.black)`, the same provably-always-safe
|
|
36
|
-
ink-on-a-filled-swatch helper used by FilterSidebar's checkmark and PaymentCard.
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# Contact & Email
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
ContactForm, VerifyEmailOtp (EmailCards).
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/ContactForm/`, `EmailCards/VerifyEmailOtp/`
|
|
10
|
-
|
|
11
|
-
## Key rules
|
|
12
|
-
|
|
13
|
-
- OTP flow UI only — API wiring in consumer apps
|
|
14
|
-
|
|
15
|
-
## Dark mode
|
|
16
|
-
|
|
17
|
-
- **VerifyEmailOtp**: `PinInputField` idle border bumped `boxborder[300]` → `boxborder[800]` —
|
|
18
|
-
`[300]` failed WCAG 1.4.11 (>=3:1 non-text contrast) against surfaces up to `muted`; `[800]`
|
|
19
|
-
clears with margin. Already theme-token-driven before this change; no prop/signature changes.
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Data Display
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Tag, Timeline, Reorder, Divider, Trail.
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/Tag/` — `Tag.tsx`, `TagProps.ts`, `Tag.styles.tsx` (registered in `Theme/componentStyles.ts`)
|
|
10
|
-
- `Timeline/`, `Reorder/`, `Divider/`, `Trail/`
|
|
11
|
-
- Demo: `src/Pages/tag.tsx`
|
|
12
|
-
|
|
13
|
-
## Key rules
|
|
14
|
-
|
|
15
|
-
- Timeline: each event card renders its manual notes from `event.notes` (`TimelineNote[]` — `log_note_id`, `title`, `note`, `attachments[]`, `created_by`, `created_at`). Adding a note is event-scoped via the per-card "Add note" button → `onAddNote(note, title, files, event, index)`; the consumer persists it against `event.logs_id` and re-supplies it back in `event.notes`. Attachments show as links opening `attachment.url`.
|
|
16
|
-
- Timeline notes support edit + delete: hovering a note shows edit/delete icons → `onEditNote(logNoteId, note, title, files, event, index)` (inline `NoteTextArea`) and `onDeleteNote(logNoteId, event, index)` (consumer owns any confirm dialog). Loading props: `addNoteLoading`/`editNoteLoading` keep the editor open with a Save spinner until the request resolves (then auto-close); `deletingNoteId` shows a spinner on the note being deleted. With no loading props wired, the add editor closes immediately on submit (back-compat).
|
|
17
|
-
- Trail includes editable cell demos
|
|
18
|
-
- Tag styling lives in `Tag.styles.tsx` (Chakra component theme), not hardcoded in `Tag.tsx`
|
|
19
|
-
- Tag sizes: `xs | sm | md | lg`; variants: `solid | outline | subtle`
|
|
20
|
-
- Tag colors are token-driven from the active theme via `colorScheme` (brand `primary/secondary/tertiary` + global scales); palette resolution falls back to `gray` so a missing scale never throws
|
|
21
|
-
- Tag `solid` variant label color is now `onFilled(fill, white, black)` (per state: base/hover/active), not a hardcoded `white` — picks whichever of white/black clears WCAG AA against that swatch, so it stays readable on light brand fills too
|
|
22
|
-
|
|
23
|
-
## WCAG / dark-mode pass (this session)
|
|
24
|
-
|
|
25
|
-
- **Tag.styles.tsx** — `solid` variant's foreground swapped from hardcoded `theme.colors?.white` to
|
|
26
|
-
`onFilled(fill, white, black)`, computed per bg (base `500`, hover `600`, active `700`); verified
|
|
27
|
-
against WCAG AA.
|
|
28
|
-
- **Trail/EditableCell.tsx** — `priority` menu's `MenuButton` had a real hover-contrast fix: `bg`
|
|
29
|
-
`teal.500`/`color white` → `bg="teal.50"` / `color="teal.900"` (+ hover/active states). **Known
|
|
30
|
-
gap:** this uses raw Chakra `teal.*` literals, not `useCustomTheme()` tokens, so it won't track
|
|
31
|
-
brand hue or dark mode — needs a follow-up token pass.
|
|
32
|
-
- **Known gap (not fixed this pass):** the same `MenuList`/`MenuItem` still has no `bg=`/
|
|
33
|
-
`sx={{ "--menu-bg": ... }}` override, so Chakra's `--menu-bg` CSS var still resolves to its
|
|
34
|
-
hardcoded light-mode white regardless of this app's active dark mode — same root-cause bug
|
|
35
|
-
already fixed this session in `ButtonGroupIcon` (buttons module) and `NavigationBar`
|
|
36
|
-
(layout-navigation module). Deliberately deferred, not overlooked.
|
|
37
|
-
|
|
38
|
-
## Dark mode
|
|
39
|
-
|
|
40
|
-
- Timeline takes every color from `useCustomTheme()`, so it follows whichever palette the theme carries. Dark works by swapping the palette — there is no `_dark`/`semanticTokens` layer, so a hardcoded value would stay light forever.
|
|
41
|
-
- White surfaces use `colors.background[50]`, **not** `colors.white` — `white` is a *foreground* token (label on a filled button) and stays white in dark. Covers Timeline's event card, date chip, and the node ring that punches each node out of the spine. (Timeline's inline `NoteTextArea` is owned by `inputs-basic`.)
|
|
42
|
-
- Timeline's remaining `?? "#fff"` fallbacks are defensive only — every brand palette defines `background[50]` (dark included, derived by `buildDarkPalette`).
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# Feedback
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Loading, Skeletons, ProgressBar, Notification, FeedbackForm.
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/Loading/`, `Skeletons/`, `ProgressBar/`, `Notification/`, `FeedbackForm/`
|
|
10
|
-
- `src/services/feedback.ts`
|
|
11
|
-
|
|
12
|
-
## Key rules
|
|
13
|
-
|
|
14
|
-
- FeedbackForm may POST to account API in consumer apps — keep props generic
|
|
15
|
-
|
|
16
|
-
## Dark mode
|
|
17
|
-
|
|
18
|
-
- **Skeleton** (`Components/Skeletons/`) — Chakra's own baseStyle hardcodes
|
|
19
|
-
`--skeleton-start-color`/`--skeleton-end-color` to `gray.100`/`gray.400` behind `_dark`, same
|
|
20
|
-
never-triggered gate as Modal/Menu (theme module). Fixed centrally in `componentStyles.ts`
|
|
21
|
-
(`Skeleton` entry, rungs `gray[100]`/`gray[300]`) rather than in `Skeletons.tsx` — a
|
|
22
|
-
caller-supplied `startColor`/`endColor` prop still wins exactly as before; this only supplies
|
|
23
|
-
the default the base style already owns.
|
|
24
|
-
- **Notification**: default `bgColor` switched `theme.colors.white` → `theme.colors.background[50]`
|
|
25
|
-
— `white` is a foreground token (label ink, stays white in dark) and was being used as the card
|
|
26
|
-
surface; `background[50]` is the correct dark-mode-aware white-surface token. Real bug fix (was
|
|
27
|
-
forcing a white card in dark mode), not a plain refactor. Consumers passing `colors.bgColor`
|
|
28
|
-
explicitly are unaffected.
|
|
29
|
-
- **`warningColor`/`errorColor`/`successColor` object-vs-string bug (QA-adjacent, real correctness
|
|
30
|
-
bug, not WCAG):** `NotificationProps` types these as hex strings, but the defaults were an
|
|
31
|
-
un-indexed whole `ColorScale` object (`theme.colors.semantic.warning` instead of
|
|
32
|
-
`theme.colors.semantic.warning[500]`) — Chakra silently can't render an object as a `bg=` color,
|
|
33
|
-
so the default (no-override) case was broken. Fixed by indexing `[500]` on all three defaults.
|
|
34
|
-
- **Time-elapsed icon/label AA gap:** the "time ago" `Icon`/`Text` defaulted to `orange.400`/
|
|
35
|
-
`orange.500`, which fail AA (~1.9–2.2:1) against `bgColor` in every brand — same class of bug as
|
|
36
|
-
the `error`/`red[500]` gap (theme module). Fixed by routing both through
|
|
37
|
-
`accentTextOnCanvas(theme.colors.orange, bgColor)` (`Theme/tokens/builders/accentText`) instead
|
|
38
|
-
of a fixed rung.
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Basic Inputs
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
TextInput, PhoneNumberInput, InputTextArea, NoteTextArea, NumberInput, PinInput, PinInputs.
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/Input/`, `InputTextArea/`, `NoteTextArea/`, `NumberInput/`, `PinInput/`, `PinInputs/`
|
|
10
|
-
|
|
11
|
-
## Key rules
|
|
12
|
-
|
|
13
|
-
- InputSwitch in `Input/Switch/`
|
|
14
|
-
|
|
15
|
-
## Dark mode
|
|
16
|
-
|
|
17
|
-
- No hex literals remain — every field follows the active palette, but by three paths, not one:
|
|
18
|
-
`useCustomTheme()` (TextInput, PhoneNumberInput, NoteTextArea, PinInput, InputSwitch), Chakra
|
|
19
|
-
`useTheme()` (Input/Input, PinInputs), and `componentStyles` `({ theme })` fns (InputTextArea,
|
|
20
|
-
NumberInput — no theme hook at all). The `?? "gray.300"` fallbacks in `*.styles.ts` are token
|
|
21
|
-
refs, not literals: `createBrandTheme` sets `colors: palette`, so they resolve against the
|
|
22
|
-
swapped palette.
|
|
23
|
-
- `NoteTextArea` was the only migration here: its 4 white surfaces moved `colors.white` →
|
|
24
|
-
`colors.background[50]`. `colors.white` is a **foreground** token (a label on a filled button)
|
|
25
|
-
and stays white in dark; a white *surface* needs `background[50]` (identical `#ffffff` in light).
|
|
26
|
-
- `InputSwitch` layers `useColorModeValue` over the palette swap — it picks a different *rung*
|
|
27
|
-
(`primary[500]`→`[300]`, `gray[300]`→`[600]`) of the already-dark palette, not a second palette.
|
|
28
|
-
|
|
29
|
-
## Border contrast bump ([500]/[700] → [800])
|
|
30
|
-
|
|
31
|
-
- Follow-up fix: `boxborder` at `[500]`/`[700]` only cleared canvas-level surfaces (main/base)
|
|
32
|
-
and failed WCAG 1.4.11 (control boundary, >=3.0) against `muted`, the lightest named surface
|
|
33
|
-
(2.41-2.72). All seven fields — `Input/Input.tsx`, `TextInput.styles.ts`,
|
|
34
|
-
`InputTextArea.style.tsx`, `NumberInput.styles.ts`, `PinInput.tsx`, `PinInputs.tsx`,
|
|
35
|
-
`NoteTextArea.tsx` — now use `boxborder?.[800]` for the resting/default border, clearing all
|
|
36
|
-
12 named surfaces (3.44-3.90) in both modes.
|
|
37
|
-
- `Input/Input.tsx` also swapped its label/accent color from `colors.secondary?.[500]` to
|
|
38
|
-
`accentTextOnCanvas(colors.secondary, colors.backgroundColor?.main)` — relies on the shared
|
|
39
|
-
`accentText.ts` guard (Theme module) for safety when rendered without a full Pixelize theme;
|
|
40
|
-
no separate fix was needed in this file.
|
|
41
|
-
- `Input/Input.tsx` is **not** exported from `src/index.ts` (internal, used only by
|
|
42
|
-
`src/Pages/TInput.tsx`) — low external impact.
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# Date & Files
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
ThemeDatePicker (Single/Range/Time variants), FileUpload, FileUploader, Editor (jodit-react).
|
|
6
|
-
|
|
7
|
-
## Key paths
|
|
8
|
-
|
|
9
|
-
- `src/Components/DatePicker/` — `ThemeDatePicker.tsx` (public entry), `SingleDatePicker.tsx`, `RangeDatePicker.tsx`, `TimePicker.tsx`, `TimeOnlyPicker.tsx`, `CalendarPanel.tsx`
|
|
10
|
-
- `src/Components/FileUpload/`, `FileUploader/`, `Editor/`
|
|
11
|
-
|
|
12
|
-
## Key rules
|
|
13
|
-
|
|
14
|
-
- DatePicker themed for brand tokens — `CalendarPanel` reads every color from `useCustomTheme()` (no hex literals), so it follows the active light/dark palette automatically.
|
|
15
|
-
- The month/year `<select>` uses `colors.background[50]`, not `colors.white`: it is a white *surface* and must darken in dark mode.
|
|
16
|
-
- **Selected-day circle WCAG contrast (user-reported, fixed) — supersedes prior guidance below.** The filled day circle (selected / range start / range end) hardcoded `colors.white` text on `primary[500]`/`[600]` regardless of brand — the same class of gap `Button.styles.ts`'s solid variant already accounts for (white doesn't reliably clear AA against every brand's `[500]`, e.g. emerald/rosewood in dark, ~3.38/3.46). A previous pass here called this hardcoded white "correctly a foreground token, don't fix it" — that was wrong for the fill-contrast case specifically; foreground-vs-surface only tells you whether a token *inverts with mode*, not whether it *clears contrast against the fill it sits on*. Fixed via `onFilled(fill, theme.colors.white, theme.colors.black)` (`Theme/tokens/builders/accentText`) for both resting (`primary[500]`) and hover (`primary[600]`) fills.
|
|
17
|
-
- **Calendar/time popover surface bug (user-reported, blocking):** `SingleDatePicker.tsx`, `RangeDatePicker.tsx`, `TimeOnlyPicker.tsx`, and the legacy `DatePicker.tsx` (still reachable — consumed directly by `Table/filters/LeftFilterPane.tsx`, not just via the unused commented-out playground import) each rendered a `PopoverContent` with no explicit `bg=` — the same Chakra-hardcoded-`colors.white`-behind-`_dark` bug as `Modal`/`AlertDialog`/`Drawer` (overlays module). Because `CalendarPanel`'s day/weekday text (`text[700]`/`gray[400]`/`gray[500]`) is computed against the *intended* dark canvas, the panel rendered on Chakra's un-migrated white default while its text was tuned for a dark background — producing exactly the washed-out, near-invisible day numbers reported. Fixed with `bg={theme.colors.background[50]}` on all four `PopoverContent`s (`TimeOnlyPicker.tsx` didn't previously call `useCustomTheme()` at all — added the hook). Verified live via Playwright across all four variants (date-only, date+time, range, time-only).
|
|
18
|
-
- **FileUploader (QA-caught)** — its file-count and "Click here" text hardcoded `color="blue.500"`/
|
|
19
|
-
`"blue.400"`, which fail AA against the component's canvas (same class as the Notification
|
|
20
|
-
orange gap). Fixed via `accentTextOnCanvas(colors.blue, colors.backgroundColor?.main ?? "#ffffff")`
|
|
21
|
-
(`Theme/tokens/builders/accentText`), reused for both spots. Rest of the component (drag/drop
|
|
22
|
-
chrome, file-row chips) is still Chakra scale literals (`gray.*`), not migrated to
|
|
23
|
-
`useCustomTheme()` — out of scope for this pass since those are already dark-aware Chakra
|
|
24
|
-
literals (see table/account-management MODULE.md for why plain `gray.*` literals already track
|
|
25
|
-
the swapped palette).
|
|
26
|
-
- Editor is now theme-aware: it reads `theme.colors.backgroundColor?.main` (with a `"#ffffff"` fallback added after a code-review-caught crash risk) via `isDarkCanvas()` to switch Jodit's own internal `dark`/`default` editor theme — it does not restyle Jodit itself, just picks which built-in Jodit theme renders. FileUpload does use theme (`useCustomTheme()`: `gray`, `red`, `blue`, `background`, `secondary.opacity`) but was not migrated — **known gap**: `FileUpload.tsx:153` paints the uploaded-file row `bg={colors?.white}`, a *surface* on the foreground token, so it stays white in dark mode; should be `background[50]`.
|
|
27
|
-
- **Editor dark-mode "not black" bug (user-reported, fixed):** toggling Jodit's `config.theme` between `"dark"`/`"default"` only switches which of Jodit's OWN CSS selectors apply (`.jodit_theme_dark`, 180+ occurrences in `jodit.css`) — those selectors are still driven by Jodit's own hardcoded CSS custom properties (`--jd-dark-background-color: #575757`, a mid-gray, not black; `--jd-color-border-selected: #1e88e5`, generic blue), never fed this library's palette. Fixed in `Editor.tsx` by wrapping `<JoditEditor>` in a `<Box sx={...}>` carrying `getJoditThemeVars(theme.colors, isDark)` (`joditThemeVars.ts`) — inline CSS custom properties, scoped to this instance only (no `:root` leak onto other Jodit instances). Mapping: canvas/toolbar → `backgroundColor.main`/`.secondary`, ink → `text[900]`, icons → `text[700]`, hover/select-bg → `backgroundColor.muted`, border → `boxborder[500]`, accent → `primary[500]` — reusing the SAME role-stable tokens in both modes (`background[50]`/`text[900]` etc. already flip lightness internally per `buildDarkPalette.ts`, so no per-mode branching on VALUES, only on the `--jd-color-*` vs `--jd-dark-*` variable NAMES Jodit's default vs dark theme actually reads). Verified via Playwright: before showed `rgb(87,87,87)` (`#575757`, Jodit's default) on the canvas/toolbar in dark mode; after shows the brand's real near-black surface. Regression tests: `joditThemeVars.test.ts` (contrast + non-default-value assertions, lavender + rosewood).
|
|
28
|
-
- **Editor popup/dialog portal gap (user-reported follow-up on the fix above, fixed):** the "Known gap" this section used to note — Jodit appends dialogs and toolbar-dropdown popups (search & replace, image/link properties, font-size list, paragraph format, …) directly to `document.body` (`Dialog.destination` / `getPopupViewRoot` in jodit core), outside the CSS-variable wrapper's DOM subtree, so they kept rendering in Jodit's default (light, unthemed) styling even in dark mode — was reported again as "hovering [in the] editor is not following WCAG standards." Traced via `node_modules/jodit/es2021/jodit.css`: the main toolbar's own `:hover` rule (`.jodit_theme_dark .jodit-toolbar-button:hover`) already clears AA/AA-non-text comfortably once `--jd-dark-background-color`/`--jd-dark-icon-color` are mapped (verified numerically — computed contrast ~10:1+ across all 8 brands, not touched), so the actual gap was specifically the portalled popups never inheriting `themeVars` at all. Fixed by wiring Jodit's own `config.popupRoot` (a supported, documented option — `node_modules/jodit/esm/config.d.ts`: `popupRoot: Nullable<HTMLElement>`) to the wrapper `<Box>`'s own DOM node via a callback ref (`useState<HTMLElement | null>` + `ref={setPopupRoot}` on the `Box`), so `Dialog.destination` resolves to the themed wrapper instead of `document.body` and every popup/dialog now inherits the same CSS custom properties as the toolbar/canvas. Regression test: `Editor.test.tsx` (mocks `jodit-react` to assert `config.popupRoot` is a real DOM node, not `null`/`document.body`). One TS gotcha hit while wiring this: adding a literal `popupRoot` key alongside `...config` (typed `DeepPartial<Config>`, Jodit's huge recursive config type) triggered `TS2589: Type instantiation is excessively deep` — worked around by spreading `config` as `Record<string, unknown>` before the final `as EditorProps["config"]` assertion, since the plain literal-plus-spread pattern is otherwise unaffected (see comment in `Editor.tsx`).
|
|
29
|
-
- **Editor dialog inputs/search-panel/button-hover still unthemed (QA follow-up round, fixed):** the
|
|
30
|
-
`popupRoot` fix above got popups into the themed DOM subtree, but 3 more Jodit CSS variables were
|
|
31
|
-
still unmapped: `--jd-color-panel` (search & replace box background — only set in the light
|
|
32
|
-
branch, so dark mode fell to Jodit's own `#f9f9f9`, a near-white panel), `--jd-color-white` /
|
|
33
|
-
`--jd-color-gray` (`.jodit-ui-input__input` / `.jodit-ui-select__input` background — Jodit's own
|
|
34
|
-
raw white default, unmapped in either mode; `-gray` is what the `_theme_dark`-suffixed variant
|
|
35
|
-
reads instead of `-white`, and dialogs don't reliably get that modifier class). Traced each via
|
|
36
|
-
`node_modules/jodit/es2021/jodit.css` line-by-line before touching anything. Also found (via a
|
|
37
|
-
throwaway jest contrast computation, not assumed): the toolbar/dialog-button hover fill and the
|
|
38
|
-
`.jodit-select`/`.jodit-input` background both already mapped to `--jd-dark-background-ligher:
|
|
39
|
-
colors.backgroundColor.muted` — computed at ~1.3:1 against the canvas, a near-miss that had
|
|
40
|
-
actually shipped (both values sit within ~11 lightness points of each other down near L7-18, where
|
|
41
|
-
WCAG contrast collapses non-linearly) — this was the QA-reported "Insert button illegible on
|
|
42
|
-
hover." Fixed in `joditThemeVars.ts`: `--jd-color-panel` moved into `shared` (role-stable, same
|
|
43
|
-
`backgroundColor.secondary` expression already correct for light); `--jd-color-white:
|
|
44
|
-
background[50]` added to `shared`; `--jd-color-gray: background[50]` added to the dark branch;
|
|
45
|
-
`--jd-dark-background-ligher` changed to `background[900]` (this palette's dark-mode "bright
|
|
46
|
-
highlight" rung, ~9.7-10.7:1 against the canvas across brands — verified before applying, not
|
|
47
|
-
guessed). Confirmed via `node_modules/jodit/es2021/jodit.css` that `.jodit_theme_dark` /
|
|
48
|
-
`.jodit-dialog_theme_dark` already hardcode `--jd-color-border: #6b6b6b` themselves (a Jodit-owned
|
|
49
|
-
override we can't/don't need to touch), so this fix only had to cover panel/input backgrounds and
|
|
50
|
-
the hover fill. Regression tests added to `joditThemeVars.test.ts`.
|
|
51
|
-
- **Date/time input control-boundary + surface pass (this session):** `SingleDatePicker`'s text
|
|
52
|
-
input, `TimePicker`'s hour/minute/AM-PM `<Select>`s, and `TimePickerInput`'s input all gained an
|
|
53
|
-
explicit `bg={theme.colors.gray?.[50]}` (was inheriting the ambient/transparent default) and
|
|
54
|
-
`borderColor={theme.colors.boxborder?.[800]}` (was `undefined`/unset outside the error state) —
|
|
55
|
-
same WCAG 1.4.11 control-boundary standard already applied to `MultiSelect`/`Select.styles`/
|
|
56
|
-
`SelectSearch` (see `inputs-select` MODULE.md). Hover now also resolves to
|
|
57
|
-
`theme.colors.primary[500]` (was `undefined`, i.e. no hover feedback at all) to match the
|
|
58
|
-
existing `_focus` treatment. `TimeOnlyPicker`'s footer divider `borderColor` switched from the
|
|
59
|
-
raw Chakra literal `gray.200` to the token `theme.colors.boxborder?.[300]`. `TimePicker` didn't
|
|
60
|
-
previously call `useCustomTheme()` — added the hook.
|
|
61
|
-
- Masked-input blur must not discard a valid value. `isMaskComplete()` only recognises numeric/`a` tokens, so text month formats (e.g. `MMM d, yyyy`) never look "complete" — `handleInputBlur`/`handleInputFocus` therefore keep any value that `parseValidatedValue()` can parse to a valid date, and only `requestClose(null)` (clear) on empty/unparseable input. The Clear button and emptied-mask paths remain the explicit ways to clear. Regression: `SingleDatePicker.blur.test.tsx`.
|
|
62
|
-
|
|
63
|
-
## Migration notes
|
|
64
|
-
|
|
65
|
-
- DatePicker public export moved: `DatePicker/DatePicker` → `DatePicker/ThemeDatePicker` (exported as `DatePicker` from `src/index.ts`)
|
|
66
|
-
- Split into Single/Range/Time picker variants under the same folder
|
|
67
|
-
- Picker tests build their Chakra theme from `Theme/tokens/brands/lavender/palette.light` (was `Theme/Default/palette`)
|