pixelize-design-library 2.4.2-beta.4 → 2.4.2-beta.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COMPONENT-GOTCHAS.md +1087 -0
- package/README.md +26 -0
- package/dist/Components/Accordion/Accordion.d.ts +1 -0
- package/dist/Components/Accordion/Accordion.js +4 -1
- package/dist/Components/Accordion/AccordionProps.d.ts +2 -0
- package/dist/Components/AlertDialog/AlertDialog.d.ts +1 -0
- package/dist/Components/AlertDialog/AlertDialog.js +1 -0
- package/dist/Components/AlertDialog/AlertDialogProps.d.ts +2 -0
- package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChart.d.ts +1 -0
- package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +1 -0
- package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChartProps.d.ts +4 -0
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.d.ts +1 -0
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.js +1 -0
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChartProps.d.ts +6 -0
- package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.d.ts +1 -0
- package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.js +1 -0
- package/dist/Components/Apexcharts/ApexLineChart/ApexLineChartProps.d.ts +8 -0
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.d.ts +1 -0
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.js +1 -0
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChartProps.d.ts +6 -0
- package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.d.ts +1 -0
- package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +1 -0
- package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarChartsProps.d.ts +3 -0
- package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChart.d.ts +1 -0
- package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +1 -0
- package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChartProps.d.ts +3 -0
- package/dist/Components/AppSwitcher/AppMark.d.ts +19 -0
- package/dist/Components/AppSwitcher/AppMark.js +62 -0
- package/dist/Components/AppSwitcher/AppSwitcher.d.ts +4 -0
- package/dist/Components/AppSwitcher/AppSwitcher.js +278 -0
- package/dist/Components/AppSwitcher/AppSwitcherProps.d.ts +70 -0
- package/dist/Components/AppSwitcher/AppSwitcherProps.js +86 -0
- package/dist/Components/AppSwitcher/useAppSwitcherShortcut.d.ts +3 -0
- package/dist/Components/AppSwitcher/useAppSwitcherShortcut.js +31 -0
- package/dist/Components/AppearanceSettings/AppearanceSettings.js +2 -1
- package/dist/Components/AppearanceSettings/AppearanceSettingsProps.d.ts +2 -0
- package/dist/Components/Breadcrumbs/BreadcrumbsProps.d.ts +3 -0
- package/dist/Components/Button/Button.d.ts +2 -2
- package/dist/Components/Button/Button.js +4 -3
- package/dist/Components/Button/Button.styles.js +37 -23
- package/dist/Components/Button/ButtonProps.d.ts +9 -1
- package/dist/Components/ButtonGroupIcon/ButtonGoupIconProps.d.ts +7 -0
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +2 -4
- package/dist/Components/Buttons/ButtonsProps.d.ts +2 -0
- package/dist/Components/Card/Card.d.ts +1 -1
- package/dist/Components/Card/Card.js +2 -2
- package/dist/Components/Card/CardProps.d.ts +3 -1
- package/dist/Components/Card/PaymentCard/PaymentCard.js +21 -12
- package/dist/Components/Card/PaymentCard/PaymentCardProps.d.ts +6 -0
- package/dist/Components/Checkbox/Checkbox.d.ts +1 -0
- package/dist/Components/Checkbox/Checkbox.js +2 -1
- package/dist/Components/Checkbox/Checkbox.styles.js +12 -7
- package/dist/Components/Checkbox/CheckboxProps.d.ts +4 -0
- package/dist/Components/Common/ErrorComponent.d.ts +2 -0
- package/dist/Components/Common/ErrorComponent.js +7 -5
- package/dist/Components/Common/ErrorMessage.js +2 -2
- package/dist/Components/Common/FormLabel.d.ts +4 -0
- package/dist/Components/Common/FormLabel.js +1 -0
- package/dist/Components/Common/FormattedDescription.d.ts +2 -0
- package/dist/Components/Common/FormattedDescription.js +1 -0
- package/dist/Components/Common/HelperText.d.ts +2 -0
- package/dist/Components/Common/HelperText.js +2 -0
- package/dist/Components/Common/Label.d.ts +1 -0
- package/dist/Components/Common/Label.js +1 -0
- package/dist/Components/Common/fieldStyles.js +1 -1
- package/dist/Components/ContactForm/ContactForm.d.ts +1 -0
- package/dist/Components/ContactForm/ContactForm.js +1 -0
- package/dist/Components/ContactForm/ContactFormProps.d.ts +4 -0
- package/dist/Components/CopyButton/CopyButton.d.ts +3 -1
- package/dist/Components/CopyButton/CopyButton.js +9 -3
- package/dist/Components/CustomModulesTable/CustomModulesTableProps.d.ts +8 -0
- package/dist/Components/DatePicker/CalendarPanel.d.ts +6 -0
- package/dist/Components/DatePicker/CalendarPanel.js +37 -15
- package/dist/Components/DatePicker/DatePicker.d.ts +1 -0
- package/dist/Components/DatePicker/DatePicker.js +1 -0
- package/dist/Components/DatePicker/DatePickerProps.d.ts +30 -0
- package/dist/Components/DatePicker/RangeDatePicker.d.ts +1 -0
- package/dist/Components/DatePicker/RangeDatePicker.js +30 -5
- package/dist/Components/DatePicker/SingleDatePicker.d.ts +1 -0
- package/dist/Components/DatePicker/SingleDatePicker.js +49 -14
- package/dist/Components/DatePicker/ThemeDatePicker.d.ts +1 -0
- package/dist/Components/DatePicker/ThemeDatePicker.js +1 -0
- package/dist/Components/DatePicker/TimeOnlyPicker.d.ts +1 -0
- package/dist/Components/DatePicker/TimeOnlyPicker.js +11 -2
- package/dist/Components/DatePicker/TimePicker.d.ts +1 -0
- package/dist/Components/DatePicker/TimePicker.js +4 -3
- package/dist/Components/DatePicker/TimePickerInput.d.ts +1 -0
- package/dist/Components/DatePicker/TimePickerInput.js +2 -1
- package/dist/Components/DatePicker/dayStates.d.ts +56 -0
- package/dist/Components/DatePicker/dayStates.js +87 -0
- package/dist/Components/Divider/Divider.d.ts +1 -0
- package/dist/Components/Divider/Divider.js +1 -0
- package/dist/Components/Drawer/DrawerProps.d.ts +2 -0
- package/dist/Components/Dropdown/DropDown.d.ts +1 -0
- package/dist/Components/Dropdown/DropDown.js +22 -6
- package/dist/Components/Dropdown/DropdownProps.d.ts +3 -0
- package/dist/Components/Editor/Editor.d.ts +1 -0
- package/dist/Components/Editor/Editor.js +1 -0
- package/dist/Components/Editor/EditorProps.d.ts +2 -0
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.d.ts +1 -0
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -5
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtpProps.d.ts +4 -0
- package/dist/Components/EmptyState/EmptyState.d.ts +1 -0
- package/dist/Components/EmptyState/EmptyState.js +4 -2
- package/dist/Components/EmptyState/EmptyStateProps.d.ts +3 -0
- package/dist/Components/FeedbackForm/FeedbackForm.d.ts +3 -0
- package/dist/Components/FeedbackForm/FeedbackForm.js +1 -0
- package/dist/Components/FieldSelectModal/FieldSelectModal.d.ts +3 -2
- package/dist/Components/FieldSelectModal/FieldSelectModal.js +1 -0
- package/dist/Components/FilePreview/FilePreview.d.ts +1 -0
- package/dist/Components/FilePreview/FilePreview.js +3 -1
- package/dist/Components/FilePreview/FilePreviewProps.d.ts +5 -2
- package/dist/Components/FileUpload/FileUpload.d.ts +1 -0
- package/dist/Components/FileUpload/FileUpload.js +7 -5
- package/dist/Components/FileUpload/FileUploadProps.d.ts +7 -1
- package/dist/Components/FileUpload/constants.js +1 -0
- package/dist/Components/FileUploader/FileUploader.d.ts +1 -0
- package/dist/Components/FileUploader/FileUploader.js +1 -0
- package/dist/Components/FileUploader/FileUploaderProps.d.ts +2 -0
- package/dist/Components/FilterSidebar/FilterSidebar.d.ts +3 -0
- package/dist/Components/FilterSidebar/FilterSidebar.js +5 -5
- package/dist/Components/FilterSidebar/filterHoverStyle.d.ts +2 -10
- package/dist/Components/FilterSidebar/filterHoverStyle.js +3 -10
- package/dist/Components/Form/FormWrapper.d.ts +3 -0
- package/dist/Components/Form/FormWrapper.js +2 -1
- package/dist/Components/Header/HeaderProps.d.ts +5 -0
- package/dist/Components/Header/components/mobileMenu.js +12 -3
- package/dist/Components/Input/Input/InputProps.d.ts +2 -0
- package/dist/Components/Input/PhoneNumberInput.d.ts +1 -0
- package/dist/Components/Input/PhoneNumberInput.js +1 -0
- package/dist/Components/Input/PhoneNumberInputProps.d.ts +3 -0
- package/dist/Components/Input/Switch/InputSwitch.d.ts +2 -0
- package/dist/Components/Input/Switch/InputSwitch.js +1 -0
- package/dist/Components/Input/TextInput.js +1 -0
- package/dist/Components/Input/TextInput.styles.js +8 -10
- package/dist/Components/Input/TextInputProps.d.ts +2 -0
- package/dist/Components/InputTextArea/InputTextArea.d.ts +1 -0
- package/dist/Components/InputTextArea/InputTextArea.js +1 -0
- package/dist/Components/InputTextArea/InputTextArea.style.js +7 -6
- package/dist/Components/InputTextArea/InputTextAreaProps.d.ts +1 -0
- package/dist/Components/KanbanBoard/AccountCard.d.ts +3 -0
- package/dist/Components/KanbanBoard/AccountCard.js +1 -0
- package/dist/Components/KanbanBoard/AccountRow.d.ts +1 -0
- package/dist/Components/KanbanBoard/AccountRow.js +1 -0
- package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.d.ts +2 -0
- package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.js +2 -2
- package/dist/Components/KanbanBoard/KanbanBoard.d.ts +1 -0
- package/dist/Components/KanbanBoard/KanbanBoard.js +1 -0
- package/dist/Components/KanbanBoard/KanbanBoardProps.d.ts +39 -14
- package/dist/Components/KanbanBoard/MeasuredItem.d.ts +1 -0
- package/dist/Components/KanbanBoard/MeasuredItem.js +1 -0
- package/dist/Components/LazyWrapper/LazyWrapper.d.ts +3 -2
- package/dist/Components/LazyWrapper/LazyWrapper.js +1 -0
- package/dist/Components/LimitReachedModal/LimitReachedModalProps.d.ts +4 -1
- package/dist/Components/LimitReachedModal/limitReachedCopy.d.ts +2 -0
- package/dist/Components/LimitReachedModal/limitReachedCopy.js +2 -0
- package/dist/Components/Loading/Loading.d.ts +1 -0
- package/dist/Components/Loading/Loading.js +16 -14
- package/dist/Components/Loading/LoadingProps.d.ts +2 -0
- package/dist/Components/Modal/ModalProps.d.ts +2 -0
- package/dist/Components/MoreItems/MoreItems.d.ts +1 -0
- package/dist/Components/MoreItems/MoreItems.js +4 -1
- package/dist/Components/MoreItems/MoreItemsProps.d.ts +4 -2
- package/dist/Components/MultiSelect/MultiSelect.js +2 -2
- package/dist/Components/MultiSelect/MultiSelectProps.d.ts +2 -0
- package/dist/Components/NavigationBar/NavigationBar.js +9 -10
- package/dist/Components/NavigationBar/NavigationBarProps.d.ts +3 -0
- package/dist/Components/NoteTextArea/NoteTextArea.d.ts +1 -0
- package/dist/Components/NoteTextArea/NoteTextArea.js +10 -4
- package/dist/Components/NoteTextArea/NoteTextAreaProps.d.ts +2 -0
- package/dist/Components/Notification/Notification.d.ts +1 -0
- package/dist/Components/Notification/Notification.js +1 -0
- package/dist/Components/Notification/NotificationProps.d.ts +6 -0
- package/dist/Components/NumberInput/NumberInput.d.ts +1 -0
- package/dist/Components/NumberInput/NumberInput.js +4 -1
- package/dist/Components/NumberInput/NumberInput.styles.js +7 -6
- package/dist/Components/NumberInput/NumberInputProps.d.ts +3 -0
- package/dist/Components/OrgSwitcher/OrgSwitcher.js +14 -10
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +6 -1
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +1 -0
- package/dist/Components/OrganizationDetails/OrganizationDetails.d.ts +1 -0
- package/dist/Components/OrganizationDetails/OrganizationDetails.js +4 -2
- package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +16 -4
- package/dist/Components/PdfViewer/PdfViewer.d.ts +2 -1
- package/dist/Components/PdfViewer/PdfViewer.js +7 -1
- package/dist/Components/PinInput/PinInput.d.ts +1 -0
- package/dist/Components/PinInput/PinInput.js +1 -0
- package/dist/Components/PinInput/PinInputProps.d.ts +2 -0
- package/dist/Components/PinInputs/PinInputs.d.ts +1 -0
- package/dist/Components/PinInputs/PinInputs.js +1 -0
- package/dist/Components/PinInputs/PinInputsProps.d.ts +1 -0
- package/dist/Components/PlanBadge/PlanBadgeProps.d.ts +2 -0
- package/dist/Components/PlanPill/PlanPillProps.d.ts +2 -0
- package/dist/Components/Primitives/Primitives.d.ts +6 -0
- package/dist/Components/Primitives/Primitives.js +113 -0
- package/dist/Components/ProductCard/ProductCardProps.d.ts +10 -0
- package/dist/Components/ProductCard/ProductReview.d.ts +1 -0
- package/dist/Components/ProductCard/ProductReview.js +6 -1
- package/dist/Components/ProductCard/ProductTags.js +1 -1
- package/dist/Components/ProductDetails/ProductDetailsProps.d.ts +7 -0
- package/dist/Components/ProfileCard/ProfileCard.js +1 -1
- package/dist/Components/ProfileCard/ProfileCardProps.d.ts +3 -0
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +1 -0
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +5 -3
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewerProps.d.ts +9 -1
- package/dist/Components/ProgressBar/ProgressBar.d.ts +1 -0
- package/dist/Components/ProgressBar/ProgressBar.js +1 -0
- package/dist/Components/ProgressBar/ProgressBarProps.d.ts +2 -0
- package/dist/Components/RadioButton/RadioButton.js +3 -2
- package/dist/Components/RadioButton/RadioButtonProps.d.ts +2 -0
- package/dist/Components/Reorder/Reorder.d.ts +2 -0
- package/dist/Components/Reorder/Reorder.js +1 -0
- package/dist/Components/Reorder/ReorderProps.d.ts +3 -0
- package/dist/Components/RolesPermission/RolesPermission.d.ts +1 -0
- package/dist/Components/RolesPermission/RolesPermission.js +5 -3
- package/dist/Components/RolesPermission/RolesPermissionProps.d.ts +16 -1
- package/dist/Components/ScrollToTop/ScrollToTop.d.ts +3 -2
- package/dist/Components/ScrollToTop/ScrollToTop.js +4 -1
- package/dist/Components/ScrollbarBox/ScrollbarBox.d.ts +7 -0
- package/dist/Components/ScrollbarBox/ScrollbarBox.js +1 -0
- package/dist/Components/Search/Search.d.ts +1 -0
- package/dist/Components/Search/Search.js +3 -2
- package/dist/Components/Search/SearchProps.d.ts +2 -0
- package/dist/Components/SearchSelect/SearchSelect.d.ts +1 -0
- package/dist/Components/SearchSelect/SearchSelect.js +48 -37
- package/dist/Components/SearchSelect/SearchSelectProps.d.ts +23 -0
- package/dist/Components/SegmentedControl/SegmentedControl.d.ts +3 -0
- package/dist/Components/SegmentedControl/SegmentedControl.js +89 -0
- package/dist/Components/SegmentedControl/SegmentedControlProps.d.ts +23 -0
- package/dist/Components/SegmentedControl/SegmentedControlProps.js +2 -0
- package/dist/Components/Select/Select.d.ts +1 -1
- package/dist/Components/Select/Select.js +4 -2
- package/dist/Components/Select/Select.styles.js +3 -2
- package/dist/Components/Select/SelectProps.d.ts +6 -0
- package/dist/Components/SelectSearch/SelectSearch.d.ts +1 -0
- package/dist/Components/SelectSearch/SelectSearch.js +37 -15
- package/dist/Components/SelectSearch/SelectSearchProps.d.ts +5 -0
- package/dist/Components/SelectV2/SelectV2.d.ts +1 -0
- package/dist/Components/SelectV2/SelectV2.js +20 -5
- package/dist/Components/SelectV2/SelectV2Props.d.ts +6 -1
- package/dist/Components/SideBar/SecondaryBar.js +1 -1
- package/dist/Components/SideBar/SideBar.js +5 -3
- package/dist/Components/SideBar/SideBarProps.d.ts +38 -24
- package/dist/Components/SideBar/components/MenuPopoverContent.js +2 -2
- package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +3 -0
- package/dist/Components/Skeletons/SkeletonProps.d.ts +2 -0
- package/dist/Components/Skeletons/Skeletons.d.ts +1 -0
- package/dist/Components/Skeletons/Skeletons.js +1 -0
- package/dist/Components/Slider/Slider.d.ts +3 -0
- package/dist/Components/Slider/Slider.js +9 -1
- package/dist/Components/StageProgress/StageItem.d.ts +1 -0
- package/dist/Components/StageProgress/StageItem.js +1 -0
- package/dist/Components/StageProgress/StageProgress.d.ts +1 -0
- package/dist/Components/StageProgress/StageProgress.js +1 -0
- package/dist/Components/StageProgress/StageProgressProps.d.ts +45 -4
- package/dist/Components/StageProgress/StageProgressProps.js +6 -4
- package/dist/Components/StageProgress/StepperStage.js +2 -2
- package/dist/Components/Switch/Switch.d.ts +1 -0
- package/dist/Components/Switch/Switch.js +1 -0
- package/dist/Components/Switch/SwitchProps.d.ts +1 -0
- package/dist/Components/Table/Table.d.ts +2 -1
- package/dist/Components/Table/Table.js +15 -5
- package/dist/Components/Table/TableProps.d.ts +47 -0
- package/dist/Components/Table/components/Pagination.js +1 -1
- package/dist/Components/Table/components/TableActions.js +2 -2
- package/dist/Components/Table/components/TableBody.js +44 -18
- package/dist/Components/Table/components/TableGroupRow.js +1 -1
- package/dist/Components/Table/components/TableHeader.js +21 -8
- package/dist/Components/Table/components/TableSearch.js +1 -1
- package/dist/Components/Table/filters/CompactSelect.d.ts +1 -0
- package/dist/Components/Table/filters/CompactSelect.js +29 -8
- package/dist/Components/Table/filters/LeftFilterPane.d.ts +9 -1
- package/dist/Components/Table/filters/LeftFilterPane.js +1 -1
- package/dist/Components/Table/settings/ManageColumns.js +8 -5
- package/dist/Components/Table/settings/TableSettings.js +6 -4
- package/dist/Components/Table/variants/TableVariantContext.d.ts +4 -0
- package/dist/Components/Table/variants/TableVariantContext.js +17 -0
- package/dist/Components/Table/variants/classic.d.ts +6 -0
- package/dist/Components/Table/variants/classic.js +47 -0
- package/dist/Components/Table/variants/index.d.ts +7 -0
- package/dist/Components/Table/variants/index.js +27 -0
- package/dist/Components/Table/variants/pillInk.d.ts +6 -0
- package/dist/Components/Table/variants/pillInk.js +21 -0
- package/dist/Components/Table/variants/studio.d.ts +6 -0
- package/dist/Components/Table/variants/studio.js +50 -0
- package/dist/Components/Table/variants/tokens.d.ts +49 -0
- package/dist/Components/Table/variants/tokens.js +2 -0
- package/dist/Components/Tag/Tag.d.ts +1 -0
- package/dist/Components/Tag/Tag.js +1 -0
- package/dist/Components/Tag/Tag.styles.js +16 -11
- package/dist/Components/Tag/TagProps.d.ts +7 -0
- package/dist/Components/Timeline/Timeline.d.ts +1 -0
- package/dist/Components/Timeline/Timeline.js +1 -0
- package/dist/Components/Timeline/TimelineProps.d.ts +8 -0
- package/dist/Components/Toaster/Toaster.d.ts +1 -0
- package/dist/Components/Toaster/Toaster.js +1 -0
- package/dist/Components/Toaster/ToasterProps.d.ts +3 -0
- package/dist/Components/Toggle/TableToggle.d.ts +1 -0
- package/dist/Components/Toggle/TableToggle.js +73 -18
- package/dist/Components/Toggle/TableToggleProps.d.ts +6 -0
- package/dist/Components/ToggleSwitch/ToggleSwitch.d.ts +3 -0
- package/dist/Components/ToggleSwitch/ToggleSwitch.js +19 -0
- package/dist/Components/ToggleSwitch/ToggleSwitchProps.d.ts +13 -0
- package/dist/Components/ToggleSwitch/ToggleSwitchProps.js +2 -0
- package/dist/Components/ToolTip/ToolTip.d.ts +1 -0
- package/dist/Components/ToolTip/ToolTip.js +7 -6
- package/dist/Components/ToolTip/ToolTipProps.d.ts +5 -1
- package/dist/Components/Trail/EditableCell.d.ts +2 -0
- package/dist/Components/Trail/EditableCell.js +2 -1
- package/dist/Components/Trail/SelectAllCheckbox.d.ts +1 -0
- package/dist/Components/Trail/SelectAllCheckbox.js +1 -0
- package/dist/Components/Trail/TrailWorks.d.ts +1 -0
- package/dist/Components/Trail/TrailWorks.js +2 -1
- package/dist/Components/UpgradeButton/UpgradeButtonProps.d.ts +6 -2
- package/dist/Components/UserDetails/DeactivateConfirmModal.js +1 -1
- package/dist/Components/UserDetails/UserDetails.d.ts +1 -0
- package/dist/Components/UserDetails/UserDetails.js +6 -3
- package/dist/Components/UserDetails/UserDetailsProps.d.ts +30 -1
- package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +6 -1
- package/dist/Hooks/exclusiveOverlay.d.ts +4 -0
- package/dist/Hooks/exclusiveOverlay.js +22 -0
- package/dist/Hooks/useExclusiveOverlay.d.ts +5 -0
- package/dist/Hooks/useExclusiveOverlay.js +24 -0
- package/dist/Theme/assertPalette.d.ts +1 -1
- package/dist/Theme/assertPalette.js +3 -2
- package/dist/Theme/chakra/Menu.styles.d.ts +2 -0
- package/dist/Theme/chakra/Menu.styles.js +9 -5
- package/dist/Theme/chakra/Popover.styles.d.ts +3 -0
- package/dist/Theme/chakra/Popover.styles.js +5 -1
- package/dist/Theme/chakra/componentStyles.d.ts +5 -0
- package/dist/Theme/chakra/componentStyles.js +16 -9
- package/dist/Theme/chakra/createBrandTheme.js +22 -9
- package/dist/Theme/chakra/focusRing.styles.d.ts +52 -0
- package/dist/Theme/chakra/focusRing.styles.js +46 -0
- package/dist/Theme/provider/ThemeSwitcher.js +5 -2
- package/dist/Theme/tokens/brands/index.js +6 -1
- package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts +1 -0
- package/dist/Theme/tokens/builders/buildDarkPalette.js +6 -1
- package/dist/Theme/tokens/builders/chartColorsFromTheme.js +1 -1
- package/dist/Theme/tokens/builders/filledSurface.d.ts +29 -0
- package/dist/Theme/tokens/builders/filledSurface.js +74 -0
- package/dist/Theme/tokens/builders/focusRing.d.ts +52 -0
- package/dist/Theme/tokens/builders/focusRing.js +92 -0
- package/dist/Theme/tokens/builders/index.d.ts +2 -0
- package/dist/Theme/tokens/builders/index.js +2 -0
- package/dist/Theme/tokens/builders/outlineRung.d.ts +41 -3
- package/dist/Theme/tokens/builders/outlineRung.js +82 -5
- package/dist/Theme/tokens/builders/placeholderInk.d.ts +19 -0
- package/dist/Theme/tokens/builders/placeholderInk.js +35 -0
- package/dist/Theme/tokens/builders/resolvedRungs.d.ts +5 -1
- package/dist/Theme/tokens/builders/resolvedRungs.js +7 -2
- package/dist/Theme/tokens/builders/rowStates.d.ts +13 -0
- package/dist/Theme/tokens/builders/rowStates.js +19 -0
- package/dist/Theme/tokens/builders/scrollShadow.d.ts +2 -0
- package/dist/Theme/tokens/builders/scrollShadow.js +16 -0
- package/dist/Theme/tokens/builders/surfaceRungs.d.ts +5 -2
- package/dist/Theme/tokens/builders/surfaceRungs.js +19 -9
- package/dist/Theme/tokens/types.d.ts +21 -1
- package/dist/Utils/table.d.ts +3 -0
- package/dist/Utils/table.js +49 -3
- package/dist/esm/Components/Accordion/Accordion.js +4 -1
- package/dist/esm/Components/AlertDialog/AlertDialog.js +1 -0
- package/dist/esm/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +1 -0
- package/dist/esm/Components/Apexcharts/ApexBarChart/ApexBarChart.js +1 -0
- package/dist/esm/Components/Apexcharts/ApexLineChart/ApexLineChart.js +1 -0
- package/dist/esm/Components/Apexcharts/ApexPieChart/ApexPieChart.js +1 -0
- package/dist/esm/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +1 -0
- package/dist/esm/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +1 -0
- package/dist/esm/Components/AppSwitcher/AppMark.js +56 -0
- package/dist/esm/Components/AppSwitcher/AppSwitcher.js +243 -0
- package/dist/esm/Components/AppSwitcher/AppSwitcherProps.js +78 -0
- package/dist/esm/Components/AppSwitcher/useAppSwitcherShortcut.js +27 -0
- package/dist/esm/Components/AppearanceSettings/AppearanceSettings.js +2 -1
- package/dist/esm/Components/Button/Button.js +5 -4
- package/dist/esm/Components/Button/Button.styles.js +38 -24
- package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +2 -4
- package/dist/esm/Components/Card/Card.js +2 -2
- package/dist/esm/Components/Card/PaymentCard/PaymentCard.js +21 -12
- package/dist/esm/Components/Checkbox/Checkbox.js +2 -1
- package/dist/esm/Components/Checkbox/Checkbox.styles.js +13 -8
- package/dist/esm/Components/Common/ErrorComponent.js +7 -5
- package/dist/esm/Components/Common/ErrorMessage.js +2 -2
- package/dist/esm/Components/Common/FormLabel.js +1 -0
- package/dist/esm/Components/Common/FormattedDescription.js +1 -0
- package/dist/esm/Components/Common/HelperText.js +2 -0
- package/dist/esm/Components/Common/Label.js +1 -0
- package/dist/esm/Components/Common/fieldStyles.js +1 -1
- package/dist/esm/Components/ContactForm/ContactForm.js +1 -0
- package/dist/esm/Components/CopyButton/CopyButton.js +10 -4
- package/dist/esm/Components/DatePicker/CalendarPanel.js +38 -16
- package/dist/esm/Components/DatePicker/DatePicker.js +1 -0
- package/dist/esm/Components/DatePicker/RangeDatePicker.js +31 -6
- package/dist/esm/Components/DatePicker/SingleDatePicker.js +50 -15
- package/dist/esm/Components/DatePicker/ThemeDatePicker.js +1 -0
- package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +11 -2
- package/dist/esm/Components/DatePicker/TimePicker.js +4 -3
- package/dist/esm/Components/DatePicker/TimePickerInput.js +2 -1
- package/dist/esm/Components/DatePicker/dayStates.js +79 -0
- package/dist/esm/Components/Divider/Divider.js +1 -0
- package/dist/esm/Components/Dropdown/DropDown.js +23 -7
- package/dist/esm/Components/Editor/Editor.js +1 -0
- package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -5
- package/dist/esm/Components/EmptyState/EmptyState.js +4 -2
- package/dist/esm/Components/FeedbackForm/FeedbackForm.js +1 -0
- package/dist/esm/Components/FieldSelectModal/FieldSelectModal.js +1 -0
- package/dist/esm/Components/FilePreview/FilePreview.js +3 -1
- package/dist/esm/Components/FileUpload/FileUpload.js +8 -6
- package/dist/esm/Components/FileUpload/constants.js +1 -0
- package/dist/esm/Components/FileUploader/FileUploader.js +1 -0
- package/dist/esm/Components/FilterSidebar/FilterSidebar.js +5 -5
- package/dist/esm/Components/FilterSidebar/filterHoverStyle.js +3 -10
- package/dist/esm/Components/Form/FormWrapper.js +2 -1
- package/dist/esm/Components/Header/components/mobileMenu.js +12 -3
- package/dist/esm/Components/Input/PhoneNumberInput.js +1 -0
- package/dist/esm/Components/Input/Switch/InputSwitch.js +1 -0
- package/dist/esm/Components/Input/TextInput.js +1 -0
- package/dist/esm/Components/Input/TextInput.styles.js +8 -10
- package/dist/esm/Components/InputTextArea/InputTextArea.js +1 -0
- package/dist/esm/Components/InputTextArea/InputTextArea.style.js +7 -6
- package/dist/esm/Components/KanbanBoard/AccountCard.js +1 -0
- package/dist/esm/Components/KanbanBoard/AccountRow.js +1 -0
- package/dist/esm/Components/KanbanBoard/KanbanActions/KanbanActions.js +2 -2
- package/dist/esm/Components/KanbanBoard/KanbanBoard.js +1 -0
- package/dist/esm/Components/KanbanBoard/MeasuredItem.js +1 -0
- package/dist/esm/Components/LazyWrapper/LazyWrapper.js +1 -0
- package/dist/esm/Components/LimitReachedModal/limitReachedCopy.js +2 -0
- package/dist/esm/Components/Loading/Loading.js +13 -11
- package/dist/esm/Components/MoreItems/MoreItems.js +4 -1
- package/dist/esm/Components/MultiSelect/MultiSelect.js +2 -2
- package/dist/esm/Components/NavigationBar/NavigationBar.js +9 -10
- package/dist/esm/Components/NoteTextArea/NoteTextArea.js +10 -4
- package/dist/esm/Components/Notification/Notification.js +1 -0
- package/dist/esm/Components/NumberInput/NumberInput.js +5 -2
- package/dist/esm/Components/NumberInput/NumberInput.styles.js +7 -6
- package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +14 -10
- package/dist/esm/Components/OrgSwitcher/OrgSwitcherProps.js +1 -0
- package/dist/esm/Components/OrganizationDetails/OrganizationDetails.js +5 -3
- package/dist/esm/Components/PdfViewer/PdfViewer.js +7 -1
- package/dist/esm/Components/PinInput/PinInput.js +1 -0
- package/dist/esm/Components/PinInputs/PinInputs.js +1 -0
- package/dist/esm/Components/Primitives/Primitives.js +6 -0
- package/dist/esm/Components/ProductCard/ProductReview.js +6 -1
- package/dist/esm/Components/ProductCard/ProductTags.js +1 -1
- package/dist/esm/Components/ProfileCard/ProfileCard.js +1 -1
- package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +6 -4
- package/dist/esm/Components/ProgressBar/ProgressBar.js +1 -0
- package/dist/esm/Components/RadioButton/RadioButton.js +3 -2
- package/dist/esm/Components/Reorder/Reorder.js +1 -0
- package/dist/esm/Components/RolesPermission/RolesPermission.js +5 -3
- package/dist/esm/Components/ScrollToTop/ScrollToTop.js +4 -1
- package/dist/esm/Components/ScrollbarBox/ScrollbarBox.js +1 -0
- package/dist/esm/Components/Search/Search.js +3 -2
- package/dist/esm/Components/SearchSelect/SearchSelect.js +48 -37
- package/dist/esm/Components/SegmentedControl/SegmentedControl.js +86 -0
- package/dist/esm/Components/SegmentedControl/SegmentedControlProps.js +1 -0
- package/dist/esm/Components/Select/Select.js +5 -3
- package/dist/esm/Components/Select/Select.styles.js +3 -2
- package/dist/esm/Components/SelectSearch/SelectSearch.js +37 -15
- package/dist/esm/Components/SelectV2/SelectV2.js +20 -5
- package/dist/esm/Components/SideBar/SecondaryBar.js +1 -1
- package/dist/esm/Components/SideBar/SideBar.js +5 -3
- package/dist/esm/Components/SideBar/components/MenuPopoverContent.js +2 -2
- package/dist/esm/Components/Skeletons/Skeletons.js +1 -0
- package/dist/esm/Components/Slider/Slider.js +9 -1
- package/dist/esm/Components/StageProgress/StageItem.js +1 -0
- package/dist/esm/Components/StageProgress/StageProgress.js +1 -0
- package/dist/esm/Components/StageProgress/StageProgressProps.js +7 -5
- package/dist/esm/Components/StageProgress/StepperStage.js +2 -2
- package/dist/esm/Components/Switch/Switch.js +1 -0
- package/dist/esm/Components/Table/Table.js +15 -5
- package/dist/esm/Components/Table/components/Pagination.js +1 -1
- package/dist/esm/Components/Table/components/TableActions.js +2 -2
- package/dist/esm/Components/Table/components/TableBody.js +44 -18
- package/dist/esm/Components/Table/components/TableGroupRow.js +1 -1
- package/dist/esm/Components/Table/components/TableHeader.js +21 -8
- package/dist/esm/Components/Table/components/TableSearch.js +1 -1
- package/dist/esm/Components/Table/filters/CompactSelect.js +29 -8
- package/dist/esm/Components/Table/filters/LeftFilterPane.js +1 -1
- package/dist/esm/Components/Table/settings/ManageColumns.js +8 -5
- package/dist/esm/Components/Table/settings/TableSettings.js +7 -5
- package/dist/esm/Components/Table/variants/TableVariantContext.js +13 -0
- package/dist/esm/Components/Table/variants/classic.js +43 -0
- package/dist/esm/Components/Table/variants/index.js +9 -0
- package/dist/esm/Components/Table/variants/pillInk.js +18 -0
- package/dist/esm/Components/Table/variants/studio.js +46 -0
- package/dist/esm/Components/Table/variants/tokens.js +1 -0
- package/dist/esm/Components/Tag/Tag.js +1 -0
- package/dist/esm/Components/Tag/Tag.styles.js +17 -12
- package/dist/esm/Components/Timeline/Timeline.js +1 -0
- package/dist/esm/Components/Toaster/Toaster.js +1 -0
- package/dist/esm/Components/Toggle/TableToggle.js +72 -17
- package/dist/esm/Components/ToggleSwitch/ToggleSwitch.js +16 -0
- package/dist/esm/Components/ToggleSwitch/ToggleSwitchProps.js +1 -0
- package/dist/esm/Components/ToolTip/ToolTip.js +7 -6
- package/dist/esm/Components/Trail/EditableCell.js +2 -1
- package/dist/esm/Components/Trail/SelectAllCheckbox.js +1 -0
- package/dist/esm/Components/Trail/TrailWorks.js +2 -1
- package/dist/esm/Components/UserDetails/DeactivateConfirmModal.js +1 -1
- package/dist/esm/Components/UserDetails/UserDetails.js +6 -3
- package/dist/esm/Hooks/exclusiveOverlay.js +16 -0
- package/dist/esm/Hooks/useExclusiveOverlay.js +20 -0
- package/dist/esm/Theme/assertPalette.js +3 -2
- package/dist/esm/Theme/chakra/Menu.styles.js +9 -5
- package/dist/esm/Theme/chakra/Popover.styles.js +5 -1
- package/dist/esm/Theme/chakra/componentStyles.js +16 -9
- package/dist/esm/Theme/chakra/createBrandTheme.js +22 -9
- package/dist/esm/Theme/chakra/focusRing.styles.js +40 -0
- package/dist/esm/Theme/provider/ThemeSwitcher.js +5 -2
- package/dist/esm/Theme/tokens/brands/index.js +6 -1
- package/dist/esm/Theme/tokens/builders/buildDarkPalette.js +6 -1
- package/dist/esm/Theme/tokens/builders/chartColorsFromTheme.js +1 -1
- package/dist/esm/Theme/tokens/builders/filledSurface.js +67 -0
- package/dist/esm/Theme/tokens/builders/focusRing.js +85 -0
- package/dist/esm/Theme/tokens/builders/index.js +2 -0
- package/dist/esm/Theme/tokens/builders/outlineRung.js +78 -4
- package/dist/esm/Theme/tokens/builders/placeholderInk.js +29 -0
- package/dist/esm/Theme/tokens/builders/resolvedRungs.js +7 -2
- package/dist/esm/Theme/tokens/builders/rowStates.js +15 -0
- package/dist/esm/Theme/tokens/builders/scrollShadow.js +13 -0
- package/dist/esm/Theme/tokens/builders/surfaceRungs.js +20 -10
- package/dist/esm/Utils/table.js +50 -5
- package/dist/esm/index.js +26 -1
- package/dist/index.d.ts +26 -3
- package/dist/index.js +67 -4
- package/package.json +11 -4
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { FocusRingTokens, PaletteProps } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* The nearest re-lighting of `hex` that clears `target` against EVERY backdrop at once.
|
|
4
|
+
*
|
|
5
|
+
* Not `settleAcross`: that folds one `liftToContrast` per surface, and each lift walks AWAY from
|
|
6
|
+
* the surface it was handed. That is correct when every backdrop sits on the same side of the ink
|
|
7
|
+
* (its case — a set of light surfaces, or a set of dark ones), and wrong here, where a focus ring
|
|
8
|
+
* is squeezed BETWEEN a near-white canvas and a mid-dark button fill: the lift against the fill
|
|
9
|
+
* walks straight back across the canvas it had just cleared. Seeding `settleAcross` with
|
|
10
|
+
* `primary[500]` measured 1.08-1.99 on the light canvas for every brand for exactly that reason.
|
|
11
|
+
*
|
|
12
|
+
* Walking outward from the seed and testing every backdrop at each step keeps the result the
|
|
13
|
+
* CLOSEST passing colour to the brand accent, so the ring still reads as brand chrome. Contrast is
|
|
14
|
+
* a function of relative luminance alone, and lightness sweeps luminance monotonically from 0 to 1,
|
|
15
|
+
* so if any colour on this hue clears the set, this finds it.
|
|
16
|
+
*/
|
|
17
|
+
export declare function settleBetween(hex: string, backdrops: readonly string[], target?: number): string;
|
|
18
|
+
/** Everything the ring is derived from. A `PaletteProps` satisfies it; so does a brand source. */
|
|
19
|
+
export type FocusRingSource = Pick<PaletteProps, "primary" | "background" | "backgroundColor">;
|
|
20
|
+
/**
|
|
21
|
+
* The three backdrops a focused button's ring is actually drawn against: the page canvas, a card
|
|
22
|
+
* surface, and — because a solid button's ring sits directly against its own fill — `primary[500]`.
|
|
23
|
+
*
|
|
24
|
+
* Deliberately NOT every named surface. `muted`/`accent`/`quaternary` are mid-tone, and a single
|
|
25
|
+
* band asked to clear those AND a dark brand fill has no solution at any hue — contrast is
|
|
26
|
+
* luminance alone, and `skyline`/`storefront` come out with an empty band. That is what the second
|
|
27
|
+
* tone is for: `halo` owns the fill-side adjacency instead.
|
|
28
|
+
*/
|
|
29
|
+
export declare const focusRingBackdrops: (source: FocusRingSource) => string[];
|
|
30
|
+
/**
|
|
31
|
+
* The two-tone `:focus-visible` indicator.
|
|
32
|
+
*
|
|
33
|
+
* Chakra's stock ring (`shadows.outline`, a fixed `rgba(66,153,225,.6)`) measured 1.83:1 on the
|
|
34
|
+
* lavender canvas and 1.38:1 on a primary button — a focus indicator you cannot see, on all nine
|
|
35
|
+
* brands. It is one hardcoded blue, so no palette could have saved it.
|
|
36
|
+
*
|
|
37
|
+
* `halo` is the surface tone, drawn as the inner band so the indicator separates from a filled
|
|
38
|
+
* control whatever `colorScheme` painted it. `ring` is the brand accent, walked to the nearest
|
|
39
|
+
* lightness that clears 3:1 on all three backdrops at once — including the halo, so the two tones
|
|
40
|
+
* are always told apart.
|
|
41
|
+
*/
|
|
42
|
+
export declare const buildFocusRing: (source: FocusRingSource) => FocusRingTokens;
|
|
43
|
+
/**
|
|
44
|
+
* Re-derives the ring from the FINISHED palette, as the last step of the rung chain.
|
|
45
|
+
*
|
|
46
|
+
* `finalizeLightPalette` and `buildDarkPalette` seed it, but neither is the final word: a brand
|
|
47
|
+
* file may replace `primary` or `background` after the generic derivation runs — `zinc`'s dark
|
|
48
|
+
* palette replaces both, inverting the filled button to near-white — and a ring resolved against
|
|
49
|
+
* the pre-override values is then silently wrong. Same reason `withSurfaceRungs` re-lifts inks the
|
|
50
|
+
* finalizers already derived. `focusRing.test.ts` asserts this is a fixed point.
|
|
51
|
+
*/
|
|
52
|
+
export declare const withFocusRing: (palette: PaletteProps) => PaletteProps;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withFocusRing = exports.buildFocusRing = exports.focusRingBackdrops = void 0;
|
|
4
|
+
exports.settleBetween = settleBetween;
|
|
5
|
+
const color_1 = require("./color");
|
|
6
|
+
const outlineRung_1 = require("./outlineRung");
|
|
7
|
+
/** Same lightness granularity `buildDarkPalette` walks its accents at. */
|
|
8
|
+
const LIGHTNESS_STEP = 0.5;
|
|
9
|
+
/**
|
|
10
|
+
* The nearest re-lighting of `hex` that clears `target` against EVERY backdrop at once.
|
|
11
|
+
*
|
|
12
|
+
* Not `settleAcross`: that folds one `liftToContrast` per surface, and each lift walks AWAY from
|
|
13
|
+
* the surface it was handed. That is correct when every backdrop sits on the same side of the ink
|
|
14
|
+
* (its case — a set of light surfaces, or a set of dark ones), and wrong here, where a focus ring
|
|
15
|
+
* is squeezed BETWEEN a near-white canvas and a mid-dark button fill: the lift against the fill
|
|
16
|
+
* walks straight back across the canvas it had just cleared. Seeding `settleAcross` with
|
|
17
|
+
* `primary[500]` measured 1.08-1.99 on the light canvas for every brand for exactly that reason.
|
|
18
|
+
*
|
|
19
|
+
* Walking outward from the seed and testing every backdrop at each step keeps the result the
|
|
20
|
+
* CLOSEST passing colour to the brand accent, so the ring still reads as brand chrome. Contrast is
|
|
21
|
+
* a function of relative luminance alone, and lightness sweeps luminance monotonically from 0 to 1,
|
|
22
|
+
* so if any colour on this hue clears the set, this finds it.
|
|
23
|
+
*/
|
|
24
|
+
function settleBetween(hex, backdrops, target = outlineRung_1.AA_NON_TEXT) {
|
|
25
|
+
const clears = (candidate) => backdrops.every((backdrop) => (0, color_1.contrastRatio)(candidate, backdrop) >= target);
|
|
26
|
+
if (clears(hex))
|
|
27
|
+
return hex;
|
|
28
|
+
const { l } = (0, color_1.hexToHsl)(hex);
|
|
29
|
+
for (let step = LIGHTNESS_STEP; step <= 100; step += LIGHTNESS_STEP) {
|
|
30
|
+
const darker = (0, color_1.withLightness)(hex, l - step);
|
|
31
|
+
if (clears(darker))
|
|
32
|
+
return darker;
|
|
33
|
+
const lighter = (0, color_1.withLightness)(hex, l + step);
|
|
34
|
+
if (clears(lighter))
|
|
35
|
+
return lighter;
|
|
36
|
+
}
|
|
37
|
+
// Unreachable for every shipped brand (the gate proves it) — a brand whose fill and canvas are
|
|
38
|
+
// close enough to leave no gap would land here. Take the end that is least bad rather than throw
|
|
39
|
+
// at import time, and let `focusRing.test.ts` be what reports it.
|
|
40
|
+
const ends = [(0, color_1.withLightness)(hex, 0), (0, color_1.withLightness)(hex, 100)];
|
|
41
|
+
const worst = (candidate) => Math.min(...backdrops.map((backdrop) => (0, color_1.contrastRatio)(candidate, backdrop)));
|
|
42
|
+
return worst(ends[0]) >= worst(ends[1]) ? ends[0] : ends[1];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The three backdrops a focused button's ring is actually drawn against: the page canvas, a card
|
|
46
|
+
* surface, and — because a solid button's ring sits directly against its own fill — `primary[500]`.
|
|
47
|
+
*
|
|
48
|
+
* Deliberately NOT every named surface. `muted`/`accent`/`quaternary` are mid-tone, and a single
|
|
49
|
+
* band asked to clear those AND a dark brand fill has no solution at any hue — contrast is
|
|
50
|
+
* luminance alone, and `skyline`/`storefront` come out with an empty band. That is what the second
|
|
51
|
+
* tone is for: `halo` owns the fill-side adjacency instead.
|
|
52
|
+
*/
|
|
53
|
+
const focusRingBackdrops = (source) => [
|
|
54
|
+
source.backgroundColor.main,
|
|
55
|
+
source.background[50],
|
|
56
|
+
source.primary[500],
|
|
57
|
+
];
|
|
58
|
+
exports.focusRingBackdrops = focusRingBackdrops;
|
|
59
|
+
/**
|
|
60
|
+
* The two-tone `:focus-visible` indicator.
|
|
61
|
+
*
|
|
62
|
+
* Chakra's stock ring (`shadows.outline`, a fixed `rgba(66,153,225,.6)`) measured 1.83:1 on the
|
|
63
|
+
* lavender canvas and 1.38:1 on a primary button — a focus indicator you cannot see, on all nine
|
|
64
|
+
* brands. It is one hardcoded blue, so no palette could have saved it.
|
|
65
|
+
*
|
|
66
|
+
* `halo` is the surface tone, drawn as the inner band so the indicator separates from a filled
|
|
67
|
+
* control whatever `colorScheme` painted it. `ring` is the brand accent, walked to the nearest
|
|
68
|
+
* lightness that clears 3:1 on all three backdrops at once — including the halo, so the two tones
|
|
69
|
+
* are always told apart.
|
|
70
|
+
*/
|
|
71
|
+
const buildFocusRing = (source) => {
|
|
72
|
+
const halo = settleBetween(source.background[50], [source.primary[500]]);
|
|
73
|
+
return {
|
|
74
|
+
halo,
|
|
75
|
+
ring: settleBetween(source.primary[500], [...(0, exports.focusRingBackdrops)(source), halo]),
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
exports.buildFocusRing = buildFocusRing;
|
|
79
|
+
/**
|
|
80
|
+
* Re-derives the ring from the FINISHED palette, as the last step of the rung chain.
|
|
81
|
+
*
|
|
82
|
+
* `finalizeLightPalette` and `buildDarkPalette` seed it, but neither is the final word: a brand
|
|
83
|
+
* file may replace `primary` or `background` after the generic derivation runs — `zinc`'s dark
|
|
84
|
+
* palette replaces both, inverting the filled button to near-white — and a ring resolved against
|
|
85
|
+
* the pre-override values is then silently wrong. Same reason `withSurfaceRungs` re-lifts inks the
|
|
86
|
+
* finalizers already derived. `focusRing.test.ts` asserts this is a fixed point.
|
|
87
|
+
*/
|
|
88
|
+
const withFocusRing = (palette) => ({
|
|
89
|
+
...palette,
|
|
90
|
+
focusRing: (0, exports.buildFocusRing)(palette),
|
|
91
|
+
});
|
|
92
|
+
exports.withFocusRing = withFocusRing;
|
|
@@ -3,5 +3,7 @@ export * from "./buildBrandTokens";
|
|
|
3
3
|
export * from "./buildDarkPalette";
|
|
4
4
|
export * from "./chartColorsFromTheme";
|
|
5
5
|
export * from "./color";
|
|
6
|
+
export * from "./focusRing";
|
|
6
7
|
export * from "./scrollbar";
|
|
7
8
|
export * from "./gradientInk";
|
|
9
|
+
export * from "./placeholderInk";
|
|
@@ -19,5 +19,7 @@ __exportStar(require("./buildBrandTokens"), exports);
|
|
|
19
19
|
__exportStar(require("./buildDarkPalette"), exports);
|
|
20
20
|
__exportStar(require("./chartColorsFromTheme"), exports);
|
|
21
21
|
__exportStar(require("./color"), exports);
|
|
22
|
+
__exportStar(require("./focusRing"), exports);
|
|
22
23
|
__exportStar(require("./scrollbar"), exports);
|
|
23
24
|
__exportStar(require("./gradientInk"), exports);
|
|
25
|
+
__exportStar(require("./placeholderInk"), exports);
|
|
@@ -7,6 +7,28 @@ import type { PaletteProps } from "../types";
|
|
|
7
7
|
export declare const MIN_PERCEPTIBLE_STEP = 1.15;
|
|
8
8
|
/** WCAG 1.4.11 — a control outline is a UI component boundary, held to 3:1. */
|
|
9
9
|
export declare const AA_NON_TEXT = 3;
|
|
10
|
+
/**
|
|
11
|
+
* Resting chrome — card, popover and field outlines — settles here, not at `AA_NON_TEXT`.
|
|
12
|
+
* At 3:1 a container border is text-weight and the UI reads as a wireframe; every mainstream
|
|
13
|
+
* system draws this line far lighter (Tailwind gray-200 1.24, Chakra gray.200 1.30, Material
|
|
14
|
+
* outline-variant 1.61). 1.4.11 asks that a control be identifiable, not that its resting
|
|
15
|
+
* border carry the whole job: the fill, the label and the focus ring do that.
|
|
16
|
+
*
|
|
17
|
+
* That defence was untrue when it was written. Buttons defined no `_focusVisible` at all, so the
|
|
18
|
+
* focus ring was Chakra's stock `shadows.outline` — a fixed blue measuring 1.38:1 on a primary
|
|
19
|
+
* button — and nothing in the library was held to `AA_NON_TEXT` at the moment of focus. It is
|
|
20
|
+
* true now: `focusRing` (`builders/focusRing.ts`) is derived per brand per mode and gated at 3:1
|
|
21
|
+
* on the canvas, on a card and on the button's own fill by `builders/focusRing.test.ts`. If that
|
|
22
|
+
* gate is ever relaxed, this constant loses its justification with it.
|
|
23
|
+
*/
|
|
24
|
+
export declare const CHROME_BORDER = 1.5;
|
|
25
|
+
export declare const CHROME_RULE = 1.31;
|
|
26
|
+
/**
|
|
27
|
+
* A rule is decorative, so it has a ceiling and no floor: soften it until the surface it reads
|
|
28
|
+
* hardest against sits at `target`, and leave a already-fainter rung alone. Never `settleAcross`
|
|
29
|
+
* here — that clears a floor on EVERY surface, so one tinted surface drags the rule darker.
|
|
30
|
+
*/
|
|
31
|
+
export declare function ruleInk(hex: string, surfaces: readonly string[], target: number): string;
|
|
10
32
|
/**
|
|
11
33
|
* Walks a hex toward `target` contrast against `backdrop`, keeping hue and saturation.
|
|
12
34
|
* Direction is DERIVED from the backdrop, never passed: a mode argument here was redundant
|
|
@@ -21,9 +43,10 @@ export declare function liftToContrast(hex: string, backdrop: string, target?: n
|
|
|
21
43
|
export declare function softenToContrast(hex: string, backdrop: string, target: number): string;
|
|
22
44
|
/**
|
|
23
45
|
* `boxborder[500]` is the rung every control outline reads (Checkbox, SearchSelect, the date
|
|
24
|
-
* pickers, the editor's inputs).
|
|
25
|
-
*
|
|
26
|
-
*
|
|
46
|
+
* pickers, the editor's inputs). Settled onto `CHROME_BORDER` — lifted when a brand authored it
|
|
47
|
+
* invisibly pale, softened when it overshoots. It was previously lifted to `AA_NON_TEXT`, which
|
|
48
|
+
* shipped 3.85-4.95:1 outlines: a text-weight box around every card and popover.
|
|
49
|
+
* Resolved here rather than hand-pinned per brand: a copied hex goes stale the moment a canvas moves.
|
|
27
50
|
*
|
|
28
51
|
* `border[*]` is deliberately untouched — that ramp draws table gridlines, which are decorative
|
|
29
52
|
* and outside 1.4.11.
|
|
@@ -38,3 +61,18 @@ export declare function withOutlineRung(palette: PaletteProps): PaletteProps;
|
|
|
38
61
|
* its OWN list background, not necessarily the page canvas.
|
|
39
62
|
*/
|
|
40
63
|
export declare function resolveHoverTint(seed: string, restSurface: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Settles ink into `target` against EVERY surface at once. Softening one step can change which
|
|
66
|
+
* surface is hardest, so resolving against a single pre-computed "hardest" one lands under the
|
|
67
|
+
* floor on another — that is how radiant and rosewood ended up with an invisible outline on
|
|
68
|
+
* their muted surface.
|
|
69
|
+
*/
|
|
70
|
+
export declare function settleAcross(hex: string, surfaces: readonly string[], target: number): string;
|
|
71
|
+
/**
|
|
72
|
+
* A pure-grey surface sitting `target` contrast away from `backdrop`. Binary search, not a walk:
|
|
73
|
+
* `liftToContrast` cannot move a seed already at lightness 0 or 100, and a pure-white panel seeded
|
|
74
|
+
* itself straight to black. Neutral on purpose — the light palettes are hand-authored and tinted,
|
|
75
|
+
* so lifting one of their surface rungs turns a selected row into a saturated brand block, while
|
|
76
|
+
* the derived dark palettes land on grey and look right.
|
|
77
|
+
*/
|
|
78
|
+
export declare function neutralStep(backdrop: string, target: number): string;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AA_NON_TEXT = exports.MIN_PERCEPTIBLE_STEP = void 0;
|
|
3
|
+
exports.CHROME_RULE = exports.CHROME_BORDER = exports.AA_NON_TEXT = exports.MIN_PERCEPTIBLE_STEP = void 0;
|
|
4
|
+
exports.ruleInk = ruleInk;
|
|
4
5
|
exports.liftToContrast = liftToContrast;
|
|
5
6
|
exports.softenToContrast = softenToContrast;
|
|
6
7
|
exports.withOutlineRung = withOutlineRung;
|
|
7
8
|
exports.resolveHoverTint = resolveHoverTint;
|
|
9
|
+
exports.settleAcross = settleAcross;
|
|
10
|
+
exports.neutralStep = neutralStep;
|
|
8
11
|
const color_1 = require("./color");
|
|
9
12
|
/**
|
|
10
13
|
* The floor a hover/active state's step off its own resting surface must clear to be seen at
|
|
@@ -14,6 +17,35 @@ const color_1 = require("./color");
|
|
|
14
17
|
exports.MIN_PERCEPTIBLE_STEP = 1.15;
|
|
15
18
|
/** WCAG 1.4.11 — a control outline is a UI component boundary, held to 3:1. */
|
|
16
19
|
exports.AA_NON_TEXT = 3;
|
|
20
|
+
/**
|
|
21
|
+
* Resting chrome — card, popover and field outlines — settles here, not at `AA_NON_TEXT`.
|
|
22
|
+
* At 3:1 a container border is text-weight and the UI reads as a wireframe; every mainstream
|
|
23
|
+
* system draws this line far lighter (Tailwind gray-200 1.24, Chakra gray.200 1.30, Material
|
|
24
|
+
* outline-variant 1.61). 1.4.11 asks that a control be identifiable, not that its resting
|
|
25
|
+
* border carry the whole job: the fill, the label and the focus ring do that.
|
|
26
|
+
*
|
|
27
|
+
* That defence was untrue when it was written. Buttons defined no `_focusVisible` at all, so the
|
|
28
|
+
* focus ring was Chakra's stock `shadows.outline` — a fixed blue measuring 1.38:1 on a primary
|
|
29
|
+
* button — and nothing in the library was held to `AA_NON_TEXT` at the moment of focus. It is
|
|
30
|
+
* true now: `focusRing` (`builders/focusRing.ts`) is derived per brand per mode and gated at 3:1
|
|
31
|
+
* on the canvas, on a card and on the button's own fill by `builders/focusRing.test.ts`. If that
|
|
32
|
+
* gate is ever relaxed, this constant loses its justification with it.
|
|
33
|
+
*/
|
|
34
|
+
exports.CHROME_BORDER = 1.5;
|
|
35
|
+
// The resting rule between two surfaces — a card edge, a divider, a menu outline. Lighter than
|
|
36
|
+
// CHROME_BORDER, which outlines a control the user acts on.
|
|
37
|
+
exports.CHROME_RULE = 1.31;
|
|
38
|
+
/**
|
|
39
|
+
* A rule is decorative, so it has a ceiling and no floor: soften it until the surface it reads
|
|
40
|
+
* hardest against sits at `target`, and leave a already-fainter rung alone. Never `settleAcross`
|
|
41
|
+
* here — that clears a floor on EVERY surface, so one tinted surface drags the rule darker.
|
|
42
|
+
*/
|
|
43
|
+
function ruleInk(hex, surfaces, target) {
|
|
44
|
+
const loudest = surfaces.reduce((worst, s) => (0, color_1.contrastRatio)(hex, s) > (0, color_1.contrastRatio)(hex, worst) ? s : worst);
|
|
45
|
+
return (0, color_1.contrastRatio)(hex, loudest) > target
|
|
46
|
+
? softenToContrast(hex, loudest, target)
|
|
47
|
+
: hex;
|
|
48
|
+
}
|
|
17
49
|
/**
|
|
18
50
|
* Walks a hex toward `target` contrast against `backdrop`, keeping hue and saturation.
|
|
19
51
|
* Direction is DERIVED from the backdrop, never passed: a mode argument here was redundant
|
|
@@ -57,9 +89,10 @@ function softenToContrast(hex, backdrop, target) {
|
|
|
57
89
|
}
|
|
58
90
|
/**
|
|
59
91
|
* `boxborder[500]` is the rung every control outline reads (Checkbox, SearchSelect, the date
|
|
60
|
-
* pickers, the editor's inputs).
|
|
61
|
-
*
|
|
62
|
-
*
|
|
92
|
+
* pickers, the editor's inputs). Settled onto `CHROME_BORDER` — lifted when a brand authored it
|
|
93
|
+
* invisibly pale, softened when it overshoots. It was previously lifted to `AA_NON_TEXT`, which
|
|
94
|
+
* shipped 3.85-4.95:1 outlines: a text-weight box around every card and popover.
|
|
95
|
+
* Resolved here rather than hand-pinned per brand: a copied hex goes stale the moment a canvas moves.
|
|
63
96
|
*
|
|
64
97
|
* `border[*]` is deliberately untouched — that ramp draws table gridlines, which are decorative
|
|
65
98
|
* and outside 1.4.11.
|
|
@@ -72,7 +105,9 @@ function withOutlineRung(palette) {
|
|
|
72
105
|
(0, color_1.contrastRatio)(current, palette.background[50])
|
|
73
106
|
? palette.backgroundColor.main
|
|
74
107
|
: palette.background[50];
|
|
75
|
-
const resolved =
|
|
108
|
+
const resolved = (0, color_1.contrastRatio)(current, backdrop) > exports.CHROME_BORDER
|
|
109
|
+
? softenToContrast(current, backdrop, exports.CHROME_BORDER)
|
|
110
|
+
: liftToContrast(current, backdrop, exports.CHROME_BORDER);
|
|
76
111
|
if (resolved === current)
|
|
77
112
|
return palette;
|
|
78
113
|
return { ...palette, boxborder: { ...palette.boxborder, 500: resolved } };
|
|
@@ -88,3 +123,45 @@ function withOutlineRung(palette) {
|
|
|
88
123
|
function resolveHoverTint(seed, restSurface) {
|
|
89
124
|
return liftToContrast(seed, restSurface, exports.MIN_PERCEPTIBLE_STEP);
|
|
90
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Settles ink into `target` against EVERY surface at once. Softening one step can change which
|
|
128
|
+
* surface is hardest, so resolving against a single pre-computed "hardest" one lands under the
|
|
129
|
+
* floor on another — that is how radiant and rosewood ended up with an invisible outline on
|
|
130
|
+
* their muted surface.
|
|
131
|
+
*/
|
|
132
|
+
function settleAcross(hex, surfaces, target) {
|
|
133
|
+
const clearsAll = (c) => surfaces.every((s) => (0, color_1.contrastRatio)(c, s) >= target);
|
|
134
|
+
if (!clearsAll(hex)) {
|
|
135
|
+
return surfaces.reduce((ink, s) => liftToContrast(ink, s, target), hex);
|
|
136
|
+
}
|
|
137
|
+
const { s: sat, l: start } = (0, color_1.hexToHsl)(hex);
|
|
138
|
+
const toward = (0, color_1.relativeLuminance)(surfaces[0]) < 0.5 ? -1 : 1;
|
|
139
|
+
let settled = hex;
|
|
140
|
+
for (let l = start; l > 0 && l < 100; l += toward) {
|
|
141
|
+
const next = (0, color_1.withLightness)(hex, l, sat);
|
|
142
|
+
if (!clearsAll(next))
|
|
143
|
+
break;
|
|
144
|
+
settled = next;
|
|
145
|
+
}
|
|
146
|
+
return settled;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* A pure-grey surface sitting `target` contrast away from `backdrop`. Binary search, not a walk:
|
|
150
|
+
* `liftToContrast` cannot move a seed already at lightness 0 or 100, and a pure-white panel seeded
|
|
151
|
+
* itself straight to black. Neutral on purpose — the light palettes are hand-authored and tinted,
|
|
152
|
+
* so lifting one of their surface rungs turns a selected row into a saturated brand block, while
|
|
153
|
+
* the derived dark palettes land on grey and look right.
|
|
154
|
+
*/
|
|
155
|
+
function neutralStep(backdrop, target) {
|
|
156
|
+
const grey = (l) => (0, color_1.withLightness)("#808080", l, 0);
|
|
157
|
+
let lo = (0, color_1.hexToHsl)(backdrop).l;
|
|
158
|
+
let hi = (0, color_1.relativeLuminance)(backdrop) < 0.5 ? 100 : 0;
|
|
159
|
+
for (let i = 0; i < 20; i += 1) {
|
|
160
|
+
const mid = (lo + hi) / 2;
|
|
161
|
+
if ((0, color_1.contrastRatio)(grey(mid), backdrop) < target)
|
|
162
|
+
lo = mid;
|
|
163
|
+
else
|
|
164
|
+
hi = mid;
|
|
165
|
+
}
|
|
166
|
+
return grey(hi);
|
|
167
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { PaletteProps } from "../types";
|
|
2
|
+
/** A field always renders on at least one surface — the first is the reference backdrop. */
|
|
3
|
+
export type FieldSurfaces = readonly [string, ...string[]];
|
|
4
|
+
/**
|
|
5
|
+
* The hint ink for a field: the brand's authored rung settled onto `PLACEHOLDER_TEXT` against the
|
|
6
|
+
* hardest surface a field can land on — lifted when it falls short, softened when it overshoots.
|
|
7
|
+
*
|
|
8
|
+
* Settled rather than floored because the authored rungs measured 3.96-7.73:1 across the brands,
|
|
9
|
+
* and anything much past the floor reads as a field already typed into. The floor is the look:
|
|
10
|
+
* one hint weight for every brand in both modes, instead of a per-brand accident.
|
|
11
|
+
*/
|
|
12
|
+
export declare const placeholderInkOn: (palette: PaletteProps, surfaces: FieldSurfaces) => string;
|
|
13
|
+
/**
|
|
14
|
+
* Every surface an ENABLED field renders on. Disabled fields are deliberately absent — 1.4.3
|
|
15
|
+
* exempts them, and folding their dimmer fill in here would darken the hint on every other field.
|
|
16
|
+
*/
|
|
17
|
+
export declare const fieldSurfaces: (palette: PaletteProps) => FieldSurfaces;
|
|
18
|
+
/** The hint ink every field in this library reads. Takes no backdrop: see `fieldSurfaces`. */
|
|
19
|
+
export declare const placeholderInk: (palette: PaletteProps) => string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.placeholderInk = exports.fieldSurfaces = exports.placeholderInkOn = void 0;
|
|
4
|
+
const color_1 = require("./color");
|
|
5
|
+
const outlineRung_1 = require("./outlineRung");
|
|
6
|
+
const surfaceRungs_1 = require("./surfaceRungs");
|
|
7
|
+
/**
|
|
8
|
+
* The hint ink for a field: the brand's authored rung settled onto `PLACEHOLDER_TEXT` against the
|
|
9
|
+
* hardest surface a field can land on — lifted when it falls short, softened when it overshoots.
|
|
10
|
+
*
|
|
11
|
+
* Settled rather than floored because the authored rungs measured 3.96-7.73:1 across the brands,
|
|
12
|
+
* and anything much past the floor reads as a field already typed into. The floor is the look:
|
|
13
|
+
* one hint weight for every brand in both modes, instead of a per-brand accident.
|
|
14
|
+
*/
|
|
15
|
+
const placeholderInkOn = (palette, surfaces) => {
|
|
16
|
+
const rung = palette.placeholder[500];
|
|
17
|
+
const hardest = surfaces.reduce((worst, s) => (0, color_1.contrastRatio)(rung, s) < (0, color_1.contrastRatio)(rung, worst) ? s : worst);
|
|
18
|
+
return (0, color_1.contrastRatio)(rung, hardest) > surfaceRungs_1.PLACEHOLDER_TEXT
|
|
19
|
+
? (0, outlineRung_1.softenToContrast)(rung, hardest, surfaceRungs_1.PLACEHOLDER_TEXT)
|
|
20
|
+
: (0, outlineRung_1.liftToContrast)(rung, hardest, surfaceRungs_1.PLACEHOLDER_TEXT);
|
|
21
|
+
};
|
|
22
|
+
exports.placeholderInkOn = placeholderInkOn;
|
|
23
|
+
/**
|
|
24
|
+
* Every surface an ENABLED field renders on. Disabled fields are deliberately absent — 1.4.3
|
|
25
|
+
* exempts them, and folding their dimmer fill in here would darken the hint on every other field.
|
|
26
|
+
*/
|
|
27
|
+
const fieldSurfaces = (palette) => [
|
|
28
|
+
palette.gray[50],
|
|
29
|
+
palette.background[50],
|
|
30
|
+
palette.backgroundColor.main,
|
|
31
|
+
];
|
|
32
|
+
exports.fieldSurfaces = fieldSurfaces;
|
|
33
|
+
/** The hint ink every field in this library reads. Takes no backdrop: see `fieldSurfaces`. */
|
|
34
|
+
const placeholderInk = (palette) => (0, exports.placeholderInkOn)(palette, (0, exports.fieldSurfaces)(palette));
|
|
35
|
+
exports.placeholderInk = placeholderInk;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { AA_NON_TEXT } from "./outlineRung";
|
|
2
2
|
import type { PaletteProps } from "../types";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* A hint is floored at 3:1, not 4.5:1. Held to body-text contrast it stopped reading as a hint —
|
|
5
|
+
* an empty field looked like one already typed into — and the published library ships this rung
|
|
6
|
+
* as the brand authored it. See CHROME-CONSISTENCY.md.
|
|
7
|
+
*/
|
|
4
8
|
export declare function withPlaceholderRung(palette: PaletteProps): PaletteProps;
|
|
5
9
|
/** The hover row is a SURFACE, so it steps away from the ink rather than the ink moving. */
|
|
6
10
|
export declare function withTableHoverRung(palette: PaletteProps): PaletteProps;
|
|
@@ -6,9 +6,14 @@ exports.withTableHoverRung = withTableHoverRung;
|
|
|
6
6
|
const outlineRung_1 = require("./outlineRung");
|
|
7
7
|
Object.defineProperty(exports, "AA_NON_TEXT", { enumerable: true, get: function () { return outlineRung_1.AA_NON_TEXT; } });
|
|
8
8
|
const accentText_1 = require("./accentText");
|
|
9
|
-
|
|
9
|
+
const surfaceRungs_1 = require("./surfaceRungs");
|
|
10
|
+
/**
|
|
11
|
+
* A hint is floored at 3:1, not 4.5:1. Held to body-text contrast it stopped reading as a hint —
|
|
12
|
+
* an empty field looked like one already typed into — and the published library ships this rung
|
|
13
|
+
* as the brand authored it. See CHROME-CONSISTENCY.md.
|
|
14
|
+
*/
|
|
10
15
|
function withPlaceholderRung(palette) {
|
|
11
|
-
const resolved = (0, outlineRung_1.liftToContrast)(palette.placeholder[500], palette.background[50],
|
|
16
|
+
const resolved = (0, outlineRung_1.liftToContrast)(palette.placeholder[500], palette.background[50], surfaceRungs_1.PLACEHOLDER_TEXT);
|
|
12
17
|
if (resolved === palette.placeholder[500])
|
|
13
18
|
return palette;
|
|
14
19
|
return { ...palette, placeholder: { ...palette.placeholder, 500: resolved } };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PaletteProps } from "../types";
|
|
2
|
+
export interface RowStateBackgrounds {
|
|
3
|
+
active: string;
|
|
4
|
+
selected: string;
|
|
5
|
+
selectedActive: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The three backgrounds a selectable list row can rest on. Every rung is NEUTRAL and pale, so a
|
|
9
|
+
* row's ink stays the canvas ink `withSurfaceRungs` already settled. Seeding a row state from
|
|
10
|
+
* `primary[500]` instead — the filled-button rung — is what painted SelectV2's hovered rows a
|
|
11
|
+
* solid brand fill under unreadable text.
|
|
12
|
+
*/
|
|
13
|
+
export declare const listRowBackgrounds: (colors: PaletteProps) => RowStateBackgrounds;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listRowBackgrounds = void 0;
|
|
4
|
+
const outlineRung_1 = require("./outlineRung");
|
|
5
|
+
/**
|
|
6
|
+
* The three backgrounds a selectable list row can rest on. Every rung is NEUTRAL and pale, so a
|
|
7
|
+
* row's ink stays the canvas ink `withSurfaceRungs` already settled. Seeding a row state from
|
|
8
|
+
* `primary[500]` instead — the filled-button rung — is what painted SelectV2's hovered rows a
|
|
9
|
+
* solid brand fill under unreadable text.
|
|
10
|
+
*/
|
|
11
|
+
const listRowBackgrounds = (colors) => {
|
|
12
|
+
const selected = colors.backgroundColor.tertiary;
|
|
13
|
+
return {
|
|
14
|
+
active: (0, outlineRung_1.resolveHoverTint)(colors.gray[50], colors.backgroundColor.light),
|
|
15
|
+
selected,
|
|
16
|
+
selectedActive: (0, outlineRung_1.resolveHoverTint)(selected, selected),
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
exports.listRowBackgrounds = listRowBackgrounds;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scrollShadowStyles = scrollShadowStyles;
|
|
4
|
+
const EDGE = "24px";
|
|
5
|
+
const TINT = "rgba(0, 0, 0, 0.08)";
|
|
6
|
+
// CSS-only overflow hint via background-attachment local vs scroll — no listener, no extra node.
|
|
7
|
+
function scrollShadowStyles(surface) {
|
|
8
|
+
return {
|
|
9
|
+
backgroundColor: surface,
|
|
10
|
+
backgroundImage: `linear-gradient(to right, ${surface}, ${surface}), linear-gradient(to left, ${surface}, ${surface}), linear-gradient(to right, ${TINT}, transparent), linear-gradient(to left, ${TINT}, transparent)`,
|
|
11
|
+
backgroundRepeat: "no-repeat",
|
|
12
|
+
backgroundSize: `${EDGE} 100%, ${EDGE} 100%, 8px 100%, 8px 100%`,
|
|
13
|
+
backgroundPosition: "0 0, 100% 0, 0 0, 100% 0",
|
|
14
|
+
backgroundAttachment: "local, local, scroll, scroll",
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { PaletteProps } from "../types";
|
|
2
|
-
/**
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* A hint is held to the non-text floor, not the body-text one. Deliberate: at 4.5 an empty field
|
|
4
|
+
* reads as one already typed into. See CHROME-CONSISTENCY.md.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PLACEHOLDER_TEXT = 3;
|
|
4
7
|
export declare const namedSurfaces: (palette: PaletteProps) => string[];
|
|
5
8
|
/** The surface an ink is closest to — clearing it clears every other one. */
|
|
6
9
|
export declare const hardestSurface: (ink: string, surfaces: string[]) => string;
|
|
@@ -6,8 +6,11 @@ const color_1 = require("./color");
|
|
|
6
6
|
const outlineRung_1 = require("./outlineRung");
|
|
7
7
|
const accentText_1 = require("./accentText");
|
|
8
8
|
const semanticText_1 = require("./semanticText");
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* A hint is held to the non-text floor, not the body-text one. Deliberate: at 4.5 an empty field
|
|
11
|
+
* reads as one already typed into. See CHROME-CONSISTENCY.md.
|
|
12
|
+
*/
|
|
13
|
+
exports.PLACEHOLDER_TEXT = outlineRung_1.AA_NON_TEXT;
|
|
11
14
|
const namedSurfaces = (palette) => [
|
|
12
15
|
...Object.values(palette.backgroundColor),
|
|
13
16
|
palette.background[50],
|
|
@@ -21,7 +24,8 @@ exports.hardestSurface = hardestSurface;
|
|
|
21
24
|
function withSurfaceRungs(palette) {
|
|
22
25
|
const surfaces = (0, exports.namedSurfaces)(palette);
|
|
23
26
|
const lift = (ink, target) => (0, outlineRung_1.liftToContrast)(ink, (0, exports.hardestSurface)(ink, surfaces), target);
|
|
24
|
-
const
|
|
27
|
+
const settle = (ink, target) => (0, outlineRung_1.settleAcross)(ink, surfaces, target);
|
|
28
|
+
const rule = (ink) => (0, outlineRung_1.ruleInk)(ink, [palette.backgroundColor.main, palette.background[50]], outlineRung_1.CHROME_RULE);
|
|
25
29
|
const semanticText = semanticText_1.SEMANTIC_TONES.reduce((acc, tone) => {
|
|
26
30
|
acc[tone] = lift(palette.semanticText[tone], accentText_1.AA_NORMAL_TEXT);
|
|
27
31
|
return acc;
|
|
@@ -33,12 +37,18 @@ function withSurfaceRungs(palette) {
|
|
|
33
37
|
semanticText,
|
|
34
38
|
text: { ...palette.text, 500: lift(palette.text[500], accentText_1.AA_NORMAL_TEXT) },
|
|
35
39
|
header: { ...palette.header, 500: lift(palette.header[500], accentText_1.AA_NORMAL_TEXT) },
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
// `placeholder` is deliberately absent: the brand authors that rung and the published
|
|
41
|
+
// library ships it untouched. Its floor is enforced in `placeholderInk`, against the
|
|
42
|
+
// surfaces a FIELD renders on — not `table.hover`, which no field sits on.
|
|
43
|
+
// Settled, not lifted: this rung already passed through `withOutlineRung`, and lifting it
|
|
44
|
+
// again here to AA_NON_TEXT is what shipped 3.85-4.95:1 outlines. See CHROME_BORDER.
|
|
45
|
+
boxborder: {
|
|
46
|
+
...palette.boxborder,
|
|
47
|
+
200: rule(palette.boxborder[200]),
|
|
48
|
+
500: settle(palette.boxborder[500], outlineRung_1.CHROME_BORDER),
|
|
41
49
|
},
|
|
42
|
-
|
|
50
|
+
// The 200 rung of both ramps is the same job under two names; settle them together or an
|
|
51
|
+
// app picking `border` gets a heavier rule than one picking `boxborder`.
|
|
52
|
+
border: { ...palette.border, 200: rule(palette.border[200]) },
|
|
43
53
|
};
|
|
44
54
|
}
|
|
@@ -65,6 +65,24 @@ export type SidebarTokens = {
|
|
|
65
65
|
/** Status ink resolved against the RAIL. `semanticText` is canvas-relative, not rail. */
|
|
66
66
|
semanticText: SemanticTextTokens;
|
|
67
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* The two-tone focus indicator. `ring` is the brand-toned band that carries WCAG 1.4.11
|
|
70
|
+
* against whatever is BEHIND the control; `halo` is the inner band drawn between the ring
|
|
71
|
+
* and the control's own fill, so the indicator stays visible on a filled button too.
|
|
72
|
+
*
|
|
73
|
+
* Two tones because one band cannot own both adjacencies. `ring` is resolved against three
|
|
74
|
+
* backdrops (canvas, card, `primary[500]`) and clears all three on every brand — but a button
|
|
75
|
+
* can be filled by any `colorScheme`, and widening the ring to cover the mid-tone named surfaces
|
|
76
|
+
* as well leaves `skyline` and `storefront` with no solution at any hue (contrast is luminance
|
|
77
|
+
* alone, and their bands come out empty). `halo` takes the fill-side adjacency instead, so the
|
|
78
|
+
* pair holds whatever the button is filled with and whatever it sits on.
|
|
79
|
+
*/
|
|
80
|
+
export type FocusRingTokens = {
|
|
81
|
+
/** Outer band. >=3:1 against the canvas, a card surface, and the control's own fill. */
|
|
82
|
+
ring: string;
|
|
83
|
+
/** Inner band, in the surface tone. >=3:1 against the fill it hugs and against `ring`. */
|
|
84
|
+
halo: string;
|
|
85
|
+
};
|
|
68
86
|
export type BoxShadowTokens = {
|
|
69
87
|
primary: string;
|
|
70
88
|
error: string;
|
|
@@ -102,6 +120,8 @@ export type PaletteProps = {
|
|
|
102
120
|
header: ColorScale;
|
|
103
121
|
placeholder: ColorScale;
|
|
104
122
|
boxShadow: BoxShadowTokens;
|
|
123
|
+
/** Two-tone `:focus-visible` indicator, resolved to 3:1 (WCAG 1.4.11). Never hand-written. */
|
|
124
|
+
focusRing: FocusRingTokens;
|
|
105
125
|
sidebar: SidebarTokens;
|
|
106
126
|
boxborder: ColorScale;
|
|
107
127
|
border: ColorScale;
|
|
@@ -125,7 +145,7 @@ export type PaletteProps = {
|
|
|
125
145
|
};
|
|
126
146
|
/** What a brand writes by hand; every token required, so a gap is a compile error. */
|
|
127
147
|
/** Derived tokens are excluded — `finalizeLightPalette` resolves them per brand. */
|
|
128
|
-
export type BrandPaletteSource = Omit<PaletteProps, "accentText" | "textMuted" | "semanticText" | "sidebar" | "onPrimary" | "onSemantic"> & {
|
|
148
|
+
export type BrandPaletteSource = Omit<PaletteProps, "accentText" | "textMuted" | "semanticText" | "sidebar" | "onPrimary" | "onSemantic" | "focusRing"> & {
|
|
129
149
|
sidebar: {
|
|
130
150
|
background: ColorScale;
|
|
131
151
|
};
|
package/dist/Utils/table.d.ts
CHANGED
|
@@ -16,6 +16,9 @@ export type TablePaletteColor = {
|
|
|
16
16
|
text: string;
|
|
17
17
|
onSolid?: string;
|
|
18
18
|
};
|
|
19
|
+
export type SemanticStatusTone = "info" | "warning" | "success" | "error" | "neutral";
|
|
20
|
+
/** Theme-aware status palette per value — soft fill + semantic ink from `resolveStatusTone`. */
|
|
21
|
+
export declare function buildSemanticStatusPalette(toneByValue: Record<string, SemanticStatusTone>, theme: CustomThemeProps): Record<string, TablePaletteColor>;
|
|
19
22
|
/** Deterministic, theme-aware color palette for groups + status pills. */
|
|
20
23
|
export declare function buildTablePalette(theme: CustomThemeProps): TablePaletteColor[];
|
|
21
24
|
/** Pick a deterministic palette color for a value, with optional consumer override hex. */
|