@techsio/ui-kit 0.38.0 → 0.40.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/dist/.storybook/manager.d.ts +2 -0
- package/dist/.storybook/manager.d.ts.map +1 -0
- package/dist/.storybook/preview.d.ts.map +1 -1
- package/dist/atoms/action-icon.figma.js +1 -1
- package/dist/atoms/badge.figma.js +1 -1
- package/dist/atoms/button.figma.js +1 -1
- package/dist/atoms/checkbox.figma.js +1 -1
- package/dist/atoms/icon.figma.js +1 -1
- package/dist/atoms/image.figma.js +1 -1
- package/dist/atoms/input.figma.js +1 -1
- package/dist/atoms/label.figma.js +1 -1
- package/dist/atoms/link-button.figma.js +1 -1
- package/dist/atoms/link.figma.js +1 -1
- package/dist/atoms/numeric-input.figma.js +1 -1
- package/dist/atoms/rating.figma.js +1 -1
- package/dist/atoms/skeleton.figma.js +3 -3
- package/dist/atoms/status-text.figma.js +1 -1
- package/dist/atoms/textarea.figma.js +1 -1
- package/dist/atoms/tooltip.figma.js +1 -1
- package/dist/molecules/accordion.figma.js +1 -1
- package/dist/molecules/breadcrumb.figma.js +1 -1
- package/dist/molecules/carousel.figma.js +1 -1
- package/dist/molecules/chart.js +393 -0
- package/dist/molecules/combobox.figma.js +1 -1
- package/dist/molecules/combobox.js +47 -32
- package/dist/molecules/dialog.figma.js +1 -1
- package/dist/molecules/form-checkbox.figma.js +1 -1
- package/dist/molecules/form-input.figma.js +1 -1
- package/dist/molecules/form-numeric-input.figma.js +1 -1
- package/dist/molecules/form-textarea.figma.js +1 -1
- package/dist/molecules/menu.figma.js +1 -1
- package/dist/molecules/menu.js +44 -38
- package/dist/molecules/pagination.figma.js +1 -1
- package/dist/molecules/phone-input.figma.js +1 -1
- package/dist/molecules/popover.figma.js +1 -1
- package/dist/molecules/product-card.figma.js +1 -1
- package/dist/molecules/radio-card.figma.js +1 -1
- package/dist/molecules/radio-group.figma.js +1 -1
- package/dist/molecules/search-form.figma.js +1 -1
- package/dist/molecules/select.figma.js +1 -1
- package/dist/molecules/select.js +24 -28
- package/dist/molecules/slider.figma.js +1 -1
- package/dist/molecules/steps.figma.js +1 -1
- package/dist/molecules/switch.figma.js +1 -1
- package/dist/molecules/tabs.figma.js +1 -1
- package/dist/molecules/toast.figma.js +1 -1
- package/dist/molecules/tree-view.figma.js +1 -1
- package/dist/organisms/footer.figma.js +1 -1
- package/dist/organisms/gallery.figma.js +1 -1
- package/dist/organisms/header.figma.js +1 -1
- package/dist/organisms/table.figma.js +1 -1
- package/dist/organisms/table.js +4 -1
- package/dist/src/molecules/chart.d.ts +64 -0
- package/dist/src/molecules/chart.d.ts.map +1 -0
- package/dist/src/molecules/combobox.d.ts +6 -18
- package/dist/src/molecules/combobox.d.ts.map +1 -1
- package/dist/src/molecules/menu.d.ts +12 -9
- package/dist/src/molecules/menu.d.ts.map +1 -1
- package/dist/src/molecules/select.d.ts +12 -12
- package/dist/src/molecules/select.d.ts.map +1 -1
- package/dist/src/organisms/table.d.ts +1 -1
- package/dist/src/organisms/table.d.ts.map +1 -1
- package/dist/src/templates/select.d.ts +1 -1
- package/dist/src/theme/theme-config.d.ts +5 -0
- package/dist/src/theme/theme-config.d.ts.map +1 -1
- package/dist/stories/changelog/changelog.stories.d.ts.map +1 -1
- package/dist/stories/molecules/chart.stories.d.ts +24 -0
- package/dist/stories/molecules/chart.stories.d.ts.map +1 -0
- package/dist/theme/theme-config.js +7 -0
- package/package.json +8 -1
- package/src/tokens/components/_popup-surface.css +163 -0
- package/src/tokens/components/components.css +2 -2
- package/src/tokens/components/molecules/_chart.css +98 -0
- package/src/tokens/components/molecules/_combobox.css +0 -12
- package/src/tokens/components/molecules/_menu.css +4 -0
- package/src/tokens/components/molecules/_select.css +0 -11
- package/src/tokens/components/organisms/_table.css +17 -0
- package/src/tokens/figma/brand-overrides.css +141 -19
- package/src/tokens/figma/business/variables.css +437 -0
- package/src/tokens/figma/dark/variables.css +100 -1455
- package/src/tokens/figma/light/variables.css +213 -179
- package/src/tokens/figma/neo/variables.css +87 -1442
- package/src/tokens/figma/neo-dark/variables.css +84 -1439
- package/src/tokens/figma/variables.css +217 -183
- package/src/tokens/components/_icon-button.css +0 -39
- package/src/tokens/components/molecules/_search-form.css +0 -12
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Shared popup-surface foundation.
|
|
3
|
+
*
|
|
4
|
+
* Every floating list surface (Select, Combobox, Menu, and everything that
|
|
5
|
+
* composes them — PhoneInput's country picker, DataTable's column settings)
|
|
6
|
+
* draws its panel and its options from one set of tokens, so hover, radius,
|
|
7
|
+
* colour and keyboard/focus behaviour are identical across all of them.
|
|
8
|
+
*
|
|
9
|
+
* SOURCE OF TRUTH: the `popup-surface` collection in Figma. Its tokens
|
|
10
|
+
* (--color-popup-*, --radius-popup-*, --padding-popup-*, --spacing-popup-*,
|
|
11
|
+
* --shadow-popup, --size-popup-indicator, --border-width-popup) arrive via
|
|
12
|
+
* tokens/figma/variables.css and are NOT redeclared here. The component
|
|
13
|
+
* collections (select, menu, combobox) alias the same popup variables in
|
|
14
|
+
* Figma, so the two layers cannot drift.
|
|
15
|
+
*
|
|
16
|
+
* This file holds only what Figma has no concept of:
|
|
17
|
+
* - the @utility blocks that compose those tokens,
|
|
18
|
+
* - `--z-popup` layering (code-side, same precedent as `--z-content`),
|
|
19
|
+
* - the `--popup-item-*` runtime scale, set per size by popup-size-*.
|
|
20
|
+
*/
|
|
21
|
+
@theme static {
|
|
22
|
+
/*
|
|
23
|
+
* Single layer for every popup. Nesting bumps --layer-index rather than
|
|
24
|
+
* hard-coding a bigger number, so a Select inside a Popover always wins.
|
|
25
|
+
*/
|
|
26
|
+
--z-popup: 50;
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* Foreground for a row that is checked but painted on NO filled background
|
|
30
|
+
* — Menu's checkbox/radio rows. Distinct from
|
|
31
|
+
* --color-popup-item-fg-selected, which is white because Select/Combobox
|
|
32
|
+
* paint a solid --color-popup-item-bg-selected behind it.
|
|
33
|
+
*
|
|
34
|
+
* Only the LIGHT half is a fix. On a light panel that white landed on the
|
|
35
|
+
* hover tint at 1.42:1 (base) / 1.46:1 (neo) — invisible. primary-800
|
|
36
|
+
* clears it at 6.21:1 / 5.73:1; primary-700 was rejected because it fails
|
|
37
|
+
* neo at 4.41:1.
|
|
38
|
+
*
|
|
39
|
+
* The DARK half stays white deliberately. There the same white was already
|
|
40
|
+
* correct — 9.46:1 (base) / 8.34:1 (neo) against the dark hover tint — so
|
|
41
|
+
* changing it would alter a mode that was never broken. An earlier version
|
|
42
|
+
* of this fix used primary-200 for dark, which still passed but needlessly
|
|
43
|
+
* dropped contrast to 7.10 / 5.73.
|
|
44
|
+
*
|
|
45
|
+
* Named for the state it serves, not the colour: it is an accent in light
|
|
46
|
+
* and plain white in dark, so an appearance-based name would lie in one of
|
|
47
|
+
* the two modes.
|
|
48
|
+
*
|
|
49
|
+
* TEMPORARY BRIDGE: Figma has no popup-surface token for this yet, which is
|
|
50
|
+
* why this declaration survives (figma/variables.css is imported after this
|
|
51
|
+
* file and would otherwise win). Delete once Figma exports it.
|
|
52
|
+
*/
|
|
53
|
+
--color-popup-item-fg-checked: light-dark(
|
|
54
|
+
var(--color-primary-800),
|
|
55
|
+
var(--color-white)
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* Panel foundation. Surface only — placement animation stays in the
|
|
61
|
+
* component's tv() slots because it differs per Zag machine.
|
|
62
|
+
*
|
|
63
|
+
* Height is capped at the space the positioner actually measured
|
|
64
|
+
* (--available-height, set by Zag/Floating UI) rather than a fixed height or
|
|
65
|
+
* a magic pixel value, so a 2-option list is short and a 50-option list
|
|
66
|
+
* scrolls instead of running off-screen.
|
|
67
|
+
*/
|
|
68
|
+
@utility popup-surface-base {
|
|
69
|
+
background-color: var(--color-popup-bg);
|
|
70
|
+
border-width: var(--border-width-popup);
|
|
71
|
+
border-style: solid;
|
|
72
|
+
border-color: var(--color-popup-border);
|
|
73
|
+
border-radius: var(--radius-popup);
|
|
74
|
+
box-shadow: var(--shadow-popup);
|
|
75
|
+
padding: var(--padding-popup-viewport);
|
|
76
|
+
max-height: var(--available-height);
|
|
77
|
+
overflow-y: auto;
|
|
78
|
+
overscroll-behavior: contain;
|
|
79
|
+
z-index: calc(var(--z-popup) + var(--layer-index, 0));
|
|
80
|
+
|
|
81
|
+
/* The panel takes DOM focus for keyboard navigation, but that focus is
|
|
82
|
+
* never the thing the user should see — the highlighted option is. */
|
|
83
|
+
outline: none;
|
|
84
|
+
|
|
85
|
+
/* Scale from the trigger, whichever side the panel flipped to. */
|
|
86
|
+
transform-origin: var(--transform-origin);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* Per-size scale. Applied to the panel so every option inside inherits it —
|
|
91
|
+
* this is what ties the open dropdown's proportions to the size of the
|
|
92
|
+
* control that opened it. Each size also matches the panel's corner radius to
|
|
93
|
+
* the trigger's radius at the same size.
|
|
94
|
+
*/
|
|
95
|
+
@utility popup-size-xs {
|
|
96
|
+
--popup-item-x: var(--padding-popup-item-x-xs);
|
|
97
|
+
--popup-item-y: var(--padding-popup-item-y-xs);
|
|
98
|
+
--popup-item-gap: var(--spacing-popup-item-xs);
|
|
99
|
+
|
|
100
|
+
border-radius: var(--radius-popup-xs);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@utility popup-size-sm {
|
|
104
|
+
--popup-item-x: var(--padding-popup-item-x-sm);
|
|
105
|
+
--popup-item-y: var(--padding-popup-item-y-sm);
|
|
106
|
+
--popup-item-gap: var(--spacing-popup-item-sm);
|
|
107
|
+
|
|
108
|
+
border-radius: var(--radius-popup-sm);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@utility popup-size-md {
|
|
112
|
+
--popup-item-x: var(--padding-popup-item-x-md);
|
|
113
|
+
--popup-item-y: var(--padding-popup-item-y-md);
|
|
114
|
+
--popup-item-gap: var(--spacing-popup-item-md);
|
|
115
|
+
|
|
116
|
+
border-radius: var(--radius-popup-md);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@utility popup-size-lg {
|
|
120
|
+
--popup-item-x: var(--padding-popup-item-x-lg);
|
|
121
|
+
--popup-item-y: var(--padding-popup-item-y-lg);
|
|
122
|
+
--popup-item-gap: var(--spacing-popup-item-lg);
|
|
123
|
+
|
|
124
|
+
border-radius: var(--radius-popup-lg);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/*
|
|
128
|
+
* Option foundation.
|
|
129
|
+
*
|
|
130
|
+
* Two independent states, never conflated:
|
|
131
|
+
* - highlighted (pointer hover OR keyboard cursor) → background tint
|
|
132
|
+
* - checked (current selection) → indicator + accent fg
|
|
133
|
+
* They can co-occur, and the indicator means selection is never signalled by
|
|
134
|
+
* colour alone.
|
|
135
|
+
*/
|
|
136
|
+
@utility popup-item-base {
|
|
137
|
+
position: relative;
|
|
138
|
+
display: flex;
|
|
139
|
+
align-items: center;
|
|
140
|
+
width: 100%;
|
|
141
|
+
border-radius: var(--radius-popup-item);
|
|
142
|
+
color: var(--color-popup-item-fg);
|
|
143
|
+
|
|
144
|
+
/* --popup-item-x/y/gap are set per size by the panel's popup-size-*;
|
|
145
|
+
* md is the fallback for a panel that declares no size. */
|
|
146
|
+
padding: var(--popup-item-y, var(--padding-popup-item-y-md))
|
|
147
|
+
var(--popup-item-x, var(--padding-popup-item-x-md));
|
|
148
|
+
gap: var(--popup-item-gap, var(--spacing-popup-item-md));
|
|
149
|
+
|
|
150
|
+
/* Permanent gutter for the selection indicator. */
|
|
151
|
+
padding-inline-end: calc(
|
|
152
|
+
var(--popup-item-x, var(--padding-popup-item-x-md)) +
|
|
153
|
+
var(--size-popup-indicator)
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
/* Every popup option is clickable — signal it like any other control. */
|
|
157
|
+
cursor: pointer;
|
|
158
|
+
user-select: none;
|
|
159
|
+
|
|
160
|
+
/* Highlight is the focus affordance; a second ring on top of it reads as
|
|
161
|
+
* two selected rows. */
|
|
162
|
+
outline: none;
|
|
163
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@import "./_form-control.css";
|
|
2
|
-
@import "./
|
|
2
|
+
@import "./_popup-surface.css";
|
|
3
3
|
|
|
4
4
|
@import "./atoms/_badge.css";
|
|
5
5
|
@import "./atoms/_button.css";
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
@import "./molecules/_accordion.css";
|
|
20
20
|
@import "./molecules/_breadcrumb.css";
|
|
21
21
|
@import "./molecules/_carousel.css";
|
|
22
|
+
@import "./molecules/_chart.css";
|
|
22
23
|
@import "./molecules/_color-select.css";
|
|
23
24
|
@import "./molecules/_combobox.css";
|
|
24
25
|
@import "./molecules/_dialog.css";
|
|
@@ -30,7 +31,6 @@
|
|
|
30
31
|
@import "./molecules/_tabs.css";
|
|
31
32
|
@import "./molecules/_product-card.css";
|
|
32
33
|
@import "./molecules/_slider.css";
|
|
33
|
-
@import "./molecules/_search-form.css";
|
|
34
34
|
@import "./molecules/_select.css";
|
|
35
35
|
@import "./molecules/_phone-input.css";
|
|
36
36
|
@import "./molecules/_steps.css";
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Chart — PROTOTYPE tokens (not yet exported from Figma; once the MVP look is
|
|
3
|
+
* signed off, mirror these into Figma via the figma-token-binding skill).
|
|
4
|
+
*
|
|
5
|
+
* Series palette: six fixed-order categorical hues for data identity. The
|
|
6
|
+
* exact primitive steps were chosen so the SAME values pass the dataviz
|
|
7
|
+
* six-checks validator (lightness band, chroma floor, adjacent-pair CVD
|
|
8
|
+
* separation, normal-vision floor, >=3:1 surface contrast) on BOTH the light
|
|
9
|
+
* (white) and dark (gray-950) chart surfaces — hence no light-dark() split.
|
|
10
|
+
*
|
|
11
|
+
* `--color-primary` (blue-300/sky-300) is deliberately NOT series-1: it sits
|
|
12
|
+
* outside the chart lightness band in light mode. Brand themes that want
|
|
13
|
+
* branded charts should override `--color-chart-series-*` with steps that
|
|
14
|
+
* re-pass the validator, not alias the brand accent directly.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
@theme static {
|
|
18
|
+
/* Reference layer — series identity, assigned in fixed order. The palette is
|
|
19
|
+
* six entries and TanStack indexes it modulo its length (scales.js), so a 7th
|
|
20
|
+
* distinct series wraps back onto series-1 rather than erroring. Keep charts
|
|
21
|
+
* to <=6 series; Chart warns in dev when a dataset exceeds that.
|
|
22
|
+
*
|
|
23
|
+
* Note: `--color-blue-500` is re-declared by figma/variables.css, which is
|
|
24
|
+
* imported after this file — series-1 therefore resolves to the Figma step
|
|
25
|
+
* (chroma 0.188), not Tailwind's default (chroma 0.214). Series 2-6 have no
|
|
26
|
+
* Figma counterpart and resolve to Tailwind defaults. Re-run the dataviz
|
|
27
|
+
* validator against these *resolved* values before treating the set as
|
|
28
|
+
* signed off. */
|
|
29
|
+
--color-chart-series-1: var(--color-blue-500);
|
|
30
|
+
--color-chart-series-2: var(--color-orange-600);
|
|
31
|
+
--color-chart-series-3: var(--color-emerald-600);
|
|
32
|
+
--color-chart-series-4: var(--color-violet-500);
|
|
33
|
+
--color-chart-series-5: var(--color-rose-500);
|
|
34
|
+
--color-chart-series-6: var(--color-cyan-600);
|
|
35
|
+
|
|
36
|
+
/* Derived layer — chart chrome and tooltip surface. Axis/tick/legend text
|
|
37
|
+
* renders at small sizes inside the SVG, so it wears primary ink rather than
|
|
38
|
+
* the secondary tone.
|
|
39
|
+
*
|
|
40
|
+
* Caveat on the contrast math: TanStack composites this color before it
|
|
41
|
+
* paints — tick/legend labels at fillOpacity 0.68, axis lines at
|
|
42
|
+
* strokeOpacity 0.28 (scene.js). So the *rendered* label is fg-primary at 68%
|
|
43
|
+
* over the surface, not fg-primary itself, and it does not reach the repo's
|
|
44
|
+
* 90 Lc gold gate on its own. Fixing that properly means compensating for the
|
|
45
|
+
* library opacity (or overriding it), not swapping this token — tracked in
|
|
46
|
+
* https://github.com/TechsioCZ/new-engine/issues/608 rather than silently
|
|
47
|
+
* claimed as passing. */
|
|
48
|
+
--color-chart-fg: var(--color-fg-primary);
|
|
49
|
+
--color-chart-tooltip-bg: var(--color-tooltip-bg);
|
|
50
|
+
--color-chart-tooltip-fg: var(--color-tooltip-fg);
|
|
51
|
+
--color-chart-tooltip-border: var(--color-tooltip-border-outline);
|
|
52
|
+
--radius-chart-tooltip: var(--radius-tooltip);
|
|
53
|
+
--text-chart-tooltip: var(--text-tooltip-md);
|
|
54
|
+
--padding-chart-tooltip: var(--padding-tooltip-md);
|
|
55
|
+
--border-width-chart-tooltip: var(--border-width-tooltip);
|
|
56
|
+
--font-chart-tooltip: var(--font-body);
|
|
57
|
+
--font-weight-chart-tooltip: var(--font-weight-medium);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/*
|
|
61
|
+
* Bridge our series tokens into TanStack Charts' categorical palette
|
|
62
|
+
* variables (`--ts-chart-1..6`). Axis text, muted labels and grid lines
|
|
63
|
+
* inherit `currentColor`, so the host also carries `text-chart-fg`.
|
|
64
|
+
*/
|
|
65
|
+
@utility chart-base {
|
|
66
|
+
--ts-chart-1: var(--color-chart-series-1);
|
|
67
|
+
--ts-chart-2: var(--color-chart-series-2);
|
|
68
|
+
--ts-chart-3: var(--color-chart-series-3);
|
|
69
|
+
--ts-chart-4: var(--color-chart-series-4);
|
|
70
|
+
--ts-chart-5: var(--color-chart-series-5);
|
|
71
|
+
--ts-chart-6: var(--color-chart-series-6);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/*
|
|
75
|
+
* Surface styling for the library's native HTML tooltip element.
|
|
76
|
+
*
|
|
77
|
+
* `!important` is load-bearing, not defensive: TanStack's `createTooltip()`
|
|
78
|
+
* writes background/color/border/border-radius/padding and a `font` shorthand
|
|
79
|
+
* directly onto `element.style`, then only *appends* this class. Inline styles
|
|
80
|
+
* beat class rules, so without `!important` every declaration below is dead and
|
|
81
|
+
* the tooltip renders in the system `Canvas`/`CanvasText` colors — visible as an
|
|
82
|
+
* unthemed tooltip under the neo/cyber brands and in dark mode. The `font`
|
|
83
|
+
* shorthand also resets font-size, so that too must win.
|
|
84
|
+
*/
|
|
85
|
+
@utility chart-tooltip {
|
|
86
|
+
background: var(--color-chart-tooltip-bg) !important;
|
|
87
|
+
color: var(--color-chart-tooltip-fg) !important;
|
|
88
|
+
border: var(--border-width-chart-tooltip) solid
|
|
89
|
+
var(--color-chart-tooltip-border) !important;
|
|
90
|
+
border-radius: var(--radius-chart-tooltip) !important;
|
|
91
|
+
padding: var(--padding-chart-tooltip) !important;
|
|
92
|
+
/* The inline `font` shorthand sets family, weight, size and line-height in
|
|
93
|
+
* one go, so countering only the size would leave the chart tooltip in
|
|
94
|
+
* system-ui while every other tooltip in the library uses --font-body. */
|
|
95
|
+
font-family: var(--font-chart-tooltip) !important;
|
|
96
|
+
font-size: var(--text-chart-tooltip) !important;
|
|
97
|
+
font-weight: var(--font-weight-chart-tooltip) !important;
|
|
98
|
+
}
|
|
@@ -4,10 +4,7 @@
|
|
|
4
4
|
* Kept here:
|
|
5
5
|
* - `--padding-combobox-input-{size}` semantic aliases (Figma exports
|
|
6
6
|
* the shared per-size spacing axis).
|
|
7
|
-
* - `--padding-combobox-item-{size}` combined shorthands (Figma splits
|
|
8
|
-
* the item padding into x + per-size y).
|
|
9
7
|
* - `--padding-combobox-trigger` composite.
|
|
10
|
-
* - `--z-combobox-content` layering (code-side).
|
|
11
8
|
*/
|
|
12
9
|
|
|
13
10
|
@theme static {
|
|
@@ -15,16 +12,7 @@
|
|
|
15
12
|
--padding-combobox-input-md: var(--spacing-combobox-md);
|
|
16
13
|
--padding-combobox-input-lg: var(--spacing-combobox-lg);
|
|
17
14
|
|
|
18
|
-
--padding-combobox-item-sm: var(--spacing-combobox-item-padding-y-sm)
|
|
19
|
-
var(--spacing-combobox-item-padding-x);
|
|
20
|
-
--padding-combobox-item-md: var(--spacing-combobox-item-padding-y-md)
|
|
21
|
-
var(--spacing-combobox-item-padding-x);
|
|
22
|
-
--padding-combobox-item-lg: var(--spacing-combobox-item-padding-y-lg)
|
|
23
|
-
var(--spacing-combobox-item-padding-x);
|
|
24
|
-
|
|
25
15
|
--padding-combobox-trigger: 0 var(--spacing-100);
|
|
26
|
-
|
|
27
|
-
--z-combobox-content: 20;
|
|
28
16
|
}
|
|
29
17
|
|
|
30
18
|
/* Semantic tokens for combobox icons */
|
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Kept here:
|
|
5
5
|
* - semantic glyph @utility aliases.
|
|
6
|
+
* - `--text-menu-xs` — Figma exports sm/md/lg for this component; xs was
|
|
7
|
+
* added code-side alongside DataTable's xs-sized column-settings menu.
|
|
6
8
|
*/
|
|
7
9
|
|
|
8
10
|
@theme static {
|
|
9
11
|
/* Tailwind's h- utility doesn't read the --size-* namespace; alias the
|
|
10
12
|
* Figma token into --height-* so `h-menu-separator` keeps working. */
|
|
11
13
|
--height-menu-separator: var(--size-menu-separator-height);
|
|
14
|
+
|
|
15
|
+
--text-menu-xs: var(--text-xs);
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
/* Semantic tokens for menu icons */
|
|
@@ -4,23 +4,12 @@
|
|
|
4
4
|
* Kept here:
|
|
5
5
|
* - `--color-select-danger` — helper-text color seed (Figma has only
|
|
6
6
|
* border validation colors).
|
|
7
|
-
* - `--padding-select-item` composite bridge (Figma splits x/y).
|
|
8
|
-
* - `--spacing-content` — consumed as a raw var() inside calc() in the
|
|
9
|
-
* TSX; aliases Figma's --spacing-select-content.
|
|
10
|
-
* - `--z-content` layering (code-side).
|
|
11
7
|
*/
|
|
12
8
|
|
|
13
9
|
@theme static {
|
|
14
10
|
--color-select-danger: var(--color-danger);
|
|
15
|
-
|
|
16
|
-
--padding-select-item: var(--padding-select-item-y) var(--padding-select-item-x);
|
|
17
|
-
|
|
18
|
-
--spacing-content: var(--spacing-select-content);
|
|
19
|
-
|
|
20
|
-
--z-content: 50;
|
|
21
11
|
}
|
|
22
12
|
|
|
23
|
-
|
|
24
13
|
/* === ICONS === */
|
|
25
14
|
@utility token-icon-select-indicator {
|
|
26
15
|
@apply token-icon-chevron-down;
|
|
@@ -14,4 +14,21 @@
|
|
|
14
14
|
var(--padding-table-cell-md-x);
|
|
15
15
|
--padding-table-cell-lg: var(--padding-table-cell-lg-y)
|
|
16
16
|
var(--padding-table-cell-lg-x);
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
* Foreground for a selected row. Figma exports
|
|
20
|
+
* --color-table-row-bg-selected but has no `fg` counterpart, so
|
|
21
|
+
* `text-table-row-fg-selected` in table.tsx generated no utility at all and
|
|
22
|
+
* selected rows silently kept their normal text colour on the filled brand
|
|
23
|
+
* background. Reported by review; this restores the intended pairing.
|
|
24
|
+
*
|
|
25
|
+
* White clears AA against every selected background the row can have:
|
|
26
|
+
* base light #155dfc 5.24:1, base dark #0069a8 5.86:1, neo #e60101 4.81:1
|
|
27
|
+
* in both modes. Mode-invariant, because the selected fill stays a solid
|
|
28
|
+
* brand colour in light and dark alike.
|
|
29
|
+
*
|
|
30
|
+
* TEMPORARY BRIDGE: delete once Figma exports color/table/row/fg/selected —
|
|
31
|
+
* figma/variables.css is imported after this file and would win.
|
|
32
|
+
*/
|
|
33
|
+
--color-table-row-fg-selected: var(--color-white);
|
|
17
34
|
}
|
|
@@ -9,17 +9,42 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
[data-theme="neo"] {
|
|
12
|
-
--color-
|
|
12
|
+
--color-bg-danger-active: light-dark(oklch(0.584 0.191 22.13), oklch(0.881 0.063 18.416));
|
|
13
|
+
--color-bg-danger-hover: light-dark(oklch(0.624 0.19 22.474), oklch(0.855 0.079 18.827));
|
|
14
|
+
--color-bg-light-danger-active: light-dark(oklch(0.685 0.114 22.469), oklch(0.962 0.019 25.602));
|
|
15
|
+
--color-bg-light-danger-base: oklch(0.9 0.048 18.09);
|
|
16
|
+
--color-bg-light-danger-hover: light-dark(oklch(0.725 0.114 22.247), oklch(0.953 0.023 24.126));
|
|
13
17
|
--color-bg-light-primary-active: var(--color-primary-300);
|
|
14
18
|
--color-bg-light-primary-base: var(--color-primary-100);
|
|
15
19
|
--color-bg-light-primary-hover: var(--color-primary-200);
|
|
20
|
+
--color-bg-light-secondary-active: light-dark(oklch(0.685 0.128 47.292), oklch(0.97 0.107 105.368));
|
|
21
|
+
--color-bg-light-secondary-base: oklch(0.893 0.063 56.696);
|
|
22
|
+
--color-bg-light-secondary-hover: light-dark(oklch(0.726 0.128 47.749), oklch(0.97 0.107 105.368));
|
|
23
|
+
--color-bg-light-tertiary-active: light-dark(oklch(0.802 0.073 346.374), oklch(0.884 0.064 6.283));
|
|
24
|
+
--color-bg-light-tertiary-base: oklch(0.941 0.034 344.058);
|
|
25
|
+
--color-bg-light-tertiary-hover: light-dark(oklch(0.842 0.072 346.249), oklch(0.857 0.079 9.107));
|
|
26
|
+
--color-bg-light-warning-active: light-dark(oklch(0.775 0.11 86.269), oklch(0.975 0.117 107.339));
|
|
27
|
+
--color-bg-light-warning-base: oklch(0.928 0.073 92.942);
|
|
28
|
+
--color-bg-light-warning-hover: light-dark(oklch(0.816 0.11 86.477), oklch(0.975 0.117 107.339));
|
|
16
29
|
--color-bg-outlined-primary-active: var(--color-primary-200);
|
|
17
30
|
--color-bg-outlined-primary-hover: var(--color-primary-100);
|
|
18
31
|
--color-bg-primary-active: var(--color-primary-800);
|
|
19
32
|
--color-bg-primary-base: var(--color-primary-600);
|
|
20
33
|
--color-bg-primary-hover: var(--color-primary-700);
|
|
21
|
-
--color-
|
|
34
|
+
--color-bg-tertiary-active: light-dark(oklch(0.704 0.119 346.312), oklch(0.769 0.142 7.776));
|
|
35
|
+
--color-bg-tertiary-hover: light-dark(oklch(0.743 0.12 345.839), oklch(0.747 0.158 9.988));
|
|
36
|
+
--color-bg-warning-active: light-dark(oklch(0.678 0.142 76.945), oklch(0.937 0.199 105.01));
|
|
37
|
+
--color-bg-warning-hover: light-dark(oklch(0.718 0.149 79.256), oklch(0.909 0.189 99.865));
|
|
38
|
+
--color-fg-accent-danger: oklch(0.452 0.066 4.881);
|
|
22
39
|
--color-fg-accent-primary: var(--color-primary-600);
|
|
40
|
+
--color-fg-accent-secondary: oklch(0.447 0.076 49.767);
|
|
41
|
+
--color-fg-accent-success: light-dark(var(--color-success-500), var(--color-success-300));
|
|
42
|
+
--color-fg-accent-tertiary: oklch(0.511 0.054 323.997);
|
|
43
|
+
--color-fg-accent-warning: oklch(0.492 0.079 93.623);
|
|
44
|
+
--color-fg-on-primary-indicator: light-dark(var(--color-fg-reverse), var(--color-white));
|
|
45
|
+
--color-fg-on-primary-solid: light-dark(var(--color-fg-reverse), var(--color-white));
|
|
46
|
+
--color-fg-on-primary-solid-neo: light-dark(var(--color-fg-reverse), var(--color-white));
|
|
47
|
+
--color-fill-selected: var(--color-primary-600);
|
|
23
48
|
--color-primary-100: oklch(0.936 0.032 17.738);
|
|
24
49
|
--color-primary-200: oklch(0.883 0.062 18.386);
|
|
25
50
|
--color-primary-300: oklch(0.805 0.111 19.782);
|
|
@@ -29,21 +54,118 @@
|
|
|
29
54
|
--color-primary-700: light-dark(oklch(0.509 0.209 28.513), oklch(0.583 0.239 28.476));
|
|
30
55
|
--color-primary-800: light-dark(oklch(0.445 0.177 26.787), oklch(0.509 0.209 28.513));
|
|
31
56
|
--color-primary-900: light-dark(oklch(0.397 0.141 25.714), oklch(0.445 0.177 26.787));
|
|
32
|
-
--color-
|
|
33
|
-
--color-
|
|
34
|
-
--color-
|
|
35
|
-
--color-
|
|
36
|
-
--color-
|
|
37
|
-
--color-
|
|
38
|
-
--color-secondary-
|
|
39
|
-
--color-secondary-
|
|
40
|
-
--color-secondary-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
--color-
|
|
45
|
-
--color-
|
|
46
|
-
--color-
|
|
47
|
-
--color-
|
|
48
|
-
--color-
|
|
57
|
+
--color-secondary-100: oklch(0.962 0.058 95.617);
|
|
58
|
+
--color-secondary-200: oklch(0.924 0.115 95.746);
|
|
59
|
+
--color-secondary-300: oklch(0.879 0.153 91.605);
|
|
60
|
+
--color-secondary-400: oklch(0.837 0.164 84.429);
|
|
61
|
+
--color-secondary-500: oklch(0.769 0.165 70.08);
|
|
62
|
+
--color-secondary-600: oklch(0.666 0.157 58.318);
|
|
63
|
+
--color-secondary-700: oklch(0.555 0.146 48.998);
|
|
64
|
+
--color-secondary-800: oklch(0.473 0.125 46.201);
|
|
65
|
+
--color-secondary-900: oklch(0.414 0.105 45.904);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
[data-theme="business"] {
|
|
69
|
+
--color-base: var(--color-white);
|
|
70
|
+
--color-base-reverse: var(--color-gray-950);
|
|
71
|
+
--color-bg-badge-danger-solid: var(--color-danger-300);
|
|
72
|
+
--color-bg-badge-primary-solid: var(--color-primary-800);
|
|
73
|
+
--color-bg-badge-secondary-solid: var(--color-secondary-800);
|
|
74
|
+
--color-bg-danger-active: var(--color-danger-500);
|
|
75
|
+
--color-bg-danger-hover: var(--color-danger-400);
|
|
76
|
+
--color-bg-disabled: var(--color-neutral-100);
|
|
77
|
+
--color-bg-light-danger-active: var(--color-danger-300);
|
|
78
|
+
--color-bg-light-danger-base: var(--color-danger-100);
|
|
79
|
+
--color-bg-light-danger-hover: var(--color-danger-200);
|
|
80
|
+
--color-bg-light-primary-active: var(--color-primary-300);
|
|
81
|
+
--color-bg-light-primary-base: var(--color-primary-100);
|
|
82
|
+
--color-bg-light-primary-hover: var(--color-primary-200);
|
|
83
|
+
--color-bg-light-secondary-active: var(--color-secondary-300);
|
|
84
|
+
--color-bg-light-secondary-base: var(--color-secondary-100);
|
|
85
|
+
--color-bg-light-secondary-hover: var(--color-secondary-200);
|
|
86
|
+
--color-bg-light-tertiary-active: var(--color-tertiary-300);
|
|
87
|
+
--color-bg-light-tertiary-base: var(--color-tertiary-100);
|
|
88
|
+
--color-bg-light-tertiary-hover: var(--color-tertiary-200);
|
|
89
|
+
--color-bg-light-warning-active: var(--color-warning-300);
|
|
90
|
+
--color-bg-light-warning-base: var(--color-warning-100);
|
|
91
|
+
--color-bg-light-warning-hover: var(--color-warning-200);
|
|
92
|
+
--color-bg-outlined-danger-active: oklch(0.7 0.191 23.399 / 0.122);
|
|
93
|
+
--color-bg-outlined-danger-hover: oklch(0.702 0.19 23.327 / 0.161);
|
|
94
|
+
--color-bg-outlined-primary-active: var(--color-primary-200);
|
|
95
|
+
--color-bg-outlined-primary-hover: var(--color-primary-100);
|
|
96
|
+
--color-bg-outlined-secondary-active: var(--color-secondary-200);
|
|
97
|
+
--color-bg-outlined-secondary-hover: var(--color-secondary-100);
|
|
98
|
+
--color-bg-outlined-tertiary-active: oklch(0.816 0.114 343.311 / 0.122);
|
|
99
|
+
--color-bg-outlined-tertiary-hover: oklch(0.819 0.125 347.339 / 0.161);
|
|
100
|
+
--color-bg-outlined-warning-active: oklch(0.789 0.163 80.949 / 0.122);
|
|
101
|
+
--color-bg-outlined-warning-hover: oklch(0.788 0.162 82.711 / 0.161);
|
|
102
|
+
--color-bg-primary-active: var(--color-primary-700);
|
|
103
|
+
--color-bg-primary-base: var(--color-primary-500);
|
|
104
|
+
--color-bg-primary-hover: var(--color-primary-600);
|
|
105
|
+
--color-bg-scrim: oklch(0.129 0.041 264.695 / 0.1);
|
|
106
|
+
--color-bg-secondary-active: var(--color-secondary-700);
|
|
107
|
+
--color-bg-secondary-hover: var(--color-secondary-600);
|
|
108
|
+
--color-bg-success: var(--color-success-500);
|
|
109
|
+
--color-bg-switch-checked-hover: var(--color-success-600);
|
|
110
|
+
--color-bg-switch-hover: var(--color-neutral-300);
|
|
111
|
+
--color-bg-switch-invalid: var(--color-danger-400);
|
|
112
|
+
--color-bg-tertiary-active: var(--color-tertiary-500);
|
|
113
|
+
--color-bg-tertiary-hover: var(--color-tertiary-400);
|
|
114
|
+
--color-bg-warning-active: var(--color-warning-500);
|
|
115
|
+
--color-bg-warning-hover: var(--color-warning-400);
|
|
116
|
+
--color-border-danger-focus: var(--color-danger-400);
|
|
117
|
+
--color-border-danger-hover: var(--color-danger-500);
|
|
118
|
+
--color-border-disabled: var(--color-neutral-300);
|
|
119
|
+
--color-border-primary: var(--color-black-15);
|
|
120
|
+
--color-border-success-focus: var(--color-success-500);
|
|
121
|
+
--color-border-success-hover: var(--color-success-600);
|
|
122
|
+
--color-border-warning-focus: var(--color-warning-500);
|
|
123
|
+
--color-border-warning-hover: var(--color-warning-600);
|
|
124
|
+
--color-fg-accent-danger: var(--color-danger-600);
|
|
125
|
+
--color-fg-accent-primary: var(--color-primary-600);
|
|
126
|
+
--color-fg-accent-secondary: var(--color-secondary-700);
|
|
127
|
+
--color-fg-accent-success: var(--color-success-600);
|
|
128
|
+
--color-fg-accent-tertiary: var(--color-tertiary-600);
|
|
129
|
+
--color-fg-accent-warning: var(--color-warning-600);
|
|
130
|
+
--color-fg-badge-on-solid: var(--color-fg-reverse);
|
|
131
|
+
--color-fg-icon-tree: var(--color-fg-primary);
|
|
132
|
+
--color-fg-on-accent-solid: var(--color-fg-reverse);
|
|
133
|
+
--color-fg-on-primary-solid-neo: var(--color-fg-reverse);
|
|
134
|
+
--color-fg-primary: var(--color-slate-950);
|
|
135
|
+
--color-fg-reverse: var(--color-white);
|
|
136
|
+
--color-fg-status-error: var(--color-danger-400);
|
|
137
|
+
--color-fg-status-success: var(--color-success-500);
|
|
138
|
+
--color-fg-status-warning: var(--color-warning-500);
|
|
139
|
+
--color-fill-active: var(--color-black-15);
|
|
140
|
+
--color-fill-base: var(--color-black-5);
|
|
141
|
+
--color-fill-borderless-active: oklch(0 0 0 / 0);
|
|
142
|
+
--color-fill-borderless-base: oklch(0 0 0 / 0);
|
|
143
|
+
--color-fill-borderless-hover: oklch(0 0 0 / 0);
|
|
144
|
+
--color-fill-highlight: var(--color-neutral-300);
|
|
145
|
+
--color-fill-hover: var(--color-primary-200);
|
|
146
|
+
--color-fill-overlay: var(--color-neutral-200);
|
|
147
|
+
--color-fill-selected: var(--color-primary-600);
|
|
148
|
+
--color-fill-surface: var(--color-neutral-100);
|
|
149
|
+
--color-link: var(--color-blue-500);
|
|
150
|
+
--color-primary-100: oklch(0.952 0.016 253.903);
|
|
151
|
+
--color-primary-200: oklch(0.877 0.039 250.677);
|
|
152
|
+
--color-primary-300: oklch(0.774 0.066 247.294);
|
|
153
|
+
--color-primary-400: oklch(0.666 0.095 248.083);
|
|
154
|
+
--color-primary-500: oklch(0.522 0.117 253.551);
|
|
155
|
+
--color-primary-600: oklch(0.452 0.106 253.721);
|
|
156
|
+
--color-primary-700: oklch(0.391 0.097 256.616);
|
|
157
|
+
--color-primary-800: oklch(0.339 0.082 255.266);
|
|
158
|
+
--color-primary-900: oklch(0.287 0.065 255.034);
|
|
159
|
+
--color-ring-default: var(--color-black);
|
|
160
|
+
--color-secondary-100: oklch(0.957 0.017 183.538);
|
|
161
|
+
--color-secondary-200: oklch(0.886 0.041 181.135);
|
|
162
|
+
--color-secondary-300: oklch(0.78 0.072 181.145);
|
|
163
|
+
--color-secondary-400: oklch(0.679 0.094 181.719);
|
|
164
|
+
--color-secondary-500: oklch(0.593 0.097 179.623);
|
|
165
|
+
--color-secondary-600: oklch(0.509 0.082 181.568);
|
|
166
|
+
--color-secondary-700: oklch(0.445 0.073 178.22);
|
|
167
|
+
--color-secondary-800: oklch(0.381 0.06 182.018);
|
|
168
|
+
--color-secondary-900: oklch(0.327 0.051 180.942);
|
|
169
|
+
--color-success: var(--color-success-500);
|
|
170
|
+
--default-ring-color: oklch(0 0 0);
|
|
49
171
|
}
|