@xeonr/platform-ui 0.2.5 → 0.3.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.
Files changed (53) hide show
  1. package/dist/index.d.ts +10 -5
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +14 -5
  4. package/dist/index.js.map +1 -1
  5. package/dist/kit/Card.d.ts +44 -0
  6. package/dist/kit/Card.d.ts.map +1 -0
  7. package/dist/kit/Card.js +95 -0
  8. package/dist/kit/Card.js.map +1 -0
  9. package/dist/kit/Charts.d.ts +44 -0
  10. package/dist/kit/Charts.d.ts.map +1 -0
  11. package/dist/kit/Charts.js +164 -0
  12. package/dist/kit/Charts.js.map +1 -0
  13. package/dist/kit/DataTable.d.ts +3 -1
  14. package/dist/kit/DataTable.d.ts.map +1 -1
  15. package/dist/kit/DataTable.js +8 -2
  16. package/dist/kit/DataTable.js.map +1 -1
  17. package/dist/kit/Facet.d.ts +37 -0
  18. package/dist/kit/Facet.d.ts.map +1 -0
  19. package/dist/kit/Facet.js +126 -0
  20. package/dist/kit/Facet.js.map +1 -0
  21. package/dist/kit/Form.d.ts +8 -0
  22. package/dist/kit/Form.d.ts.map +1 -1
  23. package/dist/kit/Form.js +17 -0
  24. package/dist/kit/Form.js.map +1 -1
  25. package/dist/kit/Icon.d.ts +10 -0
  26. package/dist/kit/Icon.d.ts.map +1 -1
  27. package/dist/kit/Icon.js +4 -1
  28. package/dist/kit/Icon.js.map +1 -1
  29. package/dist/kit/Range.d.ts +30 -0
  30. package/dist/kit/Range.d.ts.map +1 -0
  31. package/dist/kit/Range.js +137 -0
  32. package/dist/kit/Range.js.map +1 -0
  33. package/dist/kit/Search.d.ts +9 -0
  34. package/dist/kit/Search.d.ts.map +1 -0
  35. package/dist/kit/Search.js +59 -0
  36. package/dist/kit/Search.js.map +1 -0
  37. package/dist/kit/Skeleton.d.ts +6 -0
  38. package/dist/kit/Skeleton.d.ts.map +1 -1
  39. package/dist/kit/Skeleton.js +15 -0
  40. package/dist/kit/Skeleton.js.map +1 -1
  41. package/dist/kit/Toast.d.ts +10 -2
  42. package/dist/kit/Toast.d.ts.map +1 -1
  43. package/dist/kit/Toast.js +9 -2
  44. package/dist/kit/Toast.js.map +1 -1
  45. package/dist/theme/ThemeProvider.d.ts +15 -2
  46. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  47. package/dist/theme/ThemeProvider.js +43 -53
  48. package/dist/theme/ThemeProvider.js.map +1 -1
  49. package/dist/theme/tokens.d.ts +1 -0
  50. package/dist/theme/tokens.d.ts.map +1 -1
  51. package/dist/theme/tokens.js +47 -0
  52. package/dist/theme/tokens.js.map +1 -1
  53. package/package.json +1 -1
@@ -1,12 +1,20 @@
1
1
  import { type ReactNode } from "react";
2
- type Kind = "ok" | "err" | "info";
2
+ export type ToastKind = "ok" | "err" | "info" | "pending";
3
+ type Kind = ToastKind;
3
4
  interface ToastApi {
4
5
  push: (kind: Kind, text: string) => void;
5
6
  ok: (text: string) => void;
6
7
  error: (e: unknown, prefix?: string) => void;
7
8
  }
9
+ /**
10
+ * toastError: an unknown thrown value as a toast.
11
+ *
12
+ * Exported because a product's own error type carries more than a message — a
13
+ * Connect code, an HTTP status — and the product maps that to a kind before
14
+ * calling `push`. This is the fallback for everything it does not recognise.
15
+ */
8
16
  export declare function toastError(e: unknown): {
9
- kind: Kind;
17
+ kind: ToastKind;
10
18
  text: string;
11
19
  };
12
20
  export declare function ToastProvider({ children }: {
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/kit/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK1G,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;AAIlC,UAAU,QAAQ;IAChB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAsCD,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEnE;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAgClE;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAInC"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/kit/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ1G,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAC1D,KAAK,IAAI,GAAG,SAAS,CAAC;AAItB,UAAU,QAAQ;IAChB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAsCD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAExE;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAgClE;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAInC"}
package/dist/kit/Toast.js CHANGED
@@ -32,8 +32,15 @@ const Item = styled.div `
32
32
  animation: ${rise} 0.16s cubic-bezier(0.2, 0.7, 0.3, 1);
33
33
  svg { margin-top: 1px; flex: none; }
34
34
  color: ${v.text};
35
- border-left: 3px solid ${(p) => p.$kind === "ok" ? v.success : p.$kind === "err" ? v.danger : v.brand};
35
+ border-left: 3px solid ${(p) => p.$kind === "ok" ? v.success : p.$kind === "err" ? v.danger : p.$kind === "pending" ? v.warning : v.brand};
36
36
  `;
37
+ /**
38
+ * toastError: an unknown thrown value as a toast.
39
+ *
40
+ * Exported because a product's own error type carries more than a message — a
41
+ * Connect code, an HTTP status — and the product maps that to a kind before
42
+ * calling `push`. This is the fallback for everything it does not recognise.
43
+ */
37
44
  export function toastError(e) {
38
45
  return { kind: "err", text: String(e?.message ?? e) };
39
46
  }
@@ -53,7 +60,7 @@ export function ToastProvider({ children }) {
53
60
  push(kind, prefix ? `${prefix}: ${text}` : text);
54
61
  },
55
62
  }), [push]);
56
- return (_jsxs(Ctx.Provider, { value: api, children: [children, _jsx(Stack, { role: "status", "aria-live": "polite", children: toasts.map((t) => (_jsxs(Item, { "$kind": t.kind, children: [_jsx(Icon, { name: t.kind === "ok" ? "check" : t.kind === "err" ? "error" : "info" }), _jsx("span", { children: t.text })] }, t.id))) })] }));
63
+ return (_jsxs(Ctx.Provider, { value: api, children: [children, _jsx(Stack, { role: "status", "aria-live": "polite", children: toasts.map((t) => (_jsxs(Item, { "$kind": t.kind, children: [_jsx(Icon, { name: t.kind === "ok" ? "check" : t.kind === "err" ? "error" : t.kind === "pending" ? "clock" : "info" }), _jsx("span", { children: t.text })] }, t.id))) })] }));
57
64
  }
58
65
  export function useToast() {
59
66
  const c = useContext(Ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/kit/Toast.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/kit/Toast.tsx"],"names":[],"mappings":"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"}
@@ -7,10 +7,23 @@ interface ThemeCtx {
7
7
  /** system → the opposite of what's resolved → … (the rail's theme button) */
8
8
  cycle: () => void;
9
9
  }
10
- export declare function AppThemeProvider({ children, storageKey }: {
10
+ export interface AppThemeProviderProps {
11
11
  children: ReactNode;
12
12
  storageKey?: string | undefined;
13
- }): import("react").JSX.Element;
13
+ /**
14
+ * The preference the server already rendered with (from the host's own
15
+ * cookie). Used as the first client value too, so hydration matches; an
16
+ * explicit localStorage choice on this host still wins.
17
+ */
18
+ initialPref?: ThemePref | undefined;
19
+ /** Called on every change, for a host that mirrors the preference into a cookie. */
20
+ onPrefChange?: ((pref: ThemePref) => void) | undefined;
21
+ /** false when the host inlines `globalCss()` itself (SSR without a styled sheet). */
22
+ globalStyle?: boolean | undefined;
23
+ }
24
+ export declare function AppThemeProvider({ children, storageKey, initialPref, onPrefChange, globalStyle, }: AppThemeProviderProps): import("react").JSX.Element;
14
25
  export declare function useTheme(): ThemeCtx;
26
+ /** Null outside a provider — for a component that may render in either place. */
27
+ export declare function useThemeMaybe(): ThemeCtx | null;
15
28
  export {};
16
29
  //# sourceMappingURL=ThemeProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ7G,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAMpD,UAAU,QAAQ;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAChC,6EAA6E;IAC7E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAQD,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,UAAgC,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,+BAoDxI;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAInC"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAgB7G,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAMpD,UAAU,QAAQ;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAChC,6EAA6E;IAC7E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AA0BD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,oFAAoF;IACpF,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACvD,qFAAqF;IACrF,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACnC;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,UAAgC,EAChC,WAAW,EACX,YAAY,EACZ,WAAkB,GACnB,EAAE,qBAAqB,+BAuDvB;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAInC;AAED,iFAAiF;AACjF,wBAAgB,aAAa,IAAI,QAAQ,GAAG,IAAI,CAE/C"}
@@ -1,25 +1,43 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
3
3
  import { createGlobalStyle } from "styled-components";
4
- import { cssVariables, v } from "./tokens.js";
4
+ import { cssVariables, globalCss } from "./tokens.js";
5
5
  // One preference for every console: the key is shared so a theme choice on
6
6
  // one product host is picked up by the next (same-origin storage only — the
7
7
  // cross-host copy rides the console context, see @xeonr/console-shell).
8
8
  const DEFAULT_STORAGE_KEY = "xnr.theme";
9
9
  const Ctx = createContext(null);
10
+ const hasDOM = typeof window !== "undefined" && typeof document !== "undefined";
11
+ function normalise(raw) {
12
+ return raw === "light" || raw === "dark" ? raw : "system";
13
+ }
10
14
  function systemScheme() {
15
+ if (!hasDOM || typeof window.matchMedia !== "function")
16
+ return "dark";
11
17
  return window.matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark";
12
18
  }
13
- export function AppThemeProvider({ children, storageKey = DEFAULT_STORAGE_KEY }) {
19
+ function storedPref(key) {
20
+ if (!hasDOM)
21
+ return undefined;
22
+ try {
23
+ const s = localStorage.getItem(key);
24
+ return s === "light" || s === "dark" ? s : undefined;
25
+ }
26
+ catch {
27
+ // Private mode / blocked storage: fall back to the caller's initial value.
28
+ return undefined;
29
+ }
30
+ }
31
+ export function AppThemeProvider({ children, storageKey = DEFAULT_STORAGE_KEY, initialPref, onPrefChange, globalStyle = true, }) {
14
32
  const STORAGE_KEY = storageKey;
15
- const [pref, setPrefState] = useState(() => {
16
- const s = localStorage.getItem(STORAGE_KEY);
17
- return s === "light" || s === "dark" ? s : "system";
18
- });
19
- const [sys, setSys] = useState(() => systemScheme());
33
+ const [pref, setPrefState] = useState(() => storedPref(STORAGE_KEY) ?? normalise(initialPref));
34
+ const [sys, setSys] = useState(() => (hasDOM ? systemScheme() : "dark"));
20
35
  useEffect(() => {
36
+ if (!hasDOM || typeof window.matchMedia !== "function")
37
+ return;
21
38
  const mq = window.matchMedia("(prefers-color-scheme: light)");
22
39
  const on = () => setSys(systemScheme());
40
+ setSys(systemScheme());
23
41
  mq.addEventListener("change", on);
24
42
  return () => mq.removeEventListener("change", on);
25
43
  }, []);
@@ -36,24 +54,29 @@ export function AppThemeProvider({ children, storageKey = DEFAULT_STORAGE_KEY })
36
54
  const on = (e) => {
37
55
  if (e.key !== STORAGE_KEY)
38
56
  return;
39
- const s = e.newValue;
40
- setPrefState(s === "light" || s === "dark" ? s : "system");
57
+ setPrefState(normalise(e.newValue));
41
58
  };
42
59
  window.addEventListener("storage", on);
43
60
  return () => window.removeEventListener("storage", on);
44
61
  }, [STORAGE_KEY]);
45
62
  const setPref = useCallback((p) => {
46
63
  setPrefState(p);
47
- if (p === "system")
48
- localStorage.removeItem(STORAGE_KEY);
49
- else
50
- localStorage.setItem(STORAGE_KEY, p);
51
- }, [STORAGE_KEY]);
64
+ try {
65
+ if (p === "system")
66
+ localStorage.removeItem(STORAGE_KEY);
67
+ else
68
+ localStorage.setItem(STORAGE_KEY, p);
69
+ }
70
+ catch {
71
+ /* storage may be unavailable; the in-memory preference still applies */
72
+ }
73
+ onPrefChange?.(p);
74
+ }, [STORAGE_KEY, onPrefChange]);
52
75
  const cycle = useCallback(() => {
53
76
  setPref(pref === "system" ? (resolved === "dark" ? "light" : "dark") : pref === "dark" ? "light" : "system");
54
77
  }, [pref, resolved, setPref]);
55
78
  const ctx = useMemo(() => ({ pref, resolved, setPref, cycle }), [pref, resolved, setPref, cycle]);
56
- return (_jsxs(Ctx.Provider, { value: ctx, children: [_jsx(GlobalStyle, {}), children] }));
79
+ return (_jsxs(Ctx.Provider, { value: ctx, children: [globalStyle ? _jsx(GlobalStyle, {}) : null, children] }));
57
80
  }
58
81
  export function useTheme() {
59
82
  const c = useContext(Ctx);
@@ -61,45 +84,12 @@ export function useTheme() {
61
84
  throw new Error("useTheme outside AppThemeProvider");
62
85
  return c;
63
86
  }
87
+ /** Null outside a provider — for a component that may render in either place. */
88
+ export function useThemeMaybe() {
89
+ return useContext(Ctx);
90
+ }
64
91
  const GlobalStyle = createGlobalStyle `
65
92
  ${cssVariables()}
66
-
67
- *, *::before, *::after { box-sizing: border-box; }
68
- html, body, #root { height: 100%; }
69
- body {
70
- margin: 0;
71
- background: ${v.bg};
72
- background-attachment: fixed;
73
- color: ${v.text};
74
- font-family: ${v.font};
75
- font-size: 13px;
76
- line-height: 1.55;
77
- -webkit-font-smoothing: antialiased;
78
- }
79
- a { color: inherit; }
80
- button { font: inherit; color: inherit; background: none; border: none; padding: 0; cursor: pointer; }
81
- input, select, textarea { font: inherit; color: inherit; }
82
- code, pre, kbd { font-family: ${v.mono}; }
83
-
84
- /* Native <select> popups: macOS paints them with the system UI, but Windows
85
- (and Linux) Chromium/Firefox render <option>s with page styles — unstyled,
86
- that's a white UA list under our light-on-dark text. Solid surface tokens
87
- keep the popup readable everywhere; macOS simply ignores these. */
88
- select option, select optgroup {
89
- background: ${v.surface};
90
- color: ${v.text};
91
- }
92
-
93
- :focus-visible { outline: none; box-shadow: ${v.ring}; border-radius: 4px; }
94
- ::selection { background: ${v.brand22}; }
95
-
96
- * { scrollbar-width: thin; scrollbar-color: ${v.line2} transparent; }
97
- *::-webkit-scrollbar { width: 10px; height: 10px; }
98
- *::-webkit-scrollbar-thumb { background: ${v.line2}; border-radius: 8px; border: 3px solid transparent; background-clip: content-box; }
99
- *::-webkit-scrollbar-track { background: transparent; }
100
-
101
- @media (prefers-reduced-motion: reduce) {
102
- *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
103
- }
93
+ ${globalCss()}
104
94
  `;
105
95
  //# sourceMappingURL=ThemeProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"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"}
@@ -59,4 +59,5 @@ export declare const v: {
59
59
  zPalette: string;
60
60
  zToast: string;
61
61
  };
62
+ export declare function globalCss(): string;
62
63
  //# sourceMappingURL=tokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,KAAK;;;;;;CAMjB,CAAC;AAEF,eAAO,MAAM,IAAI,QAAwF,CAAC;AAC1G,eAAO,MAAM,OAAO,QAAuF,CAAC;AAG5G,wBAAgB,YAAY,IAAI,MAAM,CAgIrC;AAyBD,eAAO,MAAM,CAAC,EAAkB;IAC9B,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IACpF,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IACtG,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAC/E,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAC7E,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IACrE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAC9F,CAAC"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,KAAK;;;;;;CAMjB,CAAC;AAEF,eAAO,MAAM,IAAI,QAAwF,CAAC;AAC1G,eAAO,MAAM,OAAO,QAAuF,CAAC;AAG5G,wBAAgB,YAAY,IAAI,MAAM,CAgIrC;AAyBD,eAAO,MAAM,CAAC,EAAkB;IAC9B,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IACpF,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IACtG,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAC/E,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAC7E,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IACrE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAC9F,CAAC;AAQF,wBAAgB,SAAS,IAAI,MAAM,CAwClC"}
@@ -168,4 +168,51 @@ function buildVars() {
168
168
  return out;
169
169
  }
170
170
  export const v = buildVars();
171
+ // globalCss() is the document-level reset the kit assumes: box sizing, the body
172
+ // surface and typography, focus rings, scrollbars and the native-<select> popup
173
+ // fix. AppThemeProvider injects it through createGlobalStyle; a server-rendered
174
+ // console inlines `cssVariables() + globalCss()` in a plain <style> in <head>
175
+ // instead (createGlobalStyle has no server sheet in every runtime) and passes
176
+ // `globalStyle={false}`.
177
+ export function globalCss() {
178
+ return `
179
+ *, *::before, *::after { box-sizing: border-box; }
180
+ html, body, #root { height: 100%; }
181
+ body {
182
+ margin: 0;
183
+ background: ${v.bg};
184
+ background-attachment: fixed;
185
+ color: ${v.text};
186
+ font-family: ${v.font};
187
+ font-size: 13px;
188
+ line-height: 1.55;
189
+ -webkit-font-smoothing: antialiased;
190
+ }
191
+ a { color: inherit; }
192
+ button { font: inherit; color: inherit; background: none; border: none; padding: 0; cursor: pointer; }
193
+ input, select, textarea { font: inherit; color: inherit; }
194
+ code, pre, kbd { font-family: ${v.mono}; }
195
+
196
+ /* Native <select> popups: macOS paints them with the system UI, but Windows
197
+ (and Linux) Chromium/Firefox render <option>s with page styles — unstyled,
198
+ that's a white UA list under our light-on-dark text. Solid surface tokens
199
+ keep the popup readable everywhere; macOS simply ignores these. */
200
+ select option, select optgroup {
201
+ background: ${v.surface};
202
+ color: ${v.text};
203
+ }
204
+
205
+ :focus-visible { outline: none; box-shadow: ${v.ring}; border-radius: 4px; }
206
+ ::selection { background: ${v.brand22}; }
207
+
208
+ * { scrollbar-width: thin; scrollbar-color: ${v.line2} transparent; }
209
+ *::-webkit-scrollbar { width: 10px; height: 10px; }
210
+ *::-webkit-scrollbar-thumb { background: ${v.line2}; border-radius: 8px; border: 3px solid transparent; background-clip: content-box; }
211
+ *::-webkit-scrollbar-track { background: transparent; }
212
+
213
+ @media (prefers-reduced-motion: reduce) {
214
+ *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
215
+ }
216
+ `;
217
+ }
171
218
  //# sourceMappingURL=tokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,iCAAiC;AACjC,EAAE;AACF,kFAAkF;AAClF,kFAAkF;AAClF,gFAAgF;AAChF,yCAAyC;AAEzC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO,EAAE,SAAS;IAClB,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,2BAA2B,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,GAAG,CAAC;AAC1G,MAAM,CAAC,MAAM,OAAO,GAAG,0BAA0B,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,GAAG,CAAC;AAE5G,iEAAiE;AACjE,MAAM,UAAU,YAAY;IAC1B,OAAO;;eAEM,KAAK,CAAC,OAAO;YAChB,KAAK,CAAC,EAAE,aAAa,KAAK,CAAC,EAAE,aAAa,KAAK,CAAC,EAAE,aAAa,KAAK,CAAC,EAAE;cACrE,IAAI;iBACD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHvB,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,mFAAmF;AACnF,MAAM,KAAK,GAAG;IACZ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU;IACtC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC1D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM;IAC/D,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAC3E,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACjE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS;IAC1F,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS;IAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;CACtD,CAAC;AAEX,SAAS,SAAS;IAChB,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,2EAA2E;QAC3E,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,EAWzB,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xeonr/platform-ui",
3
- "version": "0.2.5",
3
+ "version": "0.3.1",
4
4
  "description": "Xeonr Platform Suite design language: the --x-* token sheet, theme provider and kit shared by every Xeonr console.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",