pi-kiosk-shared 2.2.44 → 2.2.45
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/ui/Button/Button.d.ts +14 -0
- package/dist/ui/Button/Button.d.ts.map +1 -1
- package/dist/ui/Button/Button.js +56 -17
- package/dist/ui/Button/Button.js.map +1 -1
- package/dist/ui/Checkbox/Checkbox.d.ts +5 -1
- package/dist/ui/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/ui/Checkbox/Checkbox.js +5 -1
- package/dist/ui/Checkbox/Checkbox.js.map +1 -1
- package/dist/ui/Radio/Radio.d.ts +5 -1
- package/dist/ui/Radio/Radio.d.ts.map +1 -1
- package/dist/ui/Radio/Radio.js +5 -1
- package/dist/ui/Radio/Radio.js.map +1 -1
- package/dist/ui/Switch/Switch.d.ts +5 -1
- package/dist/ui/Switch/Switch.d.ts.map +1 -1
- package/dist/ui/Switch/Switch.js +5 -1
- package/dist/ui/Switch/Switch.js.map +1 -1
- package/package.json +1 -1
- package/src/tokens/brand-bridge.css +11 -10
- package/src/tokens/tokens.sync.json +105 -65
|
@@ -7,12 +7,26 @@ export type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
|
7
7
|
readonly intent?: SharedIntent;
|
|
8
8
|
readonly size?: SharedSize;
|
|
9
9
|
readonly block?: boolean;
|
|
10
|
+
/** Shows spinner; preserves width via invisible label (no collapse). */
|
|
11
|
+
readonly loading?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Square icon button. Requires `aria-label` for accessible name.
|
|
14
|
+
* No shared Tooltip primitive — uses native `title` (falls back to aria-label).
|
|
15
|
+
*/
|
|
16
|
+
readonly iconOnly?: boolean;
|
|
10
17
|
};
|
|
11
18
|
export declare const Button: import("react").ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
12
19
|
readonly surface?: Surface;
|
|
13
20
|
readonly intent?: SharedIntent;
|
|
14
21
|
readonly size?: SharedSize;
|
|
15
22
|
readonly block?: boolean;
|
|
23
|
+
/** Shows spinner; preserves width via invisible label (no collapse). */
|
|
24
|
+
readonly loading?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Square icon button. Requires `aria-label` for accessible name.
|
|
27
|
+
* No shared Tooltip primitive — uses native `title` (falls back to aria-label).
|
|
28
|
+
*/
|
|
29
|
+
readonly iconOnly?: boolean;
|
|
16
30
|
} & import("react").RefAttributes<HTMLButtonElement>>;
|
|
17
31
|
export {};
|
|
18
32
|
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAc,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAc,MAAM,OAAO,CAAC;AAqM9D,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAOzD,KAAK,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC7E,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA2D5C,MAAM,MAAM,WAAW,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,MAAM;uBAbE,OAAO;sBACR,YAAY;oBACd,UAAU;qBACT,OAAO;IACxB,wEAAwE;uBACrD,OAAO;IAC1B;;;OAGG;wBACiB,OAAO;qDA2D5B,CAAC"}
|
package/dist/ui/Button/Button.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { tv } from '../tvShim.js';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
4
|
const adminButton = tv({
|
|
5
5
|
base: [
|
|
6
|
-
'inline-flex items-center justify-center gap-2',
|
|
6
|
+
'relative inline-flex items-center justify-center gap-2',
|
|
7
7
|
'rounded-md font-semibold font-[inherit] leading-snug',
|
|
8
|
-
'transition-[background,border-color,color,box-shadow,transform,filter]
|
|
8
|
+
'transition-[background,border-color,color,box-shadow,transform,filter]',
|
|
9
|
+
'duration-[var(--motion-duration-button,100ms)]',
|
|
10
|
+
'ease-[var(--motion-ease-standard,cubic-bezier(0.4,0,0.2,1))]',
|
|
9
11
|
'focus-visible:outline-2 focus-visible:outline-offset-2',
|
|
10
12
|
'focus-visible:outline-[var(--color-an-primary)]',
|
|
11
13
|
'disabled:cursor-not-allowed disabled:opacity-55',
|
|
@@ -38,25 +40,31 @@ const adminButton = tv({
|
|
|
38
40
|
success: '',
|
|
39
41
|
},
|
|
40
42
|
size: {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
/* Spec D8: 32 / 40 / 48 */
|
|
44
|
+
sm: 'h-8 min-h-8 px-3 text-xs',
|
|
45
|
+
md: 'h-10 min-h-10 px-4 text-sm',
|
|
46
|
+
lg: 'h-12 min-h-12 px-5 text-base',
|
|
47
|
+
xl: 'h-12 min-h-12 px-5 text-base',
|
|
45
48
|
},
|
|
46
49
|
block: {
|
|
47
50
|
true: 'w-full',
|
|
48
51
|
false: '',
|
|
49
52
|
},
|
|
53
|
+
iconOnly: {
|
|
54
|
+
true: 'aspect-square px-0 min-h-[44px] min-w-[44px]',
|
|
55
|
+
false: '',
|
|
56
|
+
},
|
|
50
57
|
},
|
|
51
58
|
defaultVariants: {
|
|
52
59
|
intent: 'primary',
|
|
53
60
|
size: 'md',
|
|
54
61
|
block: false,
|
|
62
|
+
iconOnly: false,
|
|
55
63
|
},
|
|
56
64
|
});
|
|
57
65
|
const kioskButton = tv({
|
|
58
66
|
base: [
|
|
59
|
-
'inline-flex items-center justify-center gap-2',
|
|
67
|
+
'relative inline-flex items-center justify-center gap-2',
|
|
60
68
|
'rounded-lg font-semibold transition-colors duration-150',
|
|
61
69
|
'focus-visible:outline-2 focus-visible:outline-offset-2',
|
|
62
70
|
'focus-visible:outline-[var(--color-focus-ring)]',
|
|
@@ -81,16 +89,21 @@ const kioskButton = tv({
|
|
|
81
89
|
true: 'w-full',
|
|
82
90
|
false: '',
|
|
83
91
|
},
|
|
92
|
+
iconOnly: {
|
|
93
|
+
true: 'aspect-square px-0 min-h-[44px] min-w-[44px]',
|
|
94
|
+
false: '',
|
|
95
|
+
},
|
|
84
96
|
},
|
|
85
97
|
defaultVariants: {
|
|
86
98
|
intent: 'primary',
|
|
87
99
|
size: 'lg',
|
|
88
100
|
block: false,
|
|
101
|
+
iconOnly: false,
|
|
89
102
|
},
|
|
90
103
|
});
|
|
91
104
|
const pickupButton = tv({
|
|
92
105
|
base: [
|
|
93
|
-
'inline-flex items-center justify-center gap-2',
|
|
106
|
+
'relative inline-flex items-center justify-center gap-2',
|
|
94
107
|
'rounded-[var(--radius-lg)] font-medium transition-opacity duration-150',
|
|
95
108
|
'focus-visible:outline-2 focus-visible:outline-offset-2',
|
|
96
109
|
'focus-visible:outline-[var(--color-focus-ring)]',
|
|
@@ -115,16 +128,21 @@ const pickupButton = tv({
|
|
|
115
128
|
true: 'w-full',
|
|
116
129
|
false: '',
|
|
117
130
|
},
|
|
131
|
+
iconOnly: {
|
|
132
|
+
true: 'aspect-square px-0 min-h-[44px] min-w-[44px]',
|
|
133
|
+
false: '',
|
|
134
|
+
},
|
|
118
135
|
},
|
|
119
136
|
defaultVariants: {
|
|
120
137
|
intent: 'primary',
|
|
121
138
|
size: 'md',
|
|
122
139
|
block: false,
|
|
140
|
+
iconOnly: false,
|
|
123
141
|
},
|
|
124
142
|
});
|
|
125
143
|
const customerButton = tv({
|
|
126
144
|
base: [
|
|
127
|
-
'inline-flex items-center justify-center gap-2',
|
|
145
|
+
'relative inline-flex items-center justify-center gap-2',
|
|
128
146
|
'rounded-md font-medium transition-colors duration-150',
|
|
129
147
|
'focus-visible:outline-2 focus-visible:outline-offset-2',
|
|
130
148
|
'focus-visible:outline-[var(--color-focus-ring)]',
|
|
@@ -139,35 +157,48 @@ const customerButton = tv({
|
|
|
139
157
|
success: '',
|
|
140
158
|
},
|
|
141
159
|
size: {
|
|
142
|
-
sm: 'h-
|
|
143
|
-
md: 'h-
|
|
144
|
-
lg: 'h-12 px-5 text-lg',
|
|
145
|
-
xl: '',
|
|
160
|
+
sm: 'h-8 min-h-8 px-3 text-sm',
|
|
161
|
+
md: 'h-10 min-h-10 px-4 text-base',
|
|
162
|
+
lg: 'h-12 min-h-12 px-5 text-lg',
|
|
163
|
+
xl: 'h-12 min-h-12 px-5 text-lg',
|
|
146
164
|
},
|
|
147
165
|
block: {
|
|
148
166
|
true: 'w-full',
|
|
149
167
|
false: '',
|
|
150
168
|
},
|
|
169
|
+
iconOnly: {
|
|
170
|
+
true: 'aspect-square px-0 min-h-[44px] min-w-[44px]',
|
|
171
|
+
false: '',
|
|
172
|
+
},
|
|
151
173
|
},
|
|
152
174
|
defaultVariants: {
|
|
153
175
|
intent: 'primary',
|
|
154
176
|
size: 'md',
|
|
155
177
|
block: false,
|
|
178
|
+
iconOnly: false,
|
|
156
179
|
},
|
|
157
180
|
});
|
|
158
|
-
function buttonClassName(surface, intent, size, block, className) {
|
|
181
|
+
function buttonClassName(surface, intent, size, block, iconOnly, className) {
|
|
159
182
|
const resolvedIntent = intent ?? 'primary';
|
|
160
183
|
const resolvedBlock = block ?? false;
|
|
184
|
+
const resolvedIconOnly = iconOnly ?? false;
|
|
161
185
|
if (surface === 'admin') {
|
|
162
186
|
const adminIntent = resolvedIntent === 'success' ? 'primary' : resolvedIntent;
|
|
163
187
|
const adminSize = size === 'xl' ? 'lg' : size;
|
|
164
|
-
return adminButton({
|
|
188
|
+
return adminButton({
|
|
189
|
+
intent: adminIntent,
|
|
190
|
+
size: adminSize,
|
|
191
|
+
block: resolvedBlock,
|
|
192
|
+
iconOnly: resolvedIconOnly,
|
|
193
|
+
className,
|
|
194
|
+
});
|
|
165
195
|
}
|
|
166
196
|
if (surface === 'kiosk') {
|
|
167
197
|
return kioskButton({
|
|
168
198
|
intent: resolvedIntent,
|
|
169
199
|
size: size,
|
|
170
200
|
block: resolvedBlock,
|
|
201
|
+
iconOnly: resolvedIconOnly,
|
|
171
202
|
className,
|
|
172
203
|
});
|
|
173
204
|
}
|
|
@@ -176,6 +207,7 @@ function buttonClassName(surface, intent, size, block, className) {
|
|
|
176
207
|
intent: resolvedIntent,
|
|
177
208
|
size: size,
|
|
178
209
|
block: resolvedBlock,
|
|
210
|
+
iconOnly: resolvedIconOnly,
|
|
179
211
|
className,
|
|
180
212
|
});
|
|
181
213
|
}
|
|
@@ -185,9 +217,16 @@ function buttonClassName(surface, intent, size, block, className) {
|
|
|
185
217
|
intent: customerIntent,
|
|
186
218
|
size: customerSize,
|
|
187
219
|
block: resolvedBlock,
|
|
220
|
+
iconOnly: resolvedIconOnly,
|
|
188
221
|
className,
|
|
189
222
|
});
|
|
190
223
|
}
|
|
191
|
-
export const Button = forwardRef(({ className, surface = 'customer', intent, size, block,
|
|
224
|
+
export const Button = forwardRef(({ className, surface = 'customer', intent, size, block, loading = false, iconOnly = false, children, disabled, type = 'button', 'aria-label': ariaLabel, title, ...rest }, ref) => {
|
|
225
|
+
const resolvedAriaLabel = ariaLabel ??
|
|
226
|
+
(iconOnly ? title : undefined) ??
|
|
227
|
+
(loading && typeof children === 'string' ? children : undefined);
|
|
228
|
+
const tooltipTitle = title ?? (iconOnly ? resolvedAriaLabel : undefined);
|
|
229
|
+
return (_jsx("button", { ...rest, ref: ref, type: type, className: buttonClassName(surface, intent, size, block, iconOnly, className), disabled: disabled || loading, "aria-busy": loading || undefined, "aria-label": resolvedAriaLabel, title: tooltipTitle, "data-icon-only": iconOnly ? 'true' : undefined, "data-loading": loading ? 'true' : undefined, children: loading ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "invisible inline-flex items-center gap-2", "aria-hidden": "true", children: children }), _jsx("span", { className: "absolute inset-0 inline-flex items-center justify-center", "aria-hidden": "true", children: _jsx("span", { className: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) })] })) : (children) }));
|
|
230
|
+
});
|
|
192
231
|
Button.displayName = 'Button';
|
|
193
232
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/ui/Button/Button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAqB,MAAM,cAAc,CAAC;AACrD,OAAO,EAA6B,UAAU,EAAE,MAAM,OAAO,CAAC;AAE9D,MAAM,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,EAAE;QACJ
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/ui/Button/Button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,11 @@ import { type InputHTMLAttributes } from 'react';
|
|
|
2
2
|
export type CheckboxProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & {
|
|
3
3
|
readonly label?: string;
|
|
4
4
|
};
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* CMP-0006 Checkbox — native control.
|
|
7
|
+
* D27: Checkbox = independent multi-selection. Use Switch for binary on/off;
|
|
8
|
+
* Radio for mutually exclusive choice among 2–5 options.
|
|
9
|
+
*/
|
|
6
10
|
export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type"> & {
|
|
7
11
|
readonly label?: string;
|
|
8
12
|
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/ui/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/ui/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,QAAQ;qBARF,MAAM;oDAsCxB,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* CMP-0006 Checkbox — native control.
|
|
5
|
+
* D27: Checkbox = independent multi-selection. Use Switch for binary on/off;
|
|
6
|
+
* Radio for mutually exclusive choice among 2–5 options.
|
|
7
|
+
*/
|
|
4
8
|
export const Checkbox = forwardRef(({ className, label, id, ...rest }, ref) => {
|
|
5
9
|
const input = (_jsx("input", { ref: ref, id: id, type: "checkbox", className: [
|
|
6
10
|
'h-4 w-4 rounded border-[var(--color-border,var(--color-an-border))]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../src/ui/Checkbox/Checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA4B,MAAM,OAAO,CAAC;AAM7D
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../src/ui/Checkbox/Checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA4B,MAAM,OAAO,CAAC;AAM7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAChC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IACzC,MAAM,KAAK,GAAG,CACZ,gBACE,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,UAAU,EACf,SAAS,EAAE;YACT,qEAAqE;YACrE,8DAA8D;YAC9D,SAAS;SACV;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,KACR,IAAI,GACR,CACH,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,iBACE,SAAS,EAAC,4FAA4F,EACtG,OAAO,EAAE,EAAE,aAEV,KAAK,EACN,yBAAO,KAAK,GAAQ,IACd,CACT,CAAC;AACJ,CAAC,CACF,CAAC;AACF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC"}
|
package/dist/ui/Radio/Radio.d.ts
CHANGED
|
@@ -2,7 +2,11 @@ import { type InputHTMLAttributes } from 'react';
|
|
|
2
2
|
export type RadioProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & {
|
|
3
3
|
readonly label?: string;
|
|
4
4
|
};
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* CMP-0007 Radio — native control.
|
|
7
|
+
* D27: Radio = mutually exclusive choice among a small group (2–5 options).
|
|
8
|
+
* Use Switch for binary on/off; Checkbox for independent multi-selection.
|
|
9
|
+
*/
|
|
6
10
|
export declare const Radio: import("react").ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type"> & {
|
|
7
11
|
readonly label?: string;
|
|
8
12
|
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/ui/Radio/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/ui/Radio/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK;qBARC,MAAM;oDAsCxB,CAAC"}
|
package/dist/ui/Radio/Radio.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* CMP-0007 Radio — native control.
|
|
5
|
+
* D27: Radio = mutually exclusive choice among a small group (2–5 options).
|
|
6
|
+
* Use Switch for binary on/off; Checkbox for independent multi-selection.
|
|
7
|
+
*/
|
|
4
8
|
export const Radio = forwardRef(({ className, label, id, ...rest }, ref) => {
|
|
5
9
|
const input = (_jsx("input", { ref: ref, id: id, type: "radio", className: [
|
|
6
10
|
'h-4 w-4 border-[var(--color-border,var(--color-an-border))]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../../src/ui/Radio/Radio.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA4B,MAAM,OAAO,CAAC;AAM7D
|
|
1
|
+
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../../src/ui/Radio/Radio.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA4B,MAAM,OAAO,CAAC;AAM7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IACzC,MAAM,KAAK,GAAG,CACZ,gBACE,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE;YACT,6DAA6D;YAC7D,8DAA8D;YAC9D,SAAS;SACV;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,KACR,IAAI,GACR,CACH,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,iBACE,SAAS,EAAC,4FAA4F,EACtG,OAAO,EAAE,EAAE,aAEV,KAAK,EACN,yBAAO,KAAK,GAAQ,IACd,CACT,CAAC;AACJ,CAAC,CACF,CAAC;AACF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC"}
|
|
@@ -3,7 +3,11 @@ export type SwitchProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChang
|
|
|
3
3
|
readonly checked: boolean;
|
|
4
4
|
readonly onCheckedChange?: (checked: boolean) => void;
|
|
5
5
|
};
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* CMP-0008 Switch — button role=switch.
|
|
8
|
+
* D27: Switch = binary on/off toggle only. Use Checkbox for independent
|
|
9
|
+
* multi-selection; Radio for mutually exclusive choice among 2–5 options.
|
|
10
|
+
*/
|
|
7
11
|
export declare const Switch: import("react").ForwardRefExoticComponent<Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onChange"> & {
|
|
8
12
|
readonly checked: boolean;
|
|
9
13
|
readonly onCheckedChange?: (checked: boolean) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAkC9D,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAkC9D,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM;sBATC,OAAO;+BACE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;qDAuBtD,CAAC"}
|
package/dist/ui/Switch/Switch.js
CHANGED
|
@@ -30,7 +30,11 @@ const switchKnob = tv({
|
|
|
30
30
|
},
|
|
31
31
|
defaultVariants: { checked: false },
|
|
32
32
|
});
|
|
33
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* CMP-0008 Switch — button role=switch.
|
|
35
|
+
* D27: Switch = binary on/off toggle only. Use Checkbox for independent
|
|
36
|
+
* multi-selection; Radio for mutually exclusive choice among 2–5 options.
|
|
37
|
+
*/
|
|
34
38
|
export const Switch = forwardRef(({ checked, onCheckedChange, className, disabled, ...rest }, ref) => (_jsx("button", { ref: ref, type: "button", role: "switch", "aria-checked": checked, disabled: disabled, className: switchTrack({ checked, className }), onClick: () => onCheckedChange?.(!checked), ...rest, children: _jsx("span", { className: switchKnob({ checked }), "aria-hidden": "true" }) })));
|
|
35
39
|
Switch.displayName = 'Switch';
|
|
36
40
|
//# sourceMappingURL=Switch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA6B,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,EAAE;QACJ,mFAAmF;QACnF,oGAAoG;QACpG,8EAA8E;QAC9E,yEAAyE;QACzE,iDAAiD;KAClD,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,0DAA0D;YAChE,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,EAAE;QACJ,iFAAiF;QACjF,0EAA0E;KAC3E,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAOH
|
|
1
|
+
{"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA6B,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,EAAE;QACJ,mFAAmF;QACnF,oGAAoG;QACpG,8EAA8E;QAC9E,yEAAyE;QACzE,iDAAiD;KAClD,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,0DAA0D;YAChE,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,EAAE;QACJ,iFAAiF;QACjF,0EAA0E;KAC3E,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAC9B,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACnE,iBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,kBACC,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,KACtC,IAAI,YAER,eAAM,SAAS,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAc,MAAM,GAAG,GACxD,CACV,CACF,CAAC;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Brand bridge — Canva Up Above SSOT → theme.css / admin-theme.css consumers
|
|
3
3
|
*
|
|
4
|
-
* DECISION-1 Option C: --brand-consumer-accent (Canva) + --brand-admin-accent (PO
|
|
4
|
+
* DECISION-1 Option C: --brand-consumer-accent (Canva teal) + --brand-admin-accent (PO violet)
|
|
5
5
|
* Import before theme.css or admin-theme.css once MFE-v3-S-01 wires consumers.
|
|
6
6
|
*
|
|
7
7
|
* @see rpappp/up-backend/docs/FRONTEND/brand-palette.md
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
--font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
|
|
15
15
|
'Courier New', monospace;
|
|
16
16
|
|
|
17
|
-
/* ── Foundation + neutrals (ADR-FE-BRAND-002 / COLOR registry) ── */
|
|
17
|
+
/* ── Foundation + neutrals (ADR-FE-BRAND-002 / COLOR registry) — consumer Canva ── */
|
|
18
18
|
--color-brand-primary: #1f6f78;
|
|
19
19
|
--color-brand-deep: #174b52;
|
|
20
20
|
--color-brand-accent: #58a9b5;
|
|
@@ -30,16 +30,17 @@
|
|
|
30
30
|
--brand-consumer-accent: var(--color-brand-primary);
|
|
31
31
|
--brand-consumer-accent-soft: var(--color-brand-soft);
|
|
32
32
|
--brand-consumer-accent-foreground: var(--color-surface-default);
|
|
33
|
-
|
|
34
|
-
--brand-admin-
|
|
33
|
+
/* Admin PO mockup violet — do not collapse onto consumer teal */
|
|
34
|
+
--brand-admin-accent: #7c3aed;
|
|
35
|
+
--brand-admin-primary: #6366f1;
|
|
35
36
|
|
|
36
|
-
/* ── Admin rail palette (MOCKUP_VISUAL_SPEC_CACHE
|
|
37
|
-
--brand-rail-sidebar-bg:
|
|
38
|
-
--brand-rail-sidebar-bg-deep:
|
|
39
|
-
--brand-rail-sidebar-text:
|
|
40
|
-
--brand-rail-sidebar-muted:
|
|
37
|
+
/* ── Admin rail palette (MOCKUP_VISUAL_SPEC_CACHE / brand-palette.md) ── */
|
|
38
|
+
--brand-rail-sidebar-bg: #1e1b4b;
|
|
39
|
+
--brand-rail-sidebar-bg-deep: var(--color-neutral-950);
|
|
40
|
+
--brand-rail-sidebar-text: #e0e7ff;
|
|
41
|
+
--brand-rail-sidebar-muted: #a5b4fc;
|
|
41
42
|
--brand-rail-sidebar-active: var(--brand-admin-accent);
|
|
42
|
-
--brand-rail-sidebar-hover:
|
|
43
|
+
--brand-rail-sidebar-hover: rgba(124, 58, 237, 0.2);
|
|
43
44
|
--brand-rail-page-bg: var(--color-neutral-100);
|
|
44
45
|
--brand-rail-card-border: var(--color-neutral-200);
|
|
45
46
|
--brand-rail-kpi-up: #05805a;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-29T18:47:02.406Z",
|
|
4
4
|
"source": "shared/scripts/gate-tokens-sync.mjs",
|
|
5
5
|
"inputs": [
|
|
6
6
|
"brand-bridge.css",
|
|
@@ -13,21 +13,29 @@
|
|
|
13
13
|
"properties": {
|
|
14
14
|
"--font-family-primary": "ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",
|
|
15
15
|
"--font-family-mono": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
|
|
16
|
-
"--brand-
|
|
17
|
-
"--brand-
|
|
18
|
-
"--brand-
|
|
19
|
-
"--brand-
|
|
20
|
-
"--brand-
|
|
16
|
+
"--color-brand-primary": "#1f6f78",
|
|
17
|
+
"--color-brand-deep": "#174b52",
|
|
18
|
+
"--color-brand-accent": "#58a9b5",
|
|
19
|
+
"--color-brand-soft": "#eef6f7",
|
|
20
|
+
"--color-brand-text": "#2a3136",
|
|
21
|
+
"--color-brand-limestone": "#d8d2c8",
|
|
22
|
+
"--color-surface-default": "#ffffff",
|
|
23
|
+
"--color-neutral-950": "#0f172a",
|
|
24
|
+
"--color-neutral-100": "#f1f5f9",
|
|
25
|
+
"--color-neutral-200": "#e2e8f0",
|
|
26
|
+
"--brand-consumer-accent": "var(--color-brand-primary)",
|
|
27
|
+
"--brand-consumer-accent-soft": "var(--color-brand-soft)",
|
|
28
|
+
"--brand-consumer-accent-foreground": "var(--color-surface-default)",
|
|
21
29
|
"--brand-admin-accent": "#7c3aed",
|
|
22
|
-
"--brand-admin-primary": "#
|
|
30
|
+
"--brand-admin-primary": "#6366f1",
|
|
23
31
|
"--brand-rail-sidebar-bg": "#1e1b4b",
|
|
24
|
-
"--brand-rail-sidebar-bg-deep": "
|
|
32
|
+
"--brand-rail-sidebar-bg-deep": "var(--color-neutral-950)",
|
|
25
33
|
"--brand-rail-sidebar-text": "#e0e7ff",
|
|
26
34
|
"--brand-rail-sidebar-muted": "#a5b4fc",
|
|
27
35
|
"--brand-rail-sidebar-active": "var(--brand-admin-accent)",
|
|
28
36
|
"--brand-rail-sidebar-hover": "rgba(124, 58, 237, 0.2)",
|
|
29
|
-
"--brand-rail-page-bg": "
|
|
30
|
-
"--brand-rail-card-border": "
|
|
37
|
+
"--brand-rail-page-bg": "var(--color-neutral-100)",
|
|
38
|
+
"--brand-rail-card-border": "var(--color-neutral-200)",
|
|
31
39
|
"--brand-rail-kpi-up": "#05805a",
|
|
32
40
|
"--brand-rail-kpi-down": "#da2325",
|
|
33
41
|
"--color-accent": "var(--brand-consumer-accent)",
|
|
@@ -43,19 +51,19 @@
|
|
|
43
51
|
"--color-rail-kpi-down": "var(--brand-rail-kpi-down)",
|
|
44
52
|
"--color-an-chart-1": "var(--brand-admin-primary)"
|
|
45
53
|
},
|
|
46
|
-
"count":
|
|
54
|
+
"count": 39
|
|
47
55
|
},
|
|
48
56
|
{
|
|
49
57
|
"file": "theme.css",
|
|
50
58
|
"properties": {
|
|
51
|
-
"--color-surface": "
|
|
59
|
+
"--color-surface": "var(--color-surface-default)",
|
|
52
60
|
"--color-surface-muted": "#f8fafc",
|
|
53
|
-
"--color-surface-elevated": "
|
|
54
|
-
"--color-surface-hover": "
|
|
55
|
-
"--color-on-surface": "
|
|
61
|
+
"--color-surface-elevated": "var(--color-surface-default)",
|
|
62
|
+
"--color-surface-hover": "var(--color-neutral-100)",
|
|
63
|
+
"--color-on-surface": "var(--color-neutral-950)",
|
|
56
64
|
"--color-on-surface-muted": "#475569",
|
|
57
65
|
"--color-on-surface-disabled": "#94a3b8",
|
|
58
|
-
"--color-primary": "
|
|
66
|
+
"--color-primary": "var(--color-neutral-950)",
|
|
59
67
|
"--color-primary-foreground": "#f8fafc",
|
|
60
68
|
"--color-accent": "var(--brand-consumer-accent)",
|
|
61
69
|
"--color-accent-foreground": "var(--brand-consumer-accent-foreground)",
|
|
@@ -66,11 +74,11 @@
|
|
|
66
74
|
"--color-danger-foreground": "#fef2f2",
|
|
67
75
|
"--color-warning": "#d97706",
|
|
68
76
|
"--color-warning-foreground": "#fffbeb",
|
|
69
|
-
"--color-border": "
|
|
77
|
+
"--color-border": "var(--color-neutral-200)",
|
|
70
78
|
"--color-border-strong": "#cbd5e1",
|
|
71
79
|
"--color-focus-ring": "var(--brand-consumer-accent)",
|
|
72
80
|
"--color-qr-render-dark": "#000000",
|
|
73
|
-
"--color-qr-render-light": "
|
|
81
|
+
"--color-qr-render-light": "var(--color-surface-default)",
|
|
74
82
|
"--color-disabled-opacity": "0.55",
|
|
75
83
|
"--radius-sm": "0.375rem",
|
|
76
84
|
"--radius-md": "0.5rem",
|
|
@@ -87,16 +95,16 @@
|
|
|
87
95
|
{
|
|
88
96
|
"file": "admin-theme.css",
|
|
89
97
|
"properties": {
|
|
90
|
-
"--color-an-bg": "
|
|
91
|
-
"--color-an-bg-elevated": "
|
|
92
|
-
"--color-an-surface": "
|
|
93
|
-
"--color-an-surface-muted": "
|
|
94
|
-
"--color-an-surface-hover": "
|
|
95
|
-
"--color-an-surface-disabled": "
|
|
96
|
-
"--color-an-text": "
|
|
98
|
+
"--color-an-bg": "var(--color-neutral-100)",
|
|
99
|
+
"--color-an-bg-elevated": "var(--color-surface-default)",
|
|
100
|
+
"--color-an-surface": "var(--color-surface-default)",
|
|
101
|
+
"--color-an-surface-muted": "var(--color-neutral-100)",
|
|
102
|
+
"--color-an-surface-hover": "var(--color-neutral-100)",
|
|
103
|
+
"--color-an-surface-disabled": "var(--color-neutral-100)",
|
|
104
|
+
"--color-an-text": "var(--color-neutral-950)",
|
|
97
105
|
"--color-an-text-muted": "#475569",
|
|
98
106
|
"--color-an-text-disabled": "#94a3b8",
|
|
99
|
-
"--color-an-border": "
|
|
107
|
+
"--color-an-border": "var(--color-neutral-200)",
|
|
100
108
|
"--color-an-border-hover": "#cbd5e1",
|
|
101
109
|
"--color-an-primary": "var(--color-primary)",
|
|
102
110
|
"--color-an-primary-hover": "#4f46e5",
|
|
@@ -113,24 +121,24 @@
|
|
|
113
121
|
"--color-an-chart-4": "#ef4444",
|
|
114
122
|
"--color-an-chart-5": "#8b5cf6",
|
|
115
123
|
"--color-an-chart-6": "#06b6d4",
|
|
116
|
-
"--color-shell-bg": "
|
|
117
|
-
"--color-shell-surface": "
|
|
118
|
-
"--color-shell-border": "
|
|
119
|
-
"--color-shell-text": "
|
|
124
|
+
"--color-shell-bg": "var(--color-neutral-100)",
|
|
125
|
+
"--color-shell-surface": "var(--color-surface-default)",
|
|
126
|
+
"--color-shell-border": "var(--color-neutral-200)",
|
|
127
|
+
"--color-shell-text": "var(--color-neutral-950)",
|
|
120
128
|
"--color-rail-sidebar-bg": "var(--brand-rail-sidebar-bg)",
|
|
121
129
|
"--color-rail-sidebar-text": "var(--brand-rail-sidebar-text)",
|
|
122
130
|
"--color-rail-sidebar-muted": "var(--brand-rail-sidebar-muted)",
|
|
123
131
|
"--color-rail-sidebar-active": "var(--brand-rail-sidebar-active)",
|
|
124
132
|
"--color-rail-sidebar-hover": "var(--brand-rail-sidebar-hover)",
|
|
125
|
-
"--color-rail-page-bg": "
|
|
126
|
-
"--color-rail-card-border": "
|
|
133
|
+
"--color-rail-page-bg": "var(--color-neutral-100)",
|
|
134
|
+
"--color-rail-card-border": "var(--color-neutral-200)",
|
|
127
135
|
"--color-rail-kpi-up": "var(--brand-rail-kpi-up)",
|
|
128
136
|
"--color-rail-kpi-down": "var(--brand-rail-kpi-down)"
|
|
129
137
|
},
|
|
130
138
|
"count": 39
|
|
131
139
|
}
|
|
132
140
|
],
|
|
133
|
-
"mergedPropertyCount":
|
|
141
|
+
"mergedPropertyCount": 99,
|
|
134
142
|
"properties": {
|
|
135
143
|
"--font-family-primary": {
|
|
136
144
|
"file": "brand-bridge.css",
|
|
@@ -140,25 +148,57 @@
|
|
|
140
148
|
"file": "brand-bridge.css",
|
|
141
149
|
"value": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace"
|
|
142
150
|
},
|
|
143
|
-
"--brand-
|
|
151
|
+
"--color-brand-primary": {
|
|
152
|
+
"file": "brand-bridge.css",
|
|
153
|
+
"value": "#1f6f78"
|
|
154
|
+
},
|
|
155
|
+
"--color-brand-deep": {
|
|
156
|
+
"file": "brand-bridge.css",
|
|
157
|
+
"value": "#174b52"
|
|
158
|
+
},
|
|
159
|
+
"--color-brand-accent": {
|
|
160
|
+
"file": "brand-bridge.css",
|
|
161
|
+
"value": "#58a9b5"
|
|
162
|
+
},
|
|
163
|
+
"--color-brand-soft": {
|
|
164
|
+
"file": "brand-bridge.css",
|
|
165
|
+
"value": "#eef6f7"
|
|
166
|
+
},
|
|
167
|
+
"--color-brand-text": {
|
|
144
168
|
"file": "brand-bridge.css",
|
|
145
|
-
"value": "#
|
|
169
|
+
"value": "#2a3136"
|
|
146
170
|
},
|
|
147
|
-
"--brand-
|
|
171
|
+
"--color-brand-limestone": {
|
|
148
172
|
"file": "brand-bridge.css",
|
|
149
|
-
"value": "#
|
|
173
|
+
"value": "#d8d2c8"
|
|
174
|
+
},
|
|
175
|
+
"--color-surface-default": {
|
|
176
|
+
"file": "brand-bridge.css",
|
|
177
|
+
"value": "#ffffff"
|
|
178
|
+
},
|
|
179
|
+
"--color-neutral-950": {
|
|
180
|
+
"file": "brand-bridge.css",
|
|
181
|
+
"value": "#0f172a"
|
|
182
|
+
},
|
|
183
|
+
"--color-neutral-100": {
|
|
184
|
+
"file": "brand-bridge.css",
|
|
185
|
+
"value": "#f1f5f9"
|
|
186
|
+
},
|
|
187
|
+
"--color-neutral-200": {
|
|
188
|
+
"file": "brand-bridge.css",
|
|
189
|
+
"value": "#e2e8f0"
|
|
150
190
|
},
|
|
151
191
|
"--brand-consumer-accent": {
|
|
152
192
|
"file": "brand-bridge.css",
|
|
153
|
-
"value": "var(--brand-
|
|
193
|
+
"value": "var(--color-brand-primary)"
|
|
154
194
|
},
|
|
155
195
|
"--brand-consumer-accent-soft": {
|
|
156
196
|
"file": "brand-bridge.css",
|
|
157
|
-
"value": "var(--brand-
|
|
197
|
+
"value": "var(--color-brand-soft)"
|
|
158
198
|
},
|
|
159
199
|
"--brand-consumer-accent-foreground": {
|
|
160
200
|
"file": "brand-bridge.css",
|
|
161
|
-
"value": "
|
|
201
|
+
"value": "var(--color-surface-default)"
|
|
162
202
|
},
|
|
163
203
|
"--brand-admin-accent": {
|
|
164
204
|
"file": "brand-bridge.css",
|
|
@@ -166,7 +206,7 @@
|
|
|
166
206
|
},
|
|
167
207
|
"--brand-admin-primary": {
|
|
168
208
|
"file": "brand-bridge.css",
|
|
169
|
-
"value": "#
|
|
209
|
+
"value": "#6366f1"
|
|
170
210
|
},
|
|
171
211
|
"--brand-rail-sidebar-bg": {
|
|
172
212
|
"file": "brand-bridge.css",
|
|
@@ -174,7 +214,7 @@
|
|
|
174
214
|
},
|
|
175
215
|
"--brand-rail-sidebar-bg-deep": {
|
|
176
216
|
"file": "brand-bridge.css",
|
|
177
|
-
"value": "
|
|
217
|
+
"value": "var(--color-neutral-950)"
|
|
178
218
|
},
|
|
179
219
|
"--brand-rail-sidebar-text": {
|
|
180
220
|
"file": "brand-bridge.css",
|
|
@@ -194,11 +234,11 @@
|
|
|
194
234
|
},
|
|
195
235
|
"--brand-rail-page-bg": {
|
|
196
236
|
"file": "brand-bridge.css",
|
|
197
|
-
"value": "
|
|
237
|
+
"value": "var(--color-neutral-100)"
|
|
198
238
|
},
|
|
199
239
|
"--brand-rail-card-border": {
|
|
200
240
|
"file": "brand-bridge.css",
|
|
201
|
-
"value": "
|
|
241
|
+
"value": "var(--color-neutral-200)"
|
|
202
242
|
},
|
|
203
243
|
"--brand-rail-kpi-up": {
|
|
204
244
|
"file": "brand-bridge.css",
|
|
@@ -238,11 +278,11 @@
|
|
|
238
278
|
},
|
|
239
279
|
"--color-rail-page-bg": {
|
|
240
280
|
"file": "admin-theme.css",
|
|
241
|
-
"value": "
|
|
281
|
+
"value": "var(--color-neutral-100)"
|
|
242
282
|
},
|
|
243
283
|
"--color-rail-card-border": {
|
|
244
284
|
"file": "admin-theme.css",
|
|
245
|
-
"value": "
|
|
285
|
+
"value": "var(--color-neutral-200)"
|
|
246
286
|
},
|
|
247
287
|
"--color-rail-kpi-up": {
|
|
248
288
|
"file": "admin-theme.css",
|
|
@@ -258,7 +298,7 @@
|
|
|
258
298
|
},
|
|
259
299
|
"--color-surface": {
|
|
260
300
|
"file": "theme.css",
|
|
261
|
-
"value": "
|
|
301
|
+
"value": "var(--color-surface-default)"
|
|
262
302
|
},
|
|
263
303
|
"--color-surface-muted": {
|
|
264
304
|
"file": "theme.css",
|
|
@@ -266,15 +306,15 @@
|
|
|
266
306
|
},
|
|
267
307
|
"--color-surface-elevated": {
|
|
268
308
|
"file": "theme.css",
|
|
269
|
-
"value": "
|
|
309
|
+
"value": "var(--color-surface-default)"
|
|
270
310
|
},
|
|
271
311
|
"--color-surface-hover": {
|
|
272
312
|
"file": "theme.css",
|
|
273
|
-
"value": "
|
|
313
|
+
"value": "var(--color-neutral-100)"
|
|
274
314
|
},
|
|
275
315
|
"--color-on-surface": {
|
|
276
316
|
"file": "theme.css",
|
|
277
|
-
"value": "
|
|
317
|
+
"value": "var(--color-neutral-950)"
|
|
278
318
|
},
|
|
279
319
|
"--color-on-surface-muted": {
|
|
280
320
|
"file": "theme.css",
|
|
@@ -286,7 +326,7 @@
|
|
|
286
326
|
},
|
|
287
327
|
"--color-primary": {
|
|
288
328
|
"file": "theme.css",
|
|
289
|
-
"value": "
|
|
329
|
+
"value": "var(--color-neutral-950)"
|
|
290
330
|
},
|
|
291
331
|
"--color-primary-foreground": {
|
|
292
332
|
"file": "theme.css",
|
|
@@ -326,7 +366,7 @@
|
|
|
326
366
|
},
|
|
327
367
|
"--color-border": {
|
|
328
368
|
"file": "theme.css",
|
|
329
|
-
"value": "
|
|
369
|
+
"value": "var(--color-neutral-200)"
|
|
330
370
|
},
|
|
331
371
|
"--color-border-strong": {
|
|
332
372
|
"file": "theme.css",
|
|
@@ -338,7 +378,7 @@
|
|
|
338
378
|
},
|
|
339
379
|
"--color-qr-render-light": {
|
|
340
380
|
"file": "theme.css",
|
|
341
|
-
"value": "
|
|
381
|
+
"value": "var(--color-surface-default)"
|
|
342
382
|
},
|
|
343
383
|
"--color-disabled-opacity": {
|
|
344
384
|
"file": "theme.css",
|
|
@@ -382,31 +422,31 @@
|
|
|
382
422
|
},
|
|
383
423
|
"--color-an-bg": {
|
|
384
424
|
"file": "admin-theme.css",
|
|
385
|
-
"value": "
|
|
425
|
+
"value": "var(--color-neutral-100)"
|
|
386
426
|
},
|
|
387
427
|
"--color-an-bg-elevated": {
|
|
388
428
|
"file": "admin-theme.css",
|
|
389
|
-
"value": "
|
|
429
|
+
"value": "var(--color-surface-default)"
|
|
390
430
|
},
|
|
391
431
|
"--color-an-surface": {
|
|
392
432
|
"file": "admin-theme.css",
|
|
393
|
-
"value": "
|
|
433
|
+
"value": "var(--color-surface-default)"
|
|
394
434
|
},
|
|
395
435
|
"--color-an-surface-muted": {
|
|
396
436
|
"file": "admin-theme.css",
|
|
397
|
-
"value": "
|
|
437
|
+
"value": "var(--color-neutral-100)"
|
|
398
438
|
},
|
|
399
439
|
"--color-an-surface-hover": {
|
|
400
440
|
"file": "admin-theme.css",
|
|
401
|
-
"value": "
|
|
441
|
+
"value": "var(--color-neutral-100)"
|
|
402
442
|
},
|
|
403
443
|
"--color-an-surface-disabled": {
|
|
404
444
|
"file": "admin-theme.css",
|
|
405
|
-
"value": "
|
|
445
|
+
"value": "var(--color-neutral-100)"
|
|
406
446
|
},
|
|
407
447
|
"--color-an-text": {
|
|
408
448
|
"file": "admin-theme.css",
|
|
409
|
-
"value": "
|
|
449
|
+
"value": "var(--color-neutral-950)"
|
|
410
450
|
},
|
|
411
451
|
"--color-an-text-muted": {
|
|
412
452
|
"file": "admin-theme.css",
|
|
@@ -418,7 +458,7 @@
|
|
|
418
458
|
},
|
|
419
459
|
"--color-an-border": {
|
|
420
460
|
"file": "admin-theme.css",
|
|
421
|
-
"value": "
|
|
461
|
+
"value": "var(--color-neutral-200)"
|
|
422
462
|
},
|
|
423
463
|
"--color-an-border-hover": {
|
|
424
464
|
"file": "admin-theme.css",
|
|
@@ -482,19 +522,19 @@
|
|
|
482
522
|
},
|
|
483
523
|
"--color-shell-bg": {
|
|
484
524
|
"file": "admin-theme.css",
|
|
485
|
-
"value": "
|
|
525
|
+
"value": "var(--color-neutral-100)"
|
|
486
526
|
},
|
|
487
527
|
"--color-shell-surface": {
|
|
488
528
|
"file": "admin-theme.css",
|
|
489
|
-
"value": "
|
|
529
|
+
"value": "var(--color-surface-default)"
|
|
490
530
|
},
|
|
491
531
|
"--color-shell-border": {
|
|
492
532
|
"file": "admin-theme.css",
|
|
493
|
-
"value": "
|
|
533
|
+
"value": "var(--color-neutral-200)"
|
|
494
534
|
},
|
|
495
535
|
"--color-shell-text": {
|
|
496
536
|
"file": "admin-theme.css",
|
|
497
|
-
"value": "
|
|
537
|
+
"value": "var(--color-neutral-950)"
|
|
498
538
|
}
|
|
499
539
|
}
|
|
500
540
|
}
|