zabi-components 8.0.0 → 9.0.0
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/CHANGELOG.md +2935 -0
- package/README.md +243 -10
- package/THEME.md +162 -332
- package/THEMING.md +1419 -259
- package/dist/atoms/ActionPanel.svelte +15 -5
- package/dist/atoms/Avatar.svelte +120 -0
- package/dist/atoms/Avatar.svelte.d.ts +46 -0
- package/dist/atoms/Badge.svelte +71 -13
- package/dist/atoms/Badge.svelte.d.ts +8 -2
- package/dist/atoms/Block.svelte +74 -0
- package/dist/atoms/Block.svelte.d.ts +29 -0
- package/dist/atoms/Button.svelte +217 -30
- package/dist/atoms/Button.svelte.d.ts +33 -4
- package/dist/atoms/Card.svelte +182 -26
- package/dist/atoms/Card.svelte.d.ts +55 -3
- package/dist/atoms/CardHeader.svelte +16 -4
- package/dist/atoms/Checkbox.svelte +81 -21
- package/dist/atoms/Checkbox.svelte.d.ts +31 -2
- package/dist/atoms/Chip.svelte +351 -0
- package/dist/atoms/Chip.svelte.d.ts +57 -0
- package/dist/atoms/CodeBlock.svelte +20 -2
- package/dist/atoms/CodeBlock.svelte.d.ts +4 -0
- package/dist/atoms/CodeField.svelte +385 -0
- package/dist/atoms/CodeField.svelte.d.ts +61 -0
- package/dist/atoms/ColorPicker.svelte +260 -49
- package/dist/atoms/ColorPicker.svelte.d.ts +3 -0
- package/dist/atoms/Container.svelte +16 -8
- package/dist/atoms/DateField.svelte +145 -0
- package/dist/atoms/DateField.svelte.d.ts +81 -0
- package/dist/atoms/FieldMessages.svelte +69 -0
- package/dist/atoms/FieldMessages.svelte.d.ts +23 -0
- package/dist/atoms/FloatingActionButton.svelte +176 -0
- package/dist/atoms/FloatingActionButton.svelte.d.ts +51 -0
- package/dist/atoms/Heading.svelte +63 -5
- package/dist/atoms/Heading.svelte.d.ts +14 -0
- package/dist/atoms/IconButton.svelte +294 -26
- package/dist/atoms/IconButton.svelte.d.ts +62 -4
- package/dist/atoms/Input.svelte +259 -53
- package/dist/atoms/Input.svelte.d.ts +33 -2
- package/dist/atoms/List.svelte +5 -1
- package/dist/atoms/ListItem.svelte +70 -13
- package/dist/atoms/ListItem.svelte.d.ts +11 -0
- package/dist/atoms/PickerField.svelte +239 -0
- package/dist/atoms/PickerField.svelte.d.ts +67 -0
- package/dist/atoms/Progress.svelte +99 -19
- package/dist/atoms/Progress.svelte.d.ts +15 -1
- package/dist/atoms/Radio.svelte +51 -3
- package/dist/atoms/Radio.svelte.d.ts +30 -2
- package/dist/atoms/Rating.svelte +620 -0
- package/dist/atoms/Rating.svelte.d.ts +77 -0
- package/dist/atoms/Select.svelte +438 -98
- package/dist/atoms/Select.svelte.d.ts +61 -3
- package/dist/atoms/SelectionControl.svelte +193 -23
- package/dist/atoms/SelectionControl.svelte.d.ts +29 -3
- package/dist/atoms/Skeleton.svelte +114 -18
- package/dist/atoms/Skeleton.svelte.d.ts +30 -3
- package/dist/atoms/SkeletonGroup.svelte +43 -0
- package/dist/atoms/SkeletonGroup.svelte.d.ts +20 -0
- package/dist/atoms/Slider.svelte +344 -0
- package/dist/atoms/Slider.svelte.d.ts +40 -0
- package/dist/atoms/Sparkline.svelte +109 -0
- package/dist/atoms/Sparkline.svelte.d.ts +27 -0
- package/dist/atoms/SpeechBubble.svelte +187 -0
- package/dist/atoms/SpeechBubble.svelte.d.ts +33 -0
- package/dist/atoms/Spinner.svelte +57 -0
- package/dist/atoms/Spinner.svelte.d.ts +19 -0
- package/dist/atoms/Stat.svelte +72 -0
- package/dist/atoms/Stat.svelte.d.ts +19 -0
- package/dist/atoms/Table.svelte +151 -6
- package/dist/atoms/Table.svelte.d.ts +15 -3
- package/dist/atoms/TemporalField.svelte +472 -0
- package/dist/atoms/TemporalField.svelte.d.ts +48 -0
- package/dist/atoms/Text.svelte +23 -11
- package/dist/atoms/Text.svelte.d.ts +6 -3
- package/dist/atoms/Textarea.svelte +150 -44
- package/dist/atoms/Textarea.svelte.d.ts +35 -2
- package/dist/atoms/ThemeToggle.svelte +223 -44
- package/dist/atoms/ThemeToggle.svelte.d.ts +26 -3
- package/dist/atoms/TimeColumn.svelte +150 -0
- package/dist/atoms/TimeColumn.svelte.d.ts +25 -0
- package/dist/atoms/TimeField.svelte +151 -0
- package/dist/atoms/TimeField.svelte.d.ts +85 -0
- package/dist/atoms/Toast.svelte +22 -8
- package/dist/atoms/Toast.svelte.d.ts +2 -0
- package/dist/atoms/Toggle.svelte +98 -14
- package/dist/atoms/Toggle.svelte.d.ts +26 -2
- package/dist/atoms/Tooltip.svelte +528 -24
- package/dist/atoms/Tooltip.svelte.d.ts +18 -0
- package/dist/atoms/ZabiStringsProvider.svelte +45 -0
- package/dist/atoms/ZabiStringsProvider.svelte.d.ts +27 -0
- package/dist/atoms/index.d.ts +38 -0
- package/dist/atoms/index.js +29 -0
- package/dist/atoms/selection-control.styles.d.ts +47 -5
- package/dist/atoms/selection-control.styles.js +52 -10
- package/dist/components/atoms/index.d.ts +38 -0
- package/dist/components/atoms/index.d.ts.map +1 -1
- package/dist/components/atoms/selection-control.styles.d.ts +47 -5
- package/dist/components/atoms/selection-control.styles.d.ts.map +1 -1
- package/dist/components/index.d.ts +104 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/map.d.ts +11 -0
- package/dist/components/map.d.ts.map +1 -0
- package/dist/components/molecules/index.d.ts +51 -0
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/components/molecules/toast-store.d.ts +83 -7
- package/dist/components/molecules/toast-store.d.ts.map +1 -1
- package/dist/components/organisms/index.d.ts +10 -0
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/components/types/variants.d.ts +24 -1
- package/dist/components/types/variants.d.ts.map +1 -1
- package/dist/components/util/app-shell.d.ts +79 -0
- package/dist/components/util/app-shell.d.ts.map +1 -0
- package/dist/components/util/avatar.d.ts +39 -0
- package/dist/components/util/avatar.d.ts.map +1 -0
- package/dist/components/util/bottom-sheet.d.ts +30 -0
- package/dist/components/util/bottom-sheet.d.ts.map +1 -0
- package/dist/components/util/bottom-tab-bar.d.ts +41 -0
- package/dist/components/util/bottom-tab-bar.d.ts.map +1 -0
- package/dist/components/util/calendar.d.ts +56 -0
- package/dist/components/util/calendar.d.ts.map +1 -0
- package/dist/components/util/chart.d.ts +140 -0
- package/dist/components/util/chart.d.ts.map +1 -0
- package/dist/components/util/chip.d.ts +66 -0
- package/dist/components/util/chip.d.ts.map +1 -0
- package/dist/components/util/cn.d.ts.map +1 -1
- package/dist/components/util/code-field.d.ts +63 -0
- package/dist/components/util/code-field.d.ts.map +1 -0
- package/dist/components/util/collapsible.d.ts +64 -0
- package/dist/components/util/collapsible.d.ts.map +1 -0
- package/dist/components/util/confirm-dialog.d.ts +12 -0
- package/dist/components/util/confirm-dialog.d.ts.map +1 -0
- package/dist/components/util/date.d.ts +96 -0
- package/dist/components/util/date.d.ts.map +1 -0
- package/dist/components/util/display-voice.d.ts +10 -0
- package/dist/components/util/display-voice.d.ts.map +1 -0
- package/dist/components/util/drawer.d.ts +13 -0
- package/dist/components/util/drawer.d.ts.map +1 -0
- package/dist/components/util/dropdown.d.ts +47 -0
- package/dist/components/util/dropdown.d.ts.map +1 -0
- package/dist/components/util/field-control.d.ts +30 -0
- package/dist/components/util/field-control.d.ts.map +1 -0
- package/dist/components/util/field.d.ts +45 -0
- package/dist/components/util/field.d.ts.map +1 -0
- package/dist/components/util/fit-in-viewport.d.ts +201 -0
- package/dist/components/util/fit-in-viewport.d.ts.map +1 -0
- package/dist/components/util/focus-utils.d.ts +77 -2
- package/dist/components/util/focus-utils.d.ts.map +1 -1
- package/dist/components/util/hydration.d.ts +45 -0
- package/dist/components/util/hydration.d.ts.map +1 -0
- package/dist/components/util/keyboard-inset.d.ts +18 -0
- package/dist/components/util/keyboard-inset.d.ts.map +1 -0
- package/dist/components/util/map-view.d.ts +144 -0
- package/dist/components/util/map-view.d.ts.map +1 -0
- package/dist/components/util/media-grid.d.ts +51 -0
- package/dist/components/util/media-grid.d.ts.map +1 -0
- package/dist/components/util/media.d.ts +6 -0
- package/dist/components/util/media.d.ts.map +1 -0
- package/dist/components/util/overlay-chrome.d.ts +53 -0
- package/dist/components/util/overlay-chrome.d.ts.map +1 -0
- package/dist/components/util/overlay.d.ts +72 -0
- package/dist/components/util/overlay.d.ts.map +1 -0
- package/dist/components/util/photo.d.ts +234 -0
- package/dist/components/util/photo.d.ts.map +1 -0
- package/dist/components/util/portal.d.ts +23 -0
- package/dist/components/util/portal.d.ts.map +1 -0
- package/dist/components/util/progress.d.ts +19 -0
- package/dist/components/util/progress.d.ts.map +1 -0
- package/dist/components/util/pull-to-refresh.d.ts +27 -0
- package/dist/components/util/pull-to-refresh.d.ts.map +1 -0
- package/dist/components/util/radio-keys.d.ts +25 -0
- package/dist/components/util/radio-keys.d.ts.map +1 -0
- package/dist/components/util/rating.d.ts +23 -0
- package/dist/components/util/rating.d.ts.map +1 -0
- package/dist/components/util/ready-made-strings.d.ts +77 -0
- package/dist/components/util/ready-made-strings.d.ts.map +1 -0
- package/dist/components/util/scroll-edge.d.ts +33 -0
- package/dist/components/util/scroll-edge.d.ts.map +1 -0
- package/dist/components/util/scroll-padding.d.ts +20 -0
- package/dist/components/util/scroll-padding.d.ts.map +1 -0
- package/dist/components/util/segmented-control.d.ts +16 -0
- package/dist/components/util/segmented-control.d.ts.map +1 -0
- package/dist/components/util/select.d.ts +41 -0
- package/dist/components/util/select.d.ts.map +1 -0
- package/dist/components/util/sheet-drag.d.ts +84 -0
- package/dist/components/util/sheet-drag.d.ts.map +1 -0
- package/dist/components/util/sidebar.d.ts +63 -0
- package/dist/components/util/sidebar.d.ts.map +1 -0
- package/dist/components/util/skeleton.d.ts +15 -0
- package/dist/components/util/skeleton.d.ts.map +1 -0
- package/dist/components/util/sliding-indicator.d.ts +25 -0
- package/dist/components/util/sliding-indicator.d.ts.map +1 -0
- package/dist/components/util/sortable-list.d.ts +65 -0
- package/dist/components/util/sortable-list.d.ts.map +1 -0
- package/dist/components/util/stepper.d.ts +40 -0
- package/dist/components/util/stepper.d.ts.map +1 -0
- package/dist/components/util/swipeable-list-item.d.ts +36 -0
- package/dist/components/util/swipeable-list-item.d.ts.map +1 -0
- package/dist/components/util/temporal-field.d.ts +89 -0
- package/dist/components/util/temporal-field.d.ts.map +1 -0
- package/dist/components/util/theme-mode.d.ts +80 -0
- package/dist/components/util/theme-mode.d.ts.map +1 -0
- package/dist/components/util/toaster.d.ts +133 -0
- package/dist/components/util/toaster.d.ts.map +1 -0
- package/dist/components/util/tone-surface.d.ts +34 -0
- package/dist/components/util/tone-surface.d.ts.map +1 -0
- package/dist/components/util/tooltip.d.ts +10 -0
- package/dist/components/util/tooltip.d.ts.map +1 -0
- package/dist/components/util/top-navbar.d.ts +35 -0
- package/dist/components/util/top-navbar.d.ts.map +1 -0
- package/dist/components/util/touch-target.d.ts +31 -0
- package/dist/components/util/touch-target.d.ts.map +1 -0
- package/dist/components/util/zabi-strings.d.ts +142 -0
- package/dist/components/util/zabi-strings.d.ts.map +1 -0
- package/dist/create-theme/cli.js +173 -0
- package/dist/create-theme/index.d.ts +190 -0
- package/dist/create-theme/index.js +1034 -0
- package/dist/create-theme/lib/ramp-math.js +128 -0
- package/dist/create-theme/lib/resolve.js +238 -0
- package/dist/create-theme/theme-data.js +2644 -0
- package/dist/index.d.ts +104 -2
- package/dist/index.js +75 -2
- package/dist/map.d.ts +10 -0
- package/dist/map.js +9 -0
- package/dist/molecules/Alert.svelte +63 -16
- package/dist/molecules/Alert.svelte.d.ts +14 -1
- package/dist/molecules/AppBar.svelte +674 -0
- package/dist/molecules/AppBar.svelte.d.ts +131 -0
- package/dist/molecules/AvatarGroup.svelte +116 -0
- package/dist/molecules/AvatarGroup.svelte.d.ts +40 -0
- package/dist/molecules/BarChart.svelte +381 -0
- package/dist/molecules/BarChart.svelte.d.ts +45 -0
- package/dist/molecules/BottomSheet.svelte +608 -0
- package/dist/molecules/BottomSheet.svelte.d.ts +109 -0
- package/dist/molecules/BottomTabBar.svelte +403 -0
- package/dist/molecules/BottomTabBar.svelte.d.ts +98 -0
- package/dist/molecules/Calendar.svelte +597 -0
- package/dist/molecules/Calendar.svelte.d.ts +72 -0
- package/dist/molecules/ChipGroup.svelte +325 -0
- package/dist/molecules/ChipGroup.svelte.d.ts +41 -0
- package/dist/molecules/Collapsible.svelte +347 -0
- package/dist/molecules/Collapsible.svelte.d.ts +61 -0
- package/dist/molecules/CollapsibleGroup.svelte +136 -0
- package/dist/molecules/CollapsibleGroup.svelte.d.ts +14 -0
- package/dist/molecules/ComponentDemo.svelte +16 -4
- package/dist/molecules/ComponentDemo.svelte.d.ts +3 -0
- package/dist/molecules/ConfirmDialog.svelte +257 -0
- package/dist/molecules/ConfirmDialog.svelte.d.ts +58 -0
- package/dist/molecules/ContactForm.svelte +34 -17
- package/dist/molecules/ContactForm.svelte.d.ts +8 -0
- package/dist/molecules/Drawer.svelte +415 -0
- package/dist/molecules/Drawer.svelte.d.ts +55 -0
- package/dist/molecules/Dropdown.svelte +517 -48
- package/dist/molecules/Dropdown.svelte.d.ts +47 -6
- package/dist/molecules/DropdownItem.svelte +122 -0
- package/dist/molecules/DropdownItem.svelte.d.ts +28 -0
- package/dist/molecules/EmptyState.svelte +55 -10
- package/dist/molecules/EmptyState.svelte.d.ts +8 -0
- package/dist/molecules/FormField.svelte +9 -1
- package/dist/molecules/FormField.svelte.d.ts +2 -0
- package/dist/molecules/Header.svelte +1 -1
- package/dist/molecules/ImageUpload.svelte +492 -69
- package/dist/molecules/ImageUpload.svelte.d.ts +82 -2
- package/dist/molecules/LineChart.svelte +459 -0
- package/dist/molecules/LineChart.svelte.d.ts +53 -0
- package/dist/molecules/MapView.svelte +565 -0
- package/dist/molecules/MapView.svelte.d.ts +88 -0
- package/dist/molecules/MediaGrid.svelte +527 -0
- package/dist/molecules/MediaGrid.svelte.d.ts +77 -0
- package/dist/molecules/Modal.svelte +293 -72
- package/dist/molecules/Modal.svelte.d.ts +51 -2
- package/dist/molecules/NavigationMenuContent.svelte +58 -1
- package/dist/molecules/NavigationMenuItem.svelte +0 -1
- package/dist/molecules/NavigationMenuLink.svelte +1 -1
- package/dist/molecules/NavigationMenuList.svelte +10 -3
- package/dist/molecules/NavigationMenuTrigger.svelte +2 -2
- package/dist/molecules/Page.svelte +32 -2
- package/dist/molecules/Page.svelte.d.ts +11 -0
- package/dist/molecules/PhotoGrid.svelte +523 -0
- package/dist/molecules/PhotoGrid.svelte.d.ts +73 -0
- package/dist/molecules/PhotoViewer.svelte +1213 -0
- package/dist/molecules/PhotoViewer.svelte.d.ts +74 -0
- package/dist/molecules/PieChart.svelte +421 -0
- package/dist/molecules/PieChart.svelte.d.ts +51 -0
- package/dist/molecules/PropsTable.svelte +22 -10
- package/dist/molecules/PropsTable.svelte.d.ts +3 -0
- package/dist/molecules/PullToRefresh.svelte +263 -0
- package/dist/molecules/PullToRefresh.svelte.d.ts +52 -0
- package/dist/molecules/RadioGroup.svelte +72 -18
- package/dist/molecules/RadioGroup.svelte.d.ts +19 -3
- package/dist/molecules/Section.svelte +1 -1
- package/dist/molecules/SegmentedControl.svelte +456 -0
- package/dist/molecules/SegmentedControl.svelte.d.ts +40 -0
- package/dist/molecules/SidebarBrandHeader.svelte +11 -1
- package/dist/molecules/SidebarBrandHeader.svelte.d.ts +3 -0
- package/dist/molecules/SidebarFooter.svelte +30 -7
- package/dist/molecules/SidebarFooter.svelte.d.ts +3 -0
- package/dist/molecules/SidebarNavSection.svelte +1 -1
- package/dist/molecules/SlideUp.svelte +220 -61
- package/dist/molecules/SlideUp.svelte.d.ts +26 -0
- package/dist/molecules/SortableList.svelte +633 -0
- package/dist/molecules/SortableList.svelte.d.ts +69 -0
- package/dist/molecules/Stepper.svelte +562 -0
- package/dist/molecules/Stepper.svelte.d.ts +39 -0
- package/dist/molecules/StickyActionBar.svelte +250 -0
- package/dist/molecules/StickyActionBar.svelte.d.ts +78 -0
- package/dist/molecules/SwipeableListItem.svelte +334 -0
- package/dist/molecules/SwipeableListItem.svelte.d.ts +54 -0
- package/dist/molecules/Tabs.svelte +310 -9
- package/dist/molecules/Tabs.svelte.d.ts +7 -0
- package/dist/molecules/Toaster.svelte +514 -5
- package/dist/molecules/Toaster.svelte.d.ts +153 -2
- package/dist/molecules/ToasterToast.svelte +495 -77
- package/dist/molecules/ToasterToast.svelte.d.ts +15 -0
- package/dist/molecules/UnsavedChangesBar.svelte +223 -0
- package/dist/molecules/UnsavedChangesBar.svelte.d.ts +43 -0
- package/dist/molecules/index.d.ts +51 -0
- package/dist/molecules/index.js +31 -0
- package/dist/molecules/toast-store.d.ts +83 -7
- package/dist/molecules/toast-store.js +25 -1
- package/dist/organisms/AppNavigation.svelte +440 -0
- package/dist/organisms/AppNavigation.svelte.d.ts +72 -0
- package/dist/organisms/AppShell.svelte +696 -0
- package/dist/organisms/AppShell.svelte.d.ts +157 -0
- package/dist/organisms/AppShellHeaderPart.svelte +163 -0
- package/dist/organisms/AppShellHeaderPart.svelte.d.ts +57 -0
- package/dist/organisms/SidebarAccountPanel.svelte +107 -12
- package/dist/organisms/SidebarAccountPanel.svelte.d.ts +19 -0
- package/dist/organisms/SidebarNavigation.svelte +111 -43
- package/dist/organisms/SidebarNavigation.svelte.d.ts +29 -1
- package/dist/organisms/SidebarPanel.svelte +34 -17
- package/dist/organisms/SidebarPanel.svelte.d.ts +1 -0
- package/dist/organisms/SidebarShell.svelte +164 -14
- package/dist/organisms/SidebarShell.svelte.d.ts +56 -2
- package/dist/organisms/TopNavbar.svelte +353 -39
- package/dist/organisms/TopNavbar.svelte.d.ts +47 -0
- package/dist/organisms/TopNavbarSheetContent.svelte +145 -0
- package/dist/organisms/TopNavbarSheetContent.svelte.d.ts +24 -0
- package/dist/organisms/index.d.ts +10 -0
- package/dist/organisms/index.js +7 -0
- package/dist/types/components.d.ts +21 -1
- package/dist/types/components.d.ts.map +1 -1
- package/dist/types/index.d.ts +1093 -26
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/variants.ts +28 -1
- package/dist/util/app-shell.d.ts +78 -0
- package/dist/util/app-shell.js +97 -0
- package/dist/util/avatar.d.ts +38 -0
- package/dist/util/avatar.js +52 -0
- package/dist/util/bottom-sheet.d.ts +29 -0
- package/dist/util/bottom-sheet.js +43 -0
- package/dist/util/bottom-tab-bar.d.ts +40 -0
- package/dist/util/bottom-tab-bar.js +54 -0
- package/dist/util/calendar.d.ts +55 -0
- package/dist/util/calendar.js +74 -0
- package/dist/util/chart.d.ts +139 -0
- package/dist/util/chart.js +305 -0
- package/dist/util/chip.d.ts +65 -0
- package/dist/util/chip.js +58 -0
- package/dist/util/cn.js +28 -2
- package/dist/util/code-field.d.ts +62 -0
- package/dist/util/code-field.js +112 -0
- package/dist/util/collapsible.d.ts +63 -0
- package/dist/util/collapsible.js +23 -0
- package/dist/util/confirm-dialog.d.ts +11 -0
- package/dist/util/confirm-dialog.js +2 -0
- package/dist/util/date.d.ts +95 -0
- package/dist/util/date.js +237 -0
- package/dist/util/display-voice.d.ts +9 -0
- package/dist/util/display-voice.js +9 -0
- package/dist/util/drawer.d.ts +12 -0
- package/dist/util/drawer.js +7 -0
- package/dist/util/dropdown.d.ts +46 -0
- package/dist/util/dropdown.js +21 -0
- package/dist/util/field-control.d.ts +29 -0
- package/dist/util/field-control.js +32 -0
- package/dist/util/field.d.ts +44 -0
- package/dist/util/field.js +38 -0
- package/dist/util/fit-in-viewport.d.ts +200 -0
- package/dist/util/fit-in-viewport.js +399 -0
- package/dist/util/focus-utils.d.ts +77 -2
- package/dist/util/focus-utils.js +186 -9
- package/dist/util/hydration.d.ts +44 -0
- package/dist/util/hydration.js +58 -0
- package/dist/util/keyboard-inset.d.ts +17 -0
- package/dist/util/keyboard-inset.js +53 -0
- package/dist/util/map-view.d.ts +143 -0
- package/dist/util/map-view.js +121 -0
- package/dist/util/media-grid.d.ts +50 -0
- package/dist/util/media-grid.js +81 -0
- package/dist/util/media.d.ts +5 -0
- package/dist/util/media.js +10 -0
- package/dist/util/overlay-chrome.d.ts +52 -0
- package/dist/util/overlay-chrome.js +56 -0
- package/dist/util/overlay.d.ts +71 -0
- package/dist/util/overlay.js +240 -0
- package/dist/util/photo.d.ts +233 -0
- package/dist/util/photo.js +209 -0
- package/dist/util/portal.d.ts +22 -0
- package/dist/util/portal.js +50 -0
- package/dist/util/progress.d.ts +18 -0
- package/dist/util/progress.js +17 -0
- package/dist/util/pull-to-refresh.d.ts +26 -0
- package/dist/util/pull-to-refresh.js +30 -0
- package/dist/util/radio-keys.d.ts +24 -0
- package/dist/util/radio-keys.js +49 -0
- package/dist/util/rating.d.ts +22 -0
- package/dist/util/rating.js +26 -0
- package/dist/util/ready-made-strings.d.ts +76 -0
- package/dist/util/ready-made-strings.js +67 -0
- package/dist/util/scroll-edge.d.ts +32 -0
- package/dist/util/scroll-edge.js +87 -0
- package/dist/util/scroll-padding.d.ts +19 -0
- package/dist/util/scroll-padding.js +44 -0
- package/dist/util/segmented-control.d.ts +15 -0
- package/dist/util/segmented-control.js +1 -0
- package/dist/util/select.d.ts +40 -0
- package/dist/util/select.js +63 -0
- package/dist/util/sheet-drag.d.ts +83 -0
- package/dist/util/sheet-drag.js +311 -0
- package/dist/util/sidebar.d.ts +62 -0
- package/dist/util/sidebar.js +38 -0
- package/dist/util/skeleton.d.ts +14 -0
- package/dist/util/skeleton.js +22 -0
- package/dist/util/sliding-indicator.d.ts +24 -0
- package/dist/util/sliding-indicator.js +44 -0
- package/dist/util/sortable-list.d.ts +64 -0
- package/dist/util/sortable-list.js +53 -0
- package/dist/util/stepper.d.ts +39 -0
- package/dist/util/stepper.js +38 -0
- package/dist/util/swipeable-list-item.d.ts +35 -0
- package/dist/util/swipeable-list-item.js +32 -0
- package/dist/util/temporal-field.d.ts +88 -0
- package/dist/util/temporal-field.js +136 -0
- package/dist/util/theme-mode.d.ts +79 -0
- package/dist/util/theme-mode.js +121 -0
- package/dist/util/toaster.d.ts +132 -0
- package/dist/util/toaster.js +130 -0
- package/dist/util/tone-surface.d.ts +33 -0
- package/dist/util/tone-surface.js +35 -0
- package/dist/util/tooltip.d.ts +9 -0
- package/dist/util/tooltip.js +18 -0
- package/dist/util/top-navbar.d.ts +34 -0
- package/dist/util/top-navbar.js +28 -0
- package/dist/util/touch-target.d.ts +30 -0
- package/dist/util/touch-target.js +30 -0
- package/dist/util/zabi-strings.d.ts +141 -0
- package/dist/util/zabi-strings.js +105 -0
- package/dist/zabi-components-colors.css +11 -2
- package/dist/zabi-components-theme-dark-only.css +870 -258
- package/dist/zabi-components-theme-dark.css +870 -258
- package/dist/zabi-components-theme-only.css +2419 -368
- package/dist/zabi-components-theme.css +2419 -368
- package/dist/zabi-components.css +6032 -711
- package/docs/lucide-icons.md +40 -17
- package/docs/theme-imports.md +81 -11
- package/package.json +45 -8
|
@@ -1,301 +1,498 @@
|
|
|
1
1
|
@import "tailwindcss";
|
|
2
2
|
|
|
3
|
+
@source "./**/*.{svelte,js}";
|
|
4
|
+
|
|
3
5
|
@theme {
|
|
4
6
|
/*
|
|
5
7
|
* Custom base (gray) ramp — single physical scale for --color-base-*.
|
|
6
|
-
* 21 stops: 50 … 950 (lightest → darkest).
|
|
8
|
+
* 21 stops: 50 … 950 (lightest → darkest). Declared ONCE, here: .dark holds no raw palette,
|
|
9
|
+
* so an app that overrides --zabi-base-* on :root restyles both themes.
|
|
7
10
|
* Dark: semantic step S maps to physical (1000 − S), e.g. 50↔950, 75↔925; 500 stays fixed.
|
|
8
11
|
* Midpoints are frozen hex values (default mode: fixed).
|
|
9
12
|
*/
|
|
10
|
-
--zabi-base-50: #fafafa
|
|
11
|
-
--zabi-base-75: #f7f7f7
|
|
12
|
-
--zabi-base-100: #f4f4f5
|
|
13
|
-
--zabi-base-150: #ececee
|
|
14
|
-
--zabi-base-200: #e4e4e7
|
|
15
|
-
--zabi-base-250: #dcdcdf
|
|
16
|
-
--zabi-base-300: #d4d4d8
|
|
17
|
-
--zabi-base-350: #babac1
|
|
18
|
-
--zabi-base-400: #a1a1aa
|
|
19
|
-
--zabi-base-450: #898992
|
|
20
|
-
--zabi-base-500: #71717a
|
|
21
|
-
--zabi-base-550: #61616a
|
|
22
|
-
--zabi-base-600: #52525b
|
|
23
|
-
--zabi-base-650: #484850
|
|
24
|
-
--zabi-base-700: #3f3f46
|
|
25
|
-
--zabi-base-750: #333338
|
|
26
|
-
--zabi-base-800: #27272a
|
|
27
|
-
--zabi-base-850: #1f1f22
|
|
28
|
-
--zabi-base-900: #18181b
|
|
29
|
-
--zabi-base-925: #101013
|
|
30
|
-
--zabi-base-950: #09090b
|
|
31
|
-
/* Typography -
|
|
32
|
-
--font-family-sans:
|
|
13
|
+
--zabi-base-50: #fafafa;
|
|
14
|
+
--zabi-base-75: #f7f7f7;
|
|
15
|
+
--zabi-base-100: #f4f4f5;
|
|
16
|
+
--zabi-base-150: #ececee;
|
|
17
|
+
--zabi-base-200: #e4e4e7;
|
|
18
|
+
--zabi-base-250: #dcdcdf;
|
|
19
|
+
--zabi-base-300: #d4d4d8;
|
|
20
|
+
--zabi-base-350: #babac1;
|
|
21
|
+
--zabi-base-400: #a1a1aa;
|
|
22
|
+
--zabi-base-450: #898992;
|
|
23
|
+
--zabi-base-500: #71717a;
|
|
24
|
+
--zabi-base-550: #61616a;
|
|
25
|
+
--zabi-base-600: #52525b;
|
|
26
|
+
--zabi-base-650: #484850;
|
|
27
|
+
--zabi-base-700: #3f3f46;
|
|
28
|
+
--zabi-base-750: #333338;
|
|
29
|
+
--zabi-base-800: #27272a;
|
|
30
|
+
--zabi-base-850: #1f1f22;
|
|
31
|
+
--zabi-base-900: #18181b;
|
|
32
|
+
--zabi-base-925: #101013;
|
|
33
|
+
--zabi-base-950: #09090b;
|
|
34
|
+
/* Typography - the platform UI face, no font is downloaded */
|
|
35
|
+
--font-family-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
36
|
+
/* Headings follow the body face until an app sets this to a display font
|
|
37
|
+
* on :root. Applied to h1–h6 in the base layer below and by the Heading
|
|
38
|
+
* component. */
|
|
39
|
+
--font-family-heading: var(--font-family-sans);
|
|
40
|
+
/* A second face for a display line (Heading variant="display", `font-display`):
|
|
41
|
+
* a hero, a score, a big number. Follows the heading face until an app sets
|
|
42
|
+
* it, so a second typeface is one token and not a CSS rule. */
|
|
43
|
+
--font-family-display: var(--font-family-heading);
|
|
44
|
+
/* Code. CodeBlock reads it. */
|
|
45
|
+
--font-family-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
|
|
46
|
+
/* Tailwind's own names for the same three faces. Its `font-sans` and
|
|
47
|
+
* `font-mono` utilities read --font-sans and --font-mono, which were its
|
|
48
|
+
* system stacks: `class="font-sans"` on a heading left the brand face, and
|
|
49
|
+
* nothing said so. They follow the tokens above now, and `font-heading` is
|
|
50
|
+
* the utility for the heading face. An app sets --font-family-*; these
|
|
51
|
+
* follow. */
|
|
52
|
+
--font-sans: var(--font-family-sans);
|
|
53
|
+
--font-mono: var(--font-family-mono);
|
|
54
|
+
--font-heading: var(--font-family-heading);
|
|
55
|
+
--font-display: var(--font-family-display);
|
|
56
|
+
/* Font weights. These are the variables Tailwind's `font-normal`,
|
|
57
|
+
* `font-medium`, `font-semibold` and `font-bold` read, so every component
|
|
58
|
+
* weight follows an override here. `regular` is the name a brand uses for
|
|
59
|
+
* 400; `font-normal` resolves through it. */
|
|
60
|
+
--font-weight-regular: 400;
|
|
61
|
+
--font-weight-normal: var(--font-weight-regular);
|
|
62
|
+
--font-weight-medium: 500;
|
|
63
|
+
--font-weight-semibold: 600;
|
|
64
|
+
--font-weight-bold: 700;
|
|
33
65
|
/* Brand Color Scale — physical ramp + semantic aliases (same mirror pattern as pine / base) */
|
|
34
|
-
--zabi-brand-50: #f4f6ff
|
|
35
|
-
--zabi-brand-100: #e9eeff
|
|
36
|
-
--zabi-brand-200: #d3dcff
|
|
37
|
-
--zabi-brand-300: #b5c6ff
|
|
38
|
-
--zabi-brand-400: #92a9ff
|
|
39
|
-
--zabi-brand-500: #6d87f1
|
|
40
|
-
--zabi-brand-600: #4f68da
|
|
41
|
-
--zabi-brand-700: #3c52ba
|
|
42
|
-
--zabi-brand-800: #2b3e95
|
|
43
|
-
--zabi-brand-900: #1c2c6d
|
|
44
|
-
--zabi-brand-950: #111d49
|
|
45
|
-
--color-brand-50: var(--zabi-brand-50)
|
|
46
|
-
--color-brand-100: var(--zabi-brand-100)
|
|
47
|
-
--color-brand-200: var(--zabi-brand-200)
|
|
48
|
-
--color-brand-300: var(--zabi-brand-300)
|
|
49
|
-
--color-brand-400: var(--zabi-brand-400)
|
|
50
|
-
--color-brand-500: var(--zabi-brand-500)
|
|
51
|
-
--color-brand-600: var(--zabi-brand-600)
|
|
52
|
-
--color-brand-700: var(--zabi-brand-700)
|
|
53
|
-
--color-brand-800: var(--zabi-brand-800)
|
|
54
|
-
--color-brand-900: var(--zabi-brand-900)
|
|
55
|
-
--color-brand-950: var(--zabi-brand-950)
|
|
66
|
+
--zabi-brand-50: #f4f6ff;
|
|
67
|
+
--zabi-brand-100: #e9eeff;
|
|
68
|
+
--zabi-brand-200: #d3dcff;
|
|
69
|
+
--zabi-brand-300: #b5c6ff;
|
|
70
|
+
--zabi-brand-400: #92a9ff;
|
|
71
|
+
--zabi-brand-500: #6d87f1;
|
|
72
|
+
--zabi-brand-600: #4f68da;
|
|
73
|
+
--zabi-brand-700: #3c52ba;
|
|
74
|
+
--zabi-brand-800: #2b3e95;
|
|
75
|
+
--zabi-brand-900: #1c2c6d;
|
|
76
|
+
--zabi-brand-950: #111d49;
|
|
77
|
+
--color-brand-50: var(--zabi-brand-50);
|
|
78
|
+
--color-brand-100: var(--zabi-brand-100);
|
|
79
|
+
--color-brand-200: var(--zabi-brand-200);
|
|
80
|
+
--color-brand-300: var(--zabi-brand-300);
|
|
81
|
+
--color-brand-400: var(--zabi-brand-400);
|
|
82
|
+
--color-brand-500: var(--zabi-brand-500);
|
|
83
|
+
--color-brand-600: var(--zabi-brand-600);
|
|
84
|
+
--color-brand-700: var(--zabi-brand-700);
|
|
85
|
+
--color-brand-800: var(--zabi-brand-800);
|
|
86
|
+
--color-brand-900: var(--zabi-brand-900);
|
|
87
|
+
--color-brand-950: var(--zabi-brand-950);
|
|
56
88
|
/* Citron Color Scale — physical ramp + semantic aliases (same mirror pattern as pine / base) */
|
|
57
|
-
--zabi-citron-50: #
|
|
58
|
-
--zabi-citron-100: #
|
|
59
|
-
--zabi-citron-200: #
|
|
60
|
-
--zabi-citron-300: #
|
|
61
|
-
--zabi-citron-400: #
|
|
62
|
-
--zabi-citron-500: #
|
|
63
|
-
--zabi-citron-600: #
|
|
64
|
-
--zabi-citron-700: #
|
|
65
|
-
--zabi-citron-800: #
|
|
66
|
-
--zabi-citron-900: #
|
|
67
|
-
--zabi-citron-950: #
|
|
68
|
-
--color-citron-50: var(--zabi-citron-50)
|
|
69
|
-
--color-citron-100: var(--zabi-citron-100)
|
|
70
|
-
--color-citron-200: var(--zabi-citron-200)
|
|
71
|
-
--color-citron-300: var(--zabi-citron-300)
|
|
72
|
-
--color-citron-400: var(--zabi-citron-400)
|
|
73
|
-
--color-citron-500: var(--zabi-citron-500)
|
|
74
|
-
--color-citron-600: var(--zabi-citron-600)
|
|
75
|
-
--color-citron-700: var(--zabi-citron-700)
|
|
76
|
-
--color-citron-800: var(--zabi-citron-800)
|
|
77
|
-
--color-citron-900: var(--zabi-citron-900)
|
|
78
|
-
--color-citron-950: var(--zabi-citron-950)
|
|
89
|
+
--zabi-citron-50: #f4f8ee;
|
|
90
|
+
--zabi-citron-100: #e9f0de;
|
|
91
|
+
--zabi-citron-200: #d4e2bd;
|
|
92
|
+
--zabi-citron-300: #b9ce92;
|
|
93
|
+
--zabi-citron-400: #99b55e;
|
|
94
|
+
--zabi-citron-500: #769619;
|
|
95
|
+
--zabi-citron-600: #5d7900;
|
|
96
|
+
--zabi-citron-700: #4a6100;
|
|
97
|
+
--zabi-citron-800: #384a00;
|
|
98
|
+
--zabi-citron-900: #273500;
|
|
99
|
+
--zabi-citron-950: #192300;
|
|
100
|
+
--color-citron-50: var(--zabi-citron-50);
|
|
101
|
+
--color-citron-100: var(--zabi-citron-100);
|
|
102
|
+
--color-citron-200: var(--zabi-citron-200);
|
|
103
|
+
--color-citron-300: var(--zabi-citron-300);
|
|
104
|
+
--color-citron-400: var(--zabi-citron-400);
|
|
105
|
+
--color-citron-500: var(--zabi-citron-500);
|
|
106
|
+
--color-citron-600: var(--zabi-citron-600);
|
|
107
|
+
--color-citron-700: var(--zabi-citron-700);
|
|
108
|
+
--color-citron-800: var(--zabi-citron-800);
|
|
109
|
+
--color-citron-900: var(--zabi-citron-900);
|
|
110
|
+
--color-citron-950: var(--zabi-citron-950);
|
|
111
|
+
/* Accent Color Scale — the second brand colour (highlights, badges,
|
|
112
|
+
* celebrations). Defaults to the citron ramp; an app overrides
|
|
113
|
+
* --zabi-accent-50 … 950 on :root, once, and both themes follow. */
|
|
114
|
+
--zabi-accent-50: var(--zabi-citron-50);
|
|
115
|
+
--zabi-accent-100: var(--zabi-citron-100);
|
|
116
|
+
--zabi-accent-200: var(--zabi-citron-200);
|
|
117
|
+
--zabi-accent-300: var(--zabi-citron-300);
|
|
118
|
+
--zabi-accent-400: var(--zabi-citron-400);
|
|
119
|
+
--zabi-accent-500: var(--zabi-citron-500);
|
|
120
|
+
--zabi-accent-600: var(--zabi-citron-600);
|
|
121
|
+
--zabi-accent-700: var(--zabi-citron-700);
|
|
122
|
+
--zabi-accent-800: var(--zabi-citron-800);
|
|
123
|
+
--zabi-accent-900: var(--zabi-citron-900);
|
|
124
|
+
--zabi-accent-950: var(--zabi-citron-950);
|
|
125
|
+
--color-accent-50: var(--zabi-accent-50);
|
|
126
|
+
--color-accent-100: var(--zabi-accent-100);
|
|
127
|
+
--color-accent-200: var(--zabi-accent-200);
|
|
128
|
+
--color-accent-300: var(--zabi-accent-300);
|
|
129
|
+
--color-accent-400: var(--zabi-accent-400);
|
|
130
|
+
--color-accent-500: var(--zabi-accent-500);
|
|
131
|
+
--color-accent-600: var(--zabi-accent-600);
|
|
132
|
+
--color-accent-700: var(--zabi-accent-700);
|
|
133
|
+
--color-accent-800: var(--zabi-accent-800);
|
|
134
|
+
--color-accent-900: var(--zabi-accent-900);
|
|
135
|
+
--color-accent-950: var(--zabi-accent-950);
|
|
79
136
|
/* Pine Color Scale — physical ramp + semantic aliases (mirror pattern matches --zabi-base-* / --color-base-*) */
|
|
80
|
-
--zabi-pine-50: #
|
|
81
|
-
--zabi-pine-100: #
|
|
82
|
-
--zabi-pine-200: #
|
|
83
|
-
--zabi-pine-300: #
|
|
84
|
-
--zabi-pine-400: #
|
|
85
|
-
--zabi-pine-500: #
|
|
86
|
-
--zabi-pine-600: #
|
|
87
|
-
--zabi-pine-700: #
|
|
88
|
-
--zabi-pine-800: #
|
|
89
|
-
--zabi-pine-900: #
|
|
90
|
-
--zabi-pine-950: #
|
|
91
|
-
--color-pine-50: var(--zabi-pine-50)
|
|
92
|
-
--color-pine-100: var(--zabi-pine-100)
|
|
93
|
-
--color-pine-200: var(--zabi-pine-200)
|
|
94
|
-
--color-pine-300: var(--zabi-pine-300)
|
|
95
|
-
--color-pine-400: var(--zabi-pine-400)
|
|
96
|
-
--color-pine-500: var(--zabi-pine-500)
|
|
97
|
-
--color-pine-600: var(--zabi-pine-600)
|
|
98
|
-
--color-pine-700: var(--zabi-pine-700)
|
|
99
|
-
--color-pine-800: var(--zabi-pine-800)
|
|
100
|
-
--color-pine-900: var(--zabi-pine-900)
|
|
101
|
-
--color-pine-950: var(--zabi-pine-950)
|
|
137
|
+
--zabi-pine-50: #f0f9f3;
|
|
138
|
+
--zabi-pine-100: #e1f2e8;
|
|
139
|
+
--zabi-pine-200: #c3e5d0;
|
|
140
|
+
--zabi-pine-300: #9cd3b2;
|
|
141
|
+
--zabi-pine-400: #6cbb8e;
|
|
142
|
+
--zabi-pine-500: #319e67;
|
|
143
|
+
--zabi-pine-600: #00804b;
|
|
144
|
+
--zabi-pine-700: #00683b;
|
|
145
|
+
--zabi-pine-800: #00502b;
|
|
146
|
+
--zabi-pine-900: #00391c;
|
|
147
|
+
--zabi-pine-950: #002610;
|
|
148
|
+
--color-pine-50: var(--zabi-pine-50);
|
|
149
|
+
--color-pine-100: var(--zabi-pine-100);
|
|
150
|
+
--color-pine-200: var(--zabi-pine-200);
|
|
151
|
+
--color-pine-300: var(--zabi-pine-300);
|
|
152
|
+
--color-pine-400: var(--zabi-pine-400);
|
|
153
|
+
--color-pine-500: var(--zabi-pine-500);
|
|
154
|
+
--color-pine-600: var(--zabi-pine-600);
|
|
155
|
+
--color-pine-700: var(--zabi-pine-700);
|
|
156
|
+
--color-pine-800: var(--zabi-pine-800);
|
|
157
|
+
--color-pine-900: var(--zabi-pine-900);
|
|
158
|
+
--color-pine-950: var(--zabi-pine-950);
|
|
102
159
|
/* Iris Color Scale — physical ramp + semantic aliases (same mirror pattern as pine / base) */
|
|
103
|
-
--zabi-iris-50: #f6f6fd
|
|
104
|
-
--zabi-iris-100: #ecedfb
|
|
105
|
-
--zabi-iris-200: #dadbf6
|
|
106
|
-
--zabi-iris-300: #c1c4ef
|
|
107
|
-
--zabi-iris-400: #a5a7e2
|
|
108
|
-
--zabi-iris-500: #8486cd
|
|
109
|
-
--zabi-iris-600: #6969b4
|
|
110
|
-
--zabi-iris-700: #535397
|
|
111
|
-
--zabi-iris-800: #3f3f78
|
|
112
|
-
--zabi-iris-900: #2c2c58
|
|
113
|
-
--zabi-iris-950: #1d1d3a
|
|
114
|
-
--color-iris-50: var(--zabi-iris-50)
|
|
115
|
-
--color-iris-100: var(--zabi-iris-100)
|
|
116
|
-
--color-iris-200: var(--zabi-iris-200)
|
|
117
|
-
--color-iris-300: var(--zabi-iris-300)
|
|
118
|
-
--color-iris-400: var(--zabi-iris-400)
|
|
119
|
-
--color-iris-500: var(--zabi-iris-500)
|
|
120
|
-
--color-iris-600: var(--zabi-iris-600)
|
|
121
|
-
--color-iris-700: var(--zabi-iris-700)
|
|
122
|
-
--color-iris-800: var(--zabi-iris-800)
|
|
123
|
-
--color-iris-900: var(--zabi-iris-900)
|
|
124
|
-
--color-iris-950: var(--zabi-iris-950)
|
|
160
|
+
--zabi-iris-50: #f6f6fd;
|
|
161
|
+
--zabi-iris-100: #ecedfb;
|
|
162
|
+
--zabi-iris-200: #dadbf6;
|
|
163
|
+
--zabi-iris-300: #c1c4ef;
|
|
164
|
+
--zabi-iris-400: #a5a7e2;
|
|
165
|
+
--zabi-iris-500: #8486cd;
|
|
166
|
+
--zabi-iris-600: #6969b4;
|
|
167
|
+
--zabi-iris-700: #535397;
|
|
168
|
+
--zabi-iris-800: #3f3f78;
|
|
169
|
+
--zabi-iris-900: #2c2c58;
|
|
170
|
+
--zabi-iris-950: #1d1d3a;
|
|
171
|
+
--color-iris-50: var(--zabi-iris-50);
|
|
172
|
+
--color-iris-100: var(--zabi-iris-100);
|
|
173
|
+
--color-iris-200: var(--zabi-iris-200);
|
|
174
|
+
--color-iris-300: var(--zabi-iris-300);
|
|
175
|
+
--color-iris-400: var(--zabi-iris-400);
|
|
176
|
+
--color-iris-500: var(--zabi-iris-500);
|
|
177
|
+
--color-iris-600: var(--zabi-iris-600);
|
|
178
|
+
--color-iris-700: var(--zabi-iris-700);
|
|
179
|
+
--color-iris-800: var(--zabi-iris-800);
|
|
180
|
+
--color-iris-900: var(--zabi-iris-900);
|
|
181
|
+
--color-iris-950: var(--zabi-iris-950);
|
|
125
182
|
/* Warning Color Scale — physical ramp + semantic aliases (Tailwind amber) */
|
|
126
|
-
--zabi-warning-50: #
|
|
127
|
-
--zabi-warning-100: #
|
|
128
|
-
--zabi-warning-200: #
|
|
129
|
-
--zabi-warning-300: #
|
|
130
|
-
--zabi-warning-400: #
|
|
131
|
-
--zabi-warning-500: #
|
|
132
|
-
--zabi-warning-600: #
|
|
133
|
-
--zabi-warning-700: #
|
|
134
|
-
--zabi-warning-800: #663800
|
|
135
|
-
--zabi-warning-900: #
|
|
136
|
-
--zabi-warning-950: #
|
|
137
|
-
--color-warning-50: var(--zabi-warning-50)
|
|
138
|
-
--color-warning-100: var(--zabi-warning-100)
|
|
139
|
-
--color-warning-200: var(--zabi-warning-200)
|
|
140
|
-
--color-warning-300: var(--zabi-warning-300)
|
|
141
|
-
--color-warning-400: var(--zabi-warning-400)
|
|
142
|
-
--color-warning-500: var(--zabi-warning-500)
|
|
143
|
-
--color-warning-600: var(--zabi-warning-600)
|
|
144
|
-
--color-warning-700: var(--zabi-warning-700)
|
|
145
|
-
--color-warning-800: var(--zabi-warning-800)
|
|
146
|
-
--color-warning-900: var(--zabi-warning-900)
|
|
147
|
-
--color-warning-950: var(--zabi-warning-950)
|
|
183
|
+
--zabi-warning-50: #fdf5ec;
|
|
184
|
+
--zabi-warning-100: #fbebda;
|
|
185
|
+
--zabi-warning-200: #f6d7b4;
|
|
186
|
+
--zabi-warning-300: #efbc84;
|
|
187
|
+
--zabi-warning-400: #e49a44;
|
|
188
|
+
--zabi-warning-500: #c67800;
|
|
189
|
+
--zabi-warning-600: #a05f00;
|
|
190
|
+
--zabi-warning-700: #834b00;
|
|
191
|
+
--zabi-warning-800: #663800;
|
|
192
|
+
--zabi-warning-900: #4b2700;
|
|
193
|
+
--zabi-warning-950: #331800;
|
|
194
|
+
--color-warning-50: var(--zabi-warning-50);
|
|
195
|
+
--color-warning-100: var(--zabi-warning-100);
|
|
196
|
+
--color-warning-200: var(--zabi-warning-200);
|
|
197
|
+
--color-warning-300: var(--zabi-warning-300);
|
|
198
|
+
--color-warning-400: var(--zabi-warning-400);
|
|
199
|
+
--color-warning-500: var(--zabi-warning-500);
|
|
200
|
+
--color-warning-600: var(--zabi-warning-600);
|
|
201
|
+
--color-warning-700: var(--zabi-warning-700);
|
|
202
|
+
--color-warning-800: var(--zabi-warning-800);
|
|
203
|
+
--color-warning-900: var(--zabi-warning-900);
|
|
204
|
+
--color-warning-950: var(--zabi-warning-950);
|
|
148
205
|
/* Error Color Scale — physical ramp + semantic aliases (Tailwind red) */
|
|
149
|
-
--zabi-error-50: #fff4f3
|
|
150
|
-
--zabi-error-100: #ffe9e6
|
|
151
|
-
--zabi-error-200: #ffd2cd
|
|
152
|
-
--zabi-error-300: #ffb2ab
|
|
153
|
-
--zabi-error-400: #ff877d
|
|
154
|
-
--zabi-error-500: #ed564e
|
|
155
|
-
--zabi-error-600: #d22828
|
|
156
|
-
--zabi-error-700: #b20912
|
|
157
|
-
--zabi-error-800: #8c0006
|
|
158
|
-
--zabi-error-900: #660002
|
|
159
|
-
--zabi-error-950: #460202
|
|
160
|
-
--color-error-50: var(--zabi-error-50)
|
|
161
|
-
--color-error-100: var(--zabi-error-100)
|
|
162
|
-
--color-error-200: var(--zabi-error-200)
|
|
163
|
-
--color-error-300: var(--zabi-error-300)
|
|
164
|
-
--color-error-400: var(--zabi-error-400)
|
|
165
|
-
--color-error-500: var(--zabi-error-500)
|
|
166
|
-
--color-error-600: var(--zabi-error-600)
|
|
167
|
-
--color-error-700: var(--zabi-error-700)
|
|
168
|
-
--color-error-800: var(--zabi-error-800)
|
|
169
|
-
--color-error-900: var(--zabi-error-900)
|
|
170
|
-
--color-error-950: var(--zabi-error-950)
|
|
206
|
+
--zabi-error-50: #fff4f3;
|
|
207
|
+
--zabi-error-100: #ffe9e6;
|
|
208
|
+
--zabi-error-200: #ffd2cd;
|
|
209
|
+
--zabi-error-300: #ffb2ab;
|
|
210
|
+
--zabi-error-400: #ff877d;
|
|
211
|
+
--zabi-error-500: #ed564e;
|
|
212
|
+
--zabi-error-600: #d22828;
|
|
213
|
+
--zabi-error-700: #b20912;
|
|
214
|
+
--zabi-error-800: #8c0006;
|
|
215
|
+
--zabi-error-900: #660002;
|
|
216
|
+
--zabi-error-950: #460202;
|
|
217
|
+
--color-error-50: var(--zabi-error-50);
|
|
218
|
+
--color-error-100: var(--zabi-error-100);
|
|
219
|
+
--color-error-200: var(--zabi-error-200);
|
|
220
|
+
--color-error-300: var(--zabi-error-300);
|
|
221
|
+
--color-error-400: var(--zabi-error-400);
|
|
222
|
+
--color-error-500: var(--zabi-error-500);
|
|
223
|
+
--color-error-600: var(--zabi-error-600);
|
|
224
|
+
--color-error-700: var(--zabi-error-700);
|
|
225
|
+
--color-error-800: var(--zabi-error-800);
|
|
226
|
+
--color-error-900: var(--zabi-error-900);
|
|
227
|
+
--color-error-950: var(--zabi-error-950);
|
|
171
228
|
/* Base Color Scale — semantic tokens alias the physical ramp (light: 1:1) */
|
|
172
|
-
--color-base-50: var(--zabi-base-50)
|
|
173
|
-
--color-base-75: var(--zabi-base-75)
|
|
174
|
-
--color-base-100: var(--zabi-base-100)
|
|
175
|
-
--color-base-150: var(--zabi-base-150)
|
|
176
|
-
--color-base-200: var(--zabi-base-200)
|
|
177
|
-
--color-base-250: var(--zabi-base-250)
|
|
178
|
-
--color-base-300: var(--zabi-base-300)
|
|
179
|
-
--color-base-350: var(--zabi-base-350)
|
|
180
|
-
--color-base-400: var(--zabi-base-400)
|
|
181
|
-
--color-base-450: var(--zabi-base-450)
|
|
182
|
-
--color-base-500: var(--zabi-base-500)
|
|
183
|
-
--color-base-550: var(--zabi-base-550)
|
|
184
|
-
--color-base-600: var(--zabi-base-600)
|
|
185
|
-
--color-base-650: var(--zabi-base-650)
|
|
186
|
-
--color-base-700: var(--zabi-base-700)
|
|
187
|
-
--color-base-750: var(--zabi-base-750)
|
|
188
|
-
--color-base-800: var(--zabi-base-800)
|
|
189
|
-
--color-base-850: var(--zabi-base-850)
|
|
190
|
-
--color-base-900: var(--zabi-base-900)
|
|
191
|
-
--color-base-925: var(--zabi-base-925)
|
|
192
|
-
--color-base-950: var(--zabi-base-950)
|
|
229
|
+
--color-base-50: var(--zabi-base-50);
|
|
230
|
+
--color-base-75: var(--zabi-base-75);
|
|
231
|
+
--color-base-100: var(--zabi-base-100);
|
|
232
|
+
--color-base-150: var(--zabi-base-150);
|
|
233
|
+
--color-base-200: var(--zabi-base-200);
|
|
234
|
+
--color-base-250: var(--zabi-base-250);
|
|
235
|
+
--color-base-300: var(--zabi-base-300);
|
|
236
|
+
--color-base-350: var(--zabi-base-350);
|
|
237
|
+
--color-base-400: var(--zabi-base-400);
|
|
238
|
+
--color-base-450: var(--zabi-base-450);
|
|
239
|
+
--color-base-500: var(--zabi-base-500);
|
|
240
|
+
--color-base-550: var(--zabi-base-550);
|
|
241
|
+
--color-base-600: var(--zabi-base-600);
|
|
242
|
+
--color-base-650: var(--zabi-base-650);
|
|
243
|
+
--color-base-700: var(--zabi-base-700);
|
|
244
|
+
--color-base-750: var(--zabi-base-750);
|
|
245
|
+
--color-base-800: var(--zabi-base-800);
|
|
246
|
+
--color-base-850: var(--zabi-base-850);
|
|
247
|
+
--color-base-900: var(--zabi-base-900);
|
|
248
|
+
--color-base-925: var(--zabi-base-925);
|
|
249
|
+
--color-base-950: var(--zabi-base-950);
|
|
193
250
|
/* Background Colors */
|
|
194
251
|
/* Surface elevation — four semantic levels, lowest → highest.
|
|
195
252
|
* base: page/app shell · raised: cards, panels, sidebars · elevated: nested cards, hover/active fills
|
|
196
253
|
* overlay: modals, sheets, menus, popovers, toasts. Light mode keeps white surfaces + shadows;
|
|
197
254
|
* dark mode (see .dark) steps each level up in OKLCH lightness because shadows don't read on dark.
|
|
255
|
+
*
|
|
256
|
+
* Light cannot go lighter than white, so the page is a near-white (base-50)
|
|
257
|
+
* and the card, white, is told apart from it by its 1px --color-border edge,
|
|
258
|
+
* not by lightness or a shadow. Nested surfaces step down from the card:
|
|
259
|
+
* elevated and inset (base-100). Enforced by scripts/check-surface-elevation.js:
|
|
260
|
+
* raised and overlay no darker than the page, elevated and inset at least 2
|
|
261
|
+
* points below raised, and the card edge at least 1.2:1 on the page and the card.
|
|
262
|
+
* (Until 8.1 the page was base-150 and the card carried a shadow.)
|
|
198
263
|
* Keep this block BELOW the "Background Colors" marker: scripts/sync-theme-tokens.js regenerates
|
|
199
264
|
* everything between the base-scale aliases and that marker. */
|
|
200
|
-
--color-surface-base: var(--color-base-
|
|
201
|
-
--color-surface-raised: #ffffff
|
|
202
|
-
--color-surface-elevated: var(--color-base-
|
|
203
|
-
--color-surface-overlay: #ffffff
|
|
265
|
+
--color-surface-base: var(--color-base-50);
|
|
266
|
+
--color-surface-raised: #ffffff;
|
|
267
|
+
--color-surface-elevated: var(--color-base-100);
|
|
268
|
+
--color-surface-overlay: #ffffff;
|
|
269
|
+
/* Chrome — the surface of bars and sidebars (AppBar, TopNavbar, BottomTabBar,
|
|
270
|
+
* the sidebars). One token so a theme can retint all of them at once. Equal to
|
|
271
|
+
* the page colour in both themes (D108): a bar is flush with the page at
|
|
272
|
+
* rest and takes the material over it once content scrolls under it. Point it
|
|
273
|
+
* at --color-surface-raised for a raised bar fill. */
|
|
274
|
+
--color-surface-chrome: var(--color-surface-base);
|
|
275
|
+
/* Bars (D124), read by .material-bar. The fill at rest, the hairline shown
|
|
276
|
+
* once content is under the bar (decorative, not a guarded edge: the same
|
|
277
|
+
* idea as the material rim), the fill of an on-brand AppBar, and the active
|
|
278
|
+
* tab's pill in the BottomTabBar. */
|
|
279
|
+
--color-bar: var(--color-surface-chrome);
|
|
280
|
+
--color-bar-border: color-mix(in srgb, var(--color-headline) 10%, transparent);
|
|
281
|
+
--color-bar-brand: var(--color-action-primary);
|
|
282
|
+
--color-tabbar-active: var(--color-nav-menu-active);
|
|
283
|
+
/* Inset — a recessed area ON a raised surface (a well, a code sample, a stat
|
|
284
|
+
* strip inside a card). It is the ramp step between the page and the raised
|
|
285
|
+
* surface in both themes, so it always reads as cut into the card, never as
|
|
286
|
+
* floating above it. In dark this is the step the input field already used;
|
|
287
|
+
* --color-input points here. In light it shares base-100 with `elevated`,
|
|
288
|
+
* because below a white card the only direction left is down. */
|
|
289
|
+
--color-surface-inset: var(--color-base-100);
|
|
204
290
|
/* Hover/active fill for rows and icon buttons inside an overlay (must read above the overlay) */
|
|
205
|
-
--color-surface-overlay-hover: var(--color-base-
|
|
206
|
-
/* 1px edge for overlays
|
|
207
|
-
|
|
208
|
-
--color-
|
|
209
|
-
--color-background
|
|
210
|
-
--color-background-
|
|
291
|
+
--color-surface-overlay-hover: var(--color-base-150);
|
|
292
|
+
/* 1px edge for overlays. An ink tint in light, so a white menu on a white
|
|
293
|
+
* card still has an outline where its shadow is thinnest; a solid step in dark. */
|
|
294
|
+
--color-border-overlay: rgba(9, 9, 11, 0.1);
|
|
295
|
+
--color-background: var(--color-surface-base);
|
|
296
|
+
--color-background-secondary: var(--color-base-100);
|
|
297
|
+
/* was base-50, which is now the page itself */
|
|
298
|
+
--color-background-tertiary: var(--color-base-150);
|
|
211
299
|
/* Page Colors */
|
|
212
|
-
--color-page: var(--color-base
|
|
213
|
-
--color-page-secondary: var(--color-base-200)
|
|
300
|
+
--color-page: var(--color-surface-base);
|
|
301
|
+
--color-page-secondary: var(--color-base-200);
|
|
214
302
|
/* Card Colors — aliases of the surface levels (kept for compatibility) */
|
|
215
|
-
--color-card: var(--color-surface-raised)
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
303
|
+
--color-card: var(--color-surface-raised);
|
|
304
|
+
/* Hover must not read as the page: the page is base-50 now, so base-100 was
|
|
305
|
+
* only ΔE 2.1 from it (the guard wants 2.5). Hover is base-150 (1.18:1 on the
|
|
306
|
+
* white card, ΔE 4.6 from the page), active one step further. */
|
|
307
|
+
--color-card-hover: var(--color-base-150);
|
|
308
|
+
--color-card-active: var(--color-base-200);
|
|
309
|
+
--color-card-elevated: var(--color-surface-overlay);
|
|
310
|
+
/* Card tint — the brand tint as a surface for content (Card tone="tint"): the
|
|
311
|
+
* subtle fill's own step (brand-100), as its own token so an app can move one
|
|
312
|
+
* and not the other. Headline, body, label, description, caption and link
|
|
313
|
+
* hold 4.5:1 on it, and the ring, the field edge and the outline Button's
|
|
314
|
+
* edge 3:1 (a form can sit on it): 15.30, 12.87, 9.02, 6.68, 5.29 and 5.84:1;
|
|
315
|
+
* ring 4.19, field edge 4.17. */
|
|
316
|
+
--color-card-tint: var(--color-brand-100);
|
|
317
|
+
/* Card variant="flat": today's flat fill (the card), opaque. Dark restates it as a translucent step. */
|
|
318
|
+
--color-card-flat: var(--color-card);
|
|
319
|
+
--color-card-flat-hover: var(--color-card-hover);
|
|
320
|
+
--color-card-flat-active: var(--color-card-active);
|
|
219
321
|
/* Surfaces — numbered aliases (kept for compatibility; prefer surface-base/raised/elevated/overlay) */
|
|
220
|
-
--color-surface-1: var(--color-surface-raised)
|
|
221
|
-
--color-surface-2: var(--color-surface-elevated)
|
|
222
|
-
--color-surface-3: var(--color-base-75)
|
|
223
|
-
--color-surface-4: var(--color-base-100)
|
|
322
|
+
--color-surface-1: var(--color-surface-raised);
|
|
323
|
+
--color-surface-2: var(--color-surface-elevated);
|
|
324
|
+
--color-surface-3: var(--color-base-75);
|
|
325
|
+
--color-surface-4: var(--color-base-100);
|
|
224
326
|
/* Control track — the unselected rail of a Toggle or switch. A real token
|
|
225
327
|
* rather than a raw ramp step, so the hover/active direction is defined once
|
|
226
328
|
* and inverts correctly with the theme. */
|
|
227
|
-
--color-control-track: var(--color-base-400)
|
|
228
|
-
--color-control-track-hover: var(--color-base-450)
|
|
229
|
-
--color-control-track-active: var(--color-base-500)
|
|
329
|
+
--color-control-track: var(--color-base-400);
|
|
330
|
+
--color-control-track-hover: var(--color-base-450);
|
|
331
|
+
--color-control-track-active: var(--color-base-500);
|
|
332
|
+
/* Toggle track — the off switch. The shared control track above is a mid
|
|
333
|
+
* grey (base-400) that reads as disabled, so the switch has its own: a light
|
|
334
|
+
* tint, with its edge doing the 3:1 work (WCAG 1.4.11), which a fill this
|
|
335
|
+
* light cannot. The edge is the field edge, 4.63:1 on the page and 4.83:1 on
|
|
336
|
+
* a card. Slider and Progress keep the shared track. */
|
|
337
|
+
--color-toggle-track: var(--color-base-200);
|
|
338
|
+
--color-toggle-track-hover: var(--color-base-250);
|
|
339
|
+
--color-toggle-track-active: var(--color-base-300);
|
|
340
|
+
--color-toggle-track-border: var(--color-input-border);
|
|
341
|
+
/* Toggle knob, by default 3:1 or more on every track fill it sits on (WCAG
|
|
342
|
+
* 1.4.11). Off, a dark knob on the light track: base-500 is 3.81:1 on the
|
|
343
|
+
* resting track, 3.53:1 hovered and 3.27:1 pressed. On, the label colour of
|
|
344
|
+
* the primary fill: 4.86:1 at rest, 6.76:1 hovered and 9.44:1 pressed. The consumer's
|
|
345
|
+
* own `--color-toggle-thumb` and `--color-toggle-thumb-checked` (declared
|
|
346
|
+
* nowhere) come first; see `.bg-toggle-thumb`. */
|
|
347
|
+
--color-toggle-knob: var(--color-base-500);
|
|
348
|
+
--color-toggle-knob-checked: var(--color-action-primary-text);
|
|
349
|
+
/* Progress — the bar of Progress. The fill is the primary action, so it
|
|
350
|
+
* follows a pinned primary; the track is the field fill it always was. */
|
|
351
|
+
--color-progress-fill: var(--color-action-primary);
|
|
352
|
+
--color-progress-track: var(--color-input);
|
|
353
|
+
/* The edge of the track. The default track is the field fill (white on the
|
|
354
|
+
* white card), 1.00:1 on the card and 1.04:1 on the page, so its edge is the
|
|
355
|
+
* field edge, 3:1 on both (the guard holds it). An app whose own track
|
|
356
|
+
* already reaches 3:1 sets this to `transparent`; createTheme does that when
|
|
357
|
+
* it overrides the track. */
|
|
358
|
+
--color-progress-track-border: var(--color-input-border);
|
|
230
359
|
/* Interaction fills — surface-relative on purpose.
|
|
231
360
|
* A hard-coded ramp step (e.g. base-100) can coincide exactly with the
|
|
232
361
|
* surface it sits on, which is how ghost hover became invisible: in dark
|
|
233
362
|
* mode --color-base-100 IS --color-surface-base. An alpha tint is always
|
|
234
363
|
* one step away from whatever is underneath it. */
|
|
235
|
-
--color-surface-hover: rgba(9, 9, 11, 0.
|
|
236
|
-
--color-surface-active: rgba(9, 9, 11, 0.
|
|
364
|
+
--color-surface-hover: rgba(9, 9, 11, 0.09);
|
|
365
|
+
--color-surface-active: rgba(9, 9, 11, 0.15);
|
|
237
366
|
/* Overlay Colors */
|
|
238
|
-
--color-overlay: rgba(0, 0, 0, 0.5)
|
|
367
|
+
--color-overlay: rgba(0, 0, 0, 0.5);
|
|
239
368
|
/* Input Colors
|
|
240
369
|
* The field is a RAISED surface, not a grey well — a grey fill on a grey
|
|
241
370
|
* page reads as disabled. The disabled state is the only grey field. */
|
|
242
|
-
--color-input: var(--color-surface-raised)
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
--color-input-
|
|
371
|
+
--color-input: var(--color-surface-raised);
|
|
372
|
+
/* The edge of a form field (WCAG 1.4.11): 3:1 on the field fill, the page and
|
|
373
|
+
* the card, held by the contrast guard. base-500 is 4.83:1 on white and
|
|
374
|
+
* 4.10:1 on the page; base-450 was 2.94:1 on the page, base-350 1.93:1. */
|
|
375
|
+
--color-input-border: var(--color-base-500);
|
|
376
|
+
/* Hover edge for a field. Light-mode hover is meant to be carried by the
|
|
377
|
+
* border, not by greying the fill; dark keeps its fill step and leaves this
|
|
378
|
+
* equal to the resting border. One step past the resting edge. */
|
|
379
|
+
--color-input-border-hover: var(--color-base-550);
|
|
380
|
+
/* One step off white, and the same step the card hover uses. */
|
|
381
|
+
--color-input-hover: var(--color-base-100);
|
|
382
|
+
/* Pressed, for a field that is pressed rather than typed in: the Select
|
|
383
|
+
* trigger. It borrowed the hover step, 1.10:1 against the resting field,
|
|
384
|
+
* when every other pressed fill is 1.26:1 or more. Derived from the field,
|
|
385
|
+
* not a fixed ramp step: an app that sets the card (and so the field) to
|
|
386
|
+
* another colour through createTheme overrides would otherwise land its
|
|
387
|
+
* field on top of a fixed step (base-200 was 1.21:1 against a base-50 field
|
|
388
|
+
* of #f8faff, below the 1.25 the generator holds). 12% of the ink into the
|
|
389
|
+
* field is the smallest whole percent that keeps the three pairs: 1.25:1
|
|
390
|
+
* against the field (11% is the floor), body and placeholder 4.5:1 on it.
|
|
391
|
+
* Default theme: #e3e3e4 (was #e4e4e7); on a #f8faff field with the
|
|
392
|
+
* ink at 12%: 1.28:1 against it. */
|
|
393
|
+
--color-input-active: color-mix(in srgb, var(--zabi-base-900) 12%, var(--color-input));
|
|
394
|
+
--color-input-focus: var(--color-surface-raised);
|
|
395
|
+
/* The only grey field. It was the page colour; the page is now near white
|
|
396
|
+
* (1.04:1 against the white field), so it takes base-150, 1.18:1 on the field
|
|
397
|
+
* as before. Dark still uses the dark page (base-100). */
|
|
398
|
+
--color-input-disabled: var(--color-base-150);
|
|
399
|
+
/* Light fields are opaque already: inside a colour block they stay as they are. The dark
|
|
400
|
+
* theme restates these as opaque steps (see there). */
|
|
401
|
+
--color-input-solid: var(--color-input);
|
|
402
|
+
--color-input-solid-hover: var(--color-input-hover);
|
|
403
|
+
--color-input-solid-focus: var(--color-input-focus);
|
|
404
|
+
--color-input-solid-active: var(--color-input-active);
|
|
247
405
|
/* Text Colors */
|
|
248
|
-
--color-headline: var(--color-base-900)
|
|
249
|
-
--color-body: var(--color-base-800)
|
|
250
|
-
--color-description: var(--color-base-600)
|
|
251
|
-
--color-caption: var(--color-base-550)
|
|
406
|
+
--color-headline: var(--color-base-900);
|
|
407
|
+
--color-body: var(--color-base-800);
|
|
408
|
+
--color-description: var(--color-base-600);
|
|
409
|
+
--color-caption: var(--color-base-550);
|
|
252
410
|
/* ≥ 4.5:1 on every surface level (base-500 was 4.40 on surface-base) */
|
|
253
|
-
|
|
254
|
-
|
|
411
|
+
/* Placeholder text, and the format hint of an empty DateField or TimeField.
|
|
412
|
+
* It is text someone has to read, so it is held to 4.5:1 on every fill a
|
|
413
|
+
* field can show: resting, hover, focus and pressed. base-500 was 4.83:1 on
|
|
414
|
+
* the white field but 4.40:1 on the hover fill and 3.81:1 on the pressed
|
|
415
|
+
* one; base-550 is 6.13, 5.58 and 4.83. The value text (--color-body) stays
|
|
416
|
+
* 2.4:1 stronger, so an empty field still reads as empty. */
|
|
417
|
+
--color-input-placeholder: var(--color-base-550);
|
|
418
|
+
--color-label: var(--color-base-700);
|
|
255
419
|
/* brand-600 clears 4.5:1 on a card but only 4.42:1 on the page surface, so
|
|
256
420
|
* links sit one step darker. */
|
|
257
|
-
--color-link: var(--color-brand-700)
|
|
258
|
-
--color-link-hover: var(--color-brand-800)
|
|
421
|
+
--color-link: var(--color-brand-700);
|
|
422
|
+
--color-link-hover: var(--color-brand-800);
|
|
259
423
|
/* Navigation menu item — menubar triggers, menu links, inline/sidebar nav rows */
|
|
260
|
-
--color-nav-menu-item: var(--color-body)
|
|
261
|
-
--color-nav-menu-item-hover: var(--color-headline)
|
|
262
|
-
--color-nav-menu-item-active: var(--color-link)
|
|
424
|
+
--color-nav-menu-item: var(--color-body);
|
|
425
|
+
--color-nav-menu-item-hover: var(--color-headline);
|
|
426
|
+
--color-nav-menu-item-active: var(--color-link);
|
|
263
427
|
/* Surface-relative on purpose: base-100 IS surface-base in both themes,
|
|
264
428
|
* so the old value made sidebar row hover do nothing at all. */
|
|
265
|
-
--color-nav-menu-hover: var(--color-surface-hover)
|
|
266
|
-
--color-nav-menu-active: var(--color-action-primary-subtle)
|
|
267
|
-
--color-nav-menu-active-hover: var(--color-action-primary-subtle-hover)
|
|
268
|
-
--color-nav-menu-focus: var(--color-
|
|
269
|
-
--color-success-text: var(--color-pine-700)
|
|
270
|
-
--color-warning-text: var(--color-warning-700)
|
|
271
|
-
--color-neutral-text: var(--color-base-700)
|
|
272
|
-
--color-energetic-text: var(--color-citron-700)
|
|
273
|
-
--color-error-text: var(--color-error-700)
|
|
274
|
-
--color-inverse: var(--color-base-100)
|
|
275
|
-
--color-disabled: var(--color-base-400)
|
|
429
|
+
--color-nav-menu-hover: var(--color-surface-hover);
|
|
430
|
+
--color-nav-menu-active: var(--color-action-primary-subtle);
|
|
431
|
+
--color-nav-menu-active-hover: var(--color-action-primary-subtle-hover);
|
|
432
|
+
--color-nav-menu-focus: var(--color-focus);
|
|
433
|
+
--color-success-text: var(--color-pine-700);
|
|
434
|
+
--color-warning-text: var(--color-warning-700);
|
|
435
|
+
--color-neutral-text: var(--color-base-700);
|
|
436
|
+
--color-energetic-text: var(--color-citron-700);
|
|
437
|
+
--color-error-text: var(--color-error-700);
|
|
438
|
+
--color-inverse: var(--color-base-100);
|
|
439
|
+
--color-disabled: var(--color-base-400);
|
|
276
440
|
/* Border Colors */
|
|
277
|
-
--color-border: var(--color-base-300)
|
|
278
|
-
--color-border-weak: var(--color-base-300)
|
|
279
|
-
--color-border-medium: var(--color-base-400)
|
|
280
|
-
--color-border-strong: var(--color-base-500)
|
|
281
|
-
/*
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
--color-
|
|
441
|
+
--color-border: var(--color-base-300);
|
|
442
|
+
--color-border-weak: var(--color-base-300);
|
|
443
|
+
--color-border-medium: var(--color-base-400);
|
|
444
|
+
--color-border-strong: var(--color-base-500);
|
|
445
|
+
/* Control boundary — the edge of a control that has nothing else to be seen
|
|
446
|
+
* by, such as the outline of an empty Rating star (its first user).
|
|
447
|
+
* WCAG 1.4.11 asks 3:1 for it against whatever it sits on, so it is held to
|
|
448
|
+
* 3:1 on every surface level in both themes (scripts/check-contrast.js).
|
|
449
|
+
* The decorative edges above are not: --color-border-strong is the mirror's
|
|
450
|
+
* fixed point, the same grey in both themes, and is 2.49:1 on the dark
|
|
451
|
+
* elevated surface and 1.98:1 on the dark overlay. .dark pins this one step
|
|
452
|
+
* lighter for that reason. */
|
|
453
|
+
--color-control-border: var(--color-base-500);
|
|
454
|
+
/* Segmented control thumb (tone neutral): the selected segment, a card-coloured
|
|
455
|
+
* piece on the tinted track. The edge is what identifies it (WCAG 1.4.11), as
|
|
456
|
+
* the 1.1:1 fill step alone would not. It is the control boundary, which dark
|
|
457
|
+
* lifts a step (base-600) because the input edge is only 2.4:1 on this track; it is held to 3:1 against the track
|
|
458
|
+
* over the page and over a card (scripts/contrast-pairs.js). */
|
|
459
|
+
--color-segment-thumb: var(--color-surface-raised);
|
|
460
|
+
--color-segment-thumb-text: var(--color-headline);
|
|
461
|
+
--color-segment-thumb-border: var(--color-control-border);
|
|
462
|
+
/* Focus Colors
|
|
463
|
+
* brand-600, not brand-500: a focus indicator needs 3:1 against what is
|
|
464
|
+
* around it, and brand-500 was 2.99:1 on the page. brand-600 is also the
|
|
465
|
+
* primary button fill, so on a primary button the ring is separated by its
|
|
466
|
+
* 2px offset gap (--color-focus-ring-offset), which .focus-ring always draws.
|
|
467
|
+
* .dark restates the same steps; the mirror makes them --zabi-brand-400 and up. */
|
|
468
|
+
--color-focus: var(--color-brand-600);
|
|
469
|
+
--color-focus-weak: var(--color-brand-700);
|
|
470
|
+
--color-focus-medium: var(--color-brand-800);
|
|
471
|
+
--color-focus-strong: var(--color-brand-900);
|
|
286
472
|
/* Aliases for `ring-focus-ring`, `.focus-ring`, and form utils */
|
|
287
|
-
--color-focus-ring: var(--color-focus)
|
|
288
|
-
--color-focus-ring-offset: var(--color-card)
|
|
473
|
+
--color-focus-ring: var(--color-focus);
|
|
474
|
+
--color-focus-ring-offset: var(--color-card);
|
|
475
|
+
/* `.focus-ring--muted`: the neutral ring of a ghost or link control, quiet
|
|
476
|
+
* by having no hue, not by having less contrast. The rule used to read
|
|
477
|
+
* --color-base-500 directly, which does not move between themes: 4.1:1 or
|
|
478
|
+
* more in light, 2.49:1 on the dark elevated surface. .dark pins it one step
|
|
479
|
+
* lighter; it is held to 3:1 on every surface level in both themes. */
|
|
480
|
+
--color-focus-ring-muted: var(--color-base-500);
|
|
481
|
+
/* `.focus-ring--danger`: the ring of a destructive control. It is the error
|
|
482
|
+
* colour; a role of its own so that a brand or accent block can re-point
|
|
483
|
+
* it with the other rings (the error colour is about 1:1 on a brand fill,
|
|
484
|
+
* and a focused danger Button there showed no ring). */
|
|
485
|
+
--color-focus-ring-danger: var(--color-error);
|
|
289
486
|
/* Primary Colors */
|
|
290
|
-
--color-primary: var(--color-brand-600)
|
|
291
|
-
--color-primary-weak: var(--color-brand-700)
|
|
292
|
-
--color-primary-medium: var(--color-brand-800)
|
|
293
|
-
--color-primary-strong: var(--color-brand-900)
|
|
487
|
+
--color-primary: var(--color-brand-600);
|
|
488
|
+
--color-primary-weak: var(--color-brand-700);
|
|
489
|
+
--color-primary-medium: var(--color-brand-800);
|
|
490
|
+
--color-primary-strong: var(--color-brand-900);
|
|
294
491
|
/* Secondary Colors */
|
|
295
|
-
--color-secondary: var(--color-base-600)
|
|
296
|
-
--color-secondary-weak: var(--color-base-700)
|
|
297
|
-
--color-secondary-medium: var(--color-base-800)
|
|
298
|
-
--color-secondary-strong: var(--color-base-900)
|
|
492
|
+
--color-secondary: var(--color-base-600);
|
|
493
|
+
--color-secondary-weak: var(--color-base-700);
|
|
494
|
+
--color-secondary-medium: var(--color-base-800);
|
|
495
|
+
--color-secondary-strong: var(--color-base-900);
|
|
299
496
|
/* ----------------------------------------------------------------
|
|
300
497
|
* SEMANTIC FAMILIES
|
|
301
498
|
* Every family resolves to the SAME step on the shared lightness curve, so
|
|
@@ -306,8 +503,8 @@
|
|
|
306
503
|
* <family>-weak step 700 pressed / emphasis
|
|
307
504
|
* <family>-medium step 800 strongest fill
|
|
308
505
|
* <family>-strong step 900 darkest
|
|
309
|
-
* <family>-subtle step 100 tinted fill (badges, alerts)
|
|
310
|
-
* <family>-border step 200 tinted edge
|
|
506
|
+
* <family>-subtle step 100 tinted fill (badges, alerts); .dark restates step 100
|
|
507
|
+
* <family>-border step 200 tinted edge; .dark restates step 200
|
|
311
508
|
* <family>-text step 700 text on a subtle fill or a page surface
|
|
312
509
|
*
|
|
313
510
|
* Warning, error and energetic previously sat at step 500 — the mirror's
|
|
@@ -316,57 +513,74 @@
|
|
|
316
513
|
* and fine in dark.
|
|
317
514
|
* ---------------------------------------------------------------- */
|
|
318
515
|
/* Success Colors */
|
|
319
|
-
--color-success: var(--color-pine-600)
|
|
320
|
-
--color-success-weak: var(--color-pine-700)
|
|
321
|
-
--color-success-medium: var(--color-pine-800)
|
|
322
|
-
--color-success-strong: var(--color-pine-900)
|
|
323
|
-
--color-success-subtle: var(--color-pine-100)
|
|
324
|
-
--color-success-border: var(--color-pine-200)
|
|
516
|
+
--color-success: var(--color-pine-600);
|
|
517
|
+
--color-success-weak: var(--color-pine-700);
|
|
518
|
+
--color-success-medium: var(--color-pine-800);
|
|
519
|
+
--color-success-strong: var(--color-pine-900);
|
|
520
|
+
--color-success-subtle: var(--color-pine-100);
|
|
521
|
+
--color-success-border: var(--color-pine-200);
|
|
325
522
|
/* Warning Colors */
|
|
326
|
-
--color-warning: var(--color-warning-600)
|
|
327
|
-
--color-warning-weak: var(--color-warning-700)
|
|
328
|
-
--color-warning-medium: var(--color-warning-800)
|
|
329
|
-
--color-warning-strong: var(--color-warning-900)
|
|
330
|
-
--color-warning-subtle: var(--color-warning-100)
|
|
331
|
-
--color-warning-border: var(--color-warning-200)
|
|
523
|
+
--color-warning: var(--color-warning-600);
|
|
524
|
+
--color-warning-weak: var(--color-warning-700);
|
|
525
|
+
--color-warning-medium: var(--color-warning-800);
|
|
526
|
+
--color-warning-strong: var(--color-warning-900);
|
|
527
|
+
--color-warning-subtle: var(--color-warning-100);
|
|
528
|
+
--color-warning-border: var(--color-warning-200);
|
|
332
529
|
/* Error Colors */
|
|
333
|
-
--color-error: var(--color-error-600)
|
|
334
|
-
--color-error-weak: var(--color-error-700)
|
|
335
|
-
--color-error-medium: var(--color-error-800)
|
|
336
|
-
--color-error-strong: var(--color-error-900)
|
|
337
|
-
--color-error-subtle: var(--color-error-100)
|
|
338
|
-
--color-error-border: var(--color-error-200)
|
|
530
|
+
--color-error: var(--color-error-600);
|
|
531
|
+
--color-error-weak: var(--color-error-700);
|
|
532
|
+
--color-error-medium: var(--color-error-800);
|
|
533
|
+
--color-error-strong: var(--color-error-900);
|
|
534
|
+
--color-error-subtle: var(--color-error-100);
|
|
535
|
+
--color-error-border: var(--color-error-200);
|
|
339
536
|
/* Energetic Colors (Citron) */
|
|
340
|
-
--color-energetic: var(--color-citron-600)
|
|
341
|
-
--color-energetic-weak: var(--color-citron-700)
|
|
342
|
-
--color-energetic-medium: var(--color-citron-800)
|
|
343
|
-
--color-energetic-strong: var(--color-citron-900)
|
|
344
|
-
--color-energetic-subtle: var(--color-citron-100)
|
|
345
|
-
--color-energetic-border: var(--color-citron-200)
|
|
537
|
+
--color-energetic: var(--color-citron-600);
|
|
538
|
+
--color-energetic-weak: var(--color-citron-700);
|
|
539
|
+
--color-energetic-medium: var(--color-citron-800);
|
|
540
|
+
--color-energetic-strong: var(--color-citron-900);
|
|
541
|
+
--color-energetic-subtle: var(--color-citron-100);
|
|
542
|
+
--color-energetic-border: var(--color-citron-200);
|
|
543
|
+
/* Accent Colors — the second brand colour, on --zabi-accent-* (citron by
|
|
544
|
+
* default). The same recipe as the primary action: fill at 600, hover 700,
|
|
545
|
+
* active 800, so "more pressed" is "more contrast" in both themes; tint,
|
|
546
|
+
* edge and text as in the families above. `energetic` keeps pointing at
|
|
547
|
+
* citron itself and does not move when an app re-colours the accent. */
|
|
548
|
+
--color-accent: var(--color-accent-600);
|
|
549
|
+
--color-accent-hover: var(--color-accent-700);
|
|
550
|
+
--color-accent-active: var(--color-accent-800);
|
|
551
|
+
--color-accent-subtle: var(--color-accent-100);
|
|
552
|
+
--color-accent-border: var(--color-accent-200);
|
|
553
|
+
--color-accent-text: var(--color-accent-700);
|
|
554
|
+
/* Label on a solid accent fill — see "on brand" below for the two knobs. */
|
|
555
|
+
--zabi-on-accent: #ffffff;
|
|
556
|
+
--zabi-on-accent-dark: var(--zabi-accent-950);
|
|
557
|
+
--color-on-accent: var(--zabi-on-accent);
|
|
346
558
|
/* Neutral Colors
|
|
347
559
|
* The base ramp is wider than the chromatic ones on purpose (it also drives
|
|
348
560
|
* text, borders and surfaces), so neutral cannot sit on exactly the same
|
|
349
561
|
* step. base-550 is the closest match to the chromatic 600s that still
|
|
350
562
|
* clears AA; .dark pins base-600, because base-500 is the mirror's fixed
|
|
351
563
|
* point and would not invert at all. */
|
|
352
|
-
--color-neutral: var(--color-base-550)
|
|
353
|
-
--color-neutral-weak: var(--color-base-600)
|
|
354
|
-
--color-neutral-medium: var(--color-base-700)
|
|
355
|
-
--color-neutral-strong: var(--color-base-900)
|
|
356
|
-
/* base-
|
|
357
|
-
*
|
|
358
|
-
|
|
359
|
-
|
|
564
|
+
--color-neutral: var(--color-base-550);
|
|
565
|
+
--color-neutral-weak: var(--color-base-600);
|
|
566
|
+
--color-neutral-medium: var(--color-base-700);
|
|
567
|
+
--color-neutral-strong: var(--color-base-900);
|
|
568
|
+
/* Visibly past the page (base-50, 1.20:1) and the card (1.27:1). It was
|
|
569
|
+
* base-100 once, which IS the dark page and made a neutral badge measure
|
|
570
|
+
* 1.00:1 and read as bare text; base-150 is only 1.13:1 on the page. The
|
|
571
|
+
* border is a step darker than the fill, like every other family. */
|
|
572
|
+
--color-neutral-subtle: var(--color-base-200);
|
|
573
|
+
--color-neutral-border: var(--color-base-250);
|
|
360
574
|
/* Info Colors */
|
|
361
|
-
--color-info: var(--color-iris-600)
|
|
362
|
-
--color-info-weak: var(--color-iris-700)
|
|
363
|
-
--color-info-medium: var(--color-iris-800)
|
|
364
|
-
--color-info-strong: var(--color-iris-900)
|
|
365
|
-
--color-info-active: var(--color-iris-400)
|
|
366
|
-
--color-info-subtle: var(--color-iris-100)
|
|
367
|
-
--color-info-border: var(--color-iris-200)
|
|
575
|
+
--color-info: var(--color-iris-600);
|
|
576
|
+
--color-info-weak: var(--color-iris-700);
|
|
577
|
+
--color-info-medium: var(--color-iris-800);
|
|
578
|
+
--color-info-strong: var(--color-iris-900);
|
|
579
|
+
--color-info-active: var(--color-iris-400);
|
|
580
|
+
--color-info-subtle: var(--color-iris-100);
|
|
581
|
+
--color-info-border: var(--color-iris-200);
|
|
368
582
|
/* Text alias */
|
|
369
|
-
--color-info-text: var(--color-iris-700)
|
|
583
|
+
--color-info-text: var(--color-iris-700);
|
|
370
584
|
/* ========================================
|
|
371
585
|
ACTION COLORS - For interactive elements (buttons, links, etc.)
|
|
372
586
|
======================================== */
|
|
@@ -379,56 +593,234 @@
|
|
|
379
593
|
* contrast against the page" in both themes. Never point active at a step on
|
|
380
594
|
* the far side of the ramp: active used to be brand-400 against a brand-50
|
|
381
595
|
* label, which is 1.66:1 — the label vanished while the button was held. */
|
|
382
|
-
--color-action-primary: var(--color-brand-600)
|
|
383
|
-
--color-action-primary-hover: var(--color-brand-700)
|
|
384
|
-
--color-action-primary-active: var(--color-brand-800)
|
|
385
|
-
--color-action-primary-subtle: var(--color-brand-100)
|
|
386
|
-
--color-action-primary-subtle-hover: var(--color-brand-200)
|
|
387
|
-
/*
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
596
|
+
--color-action-primary: var(--color-brand-600);
|
|
597
|
+
--color-action-primary-hover: var(--color-brand-700);
|
|
598
|
+
--color-action-primary-active: var(--color-brand-800);
|
|
599
|
+
--color-action-primary-subtle: var(--color-brand-100);
|
|
600
|
+
--color-action-primary-subtle-hover: var(--color-brand-200);
|
|
601
|
+
/* Edge of a subtle brand badge when `bordered`; the tint's own darker step. */
|
|
602
|
+
--color-action-primary-border: var(--color-brand-200);
|
|
603
|
+
/* Held down, on a control whose resting fill is the subtle one: a toggled-on
|
|
604
|
+
* ghost IconButton. It used the hover step, which is 1.24:1 against the
|
|
605
|
+
* resting fill and, with a mouse, is what the button already shows. Half a
|
|
606
|
+
* step past hover is 1.42:1 against resting, and the icon (--color-link)
|
|
607
|
+
* keeps 3.50:1 on it; a whole step would leave the icon at 3.01:1. */
|
|
608
|
+
--color-action-primary-subtle-active: color-mix(in srgb, var(--color-brand-300) 50%, var(--color-brand-200));
|
|
609
|
+
/* "On brand" — the label on a primary fill.
|
|
610
|
+
* White rather than brand-50: the ramp's lightest tint lands at exactly
|
|
611
|
+
* 4.50:1 on brand-600 — passing, but with no margin. Pure white gives 4.86:1.
|
|
612
|
+
* Dark has the same fill (step 600, physical) and the same label: white on
|
|
613
|
+
* it is 4.76:1 on any ramp, since every ramp is on one lightness curve.
|
|
614
|
+
*
|
|
615
|
+
* A light brand (amber, yellow) cannot carry white text, so both values are
|
|
616
|
+
* knobs an app sets once on :root, like the ramps:
|
|
617
|
+
* --zabi-on-brand label in light mode
|
|
618
|
+
* --zabi-on-brand-dark label in dark mode: follows the light label (white),
|
|
619
|
+
* since the dark fill is the same step; set it to a dark
|
|
620
|
+
* one for a pale dark primary
|
|
621
|
+
* --color-on-brand is the role, remapped by .dark; components keep using
|
|
622
|
+
* --color-action-primary-text, which follows it. */
|
|
623
|
+
--zabi-on-brand: #ffffff;
|
|
624
|
+
--zabi-on-brand-dark: var(--zabi-on-brand);
|
|
625
|
+
--color-on-brand: var(--zabi-on-brand);
|
|
626
|
+
--color-action-primary-text: var(--color-on-brand);
|
|
391
627
|
/* Secondary Actions - Used by bg-action-secondary utility class
|
|
392
628
|
* A neutral alpha tint: reads as a real button on any surface level, and
|
|
393
629
|
* cannot collide with the background the way a fixed ramp step can. The old
|
|
394
630
|
* 10%-brand wash was so pale it barely registered as a control. */
|
|
395
|
-
--color-action-secondary: rgba(9, 9, 11, 0.
|
|
396
|
-
--color-action-secondary-hover: rgba(9, 9, 11, 0.
|
|
397
|
-
--color-action-secondary-active: rgba(9, 9, 11, 0.
|
|
398
|
-
--color-action-secondary-subtle: var(--color-base-100)
|
|
399
|
-
--color-action-secondary-subtle-hover: var(--color-base-200)
|
|
400
|
-
--color-action-secondary-text: var(--color-headline)
|
|
631
|
+
--color-action-secondary: rgba(9, 9, 11, 0.1);
|
|
632
|
+
--color-action-secondary-hover: rgba(9, 9, 11, 0.15);
|
|
633
|
+
--color-action-secondary-active: rgba(9, 9, 11, 0.2);
|
|
634
|
+
--color-action-secondary-subtle: var(--color-base-100);
|
|
635
|
+
--color-action-secondary-subtle-hover: var(--color-base-200);
|
|
636
|
+
--color-action-secondary-text: var(--color-headline);
|
|
637
|
+
/* Tonal Actions - Used by bg-action-tonal utility class.
|
|
638
|
+
* A brand-tinted fill with the brand as its label: the quieter action beside
|
|
639
|
+
* a primary, and a chosen answer. It is the subtle tint (brand-100) and its
|
|
640
|
+
* own hover (brand-200) and pressed steps (halfway to brand-300, like the
|
|
641
|
+
* toggled-on ghost button; 1.30:1 against the resting fill). The label is
|
|
642
|
+
* brand-800, the lightest step that holds 4.5:1 on all three fills for any
|
|
643
|
+
* brand, not only the default: step 700 does on the default brand (5.84,
|
|
644
|
+
* 4.97, 4.48:1) but fails the pressed fill by 0.02, and by more on a
|
|
645
|
+
* saturated blue (4.39:1 for #0026EA). 800 gives 8.15, 6.94 and 6.25:1. */
|
|
646
|
+
--color-action-tonal: var(--color-action-primary-subtle);
|
|
647
|
+
--color-action-tonal-hover: var(--color-action-primary-subtle-hover);
|
|
648
|
+
--color-action-tonal-active: color-mix(in srgb, var(--color-brand-300) 50%, var(--color-brand-200));
|
|
649
|
+
--color-action-tonal-text: var(--color-brand-800);
|
|
650
|
+
/* Chip - the filter and choice pill (Chip). At rest a quiet neutral fill that
|
|
651
|
+
* shows on the page and on a card without an edge: base-200 is 1.22:1 on the
|
|
652
|
+
* page and 1.27:1 on the card, hover base-300 and pressed base-350 (1.42 and
|
|
653
|
+
* 1.85 on the page). The label is the headline, 4.5:1 or more on all three
|
|
654
|
+
* (13.96, 11.99 and 9.18:1). */
|
|
655
|
+
--color-chip: var(--color-base-200);
|
|
656
|
+
--color-chip-hover: var(--color-base-300);
|
|
657
|
+
--color-chip-active: var(--color-base-350);
|
|
658
|
+
--color-chip-text: var(--color-headline);
|
|
659
|
+
/* A selected chip is tonal, in both modes (never solid): its own tokens,
|
|
660
|
+
* pointing at the tonal role, so an app that themes tonal gets matching chips
|
|
661
|
+
* and one that wants another selected look sets these. */
|
|
662
|
+
--color-chip-selected: var(--color-action-tonal);
|
|
663
|
+
--color-chip-selected-hover: var(--color-action-tonal-hover);
|
|
664
|
+
--color-chip-selected-active: var(--color-action-tonal-active);
|
|
665
|
+
--color-chip-selected-text: var(--color-action-tonal-text);
|
|
666
|
+
/* Outline Actions - the edge of an outline Button. The border role was the
|
|
667
|
+
* card edge, 1.25:1 on the page: a label in a ghost box. This is the field
|
|
668
|
+
* edge (base-500), already held to 3:1 on the field, the page and a card. */
|
|
669
|
+
--color-action-outline-border: var(--color-input-border);
|
|
670
|
+
--color-action-outline-border-hover: var(--color-input-border-hover);
|
|
401
671
|
/* Disabled Actions - shared by every variant.
|
|
402
672
|
* Disabled must be the QUIETEST state, never a brighter colour than the
|
|
403
673
|
* enabled secondary. It used to be brand-500 plus opacity-50, which made a
|
|
404
674
|
* disabled primary lighter and more colourful than an enabled secondary. */
|
|
405
|
-
--color-action-disabled: var(--color-base-
|
|
406
|
-
--color-action-disabled-text: var(--color-base-500)
|
|
407
|
-
--color-action-disabled-border: var(--color-base-
|
|
675
|
+
--color-action-disabled: var(--color-base-250);
|
|
676
|
+
--color-action-disabled-text: var(--color-base-500);
|
|
677
|
+
--color-action-disabled-border: var(--color-base-300);
|
|
408
678
|
/* Danger Actions - Used by bg-action-danger utility class.
|
|
409
679
|
* Same ramp step as every other family, so the destructive action no longer
|
|
410
680
|
* out-shouts the primary one. The bright red is spent on hover, where the
|
|
411
681
|
* user is already committing. */
|
|
412
|
-
--color-action-danger: var(--color-error-600)
|
|
413
|
-
--color-action-danger-hover: var(--color-error-700)
|
|
414
|
-
--color-action-danger-active: var(--color-error-800)
|
|
415
|
-
--color-action-danger-subtle: var(--color-error-100)
|
|
416
|
-
--color-action-danger-subtle-hover: var(--color-error-200)
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
--
|
|
420
|
-
|
|
421
|
-
--
|
|
422
|
-
--
|
|
423
|
-
|
|
424
|
-
|
|
682
|
+
--color-action-danger: var(--color-error-600);
|
|
683
|
+
--color-action-danger-hover: var(--color-error-700);
|
|
684
|
+
--color-action-danger-active: var(--color-error-800);
|
|
685
|
+
--color-action-danger-subtle: var(--color-error-100);
|
|
686
|
+
--color-action-danger-subtle-hover: var(--color-error-200);
|
|
687
|
+
/* The same for a toggled-on danger-tone IconButton: hover was 1.18:1 against
|
|
688
|
+
* the resting fill. Half a step past it is 1.32:1, and the icon
|
|
689
|
+
* (--color-error) keeps 3.36:1; on the whole step it is exactly 3.00. Dark needs no override:
|
|
690
|
+
* the same expression resolves through the mirrored steps. */
|
|
691
|
+
--color-action-danger-subtle-active: color-mix(in srgb, var(--color-error-300) 50%, var(--color-error-200));
|
|
692
|
+
--color-action-danger-text: var(--color-error-50);
|
|
693
|
+
/* Shadow Colors
|
|
694
|
+
* Light elevation is carried by the shadow, so it is the ramp's own ink
|
|
695
|
+
* (base-900). Every step is two layers: a tight contact shadow
|
|
696
|
+
* (--shadow-opacity-contact) that grounds the edge and a wider, softer
|
|
697
|
+
* ambient one (--shadow-opacity) that carries the distance. Until 8.1 both
|
|
698
|
+
* layers shared one flat 14%; the 8.1 values are in CHANGELOG.md. */
|
|
699
|
+
--shadow-color: 24 24 27;
|
|
700
|
+
--shadow-opacity: 0.1;
|
|
701
|
+
--shadow-opacity-contact: 0.06;
|
|
702
|
+
--shadow-sm: 0 1px 2px 0 rgb(var(--shadow-color) / var(--shadow-opacity-contact)), 0 2px 6px -1px rgb(var(--shadow-color) / var(--shadow-opacity));
|
|
703
|
+
--shadow-md: 0 1px 3px 0 rgb(var(--shadow-color) / var(--shadow-opacity-contact)), 0 6px 14px -2px rgb(var(--shadow-color) / var(--shadow-opacity));
|
|
704
|
+
--shadow-lg: 0 1px 2px 0 rgb(var(--shadow-color) / var(--shadow-opacity-contact)), 0 10px 30px 0 rgb(var(--shadow-color) / var(--shadow-opacity));
|
|
705
|
+
--shadow-xl: 0 2px 4px 0 rgb(var(--shadow-color) / var(--shadow-opacity-contact)), 0 20px 50px -8px rgb(var(--shadow-color) / var(--shadow-opacity));
|
|
706
|
+
/* What a material (glass) casts: the lg step. Its own name so a theme can
|
|
707
|
+
* retune glass without moving every floating surface. */
|
|
708
|
+
--shadow-material: 0 1px 2px 0 rgb(var(--shadow-color) / var(--shadow-opacity-contact)), 0 10px 30px 0 rgb(var(--shadow-color) / var(--shadow-opacity));
|
|
709
|
+
/* Motion
|
|
710
|
+
* Four durations and three curves. Tailwind's default transition reads
|
|
711
|
+
* --duration-base and --ease-standard, so every `transition-*` class that
|
|
712
|
+
* sets no duration of its own follows them (150ms, as before; the curve is
|
|
713
|
+
* new). `ease-standard`, `ease-out` and `ease-spring` are utilities;
|
|
714
|
+
* durations are used as `duration-(--duration-moderate)`. --ease-out is
|
|
715
|
+
* Tailwind's own name and value. --ease-spring is a lightly damped spring
|
|
716
|
+
* (one overshoot of about 5%, settled by the end): the cubic-bezier is the
|
|
717
|
+
* fallback, and the @supports block after @theme upgrades it to linear().
|
|
718
|
+
* prefers-reduced-motion re-points all of them (see @motion-reduced). */
|
|
719
|
+
--duration-fast: 100ms;
|
|
720
|
+
--duration-base: 150ms;
|
|
721
|
+
--duration-moderate: 200ms;
|
|
722
|
+
--duration-slow: 300ms;
|
|
723
|
+
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
|
724
|
+
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
725
|
+
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
726
|
+
--default-transition-duration: var(--duration-base);
|
|
727
|
+
--default-transition-timing-function: var(--ease-standard);
|
|
728
|
+
/* Materials — the frosted layer for what floats over content (bars, sheets,
|
|
729
|
+
* menus). Used through .material-thin|regular|thick (below), never a raw
|
|
730
|
+
* backdrop-blur. A material is a surface at partial alpha, so it is judged
|
|
731
|
+
* over the worst backdrop of the mode, not alone: the alpha floors are
|
|
732
|
+
* enforced by scripts/check-contrast.js (see scripts/contrast-pairs.js,
|
|
733
|
+
* MATERIALS) and by createTheme for an app's own theme. Each alpha is the
|
|
734
|
+
* smallest whole 2% that passes every pair its level carries, plus a little
|
|
735
|
+
* margin (floors against the page-colour chrome: thin 50 / 30, regular 82 / 47,
|
|
736
|
+
* thick 84 / 68, light / dark; light thick has 4 points because a tinted neutral (neutralChroma 0.08) needs 87; dark is judged on the dimmed backdrop, below):
|
|
737
|
+
* thin headline (a control on a bar: an icon, a short label;
|
|
738
|
+
* its focus ring is drawn outside it)
|
|
739
|
+
* regular + body, label, focus ring (bars, the tab bar, a floating sidebar)
|
|
740
|
+
* thick + description, caption (sheets, menus, modals, toasts, tooltips)
|
|
741
|
+
* Dark's worst backdrop is near-white, which its surfaces are close to. The
|
|
742
|
+
* dark filter therefore also dims the backdrop (--material-backdrop-brightness,
|
|
743
|
+
* 0.6: brightness() multiplies the sRGB channels), so the brightest thing
|
|
744
|
+
* that can be behind dark glass is near-white times 0.6, and the guard measures
|
|
745
|
+
* that. It is true to the rendering because the dimming and the translucent
|
|
746
|
+
* fill are switched together: every fallback below drops the filter and makes
|
|
747
|
+
* the fill opaque. Light is brightness(1), an identity.
|
|
748
|
+
* The fallbacks (reduced transparency, more contrast, forced colors, no
|
|
749
|
+
* backdrop-filter, data-materials="opaque") are below the .dark rule. */
|
|
750
|
+
--material-alpha-thin: 58%;
|
|
751
|
+
--material-alpha-regular: 84%;
|
|
752
|
+
--material-alpha-thick: 88%;
|
|
753
|
+
--color-material-thin: color-mix(in srgb, var(--color-surface-chrome) var(--material-alpha-thin), transparent);
|
|
754
|
+
--color-material-regular: color-mix(in srgb, var(--color-surface-chrome) var(--material-alpha-regular), transparent);
|
|
755
|
+
--color-material-thick: color-mix(in srgb, var(--color-surface-overlay) var(--material-alpha-thick), transparent);
|
|
756
|
+
--material-blur-thin: 16px;
|
|
757
|
+
--material-blur-regular: 24px;
|
|
758
|
+
--material-blur-thick: 32px;
|
|
759
|
+
--material-saturate: 180%;
|
|
760
|
+
/* What the filter does to the backdrop's brightness (a number): 1 in light,
|
|
761
|
+
* where it is an identity; below 1 in dark, which dims what shows through the
|
|
762
|
+
* glass. The alpha floors are measured on the dimmed backdrop. */
|
|
763
|
+
--material-backdrop-brightness: 1;
|
|
764
|
+
--material-filter-thin: blur(var(--material-blur-thin)) saturate(var(--material-saturate)) brightness(var(--material-backdrop-brightness));
|
|
765
|
+
--material-filter-regular: blur(var(--material-blur-regular)) saturate(var(--material-saturate)) brightness(var(--material-backdrop-brightness));
|
|
766
|
+
--material-filter-thick: blur(var(--material-blur-thick)) saturate(var(--material-saturate)) brightness(var(--material-backdrop-brightness));
|
|
767
|
+
/* The light top edge and the 1px outline, from the neutral ramp so a
|
|
768
|
+
* neutral override tints them. */
|
|
769
|
+
--color-material-highlight: color-mix(in srgb, var(--zabi-base-50) 60%, transparent);
|
|
770
|
+
--color-material-rim: color-mix(in srgb, var(--zabi-base-900) 9%, transparent);
|
|
771
|
+
/* Gradients (D99). Contrast is never measured against a gradient: each one
|
|
772
|
+
* is built from named stops, and scripts/contrast-pairs.js holds the worst
|
|
773
|
+
* stop of each to the pairs that sit on it. The strengths are the strongest
|
|
774
|
+
* whole 5% (canvas) and whole percent (control veils) at which every pair
|
|
775
|
+
* passes, capped at the prototype (canvas 85 / 45, top veil 22, bottom 14).
|
|
776
|
+
* Light canvas 55 (caption and link on the wash), dark canvas 25 (field edge
|
|
777
|
+
* on the wash).
|
|
778
|
+
*
|
|
779
|
+
* Control veils, light: darken-only. The top is 0%, so the fill at the top
|
|
780
|
+
* is the control's own colour: the label keeps its full contrast and an
|
|
781
|
+
* app's brand colour is not altered. Lightening the top of the brand-600
|
|
782
|
+
* fill took the white label (about 4.6:1) under 4.5:1, which is why it was
|
|
783
|
+
* 4% before. The bottom is 14% of base-950, the strongest whole percent that
|
|
784
|
+
* passes every pair (the label only gains from a darker fill); it is the
|
|
785
|
+
* depth. Dark is the same darken-only veil (the fill is a mid step with a white
|
|
786
|
+
* label, as in light); only the accent, whose dark fill is light under a dark
|
|
787
|
+
* label, keeps the lighter top, 22 / 6, in its own strengths.
|
|
788
|
+
*
|
|
789
|
+
* Canvas: two soft radial washes from brand 300 and accent 300 for glass to
|
|
790
|
+
* show something. A background-image only; .bg-canvas adds the page colour.
|
|
791
|
+
* The library does not paint it on body. */
|
|
792
|
+
--gradient-canvas-strength: 55%;
|
|
793
|
+
--color-canvas-wash-brand: color-mix(in srgb, var(--color-brand-300) var(--gradient-canvas-strength), transparent);
|
|
794
|
+
--color-canvas-wash-accent: color-mix(in srgb, var(--color-accent-300) var(--gradient-canvas-strength), transparent);
|
|
795
|
+
--gradient-canvas:
|
|
796
|
+
radial-gradient(90% 46% at 8% 0%, var(--color-canvas-wash-brand), transparent 70%),
|
|
797
|
+
radial-gradient(80% 40% at 100% 4%, var(--color-canvas-wash-accent), transparent 70%);
|
|
798
|
+
/* Solid controls: a veil laid over the control's own background-color, so
|
|
799
|
+
* hover and pressed fills keep working. The start and end tokens are the veil
|
|
800
|
+
* colours (translucent neutral, from the ramp so a neutral override tints
|
|
801
|
+
* them): a light one on top, a slight dark one at the bottom. It serves the
|
|
802
|
+
* three solid fills: primary, accent and danger (the veil is neutral, so
|
|
803
|
+
* `bg-control-gradient` is the danger one too). The accent has strengths of
|
|
804
|
+
* its own, which follow the shared ones, so an app whose accent carries a
|
|
805
|
+
* dark label can differ (createTheme does that when the pairs need it). */
|
|
806
|
+
--gradient-control-top-strength: 0%;
|
|
807
|
+
--gradient-control-bottom-strength: 14%;
|
|
808
|
+
--gradient-control-accent-top-strength: var(--gradient-control-top-strength);
|
|
809
|
+
--gradient-control-accent-bottom-strength: var(--gradient-control-bottom-strength);
|
|
810
|
+
--color-control-gradient-start: color-mix(in srgb, var(--zabi-base-50) var(--gradient-control-top-strength), transparent);
|
|
811
|
+
--color-control-gradient-end: color-mix(in srgb, var(--zabi-base-950) var(--gradient-control-bottom-strength), transparent);
|
|
812
|
+
--gradient-control: linear-gradient(to bottom, var(--color-control-gradient-start), var(--color-control-gradient-end));
|
|
813
|
+
--color-control-gradient-accent-start: color-mix(in srgb, var(--zabi-base-50) var(--gradient-control-accent-top-strength), transparent);
|
|
814
|
+
--color-control-gradient-accent-end: color-mix(in srgb, var(--zabi-base-950) var(--gradient-control-accent-bottom-strength), transparent);
|
|
815
|
+
--gradient-control-accent: linear-gradient(to bottom, var(--color-control-gradient-accent-start), var(--color-control-gradient-accent-end));
|
|
816
|
+
--shadow-control-highlight: inset 0 1px 0 color-mix(in srgb, var(--zabi-base-50) 40%, transparent);
|
|
425
817
|
/* Spacing */
|
|
426
|
-
--spacing-xs: 0.25rem
|
|
427
|
-
--spacing-sm: 0.5rem
|
|
428
|
-
--spacing-md: 1rem
|
|
429
|
-
--spacing-lg: 1.5rem
|
|
430
|
-
--spacing-xl: 2rem
|
|
431
|
-
--spacing-2xl: 3rem
|
|
818
|
+
--spacing-xs: 0.25rem;
|
|
819
|
+
--spacing-sm: 0.5rem;
|
|
820
|
+
--spacing-md: 1rem;
|
|
821
|
+
--spacing-lg: 1.5rem;
|
|
822
|
+
--spacing-xl: 2rem;
|
|
823
|
+
--spacing-2xl: 3rem;
|
|
432
824
|
/*
|
|
433
825
|
* Sizing names for w-* / min-w-* / max-w-*.
|
|
434
826
|
* Tailwind v4 resolves these utilities as --max-width-* (or --width-* / --min-width-*) → --spacing-* → --container-*.
|
|
@@ -436,65 +828,1724 @@
|
|
|
436
828
|
* instead of Tailwind's 32rem container size. These keys are checked before --spacing-*, so they restore
|
|
437
829
|
* the standard container scale while `p-lg`, `gap-md`, etc. keep using the spacing tokens.
|
|
438
830
|
*/
|
|
439
|
-
--max-width-xs: 20rem
|
|
440
|
-
--max-width-sm: 24rem
|
|
441
|
-
--max-width-md: 28rem
|
|
442
|
-
--max-width-lg: 32rem
|
|
443
|
-
--max-width-xl: 36rem
|
|
444
|
-
--max-width-2xl: 42rem
|
|
445
|
-
--width-xs: 20rem
|
|
446
|
-
--width-sm: 24rem
|
|
447
|
-
--width-md: 28rem
|
|
448
|
-
--width-lg: 32rem
|
|
449
|
-
--width-xl: 36rem
|
|
450
|
-
--width-2xl: 42rem
|
|
451
|
-
--min-width-xs: 20rem
|
|
452
|
-
--min-width-sm: 24rem
|
|
453
|
-
--min-width-md: 28rem
|
|
454
|
-
--min-width-lg: 32rem
|
|
455
|
-
--min-width-xl: 36rem
|
|
456
|
-
--min-width-2xl: 42rem
|
|
831
|
+
--max-width-xs: 20rem;
|
|
832
|
+
--max-width-sm: 24rem;
|
|
833
|
+
--max-width-md: 28rem;
|
|
834
|
+
--max-width-lg: 32rem;
|
|
835
|
+
--max-width-xl: 36rem;
|
|
836
|
+
--max-width-2xl: 42rem;
|
|
837
|
+
--width-xs: 20rem;
|
|
838
|
+
--width-sm: 24rem;
|
|
839
|
+
--width-md: 28rem;
|
|
840
|
+
--width-lg: 32rem;
|
|
841
|
+
--width-xl: 36rem;
|
|
842
|
+
--width-2xl: 42rem;
|
|
843
|
+
--min-width-xs: 20rem;
|
|
844
|
+
--min-width-sm: 24rem;
|
|
845
|
+
--min-width-md: 28rem;
|
|
846
|
+
--min-width-lg: 32rem;
|
|
847
|
+
--min-width-xl: 36rem;
|
|
848
|
+
--min-width-2xl: 42rem;
|
|
457
849
|
/* ----------------------------------------------------------------
|
|
458
850
|
* BORDER RADIUS — four values, chosen by ROLE, never by size.
|
|
459
851
|
* A large button is a bigger box with the same corner as a small one.
|
|
460
852
|
* Enforced by scripts/check-control-geometry.js.
|
|
461
853
|
* ---------------------------------------------------------------- */
|
|
462
|
-
--radius-control: 0.5rem
|
|
854
|
+
--radius-control: 0.5rem;
|
|
463
855
|
/* 8px — buttons, inputs, selects, toggles */
|
|
464
|
-
--radius-container: 0.75rem
|
|
856
|
+
--radius-container: 0.75rem;
|
|
465
857
|
/* 12px — cards, alerts, panels, list items */
|
|
466
|
-
--radius-overlay: 1rem
|
|
858
|
+
--radius-overlay: 1rem;
|
|
467
859
|
/* 16px — modals, sheets, menus, popovers */
|
|
468
|
-
--radius-pill: 9999px
|
|
860
|
+
--radius-pill: 9999px;
|
|
469
861
|
/* badges, avatars, status dots */
|
|
470
862
|
/* Legacy t-shirt radii. Kept so existing consumer overrides keep working;
|
|
471
863
|
* components must not use them. */
|
|
472
|
-
--radius-sm: 0.25rem
|
|
473
|
-
--radius-md: 0.375rem
|
|
474
|
-
--radius-lg: 0.5rem
|
|
475
|
-
--radius-xl: 0.75rem
|
|
864
|
+
--radius-sm: 0.25rem;
|
|
865
|
+
--radius-md: 0.375rem;
|
|
866
|
+
--radius-lg: 0.5rem;
|
|
867
|
+
--radius-xl: 0.75rem;
|
|
476
868
|
/* ----------------------------------------------------------------
|
|
477
869
|
* CONTROL GEOMETRY — one height scale shared by every form control, so a
|
|
478
870
|
* Button, Input, Select and IconButton of the same size are the same height
|
|
479
871
|
* and line up in a row. They previously rendered at 40/48/64, 38/46/50 and
|
|
480
872
|
* 32/40/48 respectively. Grid-aligned (8px).
|
|
481
873
|
* ---------------------------------------------------------------- */
|
|
482
|
-
--control-height-sm: 2rem
|
|
874
|
+
--control-height-sm: 2rem;
|
|
483
875
|
/* 32px */
|
|
484
|
-
--control-height-md: 2.5rem
|
|
876
|
+
--control-height-md: 2.5rem;
|
|
485
877
|
/* 40px */
|
|
486
|
-
--control-height-lg: 3rem
|
|
878
|
+
--control-height-lg: 3rem;
|
|
487
879
|
/* 48px */
|
|
488
880
|
/* Z-index */
|
|
489
|
-
--z-dropdown: 1000
|
|
490
|
-
--z-sticky: 1020
|
|
491
|
-
--z-fixed: 1030
|
|
492
|
-
--z-modal-backdrop: 1040
|
|
493
|
-
--z-modal: 1050
|
|
494
|
-
--z-popover: 1060
|
|
495
|
-
--z-tooltip: 1070
|
|
496
|
-
--z-toast: 1080
|
|
881
|
+
--z-dropdown: 1000;
|
|
882
|
+
--z-sticky: 1020;
|
|
883
|
+
--z-fixed: 1030;
|
|
884
|
+
--z-modal-backdrop: 1040;
|
|
885
|
+
--z-modal: 1050;
|
|
886
|
+
--z-popover: 1060;
|
|
887
|
+
--z-tooltip: 1070;
|
|
888
|
+
--z-toast: 1080;
|
|
497
889
|
/* Tooltip — elevated hint surface (Tooltip.svelte); arrow uses --color-tooltip-bg */
|
|
498
|
-
--color-tooltip-bg: var(--color-base-800)
|
|
499
|
-
--color-tooltip-fg: var(--color-base-50)
|
|
500
|
-
}
|
|
890
|
+
--color-tooltip-bg: var(--color-base-800);
|
|
891
|
+
--color-tooltip-fg: var(--color-base-50);
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
@layer base {
|
|
895
|
+
:root {
|
|
896
|
+
--tw-ring-offset-color: transparent;
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
@media (prefers-contrast: high) {
|
|
901
|
+
:root {
|
|
902
|
+
--color-tooltip-bg: CanvasText;
|
|
903
|
+
--color-tooltip-fg: Canvas;
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
body {
|
|
908
|
+
font-family: var(--font-family-sans);
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
@layer base {
|
|
912
|
+
h1,
|
|
913
|
+
h2,
|
|
914
|
+
h3,
|
|
915
|
+
h4,
|
|
916
|
+
h5,
|
|
917
|
+
h6 {
|
|
918
|
+
font-family: var(--font-family-heading);
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
:root,
|
|
923
|
+
[data-theme="light"] {
|
|
924
|
+
color-scheme: light;
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
@media (prefers-reduced-transparency: reduce), (prefers-contrast: more), (forced-colors: active) {
|
|
928
|
+
:root:root {
|
|
929
|
+
--color-material-thin: var(--color-surface-chrome);
|
|
930
|
+
--color-material-regular: var(--color-surface-chrome);
|
|
931
|
+
--color-material-thick: var(--color-surface-overlay);
|
|
932
|
+
--material-filter-thin: none;
|
|
933
|
+
--material-filter-regular: none;
|
|
934
|
+
--material-filter-thick: none;
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
939
|
+
:root:root {
|
|
940
|
+
--color-material-thin: var(--color-surface-chrome);
|
|
941
|
+
--color-material-regular: var(--color-surface-chrome);
|
|
942
|
+
--color-material-thick: var(--color-surface-overlay);
|
|
943
|
+
--material-filter-thin: none;
|
|
944
|
+
--material-filter-regular: none;
|
|
945
|
+
--material-filter-thick: none;
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
[data-materials="opaque"][data-materials="opaque"] {
|
|
950
|
+
--color-material-thin: var(--color-surface-chrome);
|
|
951
|
+
--color-material-regular: var(--color-surface-chrome);
|
|
952
|
+
--color-material-thick: var(--color-surface-overlay);
|
|
953
|
+
--material-filter-thin: none;
|
|
954
|
+
--material-filter-regular: none;
|
|
955
|
+
--material-filter-thick: none;
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
@supports (transition-timing-function: linear(0, 1)) {
|
|
959
|
+
:root {
|
|
960
|
+
--ease-spring: linear(0, 0.14, 0.409, 0.668, 0.859, 0.974, 1.029, 1.046, 1.041, 1.03, 1.017, 1.008, 1.002, 0.999, 0.998, 0.998, 1);
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
@media (prefers-reduced-motion: reduce) {
|
|
965
|
+
:root:root {
|
|
966
|
+
--duration-fast: 0s;
|
|
967
|
+
--duration-base: 0s;
|
|
968
|
+
--duration-moderate: 0s;
|
|
969
|
+
--duration-slow: 0s;
|
|
970
|
+
--ease-spring: var(--ease-standard);
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
.material-thin,
|
|
975
|
+
.material-regular,
|
|
976
|
+
.material-thick {
|
|
977
|
+
--tw-shadow:
|
|
978
|
+
inset 0 1px 0 var(--color-material-highlight),
|
|
979
|
+
inset 0 0 0 1px var(--color-material-rim),
|
|
980
|
+
var(--shadow-material);
|
|
981
|
+
box-shadow:
|
|
982
|
+
var(--tw-inset-shadow, 0 0 #0000),
|
|
983
|
+
var(--tw-inset-ring-shadow, 0 0 #0000),
|
|
984
|
+
var(--tw-ring-offset-shadow, 0 0 #0000),
|
|
985
|
+
var(--tw-ring-shadow, 0 0 #0000),
|
|
986
|
+
var(--tw-shadow);
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
.material-thin {
|
|
990
|
+
background-color: var(--color-material-thin);
|
|
991
|
+
-webkit-backdrop-filter: var(--material-filter-thin);
|
|
992
|
+
backdrop-filter: var(--material-filter-thin);
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
.material-regular {
|
|
996
|
+
background-color: var(--color-material-regular);
|
|
997
|
+
-webkit-backdrop-filter: var(--material-filter-regular);
|
|
998
|
+
backdrop-filter: var(--material-filter-regular);
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
.material-thick {
|
|
1002
|
+
background-color: var(--color-material-thick);
|
|
1003
|
+
-webkit-backdrop-filter: var(--material-filter-thick);
|
|
1004
|
+
backdrop-filter: var(--material-filter-thick);
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
@media (forced-colors: active) {
|
|
1008
|
+
.material-thin,
|
|
1009
|
+
.material-regular,
|
|
1010
|
+
.material-thick {
|
|
1011
|
+
outline: 1px solid CanvasText;
|
|
1012
|
+
outline-offset: -1px;
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
.material-layer-thick {
|
|
1017
|
+
isolation: isolate;
|
|
1018
|
+
background-color: transparent;
|
|
1019
|
+
--tw-shadow: var(--shadow-material);
|
|
1020
|
+
box-shadow:
|
|
1021
|
+
var(--tw-inset-shadow, 0 0 #0000),
|
|
1022
|
+
var(--tw-inset-ring-shadow, 0 0 #0000),
|
|
1023
|
+
var(--tw-ring-offset-shadow, 0 0 #0000),
|
|
1024
|
+
var(--tw-ring-shadow, 0 0 #0000),
|
|
1025
|
+
var(--tw-shadow);
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
.material-layer-thick::before {
|
|
1029
|
+
content: "";
|
|
1030
|
+
position: absolute;
|
|
1031
|
+
inset: 0;
|
|
1032
|
+
z-index: -1;
|
|
1033
|
+
border-radius: inherit;
|
|
1034
|
+
pointer-events: none;
|
|
1035
|
+
background-color: var(--color-material-thick);
|
|
1036
|
+
-webkit-backdrop-filter: var(--material-filter-thick);
|
|
1037
|
+
backdrop-filter: var(--material-filter-thick);
|
|
1038
|
+
box-shadow:
|
|
1039
|
+
inset 0 1px 0 var(--color-material-highlight),
|
|
1040
|
+
inset 0 0 0 1px var(--color-material-rim);
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
@media (forced-colors: active) {
|
|
1044
|
+
.material-layer-thick {
|
|
1045
|
+
outline: 1px solid CanvasText;
|
|
1046
|
+
outline-offset: -1px;
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
.material-layer-regular {
|
|
1051
|
+
isolation: isolate;
|
|
1052
|
+
background-color: transparent;
|
|
1053
|
+
--tw-shadow: var(--shadow-material);
|
|
1054
|
+
box-shadow:
|
|
1055
|
+
var(--tw-inset-shadow, 0 0 #0000),
|
|
1056
|
+
var(--tw-inset-ring-shadow, 0 0 #0000),
|
|
1057
|
+
var(--tw-ring-offset-shadow, 0 0 #0000),
|
|
1058
|
+
var(--tw-ring-shadow, 0 0 #0000),
|
|
1059
|
+
var(--tw-shadow);
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
.material-layer-regular::before {
|
|
1063
|
+
content: "";
|
|
1064
|
+
position: absolute;
|
|
1065
|
+
inset: 0;
|
|
1066
|
+
z-index: -1;
|
|
1067
|
+
border-radius: inherit;
|
|
1068
|
+
pointer-events: none;
|
|
1069
|
+
background-color: var(--color-material-regular);
|
|
1070
|
+
-webkit-backdrop-filter: var(--material-filter-regular);
|
|
1071
|
+
backdrop-filter: var(--material-filter-regular);
|
|
1072
|
+
box-shadow:
|
|
1073
|
+
inset 0 1px 0 var(--color-material-highlight),
|
|
1074
|
+
inset 0 0 0 1px var(--color-material-rim);
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
@media (forced-colors: active) {
|
|
1078
|
+
.material-layer-regular {
|
|
1079
|
+
outline: 1px solid CanvasText;
|
|
1080
|
+
outline-offset: -1px;
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
.material-bar {
|
|
1085
|
+
isolation: isolate;
|
|
1086
|
+
background-color: transparent;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
.material-bar::before {
|
|
1090
|
+
content: "";
|
|
1091
|
+
position: absolute;
|
|
1092
|
+
inset: 0;
|
|
1093
|
+
z-index: -1;
|
|
1094
|
+
box-sizing: border-box;
|
|
1095
|
+
pointer-events: none;
|
|
1096
|
+
background-color: var(--color-bar);
|
|
1097
|
+
border: 0 solid transparent;
|
|
1098
|
+
border-bottom-width: 1px;
|
|
1099
|
+
transition-property: background-color, border-color;
|
|
1100
|
+
transition-duration: var(--duration-moderate);
|
|
1101
|
+
transition-timing-function: var(--ease-standard);
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
.material-bar[data-bar-edge="bottom"]::before {
|
|
1105
|
+
border-bottom-width: 0;
|
|
1106
|
+
border-top-width: 1px;
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
.material-bar[data-scrolled-under="true"]::before {
|
|
1110
|
+
background-color: var(--color-material-regular);
|
|
1111
|
+
-webkit-backdrop-filter: var(--material-filter-regular);
|
|
1112
|
+
backdrop-filter: var(--material-filter-regular);
|
|
1113
|
+
border-color: var(--color-bar-border);
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
@media (forced-colors: active) {
|
|
1117
|
+
.material-bar[data-scrolled-under="true"]::before {
|
|
1118
|
+
border-color: CanvasText;
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
.bg-canvas {
|
|
1123
|
+
background-color: var(--color-surface-base);
|
|
1124
|
+
background-image: var(--gradient-canvas);
|
|
1125
|
+
background-repeat: no-repeat;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
.bg-control-gradient,
|
|
1129
|
+
.bg-control-gradient-accent {
|
|
1130
|
+
--tw-inset-shadow: var(--shadow-control-highlight);
|
|
1131
|
+
box-shadow:
|
|
1132
|
+
var(--tw-inset-shadow, 0 0 #0000),
|
|
1133
|
+
var(--tw-inset-ring-shadow, 0 0 #0000),
|
|
1134
|
+
var(--tw-ring-offset-shadow, 0 0 #0000),
|
|
1135
|
+
var(--tw-ring-shadow, 0 0 #0000),
|
|
1136
|
+
var(--tw-shadow, 0 0 #0000);
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
.bg-control-gradient {
|
|
1140
|
+
background-image: var(--gradient-control);
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
.bg-control-gradient-accent {
|
|
1144
|
+
background-image: var(--gradient-control-accent);
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
.ring-toggle-track {
|
|
1148
|
+
--tw-inset-ring-shadow: inset 0 0 0 1px var(--color-toggle-track-border);
|
|
1149
|
+
box-shadow:
|
|
1150
|
+
var(--tw-inset-shadow, 0 0 #0000),
|
|
1151
|
+
var(--tw-inset-ring-shadow, 0 0 #0000),
|
|
1152
|
+
var(--tw-ring-offset-shadow, 0 0 #0000),
|
|
1153
|
+
var(--tw-ring-shadow, 0 0 #0000),
|
|
1154
|
+
var(--tw-shadow, 0 0 #0000);
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
.rounded-button {
|
|
1158
|
+
border-radius: var(--zabi-button-radius, var(--radius-control));
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
.font-button {
|
|
1162
|
+
font-weight: var(--zabi-button-font-weight, 500);
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
.font-button-strong {
|
|
1166
|
+
font-weight: var(--zabi-button-font-weight, 600);
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
.bg-base-50 {
|
|
1170
|
+
background-color: var(--color-base-50);
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
.bg-base-75 {
|
|
1174
|
+
background-color: var(--color-base-75);
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
.bg-base-100 {
|
|
1178
|
+
background-color: var(--color-base-100);
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
.bg-base-150 {
|
|
1182
|
+
background-color: var(--color-base-150);
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
.bg-base-200 {
|
|
1186
|
+
background-color: var(--color-base-200);
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
.bg-base-250 {
|
|
1190
|
+
background-color: var(--color-base-250);
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
.bg-base-300 {
|
|
1194
|
+
background-color: var(--color-base-300);
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
.bg-base-350 {
|
|
1198
|
+
background-color: var(--color-base-350);
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
.bg-base-400 {
|
|
1202
|
+
background-color: var(--color-base-400);
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
.bg-base-450 {
|
|
1206
|
+
background-color: var(--color-base-450);
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
.bg-base-500 {
|
|
1210
|
+
background-color: var(--color-base-500);
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
.bg-base-550 {
|
|
1214
|
+
background-color: var(--color-base-550);
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
.bg-base-600 {
|
|
1218
|
+
background-color: var(--color-base-600);
|
|
1219
|
+
}
|
|
1220
|
+
|
|
1221
|
+
.bg-base-650 {
|
|
1222
|
+
background-color: var(--color-base-650);
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
.bg-base-700 {
|
|
1226
|
+
background-color: var(--color-base-700);
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
.bg-base-750 {
|
|
1230
|
+
background-color: var(--color-base-750);
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
.bg-base-800 {
|
|
1234
|
+
background-color: var(--color-base-800);
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
.bg-base-850 {
|
|
1238
|
+
background-color: var(--color-base-850);
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
.bg-base-900 {
|
|
1242
|
+
background-color: var(--color-base-900);
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
.bg-base-925 {
|
|
1246
|
+
background-color: var(--color-base-925);
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
.bg-base-950 {
|
|
1250
|
+
background-color: var(--color-base-950);
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
@media (hover: hover) {
|
|
1254
|
+
.hover\:bg-base-50:hover {
|
|
1255
|
+
background-color: var(--color-base-50);
|
|
1256
|
+
}
|
|
1257
|
+
|
|
1258
|
+
.hover\:bg-base-75:hover {
|
|
1259
|
+
background-color: var(--color-base-75);
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
.hover\:bg-base-100:hover {
|
|
1263
|
+
background-color: var(--color-base-100);
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
.hover\:bg-base-150:hover {
|
|
1267
|
+
background-color: var(--color-base-150);
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
.hover\:bg-base-200:hover {
|
|
1271
|
+
background-color: var(--color-base-200);
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
.hover\:bg-base-250:hover {
|
|
1275
|
+
background-color: var(--color-base-250);
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
.hover\:bg-base-300:hover {
|
|
1279
|
+
background-color: var(--color-base-300);
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
.hover\:bg-base-350:hover {
|
|
1283
|
+
background-color: var(--color-base-350);
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
.hover\:bg-base-400:hover {
|
|
1287
|
+
background-color: var(--color-base-400);
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
.hover\:bg-base-450:hover {
|
|
1291
|
+
background-color: var(--color-base-450);
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
.hover\:bg-base-500:hover {
|
|
1295
|
+
background-color: var(--color-base-500);
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
.hover\:bg-base-550:hover {
|
|
1299
|
+
background-color: var(--color-base-550);
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
.hover\:bg-base-600:hover {
|
|
1303
|
+
background-color: var(--color-base-600);
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
.hover\:bg-base-650:hover {
|
|
1307
|
+
background-color: var(--color-base-650);
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
.hover\:bg-base-700:hover {
|
|
1311
|
+
background-color: var(--color-base-700);
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
.hover\:bg-base-750:hover {
|
|
1315
|
+
background-color: var(--color-base-750);
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
.hover\:bg-base-800:hover {
|
|
1319
|
+
background-color: var(--color-base-800);
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
.hover\:bg-base-850:hover {
|
|
1323
|
+
background-color: var(--color-base-850);
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
.hover\:bg-base-900:hover {
|
|
1327
|
+
background-color: var(--color-base-900);
|
|
1328
|
+
}
|
|
1329
|
+
|
|
1330
|
+
.hover\:bg-base-925:hover {
|
|
1331
|
+
background-color: var(--color-base-925);
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
.hover\:bg-base-950:hover {
|
|
1335
|
+
background-color: var(--color-base-950);
|
|
1336
|
+
}
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
.bg-card {
|
|
1340
|
+
background-color: var(--color-card);
|
|
1341
|
+
}
|
|
1342
|
+
|
|
1343
|
+
.bg-toggle-thumb {
|
|
1344
|
+
background-color: var(--color-toggle-thumb, var(--color-toggle-knob));
|
|
1345
|
+
}
|
|
1346
|
+
|
|
1347
|
+
.bg-toggle-thumb-checked {
|
|
1348
|
+
background-color: var(--color-toggle-thumb-checked, var(--color-toggle-thumb, var(--color-toggle-knob-checked)));
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
.bg-card-flat {
|
|
1352
|
+
background-color: var(--color-card-flat);
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1355
|
+
@media (hover: hover) {
|
|
1356
|
+
.hover\:bg-card-hover:hover {
|
|
1357
|
+
background-color: var(--color-card-hover);
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
.hover\:bg-card-flat-hover:hover {
|
|
1361
|
+
background-color: var(--color-card-flat-hover);
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
.bg-surface-1 {
|
|
1366
|
+
background-color: var(--color-surface-1);
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
.bg-surface-2 {
|
|
1370
|
+
background-color: var(--color-surface-2);
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
.bg-surface-3 {
|
|
1374
|
+
background-color: var(--color-surface-3);
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
.bg-surface-4 {
|
|
1378
|
+
background-color: var(--color-surface-4);
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
.bg-overlay {
|
|
1382
|
+
background-color: var(--color-overlay);
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
.bg-input {
|
|
1386
|
+
background-color: var(--color-input);
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
@media (hover: hover) {
|
|
1390
|
+
.hover\:bg-input-hover:hover {
|
|
1391
|
+
background-color: var(--color-input-hover);
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1395
|
+
.focus-visible\:bg-input-focus:focus-visible {
|
|
1396
|
+
background-color: var(--color-input-focus);
|
|
1397
|
+
}
|
|
1398
|
+
|
|
1399
|
+
.active\:bg-input-focus:active {
|
|
1400
|
+
background-color: var(--color-input-focus);
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
.active\:bg-input-hover:active {
|
|
1404
|
+
background-color: var(--color-input-hover);
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
.active\:bg-input-active:active {
|
|
1408
|
+
background-color: var(--color-input-active, var(--color-input-hover));
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
.active\:bg-card-active:active {
|
|
1412
|
+
background-color: var(--color-card-active);
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
.active\:bg-card-flat-active:active {
|
|
1416
|
+
background-color: var(--color-card-flat-active);
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
.disabled\:bg-input-disabled:disabled {
|
|
1420
|
+
background-color: var(--color-input-disabled);
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
.bg-page {
|
|
1424
|
+
background-color: var(--color-page);
|
|
1425
|
+
}
|
|
1426
|
+
|
|
1427
|
+
.bg-brand-50 {
|
|
1428
|
+
background-color: var(--color-brand-50);
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
.bg-brand-100 {
|
|
1432
|
+
background-color: var(--color-brand-100);
|
|
1433
|
+
}
|
|
1434
|
+
|
|
1435
|
+
.bg-brand-200 {
|
|
1436
|
+
background-color: var(--color-brand-200);
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
.bg-brand-300 {
|
|
1440
|
+
background-color: var(--color-brand-300);
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
.bg-brand-400 {
|
|
1444
|
+
background-color: var(--color-brand-400);
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
.bg-brand-500 {
|
|
1448
|
+
background-color: var(--color-brand-500);
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
.bg-brand-600 {
|
|
1452
|
+
background-color: var(--color-brand-600);
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
.bg-brand-700 {
|
|
1456
|
+
background-color: var(--color-brand-700);
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
.bg-brand-800 {
|
|
1460
|
+
background-color: var(--color-brand-800);
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
.bg-brand-900 {
|
|
1464
|
+
background-color: var(--color-brand-900);
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
.bg-brand-950 {
|
|
1468
|
+
background-color: var(--color-brand-950);
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
@media (hover: hover) {
|
|
1472
|
+
.hover\:bg-brand-50:hover {
|
|
1473
|
+
background-color: var(--color-brand-50);
|
|
1474
|
+
}
|
|
1475
|
+
|
|
1476
|
+
.hover\:bg-brand-100:hover {
|
|
1477
|
+
background-color: var(--color-brand-100);
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1480
|
+
.hover\:bg-brand-200:hover {
|
|
1481
|
+
background-color: var(--color-brand-200);
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1485
|
+
.text-brand-50 {
|
|
1486
|
+
color: var(--color-brand-50);
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
.text-brand-100 {
|
|
1490
|
+
color: var(--color-brand-100);
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1493
|
+
.text-brand-200 {
|
|
1494
|
+
color: var(--color-brand-200);
|
|
1495
|
+
}
|
|
1496
|
+
|
|
1497
|
+
.text-brand-300 {
|
|
1498
|
+
color: var(--color-brand-300);
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
.text-brand-400 {
|
|
1502
|
+
color: var(--color-brand-400);
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
.text-brand-500 {
|
|
1506
|
+
color: var(--color-brand-500);
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
.text-brand-600 {
|
|
1510
|
+
color: var(--color-brand-600);
|
|
1511
|
+
}
|
|
1512
|
+
|
|
1513
|
+
.text-brand-700 {
|
|
1514
|
+
color: var(--color-brand-700);
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1517
|
+
.text-brand-800 {
|
|
1518
|
+
color: var(--color-brand-800);
|
|
1519
|
+
}
|
|
1520
|
+
|
|
1521
|
+
.text-brand-900 {
|
|
1522
|
+
color: var(--color-brand-900);
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
.text-brand-950 {
|
|
1526
|
+
color: var(--color-brand-950);
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1529
|
+
.border-brand-50 {
|
|
1530
|
+
border-color: var(--color-brand-50);
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1533
|
+
.border-brand-100 {
|
|
1534
|
+
border-color: var(--color-brand-100);
|
|
1535
|
+
}
|
|
1536
|
+
|
|
1537
|
+
.border-brand-500 {
|
|
1538
|
+
border-color: var(--color-brand-500);
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
.border-brand-600 {
|
|
1542
|
+
border-color: var(--color-brand-600);
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
.text-headline {
|
|
1546
|
+
color: var(--color-headline);
|
|
1547
|
+
}
|
|
1548
|
+
|
|
1549
|
+
.text-body {
|
|
1550
|
+
color: var(--color-body);
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
.text-description {
|
|
1554
|
+
color: var(--color-description);
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
.text-caption {
|
|
1558
|
+
color: var(--color-caption);
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1561
|
+
.text-input-placeholder {
|
|
1562
|
+
color: var(--color-input-placeholder);
|
|
1563
|
+
}
|
|
1564
|
+
|
|
1565
|
+
.placeholder\:text-input-placeholder:disabled::placeholder {
|
|
1566
|
+
color: var(--color-action-disabled-text);
|
|
1567
|
+
}
|
|
1568
|
+
|
|
1569
|
+
.text-label {
|
|
1570
|
+
color: var(--color-label);
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1573
|
+
.text-link {
|
|
1574
|
+
color: var(--color-link);
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
@media (hover: hover) {
|
|
1578
|
+
.text-link:hover {
|
|
1579
|
+
color: var(--color-link-hover);
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
|
|
1583
|
+
.text-link:active {
|
|
1584
|
+
color: var(--color-link-hover);
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
.text-nav-menu-item {
|
|
1588
|
+
color: var(--color-nav-menu-item);
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
@media (hover: hover) {
|
|
1592
|
+
.hover\:text-nav-menu-item-hover:hover {
|
|
1593
|
+
color: var(--color-nav-menu-item-hover);
|
|
1594
|
+
}
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
.text-nav-menu-item-active {
|
|
1598
|
+
color: var(--color-nav-menu-item-active);
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1601
|
+
.bg-nav-menu-hover {
|
|
1602
|
+
background-color: var(--color-nav-menu-hover);
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
.bg-nav-menu-active {
|
|
1606
|
+
background-color: var(--color-nav-menu-active);
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1609
|
+
.active\:bg-nav-menu-active-hover:active {
|
|
1610
|
+
background-color: var(--color-nav-menu-active-hover);
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
.bg-nav-menu-item-active {
|
|
1614
|
+
background-color: var(--color-nav-menu-item-active);
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
.bg-tabbar-active {
|
|
1618
|
+
background-color: var(--color-tabbar-active);
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1621
|
+
.bg-bar-brand {
|
|
1622
|
+
background-color: var(--color-bar-brand);
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1625
|
+
.border-bar {
|
|
1626
|
+
border-color: var(--color-bar-border);
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
.text-success {
|
|
1630
|
+
color: var(--color-success-text);
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
.text-warning {
|
|
1634
|
+
color: var(--color-warning-text);
|
|
1635
|
+
}
|
|
1636
|
+
|
|
1637
|
+
.text-error {
|
|
1638
|
+
color: var(--color-error-text);
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1641
|
+
.text-info {
|
|
1642
|
+
color: var(--color-info-text);
|
|
1643
|
+
}
|
|
1644
|
+
|
|
1645
|
+
.text-neutral {
|
|
1646
|
+
color: var(--color-neutral-text);
|
|
1647
|
+
}
|
|
1648
|
+
|
|
1649
|
+
.text-energetic {
|
|
1650
|
+
color: var(--color-energetic-text);
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
.text-accent {
|
|
1654
|
+
color: var(--color-accent-text);
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1657
|
+
.text-inverse {
|
|
1658
|
+
color: var(--color-inverse);
|
|
1659
|
+
}
|
|
1660
|
+
|
|
1661
|
+
.text-disabled {
|
|
1662
|
+
color: var(--color-disabled);
|
|
1663
|
+
}
|
|
1664
|
+
|
|
1665
|
+
.border-border {
|
|
1666
|
+
border-color: var(--color-border);
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
.border-border-medium {
|
|
1670
|
+
border-color: var(--color-border-medium);
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
.border-primary {
|
|
1674
|
+
border-color: var(--color-border);
|
|
1675
|
+
}
|
|
1676
|
+
|
|
1677
|
+
.border-secondary {
|
|
1678
|
+
border-color: var(--color-border-secondary);
|
|
1679
|
+
}
|
|
1680
|
+
|
|
1681
|
+
@media (hover: hover) {
|
|
1682
|
+
.border-hover:hover {
|
|
1683
|
+
border-color: var(--color-border-hover);
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
.border-disabled:disabled {
|
|
1688
|
+
border-color: var(--color-border-disabled);
|
|
1689
|
+
}
|
|
1690
|
+
|
|
1691
|
+
.bg-success {
|
|
1692
|
+
background-color: var(--color-success);
|
|
1693
|
+
}
|
|
1694
|
+
|
|
1695
|
+
.bg-warning {
|
|
1696
|
+
background-color: var(--color-warning);
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
.bg-error {
|
|
1700
|
+
background-color: var(--color-error);
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
.bg-info {
|
|
1704
|
+
background-color: var(--color-info);
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
.bg-neutral {
|
|
1708
|
+
background-color: var(--color-neutral);
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
.bg-energetic {
|
|
1712
|
+
background-color: var(--color-energetic);
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
.bg-accent {
|
|
1716
|
+
background-color: var(--color-accent);
|
|
1717
|
+
}
|
|
1718
|
+
|
|
1719
|
+
.bg-secondary {
|
|
1720
|
+
background-color: var(--color-secondary);
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
.border-success {
|
|
1724
|
+
border-color: var(--color-success);
|
|
1725
|
+
}
|
|
1726
|
+
|
|
1727
|
+
.border-warning {
|
|
1728
|
+
border-color: var(--color-warning);
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
.border-error {
|
|
1732
|
+
border-color: var(--color-error);
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
.border-info {
|
|
1736
|
+
border-color: var(--color-info);
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
.border-neutral {
|
|
1740
|
+
border-color: var(--color-neutral);
|
|
1741
|
+
}
|
|
1742
|
+
|
|
1743
|
+
.border-energetic {
|
|
1744
|
+
border-color: var(--color-energetic);
|
|
1745
|
+
}
|
|
1746
|
+
|
|
1747
|
+
.border-accent {
|
|
1748
|
+
border-color: var(--color-accent);
|
|
1749
|
+
}
|
|
1750
|
+
|
|
1751
|
+
.border-secondary {
|
|
1752
|
+
border-color: var(--color-secondary);
|
|
1753
|
+
}
|
|
1754
|
+
|
|
1755
|
+
@layer components {
|
|
1756
|
+
.focus-ring {
|
|
1757
|
+
--zabi-focus-ring-color: var(--color-focus-ring);
|
|
1758
|
+
--zabi-focus-ring-offset-color: var(--color-focus-ring-offset);
|
|
1759
|
+
outline: none;
|
|
1760
|
+
}
|
|
1761
|
+
|
|
1762
|
+
.focus-ring:focus-visible {
|
|
1763
|
+
outline: none;
|
|
1764
|
+
--tw-ring-offset-shadow:
|
|
1765
|
+
0 0 0 2px var(--zabi-focus-ring-offset-color),
|
|
1766
|
+
0 0 0 4px var(--zabi-focus-ring-color);
|
|
1767
|
+
box-shadow:
|
|
1768
|
+
var(--tw-inset-shadow, 0 0 #0000),
|
|
1769
|
+
var(--tw-inset-ring-shadow, 0 0 #0000),
|
|
1770
|
+
var(--tw-ring-offset-shadow),
|
|
1771
|
+
var(--tw-ring-shadow, 0 0 #0000),
|
|
1772
|
+
var(--tw-shadow, 0 0 #0000);
|
|
1773
|
+
}
|
|
1774
|
+
.focus-ring--nav {
|
|
1775
|
+
--zabi-focus-ring-color: var(--color-nav-menu-focus);
|
|
1776
|
+
}
|
|
1777
|
+
.focus-ring--danger {
|
|
1778
|
+
--zabi-focus-ring-color: var(--color-focus-ring-danger, var(--color-error));
|
|
1779
|
+
}
|
|
1780
|
+
.focus-ring--muted {
|
|
1781
|
+
--zabi-focus-ring-color: var(--color-focus-ring-muted, var(--color-base-500));
|
|
1782
|
+
}
|
|
1783
|
+
:where(:has(> .on-brand, > .on-accent, > .on-fill):not(.on-brand, .on-accent, .on-fill, .on-brand *, .on-accent *, .on-fill *)) {
|
|
1784
|
+
--zabi-theme-headline: var(--color-headline);
|
|
1785
|
+
--zabi-theme-body: var(--color-body);
|
|
1786
|
+
--zabi-theme-label: var(--color-label);
|
|
1787
|
+
--zabi-theme-description: var(--color-description);
|
|
1788
|
+
--zabi-theme-caption: var(--color-caption);
|
|
1789
|
+
--zabi-theme-link: var(--color-link);
|
|
1790
|
+
--zabi-theme-link-hover: var(--color-link-hover);
|
|
1791
|
+
--zabi-theme-border: var(--color-border);
|
|
1792
|
+
--zabi-theme-border-medium: var(--color-border-medium);
|
|
1793
|
+
--zabi-theme-border-strong: var(--color-border-strong);
|
|
1794
|
+
--zabi-theme-control-border: var(--color-control-border);
|
|
1795
|
+
--zabi-theme-action-outline-border: var(--color-action-outline-border);
|
|
1796
|
+
--zabi-theme-action-outline-border-hover: var(--color-action-outline-border-hover);
|
|
1797
|
+
--zabi-theme-focus-ring: var(--color-focus-ring);
|
|
1798
|
+
--zabi-theme-focus-ring-muted: var(--color-focus-ring-muted);
|
|
1799
|
+
--zabi-theme-nav-menu-focus: var(--color-nav-menu-focus);
|
|
1800
|
+
--zabi-theme-focus-ring-offset: var(--color-focus-ring-offset);
|
|
1801
|
+
--zabi-theme-focus-ring-danger: var(--color-focus-ring-danger, var(--color-error));
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1804
|
+
.on-brand {
|
|
1805
|
+
color: var(--color-on-brand);
|
|
1806
|
+
--color-focus-ring: var(--color-on-brand);
|
|
1807
|
+
--color-focus-ring-muted: var(--color-on-brand);
|
|
1808
|
+
--color-nav-menu-focus: var(--color-on-brand);
|
|
1809
|
+
--color-focus-ring-offset: var(--color-action-primary);
|
|
1810
|
+
--color-focus-ring-danger: var(--color-on-brand);
|
|
1811
|
+
--color-headline: var(--color-on-brand);
|
|
1812
|
+
--color-body: var(--color-on-brand);
|
|
1813
|
+
--color-label: var(--color-on-brand);
|
|
1814
|
+
--color-description: var(--color-on-brand);
|
|
1815
|
+
--color-caption: var(--color-on-brand);
|
|
1816
|
+
--color-link: var(--color-on-brand);
|
|
1817
|
+
--color-link-hover: var(--color-on-brand);
|
|
1818
|
+
--color-border: var(--color-on-brand);
|
|
1819
|
+
--color-border-medium: var(--color-on-brand);
|
|
1820
|
+
--color-border-strong: var(--color-on-brand);
|
|
1821
|
+
--color-control-border: var(--color-on-brand);
|
|
1822
|
+
--color-action-outline-border: var(--color-on-brand);
|
|
1823
|
+
--color-action-outline-border-hover: var(--color-on-brand);
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
.on-accent {
|
|
1827
|
+
color: var(--color-on-accent);
|
|
1828
|
+
--color-focus-ring: var(--color-on-accent);
|
|
1829
|
+
--color-focus-ring-muted: var(--color-on-accent);
|
|
1830
|
+
--color-nav-menu-focus: var(--color-on-accent);
|
|
1831
|
+
--color-focus-ring-offset: var(--color-accent);
|
|
1832
|
+
--color-focus-ring-danger: var(--color-on-accent);
|
|
1833
|
+
--color-headline: var(--color-on-accent);
|
|
1834
|
+
--color-body: var(--color-on-accent);
|
|
1835
|
+
--color-label: var(--color-on-accent);
|
|
1836
|
+
--color-description: var(--color-on-accent);
|
|
1837
|
+
--color-caption: var(--color-on-accent);
|
|
1838
|
+
--color-link: var(--color-on-accent);
|
|
1839
|
+
--color-link-hover: var(--color-on-accent);
|
|
1840
|
+
--color-border: var(--color-on-accent);
|
|
1841
|
+
--color-border-medium: var(--color-on-accent);
|
|
1842
|
+
--color-border-strong: var(--color-on-accent);
|
|
1843
|
+
--color-control-border: var(--color-on-accent);
|
|
1844
|
+
--color-action-outline-border: var(--color-on-accent);
|
|
1845
|
+
--color-action-outline-border-hover: var(--color-on-accent);
|
|
1846
|
+
}
|
|
1847
|
+
.on-fill {
|
|
1848
|
+
color: var(--zabi-on-fill, currentColor);
|
|
1849
|
+
--color-focus-ring: var(--zabi-on-fill, currentColor);
|
|
1850
|
+
--color-focus-ring-muted: var(--zabi-on-fill, currentColor);
|
|
1851
|
+
--color-nav-menu-focus: var(--zabi-on-fill, currentColor);
|
|
1852
|
+
--color-focus-ring-offset: transparent;
|
|
1853
|
+
--color-focus-ring-danger: var(--zabi-on-fill, currentColor);
|
|
1854
|
+
--color-headline: var(--zabi-on-fill, currentColor);
|
|
1855
|
+
--color-body: var(--zabi-on-fill, currentColor);
|
|
1856
|
+
--color-label: var(--zabi-on-fill, currentColor);
|
|
1857
|
+
--color-description: var(--zabi-on-fill, currentColor);
|
|
1858
|
+
--color-caption: var(--zabi-on-fill, currentColor);
|
|
1859
|
+
--color-link: var(--zabi-on-fill, currentColor);
|
|
1860
|
+
--color-link-hover: var(--zabi-on-fill, currentColor);
|
|
1861
|
+
--color-border: var(--zabi-on-fill, currentColor);
|
|
1862
|
+
--color-border-medium: var(--zabi-on-fill, currentColor);
|
|
1863
|
+
--color-border-strong: var(--zabi-on-fill, currentColor);
|
|
1864
|
+
--color-control-border: var(--zabi-on-fill, currentColor);
|
|
1865
|
+
--color-action-outline-border: var(--zabi-on-fill, currentColor);
|
|
1866
|
+
--color-action-outline-border-hover: var(--zabi-on-fill, currentColor);
|
|
1867
|
+
}
|
|
1868
|
+
:where(.on-brand, .on-accent, .on-fill) {
|
|
1869
|
+
--zabi-inv-primary: var(--color-action-primary);
|
|
1870
|
+
--zabi-inv-primary-hover: var(--color-action-primary-hover);
|
|
1871
|
+
--zabi-inv-primary-active: var(--color-action-primary-active);
|
|
1872
|
+
--zabi-inv-primary-text: var(--color-action-primary-text);
|
|
1873
|
+
--zabi-inv-accent: var(--color-accent);
|
|
1874
|
+
--zabi-inv-accent-hover: var(--color-accent-hover);
|
|
1875
|
+
--zabi-inv-accent-active: var(--color-accent-active);
|
|
1876
|
+
--zabi-inv-accent-text: var(--color-on-accent);
|
|
1877
|
+
--zabi-inv-secondary: var(--color-action-secondary);
|
|
1878
|
+
--zabi-inv-secondary-hover: var(--color-action-secondary-hover);
|
|
1879
|
+
--zabi-inv-secondary-active: var(--color-action-secondary-active);
|
|
1880
|
+
}
|
|
1881
|
+
:where(.on-brand) {
|
|
1882
|
+
--zabi-inv-secondary: rgba(9, 9, 11, 0.1);
|
|
1883
|
+
--zabi-inv-secondary-hover: rgba(9, 9, 11, 0.15);
|
|
1884
|
+
--zabi-inv-secondary-active: rgba(9, 9, 11, 0.2);
|
|
1885
|
+
}
|
|
1886
|
+
:where(.on-brand) {
|
|
1887
|
+
--zabi-inv-primary: var(--color-on-brand);
|
|
1888
|
+
--zabi-inv-primary-hover: color-mix(in srgb, var(--color-on-brand) 88%, var(--color-action-primary));
|
|
1889
|
+
--zabi-inv-primary-active: color-mix(in srgb, var(--color-on-brand) 76%, var(--color-action-primary));
|
|
1890
|
+
--zabi-inv-primary-text: var(--color-action-primary);
|
|
1891
|
+
--zabi-inv-star: var(--color-on-brand);
|
|
1892
|
+
}
|
|
1893
|
+
:where(.on-accent) {
|
|
1894
|
+
--zabi-inv-accent: var(--color-on-accent);
|
|
1895
|
+
--zabi-inv-accent-hover: color-mix(in srgb, var(--color-on-accent) 88%, var(--color-accent));
|
|
1896
|
+
--zabi-inv-accent-active: color-mix(in srgb, var(--color-on-accent) 76%, var(--color-accent));
|
|
1897
|
+
--zabi-inv-accent-text: var(--color-accent);
|
|
1898
|
+
--zabi-inv-star: var(--color-on-accent);
|
|
1899
|
+
}
|
|
1900
|
+
:where(.on-fill) {
|
|
1901
|
+
--zabi-inv-primary: var(--zabi-on-fill, currentColor);
|
|
1902
|
+
--zabi-inv-primary-hover: color-mix(in srgb, var(--zabi-on-fill, currentColor) 88%, var(--zabi-fill, var(--color-card)));
|
|
1903
|
+
--zabi-inv-primary-active: color-mix(in srgb, var(--zabi-on-fill, currentColor) 76%, var(--zabi-fill, var(--color-card)));
|
|
1904
|
+
--zabi-inv-primary-text: var(--zabi-fill, var(--color-card));
|
|
1905
|
+
--zabi-inv-star: var(--zabi-on-fill, currentColor);
|
|
1906
|
+
}
|
|
1907
|
+
:where(.bg-action-primary:not(.on-brand, .on-accent, .on-fill)):where(.on-brand *, .on-accent *, .on-fill *) {
|
|
1908
|
+
--color-action-primary: var(--zabi-inv-primary);
|
|
1909
|
+
--color-action-primary-hover: var(--zabi-inv-primary-hover);
|
|
1910
|
+
--color-action-primary-active: var(--zabi-inv-primary-active);
|
|
1911
|
+
--color-action-primary-text: var(--zabi-inv-primary-text);
|
|
1912
|
+
}
|
|
1913
|
+
:where(.bg-action-secondary, .bg-action-secondary-active):where(.on-brand *, .on-accent *, .on-fill *) {
|
|
1914
|
+
--color-action-secondary: var(--zabi-inv-secondary);
|
|
1915
|
+
--color-action-secondary-hover: var(--zabi-inv-secondary-hover);
|
|
1916
|
+
--color-action-secondary-active: var(--zabi-inv-secondary-active);
|
|
1917
|
+
}
|
|
1918
|
+
:where(.bg-accent:not(.on-brand, .on-accent, .on-fill)):where(.on-brand *, .on-accent *, .on-fill *) {
|
|
1919
|
+
--color-accent: var(--zabi-inv-accent);
|
|
1920
|
+
--color-accent-hover: var(--zabi-inv-accent-hover);
|
|
1921
|
+
--color-accent-active: var(--zabi-inv-accent-active);
|
|
1922
|
+
--color-on-accent: var(--zabi-inv-accent-text);
|
|
1923
|
+
}
|
|
1924
|
+
:where(.rating):where(.on-brand *, .on-accent *, .on-fill *) {
|
|
1925
|
+
--zabi-rating-on: var(--zabi-inv-star);
|
|
1926
|
+
}
|
|
1927
|
+
:where(.on-brand, .on-accent, .on-fill)
|
|
1928
|
+
:where(
|
|
1929
|
+
.bg-card, .bg-card-flat, .bg-card-elevated, .bg-background, .bg-surface-base,
|
|
1930
|
+
.bg-surface-raised, .bg-surface-elevated, .bg-surface-overlay, .bg-surface-overlay-hover,
|
|
1931
|
+
.bg-surface-chrome, .bg-surface-inset, .bg-surface-1, .bg-surface-2, .bg-surface-3,
|
|
1932
|
+
.bg-surface-4, .bg-input, .bg-input-disabled, .bg-accent-subtle,
|
|
1933
|
+
.bg-action-danger-subtle, .bg-action-primary-subtle, .bg-action-tonal, .bg-card-tint, .bg-chip, .bg-chip-selected,
|
|
1934
|
+
.bg-energetic-subtle, .bg-error-subtle,
|
|
1935
|
+
.bg-info-subtle, .bg-neutral-subtle, .bg-badge-neutral, .bg-toggle-thumb, .bg-toggle-thumb-checked, .bg-success-subtle, .bg-warning-subtle,
|
|
1936
|
+
.bg-nav-menu-active, .bg-action-disabled, .list-group, .on-surface
|
|
1937
|
+
) {
|
|
1938
|
+
color: var(--zabi-theme-body);
|
|
1939
|
+
--color-headline: var(--zabi-theme-headline);
|
|
1940
|
+
--color-body: var(--zabi-theme-body);
|
|
1941
|
+
--color-label: var(--zabi-theme-label);
|
|
1942
|
+
--color-description: var(--zabi-theme-description);
|
|
1943
|
+
--color-caption: var(--zabi-theme-caption);
|
|
1944
|
+
--color-link: var(--zabi-theme-link);
|
|
1945
|
+
--color-link-hover: var(--zabi-theme-link-hover);
|
|
1946
|
+
--color-border: var(--zabi-theme-border);
|
|
1947
|
+
--color-border-medium: var(--zabi-theme-border-medium);
|
|
1948
|
+
--color-border-strong: var(--zabi-theme-border-strong);
|
|
1949
|
+
--color-control-border: var(--zabi-theme-control-border);
|
|
1950
|
+
--color-action-outline-border: var(--zabi-theme-action-outline-border);
|
|
1951
|
+
--color-action-outline-border-hover: var(--zabi-theme-action-outline-border-hover);
|
|
1952
|
+
--zabi-inv-primary: var(--color-action-primary);
|
|
1953
|
+
--zabi-inv-primary-hover: var(--color-action-primary-hover);
|
|
1954
|
+
--zabi-inv-primary-active: var(--color-action-primary-active);
|
|
1955
|
+
--zabi-inv-primary-text: var(--color-action-primary-text);
|
|
1956
|
+
--zabi-inv-accent: var(--color-accent);
|
|
1957
|
+
--zabi-inv-accent-hover: var(--color-accent-hover);
|
|
1958
|
+
--zabi-inv-accent-active: var(--color-accent-active);
|
|
1959
|
+
--zabi-inv-accent-text: var(--color-on-accent);
|
|
1960
|
+
--zabi-inv-secondary: var(--color-action-secondary);
|
|
1961
|
+
--zabi-inv-secondary-hover: var(--color-action-secondary-hover);
|
|
1962
|
+
--zabi-inv-secondary-active: var(--color-action-secondary-active);
|
|
1963
|
+
--zabi-inv-star: initial;
|
|
1964
|
+
}
|
|
1965
|
+
:where(.on-brand, .on-accent, .on-fill) :where(.bg-card-flat) {
|
|
1966
|
+
--color-card-flat: var(--color-card);
|
|
1967
|
+
--color-card-flat-hover: var(--color-card-hover);
|
|
1968
|
+
--color-card-flat-active: var(--color-card-active);
|
|
1969
|
+
}
|
|
1970
|
+
:where(.on-brand, .on-accent, .on-fill) :where(.bg-input) {
|
|
1971
|
+
--color-input: var(--color-input-solid);
|
|
1972
|
+
--color-input-hover: var(--color-input-solid-hover);
|
|
1973
|
+
--color-input-focus: var(--color-input-solid-focus);
|
|
1974
|
+
--color-input-active: var(--color-input-solid-active);
|
|
1975
|
+
}
|
|
1976
|
+
:where(.on-brand, .on-accent, .on-fill)
|
|
1977
|
+
:where(
|
|
1978
|
+
.bg-card, .bg-card-flat, .bg-card-elevated, .bg-background, .bg-surface-base,
|
|
1979
|
+
.bg-surface-raised, .bg-surface-elevated, .bg-surface-overlay, .bg-surface-overlay-hover,
|
|
1980
|
+
.bg-surface-chrome, .bg-surface-inset, .bg-surface-1, .bg-surface-2, .bg-surface-3,
|
|
1981
|
+
.bg-surface-4, .bg-input, .bg-input-disabled, .bg-accent-subtle,
|
|
1982
|
+
.bg-action-danger-subtle, .bg-action-primary-subtle, .bg-action-tonal, .bg-card-tint, .bg-chip, .bg-chip-selected,
|
|
1983
|
+
.bg-energetic-subtle, .bg-error-subtle,
|
|
1984
|
+
.bg-info-subtle, .bg-neutral-subtle, .bg-badge-neutral, .bg-toggle-thumb, .bg-toggle-thumb-checked, .bg-success-subtle, .bg-warning-subtle,
|
|
1985
|
+
.bg-nav-menu-active, .bg-action-disabled, .list-group, .on-surface
|
|
1986
|
+
)
|
|
1987
|
+
> :where(*) {
|
|
1988
|
+
--color-focus-ring: var(--zabi-theme-focus-ring);
|
|
1989
|
+
--color-focus-ring-muted: var(--zabi-theme-focus-ring-muted);
|
|
1990
|
+
--color-nav-menu-focus: var(--zabi-theme-nav-menu-focus);
|
|
1991
|
+
--color-focus-ring-offset: var(--zabi-theme-focus-ring-offset);
|
|
1992
|
+
--color-focus-ring-danger: var(--zabi-theme-focus-ring-danger);
|
|
1993
|
+
}
|
|
1994
|
+
.list-dividers > li + li,
|
|
1995
|
+
.list-group > li + li {
|
|
1996
|
+
position: relative;
|
|
1997
|
+
}
|
|
1998
|
+
.list-dividers > li + li::before,
|
|
1999
|
+
.list-group > li + li::before {
|
|
2000
|
+
content: "";
|
|
2001
|
+
position: absolute;
|
|
2002
|
+
inset-inline: 1rem;
|
|
2003
|
+
top: calc(-0.125rem - 0.5px);
|
|
2004
|
+
height: 1px;
|
|
2005
|
+
background-color: var(--zabi-list-divider-color, var(--color-border));
|
|
2006
|
+
pointer-events: none;
|
|
2007
|
+
}
|
|
2008
|
+
:is(.list-dividers, .list-group) > li:has(> [data-selected="true"])::before,
|
|
2009
|
+
:is(.list-dividers, .list-group) > li:has(> [data-selected="true"]) + li::before {
|
|
2010
|
+
display: none;
|
|
2011
|
+
}
|
|
2012
|
+
.list-group {
|
|
2013
|
+
@apply space-y-1 overflow-hidden rounded-xl border border-border p-1;
|
|
2014
|
+
background-color: var(--color-surface-1);
|
|
2015
|
+
--zabi-list-row-radius: calc(var(--radius-container) - 0.25rem - 1px);
|
|
2016
|
+
}
|
|
2017
|
+
.focus-brand {
|
|
2018
|
+
--zabi-focus-ring-color: var(--color-focus-ring);
|
|
2019
|
+
--zabi-focus-ring-offset-color: var(--color-focus-ring-offset);
|
|
2020
|
+
outline: none;
|
|
2021
|
+
}
|
|
2022
|
+
|
|
2023
|
+
.focus-brand:focus-visible {
|
|
2024
|
+
outline: none;
|
|
2025
|
+
--tw-ring-offset-shadow:
|
|
2026
|
+
0 0 0 2px var(--zabi-focus-ring-offset-color),
|
|
2027
|
+
0 0 0 4px var(--zabi-focus-ring-color);
|
|
2028
|
+
box-shadow:
|
|
2029
|
+
var(--tw-inset-shadow, 0 0 #0000),
|
|
2030
|
+
var(--tw-inset-ring-shadow, 0 0 #0000),
|
|
2031
|
+
var(--tw-ring-offset-shadow),
|
|
2032
|
+
var(--tw-ring-shadow, 0 0 #0000),
|
|
2033
|
+
var(--tw-shadow, 0 0 #0000);
|
|
2034
|
+
}
|
|
2035
|
+
|
|
2036
|
+
.focus-nav {
|
|
2037
|
+
--zabi-focus-ring-color: var(--color-nav-menu-focus);
|
|
2038
|
+
--zabi-focus-ring-offset-color: var(--color-focus-ring-offset);
|
|
2039
|
+
outline: none;
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
.focus-nav:focus-visible {
|
|
2043
|
+
outline: none;
|
|
2044
|
+
--tw-ring-offset-shadow:
|
|
2045
|
+
0 0 0 2px var(--zabi-focus-ring-offset-color),
|
|
2046
|
+
0 0 0 4px var(--zabi-focus-ring-color);
|
|
2047
|
+
box-shadow:
|
|
2048
|
+
var(--tw-inset-shadow, 0 0 #0000),
|
|
2049
|
+
var(--tw-inset-ring-shadow, 0 0 #0000),
|
|
2050
|
+
var(--tw-ring-offset-shadow),
|
|
2051
|
+
var(--tw-ring-shadow, 0 0 #0000),
|
|
2052
|
+
var(--tw-shadow, 0 0 #0000);
|
|
2053
|
+
}
|
|
2054
|
+
.selection-control-label-row-interaction {
|
|
2055
|
+
@apply rounded-md transition-colors outline-none cursor-pointer hover:bg-surface-hover active:bg-surface-active has-disabled:opacity-50 has-disabled:cursor-not-allowed has-disabled:hover:bg-transparent has-disabled:active:bg-transparent;
|
|
2056
|
+
box-shadow: none;
|
|
2057
|
+
}
|
|
2058
|
+
|
|
2059
|
+
.selection-control-label-row-interaction:has(:focus-visible) {
|
|
2060
|
+
box-shadow:
|
|
2061
|
+
0 0 0 2px var(--color-focus-ring-offset),
|
|
2062
|
+
0 0 0 4px var(--color-focus-ring);
|
|
2063
|
+
}
|
|
2064
|
+
.select-container {
|
|
2065
|
+
max-width: 100%;
|
|
2066
|
+
}
|
|
2067
|
+
.selection-control-option-row {
|
|
2068
|
+
box-shadow: none;
|
|
2069
|
+
}
|
|
2070
|
+
|
|
2071
|
+
.selection-control-option-row:has(:checked) {
|
|
2072
|
+
box-shadow:
|
|
2073
|
+
0 0 0 2px var(--color-focus-ring-offset),
|
|
2074
|
+
0 0 0 4px var(--color-focus-ring);
|
|
2075
|
+
}
|
|
2076
|
+
.selection-control-option-row-quiet:has(:checked):not(:has(:focus-visible)) {
|
|
2077
|
+
box-shadow: none;
|
|
2078
|
+
}
|
|
2079
|
+
}
|
|
2080
|
+
|
|
2081
|
+
@media (forced-colors: active) {
|
|
2082
|
+
.focus-ring:focus-visible,
|
|
2083
|
+
.focus-brand:focus-visible,
|
|
2084
|
+
.focus-nav:focus-visible,
|
|
2085
|
+
.selection-control-label-row-interaction:has(:focus-visible) {
|
|
2086
|
+
outline: 2px solid Highlight;
|
|
2087
|
+
outline-offset: 2px;
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2091
|
+
@media (forced-colors: active) {
|
|
2092
|
+
.toggle-switch {
|
|
2093
|
+
border: 1px solid ButtonText;
|
|
2094
|
+
background-color: Canvas;
|
|
2095
|
+
background-image: none;
|
|
2096
|
+
}
|
|
2097
|
+
.toggle-switch-thumb {
|
|
2098
|
+
top: 1px;
|
|
2099
|
+
left: 1px;
|
|
2100
|
+
background-color: ButtonText;
|
|
2101
|
+
}
|
|
2102
|
+
.toggle-switch[aria-checked="true"] {
|
|
2103
|
+
border-color: Highlight;
|
|
2104
|
+
background-color: Highlight;
|
|
2105
|
+
}
|
|
2106
|
+
.toggle-switch[aria-checked="true"] .toggle-switch-thumb {
|
|
2107
|
+
background-color: HighlightText;
|
|
2108
|
+
}
|
|
2109
|
+
.toggle-switch:disabled {
|
|
2110
|
+
border-color: GrayText;
|
|
2111
|
+
opacity: 1;
|
|
2112
|
+
}
|
|
2113
|
+
.toggle-switch:disabled[aria-checked="true"] {
|
|
2114
|
+
background-color: GrayText;
|
|
2115
|
+
}
|
|
2116
|
+
.toggle-switch:disabled .toggle-switch-thumb {
|
|
2117
|
+
background-color: GrayText;
|
|
2118
|
+
}
|
|
2119
|
+
.toggle-switch:disabled[aria-checked="true"] .toggle-switch-thumb,
|
|
2120
|
+
.toggle-switch:disabled[aria-busy="true"] .toggle-switch-thumb {
|
|
2121
|
+
background-color: Canvas;
|
|
2122
|
+
}
|
|
2123
|
+
|
|
2124
|
+
.selection-control-shell {
|
|
2125
|
+
border-color: ButtonText;
|
|
2126
|
+
}
|
|
2127
|
+
.selection-control-shell:has(:checked) {
|
|
2128
|
+
border-color: Highlight;
|
|
2129
|
+
background-color: Highlight;
|
|
2130
|
+
}
|
|
2131
|
+
.selection-control-shell:has(:checked) > svg {
|
|
2132
|
+
color: HighlightText;
|
|
2133
|
+
}
|
|
2134
|
+
.selection-control-shell:has(:checked) > .selection-control-dot {
|
|
2135
|
+
background-color: HighlightText;
|
|
2136
|
+
}
|
|
2137
|
+
.selection-control-shell:has(:disabled) {
|
|
2138
|
+
border-color: GrayText;
|
|
2139
|
+
opacity: 1;
|
|
2140
|
+
}
|
|
2141
|
+
.selection-control-shell:has(:checked):has(:disabled) {
|
|
2142
|
+
background-color: GrayText;
|
|
2143
|
+
}
|
|
2144
|
+
.selection-control-shell:has(:checked):has(:disabled) > svg {
|
|
2145
|
+
color: Canvas;
|
|
2146
|
+
}
|
|
2147
|
+
.selection-control-shell:has(:checked):has(:disabled) > .selection-control-dot {
|
|
2148
|
+
background-color: Canvas;
|
|
2149
|
+
}
|
|
2150
|
+
.selection-control-label-row-interaction:has(:disabled) {
|
|
2151
|
+
opacity: 1;
|
|
2152
|
+
color: GrayText;
|
|
2153
|
+
}
|
|
2154
|
+
}
|
|
2155
|
+
|
|
2156
|
+
.bg-action-primary {
|
|
2157
|
+
background-color: var(--color-action-primary);
|
|
2158
|
+
}
|
|
2159
|
+
|
|
2160
|
+
@media (hover: hover) {
|
|
2161
|
+
.bg-action-primary:hover {
|
|
2162
|
+
background-color: var(--color-action-primary-hover);
|
|
2163
|
+
}
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
.bg-action-primary:active {
|
|
2167
|
+
background-color: var(--color-action-primary-active);
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
.bg-action-primary:disabled {
|
|
2171
|
+
background-color: var(--color-action-disabled);
|
|
2172
|
+
color: var(--color-action-disabled-text);
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
.bg-action-primary-subtle {
|
|
2176
|
+
background-color: var(--color-action-primary-subtle);
|
|
2177
|
+
}
|
|
2178
|
+
|
|
2179
|
+
@media (hover: hover) {
|
|
2180
|
+
.bg-action-primary-subtle:hover {
|
|
2181
|
+
background-color: var(--color-action-primary-subtle-hover);
|
|
2182
|
+
}
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
.text-action-primary {
|
|
2186
|
+
color: var(--color-action-primary-text);
|
|
2187
|
+
}
|
|
2188
|
+
|
|
2189
|
+
.bg-action-secondary {
|
|
2190
|
+
background-color: var(--color-action-secondary);
|
|
2191
|
+
}
|
|
2192
|
+
|
|
2193
|
+
@media (hover: hover) {
|
|
2194
|
+
.bg-action-secondary:hover {
|
|
2195
|
+
background-color: var(--color-action-secondary-hover);
|
|
2196
|
+
}
|
|
2197
|
+
}
|
|
2198
|
+
|
|
2199
|
+
.bg-action-secondary:active {
|
|
2200
|
+
background-color: var(--color-action-secondary-active);
|
|
2201
|
+
}
|
|
2202
|
+
|
|
2203
|
+
.bg-action-secondary:disabled {
|
|
2204
|
+
background-color: var(--color-action-disabled);
|
|
2205
|
+
color: var(--color-action-disabled-text);
|
|
2206
|
+
}
|
|
2207
|
+
|
|
2208
|
+
.bg-action-secondary-subtle {
|
|
2209
|
+
background-color: var(--color-action-secondary-subtle);
|
|
2210
|
+
}
|
|
2211
|
+
|
|
2212
|
+
@media (hover: hover) {
|
|
2213
|
+
.bg-action-secondary-subtle:hover {
|
|
2214
|
+
background-color: var(--color-action-secondary-subtle-hover);
|
|
2215
|
+
}
|
|
2216
|
+
}
|
|
2217
|
+
|
|
2218
|
+
.bg-action-tonal {
|
|
2219
|
+
background-color: var(--color-action-tonal);
|
|
2220
|
+
}
|
|
2221
|
+
|
|
2222
|
+
@media (hover: hover) {
|
|
2223
|
+
.bg-action-tonal:hover {
|
|
2224
|
+
background-color: var(--color-action-tonal-hover);
|
|
2225
|
+
}
|
|
2226
|
+
}
|
|
2227
|
+
|
|
2228
|
+
.bg-action-tonal:active {
|
|
2229
|
+
background-color: var(--color-action-tonal-active);
|
|
2230
|
+
}
|
|
2231
|
+
|
|
2232
|
+
.bg-action-tonal:disabled {
|
|
2233
|
+
background-color: var(--color-action-disabled);
|
|
2234
|
+
color: var(--color-action-disabled-text);
|
|
2235
|
+
}
|
|
2236
|
+
|
|
2237
|
+
.text-action-tonal {
|
|
2238
|
+
color: var(--color-action-tonal-text);
|
|
2239
|
+
}
|
|
2240
|
+
|
|
2241
|
+
@layer utilities {
|
|
2242
|
+
.bg-badge-neutral {
|
|
2243
|
+
background-color: var(--zabi-badge-neutral-fill, var(--color-neutral-subtle));
|
|
2244
|
+
}
|
|
2245
|
+
.text-badge-neutral {
|
|
2246
|
+
color: var(--zabi-badge-neutral-text, var(--color-neutral-text));
|
|
2247
|
+
}
|
|
2248
|
+
}
|
|
2249
|
+
|
|
2250
|
+
@layer utilities {
|
|
2251
|
+
.bg-skeleton-on-color {
|
|
2252
|
+
background-color: var(--zabi-skeleton-fill, color-mix(in srgb, currentColor 24%, transparent));
|
|
2253
|
+
}
|
|
2254
|
+
}
|
|
2255
|
+
|
|
2256
|
+
.bg-chip {
|
|
2257
|
+
background-color: var(--color-chip);
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
.bg-chip-hover {
|
|
2261
|
+
background-color: var(--color-chip-hover);
|
|
2262
|
+
}
|
|
2263
|
+
|
|
2264
|
+
.bg-chip-active {
|
|
2265
|
+
background-color: var(--color-chip-active);
|
|
2266
|
+
}
|
|
2267
|
+
|
|
2268
|
+
@media (hover: hover) {
|
|
2269
|
+
.hover\:bg-chip-hover:hover {
|
|
2270
|
+
background-color: var(--color-chip-hover);
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2273
|
+
|
|
2274
|
+
.active\:bg-chip-active:active {
|
|
2275
|
+
background-color: var(--color-chip-active);
|
|
2276
|
+
}
|
|
2277
|
+
|
|
2278
|
+
.text-chip-text {
|
|
2279
|
+
color: var(--color-chip-text);
|
|
2280
|
+
}
|
|
2281
|
+
|
|
2282
|
+
.bg-chip-selected {
|
|
2283
|
+
background-color: var(--color-chip-selected);
|
|
2284
|
+
}
|
|
2285
|
+
|
|
2286
|
+
.bg-chip-selected-hover {
|
|
2287
|
+
background-color: var(--color-chip-selected-hover);
|
|
2288
|
+
}
|
|
2289
|
+
|
|
2290
|
+
.bg-chip-selected-active {
|
|
2291
|
+
background-color: var(--color-chip-selected-active);
|
|
2292
|
+
}
|
|
2293
|
+
|
|
2294
|
+
@media (hover: hover) {
|
|
2295
|
+
.hover\:bg-chip-selected-hover:hover {
|
|
2296
|
+
background-color: var(--color-chip-selected-hover);
|
|
2297
|
+
}
|
|
2298
|
+
}
|
|
2299
|
+
|
|
2300
|
+
.active\:bg-chip-selected-active:active {
|
|
2301
|
+
background-color: var(--color-chip-selected-active);
|
|
2302
|
+
}
|
|
2303
|
+
|
|
2304
|
+
.text-chip-selected-text {
|
|
2305
|
+
color: var(--color-chip-selected-text);
|
|
2306
|
+
}
|
|
2307
|
+
|
|
2308
|
+
.bg-card-tint {
|
|
2309
|
+
background-color: var(--color-card-tint);
|
|
2310
|
+
}
|
|
2311
|
+
|
|
2312
|
+
.border-progress-track-border {
|
|
2313
|
+
border-color: var(--color-progress-track-border);
|
|
2314
|
+
}
|
|
2315
|
+
|
|
2316
|
+
.bg-toggle-track {
|
|
2317
|
+
background-color: var(--color-toggle-track);
|
|
2318
|
+
}
|
|
2319
|
+
|
|
2320
|
+
@media (hover: hover) {
|
|
2321
|
+
.bg-toggle-track:hover {
|
|
2322
|
+
background-color: var(--color-toggle-track-hover);
|
|
2323
|
+
}
|
|
2324
|
+
}
|
|
2325
|
+
|
|
2326
|
+
.bg-toggle-track:active {
|
|
2327
|
+
background-color: var(--color-toggle-track-active);
|
|
2328
|
+
}
|
|
2329
|
+
|
|
2330
|
+
.border-action-outline {
|
|
2331
|
+
border-color: var(--color-action-outline-border);
|
|
2332
|
+
}
|
|
2333
|
+
|
|
2334
|
+
@media (hover: hover) {
|
|
2335
|
+
.border-action-outline:hover,
|
|
2336
|
+
.hover\:border-action-outline-hover:hover {
|
|
2337
|
+
border-color: var(--color-action-outline-border-hover);
|
|
2338
|
+
}
|
|
2339
|
+
}
|
|
2340
|
+
|
|
2341
|
+
.bg-action-danger {
|
|
2342
|
+
background-color: var(--color-action-danger);
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2345
|
+
@media (hover: hover) {
|
|
2346
|
+
.bg-action-danger:hover {
|
|
2347
|
+
background-color: var(--color-action-danger-hover);
|
|
2348
|
+
}
|
|
2349
|
+
}
|
|
2350
|
+
|
|
2351
|
+
.bg-action-danger:active {
|
|
2352
|
+
background-color: var(--color-action-danger-active);
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2355
|
+
.bg-action-danger:disabled {
|
|
2356
|
+
background-color: var(--color-action-disabled);
|
|
2357
|
+
color: var(--color-action-disabled-text);
|
|
2358
|
+
}
|
|
2359
|
+
|
|
2360
|
+
.bg-action-danger-subtle {
|
|
2361
|
+
background-color: var(--color-action-danger-subtle);
|
|
2362
|
+
}
|
|
2363
|
+
|
|
2364
|
+
@media (hover: hover) {
|
|
2365
|
+
.bg-action-danger-subtle:hover {
|
|
2366
|
+
background-color: var(--color-action-danger-subtle-hover);
|
|
2367
|
+
}
|
|
2368
|
+
}
|
|
2369
|
+
|
|
2370
|
+
@media (hover: hover) {
|
|
2371
|
+
.hover\:text-body:hover {
|
|
2372
|
+
color: var(--color-body);
|
|
2373
|
+
}
|
|
2374
|
+
|
|
2375
|
+
.hover\:text-headline:hover {
|
|
2376
|
+
color: var(--color-headline);
|
|
2377
|
+
}
|
|
2378
|
+
|
|
2379
|
+
.hover\:text-link:hover {
|
|
2380
|
+
color: var(--color-link);
|
|
2381
|
+
}
|
|
2382
|
+
|
|
2383
|
+
.enabled\:hover\:text-error-text:enabled:hover {
|
|
2384
|
+
color: var(--color-error-text);
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2387
|
+
.group:hover .group-hover\:text-headline\/90 {
|
|
2388
|
+
color: color-mix(in oklab, var(--color-headline) 90%, transparent);
|
|
2389
|
+
}
|
|
2390
|
+
}
|
|
2391
|
+
|
|
2392
|
+
.active\:text-headline:active {
|
|
2393
|
+
color: var(--color-headline);
|
|
2394
|
+
}
|
|
2395
|
+
|
|
2396
|
+
.active\:text-link:active {
|
|
2397
|
+
color: var(--color-link);
|
|
2398
|
+
}
|
|
2399
|
+
|
|
2400
|
+
.disabled\:text-action-disabled-text:disabled {
|
|
2401
|
+
color: var(--color-action-disabled-text);
|
|
2402
|
+
}
|
|
2403
|
+
|
|
2404
|
+
.disabled\:hover\:text-description:disabled:hover {
|
|
2405
|
+
color: var(--color-description);
|
|
2406
|
+
}
|
|
2407
|
+
|
|
2408
|
+
@media (hover: hover) {
|
|
2409
|
+
.hover\:border-border-medium:hover {
|
|
2410
|
+
border-color: var(--color-border-medium);
|
|
2411
|
+
}
|
|
2412
|
+
|
|
2413
|
+
.enabled\:hover\:border-border-medium:enabled:hover {
|
|
2414
|
+
border-color: var(--color-border-medium);
|
|
2415
|
+
}
|
|
2416
|
+
}
|
|
2417
|
+
|
|
2418
|
+
.disabled\:border-transparent:disabled {
|
|
2419
|
+
border-color: transparent;
|
|
2420
|
+
}
|
|
2421
|
+
|
|
2422
|
+
.disabled\:hover\:border-transparent:disabled:hover {
|
|
2423
|
+
border-color: transparent;
|
|
2424
|
+
}
|
|
2425
|
+
|
|
2426
|
+
@media (hover: hover) {
|
|
2427
|
+
.hover\:bg-accent-hover:hover {
|
|
2428
|
+
background-color: var(--color-accent-hover);
|
|
2429
|
+
}
|
|
2430
|
+
|
|
2431
|
+
.hover\:text-accent-hover:hover {
|
|
2432
|
+
color: var(--color-accent-hover);
|
|
2433
|
+
}
|
|
2434
|
+
|
|
2435
|
+
.hover\:border-accent-hover:hover {
|
|
2436
|
+
border-color: var(--color-accent-hover);
|
|
2437
|
+
}
|
|
2438
|
+
|
|
2439
|
+
.hover\:bg-nav-menu-active-hover:hover {
|
|
2440
|
+
background-color: var(--color-nav-menu-active-hover);
|
|
2441
|
+
}
|
|
2442
|
+
}
|
|
2443
|
+
|
|
2444
|
+
.active\:bg-accent-active:active {
|
|
2445
|
+
background-color: var(--color-accent-active);
|
|
2446
|
+
}
|
|
2447
|
+
|
|
2448
|
+
.active\:text-accent-active:active {
|
|
2449
|
+
color: var(--color-accent-active);
|
|
2450
|
+
}
|
|
2451
|
+
|
|
2452
|
+
.active\:border-accent-active:active {
|
|
2453
|
+
border-color: var(--color-accent-active);
|
|
2454
|
+
}
|
|
2455
|
+
|
|
2456
|
+
.active\:bg-info-active:active {
|
|
2457
|
+
background-color: var(--color-info-active);
|
|
2458
|
+
}
|
|
2459
|
+
|
|
2460
|
+
.active\:text-info-active:active {
|
|
2461
|
+
color: var(--color-info-active);
|
|
2462
|
+
}
|
|
2463
|
+
|
|
2464
|
+
.active\:border-info-active:active {
|
|
2465
|
+
border-color: var(--color-info-active);
|
|
2466
|
+
}
|
|
2467
|
+
|
|
2468
|
+
.active\:bg-action-primary-subtle-hover:active {
|
|
2469
|
+
background-color: var(--color-action-primary-subtle-hover);
|
|
2470
|
+
}
|
|
2471
|
+
|
|
2472
|
+
.active\:bg-action-danger-subtle-hover:active {
|
|
2473
|
+
background-color: var(--color-action-danger-subtle-hover);
|
|
2474
|
+
}
|
|
2475
|
+
|
|
2476
|
+
.active\:bg-action-primary-subtle-active:active {
|
|
2477
|
+
background-color: var(--color-action-primary-subtle-active, var(--color-action-primary-subtle-hover));
|
|
2478
|
+
}
|
|
2479
|
+
|
|
2480
|
+
.active\:bg-action-danger-subtle-active:active {
|
|
2481
|
+
background-color: var(--color-action-danger-subtle-active, var(--color-action-danger-subtle-hover));
|
|
2482
|
+
}
|
|
2483
|
+
|
|
2484
|
+
.disabled\:bg-action-disabled:disabled {
|
|
2485
|
+
background-color: var(--color-action-disabled);
|
|
2486
|
+
}
|
|
2487
|
+
|
|
2488
|
+
.z-sticky {
|
|
2489
|
+
z-index: var(--z-sticky);
|
|
2490
|
+
}
|
|
2491
|
+
|
|
2492
|
+
.z-fixed {
|
|
2493
|
+
z-index: var(--z-fixed);
|
|
2494
|
+
}
|
|
2495
|
+
|
|
2496
|
+
.z-dropdown {
|
|
2497
|
+
z-index: var(--z-dropdown);
|
|
2498
|
+
}
|
|
2499
|
+
|
|
2500
|
+
.z-modal {
|
|
2501
|
+
z-index: var(--z-modal);
|
|
2502
|
+
}
|
|
2503
|
+
|
|
2504
|
+
.z-modal-backdrop {
|
|
2505
|
+
z-index: var(--z-modal-backdrop);
|
|
2506
|
+
}
|
|
2507
|
+
|
|
2508
|
+
.z-popover {
|
|
2509
|
+
z-index: var(--z-popover);
|
|
2510
|
+
}
|
|
2511
|
+
|
|
2512
|
+
.z-tooltip {
|
|
2513
|
+
z-index: var(--z-tooltip);
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
.z-toast {
|
|
2517
|
+
z-index: var(--z-toast);
|
|
2518
|
+
}
|
|
2519
|
+
|
|
2520
|
+
@keyframes slideUp {
|
|
2521
|
+
from {
|
|
2522
|
+
transform: translateY(100%);
|
|
2523
|
+
}
|
|
2524
|
+
to {
|
|
2525
|
+
transform: translateY(0);
|
|
2526
|
+
}
|
|
2527
|
+
}
|
|
2528
|
+
|
|
2529
|
+
.scrollbar-semantic {
|
|
2530
|
+
scrollbar-width: thin;
|
|
2531
|
+
scrollbar-color: var(--color-base-400) var(--color-base-100);
|
|
2532
|
+
}
|
|
2533
|
+
|
|
2534
|
+
.scrollbar-semantic::-webkit-scrollbar {
|
|
2535
|
+
width: 10px;
|
|
2536
|
+
height: 10px;
|
|
2537
|
+
}
|
|
2538
|
+
|
|
2539
|
+
.scrollbar-semantic::-webkit-scrollbar-track {
|
|
2540
|
+
background-color: var(--color-base-100);
|
|
2541
|
+
}
|
|
2542
|
+
|
|
2543
|
+
.scrollbar-semantic::-webkit-scrollbar-thumb {
|
|
2544
|
+
background-color: var(--color-base-400);
|
|
2545
|
+
border-radius: var(--radius-md);
|
|
2546
|
+
border: 2px solid var(--color-base-100);
|
|
2547
|
+
}
|
|
2548
|
+
|
|
2549
|
+
.scrollbar-semantic::-webkit-scrollbar-thumb:hover {
|
|
2550
|
+
background-color: var(--color-base-500);
|
|
2551
|
+
}
|