@felloinnovations/brand-kit 0.4.0 → 0.5.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/AGENTS.md +198 -24
- package/CHANGELOG.md +197 -0
- package/README.md +34 -7
- package/design-system/01-how-claude-decides.md +26 -17
- package/design-system/02-principles.md +11 -6
- package/design-system/03-colour.md +134 -47
- package/design-system/04-type.md +45 -23
- package/design-system/05-space-and-layout.md +175 -52
- package/design-system/06-sizing-profiles.md +4 -4
- package/design-system/07-scrolling.md +66 -20
- package/design-system/08-choosing-components.md +50 -22
- package/design-system/09-charts.md +71 -28
- package/design-system/10-patterns.md +33 -10
- package/design-system/11-page-recipes.md +110 -23
- package/design-system/12-content.md +2 -1
- package/design-system/13-motion.md +330 -47
- package/design-system/14-accessibility.md +47 -24
- package/design-system/15-ai-experiences.md +11 -6
- package/design-system/16-creativity.md +1 -1
- package/design-system/17-decisions.md +357 -1
- package/design-system/18-checklist.md +79 -16
- package/design-system/19-public-pages.md +6 -4
- package/design-system/20-palettes.md +275 -0
- package/design-system/README.md +30 -17
- package/design-system/components/ActionList/README.md +96 -10
- package/design-system/components/ActionList/preview.html +52 -7
- package/design-system/components/ActionList/style.css +64 -0
- package/design-system/components/ActivityGrid/README.md +38 -2
- package/design-system/components/ActivityGrid/preview.html +1 -1
- package/design-system/components/ActivityGrid/style.css +35 -0
- package/design-system/components/AppShell/README.md +205 -75
- package/design-system/components/AppShell/preview.html +339 -58
- package/design-system/components/AppShell/style.css +154 -0
- package/design-system/components/Avatar/README.md +37 -10
- package/design-system/components/Avatar/preview.html +13 -4
- package/design-system/components/Avatar/style.css +14 -0
- package/design-system/components/Badge/README.md +41 -19
- package/design-system/components/Badge/preview.html +13 -10
- package/design-system/components/Badge/style.css +23 -0
- package/design-system/components/Banner/README.md +30 -9
- package/design-system/components/Banner/preview.html +1 -1
- package/design-system/components/Banner/style.css +19 -0
- package/design-system/components/Breadcrumb/README.md +58 -46
- package/design-system/components/Breadcrumb/preview.html +16 -16
- package/design-system/components/Breadcrumb/style.css +17 -0
- package/design-system/components/Button/README.md +113 -55
- package/design-system/components/Button/preview.html +98 -25
- package/design-system/components/Button/style.css +86 -0
- package/design-system/components/Card/README.md +158 -49
- package/design-system/components/Card/preview.html +141 -19
- package/design-system/components/Card/style.css +115 -0
- package/design-system/components/CardBoard/README.md +58 -37
- package/design-system/components/CardBoard/preview.html +26 -29
- package/design-system/components/ChatCard/README.md +115 -29
- package/design-system/components/ChatCard/preview.html +149 -32
- package/design-system/components/ChatCard/style.css +49 -0
- package/design-system/components/ChatShell/README.md +116 -0
- package/design-system/components/ChatShell/preview.html +201 -0
- package/design-system/components/ChatShell/style.css +86 -0
- package/design-system/components/ChatTurn/README.md +78 -35
- package/design-system/components/ChatTurn/preview.html +60 -28
- package/design-system/components/ChatTurn/style.css +50 -0
- package/design-system/components/CheckRow/README.md +141 -0
- package/design-system/components/CheckRow/preview.html +140 -0
- package/design-system/components/CheckRow/style.css +88 -0
- package/design-system/components/Checkbox/README.md +58 -22
- package/design-system/components/Checkbox/preview.html +112 -50
- package/design-system/components/Checkbox/style.css +45 -0
- package/design-system/components/Chip/README.md +78 -47
- package/design-system/components/Chip/preview.html +29 -4
- package/design-system/components/Chip/style.css +17 -0
- package/design-system/components/Combobox/README.md +44 -11
- package/design-system/components/Combobox/preview.html +35 -12
- package/design-system/components/Combobox/style.css +54 -0
- package/design-system/components/Composer/README.md +137 -35
- package/design-system/components/Composer/preview.html +115 -40
- package/design-system/components/Composer/style.css +81 -0
- package/design-system/components/ConfirmDialog/README.md +73 -52
- package/design-system/components/ConfirmDialog/preview.html +70 -26
- package/design-system/components/ConfirmDialog/style.css +5 -0
- package/design-system/components/Cover/preview.html +3 -3
- package/design-system/components/Cover/style.css +19 -0
- package/design-system/components/DateInput/README.md +77 -12
- package/design-system/components/DateInput/preview.html +27 -12
- package/design-system/components/DateInput/style.css +38 -0
- package/design-system/components/Dialog/README.md +112 -44
- package/design-system/components/Dialog/preview.html +141 -18
- package/design-system/components/Dialog/style.css +74 -0
- package/design-system/components/EmptyState/README.md +42 -12
- package/design-system/components/EmptyState/preview.html +11 -11
- package/design-system/components/EmptyState/style.css +9 -0
- package/design-system/components/EntryShell/README.md +73 -48
- package/design-system/components/EntryShell/preview.html +60 -27
- package/design-system/components/EntryShell/style.css +19 -0
- package/design-system/components/FeatureGrid/README.md +61 -39
- package/design-system/components/FeatureGrid/preview.html +2 -2
- package/design-system/components/FeatureGrid/style.css +20 -0
- package/design-system/components/FileUpload/README.md +33 -3
- package/design-system/components/FileUpload/preview.html +18 -4
- package/design-system/components/FileUpload/style.css +23 -0
- package/design-system/components/FilterBar/README.md +114 -0
- package/design-system/components/FilterBar/preview.html +82 -0
- package/design-system/components/FilterBar/style.css +22 -0
- package/design-system/components/Fold/README.md +84 -26
- package/design-system/components/Fold/preview.html +77 -34
- package/design-system/components/Fold/style.css +48 -0
- package/design-system/components/Footer/README.md +62 -39
- package/design-system/components/Footer/preview.html +5 -5
- package/design-system/components/Footer/style.css +30 -0
- package/design-system/components/FunnelBars/README.md +24 -3
- package/design-system/components/FunnelBars/preview.html +5 -5
- package/design-system/components/FunnelBars/style.css +13 -0
- package/design-system/components/GoalBars/README.md +54 -10
- package/design-system/components/GoalBars/preview.html +69 -28
- package/design-system/components/GoalBars/style.css +51 -0
- package/design-system/components/GoalTicks/README.md +74 -58
- package/design-system/components/GoalTicks/preview.html +41 -118
- package/design-system/components/GoalTicks/style.css +37 -0
- package/design-system/components/GoalTubes/README.md +29 -3
- package/design-system/components/GoalTubes/preview.html +6 -6
- package/design-system/components/GoalTubes/style.css +23 -0
- package/design-system/components/Heatmap/README.md +133 -0
- package/design-system/components/Heatmap/preview.html +168 -0
- package/design-system/components/Heatmap/style.css +119 -0
- package/design-system/components/Hero/README.md +58 -40
- package/design-system/components/Hero/preview.html +1 -1
- package/design-system/components/Hero/style.css +19 -0
- package/design-system/components/HoverCard/README.md +114 -0
- package/design-system/components/HoverCard/preview.html +107 -0
- package/design-system/components/HoverCard/style.css +59 -0
- package/design-system/components/IconButton/README.md +69 -38
- package/design-system/components/IconButton/preview.html +77 -43
- package/design-system/components/IconButton/style.css +45 -0
- package/design-system/components/Input/README.md +36 -11
- package/design-system/components/Input/preview.html +1 -1
- package/design-system/components/Input/style.css +23 -0
- package/design-system/components/KanbanBoard/README.md +93 -45
- package/design-system/components/KanbanBoard/preview.html +159 -43
- package/design-system/components/KanbanBoard/style.css +53 -0
- package/design-system/components/Kbd/README.md +25 -9
- package/design-system/components/Kbd/preview.html +6 -2
- package/design-system/components/Kbd/style.css +9 -0
- package/design-system/components/KitButton/README.md +81 -47
- package/design-system/components/KitButton/preview.html +35 -13
- package/design-system/components/KitButton/style.css +46 -0
- package/design-system/components/KitCard/README.md +75 -44
- package/design-system/components/KitCard/preview.html +18 -10
- package/design-system/components/KitCard/style.css +15 -0
- package/design-system/components/KitInput/README.md +54 -39
- package/design-system/components/KitInput/preview.html +7 -7
- package/design-system/components/KitInput/style.css +23 -0
- package/design-system/components/Leaderboard/README.md +76 -49
- package/design-system/components/Leaderboard/preview.html +61 -26
- package/design-system/components/Leaderboard/style.css +44 -0
- package/design-system/components/ListDetail/README.md +222 -0
- package/design-system/components/ListDetail/preview.html +213 -0
- package/design-system/components/ListDetail/style.css +148 -0
- package/design-system/components/LoadBar/README.md +79 -0
- package/design-system/components/LoadBar/preview.html +40 -0
- package/design-system/components/LoadBar/style.css +17 -0
- package/design-system/components/MarketingNav/README.md +76 -42
- package/design-system/components/MarketingNav/preview.html +37 -8
- package/design-system/components/MarketingNav/style.css +45 -0
- package/design-system/components/Matrix/README.md +129 -0
- package/design-system/components/Matrix/preview.html +99 -0
- package/design-system/components/Matrix/style.css +84 -0
- package/design-system/components/Menu/README.md +117 -41
- package/design-system/components/Menu/preview.html +85 -23
- package/design-system/components/Menu/style.css +61 -0
- package/design-system/components/Meter/README.md +39 -4
- package/design-system/components/Meter/preview.html +18 -1
- package/design-system/components/Meter/style.css +23 -0
- package/design-system/components/MetricTile/README.md +237 -0
- package/design-system/components/MetricTile/preview.html +241 -0
- package/design-system/components/MetricTile/style.css +129 -0
- package/design-system/components/Morph/README.md +106 -0
- package/design-system/components/Morph/preview.html +103 -0
- package/design-system/components/Morph/style.css +31 -0
- package/design-system/components/Motion/README.md +164 -0
- package/design-system/components/Motion/preview.html +2537 -0
- package/design-system/components/NumberInput/README.md +27 -8
- package/design-system/components/NumberInput/preview.html +21 -5
- package/design-system/components/NumberInput/style.css +34 -0
- package/design-system/components/PaceBar/README.md +75 -0
- package/design-system/components/PaceBar/preview.html +67 -0
- package/design-system/components/PaceBar/style.css +25 -0
- package/design-system/components/Page/README.md +57 -18
- package/design-system/components/Page/preview.html +15 -17
- package/design-system/components/Page/style.css +7 -0
- package/design-system/components/PageBar/README.md +90 -34
- package/design-system/components/PageBar/preview.html +60 -19
- package/design-system/components/PageBar/style.css +35 -0
- package/design-system/components/PageHero/README.md +87 -51
- package/design-system/components/PageHero/preview.html +35 -6
- package/design-system/components/PageHero/style.css +31 -0
- package/design-system/components/Pagination/README.md +70 -49
- package/design-system/components/Pagination/preview.html +24 -15
- package/design-system/components/Pagination/style.css +12 -0
- package/design-system/components/Panel/README.md +109 -51
- package/design-system/components/Panel/preview.html +118 -20
- package/design-system/components/Panel/style.css +51 -0
- package/design-system/components/PasswordInput/README.md +50 -18
- package/design-system/components/PasswordInput/preview.html +71 -21
- package/design-system/components/PasswordInput/style.css +31 -0
- package/design-system/components/Plate/README.md +75 -17
- package/design-system/components/Plate/preview.html +40 -7
- package/design-system/components/Plate/style.css +37 -0
- package/design-system/components/Popover/README.md +70 -49
- package/design-system/components/Popover/preview.html +44 -22
- package/design-system/components/Popover/style.css +41 -0
- package/design-system/components/PricingTable/README.md +69 -49
- package/design-system/components/PricingTable/preview.html +21 -21
- package/design-system/components/PricingTable/style.css +21 -0
- package/design-system/components/ProgressPetals/README.md +31 -3
- package/design-system/components/ProgressPetals/preview.html +14 -15
- package/design-system/components/ProgressPetals/style.css +27 -0
- package/design-system/components/README.md +151 -0
- package/design-system/components/Radio/README.md +40 -17
- package/design-system/components/Radio/preview.html +16 -1
- package/design-system/components/Radio/style.css +21 -0
- package/design-system/components/RankBar/README.md +29 -2
- package/design-system/components/RankBar/preview.html +14 -12
- package/design-system/components/RankBar/style.css +18 -0
- package/design-system/components/Ring/README.md +61 -11
- package/design-system/components/Ring/preview.html +55 -10
- package/design-system/components/Ring/style.css +49 -0
- package/design-system/components/ScoreHero/README.md +91 -0
- package/design-system/components/ScoreHero/preview.html +104 -0
- package/design-system/components/ScoreHero/style.css +32 -0
- package/design-system/components/Section/README.md +72 -33
- package/design-system/components/Section/preview.html +46 -16
- package/design-system/components/Section/style.css +18 -0
- package/design-system/components/Segmented/README.md +100 -55
- package/design-system/components/Segmented/preview.html +107 -26
- package/design-system/components/Segmented/style.css +94 -0
- package/design-system/components/SegmentedProgress/README.md +64 -0
- package/design-system/components/SegmentedProgress/preview.html +69 -0
- package/design-system/components/SegmentedProgress/style.css +11 -0
- package/design-system/components/Select/README.md +47 -12
- package/design-system/components/Select/preview.html +28 -2
- package/design-system/components/Select/style.css +22 -0
- package/design-system/components/ShareBar/README.md +69 -0
- package/design-system/components/ShareBar/preview.html +72 -0
- package/design-system/components/ShareBar/style.css +25 -0
- package/design-system/components/SideList/README.md +147 -0
- package/design-system/components/SideList/preview.html +139 -0
- package/design-system/components/SideList/style.css +94 -0
- package/design-system/components/Skeleton/README.md +52 -16
- package/design-system/components/Skeleton/preview.html +35 -23
- package/design-system/components/Skeleton/style.css +22 -0
- package/design-system/components/Slider/README.md +95 -0
- package/design-system/components/Slider/preview.html +49 -0
- package/design-system/components/Slider/style.css +13 -0
- package/design-system/components/Split/README.md +112 -0
- package/design-system/components/Split/preview.html +105 -0
- package/design-system/components/Split/style.css +30 -0
- package/design-system/components/Starter/README.md +21 -9
- package/design-system/components/Starter/preview.html +5 -5
- package/design-system/components/Stat/README.md +64 -43
- package/design-system/components/Stat/preview.html +3 -3
- package/design-system/components/Stat/style.css +15 -0
- package/design-system/components/StatTiles/README.md +88 -44
- package/design-system/components/StatTiles/preview.html +142 -71
- package/design-system/components/StatTiles/style.css +64 -0
- package/design-system/components/StatusLine/README.md +85 -0
- package/design-system/components/StatusLine/preview.html +49 -0
- package/design-system/components/StatusLine/style.css +14 -0
- package/design-system/components/StatusScreen/README.md +49 -35
- package/design-system/components/StatusScreen/preview.html +20 -5
- package/design-system/components/StatusScreen/style.css +9 -0
- package/design-system/components/StepLine/README.md +97 -0
- package/design-system/components/StepLine/preview.html +108 -0
- package/design-system/components/StepLine/style.css +62 -0
- package/design-system/components/Stepper/README.md +35 -13
- package/design-system/components/Stepper/style.css +13 -0
- package/design-system/components/StreakCalendar/README.md +22 -1
- package/design-system/components/StreakCalendar/preview.html +10 -10
- package/design-system/components/StreakCalendar/style.css +12 -0
- package/design-system/components/SuggestionChip/README.md +87 -0
- package/design-system/components/SuggestionChip/preview.html +42 -0
- package/design-system/components/SuggestionChip/style.css +20 -0
- package/design-system/components/Switch/README.md +44 -24
- package/design-system/components/Switch/preview.html +23 -8
- package/design-system/components/Switch/style.css +31 -0
- package/design-system/components/Table/README.md +129 -58
- package/design-system/components/Table/preview.html +106 -72
- package/design-system/components/Table/style.css +104 -0
- package/design-system/components/Tabs/README.md +71 -46
- package/design-system/components/Tabs/preview.html +56 -24
- package/design-system/components/Tabs/style.css +44 -0
- package/design-system/components/Testimonial/README.md +48 -32
- package/design-system/components/Testimonial/preview.html +14 -14
- package/design-system/components/Testimonial/style.css +12 -0
- package/design-system/components/TextArea/README.md +27 -11
- package/design-system/components/TextArea/preview.html +8 -2
- package/design-system/components/TextArea/style.css +12 -0
- package/design-system/components/ThemeSwitch/README.md +116 -0
- package/design-system/components/ThemeSwitch/preview.html +57 -0
- package/design-system/components/ThemeSwitch/style.css +6 -0
- package/design-system/components/TickRow/README.md +52 -36
- package/design-system/components/TickRow/preview.html +64 -41
- package/design-system/components/TickRow/style.css +23 -0
- package/design-system/components/TickStrip/README.md +95 -0
- package/design-system/components/TickStrip/preview.html +88 -0
- package/design-system/components/TickStrip/style.css +42 -0
- package/design-system/components/Tile/README.md +79 -18
- package/design-system/components/Tile/preview.html +91 -40
- package/design-system/components/Tile/style.css +36 -0
- package/design-system/components/Timeline/README.md +68 -48
- package/design-system/components/Timeline/preview.html +27 -15
- package/design-system/components/Timeline/style.css +25 -0
- package/design-system/components/Toast/README.md +70 -38
- package/design-system/components/Toast/preview.html +43 -8
- package/design-system/components/Toast/style.css +25 -0
- package/design-system/components/Tooltip/README.md +93 -35
- package/design-system/components/Tooltip/preview.html +69 -15
- package/design-system/components/Tooltip/style.css +78 -0
- package/design-system/components/TopBar/README.md +67 -53
- package/design-system/components/TopBar/preview.html +14 -27
- package/design-system/components/TopBar/style.css +35 -0
- package/design-system/components/TopicRail/README.md +108 -0
- package/design-system/components/TopicRail/preview.html +58 -0
- package/design-system/components/TopicRail/style.css +48 -0
- package/design-system/components/TrendBars/README.md +52 -14
- package/design-system/components/TrendBars/preview.html +65 -32
- package/design-system/components/TrendBars/style.css +25 -0
- package/design-system/components/TrendLine/README.md +164 -0
- package/design-system/components/TrendLine/preview.html +373 -0
- package/design-system/components/TrendLine/style.css +155 -0
- package/design-system/components/Well/README.md +64 -22
- package/design-system/components/Well/preview.html +14 -14
- package/design-system/components/Well/style.css +22 -0
- package/design-system/components/_house.css +324 -0
- package/design-system/components/bundle.css +4091 -744
- package/design-system/tokens.json +1314 -124
- package/dist/fello-core.css +2 -2
- package/dist/fello.css +6 -1369
- package/dist/fello.scoped.css +7 -0
- package/dist/index.d.ts +110 -11
- package/dist/index.js +781 -96
- package/dist/palettes.d.ts +464 -0
- package/dist/palettes.js +497 -0
- package/dist/scoped.d.ts +3 -0
- package/dist/scoped.js +16 -0
- package/dist/toast.d.ts +14 -0
- package/dist/toast.js +33 -29
- package/dist/tokens.d.ts +1686 -62
- package/dist/tokens.js +1668 -61
- package/package.json +20 -4
- package/scripts/check-palette.mjs +295 -0
- package/scripts/token-model.mjs +552 -0
- package/tokens/_dark.css +174 -0
- package/tokens/_palettes.css +46 -0
- package/tokens/_product.css +266 -53
- package/tokens/_source.hubl.css +39 -19
- package/tokens/design-tokens.json +319 -0
- package/tokens/palettes.ts +504 -0
- package/tokens/shadcn-compat.css +19 -19
- package/tokens/shadcn-compat.hsl.css +76 -0
- package/tokens/tokens.css +1292 -62
- package/tokens/tokens.md +588 -61
- package/tokens/tokens.root.css +1298 -62
- package/tokens/tokens.ts +1677 -64
package/dist/index.js
CHANGED
|
@@ -13,10 +13,11 @@ var cn = (...inputs) => twMerge(clsx(inputs));
|
|
|
13
13
|
import { jsxs } from "react/jsx-runtime";
|
|
14
14
|
var buttonVariants = cva(
|
|
15
15
|
[
|
|
16
|
-
"inline-flex items-center justify-center gap-[var(--space-xs)]
|
|
17
|
-
"font-[family-name:var(--font-body)] cursor-pointer appearance-none",
|
|
18
|
-
"transition-[background,color,box-shadow,transform,filter] duration-150 ease-out",
|
|
19
|
-
"outline-
|
|
16
|
+
"relative inline-flex max-w-full items-center justify-center gap-[var(--space-xs)] text-center text-balance no-underline",
|
|
17
|
+
"font-[family-name:var(--font-body)] font-semibold cursor-pointer appearance-none",
|
|
18
|
+
"motion-safe:transition-[background-color,color,box-shadow,transform,filter] motion-safe:duration-150 motion-safe:ease-out",
|
|
19
|
+
"focus-visible:outline-solid focus-visible:outline-[length:var(--ws-focus-width)] focus-visible:outline-[color:var(--ws-focus-color)] focus-visible:outline-offset-[var(--ws-focus-offset)]",
|
|
20
|
+
"[&_svg]:size-[var(--ws-icon)] [&_svg]:shrink-0",
|
|
20
21
|
"disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none",
|
|
21
22
|
"aria-disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:pointer-events-none"
|
|
22
23
|
],
|
|
@@ -25,42 +26,57 @@ var buttonVariants = cva(
|
|
|
25
26
|
variant: {
|
|
26
27
|
primary: [
|
|
27
28
|
"bg-[image:var(--gradient-btn-primary)] text-[color:var(--color-white)]",
|
|
28
|
-
"border-0 border-b-[
|
|
29
|
+
"border-0 border-b-[length:calc(var(--space-xxs)*0.75)] border-b-[color:var(--color-button-border)]",
|
|
29
30
|
"hover:brightness-[1.04]",
|
|
30
|
-
"active:translate-y-[
|
|
31
|
+
"active:translate-y-[calc(var(--space-xxs)/2)] active:border-b-transparent"
|
|
31
32
|
],
|
|
32
33
|
secondary: [
|
|
33
|
-
"bg-[var(--color-
|
|
34
|
-
"border border-[var(--color-border-hairline)]
|
|
35
|
-
"hover:bg-[var(--color-nav-hover-bg)]"
|
|
34
|
+
"bg-[color:var(--color-bg-page)] text-[color:var(--color-text-interactive)]",
|
|
35
|
+
"border border-[color:var(--color-border-hairline)]",
|
|
36
|
+
"hover:bg-[image:linear-gradient(var(--color-nav-hover-bg),var(--color-nav-hover-bg))]"
|
|
36
37
|
],
|
|
37
38
|
navy: [
|
|
38
|
-
"bg-[linear-gradient(180deg,var(--color-brand-mid-blue),color-mix(in_srgb,var(--color-brand-navy)_35%,var(--color-brand-mid-blue)))]",
|
|
39
|
-
"text-[color:var(--color-white)] border-0 border-b-[
|
|
40
|
-
"shadow-[var(--shadow-btn)] hover:shadow-[var(--shadow-btn-hover)]",
|
|
41
|
-
"active:translate-y-[
|
|
39
|
+
"bg-[image:linear-gradient(180deg,var(--color-brand-mid-blue),color-mix(in_srgb,var(--color-brand-navy)_35%,var(--color-brand-mid-blue)))]",
|
|
40
|
+
"text-[color:var(--color-white)] border-0 border-b-[length:calc(var(--space-xxs)*0.75)] border-b-[color:var(--color-brand-navy)]",
|
|
41
|
+
"shadow-[var(--shadow-btn)] hover:shadow-[var(--shadow-btn-hover)] hover:brightness-[1.04]",
|
|
42
|
+
"active:translate-y-[calc(var(--space-xxs)/2)] active:border-b-transparent active:shadow-none"
|
|
42
43
|
],
|
|
43
44
|
tertiary: [
|
|
44
|
-
"bg-transparent text-[color:var(--color-
|
|
45
|
-
"border border-[var(--color-
|
|
46
|
-
"hover:bg-[var(--color-
|
|
45
|
+
"bg-transparent text-[color:var(--color-text-heading)]",
|
|
46
|
+
"border border-[color:var(--color-text-heading)]",
|
|
47
|
+
"hover:bg-[color:var(--color-text-heading)] hover:text-[color:var(--ws-on-act)]"
|
|
47
48
|
],
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
]
|
|
49
|
+
// Underlines on hover: a salmon word would be 2.7:1, under AA. Its no-sides and no-floor width are a compound
|
|
50
|
+
// variant below: here, tailwind-merge drops them for the size's own padding and min-width, which come later.
|
|
51
|
+
clean: "border-0 bg-transparent text-[color:var(--color-text-heading)] hover:underline"
|
|
52
52
|
},
|
|
53
53
|
size: {
|
|
54
|
-
// Heights and type are the Figma dimensions table,
|
|
55
|
-
large:
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
// Heights and type are the Figma dimensions table (45, 36, 28), as floors.
|
|
55
|
+
large: [
|
|
56
|
+
"min-h-[calc(var(--space-2xl)+var(--space-xxs)+var(--ws-line))] min-w-[calc(var(--space-5xl)+var(--space-md)+var(--space-xxs))]",
|
|
57
|
+
"px-[calc(var(--space-md)+var(--space-xxs))] py-[var(--space-xs)] rounded-[var(--ws-radius-card)]",
|
|
58
|
+
"text-[length:var(--font-size-md)] leading-[calc(var(--space-md)+var(--space-xxs))]"
|
|
59
|
+
],
|
|
60
|
+
medium: [
|
|
61
|
+
"min-h-[calc(var(--space-xl)+var(--space-xxs))] min-w-[var(--space-5xl)]",
|
|
62
|
+
"px-[var(--space-md)] py-[var(--space-xxs-plus)] rounded-[var(--ws-radius-card)]",
|
|
63
|
+
"text-[length:var(--font-size-sm)] leading-[var(--ws-leading-control)]",
|
|
64
|
+
"pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:inset-y-[min(0px,calc((100%-var(--ws-touch-public))/2))] pointer-coarse:after:content-['']"
|
|
65
|
+
],
|
|
66
|
+
small: [
|
|
67
|
+
"min-h-[calc(var(--space-lg)+var(--space-xxs))] min-w-[calc(var(--space-3xl)+var(--space-sm))]",
|
|
68
|
+
"px-[var(--space-sm)] py-[var(--space-xxs)] rounded-[var(--ws-radius-row)]",
|
|
69
|
+
"text-[length:var(--font-size-2xs)] leading-[var(--space-md)] font-medium [&_svg]:size-[var(--ws-icon-sm)]",
|
|
70
|
+
"pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:inset-y-[min(0px,calc((100%-var(--ws-touch-public))/2))] pointer-coarse:after:content-['']"
|
|
71
|
+
]
|
|
58
72
|
},
|
|
59
73
|
/** Elevation. Primary and navy carry their own lift; this adds the stack. */
|
|
60
74
|
shadow: { true: "", false: "" },
|
|
61
75
|
fullWidth: { true: "w-full", false: "" }
|
|
62
76
|
},
|
|
63
77
|
compoundVariants: [
|
|
78
|
+
// `clean` has no sides and no width floor at any size, as `.ws-kit-button--clean`.
|
|
79
|
+
{ variant: "clean", class: "min-w-0 px-0" },
|
|
64
80
|
{
|
|
65
81
|
shadow: true,
|
|
66
82
|
variant: ["primary", "secondary", "navy", "tertiary"],
|
|
@@ -92,16 +108,16 @@ import { forwardRef as forwardRef2 } from "react";
|
|
|
92
108
|
import { cva as cva2 } from "class-variance-authority";
|
|
93
109
|
import { jsx } from "react/jsx-runtime";
|
|
94
110
|
var badgeVariants = cva2(
|
|
95
|
-
"inline-flex items-center gap-[var(--space-xxs)] rounded-[var(--radius-full)] px-[
|
|
111
|
+
"inline-flex h-[var(--space-lg)] items-center gap-[var(--space-xxs)] rounded-[var(--radius-full)] px-[var(--space-xs-plus)] py-0 text-[length:var(--font-size-2xs)] font-medium leading-[var(--space-md)] whitespace-nowrap",
|
|
96
112
|
{
|
|
97
113
|
variants: {
|
|
98
114
|
tone: {
|
|
99
|
-
neutral: "bg-[var(--
|
|
115
|
+
neutral: "bg-[color:var(--ws-track)] text-[color:var(--color-text-heading)]",
|
|
100
116
|
brand: "bg-[color-mix(in_srgb,var(--color-brand-salmon)_12%,transparent)] text-[color:var(--color-text-brand-strong)]",
|
|
101
|
-
navy: "bg-[color-mix(in_srgb,var(--color-
|
|
117
|
+
navy: "bg-[color-mix(in_srgb,var(--color-text-heading)_10%,transparent)] text-[color:var(--color-text-heading)]",
|
|
102
118
|
success: "bg-[var(--color-feedback-success-bg)] text-[color:var(--color-text-success-strong)]",
|
|
103
119
|
error: "bg-[color-mix(in_srgb,var(--color-feedback-error)_14%,transparent)] text-[color:var(--color-text-error-strong)]",
|
|
104
|
-
outline: "
|
|
120
|
+
outline: "shadow-[inset_0_0_0_var(--ws-line)_var(--color-border-hairline)] text-[color:var(--color-text-body)]"
|
|
105
121
|
}
|
|
106
122
|
},
|
|
107
123
|
defaultVariants: { tone: "neutral" }
|
|
@@ -115,15 +131,18 @@ var Badge = forwardRef2(function Badge2({ className, tone, ...props }, ref) {
|
|
|
115
131
|
import { forwardRef as forwardRef3 } from "react";
|
|
116
132
|
import { cva as cva3 } from "class-variance-authority";
|
|
117
133
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
118
|
-
var cardVariants = cva3("rounded-[var(--radius-
|
|
134
|
+
var cardVariants = cva3("min-w-0 rounded-[var(--ws-radius-control)] border", {
|
|
119
135
|
variants: {
|
|
120
136
|
surface: {
|
|
121
|
-
white: "bg-[var(--color-
|
|
122
|
-
tinted: "bg-[var(--
|
|
123
|
-
transparent: "bg-transparent border-[var(--color-border-hairline)]"
|
|
137
|
+
white: "bg-[color:var(--color-surface)] border-[color:var(--color-border-default)]",
|
|
138
|
+
tinted: "bg-[color:var(--ws-surface-sunk)] border-[color:var(--color-border-default)]",
|
|
139
|
+
transparent: "bg-transparent border-[color:var(--color-border-hairline)]"
|
|
124
140
|
},
|
|
125
141
|
interactive: {
|
|
126
|
-
true:
|
|
142
|
+
true: [
|
|
143
|
+
"block cursor-pointer text-[color:inherit] no-underline hover:bg-[image:linear-gradient(var(--color-nav-hover-bg),var(--color-nav-hover-bg))]",
|
|
144
|
+
"focus-visible:outline-solid focus-visible:outline-[length:var(--ws-focus-width)] focus-visible:outline-[color:var(--ws-focus-color)] focus-visible:outline-offset-[var(--ws-focus-offset)]"
|
|
145
|
+
],
|
|
127
146
|
false: ""
|
|
128
147
|
}
|
|
129
148
|
},
|
|
@@ -151,7 +170,7 @@ var CardTitle = forwardRef3(
|
|
|
151
170
|
{
|
|
152
171
|
ref,
|
|
153
172
|
className: cn(
|
|
154
|
-
"text-[length:var(--font-size-2xl)] font-medium leading-[
|
|
173
|
+
"text-[length:var(--font-size-2xl)] font-medium leading-[var(--space-xl)] text-[color:var(--color-text-heading)] text-balance wrap-break-word hyphens-auto",
|
|
155
174
|
className
|
|
156
175
|
),
|
|
157
176
|
...props
|
|
@@ -165,7 +184,7 @@ var CardDescription = forwardRef3(function CardDescription2({ className, ...prop
|
|
|
165
184
|
{
|
|
166
185
|
ref,
|
|
167
186
|
className: cn(
|
|
168
|
-
"text-[length:var(--font-size-sm)] leading-[
|
|
187
|
+
"text-[length:var(--font-size-sm)] leading-[calc(var(--space-md)+var(--space-xxs))] text-[color:var(--color-text-muted)]",
|
|
169
188
|
className
|
|
170
189
|
),
|
|
171
190
|
...props
|
|
@@ -183,7 +202,7 @@ var CardFooter = forwardRef3(
|
|
|
183
202
|
"div",
|
|
184
203
|
{
|
|
185
204
|
ref,
|
|
186
|
-
className: cn("flex items-center gap-[var(--space-sm)] p-[var(--space-lg)] pt-0", className),
|
|
205
|
+
className: cn("flex flex-wrap items-center gap-[var(--space-sm)] p-[var(--space-lg)] pt-0", className),
|
|
187
206
|
...props
|
|
188
207
|
}
|
|
189
208
|
);
|
|
@@ -197,8 +216,8 @@ var Checkbox = forwardRef4(function Checkbox2({ className, label, description, i
|
|
|
197
216
|
const generated = useId();
|
|
198
217
|
const inputId = id ?? generated;
|
|
199
218
|
const descriptionId = `${inputId}-description`;
|
|
200
|
-
return /* @__PURE__ */ jsxs2("div", { className: "flex gap-[var(--space-
|
|
201
|
-
/* @__PURE__ */ jsxs2("span", { className: "relative mt-[
|
|
219
|
+
return /* @__PURE__ */ jsxs2("div", { className: "relative flex gap-[var(--space-xs-plus)]", children: [
|
|
220
|
+
/* @__PURE__ */ jsxs2("span", { className: "relative mt-[var(--ws-line)] inline-flex size-[calc(var(--space-md)+var(--space-3xs))] shrink-0", children: [
|
|
202
221
|
/* @__PURE__ */ jsx3(
|
|
203
222
|
"input",
|
|
204
223
|
{
|
|
@@ -209,11 +228,14 @@ var Checkbox = forwardRef4(function Checkbox2({ className, label, description, i
|
|
|
209
228
|
"aria-describedby": description ? descriptionId : void 0,
|
|
210
229
|
className: cn(
|
|
211
230
|
"peer h-full w-full cursor-pointer appearance-none",
|
|
212
|
-
"rounded-[var(--radius-
|
|
213
|
-
"
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
|
|
231
|
+
"rounded-[var(--ws-radius-control)] border-0 bg-[color:var(--color-bg-page)]",
|
|
232
|
+
"shadow-[inset_0_0_0_calc(var(--ws-line)*1.5)_var(--color-text-heading)]",
|
|
233
|
+
"aria-[invalid=true]:not-checked:shadow-[inset_0_0_0_calc(var(--ws-line)*1.5)_var(--ws-word-needs)]",
|
|
234
|
+
"motion-safe:transition-[background-color,box-shadow] motion-safe:duration-150 motion-safe:ease-out",
|
|
235
|
+
// Hover washes an empty, enabled box only, where the pointer really hovers: the chosen one stays navy.
|
|
236
|
+
"enabled:not-checked:hover:bg-[image:linear-gradient(var(--ws-hover-strong),var(--ws-hover-strong))]",
|
|
237
|
+
"checked:bg-[color:var(--color-text-heading)] checked:shadow-none",
|
|
238
|
+
"focus-visible:outline-solid focus-visible:outline-[length:var(--ws-focus-width)] focus-visible:outline-[color:var(--ws-focus-color)] focus-visible:outline-offset-[var(--ws-focus-offset)]",
|
|
217
239
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
218
240
|
className
|
|
219
241
|
),
|
|
@@ -226,12 +248,12 @@ var Checkbox = forwardRef4(function Checkbox2({ className, label, description, i
|
|
|
226
248
|
"aria-hidden": true,
|
|
227
249
|
viewBox: "0 0 16 16",
|
|
228
250
|
fill: "none",
|
|
229
|
-
className: "pointer-events-none absolute inset-0
|
|
251
|
+
className: "pointer-events-none absolute inset-0 m-auto size-[var(--ws-icon-sm)] text-[color:var(--ws-on-act)] opacity-0 motion-safe:transition-opacity motion-safe:duration-150 peer-checked:opacity-100",
|
|
230
252
|
children: /* @__PURE__ */ jsx3(
|
|
231
253
|
"path",
|
|
232
254
|
{
|
|
233
255
|
d: "M3.5 8.5l3 3 6-6",
|
|
234
|
-
stroke: "
|
|
256
|
+
stroke: "currentColor",
|
|
235
257
|
strokeWidth: "2",
|
|
236
258
|
strokeLinecap: "round",
|
|
237
259
|
strokeLinejoin: "round"
|
|
@@ -246,7 +268,9 @@ var Checkbox = forwardRef4(function Checkbox2({ className, label, description, i
|
|
|
246
268
|
{
|
|
247
269
|
htmlFor: inputId,
|
|
248
270
|
className: cn(
|
|
249
|
-
"block text-[length:var(--
|
|
271
|
+
"block text-[length:var(--ws-text-body)] leading-[calc(var(--space-md)+var(--space-xxs))] font-medium text-[color:var(--color-text-heading)]",
|
|
272
|
+
// Touch: the label's hit area covers the whole row, box included, 44px tall (the public floor).
|
|
273
|
+
"pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:inset-y-[min(0px,calc((100%-var(--ws-touch-public))/2))] pointer-coarse:after:content-['']",
|
|
250
274
|
disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"
|
|
251
275
|
),
|
|
252
276
|
children: label
|
|
@@ -257,7 +281,7 @@ var Checkbox = forwardRef4(function Checkbox2({ className, label, description, i
|
|
|
257
281
|
{
|
|
258
282
|
id: descriptionId,
|
|
259
283
|
className: cn(
|
|
260
|
-
"m-0 text-[length:var(--font-size-2xs)] leading-[
|
|
284
|
+
"m-0 text-[length:var(--font-size-2xs)] leading-[var(--space-md)] text-[color:var(--color-text-muted)]",
|
|
261
285
|
disabled && "opacity-50"
|
|
262
286
|
),
|
|
263
287
|
children: description
|
|
@@ -280,7 +304,7 @@ var Label = forwardRef5(
|
|
|
280
304
|
{
|
|
281
305
|
ref,
|
|
282
306
|
className: cn(
|
|
283
|
-
"text-[length:var(--font-size-2xs)] font-medium leading-[
|
|
307
|
+
"text-[length:var(--font-size-2xs)] font-medium leading-[var(--space-md)] text-[color:var(--color-text-body)]",
|
|
284
308
|
"peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
285
309
|
className
|
|
286
310
|
),
|
|
@@ -297,7 +321,7 @@ var Input = forwardRef6(function Input2({ className, label, error, hint, id, ...
|
|
|
297
321
|
const inputId = id ?? generated;
|
|
298
322
|
const messageId = `${inputId}-message`;
|
|
299
323
|
const message = error ?? hint;
|
|
300
|
-
return /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-[var(--space-xxs)]", children: [
|
|
324
|
+
return /* @__PURE__ */ jsxs3("div", { className: "flex min-w-0 flex-col gap-[var(--space-xxs)]", children: [
|
|
301
325
|
label && /* @__PURE__ */ jsx5(Label, { htmlFor: inputId, children: label }),
|
|
302
326
|
/* @__PURE__ */ jsx5(
|
|
303
327
|
"input",
|
|
@@ -307,15 +331,16 @@ var Input = forwardRef6(function Input2({ className, label, error, hint, id, ...
|
|
|
307
331
|
"aria-invalid": error ? true : void 0,
|
|
308
332
|
"aria-describedby": message ? messageId : void 0,
|
|
309
333
|
className: cn(
|
|
310
|
-
"h-[
|
|
311
|
-
"bg-[var(--
|
|
312
|
-
"border border-[var(--color-border-default)]",
|
|
334
|
+
"h-[var(--space-2xl)] w-full rounded-[var(--ws-radius-row)] px-[var(--space-sm)] py-0",
|
|
335
|
+
"bg-[color:var(--ws-field)] text-[length:var(--font-size-sm)] text-[color:var(--ws-field-ink)]",
|
|
336
|
+
"border border-[color:var(--color-border-default)]",
|
|
313
337
|
"placeholder:text-[color:var(--color-text-placeholder)]",
|
|
314
|
-
"transition-[border-color
|
|
315
|
-
"hover:border-[var(--
|
|
316
|
-
"outline-
|
|
338
|
+
"motion-safe:transition-[border-color] motion-safe:duration-150 motion-safe:ease-out",
|
|
339
|
+
"enabled:hover:border-[color:var(--ws-edge-hover)]",
|
|
340
|
+
"focus-visible:outline-solid focus-visible:outline-[length:var(--ws-focus-width)] focus-visible:outline-[color:var(--ws-focus-color)] focus-visible:outline-offset-[var(--ws-focus-offset)]",
|
|
341
|
+
"pointer-coarse:h-[var(--ws-touch-public)] pointer-coarse:text-[length:var(--font-size-md)]",
|
|
317
342
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
318
|
-
error && "border-[var(--color-brand-salmon)]",
|
|
343
|
+
error && "border-[color:var(--color-brand-salmon)] enabled:hover:border-[color:var(--color-brand-salmon)]",
|
|
319
344
|
className
|
|
320
345
|
),
|
|
321
346
|
...props
|
|
@@ -326,7 +351,7 @@ var Input = forwardRef6(function Input2({ className, label, error, hint, id, ...
|
|
|
326
351
|
{
|
|
327
352
|
id: messageId,
|
|
328
353
|
className: cn(
|
|
329
|
-
"text-[length:var(--font-size-2xs)] leading-[
|
|
354
|
+
"m-0 text-[length:var(--font-size-2xs)] leading-[var(--space-md)]",
|
|
330
355
|
error ? "text-[color:var(--color-text-error-strong)]" : "text-[color:var(--color-text-muted)]"
|
|
331
356
|
),
|
|
332
357
|
children: message
|
|
@@ -347,8 +372,8 @@ var Radio = forwardRef7(function Radio2({ className, label, description, id, dis
|
|
|
347
372
|
const isDisabled = disabled ?? group?.disabled;
|
|
348
373
|
const resolvedName = name ?? group?.name;
|
|
349
374
|
const resolvedChecked = checked ?? (group && value !== void 0 ? group.value === value : void 0);
|
|
350
|
-
return /* @__PURE__ */ jsxs4("div", { className: "flex gap-[var(--space-sm)]", children: [
|
|
351
|
-
/* @__PURE__ */ jsxs4("span", { className: "relative mt-[
|
|
375
|
+
return /* @__PURE__ */ jsxs4("div", { className: "relative flex gap-[var(--space-sm)]", children: [
|
|
376
|
+
/* @__PURE__ */ jsxs4("span", { className: "relative mt-[var(--ws-line)] inline-flex size-[calc(var(--space-md)+var(--space-3xs))] shrink-0", children: [
|
|
352
377
|
/* @__PURE__ */ jsx6(
|
|
353
378
|
"input",
|
|
354
379
|
{
|
|
@@ -366,11 +391,12 @@ var Radio = forwardRef7(function Radio2({ className, label, description, id, dis
|
|
|
366
391
|
},
|
|
367
392
|
className: cn(
|
|
368
393
|
"peer h-full w-full cursor-pointer appearance-none",
|
|
369
|
-
"rounded-[var(--radius-full)] border border-[var(--
|
|
370
|
-
"transition-[border-color
|
|
371
|
-
|
|
372
|
-
"checked:border-[var(--
|
|
373
|
-
"
|
|
394
|
+
"rounded-[var(--radius-full)] border border-[color:var(--ws-edge-card)] bg-[color:var(--ws-field)]",
|
|
395
|
+
"motion-safe:transition-[border-color] motion-safe:duration-150 motion-safe:ease-out",
|
|
396
|
+
// Hover firms an empty, enabled box only: the chosen one keeps its navy edge under the pointer.
|
|
397
|
+
"enabled:not-checked:hover:border-[color:var(--ws-edge-hover)]",
|
|
398
|
+
"checked:border-[color:var(--color-text-heading)]",
|
|
399
|
+
"focus-visible:outline-solid focus-visible:outline-[length:var(--ws-focus-width)] focus-visible:outline-[color:var(--ws-focus-color)] focus-visible:outline-offset-[var(--ws-focus-offset)]",
|
|
374
400
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
375
401
|
className
|
|
376
402
|
),
|
|
@@ -381,7 +407,7 @@ var Radio = forwardRef7(function Radio2({ className, label, description, id, dis
|
|
|
381
407
|
"span",
|
|
382
408
|
{
|
|
383
409
|
"aria-hidden": true,
|
|
384
|
-
className: "pointer-events-none absolute left-1/2 top-1/2
|
|
410
|
+
className: "pointer-events-none absolute left-1/2 top-1/2 size-[var(--space-xs)] -translate-x-1/2 -translate-y-1/2 scale-50 rounded-[var(--radius-full)] bg-[color:var(--color-text-heading)] opacity-0 motion-safe:transition-[opacity,transform] motion-safe:duration-150 peer-checked:scale-100 peer-checked:opacity-100"
|
|
385
411
|
}
|
|
386
412
|
)
|
|
387
413
|
] }),
|
|
@@ -391,7 +417,9 @@ var Radio = forwardRef7(function Radio2({ className, label, description, id, dis
|
|
|
391
417
|
{
|
|
392
418
|
htmlFor: inputId,
|
|
393
419
|
className: cn(
|
|
394
|
-
"block text-[length:var(--font-size-sm)] leading-[
|
|
420
|
+
"block text-[length:var(--font-size-sm)] leading-[calc(var(--space-md)+var(--space-xxs))] text-[color:var(--color-text-heading)]",
|
|
421
|
+
// Touch: the label's hit area covers the whole row, box included, 44px tall (the public floor).
|
|
422
|
+
"pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:inset-y-[min(0px,calc((100%-var(--ws-touch-public))/2))] pointer-coarse:after:content-['']",
|
|
395
423
|
isDisabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"
|
|
396
424
|
),
|
|
397
425
|
children: label
|
|
@@ -402,7 +430,7 @@ var Radio = forwardRef7(function Radio2({ className, label, description, id, dis
|
|
|
402
430
|
{
|
|
403
431
|
id: descriptionId,
|
|
404
432
|
className: cn(
|
|
405
|
-
"m-0 text-[length:var(--font-size-2xs)] leading-[
|
|
433
|
+
"m-0 text-[length:var(--font-size-2xs)] leading-[var(--space-md)] text-[color:var(--color-text-muted)]",
|
|
406
434
|
isDisabled && "opacity-50"
|
|
407
435
|
),
|
|
408
436
|
children: description
|
|
@@ -420,8 +448,8 @@ var RadioGroup = forwardRef7(function RadioGroup2({ className, name, legend, val
|
|
|
420
448
|
disabled,
|
|
421
449
|
...props,
|
|
422
450
|
children: [
|
|
423
|
-
legend && /* @__PURE__ */ jsx6("legend", { className: "mb-[var(--space-sm)] p-0 text-[length:var(--font-size-2xs)] font-medium leading-[
|
|
424
|
-
/* @__PURE__ */ jsx6("div", { className: "flex flex-col gap-[var(--space-sm)]", children })
|
|
451
|
+
legend && /* @__PURE__ */ jsx6("legend", { className: "mb-[var(--space-sm)] p-0 text-[length:var(--font-size-2xs)] font-medium leading-[var(--space-md)] text-[color:var(--color-text-body)]", children: legend }),
|
|
452
|
+
/* @__PURE__ */ jsx6("div", { className: "flex flex-col gap-[var(--space-sm)] pointer-coarse:gap-[var(--space-lg)]", children })
|
|
425
453
|
]
|
|
426
454
|
}
|
|
427
455
|
) });
|
|
@@ -444,8 +472,8 @@ var TabsList = forwardRef8(function TabsList2({ className, ...props }, ref) {
|
|
|
444
472
|
{
|
|
445
473
|
ref,
|
|
446
474
|
className: cn(
|
|
447
|
-
"
|
|
448
|
-
variant === "underline" ? "gap-[var(--space-
|
|
475
|
+
"items-center",
|
|
476
|
+
variant === "underline" ? "flex gap-[var(--space-md)] overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden shadow-[inset_0_calc(var(--ws-line)*-1)_0_var(--ws-edge-slot)]" : "inline-flex max-w-full gap-[var(--space-3xs)] rounded-[var(--radius-full)] bg-[color:var(--ws-surface-sunk)] p-[var(--ws-halo)]",
|
|
449
477
|
className
|
|
450
478
|
),
|
|
451
479
|
...props
|
|
@@ -459,23 +487,31 @@ var TabsTrigger = forwardRef8(function TabsTrigger2({ className, ...props }, ref
|
|
|
459
487
|
{
|
|
460
488
|
ref,
|
|
461
489
|
className: cn(
|
|
462
|
-
"cursor-pointer whitespace-nowrap border-0 bg-transparent font-medium",
|
|
463
|
-
"text-[length:var(--font-size-sm)] text-[color:var(--color-text-
|
|
464
|
-
"transition-[color,background-color,border-color] duration-150 ease-out",
|
|
490
|
+
"inline-flex shrink-0 cursor-pointer items-center whitespace-nowrap border-0 bg-transparent font-medium",
|
|
491
|
+
"text-[length:var(--font-size-sm)] text-[color:var(--color-text-body)]",
|
|
492
|
+
"motion-safe:transition-[color,background-color,border-color] motion-safe:duration-150 motion-safe:ease-out",
|
|
465
493
|
"hover:text-[color:var(--color-text-heading)]",
|
|
466
|
-
"focus-visible:outline-
|
|
494
|
+
"focus-visible:outline-solid focus-visible:outline-[length:var(--ws-focus-width)] focus-visible:outline-[color:var(--ws-focus-color)] focus-visible:outline-offset-[calc(var(--ws-focus-width)*-1)]",
|
|
495
|
+
"pointer-coarse:min-h-[var(--ws-touch-public)]",
|
|
467
496
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
468
497
|
variant === "underline" ? [
|
|
469
498
|
// The transparent border is load-bearing: it reserves the 2px so
|
|
470
|
-
// selecting a tab does not shift the row by two pixels.
|
|
471
|
-
|
|
472
|
-
|
|
499
|
+
// selecting a tab does not shift the row by two pixels. It sits
|
|
500
|
+
// over the list's hairline (an inset shadow, not a border, so the
|
|
501
|
+
// rule stays inside the scroller and is not clipped). The 4px
|
|
502
|
+
// sides hold the inset focus ring off the words, as .ws-tabs__tab.
|
|
503
|
+
"border-b-[length:var(--ws-ring)] border-b-transparent px-[var(--space-xxs)] pb-[var(--space-xs-plus)]",
|
|
504
|
+
"data-[state=active]:border-b-[color:var(--color-text-heading)]",
|
|
473
505
|
"data-[state=active]:text-[color:var(--color-text-heading)]"
|
|
474
506
|
] : [
|
|
475
|
-
"rounded-[var(--radius-full)] px-[
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
"data-[state=active]:
|
|
507
|
+
"rounded-[var(--radius-full)] px-[var(--space-sm-plus)] py-[var(--space-xxs-plus)]",
|
|
508
|
+
// The chosen tab is the navy thumb with the act's word, as `.ws-segmented__item`: a white thumb was
|
|
509
|
+
// the surface on the sunk track, 1.05:1 in dark, with a shadow that does not show there.
|
|
510
|
+
"data-[state=active]:bg-[color:var(--color-text-heading)]",
|
|
511
|
+
"data-[state=active]:text-[color:var(--ws-on-act)]",
|
|
512
|
+
// The focused tab is the chosen one (Radix moves both together), so the ring stands 2px off the navy
|
|
513
|
+
// thumb instead of inside it, where it would be navy on navy. A pill set does not scroll, so nothing clips it.
|
|
514
|
+
"focus-visible:outline-offset-[var(--ws-focus-offset)]"
|
|
479
515
|
],
|
|
480
516
|
className
|
|
481
517
|
),
|
|
@@ -489,7 +525,7 @@ var TabsContent = forwardRef8(function TabsContent2({ className, ...props }, ref
|
|
|
489
525
|
{
|
|
490
526
|
ref,
|
|
491
527
|
className: cn(
|
|
492
|
-
"mt-[var(--space-lg)] focus-visible:outline-
|
|
528
|
+
"mt-[var(--space-lg)] focus-visible:outline-solid focus-visible:outline-[length:var(--ws-focus-width)] focus-visible:outline-[color:var(--ws-focus-color)] focus-visible:outline-offset-[var(--ws-focus-offset)]",
|
|
493
529
|
className
|
|
494
530
|
),
|
|
495
531
|
...props
|
|
@@ -505,7 +541,7 @@ function Skeleton({ className, ...props }) {
|
|
|
505
541
|
{
|
|
506
542
|
"aria-hidden": true,
|
|
507
543
|
className: cn(
|
|
508
|
-
"
|
|
544
|
+
"ws-shimmer rounded-[var(--ws-radius-control)] bg-[image:var(--ws-shimmer)] bg-[length:300%_100%]",
|
|
509
545
|
className
|
|
510
546
|
),
|
|
511
547
|
...props
|
|
@@ -519,22 +555,666 @@ function Stat({ label, value, note, tone = "default", pending = false, className
|
|
|
519
555
|
const toneColor = {
|
|
520
556
|
default: "text-[color:var(--color-text-heading)]",
|
|
521
557
|
positive: "text-[color:var(--color-stat-positive)]",
|
|
522
|
-
brand: "text-[color:var(--color-brand-
|
|
558
|
+
brand: "text-[color:var(--color-text-brand-strong)]",
|
|
523
559
|
muted: "text-[color:var(--color-text-muted)]"
|
|
524
560
|
}[tone];
|
|
525
561
|
return /* @__PURE__ */ jsxs5("div", { className: cn("min-w-0", className), children: [
|
|
526
|
-
/* @__PURE__ */ jsx9("div", { className: "text-[length:var(--font-size-
|
|
527
|
-
/* @__PURE__ */ jsx9(
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
562
|
+
/* @__PURE__ */ jsx9("div", { className: "text-[length:var(--font-size-2xs)] leading-[var(--space-md)] font-semibold uppercase tracking-[var(--letter-spacing-overline)] text-[color:var(--color-text-muted)]", children: label }),
|
|
563
|
+
/* @__PURE__ */ jsx9(
|
|
564
|
+
"div",
|
|
565
|
+
{
|
|
566
|
+
className: cn(
|
|
567
|
+
"mt-[var(--space-xxs)] text-[length:var(--ws-text-figure-row)] leading-[var(--ws-leading-figure-row)] font-semibold tabular-nums",
|
|
568
|
+
toneColor
|
|
569
|
+
),
|
|
570
|
+
"aria-busy": pending || void 0,
|
|
571
|
+
children: pending ? /* @__PURE__ */ jsx9("span", { className: "ws-shimmer block h-[var(--ws-leading-figure-row)] w-[var(--space-5xl)] rounded-[var(--ws-radius-row)] bg-[image:var(--ws-shimmer)] bg-[length:300%_100%]", children: /* @__PURE__ */ jsx9("span", { className: "sr-only", children: "Loading" }) }) : value === null ? (
|
|
572
|
+
// Real text, not an aria-label: a screen reader should hear the same
|
|
573
|
+
// "no data" the sighted reader sees.
|
|
574
|
+
/* @__PURE__ */ jsxs5("span", { className: "text-[color:var(--color-text-muted)]", children: [
|
|
575
|
+
/* @__PURE__ */ jsx9("span", { "aria-hidden": true, children: "\u2013" }),
|
|
576
|
+
/* @__PURE__ */ jsx9("span", { className: "sr-only", children: "No data" })
|
|
577
|
+
] })
|
|
578
|
+
) : value
|
|
579
|
+
}
|
|
580
|
+
),
|
|
581
|
+
note && /* @__PURE__ */ jsx9("div", { className: "mt-[var(--space-xxs)] text-[length:var(--font-size-2xs)] leading-[var(--space-md)] text-[color:var(--color-text-muted)]", children: note })
|
|
536
582
|
] });
|
|
537
583
|
}
|
|
584
|
+
|
|
585
|
+
// src/lib/motion.ts
|
|
586
|
+
var reduced = () => typeof matchMedia === "function" && matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
587
|
+
var last = 0;
|
|
588
|
+
var lifted = /* @__PURE__ */ new WeakMap();
|
|
589
|
+
var FOCUSABLE = 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), summary, [tabindex]:not([tabindex="-1"])';
|
|
590
|
+
function place(el, close) {
|
|
591
|
+
const was = lifted.get(el);
|
|
592
|
+
if (was) {
|
|
593
|
+
lifted.delete(el);
|
|
594
|
+
el.removeEventListener("keydown", was.onKey);
|
|
595
|
+
if (el.matches(":popover-open")) el.hidePopover();
|
|
596
|
+
el.removeAttribute("popover");
|
|
597
|
+
delete el.dataset.wsLifted;
|
|
598
|
+
}
|
|
599
|
+
if (getComputedStyle(el).position === "fixed" && typeof el.showPopover === "function") {
|
|
600
|
+
const onKey = (e) => {
|
|
601
|
+
if (e.key !== "Escape" || e.defaultPrevented || el.querySelector(":popover-open, dialog[open]")) return;
|
|
602
|
+
e.preventDefault();
|
|
603
|
+
void morph(close, { as: "full", el, close });
|
|
604
|
+
};
|
|
605
|
+
el.dataset.wsLifted = "";
|
|
606
|
+
el.popover = "manual";
|
|
607
|
+
el.showPopover();
|
|
608
|
+
el.addEventListener("keydown", onKey);
|
|
609
|
+
lifted.set(el, { opener: was ? was.opener : document.activeElement, onKey });
|
|
610
|
+
if (!el.contains(document.activeElement)) {
|
|
611
|
+
const to = el.querySelector("[autofocus]") ?? el.querySelector(FOCUSABLE) ?? el;
|
|
612
|
+
if (to === el && !el.hasAttribute("tabindex")) el.tabIndex = -1;
|
|
613
|
+
to.focus({ preventScroll: true });
|
|
614
|
+
}
|
|
615
|
+
} else if (was) {
|
|
616
|
+
const opener = was.opener, here = document.activeElement;
|
|
617
|
+
if (opener?.isConnected && opener !== here && (!here || here === document.body || el.contains(here))) opener.focus({ preventScroll: true });
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
function morph(update, { as = "full", el, close } = {}) {
|
|
621
|
+
const run = as === "full" && el ? async () => {
|
|
622
|
+
await update();
|
|
623
|
+
place(el, close ?? update);
|
|
624
|
+
} : update;
|
|
625
|
+
if (typeof document === "undefined" || !("startViewTransition" in document) || reduced()) {
|
|
626
|
+
try {
|
|
627
|
+
return Promise.resolve(run()).then(() => {
|
|
628
|
+
});
|
|
629
|
+
} catch (error) {
|
|
630
|
+
return Promise.reject(error);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
const root = document.documentElement;
|
|
634
|
+
const id = ++last;
|
|
635
|
+
if (el) {
|
|
636
|
+
const s = getComputedStyle(el);
|
|
637
|
+
root.style.setProperty("--ws-morph-ground", s.backgroundColor);
|
|
638
|
+
root.style.setProperty("--ws-morph-radius", s.borderRadius);
|
|
639
|
+
root.style.setProperty("--ws-morph-backdrop", s.backdropFilter || "none");
|
|
640
|
+
el.style.viewTransitionName = "ws-morph";
|
|
641
|
+
}
|
|
642
|
+
root.dataset.wsMorph = as;
|
|
643
|
+
const move = document.startViewTransition(run);
|
|
644
|
+
move.ready.catch(() => {
|
|
645
|
+
});
|
|
646
|
+
return move.finished.finally(() => {
|
|
647
|
+
if (el) el.style.viewTransitionName = "";
|
|
648
|
+
if (id !== last) return;
|
|
649
|
+
delete root.dataset.wsMorph;
|
|
650
|
+
for (const p of ["--ws-morph-ground", "--ws-morph-radius", "--ws-morph-backdrop"]) root.style.removeProperty(p);
|
|
651
|
+
});
|
|
652
|
+
}
|
|
653
|
+
function rollPlaceholder(roll, every = 3400) {
|
|
654
|
+
const lines = [...roll.children];
|
|
655
|
+
let at = 0;
|
|
656
|
+
lines[0]?.setAttribute("data-on", "");
|
|
657
|
+
if (lines.length < 2 || reduced()) return () => {
|
|
658
|
+
};
|
|
659
|
+
const timer = setInterval(() => {
|
|
660
|
+
const was = lines[at];
|
|
661
|
+
at = (at + 1) % lines.length;
|
|
662
|
+
const next = lines[at];
|
|
663
|
+
for (const l of lines) l.removeAttribute("data-off");
|
|
664
|
+
next.removeAttribute("data-on");
|
|
665
|
+
void next.offsetWidth;
|
|
666
|
+
was.removeAttribute("data-on");
|
|
667
|
+
was.setAttribute("data-off", "");
|
|
668
|
+
next.setAttribute("data-on", "");
|
|
669
|
+
}, every);
|
|
670
|
+
return () => clearInterval(timer);
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
// src/lib/reorder.ts
|
|
674
|
+
var ROWS = ".ws-kanban-board__card, .ws-list-detail__rows > li, .ws-side-list__picks > li";
|
|
675
|
+
function spring() {
|
|
676
|
+
const s = getComputedStyle(document.documentElement);
|
|
677
|
+
const easing = s.getPropertyValue("--ws-spring-reorder").trim(), duration = parseFloat(s.getPropertyValue("--ws-spring-reorder-duration"));
|
|
678
|
+
return easing && duration > 0 ? { duration, easing } : null;
|
|
679
|
+
}
|
|
680
|
+
var ids = /* @__PURE__ */ new WeakMap();
|
|
681
|
+
var count = 0;
|
|
682
|
+
function inView(el) {
|
|
683
|
+
const r = el.getBoundingClientRect();
|
|
684
|
+
if (r.bottom < 0 || r.right < 0 || r.top > innerHeight || r.left > innerWidth) return false;
|
|
685
|
+
for (let p = el.parentElement; p; p = p.parentElement) {
|
|
686
|
+
const s = getComputedStyle(p);
|
|
687
|
+
if (s.overflowX === "visible" && s.overflowY === "visible") continue;
|
|
688
|
+
const c = p.getBoundingClientRect(), top = c.top + p.clientTop, left = c.left + p.clientLeft;
|
|
689
|
+
if (r.top < top - 1 || r.left < left - 1 || r.bottom > top + p.clientHeight + 1 || r.right > left + p.clientWidth + 1) return false;
|
|
690
|
+
}
|
|
691
|
+
return true;
|
|
692
|
+
}
|
|
693
|
+
function reorder(update, within = document, rows = ROWS) {
|
|
694
|
+
const d = typeof document === "undefined" ? null : document;
|
|
695
|
+
if (!d?.startViewTransition || matchMedia("(prefers-reduced-motion: reduce)").matches) return Promise.resolve(update()).then(() => {
|
|
696
|
+
});
|
|
697
|
+
const kept = /* @__PURE__ */ new Map(), from = /* @__PURE__ */ new Map(), raised = [];
|
|
698
|
+
const name = (after) => within.querySelectorAll(rows).forEach((el) => {
|
|
699
|
+
if (!kept.has(el)) kept.set(el, el.style.viewTransitionName);
|
|
700
|
+
if (!ids.has(el)) ids.set(el, `ws-row-${el.dataset.key || el.id || `auto-${++count}`}`);
|
|
701
|
+
const id = CSS.escape(ids.get(el));
|
|
702
|
+
el.style.viewTransitionName = inView(el) ? id : kept.get(el);
|
|
703
|
+
if (!after) from.set(id, el.parentElement);
|
|
704
|
+
else if (from.has(id) && from.get(id) !== el.parentElement) raised.push(id);
|
|
705
|
+
});
|
|
706
|
+
name(false);
|
|
707
|
+
const t = d.startViewTransition(async () => {
|
|
708
|
+
await update();
|
|
709
|
+
name(true);
|
|
710
|
+
});
|
|
711
|
+
t.ready.then(() => {
|
|
712
|
+
const timing = spring();
|
|
713
|
+
for (const a of d.getAnimations()) {
|
|
714
|
+
const fx = a.effect;
|
|
715
|
+
if (timing && fx?.pseudoElement?.startsWith("::view-transition-group(") && fx.pseudoElement !== "::view-transition-group(root)") fx.updateTiming(timing);
|
|
716
|
+
}
|
|
717
|
+
for (const id of raised) d.documentElement.animate({ zIndex: [1, 1] }, { duration: timing?.duration ?? 250, pseudoElement: `::view-transition-group(${id})` });
|
|
718
|
+
}, () => {
|
|
719
|
+
});
|
|
720
|
+
const restore = () => kept.forEach((v, el) => {
|
|
721
|
+
el.style.viewTransitionName = v;
|
|
722
|
+
});
|
|
723
|
+
t.finished.then(restore, restore);
|
|
724
|
+
return t.updateCallbackDone;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
// tokens/palettes.ts
|
|
728
|
+
var contract = [
|
|
729
|
+
{
|
|
730
|
+
"name": "--color-bg-page",
|
|
731
|
+
"group": "ground",
|
|
732
|
+
"meaning": "The page and every card's surface: the cream most words sit on."
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"name": "--ws-frame-top",
|
|
736
|
+
"group": "ground",
|
|
737
|
+
"meaning": "The top of the page wash behind a glass stage, fading into the page by 640 px; in dark the frame is flat and paints it (the shell, unless a palette says)."
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"name": "--ws-stage-foot",
|
|
741
|
+
"group": "ground",
|
|
742
|
+
"meaning": "The foot of a washed stage, whose gradient starts at the page (light only)."
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
"name": "--color-surface",
|
|
746
|
+
"group": "ground",
|
|
747
|
+
"meaning": "What is white: a marketing card, a well row under the pointer, a chat bubble, the glass of the stage."
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
"name": "--ws-raised",
|
|
751
|
+
"group": "ground",
|
|
752
|
+
"meaning": "What floats off the page: a menu, a popover, a tooltip, a dialog, a panel, a toast."
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
"name": "--ws-tray",
|
|
756
|
+
"group": "ground",
|
|
757
|
+
"meaning": "The rim and foot of a rimmed card, and the well behind rows."
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
"name": "--ws-edge-card",
|
|
761
|
+
"group": "edge",
|
|
762
|
+
"meaning": "A card's and an outlined control's 0.5 px edge."
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
"name": "--ws-edge",
|
|
766
|
+
"group": "edge",
|
|
767
|
+
"meaning": "A divider between rows; a quiet line."
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
"name": "--ws-edge-hover",
|
|
771
|
+
"group": "edge",
|
|
772
|
+
"meaning": "An outlined control's edge under the pointer."
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"name": "--ws-well-hover",
|
|
776
|
+
"group": "edge",
|
|
777
|
+
"meaning": "A rimmed card's rim under the pointer."
|
|
778
|
+
},
|
|
779
|
+
{
|
|
780
|
+
"name": "--color-text-heading",
|
|
781
|
+
"group": "word",
|
|
782
|
+
"meaning": "Titles, names, figures, navy marks, and the act fill (the primary button, a thumb, a checked box)."
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
"name": "--color-text-body",
|
|
786
|
+
"group": "word",
|
|
787
|
+
"meaning": "Body words: a card's line, a row."
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
"name": "--color-text-muted",
|
|
791
|
+
"group": "word",
|
|
792
|
+
"meaning": "Meta, labels, captions."
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
"name": "--color-text-interactive",
|
|
796
|
+
"group": "word",
|
|
797
|
+
"meaning": 'Links and words that go somewhere, a falling number, "working".'
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
"name": "--ws-on-act",
|
|
801
|
+
"group": "act",
|
|
802
|
+
"meaning": "Words and marks on the act fill."
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"name": "--ws-act-hover",
|
|
806
|
+
"group": "act",
|
|
807
|
+
"meaning": "The act fill under the pointer."
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"name": "--ws-word-needs",
|
|
811
|
+
"group": "accent",
|
|
812
|
+
"meaning": "Needs you, in words: the current page, something to fix (the accent's AA step)."
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
"name": "--ws-focus-color",
|
|
816
|
+
"group": "focus",
|
|
817
|
+
"meaning": "The 2 px focus ring, outside or inset."
|
|
818
|
+
},
|
|
819
|
+
{
|
|
820
|
+
"name": "--ws-word-positive",
|
|
821
|
+
"group": "status",
|
|
822
|
+
"meaning": "Good news in words."
|
|
823
|
+
},
|
|
824
|
+
{
|
|
825
|
+
"name": "--ws-word-alert",
|
|
826
|
+
"group": "status",
|
|
827
|
+
"meaning": "Something wrong now, in words."
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
"name": "--ws-chart-finished",
|
|
831
|
+
"group": "chart",
|
|
832
|
+
"meaning": "Tone 1: done, passed, positive marks."
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
"name": "--ws-chart-past-half",
|
|
836
|
+
"group": "chart",
|
|
837
|
+
"meaning": "Tone 2: past halfway marks."
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
"name": "--ws-chart-under-half",
|
|
841
|
+
"group": "chart",
|
|
842
|
+
"meaning": "Tone 3: under halfway marks and needs-you dots."
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
"name": "--ws-chart-navy-light",
|
|
846
|
+
"group": "chart",
|
|
847
|
+
"meaning": "Tone 4: a second navy, for a series beside the heading navy."
|
|
848
|
+
},
|
|
849
|
+
{
|
|
850
|
+
"name": "--ws-chart-needs-work",
|
|
851
|
+
"group": "chart",
|
|
852
|
+
"meaning": "Tone 5: needs work marks."
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"name": "--ws-chart-alert",
|
|
856
|
+
"group": "chart",
|
|
857
|
+
"meaning": "Tone 6: alert marks."
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
"name": "--ws-rating-strong",
|
|
861
|
+
"group": "rating",
|
|
862
|
+
"meaning": "Strong: its marks."
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
"name": "--ws-rating-middle",
|
|
866
|
+
"group": "rating",
|
|
867
|
+
"meaning": "Getting there (the middle band): its marks."
|
|
868
|
+
},
|
|
869
|
+
{
|
|
870
|
+
"name": "--ws-rating-needs-work",
|
|
871
|
+
"group": "rating",
|
|
872
|
+
"meaning": "Needs work: its marks."
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
"name": "--ws-agent-coach",
|
|
876
|
+
"group": "agent",
|
|
877
|
+
"meaning": "The coaching assistant's mark."
|
|
878
|
+
},
|
|
879
|
+
{
|
|
880
|
+
"name": "--ws-agent-growth",
|
|
881
|
+
"group": "agent",
|
|
882
|
+
"meaning": "The growth assistant's mark."
|
|
883
|
+
},
|
|
884
|
+
{
|
|
885
|
+
"name": "--ws-agent-recruit",
|
|
886
|
+
"group": "agent",
|
|
887
|
+
"meaning": "The recruiting assistant's mark."
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
"name": "--ws-agent-tally",
|
|
891
|
+
"group": "agent",
|
|
892
|
+
"meaning": "The money assistant's mark, and a softer act (a figure tab's current cell, a seat meter, a hatch)."
|
|
893
|
+
}
|
|
894
|
+
];
|
|
895
|
+
var palettes = {
|
|
896
|
+
"default": {
|
|
897
|
+
"light": {
|
|
898
|
+
"--color-bg-page": "#fefbf9",
|
|
899
|
+
"--ws-frame-top": "#ebf0f5",
|
|
900
|
+
"--ws-stage-foot": "#fef9f6",
|
|
901
|
+
"--color-surface": "#ffffff",
|
|
902
|
+
"--ws-raised": "#fefbf9",
|
|
903
|
+
"--ws-tray": "#ededed",
|
|
904
|
+
"--ws-edge-card": "#d3d3d3",
|
|
905
|
+
"--ws-edge": "#e8e8e8",
|
|
906
|
+
"--ws-edge-hover": "#aaa49d",
|
|
907
|
+
"--ws-well-hover": "#e4e2df",
|
|
908
|
+
"--color-text-heading": "#093555",
|
|
909
|
+
"--color-text-body": "#545454",
|
|
910
|
+
"--color-text-muted": "#666666",
|
|
911
|
+
"--color-text-interactive": "#495883",
|
|
912
|
+
"--ws-on-act": "#ffffff",
|
|
913
|
+
"--ws-act-hover": "#0f4a73",
|
|
914
|
+
"--ws-word-needs": "#a84b3c",
|
|
915
|
+
"--ws-focus-color": "#093555",
|
|
916
|
+
"--ws-word-positive": "#09717a",
|
|
917
|
+
"--ws-word-alert": "#b1042f",
|
|
918
|
+
"--ws-chart-finished": "#098486",
|
|
919
|
+
"--ws-chart-past-half": "#6d4fc2",
|
|
920
|
+
"--ws-chart-under-half": "#ff725c",
|
|
921
|
+
"--ws-chart-navy-light": "#2e6088",
|
|
922
|
+
"--ws-chart-needs-work": "#f370a4",
|
|
923
|
+
"--ws-chart-alert": "#b1042f",
|
|
924
|
+
"--ws-rating-strong": "#098486",
|
|
925
|
+
"--ws-rating-middle": "#495883",
|
|
926
|
+
"--ws-rating-needs-work": "#f370a4",
|
|
927
|
+
"--ws-agent-coach": "#098486",
|
|
928
|
+
"--ws-agent-growth": "#6d4fc2",
|
|
929
|
+
"--ws-agent-recruit": "#ff725c",
|
|
930
|
+
"--ws-agent-tally": "#2c4870"
|
|
931
|
+
},
|
|
932
|
+
"dark": {
|
|
933
|
+
"--color-bg-page": "#0f1922",
|
|
934
|
+
"--ws-frame-top": "#0a1118",
|
|
935
|
+
"--ws-stage-foot": "#0f1922",
|
|
936
|
+
"--color-surface": "#131e28",
|
|
937
|
+
"--ws-raised": "#16222d",
|
|
938
|
+
"--ws-tray": "#1e2b38",
|
|
939
|
+
"--ws-edge-card": "#273544",
|
|
940
|
+
"--ws-edge": "#1e2a36",
|
|
941
|
+
"--ws-edge-hover": "#8494a5",
|
|
942
|
+
"--ws-well-hover": "#273544",
|
|
943
|
+
"--color-text-heading": "#e8edf3",
|
|
944
|
+
"--color-text-body": "#b0bbc7",
|
|
945
|
+
"--color-text-muted": "#8494a5",
|
|
946
|
+
"--color-text-interactive": "#93a6dc",
|
|
947
|
+
"--ws-on-act": "#0f1922",
|
|
948
|
+
"--ws-act-hover": "#d7dce2",
|
|
949
|
+
"--ws-word-needs": "#ff8b78",
|
|
950
|
+
"--ws-focus-color": "#e8edf3",
|
|
951
|
+
"--ws-word-positive": "#4fc7be",
|
|
952
|
+
"--ws-word-alert": "#ff5470",
|
|
953
|
+
"--ws-chart-finished": "#23a8a3",
|
|
954
|
+
"--ws-chart-past-half": "#9a84ee",
|
|
955
|
+
"--ws-chart-under-half": "#ff725c",
|
|
956
|
+
"--ws-chart-navy-light": "#6e9cc4",
|
|
957
|
+
"--ws-chart-needs-work": "#f370a4",
|
|
958
|
+
"--ws-chart-alert": "#ff5470",
|
|
959
|
+
"--ws-rating-strong": "#3bb8b2",
|
|
960
|
+
"--ws-rating-middle": "#93a6dc",
|
|
961
|
+
"--ws-rating-needs-work": "#f370a4",
|
|
962
|
+
"--ws-agent-coach": "#3bb8b2",
|
|
963
|
+
"--ws-agent-growth": "#9a84ee",
|
|
964
|
+
"--ws-agent-recruit": "#ff725c",
|
|
965
|
+
"--ws-agent-tally": "#e8edf3"
|
|
966
|
+
},
|
|
967
|
+
"navy": {
|
|
968
|
+
"--color-bg-page": "#021a32",
|
|
969
|
+
"--ws-frame-top": "#021a32",
|
|
970
|
+
"--ws-stage-foot": "#021a32",
|
|
971
|
+
"--color-surface": "#0f253c",
|
|
972
|
+
"--ws-raised": "#162c42",
|
|
973
|
+
"--ws-tray": "#2a3f53",
|
|
974
|
+
"--ws-edge-card": "rgba(255, 255, 255, 0.18)",
|
|
975
|
+
"--ws-edge": "rgba(255, 255, 255, 0.1)",
|
|
976
|
+
"--ws-edge-hover": "#a9a9a9",
|
|
977
|
+
"--ws-well-hover": "#273544",
|
|
978
|
+
"--color-text-heading": "#ffffff",
|
|
979
|
+
"--color-text-body": "#d3d3d3",
|
|
980
|
+
"--color-text-muted": "#a9a9a9",
|
|
981
|
+
"--color-text-interactive": "#93a6dc",
|
|
982
|
+
"--ws-on-act": "#021a32",
|
|
983
|
+
"--ws-act-hover": "#ebedef",
|
|
984
|
+
"--ws-word-needs": "#ff8b78",
|
|
985
|
+
"--ws-focus-color": "#ffffff",
|
|
986
|
+
"--ws-word-positive": "#4fc7be",
|
|
987
|
+
"--ws-word-alert": "#ff8282",
|
|
988
|
+
"--ws-chart-finished": "#23a8a3",
|
|
989
|
+
"--ws-chart-past-half": "#9a84ee",
|
|
990
|
+
"--ws-chart-under-half": "#ff725c",
|
|
991
|
+
"--ws-chart-navy-light": "#6e9cc4",
|
|
992
|
+
"--ws-chart-needs-work": "#f370a4",
|
|
993
|
+
"--ws-chart-alert": "#ff5470",
|
|
994
|
+
"--ws-rating-strong": "#3bb8b2",
|
|
995
|
+
"--ws-rating-middle": "#93a6dc",
|
|
996
|
+
"--ws-rating-needs-work": "#f370a4",
|
|
997
|
+
"--ws-agent-coach": "#3bb8b2",
|
|
998
|
+
"--ws-agent-growth": "#9a84ee",
|
|
999
|
+
"--ws-agent-recruit": "#ff725c",
|
|
1000
|
+
"--ws-agent-tally": "#ffffff"
|
|
1001
|
+
}
|
|
1002
|
+
},
|
|
1003
|
+
"cool": {
|
|
1004
|
+
"light": {
|
|
1005
|
+
"--color-bg-page": "#fefbf9",
|
|
1006
|
+
"--ws-frame-top": "#ebf0f5",
|
|
1007
|
+
"--ws-stage-foot": "#fefbf9",
|
|
1008
|
+
"--color-surface": "#ffffff",
|
|
1009
|
+
"--ws-raised": "#fefbf9",
|
|
1010
|
+
"--ws-tray": "#ededed",
|
|
1011
|
+
"--ws-edge-card": "#d3d3d3",
|
|
1012
|
+
"--ws-edge": "#e2e2e2",
|
|
1013
|
+
"--ws-edge-hover": "#aaa49d",
|
|
1014
|
+
"--ws-well-hover": "#e4e2df",
|
|
1015
|
+
"--color-text-heading": "#093555",
|
|
1016
|
+
"--color-text-body": "#545454",
|
|
1017
|
+
"--color-text-muted": "#666666",
|
|
1018
|
+
"--color-text-interactive": "#093555",
|
|
1019
|
+
"--ws-on-act": "#ffffff",
|
|
1020
|
+
"--ws-act-hover": "#0f4a73",
|
|
1021
|
+
"--ws-word-needs": "#a84b3c",
|
|
1022
|
+
"--ws-focus-color": "#093555",
|
|
1023
|
+
"--ws-word-positive": "#09717a",
|
|
1024
|
+
"--ws-word-alert": "#b1042f",
|
|
1025
|
+
"--ws-chart-finished": "#098486",
|
|
1026
|
+
"--ws-chart-past-half": "#6d4fc2",
|
|
1027
|
+
"--ws-chart-under-half": "#ff725c",
|
|
1028
|
+
"--ws-chart-navy-light": "#2e6088",
|
|
1029
|
+
"--ws-chart-needs-work": "#f370a4",
|
|
1030
|
+
"--ws-chart-alert": "#b1042f",
|
|
1031
|
+
"--ws-rating-strong": "#098486",
|
|
1032
|
+
"--ws-rating-middle": "#495883",
|
|
1033
|
+
"--ws-rating-needs-work": "#f370a4",
|
|
1034
|
+
"--ws-agent-coach": "#098486",
|
|
1035
|
+
"--ws-agent-growth": "#6d4fc2",
|
|
1036
|
+
"--ws-agent-recruit": "#ff725c",
|
|
1037
|
+
"--ws-agent-tally": "#2c4870"
|
|
1038
|
+
},
|
|
1039
|
+
"dark": {
|
|
1040
|
+
"--color-bg-page": "#0f1922",
|
|
1041
|
+
"--ws-frame-top": "#0a1118",
|
|
1042
|
+
"--ws-stage-foot": "#0f1922",
|
|
1043
|
+
"--color-surface": "#131e28",
|
|
1044
|
+
"--ws-raised": "#16222d",
|
|
1045
|
+
"--ws-tray": "#1e2b38",
|
|
1046
|
+
"--ws-edge-card": "#273544",
|
|
1047
|
+
"--ws-edge": "#1e2a36",
|
|
1048
|
+
"--ws-edge-hover": "#8494a5",
|
|
1049
|
+
"--ws-well-hover": "#273544",
|
|
1050
|
+
"--color-text-heading": "#e8edf3",
|
|
1051
|
+
"--color-text-body": "#b0bbc7",
|
|
1052
|
+
"--color-text-muted": "#8494a5",
|
|
1053
|
+
"--color-text-interactive": "#e8edf3",
|
|
1054
|
+
"--ws-on-act": "#0f1922",
|
|
1055
|
+
"--ws-act-hover": "#d7dce2",
|
|
1056
|
+
"--ws-word-needs": "#ff8b78",
|
|
1057
|
+
"--ws-focus-color": "#e8edf3",
|
|
1058
|
+
"--ws-word-positive": "#4fc7be",
|
|
1059
|
+
"--ws-word-alert": "#ff5470",
|
|
1060
|
+
"--ws-chart-finished": "#23a8a3",
|
|
1061
|
+
"--ws-chart-past-half": "#9a84ee",
|
|
1062
|
+
"--ws-chart-under-half": "#ff725c",
|
|
1063
|
+
"--ws-chart-navy-light": "#6e9cc4",
|
|
1064
|
+
"--ws-chart-needs-work": "#f370a4",
|
|
1065
|
+
"--ws-chart-alert": "#ff5470",
|
|
1066
|
+
"--ws-rating-strong": "#3bb8b2",
|
|
1067
|
+
"--ws-rating-middle": "#e8edf3",
|
|
1068
|
+
"--ws-rating-needs-work": "#f370a4",
|
|
1069
|
+
"--ws-agent-coach": "#3bb8b2",
|
|
1070
|
+
"--ws-agent-growth": "#9a84ee",
|
|
1071
|
+
"--ws-agent-recruit": "#ff725c",
|
|
1072
|
+
"--ws-agent-tally": "#e8edf3"
|
|
1073
|
+
},
|
|
1074
|
+
"navy": {
|
|
1075
|
+
"--color-bg-page": "#021a32",
|
|
1076
|
+
"--ws-frame-top": "#021a32",
|
|
1077
|
+
"--ws-stage-foot": "#021a32",
|
|
1078
|
+
"--color-surface": "#0f253c",
|
|
1079
|
+
"--ws-raised": "#162c42",
|
|
1080
|
+
"--ws-tray": "#2a3f53",
|
|
1081
|
+
"--ws-edge-card": "rgba(255, 255, 255, 0.18)",
|
|
1082
|
+
"--ws-edge": "rgba(255, 255, 255, 0.1)",
|
|
1083
|
+
"--ws-edge-hover": "#a9a9a9",
|
|
1084
|
+
"--ws-well-hover": "#273544",
|
|
1085
|
+
"--color-text-heading": "#ffffff",
|
|
1086
|
+
"--color-text-body": "#d3d3d3",
|
|
1087
|
+
"--color-text-muted": "#a9a9a9",
|
|
1088
|
+
"--color-text-interactive": "#ffffff",
|
|
1089
|
+
"--ws-on-act": "#021a32",
|
|
1090
|
+
"--ws-act-hover": "#ebedef",
|
|
1091
|
+
"--ws-word-needs": "#ff8b78",
|
|
1092
|
+
"--ws-focus-color": "#ffffff",
|
|
1093
|
+
"--ws-word-positive": "#4fc7be",
|
|
1094
|
+
"--ws-word-alert": "#ff8282",
|
|
1095
|
+
"--ws-chart-finished": "#23a8a3",
|
|
1096
|
+
"--ws-chart-past-half": "#9a84ee",
|
|
1097
|
+
"--ws-chart-under-half": "#ff725c",
|
|
1098
|
+
"--ws-chart-navy-light": "#6e9cc4",
|
|
1099
|
+
"--ws-chart-needs-work": "#f370a4",
|
|
1100
|
+
"--ws-chart-alert": "#ff5470",
|
|
1101
|
+
"--ws-rating-strong": "#3bb8b2",
|
|
1102
|
+
"--ws-rating-middle": "#ffffff",
|
|
1103
|
+
"--ws-rating-needs-work": "#f370a4",
|
|
1104
|
+
"--ws-agent-coach": "#3bb8b2",
|
|
1105
|
+
"--ws-agent-growth": "#9a84ee",
|
|
1106
|
+
"--ws-agent-recruit": "#ff725c",
|
|
1107
|
+
"--ws-agent-tally": "#ffffff"
|
|
1108
|
+
}
|
|
1109
|
+
},
|
|
1110
|
+
"warm": {
|
|
1111
|
+
"light": {
|
|
1112
|
+
"--color-bg-page": "#fefbf9",
|
|
1113
|
+
"--ws-frame-top": "#fefbf9",
|
|
1114
|
+
"--ws-stage-foot": "#fef9f6",
|
|
1115
|
+
"--color-surface": "#ffffff",
|
|
1116
|
+
"--ws-raised": "#fefbf9",
|
|
1117
|
+
"--ws-tray": "#ededed",
|
|
1118
|
+
"--ws-edge-card": "#d3d3d3",
|
|
1119
|
+
"--ws-edge": "#e8e8e8",
|
|
1120
|
+
"--ws-edge-hover": "#aaa49d",
|
|
1121
|
+
"--ws-well-hover": "#e4e2df",
|
|
1122
|
+
"--color-text-heading": "#093555",
|
|
1123
|
+
"--color-text-body": "#545454",
|
|
1124
|
+
"--color-text-muted": "#666666",
|
|
1125
|
+
"--color-text-interactive": "#495883",
|
|
1126
|
+
"--ws-on-act": "#ffffff",
|
|
1127
|
+
"--ws-act-hover": "#0f4a73",
|
|
1128
|
+
"--ws-word-needs": "#a84b3c",
|
|
1129
|
+
"--ws-focus-color": "#093555",
|
|
1130
|
+
"--ws-word-positive": "#09717a",
|
|
1131
|
+
"--ws-word-alert": "#b1042f",
|
|
1132
|
+
"--ws-chart-finished": "#098486",
|
|
1133
|
+
"--ws-chart-past-half": "#6d4fc2",
|
|
1134
|
+
"--ws-chart-under-half": "#ff725c",
|
|
1135
|
+
"--ws-chart-navy-light": "#2e6088",
|
|
1136
|
+
"--ws-chart-needs-work": "#f370a4",
|
|
1137
|
+
"--ws-chart-alert": "#b1042f",
|
|
1138
|
+
"--ws-rating-strong": "#098486",
|
|
1139
|
+
"--ws-rating-middle": "#495883",
|
|
1140
|
+
"--ws-rating-needs-work": "#f370a4",
|
|
1141
|
+
"--ws-agent-coach": "#098486",
|
|
1142
|
+
"--ws-agent-growth": "#6d4fc2",
|
|
1143
|
+
"--ws-agent-recruit": "#ff725c",
|
|
1144
|
+
"--ws-agent-tally": "#2c4870"
|
|
1145
|
+
},
|
|
1146
|
+
"dark": {
|
|
1147
|
+
"--color-bg-page": "#0f1922",
|
|
1148
|
+
"--ws-frame-top": "#0a1118",
|
|
1149
|
+
"--ws-stage-foot": "#0f1922",
|
|
1150
|
+
"--color-surface": "#131e28",
|
|
1151
|
+
"--ws-raised": "#16222d",
|
|
1152
|
+
"--ws-tray": "#1e2b38",
|
|
1153
|
+
"--ws-edge-card": "#273544",
|
|
1154
|
+
"--ws-edge": "#1e2a36",
|
|
1155
|
+
"--ws-edge-hover": "#8494a5",
|
|
1156
|
+
"--ws-well-hover": "#273544",
|
|
1157
|
+
"--color-text-heading": "#e8edf3",
|
|
1158
|
+
"--color-text-body": "#b0bbc7",
|
|
1159
|
+
"--color-text-muted": "#8494a5",
|
|
1160
|
+
"--color-text-interactive": "#93a6dc",
|
|
1161
|
+
"--ws-on-act": "#0f1922",
|
|
1162
|
+
"--ws-act-hover": "#d7dce2",
|
|
1163
|
+
"--ws-word-needs": "#ff8b78",
|
|
1164
|
+
"--ws-focus-color": "#e8edf3",
|
|
1165
|
+
"--ws-word-positive": "#4fc7be",
|
|
1166
|
+
"--ws-word-alert": "#ff5470",
|
|
1167
|
+
"--ws-chart-finished": "#23a8a3",
|
|
1168
|
+
"--ws-chart-past-half": "#9a84ee",
|
|
1169
|
+
"--ws-chart-under-half": "#ff725c",
|
|
1170
|
+
"--ws-chart-navy-light": "#6e9cc4",
|
|
1171
|
+
"--ws-chart-needs-work": "#f370a4",
|
|
1172
|
+
"--ws-chart-alert": "#ff5470",
|
|
1173
|
+
"--ws-rating-strong": "#3bb8b2",
|
|
1174
|
+
"--ws-rating-middle": "#93a6dc",
|
|
1175
|
+
"--ws-rating-needs-work": "#f370a4",
|
|
1176
|
+
"--ws-agent-coach": "#3bb8b2",
|
|
1177
|
+
"--ws-agent-growth": "#9a84ee",
|
|
1178
|
+
"--ws-agent-recruit": "#ff725c",
|
|
1179
|
+
"--ws-agent-tally": "#e8edf3"
|
|
1180
|
+
},
|
|
1181
|
+
"navy": {
|
|
1182
|
+
"--color-bg-page": "#021a32",
|
|
1183
|
+
"--ws-frame-top": "#021a32",
|
|
1184
|
+
"--ws-stage-foot": "#021a32",
|
|
1185
|
+
"--color-surface": "#0f253c",
|
|
1186
|
+
"--ws-raised": "#162c42",
|
|
1187
|
+
"--ws-tray": "#2a3f53",
|
|
1188
|
+
"--ws-edge-card": "rgba(255, 255, 255, 0.18)",
|
|
1189
|
+
"--ws-edge": "rgba(255, 255, 255, 0.1)",
|
|
1190
|
+
"--ws-edge-hover": "#a9a9a9",
|
|
1191
|
+
"--ws-well-hover": "#273544",
|
|
1192
|
+
"--color-text-heading": "#ffffff",
|
|
1193
|
+
"--color-text-body": "#d3d3d3",
|
|
1194
|
+
"--color-text-muted": "#a9a9a9",
|
|
1195
|
+
"--color-text-interactive": "#93a6dc",
|
|
1196
|
+
"--ws-on-act": "#021a32",
|
|
1197
|
+
"--ws-act-hover": "#ebedef",
|
|
1198
|
+
"--ws-word-needs": "#ff8b78",
|
|
1199
|
+
"--ws-focus-color": "#ffffff",
|
|
1200
|
+
"--ws-word-positive": "#4fc7be",
|
|
1201
|
+
"--ws-word-alert": "#ff8282",
|
|
1202
|
+
"--ws-chart-finished": "#23a8a3",
|
|
1203
|
+
"--ws-chart-past-half": "#9a84ee",
|
|
1204
|
+
"--ws-chart-under-half": "#ff725c",
|
|
1205
|
+
"--ws-chart-navy-light": "#6e9cc4",
|
|
1206
|
+
"--ws-chart-needs-work": "#f370a4",
|
|
1207
|
+
"--ws-chart-alert": "#ff5470",
|
|
1208
|
+
"--ws-rating-strong": "#3bb8b2",
|
|
1209
|
+
"--ws-rating-middle": "#93a6dc",
|
|
1210
|
+
"--ws-rating-needs-work": "#f370a4",
|
|
1211
|
+
"--ws-agent-coach": "#3bb8b2",
|
|
1212
|
+
"--ws-agent-growth": "#9a84ee",
|
|
1213
|
+
"--ws-agent-recruit": "#ff725c",
|
|
1214
|
+
"--ws-agent-tally": "#ffffff"
|
|
1215
|
+
}
|
|
1216
|
+
}
|
|
1217
|
+
};
|
|
538
1218
|
export {
|
|
539
1219
|
Badge,
|
|
540
1220
|
Button,
|
|
@@ -558,5 +1238,10 @@ export {
|
|
|
558
1238
|
badgeVariants,
|
|
559
1239
|
buttonVariants,
|
|
560
1240
|
cardVariants,
|
|
561
|
-
cn
|
|
1241
|
+
cn,
|
|
1242
|
+
contract,
|
|
1243
|
+
morph,
|
|
1244
|
+
palettes,
|
|
1245
|
+
reorder,
|
|
1246
|
+
rollPlaceholder
|
|
562
1247
|
};
|