@techsio/ui-kit 0.54.0 → 0.54.1
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/atoms/button.js +3 -2
- package/dist/atoms/checkbox.js +1 -1
- package/dist/atoms/input.js +6 -2
- package/dist/atoms/numeric-input.js +5 -5
- package/dist/atoms/skeleton.js +1 -1
- package/dist/atoms/textarea.js +6 -2
- package/dist/internal/organisms/sidebar.styles.js +1 -1
- package/dist/molecules/accordion.js +2 -3
- package/dist/molecules/cascade-select.js +2 -2
- package/dist/molecules/color-select.js +2 -2
- package/dist/molecules/combobox.js +2 -2
- package/dist/molecules/date-picker.js +7 -7
- package/dist/molecules/dialog.js +3 -3
- package/dist/molecules/file-upload.js +1 -1
- package/dist/molecules/form-checkbox.js +2 -2
- package/dist/molecules/phone-input.js +3 -3
- package/dist/molecules/popover.js +2 -2
- package/dist/molecules/radio-card.js +7 -7
- package/dist/molecules/select.js +2 -2
- package/dist/molecules/slider.js +1 -1
- package/dist/molecules/steps.js +2 -2
- package/dist/molecules/toast.js +1 -1
- package/dist/molecules/tour.js +1 -1
- package/dist/molecules/tree-view.js +1 -1
- package/dist/organisms/data-table.js +1 -1
- package/dist/organisms/gallery.js +2 -2
- package/dist/organisms/table.js +2 -2
- package/dist/src/atoms/button.d.ts +1 -1
- package/dist/src/atoms/button.d.ts.map +1 -1
- package/dist/src/atoms/checkbox.d.ts +1 -1
- package/dist/src/atoms/input.d.ts +1 -1
- package/dist/src/atoms/input.d.ts.map +1 -1
- package/dist/src/atoms/numeric-input.d.ts +1 -1
- package/dist/src/atoms/skeleton.d.ts +1 -1
- package/dist/src/atoms/textarea.d.ts +1 -1
- package/dist/src/atoms/textarea.d.ts.map +1 -1
- package/dist/src/molecules/accordion.d.ts.map +1 -1
- package/dist/src/molecules/cascade-select.d.ts +1 -1
- package/dist/src/molecules/combobox.d.ts +1 -1
- package/dist/src/molecules/date-picker.d.ts +1 -1
- package/dist/src/molecules/file-upload.d.ts +1 -1
- package/dist/src/molecules/phone-input.d.ts +1 -1
- package/dist/src/molecules/popover.d.ts +1 -1
- package/dist/src/molecules/radio-card.d.ts +1 -1
- package/dist/src/molecules/tour.d.ts +1 -1
- package/dist/src/organisms/gallery.d.ts +1 -1
- package/dist/src/organisms/table.d.ts +1 -1
- package/dist/src/templates/accordion.d.ts +1 -1
- package/dist/src/templates/gallery.d.ts +1 -1
- package/dist/src/templates/numeric-input.d.ts +1 -1
- package/dist/src/templates/popover.d.ts +1 -1
- package/dist/src/templates/select.d.ts +1 -1
- package/dist/stories/changelog/changelog.stories.d.ts.map +1 -1
- package/dist/stories/templates/akros-product-card.stories.d.ts +96 -0
- package/dist/stories/templates/akros-product-card.stories.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/tokens/_base.css +14 -7
- package/src/tokens/_reset.css +66 -0
- package/src/tokens/_semantic.css +33 -43
- package/src/tokens/_tokens-base.css +3 -0
- package/src/tokens/components/_popup-surface.css +13 -3
- package/src/tokens/components/atoms/_badge.css +1 -1
- package/src/tokens/components/molecules/_drawer.css +5 -5
- package/src/tokens/components/molecules/_vertical-navigation.css +1 -1
- package/src/tokens/components/organisms/_data-table.css +1 -1
- package/src/tokens/figma/brand-overrides.css +15 -15
- package/src/tokens/figma/variables.css +11 -11
- package/src/tokens/theme.css +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changelog.stories.d.ts","sourceRoot":"","sources":["../../../stories/changelog/changelog.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"changelog.stories.d.ts","sourceRoot":"","sources":["../../../stories/changelog/changelog.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AA0XtD,iBAAS,SAAS,4CAUjB;AAED,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAKhC,CAAA;AAED,eAAe,IAAI,CAAA;AAEnB,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,OAAO,SAAS,CAAM,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { StoryObj } from "@storybook/react";
|
|
2
|
+
import { type ReactNode } from "react";
|
|
3
|
+
import { type AvailabilityStatusProps } from "../../src/molecules/availability-status.js";
|
|
4
|
+
import { type PriceBlockProps } from "../../src/molecules/price-block.js";
|
|
5
|
+
import "./akros-product-card.css";
|
|
6
|
+
type AkrosCardExampleProps = {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
price: PriceBlockProps;
|
|
10
|
+
availability: AvailabilityStatusProps;
|
|
11
|
+
badgeLabel?: string;
|
|
12
|
+
imageAvailable: boolean;
|
|
13
|
+
action: "add" | "pending" | "disabled" | "detail" | "variants";
|
|
14
|
+
actionContent?: ReactNode;
|
|
15
|
+
onAddToCart: (quantity?: string) => void;
|
|
16
|
+
};
|
|
17
|
+
declare function AkrosCardExample({ name, description, price, availability, badgeLabel, imageAvailable, action, actionContent, onAddToCart, }: AkrosCardExampleProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
declare const meta: {
|
|
19
|
+
title: string;
|
|
20
|
+
component: typeof AkrosCardExample;
|
|
21
|
+
tags: string[];
|
|
22
|
+
globals: {
|
|
23
|
+
brand: string;
|
|
24
|
+
mode: string;
|
|
25
|
+
};
|
|
26
|
+
parameters: {
|
|
27
|
+
layout: string;
|
|
28
|
+
docs: {
|
|
29
|
+
description: {
|
|
30
|
+
component: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
argTypes: {
|
|
35
|
+
name: {
|
|
36
|
+
control: "text";
|
|
37
|
+
};
|
|
38
|
+
description: {
|
|
39
|
+
control: "text";
|
|
40
|
+
};
|
|
41
|
+
price: {
|
|
42
|
+
control: "object";
|
|
43
|
+
description: string;
|
|
44
|
+
};
|
|
45
|
+
availability: {
|
|
46
|
+
control: "object";
|
|
47
|
+
description: string;
|
|
48
|
+
};
|
|
49
|
+
badgeLabel: {
|
|
50
|
+
control: "text";
|
|
51
|
+
};
|
|
52
|
+
imageAvailable: {
|
|
53
|
+
control: "boolean";
|
|
54
|
+
};
|
|
55
|
+
action: {
|
|
56
|
+
control: "select";
|
|
57
|
+
options: string[];
|
|
58
|
+
};
|
|
59
|
+
onAddToCart: {
|
|
60
|
+
control: false;
|
|
61
|
+
};
|
|
62
|
+
actionContent: {
|
|
63
|
+
control: false;
|
|
64
|
+
table: {
|
|
65
|
+
disable: true;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
args: {
|
|
70
|
+
name: string;
|
|
71
|
+
description: string;
|
|
72
|
+
price: {
|
|
73
|
+
state: "known";
|
|
74
|
+
amountLabel: string;
|
|
75
|
+
taxLabel: string;
|
|
76
|
+
unitLabel: string;
|
|
77
|
+
};
|
|
78
|
+
availability: {
|
|
79
|
+
status: "available";
|
|
80
|
+
label: string;
|
|
81
|
+
};
|
|
82
|
+
imageAvailable: true;
|
|
83
|
+
action: "add";
|
|
84
|
+
onAddToCart: import("storybook/test").Mock<(...args: any[]) => any>;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
export default meta;
|
|
88
|
+
type Story = StoryObj<AkrosCardExampleProps>;
|
|
89
|
+
export declare const Playground: Story;
|
|
90
|
+
export declare const States: Story;
|
|
91
|
+
export declare const PriceStates: Story;
|
|
92
|
+
export declare const AvailabilityStates: Story;
|
|
93
|
+
export declare const LongContent: Story;
|
|
94
|
+
export declare const ResponsiveCatalog: Story;
|
|
95
|
+
export declare const WithQuantityField: Story;
|
|
96
|
+
//# sourceMappingURL=akros-product-card.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"akros-product-card.stories.d.ts","sourceRoot":"","sources":["../../../stories/templates/akros-product-card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAA;AAQhD,OAAO,EAEN,KAAK,uBAAuB,EAC5B,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAEN,KAAK,eAAe,EACpB,MAAM,iCAAiC,CAAA;AAGxC,OAAO,0BAA0B,CAAA;AAMjC,KAAK,qBAAqB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,eAAe,CAAA;IACtB,YAAY,EAAE,uBAAuB,CAAA;IACrC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAA;IAC9D,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,CAAA;AAED,iBAAS,gBAAgB,CAAC,EACzB,IAAI,EACJ,WAAW,EACX,KAAK,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,MAAM,EACN,aAAa,EACb,WAAW,GACX,EAAE,qBAAqB,2CA6FvB;AAED,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiD+B,CAAA;AAEzC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAA;AAE5C,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAiEpB,CAAA;AAoDD,eAAO,MAAM,WAAW,EAAE,KAiBzB,CAAA;AAsDD,eAAO,MAAM,kBAAkB,EAAE,KAoBhC,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAsBzB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KA6B/B,CAAA;AAqDD,eAAO,MAAM,iBAAiB,EAAE,KAY/B,CAAA"}
|
package/package.json
CHANGED
package/src/tokens/_base.css
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
--radius-lg: 12px;
|
|
6
6
|
--radius-full: 9999px;
|
|
7
7
|
|
|
8
|
-
--color-shadow-1: light-dark(
|
|
9
|
-
--color-shadow-2: light-dark(
|
|
10
|
-
--color-shadow-3: light-dark(
|
|
8
|
+
--color-shadow-1: light-dark(oklch(0% 0 none / 0.16), oklch(0% 0 none));
|
|
9
|
+
--color-shadow-2: light-dark(oklch(0% 0 none / 0.06), oklch(0% 0 none));
|
|
10
|
+
--color-shadow-3: light-dark(oklch(0% 0 none / 0.1), oklch(0% 0 none));
|
|
11
11
|
|
|
12
12
|
--offset-shadow-1: 0px 1px 3px 0px;
|
|
13
13
|
--offset-shadow-2: 0px 5px 6px 0px;
|
|
@@ -17,9 +17,16 @@
|
|
|
17
17
|
var(--offset-shadow-1) var(--color-shadow-1), var(--offset-shadow-2)
|
|
18
18
|
var(--color-shadow-2), var(--offset-shadow-3) var(--color-shadow-3);
|
|
19
19
|
|
|
20
|
+
/* Motion — strong ease-out for UI feedback, ease-in-out for on-screen
|
|
21
|
+
* movement. Never ease-in: it delays the response the user is waiting for. */
|
|
22
|
+
--ease-out: cubic-bezier(0.23, 1, 0.32, 1);
|
|
23
|
+
--ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
|
|
24
|
+
--default-transition-timing-function: var(--ease-out);
|
|
25
|
+
|
|
20
26
|
/* Shadows */
|
|
21
|
-
--shadow-sm: 0 1px 2px
|
|
22
|
-
--shadow-md: 0 4px 6px
|
|
23
|
-
--shadow-lg: 0 10px 15px
|
|
24
|
-
--shadow-xl:
|
|
27
|
+
--shadow-sm: 0 1px 2px oklch(0% 0 none / 0.05);
|
|
28
|
+
--shadow-md: 0 4px 6px oklch(0% 0 none / 0.1);
|
|
29
|
+
--shadow-lg: 0 10px 15px oklch(0% 0 none / 0.1);
|
|
30
|
+
--shadow-xl:
|
|
31
|
+
0 20px 25px oklch(0% 0 none / 0.15), 0 10px 10px oklch(0% 0 none / 0.04);
|
|
25
32
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Element defaults and interaction variants shared by every component.
|
|
3
|
+
* Based on the good-css.com reset, adopted rule by rule.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* Tailwind's built-in hover: only checks (hover: hover). Hybrid and touch
|
|
8
|
+
* devices still report it, so a tapped control keeps its hover colour until
|
|
9
|
+
* the next tap elsewhere. Requiring a fine pointer limits hover to mice and
|
|
10
|
+
* trackpads.
|
|
11
|
+
*/
|
|
12
|
+
@custom-variant hover {
|
|
13
|
+
@media (hover: hover) and (pointer: fine) {
|
|
14
|
+
&:hover {
|
|
15
|
+
@slot;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@layer base {
|
|
21
|
+
:root {
|
|
22
|
+
/* Lets height/width transition to and from `auto` (accordions, disclosures). */
|
|
23
|
+
interpolate-size: allow-keywords;
|
|
24
|
+
/* Reserve the scrollbar track so locking scroll for a dialog does not shift
|
|
25
|
+
* the page. Zag's scroll lock detects this and skips its padding fallback. */
|
|
26
|
+
scrollbar-gutter: stable;
|
|
27
|
+
/* Avoid single-word last lines in body copy. */
|
|
28
|
+
text-wrap: pretty;
|
|
29
|
+
-webkit-text-size-adjust: none;
|
|
30
|
+
text-size-adjust: none;
|
|
31
|
+
/* Components draw their own :active state. */
|
|
32
|
+
-webkit-tap-highlight-color: transparent;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:where(h1, h2, h3, h4, h5, h6) {
|
|
36
|
+
text-wrap: balance;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Removes the double-tap-to-zoom delay on controls. */
|
|
40
|
+
:where(
|
|
41
|
+
a,
|
|
42
|
+
button,
|
|
43
|
+
label,
|
|
44
|
+
select,
|
|
45
|
+
summary,
|
|
46
|
+
[role="button"],
|
|
47
|
+
[role="option"],
|
|
48
|
+
[role="tab"],
|
|
49
|
+
input:is([type="checkbox"], [type="radio"])
|
|
50
|
+
) {
|
|
51
|
+
touch-action: manipulation;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* iOS Safari zooms the page into any focused field whose text is under 16px.
|
|
57
|
+
* The fluid --text-sm step drops below that on phones, so small fields floor
|
|
58
|
+
* at 16px. Unlayered so it wins over the Figma @theme values.
|
|
59
|
+
*/
|
|
60
|
+
:root {
|
|
61
|
+
--text-input-sm: max(16px, var(--text-sm));
|
|
62
|
+
--text-textarea-sm: max(16px, var(--text-sm));
|
|
63
|
+
--text-numeric-input-sm: max(16px, var(--text-sm));
|
|
64
|
+
--text-combobox-sm: max(16px, var(--text-sm));
|
|
65
|
+
--text-phone-input-sm: max(16px, var(--text-sm));
|
|
66
|
+
}
|
package/src/tokens/_semantic.css
CHANGED
|
@@ -5,86 +5,76 @@
|
|
|
5
5
|
* - --alpha(var(--color) / 50%): Adjusts transparency of a color. Tailwind's v4 utility
|
|
6
6
|
* that compiles to color-mix() for better browser support.
|
|
7
7
|
*/
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
* Theme-direction switch: 1 on light surfaces, -1 on dark ones. Every
|
|
11
|
+
* lightness offset below is written once and flips with it, so a dark
|
|
12
|
+
* surface lightens on hover where a light one darkens.
|
|
13
|
+
*/
|
|
8
14
|
:root {
|
|
9
|
-
--
|
|
10
|
-
--state-active: -0.12;
|
|
15
|
+
--theme-sign: 1;
|
|
11
16
|
--state-disabled-chroma: 0.01;
|
|
12
17
|
--state-light-variant: 0.1; /* Always make colors lighter for -light variant */
|
|
13
18
|
--state-light-chroma: 0.6; /* Reduce saturation for softer, pastel colors */
|
|
14
|
-
--state-secondary-text: 0.15;
|
|
15
19
|
--state-border: 15%;
|
|
16
|
-
--state-placeholder: 0.25;
|
|
17
20
|
--max-lightness: 0.97;
|
|
18
21
|
--opacity-disabled: 60%;
|
|
19
22
|
--opacity-placeholder: 60%;
|
|
20
23
|
--opacity-text-secondary: 70%;
|
|
21
24
|
--opacity-disabled-placeholder: 30%;
|
|
22
25
|
--fill-increment: 5%;
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* Custom properties resolve where they are declared, so the derived offsets
|
|
30
|
+
* are re-declared on every element that can change --theme-sign.
|
|
31
|
+
*/
|
|
32
|
+
:where(:root, .light, .always-light, .dark, .always-dark, .reverse) {
|
|
33
|
+
--state-hover: calc(-0.08 * var(--theme-sign));
|
|
34
|
+
--state-active: calc(-0.12 * var(--theme-sign));
|
|
35
|
+
--state-secondary-text: calc(0.15 * var(--theme-sign));
|
|
36
|
+
--state-placeholder: calc(0.25 * var(--theme-sign));
|
|
37
|
+
--surface-increment: calc(0.05 * var(--theme-sign));
|
|
38
|
+
/* Accent text lightness: 0.42 on light (WCAG AAA), 0.85 on dark. */
|
|
39
|
+
--state-fg-lightness: calc(0.635 - 0.215 * var(--theme-sign));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Explicit Light class(es) — re-asserts light inside a nested .dark/.always-dark subtree */
|
|
43
|
+
:is(.light, .always-light) {
|
|
44
|
+
--theme-sign: 1;
|
|
25
45
|
}
|
|
26
46
|
|
|
27
47
|
/* Explicit Dark class(es) */
|
|
28
48
|
:is(.dark, .always-dark) {
|
|
29
|
-
--
|
|
30
|
-
--state-active: 0.12;
|
|
31
|
-
--state-secondary-text: -0.15;
|
|
32
|
-
--state-placeholder: -0.25;
|
|
33
|
-
--surface-increment: -0.05;
|
|
34
|
-
--state-fg-lightness: 0.85;
|
|
49
|
+
--theme-sign: -1;
|
|
35
50
|
}
|
|
36
51
|
|
|
37
52
|
/* System Dark preference (when no explicit class forces light) */
|
|
38
53
|
@media (prefers-color-scheme: dark) {
|
|
39
54
|
:root:not(.light):not(.always-light) {
|
|
40
|
-
--
|
|
41
|
-
--state-active: 0.12;
|
|
42
|
-
--state-secondary-text: -0.15;
|
|
43
|
-
--state-placeholder: -0.25;
|
|
44
|
-
--surface-increment: -0.05;
|
|
45
|
-
--state-fg-lightness: 0.85;
|
|
55
|
+
--theme-sign: -1;
|
|
46
56
|
}
|
|
47
57
|
}
|
|
48
58
|
|
|
49
|
-
/* Reverse
|
|
59
|
+
/* Reverse flips whatever its parent theme is. */
|
|
50
60
|
:is(.light, .always-light) .reverse {
|
|
51
|
-
--
|
|
52
|
-
--state-active: 0.12;
|
|
53
|
-
--state-secondary-text: -0.15;
|
|
54
|
-
--state-placeholder: -0.25;
|
|
55
|
-
--surface-increment: -0.05;
|
|
56
|
-
--state-fg-lightness: 0.85;
|
|
61
|
+
--theme-sign: -1;
|
|
57
62
|
}
|
|
58
63
|
|
|
59
64
|
:is(.dark, .always-dark) .reverse {
|
|
60
|
-
--
|
|
61
|
-
--state-active: -0.12;
|
|
62
|
-
--state-secondary-text: 0.15;
|
|
63
|
-
--state-placeholder: 0.25;
|
|
64
|
-
--surface-increment: 0.05;
|
|
65
|
-
--state-fg-lightness: 0.42;
|
|
65
|
+
--theme-sign: 1;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/* Reverse on System Light/Dark preference (when no explicit theme class is present) */
|
|
69
69
|
@media (prefers-color-scheme: light) {
|
|
70
70
|
.reverse:not(.dark):not(.always-dark):not(.light):not(.always-light) {
|
|
71
|
-
--
|
|
72
|
-
--state-active: 0.12;
|
|
73
|
-
--state-secondary-text: -0.15;
|
|
74
|
-
--state-placeholder: -0.25;
|
|
75
|
-
--surface-increment: -0.05;
|
|
76
|
-
--state-fg-lightness: 0.85;
|
|
71
|
+
--theme-sign: -1;
|
|
77
72
|
}
|
|
78
73
|
}
|
|
79
74
|
|
|
80
75
|
@media (prefers-color-scheme: dark) {
|
|
81
76
|
.reverse:not(.dark):not(.always-dark):not(.light):not(.always-light) {
|
|
82
|
-
--
|
|
83
|
-
--state-active: -0.12;
|
|
84
|
-
--state-secondary-text: 0.15;
|
|
85
|
-
--state-placeholder: 0.25;
|
|
86
|
-
--surface-increment: 0.05;
|
|
87
|
-
--state-fg-lightness: 0.42;
|
|
77
|
+
--theme-sign: 1;
|
|
88
78
|
}
|
|
89
79
|
}
|
|
90
80
|
|
|
@@ -26,6 +26,9 @@
|
|
|
26
26
|
* (e.g. neo) emit tokens here; base is the default @theme above. */
|
|
27
27
|
@import "./figma/brand-overrides.css";
|
|
28
28
|
|
|
29
|
+
/* Element defaults, the hover variant and the mobile input-size floor. */
|
|
30
|
+
@import "./_reset.css";
|
|
31
|
+
|
|
29
32
|
/* Base styles */
|
|
30
33
|
:root {
|
|
31
34
|
color-scheme: light dark;
|
|
@@ -79,8 +79,9 @@
|
|
|
79
79
|
z-index: calc(var(--z-popup) + var(--layer-index, 0));
|
|
80
80
|
|
|
81
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
|
-
|
|
82
|
+
* never the thing the user should see — the highlighted option is.
|
|
83
|
+
* Transparent rather than none, so forced-colors mode still draws it. */
|
|
84
|
+
outline: 2px solid transparent;
|
|
84
85
|
|
|
85
86
|
/* Scale from the trigger, whichever side the panel flipped to. */
|
|
86
87
|
transform-origin: var(--transform-origin);
|
|
@@ -159,5 +160,14 @@
|
|
|
159
160
|
|
|
160
161
|
/* Highlight is the focus affordance; a second ring on top of it reads as
|
|
161
162
|
* two selected rows. */
|
|
162
|
-
outline: none;
|
|
163
|
+
outline-style: none;
|
|
164
|
+
|
|
165
|
+
/* Forced-colors mode drops the highlight background, so the active option
|
|
166
|
+
* would be invisible. Draw it as an outline instead. */
|
|
167
|
+
@media (forced-colors: active) {
|
|
168
|
+
&[data-highlighted] {
|
|
169
|
+
outline: 2px solid Highlight;
|
|
170
|
+
outline-offset: -2px;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
163
173
|
}
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
var(--duration-drawer-backdrop-exit) *
|
|
164
164
|
var(--drawer-swipe-strength, 1)
|
|
165
165
|
)
|
|
166
|
-
ease-in both;
|
|
166
|
+
var(--ease-in-out) both;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
&[data-swiping] {
|
|
@@ -200,25 +200,25 @@
|
|
|
200
200
|
&[data-state="closed"][data-swipe-direction="left"] {
|
|
201
201
|
animation: drawer-exit-left
|
|
202
202
|
calc(var(--duration-drawer-exit) * var(--drawer-swipe-strength, 1))
|
|
203
|
-
ease-in both;
|
|
203
|
+
var(--ease-in-out) both;
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
&[data-state="closed"][data-swipe-direction="right"] {
|
|
207
207
|
animation: drawer-exit-right
|
|
208
208
|
calc(var(--duration-drawer-exit) * var(--drawer-swipe-strength, 1))
|
|
209
|
-
ease-in both;
|
|
209
|
+
var(--ease-in-out) both;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
&[data-state="closed"][data-swipe-direction="up"] {
|
|
213
213
|
animation: drawer-exit-up
|
|
214
214
|
calc(var(--duration-drawer-exit) * var(--drawer-swipe-strength, 1))
|
|
215
|
-
ease-in both;
|
|
215
|
+
var(--ease-in-out) both;
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
&[data-state="closed"][data-swipe-direction="down"] {
|
|
219
219
|
animation: drawer-exit-down
|
|
220
220
|
calc(var(--duration-drawer-exit) * var(--drawer-swipe-strength, 1))
|
|
221
|
-
ease-in both;
|
|
221
|
+
var(--ease-in-out) both;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
@starting-style {
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
flex-shrink: 0;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
@media (hover: hover) {
|
|
129
|
+
@media (hover: hover) and (pointer: fine) {
|
|
130
130
|
&:hover:not(:has(> [data-part="link"][data-current])):has(
|
|
131
131
|
> [data-part="link"]:not([data-disabled]),
|
|
132
132
|
> [data-part="branch-trigger"]:not(:disabled)
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
*
|
|
56
56
|
* `background: inherit` gives the second without the first: every row-level
|
|
57
57
|
* tint in this system is an alpha overlay meant to composite over a surface
|
|
58
|
-
* (`--color-table-row-striped-secondary` is literally `oklch(0 0
|
|
58
|
+
* (`--color-table-row-striped-secondary` is literally `oklch(0 0 none / 0)`), so
|
|
59
59
|
* inheriting it yields a see-through cell.
|
|
60
60
|
*
|
|
61
61
|
* Compositing solves both at once — the same trick `OPAQUE_HEADER_BG` uses for
|
|
@@ -138,9 +138,9 @@
|
|
|
138
138
|
--color-fg-status-warning: var(--color-warning-500);
|
|
139
139
|
--color-fill-active: var(--color-black-15);
|
|
140
140
|
--color-fill-base: var(--color-black-5);
|
|
141
|
-
--color-fill-borderless-active: oklch(0 0
|
|
142
|
-
--color-fill-borderless-base: oklch(0 0
|
|
143
|
-
--color-fill-borderless-hover: oklch(0 0
|
|
141
|
+
--color-fill-borderless-active: oklch(0 0 none / 0);
|
|
142
|
+
--color-fill-borderless-base: oklch(0 0 none / 0);
|
|
143
|
+
--color-fill-borderless-hover: oklch(0 0 none / 0);
|
|
144
144
|
--color-fill-highlight: var(--color-neutral-300);
|
|
145
145
|
--color-fill-hover: var(--color-primary-200);
|
|
146
146
|
--color-fill-overlay: var(--color-neutral-200);
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
--color-secondary-800: oklch(0.381 0.06 182.018);
|
|
168
168
|
--color-secondary-900: oklch(0.327 0.051 180.942);
|
|
169
169
|
--color-success: var(--color-success-500);
|
|
170
|
-
--default-ring-color: oklch(0 0
|
|
170
|
+
--default-ring-color: oklch(0 0 none);
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
[data-theme="akros"] {
|
|
@@ -220,8 +220,8 @@
|
|
|
220
220
|
--color-bg-transparent: var(--color-transparent);
|
|
221
221
|
--color-bg-warning-active: var(--color-warning-700);
|
|
222
222
|
--color-bg-warning-hover: var(--color-warning-600);
|
|
223
|
-
--color-black-15: oklch(0 0
|
|
224
|
-
--color-black-5: oklch(0 0
|
|
223
|
+
--color-black-15: oklch(0 0 none / 0.15);
|
|
224
|
+
--color-black-5: oklch(0 0 none / 0.05);
|
|
225
225
|
--color-blue-500: var(--color-tertiary-600);
|
|
226
226
|
--color-border-danger-focus: var(--color-danger-500);
|
|
227
227
|
--color-border-danger-hover: var(--color-danger-600);
|
|
@@ -275,15 +275,15 @@
|
|
|
275
275
|
--color-gray-950: var(--color-black);
|
|
276
276
|
--color-link: var(--color-black);
|
|
277
277
|
--color-neutral-100: oklch(0.964 0.002 247.84);
|
|
278
|
-
--color-neutral-200: oklch(0.937 0
|
|
279
|
-
--color-neutral-300: oklch(0.848 0
|
|
280
|
-
--color-neutral-400: oklch(0.683 0
|
|
281
|
-
--color-neutral-50: oklch(0.982 0
|
|
282
|
-
--color-neutral-500: oklch(0.51 0
|
|
283
|
-
--color-neutral-600: oklch(0.446 0
|
|
284
|
-
--color-neutral-700: oklch(0.321 0
|
|
285
|
-
--color-neutral-800: oklch(0.252 0
|
|
286
|
-
--color-neutral-900: oklch(0.178 0
|
|
278
|
+
--color-neutral-200: oklch(0.937 0 none);
|
|
279
|
+
--color-neutral-300: oklch(0.848 0 none);
|
|
280
|
+
--color-neutral-400: oklch(0.683 0 none);
|
|
281
|
+
--color-neutral-50: oklch(0.982 0 none);
|
|
282
|
+
--color-neutral-500: oklch(0.51 0 none);
|
|
283
|
+
--color-neutral-600: oklch(0.446 0 none);
|
|
284
|
+
--color-neutral-700: oklch(0.321 0 none);
|
|
285
|
+
--color-neutral-800: oklch(0.252 0 none);
|
|
286
|
+
--color-neutral-900: oklch(0.178 0 none);
|
|
287
287
|
--color-neutral-950: var(--color-black);
|
|
288
288
|
--color-primary: var(--color-primary-500);
|
|
289
289
|
--color-primary-100: oklch(0.957 0.055 90.321);
|