pi-kiosk-shared 2.2.44 → 2.2.46
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/theme/ThemeProvider.d.ts +5 -1
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/ThemeProvider.js +6 -2
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/themeContract.d.ts +12 -1
- package/dist/theme/themeContract.d.ts.map +1 -1
- package/dist/theme/themeContract.js +15 -6
- package/dist/theme/themeContract.js.map +1 -1
- package/dist/ui/Avatar/Avatar.js +2 -2
- 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 +59 -20
- 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/ScreenState/ScreenState.js +1 -1
- package/dist/ui/ScreenState/ScreenState.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/admin-theme.css +94 -94
- package/src/tokens/brand-bridge.css +65 -63
- package/src/tokens/tokens.sync.json +143 -103
|
@@ -12,12 +12,16 @@ export interface ThemeProviderProps {
|
|
|
12
12
|
storageKey: string;
|
|
13
13
|
/** When true, explicit `light` preference adds `.light` to override system dark media. */
|
|
14
14
|
lightOverrideEnabled?: boolean;
|
|
15
|
+
/** When storage empty — admin uses `light` so dark requires an explicit toggle. */
|
|
16
|
+
defaultPreference?: ThemePreference;
|
|
17
|
+
/** When preference is `system`, force this effective theme (admin: `light`). */
|
|
18
|
+
systemResolvesTo?: EffectiveTheme;
|
|
15
19
|
children: ReactNode;
|
|
16
20
|
}
|
|
17
21
|
/**
|
|
18
22
|
* React bridge for DECISION-2 C-Hybrid dark mode.
|
|
19
23
|
* Wrap the app (or subtree) and read/update theme via `useTheme()`.
|
|
20
24
|
*/
|
|
21
|
-
export declare function ThemeProvider({ storageKey, lightOverrideEnabled, children, }: ThemeProviderProps): JSX.Element;
|
|
25
|
+
export declare function ThemeProvider({ storageKey, lightOverrideEnabled, defaultPreference, systemResolvesTo, children, }: ThemeProviderProps): JSX.Element;
|
|
22
26
|
export declare function useTheme(): ThemeContextValue;
|
|
23
27
|
//# sourceMappingURL=ThemeProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,eAAe,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC3C;AAID,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,oBAA4B,EAC5B,QAAQ,GACT,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,eAAe,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC3C;AAID,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,cAAc,CAAC;IAClC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,oBAA4B,EAC5B,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,GACT,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CA0ClC;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
|
|
@@ -7,8 +7,12 @@ const ThemeContext = createContext(null);
|
|
|
7
7
|
* React bridge for DECISION-2 C-Hybrid dark mode.
|
|
8
8
|
* Wrap the app (or subtree) and read/update theme via `useTheme()`.
|
|
9
9
|
*/
|
|
10
|
-
export function ThemeProvider({ storageKey, lightOverrideEnabled = false, children, }) {
|
|
11
|
-
const api = useMemo(() => createThemeApi(storageKey, {
|
|
10
|
+
export function ThemeProvider({ storageKey, lightOverrideEnabled = false, defaultPreference, systemResolvesTo, children, }) {
|
|
11
|
+
const api = useMemo(() => createThemeApi(storageKey, {
|
|
12
|
+
lightOverrideEnabled,
|
|
13
|
+
defaultPreference,
|
|
14
|
+
systemResolvesTo,
|
|
15
|
+
}), [storageKey, lightOverrideEnabled, defaultPreference, systemResolvesTo]);
|
|
12
16
|
const [preference, setPreference] = useState(() => api.getThemePreference());
|
|
13
17
|
const [effectiveTheme, setEffectiveTheme] = useState(() => api.getEffectiveTheme());
|
|
14
18
|
const syncFromApi = useCallback(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,GAET,MAAM,OAAO,CAAC;AACf,OAAO,EACL,cAAc,GAKf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,QAAQ,GAET,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,GAET,MAAM,OAAO,CAAC;AACf,OAAO,EACL,cAAc,GAKf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,QAAQ,GAET,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAcnE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,UAAU,EACV,oBAAoB,GAAG,KAAK,EAC5B,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,GACW;IACnB,MAAM,GAAG,GAAG,OAAO,CACjB,GAAG,EAAE,CACH,cAAc,CAAC,UAAU,EAAE;QACzB,oBAAoB;QACpB,iBAAiB;QACjB,gBAAgB;KACjB,CAAC,EACJ,CAAC,UAAU,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CACxE,CAAC;IACF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAkB,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC9F,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAiB,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEpG,MAAM,WAAW,GAAG,WAAW,CAAC,GAAS,EAAE;QACzC,aAAa,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACxC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACxB,WAAW,EAAE,CAAC;QACd,OAAO,GAAG,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAEvB,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,IAAqB,EAAQ,EAAE;QAC9B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnB,WAAW,EAAE,CAAC;IAChB,CAAC,EACD,CAAC,GAAG,EAAE,WAAW,CAAC,CACnB,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,UAAU;QACV,cAAc;QACd,QAAQ,EAAE,kBAAkB;KAC7B,CAAC,EACF,CAAC,UAAU,EAAE,cAAc,EAAE,kBAAkB,CAAC,CACjD,CAAC;IAEF,OAAO,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* DECISION-2 C-Hybrid theme contract — system default + user override.
|
|
3
3
|
*
|
|
4
4
|
* Persists `light` | `dark` | `system` in per-app `localStorage` keys.
|
|
5
|
-
* Effective palette is applied via the `.dark` class on `<html>`.
|
|
5
|
+
* Effective palette is applied via the `.dark` / `.light` class on `<html>`.
|
|
6
6
|
*/
|
|
7
7
|
export type ThemePreference = 'light' | 'dark' | 'system';
|
|
8
8
|
export type EffectiveTheme = 'light' | 'dark';
|
|
@@ -25,6 +25,17 @@ export interface ThemeApi {
|
|
|
25
25
|
export interface ThemeApplyOptions {
|
|
26
26
|
/** When true, explicit `light` preference adds `.light` to override system dark media. */
|
|
27
27
|
readonly lightOverrideEnabled?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Preference when `localStorage` is empty.
|
|
30
|
+
* Admin uses `light` so dark is only on after an explicit toggle.
|
|
31
|
+
* Default: `system` (follow OS).
|
|
32
|
+
*/
|
|
33
|
+
readonly defaultPreference?: ThemePreference;
|
|
34
|
+
/**
|
|
35
|
+
* When preference is `system`, resolve to this instead of OS.
|
|
36
|
+
* Use `light` with admin so legacy `system` values do not auto-dark.
|
|
37
|
+
*/
|
|
38
|
+
readonly systemResolvesTo?: EffectiveTheme;
|
|
28
39
|
}
|
|
29
40
|
/**
|
|
30
41
|
* Imperative theme controller for a single app surface.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeContract.d.ts","sourceRoot":"","sources":["../../src/theme/themeContract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9C,qFAAqF;AACrF,eAAO,MAAM,kBAAkB;;;;;CAKrB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,MAAM,eAAe,CAAC;IAC1C,iBAAiB,EAAE,MAAM,cAAc,CAAC;IACxC,uEAAuE;IACvE,sBAAsB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CAC/D;
|
|
1
|
+
{"version":3,"file":"themeContract.d.ts","sourceRoot":"","sources":["../../src/theme/themeContract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9C,qFAAqF;AACrF,eAAO,MAAM,kBAAkB;;;;;CAKrB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,MAAM,eAAe,CAAC;IAC1C,iBAAiB,EAAE,MAAM,cAAc,CAAC;IACxC,uEAAuE;IACvE,sBAAsB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CAC/D;AA6BD,MAAM,WAAW,iBAAiB;IAChC,0FAA0F;IAC1F,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,eAAe,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,cAAc,CAAC;CAC5C;AA6BD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,QAAQ,CA8DV;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAExE"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* DECISION-2 C-Hybrid theme contract — system default + user override.
|
|
3
3
|
*
|
|
4
4
|
* Persists `light` | `dark` | `system` in per-app `localStorage` keys.
|
|
5
|
-
* Effective palette is applied via the `.dark` class on `<html>`.
|
|
5
|
+
* Effective palette is applied via the `.dark` / `.light` class on `<html>`.
|
|
6
6
|
*/
|
|
7
7
|
/** Per-app `localStorage` keys (isolated so toggles do not leak across surfaces). */
|
|
8
8
|
export const THEME_STORAGE_KEYS = {
|
|
@@ -19,9 +19,9 @@ function resolveSystemTheme() {
|
|
|
19
19
|
? 'dark'
|
|
20
20
|
: 'light';
|
|
21
21
|
}
|
|
22
|
-
function readStoredPreference(storageKey) {
|
|
22
|
+
function readStoredPreference(storageKey, defaultPreference) {
|
|
23
23
|
if (typeof window === 'undefined') {
|
|
24
|
-
return
|
|
24
|
+
return defaultPreference;
|
|
25
25
|
}
|
|
26
26
|
try {
|
|
27
27
|
const raw = window.localStorage.getItem(storageKey);
|
|
@@ -32,7 +32,7 @@ function readStoredPreference(storageKey) {
|
|
|
32
32
|
catch {
|
|
33
33
|
/* ignore quota / privacy errors */
|
|
34
34
|
}
|
|
35
|
-
return
|
|
35
|
+
return defaultPreference;
|
|
36
36
|
}
|
|
37
37
|
function applyThemeClasses(preference, effective, options) {
|
|
38
38
|
if (typeof document === 'undefined') {
|
|
@@ -45,6 +45,10 @@ function applyThemeClasses(preference, effective, options) {
|
|
|
45
45
|
root.classList.add('light');
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
|
+
if (lightOverrideEnabled && preference === 'system' && options?.systemResolvesTo === 'light') {
|
|
49
|
+
root.classList.add('light');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
48
52
|
if (preference === 'dark' || effective === 'dark') {
|
|
49
53
|
root.classList.add('dark');
|
|
50
54
|
}
|
|
@@ -54,11 +58,12 @@ function applyThemeClasses(preference, effective, options) {
|
|
|
54
58
|
* Call `applyInitialTheme()` before the first React paint to avoid flash.
|
|
55
59
|
*/
|
|
56
60
|
export function createThemeApi(storageKey, options) {
|
|
57
|
-
const
|
|
61
|
+
const defaultPreference = options?.defaultPreference ?? 'system';
|
|
62
|
+
const getThemePreference = () => readStoredPreference(storageKey, defaultPreference);
|
|
58
63
|
const getEffectiveTheme = () => {
|
|
59
64
|
const pref = getThemePreference();
|
|
60
65
|
if (pref === 'system') {
|
|
61
|
-
return resolveSystemTheme();
|
|
66
|
+
return options?.systemResolvesTo ?? resolveSystemTheme();
|
|
62
67
|
}
|
|
63
68
|
return pref;
|
|
64
69
|
};
|
|
@@ -83,6 +88,10 @@ export function createThemeApi(storageKey, options) {
|
|
|
83
88
|
if (typeof window === 'undefined') {
|
|
84
89
|
return () => undefined;
|
|
85
90
|
}
|
|
91
|
+
if (options?.systemResolvesTo != null) {
|
|
92
|
+
/* OS changes ignored — preference does not follow system */
|
|
93
|
+
return () => undefined;
|
|
94
|
+
}
|
|
86
95
|
const mq = window.matchMedia?.('(prefers-color-scheme: dark)');
|
|
87
96
|
if (!mq) {
|
|
88
97
|
return () => undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeContract.js","sourceRoot":"","sources":["../../src/theme/themeContract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,qFAAqF;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,sBAAsB;IAChC,KAAK,EAAE,mBAAmB;IAC1B,MAAM,EAAE,oBAAoB;CACpB,CAAC;AAaX,SAAS,kBAAkB;IACzB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,8BAA8B,CAAC,CAAC,OAAO;QAChE,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"themeContract.js","sourceRoot":"","sources":["../../src/theme/themeContract.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/Avatar/Avatar.js
CHANGED
|
@@ -22,8 +22,8 @@ export function Avatar({ name, avatarUrl, size = 'md', className, alt, testId =
|
|
|
22
22
|
const initials = initialsFromName(name);
|
|
23
23
|
const base = [
|
|
24
24
|
'inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full',
|
|
25
|
-
'bg-[var(--color-surface-muted,var(--color-an-primary-soft,#
|
|
26
|
-
'font-semibold text-[var(--color-on-surface,var(--color-an-primary,#
|
|
25
|
+
'bg-[var(--color-surface-muted,var(--color-an-primary-soft,#e4e4e7))]',
|
|
26
|
+
'font-semibold text-[var(--color-on-surface,var(--color-an-primary,#18181b))]',
|
|
27
27
|
SIZE_CLASS[size],
|
|
28
28
|
className,
|
|
29
29
|
]
|
|
@@ -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',
|
|
@@ -14,16 +16,16 @@ const adminButton = tv({
|
|
|
14
16
|
variants: {
|
|
15
17
|
intent: {
|
|
16
18
|
primary: [
|
|
17
|
-
'border-0 bg-[var(--color-an-primary)] text-
|
|
19
|
+
'border-0 bg-[var(--color-an-primary)] text-[var(--color-an-on-primary,#ffffff)] shadow-sm',
|
|
18
20
|
'hover:brightness-95 hover:-translate-y-px',
|
|
19
|
-
'hover:shadow-[0_4px_12px_rgba(
|
|
21
|
+
'hover:shadow-[0_4px_12px_rgba(24, 24, 27,0.35)]',
|
|
20
22
|
].join(' '),
|
|
21
23
|
secondary: [
|
|
22
24
|
'border border-[var(--color-gray-300)] bg-[var(--color-gray-200)]',
|
|
23
25
|
'text-[var(--color-gray-800)] shadow-sm',
|
|
24
26
|
'hover:border-[var(--color-an-primary)] hover:bg-[var(--color-an-primary-soft)]',
|
|
25
27
|
'hover:text-[var(--color-an-primary)]',
|
|
26
|
-
'hover:shadow-[0_2px_6px_rgba(
|
|
28
|
+
'hover:shadow-[0_2px_6px_rgba(24, 24, 27,0.2)]',
|
|
27
29
|
].join(' '),
|
|
28
30
|
ghost: [
|
|
29
31
|
'border border-[var(--color-an-border)] bg-[var(--color-an-surface)]',
|
|
@@ -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"}
|
|
@@ -24,6 +24,6 @@ export function ScreenState({ variant, title, message, hint, icon, error, onRetr
|
|
|
24
24
|
const resolvedMessage = error?.message ?? message;
|
|
25
25
|
const role = variant === 'error' || variant === 'offline' ? 'alert' : 'status';
|
|
26
26
|
const live = variant === 'loading' ? 'polite' : undefined;
|
|
27
|
-
return (_jsxs("div", { className: [panelClass(variant), className].filter(Boolean).join(' '), role: role, "aria-live": live, "aria-busy": variant === 'loading' ? true : undefined, "data-testid": testId ?? `screen-state-${variant}`, "data-variant": variant, children: [icon ? _jsx("div", { className: "mb-2 flex justify-center text-2xl", "aria-hidden": "true", children: icon }) : null, title ? (_jsx("h3", { className: "m-0 text-base font-semibold text-[var(--color-on-surface,var(--color-an-text,#111))]", children: title })) : null, resolvedMessage ? (_jsx("p", { className: "mt-1 mb-0 text-sm text-[var(--color-on-surface-muted,var(--color-an-text-muted,#6b7280))]", children: resolvedMessage })) : null, hint ? (_jsx("p", { className: "mt-1 mb-0 text-xs text-[var(--color-on-surface-muted,var(--color-an-text-muted,#6b7280))]", children: hint })) : null, children, onRetry ? (_jsx("div", { className: "mt-3", children: _jsx("button", { type: "button", className: "inline-flex min-h-[44px] items-center justify-center rounded-md bg-[var(--color-action-primary,var(--color-an-primary,#
|
|
27
|
+
return (_jsxs("div", { className: [panelClass(variant), className].filter(Boolean).join(' '), role: role, "aria-live": live, "aria-busy": variant === 'loading' ? true : undefined, "data-testid": testId ?? `screen-state-${variant}`, "data-variant": variant, children: [icon ? _jsx("div", { className: "mb-2 flex justify-center text-2xl", "aria-hidden": "true", children: icon }) : null, title ? (_jsx("h3", { className: "m-0 text-base font-semibold text-[var(--color-on-surface,var(--color-an-text,#111))]", children: title })) : null, resolvedMessage ? (_jsx("p", { className: "mt-1 mb-0 text-sm text-[var(--color-on-surface-muted,var(--color-an-text-muted,#6b7280))]", children: resolvedMessage })) : null, hint ? (_jsx("p", { className: "mt-1 mb-0 text-xs text-[var(--color-on-surface-muted,var(--color-an-text-muted,#6b7280))]", children: hint })) : null, children, onRetry ? (_jsx("div", { className: "mt-3", children: _jsx("button", { type: "button", className: "inline-flex min-h-[44px] items-center justify-center rounded-md bg-[var(--color-action-primary,var(--color-an-primary,#18181b))] px-4 py-2 text-sm font-semibold text-[var(--color-an-on-primary,#ffffff)]", onClick: onRetry, "data-testid": `${testId ?? 'screen-state'}-retry`, children: retryLabel }) })) : null, action ? (_jsx("div", { className: "mt-3", children: _jsx("button", { type: "button", className: "inline-flex min-h-[44px] items-center justify-center rounded-md border border-[var(--color-border,var(--color-an-border))] px-4 py-2 text-sm font-semibold", onClick: action.onClick, "data-testid": `${testId ?? 'screen-state'}-action`, children: action.label }) })) : null] }));
|
|
28
28
|
}
|
|
29
29
|
//# sourceMappingURL=ScreenState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenState.js","sourceRoot":"","sources":["../../../src/ui/ScreenState/ScreenState.tsx"],"names":[],"mappings":";AA6BA,SAAS,UAAU,CAAC,OAA2B;IAC7C,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO;YACL,+EAA+E;YAC/E,6FAA6F;YAC7F,iBAAiB;SAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,qHAAqH;YACrH,+FAA+F;YAC/F,iEAAiE;SAClE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IACD,OAAO;QACL,+EAA+E;QAC/E,wDAAwD;QACxD,iBAAiB;KAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,UAAU,GAAG,OAAO,EACpB,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,GACS;IACjB,MAAM,eAAe,GAAG,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC;IAClD,MAAM,IAAI,GAAG,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/E,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1D,OAAO,CACL,eACE,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EACrE,IAAI,EAAE,IAAI,eACC,IAAI,eACJ,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,iBACtC,MAAM,IAAI,gBAAgB,OAAO,EAAE,kBAClC,OAAO,aAEpB,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,mCAAmC,iBAAa,MAAM,YAAE,IAAI,GAAO,CAAC,CAAC,CAAC,IAAI,EAChG,KAAK,CAAC,CAAC,CAAC,CACP,aAAI,SAAS,EAAC,sFAAsF,YACjG,KAAK,GACH,CACN,CAAC,CAAC,CAAC,IAAI,EACP,eAAe,CAAC,CAAC,CAAC,CACjB,YAAG,SAAS,EAAC,2FAA2F,YACrG,eAAe,GACd,CACL,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,YAAG,SAAS,EAAC,2FAA2F,YACrG,IAAI,GACH,CACL,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,EACR,OAAO,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"ScreenState.js","sourceRoot":"","sources":["../../../src/ui/ScreenState/ScreenState.tsx"],"names":[],"mappings":";AA6BA,SAAS,UAAU,CAAC,OAA2B;IAC7C,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO;YACL,+EAA+E;YAC/E,6FAA6F;YAC7F,iBAAiB;SAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,qHAAqH;YACrH,+FAA+F;YAC/F,iEAAiE;SAClE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IACD,OAAO;QACL,+EAA+E;QAC/E,wDAAwD;QACxD,iBAAiB;KAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,UAAU,GAAG,OAAO,EACpB,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,GACS;IACjB,MAAM,eAAe,GAAG,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC;IAClD,MAAM,IAAI,GAAG,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/E,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1D,OAAO,CACL,eACE,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EACrE,IAAI,EAAE,IAAI,eACC,IAAI,eACJ,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,iBACtC,MAAM,IAAI,gBAAgB,OAAO,EAAE,kBAClC,OAAO,aAEpB,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,mCAAmC,iBAAa,MAAM,YAAE,IAAI,GAAO,CAAC,CAAC,CAAC,IAAI,EAChG,KAAK,CAAC,CAAC,CAAC,CACP,aAAI,SAAS,EAAC,sFAAsF,YACjG,KAAK,GACH,CACN,CAAC,CAAC,CAAC,IAAI,EACP,eAAe,CAAC,CAAC,CAAC,CACjB,YAAG,SAAS,EAAC,2FAA2F,YACrG,eAAe,GACd,CACL,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,YAAG,SAAS,EAAC,2FAA2F,YACrG,IAAI,GACH,CACL,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,EACR,OAAO,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,4MAA4M,EACtN,OAAO,EAAE,OAAO,iBACH,GAAG,MAAM,IAAI,cAAc,QAAQ,YAE/C,UAAU,GACJ,GACL,CACP,CAAC,CAAC,CAAC,IAAI,EACP,MAAM,CAAC,CAAC,CAAC,CACR,cAAK,SAAS,EAAC,MAAM,YACnB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,4JAA4J,EACtK,OAAO,EAAE,MAAM,CAAC,OAAO,iBACV,GAAG,MAAM,IAAI,cAAc,SAAS,YAEhD,MAAM,CAAC,KAAK,GACN,GACL,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,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"}
|