prime-ui-kit 0.9.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -5
- package/dist/chunks/{chunk-ZEFCDEEQ.js → chunk-6JTZOA5I.js} +878 -331
- package/dist/chunks/{chunk-LXGRKN34.js → chunk-OAE4IQX2.js} +769 -479
- package/dist/chunks/{chunk-IQELQNMR.js → chunk-U5SR2LZR.js} +17 -4
- package/dist/color-picker.js +2 -2
- package/dist/components/button/Button.d.ts +19 -2
- package/dist/components/card/Card.d.ts +1 -1
- package/dist/components/code-block/CodeBlock.d.ts +1 -1
- package/dist/components/color-picker/ColorPicker.d.ts +1 -1
- package/dist/components/data-table/Row.d.ts +3 -1
- package/dist/components/data-table/rows.d.ts +4 -0
- package/dist/components/digit-input/DigitInput.d.ts +6 -1
- package/dist/components/index.d.ts +4 -1
- package/dist/components/input/Input.d.ts +16 -1
- package/dist/components/input/passwordStrength.d.ts +9 -0
- package/dist/components/progress-bar/ProgressBar.d.ts +16 -1
- package/dist/components/sparkline/Sparkline.d.ts +26 -0
- package/dist/hooks/useEdgeOverflow.d.ts +4 -0
- package/dist/icons/registry.d.ts +2 -0
- package/dist/index.css +830 -267
- package/dist/index.d.ts +1 -0
- package/dist/index.js +9 -3
- package/dist/internal/CheckMark.d.ts +12 -0
- package/dist/internal/MorphText.d.ts +12 -0
- package/dist/internal/RollingNumber.d.ts +14 -0
- package/dist/internal/surfaceDepth.d.ts +25 -0
- package/dist/internal/swatch.d.ts +4 -1
- package/dist/layout/app-shell/AppShell.d.ts +2 -2
- package/dist/motion/celebrate.d.ts +18 -0
- package/dist/tokens/layers.d.ts +37 -0
- package/dist/tokens/naming.d.ts +1 -1
- package/dist/tokens/semantic.d.ts +66 -56
- package/dist/tokens/themes/dark.d.ts +6 -14
- package/package.json +1 -1
- package/src/components/accordion/COMPONENT.md +4 -4
- package/src/components/avatar/COMPONENT.md +1 -1
- package/src/components/button/COMPONENT.md +26 -5
- package/src/components/button/examples/download.tsx +45 -0
- package/src/components/button/examples/hold-to-confirm.tsx +23 -0
- package/src/components/button/examples/label-morph.tsx +33 -0
- package/src/components/card/COMPONENT.md +4 -2
- package/src/components/card/examples/narrow.tsx +2 -2
- package/src/components/card/examples/panel-chart.tsx +1 -1
- package/src/components/card/examples/variants.tsx +1 -1
- package/src/components/checkbox/examples/examples.module.css +1 -1
- package/src/components/code-block/COMPONENT.md +6 -6
- package/src/components/code-block/examples/overview.tsx +1 -1
- package/src/components/code-block/examples/variants.tsx +1 -1
- package/src/components/color-picker/COMPONENT.md +1 -1
- package/src/components/color-swatches/COMPONENT.md +5 -5
- package/src/components/command-menu/COMPONENT.md +1 -1
- package/src/components/crossfade/examples/overview.tsx +3 -3
- package/src/components/data-table/COMPONENT.md +5 -4
- package/src/components/digit-input/COMPONENT.md +5 -3
- package/src/components/digit-input/examples/on-complete.tsx +7 -6
- package/src/components/dnd/COMPONENT.md +1 -1
- package/src/components/dnd/examples/examples.module.css +4 -4
- package/src/components/dropdown/COMPONENT.md +1 -1
- package/src/components/dropdown/examples/examples.module.css +1 -1
- package/src/components/empty-page/examples/examples.module.css +1 -1
- package/src/components/example-frame/COMPONENT.md +1 -1
- package/src/components/input/COMPONENT.md +10 -1
- package/src/components/input/examples/password-strength.tsx +12 -0
- package/src/components/kanban/COMPONENT.md +4 -4
- package/src/components/login-form/COMPONENT.md +4 -4
- package/src/components/login-form/examples/register.tsx +2 -2
- package/src/components/login-form/examples/reset-password.tsx +2 -2
- package/src/components/modal/COMPONENT.md +2 -2
- package/src/components/modal/examples/examples.module.css +2 -2
- package/src/components/page-content/examples/examples.module.css +1 -1
- package/src/components/popover/COMPONENT.md +1 -1
- package/src/components/progress-bar/COMPONENT.md +5 -1
- package/src/components/progress-bar/examples/examples.module.css +7 -0
- package/src/components/progress-bar/examples/milestone.tsx +43 -0
- package/src/components/progress-bar/examples/steps.tsx +35 -0
- package/src/components/skeleton/examples/with-crossfade.tsx +3 -3
- package/src/components/sparkline/COMPONENT.md +98 -0
- package/src/components/sparkline/examples/examples.module.css +13 -0
- package/src/components/sparkline/examples/overview.tsx +27 -0
- package/src/components/sparkline/examples/period.tsx +46 -0
- package/src/components/tabs/COMPONENT.md +15 -16
- package/src/components/tabs/examples/examples.module.css +14 -0
- package/src/components/tabs/examples/orientation.tsx +87 -33
- package/src/components/tooltip/COMPONENT.md +8 -6
- package/src/components/tooltip/examples/examples.module.css +2 -2
- package/src/layout/app-header/COMPONENT.md +1 -1
- package/src/layout/app-header/examples/examples.module.css +4 -4
- package/src/layout/app-shell/COMPONENT.md +8 -8
- package/src/layout/app-shell/examples/examples.module.css +3 -3
- package/src/layout/bottom-nav/COMPONENT.md +1 -1
- package/src/layout/bottom-nav/examples/examples.module.css +1 -1
- package/src/layout/sidebar/COMPONENT.md +4 -4
- package/src/layout/sidebar/examples/examples.module.css +5 -5
- package/src/styles/globals.css +125 -2
- package/src/styles/theme-dark.css +36 -13
- package/src/styles/theme-light.css +60 -16
|
@@ -1,40 +1,94 @@
|
|
|
1
|
-
/**
|
|
2
|
-
import { Tabs, Typography } from "prime-ui-kit";
|
|
1
|
+
/** Account settings with a side list of sections: the active section reaches out of the panel, and below 600px the list moves above it — `orientation`. */
|
|
2
|
+
import { Button, Icon, Input, Switch, Tabs, Typography } from "prime-ui-kit";
|
|
3
3
|
|
|
4
4
|
import styles from "./examples.module.css";
|
|
5
5
|
|
|
6
|
-
const SECTIONS = [
|
|
7
|
-
{ value: "profile", label: "Профиль", text: "Имя, должность и контакты сотрудника." },
|
|
8
|
-
{ value: "notifications", label: "Уведомления", text: "Письма о заказах и еженедельная сводка." },
|
|
9
|
-
{ value: "deletion", label: "Удаление", text: "Аккаунт и все данные будут удалены." },
|
|
10
|
-
];
|
|
11
|
-
|
|
12
6
|
export default function TabsOrientationExample() {
|
|
13
7
|
return (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
<Tabs.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
8
|
+
<Tabs.Root orientation="vertical" defaultValue="notifications" className={styles.wide}>
|
|
9
|
+
<Tabs.List aria-label="Настройки аккаунта">
|
|
10
|
+
<Tabs.Item value="profile">
|
|
11
|
+
<Tabs.Icon>
|
|
12
|
+
<Icon name="object.user" />
|
|
13
|
+
</Tabs.Icon>
|
|
14
|
+
<Tabs.Label>Профиль</Tabs.Label>
|
|
15
|
+
</Tabs.Item>
|
|
16
|
+
<Tabs.Item value="notifications">
|
|
17
|
+
<Tabs.Icon>
|
|
18
|
+
<Icon name="object.bell" />
|
|
19
|
+
</Tabs.Icon>
|
|
20
|
+
<Tabs.Label>Уведомления</Tabs.Label>
|
|
21
|
+
</Tabs.Item>
|
|
22
|
+
<Tabs.Item value="security">
|
|
23
|
+
<Tabs.Icon>
|
|
24
|
+
<Icon name="object.key" />
|
|
25
|
+
</Tabs.Icon>
|
|
26
|
+
<Tabs.Label>Безопасность</Tabs.Label>
|
|
27
|
+
</Tabs.Item>
|
|
28
|
+
<Tabs.Separator />
|
|
29
|
+
<Tabs.Item value="deletion">
|
|
30
|
+
<Tabs.Icon>
|
|
31
|
+
<Icon name="action.delete" />
|
|
32
|
+
</Tabs.Icon>
|
|
33
|
+
<Tabs.Label>Удаление</Tabs.Label>
|
|
34
|
+
</Tabs.Item>
|
|
35
|
+
</Tabs.List>
|
|
36
|
+
|
|
37
|
+
<Tabs.Panel value="profile">
|
|
38
|
+
<div className={styles.form}>
|
|
39
|
+
<Input.Root label="Имя и фамилия">
|
|
40
|
+
<Input.Wrapper>
|
|
41
|
+
<Input.Field defaultValue="Анна Смирнова" autoComplete="name" />
|
|
42
|
+
</Input.Wrapper>
|
|
43
|
+
</Input.Root>
|
|
44
|
+
<Input.Root label="Должность">
|
|
45
|
+
<Input.Wrapper>
|
|
46
|
+
<Input.Field defaultValue="Руководитель отдела продаж" />
|
|
47
|
+
</Input.Wrapper>
|
|
48
|
+
</Input.Root>
|
|
49
|
+
</div>
|
|
50
|
+
</Tabs.Panel>
|
|
51
|
+
|
|
52
|
+
<Tabs.Panel value="notifications">
|
|
53
|
+
<div className={styles.form}>
|
|
54
|
+
<Switch.Root defaultChecked hint="Письмо, как только заказ оплачен или отменён">
|
|
55
|
+
<Switch.Label>Статусы заказов</Switch.Label>
|
|
56
|
+
</Switch.Root>
|
|
57
|
+
<Switch.Root defaultChecked hint="По понедельникам в 09:00">
|
|
58
|
+
<Switch.Label>Сводка за неделю</Switch.Label>
|
|
59
|
+
</Switch.Root>
|
|
60
|
+
<Switch.Root hint="Новые функции и вебинары">
|
|
61
|
+
<Switch.Label>Новости продукта</Switch.Label>
|
|
62
|
+
</Switch.Root>
|
|
63
|
+
</div>
|
|
64
|
+
</Tabs.Panel>
|
|
65
|
+
|
|
66
|
+
<Tabs.Panel value="security">
|
|
67
|
+
<div className={styles.form}>
|
|
68
|
+
<Input.Root label="Новый пароль" hint="Не короче 12 символов">
|
|
69
|
+
<Input.Wrapper>
|
|
70
|
+
<Input.Field type="password" autoComplete="new-password" />
|
|
71
|
+
</Input.Wrapper>
|
|
72
|
+
</Input.Root>
|
|
73
|
+
<Switch.Root defaultChecked hint="Код из приложения при каждом входе">
|
|
74
|
+
<Switch.Label>Двухфакторная проверка</Switch.Label>
|
|
75
|
+
</Switch.Root>
|
|
76
|
+
</div>
|
|
77
|
+
</Tabs.Panel>
|
|
78
|
+
|
|
79
|
+
<Tabs.Panel value="deletion">
|
|
80
|
+
<div className={styles.form}>
|
|
81
|
+
<Typography variant="body-m" tone="secondary">
|
|
82
|
+
Аккаунт и все данные будут удалены через 30 дней. До этого срока удаление можно
|
|
83
|
+
отменить.
|
|
84
|
+
</Typography>
|
|
85
|
+
<div>
|
|
86
|
+
<Button.Root tone="danger" variant="soft">
|
|
87
|
+
Удалить аккаунт
|
|
88
|
+
</Button.Root>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
</Tabs.Panel>
|
|
92
|
+
</Tabs.Root>
|
|
39
93
|
);
|
|
40
94
|
}
|
|
@@ -74,16 +74,18 @@ No DOM: clones the single child, composes its `ref`, appends the tooltip id to i
|
|
|
74
74
|
| `…rest` | `Omit<HTMLAttributes<HTMLDivElement>, "id" \| "role" \| "onPointerEnter" \| "onPointerLeave">` | — | `className`, `style` and the other attributes of the chip. |
|
|
75
75
|
|
|
76
76
|
## Variants
|
|
77
|
-
Tooltip has no `variant` or `tone`: it is always a flat inverse chip (`tooltip-bg`, `tooltip-text`) with an arrow and no shadow, so it reads the same on
|
|
77
|
+
Tooltip has no `variant` or `tone`: it is always a flat inverse chip (`tooltip-bg`, `tooltip-text`) — dark in the light theme, light in the dark one — with an arrow and no shadow, so it reads the same on every layer. The chip is a host of its own: it points the text and fill roles at `tooltip-muted` / `tooltip-fill`, so a Kbd or a secondary line inside reads on it. Content flows inline: a label and its key stay on one line, block children stack. The arrow (`--prime-tooltip-arrow-width` × `--prime-tooltip-arrow-height`) always points at the trigger's centre, also after flipping, aligning or shifting, and never slides into the chip's rounded corner.
|
|
78
78
|
|
|
79
79
|
### size (Content)
|
|
80
|
+
A chip of tier T is as tall as a menu item of tier T; text, padding and radius step together (`--prime-tooltip-<tier>-*`).
|
|
81
|
+
|
|
80
82
|
| Value | Looks like | Use when | Default |
|
|
81
83
|
|---|---|---|---|
|
|
82
|
-
| `xs` |
|
|
83
|
-
| `s` |
|
|
84
|
-
| `m` |
|
|
85
|
-
| `l` |
|
|
86
|
-
| `xl` |
|
|
84
|
+
| `xs` | 12/16, padding 4 × 6, radius 4 — 24 tall | Next to xs controls | |
|
|
85
|
+
| `s` | 12/16, padding 6 × 8, radius 6 — 28 tall | Dense toolbars, s controls | |
|
|
86
|
+
| `m` | 13/20, padding 6 × 10, radius 6 — 32 tall | Most controls | yes |
|
|
87
|
+
| `l` | 14/20, padding 8 × 12, radius 8 — 36 tall | l controls, longer sentences | |
|
|
88
|
+
| `xl` | 16/24, padding 8 × 16, radius 8 — 40 tall | xl controls | |
|
|
87
89
|
|
|
88
90
|
### side (Content)
|
|
89
91
|
| Value | Looks like | Use when | Default |
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
gap: var(--prime-space-1);
|
|
8
8
|
padding: var(--prime-space-1);
|
|
9
9
|
border-radius: var(--prime-radius-l);
|
|
10
|
-
background: var(--prime-color-
|
|
11
|
-
box-shadow: var(--prime-
|
|
10
|
+
background: var(--prime-color-layer-nested);
|
|
11
|
+
box-shadow: var(--prime-shadow-raised);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/* disabled-trigger.tsx: a focusable wrapper around the disabled button, with the outer ring. */
|
|
@@ -134,7 +134,7 @@ AppHeader.Root <header>, one sticky row as high as the Sidebar bra
|
|
|
134
134
|
- Gaps: `--prime-space-3` between zones, `--prime-space-2` inside Start and Actions; `AppHeader.Separator` adds `--prime-space-2` on each side (16 in all) and is 20 high.
|
|
135
135
|
- `AppHeader.Icon` is a 36 tile with the radius and fill of a soft neutral button m, so it lines up with the buttons on the bar.
|
|
136
136
|
- On the panel surface with no divider or shadow (depth from fill); `z-index: --prime-z-sticky`.
|
|
137
|
-
- Search: up to 288 wide, shrinks first; field tier m and the
|
|
137
|
+
- Search: up to 288 wide, shrinks first; field tier m and the fill of the panel layer it sits on. Controls inside are size `m`.
|
|
138
138
|
|
|
139
139
|
## Accessibility
|
|
140
140
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/* Layout of the AppHeader scenarios: an app window and a phone-wide screen. Semantic tokens only. */
|
|
2
2
|
|
|
3
|
-
/* The top of an app window: the content panel
|
|
3
|
+
/* The top of an app window: the content panel (the page) with the header on it. */
|
|
4
4
|
.window {
|
|
5
5
|
box-sizing: border-box;
|
|
6
6
|
width: 100%;
|
|
7
7
|
overflow: hidden;
|
|
8
8
|
border-radius: var(--prime-card-radius);
|
|
9
|
-
background: var(--prime-color-
|
|
9
|
+
background: var(--prime-color-layer-current);
|
|
10
10
|
box-shadow:
|
|
11
11
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
12
12
|
var(--prime-shadow-raised);
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
margin-inline: auto;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
/* in-app-shell.tsx: a whole app window with the rail on the
|
|
21
|
+
/* in-app-shell.tsx: a whole app window with the rail on the page. */
|
|
22
22
|
.stage {
|
|
23
23
|
box-sizing: border-box;
|
|
24
24
|
display: flex;
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
height: calc(var(--prime-space-24) * 4);
|
|
27
27
|
overflow: hidden;
|
|
28
28
|
border-radius: var(--prime-card-radius);
|
|
29
|
-
background: var(--prime-color-
|
|
29
|
+
background: var(--prime-color-layer-current);
|
|
30
30
|
box-shadow:
|
|
31
31
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
32
32
|
var(--prime-shadow-raised);
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
**Category:** page
|
|
4
4
|
**Kind:** layout
|
|
5
5
|
|
|
6
|
-
> The app frame: a
|
|
6
|
+
> The app frame: a content panel that is the page itself and a navigation rail one layer above it.
|
|
7
7
|
|
|
8
8
|
## When to use
|
|
9
9
|
- The root layout of an application: navigation column, an optional AppHeader, scrolling main column, a bottom bar for phone navigation.
|
|
10
|
-
- Any page that needs the kit's responsive gutters and the surface
|
|
10
|
+
- Any page that needs the kit's responsive gutters and the surface ladder for cards and fields.
|
|
11
11
|
|
|
12
12
|
## When not to use
|
|
13
13
|
- The navigation itself → use [Sidebar](../sidebar/COMPONENT.md) inside `AppShell.Nav`, [BottomNav](../bottom-nav/COMPONENT.md) inside `AppShell.Footer`.
|
|
@@ -23,8 +23,8 @@ import { AppShell } from "prime-ui-kit";
|
|
|
23
23
|
|
|
24
24
|
## Anatomy
|
|
25
25
|
```
|
|
26
|
-
AppShell.Root grid: nav column | content panel (
|
|
27
|
-
├─ AppShell.Nav navigation column
|
|
26
|
+
AppShell.Root grid: nav column | content panel (the page, layer 0)
|
|
27
|
+
├─ AppShell.Nav navigation column (usually Sidebar.Root, a surface one layer above the page)
|
|
28
28
|
├─ AppHeader.Root sticky top bar of the panel (a separate component)
|
|
29
29
|
├─ AppShell.Main <main>, scrolls, carries the gutters
|
|
30
30
|
└─ AppShell.Footer sticky bottom bar of the panel (usually BottomNav.Root)
|
|
@@ -37,7 +37,7 @@ Every child of Root that is not `AppShell.Nav` is placed into the content panel.
|
|
|
37
37
|
<!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
|
|
38
38
|
|
|
39
39
|
### AppShell.Root
|
|
40
|
-
`ref` → `HTMLDivElement`. Grid of the nav column (
|
|
40
|
+
`ref` → `HTMLDivElement`. Grid of the nav column (Sidebar, a surface one layer above the page) and the content panel (the page itself); every child that is not `AppShell.Nav` goes into the panel.
|
|
41
41
|
|
|
42
42
|
| Prop | Type | Default | Description |
|
|
43
43
|
|---|---|---|---|
|
|
@@ -96,7 +96,7 @@ Every child of Root that is not `AppShell.Nav` is placed into the content panel.
|
|
|
96
96
|
### Structure
|
|
97
97
|
| Value | Looks like | Use when | Default |
|
|
98
98
|
|---|---|---|---|
|
|
99
|
-
| with `AppShell.Nav` | Two columns:
|
|
99
|
+
| with `AppShell.Nav` | Two columns: a rail one layer above the page + the panel that is the page | Apps with navigation | |
|
|
100
100
|
| without Nav | Panel takes the full width | Single-page tools, auth screens | |
|
|
101
101
|
| with `AppHeader.Root` | Sticky bar at the top of the panel | Title or breadcrumbs, global search, actions, the mobile menu button | |
|
|
102
102
|
| with `AppShell.Footer` | Sticky bar at the bottom of the panel, shown while it holds a visible bar | BottomNav on a phone | |
|
|
@@ -111,10 +111,10 @@ Every child of Root that is not `AppShell.Nav` is placed into the content panel.
|
|
|
111
111
|
| footer bar | panel width (container `prime-shell-footer` on Footer) | BottomNav inside leaves from 640px of panel width; the empty footer takes no room |
|
|
112
112
|
|
|
113
113
|
## Layout & spacing
|
|
114
|
-
- Two full-height planes edge to edge: no inset, radius, shadow or border — the boundary is the fill change (
|
|
114
|
+
- Two full-height planes edge to edge: no inset, radius, shadow or border — the boundary is the fill change (the Sidebar rail is layer 1, the panel the page: white rail beside a gray page in light, a rail one step lighter than the near-black page in dark).
|
|
115
115
|
- Gutters in Main: `--prime-layout-gutter-s` (16) → `-m` (24) from 640px → `-l` (32) from 1024px. Main top padding `--prime-space-6` (24) → `--prime-space-10` (40) from 1024px; bottom `--prime-space-16`.
|
|
116
116
|
- Footer: no padding of its own (BottomNav keeps the bottom safe-area inset), sticky at the bottom, `z-index: --prime-z-sticky`.
|
|
117
|
-
- The panel is
|
|
117
|
+
- The panel is the page (layer 0 of the surface ladder, gray in light): fields on it take the page fill, a Card inside is layer 1 — white in light with the raised whisper — and cards in cards go deeper.
|
|
118
118
|
|
|
119
119
|
## Accessibility
|
|
120
120
|
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
height: calc(var(--prime-space-24) * 5);
|
|
8
8
|
overflow: hidden;
|
|
9
9
|
border-radius: var(--prime-card-radius);
|
|
10
|
-
background: var(--prime-color-
|
|
11
|
-
/* The
|
|
10
|
+
background: var(--prime-color-layer-current);
|
|
11
|
+
/* The window is a page on the preview's page: a hairline keeps its edge visible. */
|
|
12
12
|
box-shadow:
|
|
13
13
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
14
14
|
var(--prime-shadow-raised);
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
margin-inline: auto;
|
|
38
38
|
overflow: hidden;
|
|
39
39
|
border-radius: var(--prime-card-radius);
|
|
40
|
-
background: var(--prime-color-
|
|
40
|
+
background: var(--prime-color-layer-current);
|
|
41
41
|
box-shadow:
|
|
42
42
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
43
43
|
var(--prime-shadow-raised);
|
|
@@ -99,7 +99,7 @@ Without flags the bar is flat at the screen edge on the surface, with a faint to
|
|
|
99
99
|
| disabled | `disabled` | `disabled` / `aria-disabled`, `data-disabled` |
|
|
100
100
|
| hidden | inside `AppShell.Footer` 640px wide or more | `display: none` (container `prime-shell-footer`) |
|
|
101
101
|
| floating / icon only | `floating` / `iconOnly` | `data-floating="true"` / `data-icon-only="true"` on the `<nav>` |
|
|
102
|
-
| less transparency | `prefers-reduced-transparency: reduce` | a floating capsule turns opaque (`--prime-color-bg
|
|
102
|
+
| less transparency | `prefers-reduced-transparency: reduce` | a floating capsule turns opaque (`--prime-color-layer-floating-bg`), no blur |
|
|
103
103
|
|
|
104
104
|
Motion: the color of the icon and the label changes over `fast`; in the floating capsule the selection capsule grows in from 92% and fades in (`fast`, enter easing), instant under reduced motion. No hover or press feedback: an item is either current or not.
|
|
105
105
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
margin-inline: auto;
|
|
11
11
|
overflow: hidden;
|
|
12
12
|
border-radius: var(--prime-card-radius);
|
|
13
|
-
background: var(--prime-color-
|
|
13
|
+
background: var(--prime-color-layer-current);
|
|
14
14
|
box-shadow:
|
|
15
15
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
16
16
|
var(--prime-shadow-raised);
|
|
@@ -243,7 +243,7 @@ Hook for custom parts inside `Sidebar.Root` (throws outside). Returns the fields
|
|
|
243
243
|
| `size · navId · labels` | `ControlSize · string · SidebarLabels` | — | Tier, id of the `<nav>` (for `aria-controls` on your own menu button), resolved strings. |
|
|
244
244
|
|
|
245
245
|
## Variants
|
|
246
|
-
The rail
|
|
246
|
+
The rail is a surface beside the page, one layer above it on the surface ladder (`data-depth`): white on the light gray page, one step lighter than the near-black page in dark; no border or card. Items are transparent rows with `text-secondary`, `fill-subtle` on hover; the current item takes the rail's fill two ladder steps off it (`fill-muted-hover`) with primary text.
|
|
247
247
|
|
|
248
248
|
### mode (Root)
|
|
249
249
|
| Value | Looks like | Use when | Default |
|
|
@@ -311,9 +311,9 @@ Leaving the narrow viewport closes the off-canvas panel; navigating from an `hre
|
|
|
311
311
|
## Layout & spacing
|
|
312
312
|
- Panel padding: `--prime-space-3` block, `--prime-space-2` inline; regions 8 apart; groups 16 apart, items 4 apart.
|
|
313
313
|
- Item horizontal padding is derived from the compact width so icons and the brand logo sit on one axis in every mode (the account avatar joins that axis on the rail).
|
|
314
|
-
- Header is one row of the item height + 8. The header toggle (xs, 28) sits at its end, 8 from the rail edge; in compact mode it moves half past the edge, scales to 3/4, turns round and gets a
|
|
314
|
+
- Header is one row of the item height + 8. The header toggle (xs, 28) sits at its end, 8 from the rail edge; in compact mode it moves half past the edge, scales to 3/4, turns round and gets a ring in the rail color. The root clips with `clip-path`, reaching past the edge by the toggle's half-width and ring beside the header only; everywhere else the panel ends exactly at the spacer edge.
|
|
315
315
|
- Collapsible group: heading 28 high with the chevron (14) at its end, aligned with the item trail; items start 4 below. A folded group's attention dot sits before the chevron.
|
|
316
|
-
- On the rail a heading keeps its 28 and its layout: the text slides 8 toward the edge, scales to 0.85 and is cut at the rail box with a 12 fade into the
|
|
316
|
+
- On the rail a heading keeps its 28 and its layout: the text slides 8 toward the edge, scales to 0.85 and is cut at the rail box with a 12 fade into the rail. A folded group adds one `…` row under its heading. The items and the row share one place: folding or unfolding on the rail glides the group's height one way (list ↔ row) while the two cross-fade, so the rows below never move back.
|
|
317
317
|
- Sub-list: a 1px `border-default` guide line on the parent icon's centre; every child branches off it with an 8 elbow and a 6 bend; child labels line up with the parent label.
|
|
318
318
|
- Trail (count, key hint, trailing icon) sits at the row end; a row action (one tier down) appears there on hover / focus (always on touch screens) and the trail moves aside.
|
|
319
319
|
- Footer: items 4 apart; the account is set 8 apart below them. It is its own card-like row: the
|
|
@@ -322,7 +322,7 @@ Leaving the narrow viewport closes the off-canvas panel; navigating from an `hre
|
|
|
322
322
|
so the row is the avatar + 2 × gap high (48 at m). On the compact rail the start inset becomes the
|
|
323
323
|
one that centres the avatar on the icon axis, as part of the rail motion.
|
|
324
324
|
- Compact flyout: the kit Popover (flush) to the right, aligned with the parent row, with the metrics of a kit menu — rows of the tier's menu item height (32 at m), the panel padding, no title (the row names it), no guide line; current child is a `fill-subtle-active` wash.
|
|
325
|
-
- Motion: two layers on one clock. `Sidebar.Root` is the spacer: it reserves the rail width in the page, paints the
|
|
325
|
+
- Motion: two layers on one clock. `Sidebar.Root` is the spacer: it reserves the rail width in the page, paints the rail and clips the panel to its own box; its width is the only layout that moves (the page column follows). The `<nav>` panel inside is positioned at the expanded width in every mode and never lays out again, so nothing re-wraps and nothing switches at the end. Every part is a plain CSS transition over `base` with the `standard` (ease-in-out) easing, started by the same mode change and ending with the rail: text fades through its fill colour (paint-only, no compositor layer per label), chevrons through their stroke, trailing boxes (a coloured count, a key hint) through `opacity`; coloured counts turn into dots; the account avatar slides onto the icon axis; the header toggle rides the edge by `translate` / `scale`. Rows stay full width: a row with a fill or a ring (current, on the active path, hovered, open, focused) draws them on a pseudo-element whose end edge travels to the icon box and clips its content there, so it always ends rail padding before the moving edge and is a rounded square around the icon at rest. Group headings keep their height and layout: their text slides toward the edge and scales down by transform while the moving cut ends it with a fade; the text box narrows only once the rail has closed (under the cut, never seen), so the dot and the chevron after it stay in place and fade. The `…` row of a folded group grows in and out on the same clock (grid track height), as do the attention dots (opacity and scale). Hidden keeps the look of the last visible mode and is clipped as one piece; the header toggle stays at its place and fades, and coming back from hidden it fades in at its final place. Collapsible groups that open for the rail and sub-lists that close for it move on the same clock (grid track height); chevrons rotate (base). All durations are tokens: under reduced motion every mode change is instant.
|
|
326
326
|
- Layers of a row on the rail (compact tooltips, the sub-list flyout, a `Dropdown` around `Sidebar.Account`) anchor to the visible part of the row — the icon box — not to its full-width box. The brand has no compact tooltip: the logo speaks for itself and a tooltip would cover the edge toggle.
|
|
327
327
|
- Off-canvas panel width: min(sidebar width, 100% − `--prime-space-12`).
|
|
328
328
|
- Inside `AppShell.Nav` the rail takes the full height. The root is `height: 100%` and the panel is
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Layout for the Sidebar examples: small "app windows" (
|
|
1
|
+
/* Layout for the Sidebar examples: small "app windows" (the page with a rail one layer above it). Semantic tokens only. */
|
|
2
2
|
|
|
3
3
|
.stage {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
height: calc(var(--prime-space-24) * 4);
|
|
8
8
|
overflow: hidden;
|
|
9
9
|
border-radius: var(--prime-card-radius);
|
|
10
|
-
background: var(--prime-color-
|
|
11
|
-
/* The
|
|
10
|
+
background: var(--prime-color-layer-current);
|
|
11
|
+
/* The window is a page on the preview's page: a hairline keeps its edge visible. */
|
|
12
12
|
box-shadow:
|
|
13
13
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
14
14
|
var(--prime-shadow-raised);
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
height: calc(var(--prime-space-24) * 2);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
/* Content plane next to the rail, like AppShell:
|
|
27
|
+
/* Content plane next to the rail, like AppShell: the page itself, edge to edge. */
|
|
28
28
|
.content {
|
|
29
29
|
box-sizing: border-box;
|
|
30
30
|
flex: 1 1 auto;
|
|
31
31
|
min-width: 0;
|
|
32
32
|
padding: var(--prime-space-4);
|
|
33
|
-
background: var(--prime-color-
|
|
33
|
+
background: var(--prime-color-layer-current);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
/* The product mark inside `Sidebar.BrandLogo`: an accent tile with a glyph. */
|
package/src/styles/globals.css
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
:root {
|
|
9
9
|
font-family: var(--prime-font-family-sans);
|
|
10
10
|
color: var(--prime-color-text-primary);
|
|
11
|
-
background: var(--prime-color-bg
|
|
11
|
+
background: var(--prime-color-layer-0-bg);
|
|
12
12
|
text-rendering: optimizeLegibility;
|
|
13
13
|
font-kerning: normal;
|
|
14
14
|
font-feature-settings: "cv11", "ss01";
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
body {
|
|
26
|
-
background: var(--prime-color-bg
|
|
26
|
+
background: var(--prime-color-layer-0-bg);
|
|
27
27
|
color: var(--prime-color-text-primary);
|
|
28
28
|
font-size: var(--prime-text-body-m-size);
|
|
29
29
|
line-height: var(--prime-text-body-m-line-height);
|
|
@@ -88,6 +88,129 @@ input::-moz-focus-inner {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
/*
|
|
92
|
+
* Surface depth (foundation §4). The page (and the AppShell panel) is layer 0; every surface (Card,
|
|
93
|
+
* Sidebar, Accordion, DataTable…) sets `data-depth` one above the surface around it, floating layers set
|
|
94
|
+
* `floating`. Each depth points the context variables at its row of `--prime-color-layer-*`:
|
|
95
|
+
* layer-current the surface's own fill layer-nested a surface placed on it
|
|
96
|
+
* field-bg(-hover/-focus), fill-muted(-hover) controls on it: one step from the surface
|
|
97
|
+
* control-selected the selected thumb on a track of it
|
|
98
|
+
* layer-shadow a whisper only on a card that sits on the page
|
|
99
|
+
* A theme island (`data-theme`) starts again at layer 0.
|
|
100
|
+
*/
|
|
101
|
+
:root,
|
|
102
|
+
[data-theme],
|
|
103
|
+
[data-depth="0"] {
|
|
104
|
+
--prime-color-layer-current: var(--prime-color-layer-0-bg);
|
|
105
|
+
--prime-color-layer-nested: var(--prime-color-layer-1-bg);
|
|
106
|
+
--prime-color-field-bg: var(--prime-color-layer-0-fill);
|
|
107
|
+
--prime-color-field-bg-hover: var(--prime-color-layer-0-fill-hover);
|
|
108
|
+
--prime-color-field-bg-focus: var(--prime-color-layer-0-bg);
|
|
109
|
+
--prime-color-fill-muted: var(--prime-color-layer-0-fill);
|
|
110
|
+
--prime-color-fill-muted-hover: var(--prime-color-layer-0-fill-hover);
|
|
111
|
+
--prime-color-control-selected: var(--prime-color-layer-0-selected);
|
|
112
|
+
--prime-layer-shadow: none;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
[data-depth="1"] {
|
|
116
|
+
--prime-color-layer-current: var(--prime-color-layer-1-bg);
|
|
117
|
+
--prime-color-layer-nested: var(--prime-color-layer-2-bg);
|
|
118
|
+
--prime-color-field-bg: var(--prime-color-layer-1-fill);
|
|
119
|
+
--prime-color-field-bg-hover: var(--prime-color-layer-1-fill-hover);
|
|
120
|
+
--prime-color-field-bg-focus: var(--prime-color-layer-1-bg);
|
|
121
|
+
--prime-color-fill-muted: var(--prime-color-layer-1-fill);
|
|
122
|
+
--prime-color-fill-muted-hover: var(--prime-color-layer-1-fill-hover);
|
|
123
|
+
--prime-color-control-selected: var(--prime-color-layer-1-selected);
|
|
124
|
+
--prime-layer-shadow: var(--prime-shadow-raised);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
[data-depth="2"] {
|
|
128
|
+
--prime-color-layer-current: var(--prime-color-layer-2-bg);
|
|
129
|
+
--prime-color-layer-nested: var(--prime-color-layer-3-bg);
|
|
130
|
+
--prime-color-field-bg: var(--prime-color-layer-2-fill);
|
|
131
|
+
--prime-color-field-bg-hover: var(--prime-color-layer-2-fill-hover);
|
|
132
|
+
--prime-color-field-bg-focus: var(--prime-color-layer-2-bg);
|
|
133
|
+
--prime-color-fill-muted: var(--prime-color-layer-2-fill);
|
|
134
|
+
--prime-color-fill-muted-hover: var(--prime-color-layer-2-fill-hover);
|
|
135
|
+
--prime-color-control-selected: var(--prime-color-layer-2-selected);
|
|
136
|
+
--prime-layer-shadow: none;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
[data-depth="3"] {
|
|
140
|
+
--prime-color-layer-current: var(--prime-color-layer-3-bg);
|
|
141
|
+
--prime-color-layer-nested: var(--prime-color-layer-4-bg);
|
|
142
|
+
--prime-color-field-bg: var(--prime-color-layer-3-fill);
|
|
143
|
+
--prime-color-field-bg-hover: var(--prime-color-layer-3-fill-hover);
|
|
144
|
+
--prime-color-field-bg-focus: var(--prime-color-layer-3-bg);
|
|
145
|
+
--prime-color-fill-muted: var(--prime-color-layer-3-fill);
|
|
146
|
+
--prime-color-fill-muted-hover: var(--prime-color-layer-3-fill-hover);
|
|
147
|
+
--prime-color-control-selected: var(--prime-color-layer-3-selected);
|
|
148
|
+
--prime-layer-shadow: none;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* The deepest layer: a surface nested in it keeps its color (deeper nesting is not supported). */
|
|
152
|
+
[data-depth="4"] {
|
|
153
|
+
--prime-color-layer-current: var(--prime-color-layer-4-bg);
|
|
154
|
+
--prime-color-layer-nested: var(--prime-color-layer-4-bg);
|
|
155
|
+
--prime-color-field-bg: var(--prime-color-layer-4-fill);
|
|
156
|
+
--prime-color-field-bg-hover: var(--prime-color-layer-4-fill-hover);
|
|
157
|
+
--prime-color-field-bg-focus: var(--prime-color-layer-4-bg);
|
|
158
|
+
--prime-color-fill-muted: var(--prime-color-layer-4-fill);
|
|
159
|
+
--prime-color-fill-muted-hover: var(--prime-color-layer-4-fill-hover);
|
|
160
|
+
--prime-color-control-selected: var(--prime-color-layer-4-selected);
|
|
161
|
+
--prime-layer-shadow: none;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* Floating layers (menus, popovers, modals, drawers): one step above a card, depth comes from the
|
|
165
|
+
shadow; two layers can nest inside. */
|
|
166
|
+
[data-depth="floating"] {
|
|
167
|
+
--prime-color-layer-current: var(--prime-color-layer-floating-bg);
|
|
168
|
+
--prime-color-layer-nested: var(--prime-color-layer-floating1-bg);
|
|
169
|
+
--prime-color-field-bg: var(--prime-color-layer-floating-fill);
|
|
170
|
+
--prime-color-field-bg-hover: var(--prime-color-layer-floating-fill-hover);
|
|
171
|
+
--prime-color-field-bg-focus: var(--prime-color-layer-floating-bg);
|
|
172
|
+
--prime-color-fill-muted: var(--prime-color-layer-floating-fill);
|
|
173
|
+
--prime-color-fill-muted-hover: var(--prime-color-layer-floating-fill-hover);
|
|
174
|
+
--prime-color-control-selected: var(--prime-color-layer-floating-selected);
|
|
175
|
+
--prime-layer-shadow: none;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
[data-depth="floating-1"] {
|
|
179
|
+
--prime-color-layer-current: var(--prime-color-layer-floating1-bg);
|
|
180
|
+
--prime-color-layer-nested: var(--prime-color-layer-floating2-bg);
|
|
181
|
+
--prime-color-field-bg: var(--prime-color-layer-floating1-fill);
|
|
182
|
+
--prime-color-field-bg-hover: var(--prime-color-layer-floating1-fill-hover);
|
|
183
|
+
--prime-color-field-bg-focus: var(--prime-color-layer-floating1-bg);
|
|
184
|
+
--prime-color-fill-muted: var(--prime-color-layer-floating1-fill);
|
|
185
|
+
--prime-color-fill-muted-hover: var(--prime-color-layer-floating1-fill-hover);
|
|
186
|
+
--prime-color-control-selected: var(--prime-color-layer-floating1-selected);
|
|
187
|
+
--prime-layer-shadow: none;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
[data-depth="floating-2"] {
|
|
191
|
+
--prime-color-layer-current: var(--prime-color-layer-floating2-bg);
|
|
192
|
+
--prime-color-layer-nested: var(--prime-color-layer-floating2-bg);
|
|
193
|
+
--prime-color-field-bg: var(--prime-color-layer-floating2-fill);
|
|
194
|
+
--prime-color-field-bg-hover: var(--prime-color-layer-floating2-fill-hover);
|
|
195
|
+
--prime-color-field-bg-focus: var(--prime-color-layer-floating2-bg);
|
|
196
|
+
--prime-color-fill-muted: var(--prime-color-layer-floating2-fill);
|
|
197
|
+
--prime-color-fill-muted-hover: var(--prime-color-layer-floating2-fill-hover);
|
|
198
|
+
--prime-color-control-selected: var(--prime-color-layer-floating2-selected);
|
|
199
|
+
--prime-layer-shadow: none;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/* A host off the ladder (a tinted banner, an accent wash, an image): its own fill stays, controls
|
|
203
|
+
on it take translucent washes, which read on any color. */
|
|
204
|
+
[data-depth="tinted"] {
|
|
205
|
+
--prime-color-field-bg: var(--prime-color-fill-subtle-active);
|
|
206
|
+
--prime-color-field-bg-hover: var(--prime-color-fill-strong);
|
|
207
|
+
--prime-color-field-bg-focus: var(--prime-color-layer-floating-bg);
|
|
208
|
+
--prime-color-fill-muted: var(--prime-color-fill-subtle-active);
|
|
209
|
+
--prime-color-fill-muted-hover: var(--prime-color-fill-strong);
|
|
210
|
+
--prime-color-control-selected: var(--prime-color-layer-floating-bg);
|
|
211
|
+
--prime-layer-shadow: none;
|
|
212
|
+
}
|
|
213
|
+
|
|
91
214
|
/* Theme switches are instant: a running color transition would start from the old theme and blink. */
|
|
92
215
|
[data-theme-switching],
|
|
93
216
|
[data-theme-switching] *,
|
|
@@ -6,32 +6,21 @@
|
|
|
6
6
|
--prime-color-accent-soft: var(--prime-ref-color-cobalt-950);
|
|
7
7
|
--prime-color-accent-soft-hover: color-mix(in srgb, var(--prime-ref-color-cobalt-500) 28%, transparent);
|
|
8
8
|
--prime-color-accent-text: var(--prime-ref-color-cobalt-400);
|
|
9
|
-
--prime-color-bg-canvas: var(--prime-ref-color-gray-950);
|
|
10
9
|
--prime-color-bg-edge-shadow: rgba(0, 0, 0, 0.5);
|
|
11
10
|
--prime-color-bg-glass: color-mix(in srgb, var(--prime-ref-color-gray-875) 56%, transparent);
|
|
12
11
|
--prime-color-bg-glass-edge: rgba(255, 255, 255, 0.16);
|
|
13
12
|
--prime-color-bg-inverse: var(--prime-ref-color-gray-100);
|
|
14
|
-
--prime-color-bg-raised: var(--prime-ref-color-gray-875);
|
|
15
13
|
--prime-color-bg-scrim: rgba(0, 0, 0, 0.6);
|
|
16
|
-
--prime-color-bg-sunken: var(--prime-ref-color-gray-950);
|
|
17
|
-
--prime-color-bg-surface: var(--prime-ref-color-gray-900);
|
|
18
14
|
--prime-color-border-default: var(--prime-ref-color-gray-750);
|
|
19
15
|
--prime-color-border-faint: var(--prime-ref-color-gray-850);
|
|
20
16
|
--prime-color-border-subtle: var(--prime-ref-color-gray-800);
|
|
21
|
-
--prime-color-control-selected: var(--prime-ref-color-gray-750);
|
|
22
17
|
--prime-color-control-thumb: var(--prime-ref-color-gray-100);
|
|
23
18
|
--prime-color-danger-border: var(--prime-ref-color-red-400);
|
|
24
19
|
--prime-color-danger-hover: var(--prime-ref-color-red-500);
|
|
25
20
|
--prime-color-danger-soft: color-mix(in srgb, var(--prime-ref-color-red-500) 16%, transparent);
|
|
26
21
|
--prime-color-danger-text: var(--prime-ref-color-red-300);
|
|
27
|
-
--prime-color-field-bg: color-mix(in srgb, var(--prime-ref-color-gray-100) 6%, transparent);
|
|
28
22
|
--prime-color-field-bg-disabled: color-mix(in srgb, var(--prime-ref-color-gray-100) 4%, transparent);
|
|
29
|
-
--prime-color-field-bg-focus: var(--prime-ref-color-gray-925);
|
|
30
|
-
--prime-color-field-bg-hover: color-mix(in srgb, var(--prime-ref-color-gray-100) 12%, transparent);
|
|
31
|
-
--prime-color-field-bg-surface: color-mix(in srgb, var(--prime-ref-color-gray-100) 6%, transparent);
|
|
32
23
|
--prime-color-fill-faint: rgba(233, 235, 240, 0.02);
|
|
33
|
-
--prime-color-fill-muted: color-mix(in srgb, var(--prime-ref-color-gray-100) 7%, transparent);
|
|
34
|
-
--prime-color-fill-muted-hover: color-mix(in srgb, var(--prime-ref-color-gray-100) 10%, transparent);
|
|
35
24
|
--prime-color-fill-strong: color-mix(in srgb, var(--prime-ref-color-gray-100) 16%, transparent);
|
|
36
25
|
--prime-color-fill-strong-hover: color-mix(in srgb, var(--prime-ref-color-gray-100) 22%, transparent);
|
|
37
26
|
--prime-color-fill-subtle: rgba(233, 235, 240, 0.05);
|
|
@@ -41,6 +30,38 @@
|
|
|
41
30
|
--prime-color-info-fg: var(--prime-ref-color-gray-950);
|
|
42
31
|
--prime-color-info-soft: color-mix(in srgb, var(--prime-ref-color-sky-500) 16%, transparent);
|
|
43
32
|
--prime-color-info-text: var(--prime-ref-color-sky-300);
|
|
33
|
+
--prime-color-layer-0-bg: #0d0f13;
|
|
34
|
+
--prime-color-layer-0-fill: #14161a;
|
|
35
|
+
--prime-color-layer-0-fill-hover: #1a1c21;
|
|
36
|
+
--prime-color-layer-0-selected: #212428;
|
|
37
|
+
--prime-color-layer-1-bg: #14161a;
|
|
38
|
+
--prime-color-layer-1-fill: #1a1c21;
|
|
39
|
+
--prime-color-layer-1-fill-hover: #212428;
|
|
40
|
+
--prime-color-layer-1-selected: #292b2f;
|
|
41
|
+
--prime-color-layer-2-bg: #1a1c21;
|
|
42
|
+
--prime-color-layer-2-fill: #212428;
|
|
43
|
+
--prime-color-layer-2-fill-hover: #292b2f;
|
|
44
|
+
--prime-color-layer-2-selected: #303237;
|
|
45
|
+
--prime-color-layer-3-bg: #212428;
|
|
46
|
+
--prime-color-layer-3-fill: #292b2f;
|
|
47
|
+
--prime-color-layer-3-fill-hover: #303237;
|
|
48
|
+
--prime-color-layer-3-selected: #383a3f;
|
|
49
|
+
--prime-color-layer-4-bg: #292b2f;
|
|
50
|
+
--prime-color-layer-4-fill: #303237;
|
|
51
|
+
--prime-color-layer-4-fill-hover: #383a3f;
|
|
52
|
+
--prime-color-layer-4-selected: #3f4247;
|
|
53
|
+
--prime-color-layer-floating-bg: #1a1c21;
|
|
54
|
+
--prime-color-layer-floating-fill: #212428;
|
|
55
|
+
--prime-color-layer-floating-fill-hover: #292b2f;
|
|
56
|
+
--prime-color-layer-floating-selected: #303237;
|
|
57
|
+
--prime-color-layer-floating1-bg: #212328;
|
|
58
|
+
--prime-color-layer-floating1-fill: #282a2f;
|
|
59
|
+
--prime-color-layer-floating1-fill-hover: #303237;
|
|
60
|
+
--prime-color-layer-floating1-selected: #373a3e;
|
|
61
|
+
--prime-color-layer-floating2-bg: #282a2f;
|
|
62
|
+
--prime-color-layer-floating2-fill: #303237;
|
|
63
|
+
--prime-color-layer-floating2-fill-hover: #373a3e;
|
|
64
|
+
--prime-color-layer-floating2-selected: #3f4146;
|
|
44
65
|
--prime-color-palette-blue-soft: color-mix(in srgb, var(--prime-ref-color-cobalt-500) 16%, transparent);
|
|
45
66
|
--prime-color-palette-blue-solid: var(--prime-ref-color-cobalt-400);
|
|
46
67
|
--prime-color-palette-blue-solid-fg: var(--prime-ref-color-gray-950);
|
|
@@ -90,8 +111,10 @@
|
|
|
90
111
|
--prime-color-text-placeholder: var(--prime-ref-color-gray-400);
|
|
91
112
|
--prime-color-text-primary: var(--prime-ref-color-gray-100);
|
|
92
113
|
--prime-color-text-secondary: var(--prime-ref-color-gray-300);
|
|
93
|
-
--prime-color-tooltip-bg: var(--prime-ref-color-gray-
|
|
94
|
-
--prime-color-tooltip-
|
|
114
|
+
--prime-color-tooltip-bg: var(--prime-ref-color-gray-100);
|
|
115
|
+
--prime-color-tooltip-fill: rgba(17, 19, 24, 0.08);
|
|
116
|
+
--prime-color-tooltip-muted: var(--prime-ref-color-gray-600);
|
|
117
|
+
--prime-color-tooltip-text: var(--prime-ref-color-gray-925);
|
|
95
118
|
--prime-color-warning-default: var(--prime-ref-color-orange-400);
|
|
96
119
|
--prime-color-warning-fg: var(--prime-ref-color-gray-950);
|
|
97
120
|
--prime-color-warning-soft: color-mix(in srgb, var(--prime-ref-color-orange-500) 16%, transparent);
|