@net-advantage/jo-ui-theme 1.3.0 → 1.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.
package/README.md CHANGED
@@ -1,57 +1,57 @@
1
- # @net-advantage/jo-ui-theme
2
-
3
- Runtime colour tokens, radius tokens, and self-hosted Inter and Caveat faces.
4
-
5
- The theme follows a strict MVVM split. The model names the theme and the token catalogue. The view-model projects the theme class. The view renders that class around the host children. The stylesheet is the runtime source for every `--jo-color-*` and `--jo-radius-*` value.
6
-
7
- ## MVVM
8
-
9
- ```mermaid
10
- flowchart LR
11
- Props["ThemeProps"] --> ViewModel["useThemeViewModel"]
12
- Model["jo-ui-theme.model.ts<br/>theme name and token catalogue"] --> ViewModel
13
- ViewModel --> View["Theme.tsx"]
14
- Styles["jo-ui-theme.css<br/>tokens and font faces"] --> View
15
- ```
16
-
17
- | Layer | File | Responsibility |
18
- | --- | --- | --- |
19
- | Contract | [jo-ui-theme.types.ts](src/jo-ui-theme.types.ts) | Theme name, props, and view-model |
20
- | Model | [jo-ui-theme.model.ts](src/jo-ui-theme.model.ts) | Normalize light or dark, and publish the token and font catalogues |
21
- | View-model | [jo-ui-theme.view-model.ts](src/jo-ui-theme.view-model.ts) | Project the theme class |
22
- | View | [Theme.tsx](src/Theme.tsx) | Render the theme root and import the runtime stylesheet |
23
- | Styles | [jo-ui-theme.css](src/jo-ui-theme.css) | Define light and dark tokens and the self-hosted font faces |
24
-
25
- ## Models
26
-
27
- ```mermaid
28
- flowchart TD
29
- Props["ThemeProps"] --> Name["ThemeName"]
30
- Name --> ClassName["theme class"]
31
- Catalogue["JO_COLOR_TOKENS and JO_RADIUS_TOKENS"] --> Styles["runtime stylesheet"]
32
- Fallback["TEXT_MUTED_FALLBACK"] --> Styles
33
- Fonts["Inter and Caveat"] --> Styles
34
- ```
35
-
36
- - A missing theme is `light`.
37
- - `theme="dark"` adds `theme-dark`. Otherwise the root is `theme-light`.
38
- - The official fallback for `--jo-color-text-muted` is `#667085`. The light theme defines that value. The dark theme defines `#9ca8bf`.
39
- - `--jo-color-surface-dark` is a dark surface in both themes (`#13203a` light, `#0b1220` dark), alongside the theme's own `--jo-color-surface` and `--jo-color-surface-alt`.
40
- - `--jo-color-scrim` and `--jo-color-on-scrim` paint overlays and the Button `overlay` variant.
41
- - `--jo-radius-sm` is `6px`. `--jo-radius-control` is `12px`. `--jo-radius-card` is `16px`.
42
-
43
- ## One-line import
44
-
45
- Load the stylesheet once at the application root:
46
-
47
- ```ts
48
- import '@net-advantage/jo-ui-theme/style.css';
49
- ```
50
-
51
- That import defines the tokens for `:root` (light) and `.theme-dark`, and registers Inter 400, 500, 600, 700, and 800 plus Caveat 600 with `font-display: swap`. Do not load these faces from Google Fonts.
52
-
53
- Inter and Caveat are licensed under the SIL Open Font License. The license texts ship in `licenses/OFL-Inter.txt` and `licenses/OFL-Caveat.txt`.
54
-
55
- ## Publish footprint
56
-
57
- This package publishes `dist`, `README.md`, and `licenses`.
1
+ # @net-advantage/jo-ui-theme
2
+
3
+ Runtime colour tokens, radius tokens, and self-hosted Inter and Caveat faces.
4
+
5
+ The theme follows a strict MVVM split. The model names the theme and the token catalogue. The view-model projects the theme class. The view renders that class around the host children. The stylesheet is the runtime source for every `--jo-color-*` and `--jo-radius-*` value.
6
+
7
+ ## MVVM
8
+
9
+ ```mermaid
10
+ flowchart LR
11
+ Props["ThemeProps"] --> ViewModel["useThemeViewModel"]
12
+ Model["jo-ui-theme.model.ts<br/>theme name and token catalogue"] --> ViewModel
13
+ ViewModel --> View["Theme.tsx"]
14
+ Styles["jo-ui-theme.css<br/>tokens and font faces"] --> View
15
+ ```
16
+
17
+ | Layer | File | Responsibility |
18
+ | --- | --- | --- |
19
+ | Contract | [jo-ui-theme.types.ts](src/jo-ui-theme.types.ts) | Theme name, props, and view-model |
20
+ | Model | [jo-ui-theme.model.ts](src/jo-ui-theme.model.ts) | Normalize light or dark, and publish the token and font catalogues |
21
+ | View-model | [jo-ui-theme.view-model.ts](src/jo-ui-theme.view-model.ts) | Project the theme class |
22
+ | View | [Theme.tsx](src/Theme.tsx) | Render the theme root and import the runtime stylesheet |
23
+ | Styles | [jo-ui-theme.css](src/jo-ui-theme.css) | Define light and dark tokens and the self-hosted font faces |
24
+
25
+ ## Models
26
+
27
+ ```mermaid
28
+ flowchart TD
29
+ Props["ThemeProps"] --> Name["ThemeName"]
30
+ Name --> ClassName["theme class"]
31
+ Catalogue["JO_COLOR_TOKENS and JO_RADIUS_TOKENS"] --> Styles["runtime stylesheet"]
32
+ Fallback["TEXT_MUTED_FALLBACK"] --> Styles
33
+ Fonts["Inter and Caveat"] --> Styles
34
+ ```
35
+
36
+ - A missing theme is `light`.
37
+ - `theme="dark"` adds `theme-dark`. Otherwise the root is `theme-light`.
38
+ - The official fallback for `--jo-color-text-muted` is `#667085`. The light theme defines that value. The dark theme defines `#9ca8bf`.
39
+ - `--jo-color-surface-dark` is a dark surface in both themes (`#13203a` light, `#0b1220` dark), alongside the theme's own `--jo-color-surface` and `--jo-color-surface-alt`.
40
+ - `--jo-color-scrim` and `--jo-color-on-scrim` paint overlays and the Button `overlay` variant.
41
+ - `--jo-radius-sm` is `6px`. `--jo-radius-control` is `12px`. `--jo-radius-card` is `16px`.
42
+
43
+ ## One-line import
44
+
45
+ Load the stylesheet once at the application root:
46
+
47
+ ```ts
48
+ import '@net-advantage/jo-ui-theme/style.css';
49
+ ```
50
+
51
+ That import defines the tokens for `:root` (light) and `.theme-dark`, and registers Inter 400, 500, 600, 700, and 800 plus Caveat 600 with `font-display: swap`. Do not load these faces from Google Fonts.
52
+
53
+ Inter and Caveat are licensed under the SIL Open Font License. The license texts ship in `licenses/OFL-Inter.txt` and `licenses/OFL-Caveat.txt`.
54
+
55
+ ## Publish footprint
56
+
57
+ This package publishes `dist`, `README.md`, and `licenses`.
@@ -0,0 +1,3 @@
1
+ import type { ThemeProps } from './jo-ui-theme.types';
2
+ import './jo-ui-theme.css';
3
+ export declare function Theme(props: ThemeProps): import("react").JSX.Element;
package/dist/index.cjs ADDED
@@ -0,0 +1,6 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);let t=require("react");var n=`#667085`,r=[`--jo-color-text`,`--jo-color-text-muted`,`--jo-color-surface`,`--jo-color-surface-alt`,`--jo-color-surface-dark`,`--jo-color-border`,`--jo-color-accent`,`--jo-color-accent-contrast`,`--jo-color-focus`,`--jo-color-danger`,`--jo-color-muted`,`--jo-color-primary`,`--jo-color-scrim`,`--jo-color-on-scrim`],i=[`--jo-radius-sm`,`--jo-radius-control`,`--jo-radius-card`],a=[400,500,600,700,800];function o(e){return e===`dark`?`dark`:`light`}function s(e,t){return[`jo-ui-theme`,e===`dark`?`theme-dark`:`theme-light`,t??``].filter(Boolean).join(` `)}function c(e){let n=o(e.theme);return(0,t.useMemo)(()=>({theme:n,className:s(n,e.className),children:e.children}),[e.children,e.className,n])}var l=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),u=e((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===k?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`;case O:return`ViewTransition`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=A.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(j.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){P||(P=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,"key",{get:n,configurable:!0})}function l(){var e=t(this.type);return F[e]||(F[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,"ref",{enumerable:!1,value:null}):Object.defineProperty(e,"ref",{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0){if(o){if(M(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`)}else f(p)}if(j.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,R[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
2
+ let props = %s;
3
+ <%s {...props} />
4
+ React keys must be passed directly to JSX without using spread:
5
+ let props = %s;
6
+ <%s key={someKey} {...props} />`,o,p,m,p),R[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require("react"),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),D=Symbol.for(`react.activity`),O=Symbol.for(`react.view_transition`),k=Symbol.for(`react.client.reference`),A=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,j=Object.prototype.hasOwnProperty,M=Array.isArray,N=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var P,F={},I=m.react_stack_bottom_frame.bind(m,o)(),L=N(i(o)),R={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>A.recentlyCreatedOwnerStacks++;if(r){var a=Error.stackTraceLimit;Error.stackTraceLimit=10;var o=Error(`react-stack-top-frame`);Error.stackTraceLimit=a}else o=I;return d(e,t,n,!1,o,r?N(i(e)):L)},e.jsxs=function(e,t,n){var r=1e4>A.recentlyCreatedOwnerStacks++;if(r){var a=Error.stackTraceLimit;Error.stackTraceLimit=10;var o=Error(`react-stack-top-frame`);Error.stackTraceLimit=a}else o=I;return d(e,t,n,!0,o,r?N(i(e)):L)}})()})),d=e(((e,t)=>{t.exports=process.env.NODE_ENV===`production`?l():u()}))();function f(e){let t=c(e);return(0,d.jsx)(`div`,{className:t.className,"data-theme":t.theme,children:t.children})}exports.JO_COLOR_TOKENS=r,exports.JO_FONT_WEIGHTS=a,exports.JO_RADIUS_TOKENS=i,exports.TEXT_MUTED_FALLBACK=n,exports.Theme=f;
@@ -0,0 +1,3 @@
1
+ export { Theme } from './Theme';
2
+ export { JO_COLOR_TOKENS, JO_FONT_WEIGHTS, JO_RADIUS_TOKENS, TEXT_MUTED_FALLBACK, } from './jo-ui-theme.model';
3
+ export type { ThemeName, ThemeProps, ThemeViewModel } from './jo-ui-theme.types';
package/dist/index.js ADDED
@@ -0,0 +1,260 @@
1
+ import "./jo-ui-theme.css";
2
+ import { useMemo as e } from "react";
3
+ //#region \0rolldown/runtime.js
4
+ var t = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), n = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
5
+ if (typeof require < "u") return require.apply(this, arguments);
6
+ throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
7
+ }), r = "#667085", i = [
8
+ "--jo-color-text",
9
+ "--jo-color-text-muted",
10
+ "--jo-color-surface",
11
+ "--jo-color-surface-alt",
12
+ "--jo-color-surface-dark",
13
+ "--jo-color-border",
14
+ "--jo-color-accent",
15
+ "--jo-color-accent-contrast",
16
+ "--jo-color-focus",
17
+ "--jo-color-danger",
18
+ "--jo-color-muted",
19
+ "--jo-color-primary",
20
+ "--jo-color-scrim",
21
+ "--jo-color-on-scrim"
22
+ ], a = [
23
+ "--jo-radius-sm",
24
+ "--jo-radius-control",
25
+ "--jo-radius-card"
26
+ ], o = [
27
+ 400,
28
+ 500,
29
+ 600,
30
+ 700,
31
+ 800
32
+ ];
33
+ function s(e) {
34
+ return e === "dark" ? "dark" : "light";
35
+ }
36
+ function c(e, t) {
37
+ return [
38
+ "jo-ui-theme",
39
+ e === "dark" ? "theme-dark" : "theme-light",
40
+ t ?? ""
41
+ ].filter(Boolean).join(" ");
42
+ }
43
+ //#endregion
44
+ //#region src/jo-ui-theme.view-model.ts
45
+ function l(t) {
46
+ let n = s(t.theme);
47
+ return e(() => ({
48
+ theme: n,
49
+ className: c(n, t.className),
50
+ children: t.children
51
+ }), [
52
+ t.children,
53
+ t.className,
54
+ n
55
+ ]);
56
+ }
57
+ //#endregion
58
+ //#region ../../node_modules/.pnpm/react@19.3.0/node_modules/react/cjs/react-jsx-runtime.production.js
59
+ var u = /* @__PURE__ */ t(((e) => {
60
+ var t = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
61
+ function r(e, n, r) {
62
+ var i = null;
63
+ if (r !== void 0 && (i = "" + r), n.key !== void 0 && (i = "" + n.key), "key" in n) for (var a in r = {}, n) a !== "key" && (r[a] = n[a]);
64
+ else r = n;
65
+ return n = r.ref, {
66
+ $$typeof: t,
67
+ type: e,
68
+ key: i,
69
+ ref: n === void 0 ? null : n,
70
+ props: r
71
+ };
72
+ }
73
+ e.Fragment = n, e.jsx = r, e.jsxs = r;
74
+ })), d = /* @__PURE__ */ t(((e) => {
75
+ process.env.NODE_ENV !== "production" && (function() {
76
+ function t(e) {
77
+ if (e == null) return null;
78
+ if (typeof e == "function") return e.$$typeof === A ? null : e.displayName || e.name || null;
79
+ if (typeof e == "string") return e;
80
+ switch (e) {
81
+ case v: return "Fragment";
82
+ case b: return "Profiler";
83
+ case y: return "StrictMode";
84
+ case w: return "Suspense";
85
+ case T: return "SuspenseList";
86
+ case O: return "Activity";
87
+ case k: return "ViewTransition";
88
+ }
89
+ if (typeof e == "object") switch (typeof e.tag == "number" && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), e.$$typeof) {
90
+ case _: return "Portal";
91
+ case S: return e.displayName || "Context";
92
+ case x: return (e._context.displayName || "Context") + ".Consumer";
93
+ case C:
94
+ var n = e.render;
95
+ return e = e.displayName, e ||= (e = n.displayName || n.name || "", e === "" ? "ForwardRef" : "ForwardRef(" + e + ")"), e;
96
+ case E: return n = e.displayName || null, n === null ? t(e.type) || "Memo" : n;
97
+ case D:
98
+ n = e._payload, e = e._init;
99
+ try {
100
+ return t(e(n));
101
+ } catch {}
102
+ }
103
+ return null;
104
+ }
105
+ function r(e) {
106
+ return "" + e;
107
+ }
108
+ function i(e) {
109
+ try {
110
+ r(e);
111
+ var t = !1;
112
+ } catch {
113
+ t = !0;
114
+ }
115
+ if (t) {
116
+ t = console;
117
+ var n = t.error, i = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
118
+ return n.call(t, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", i), r(e);
119
+ }
120
+ }
121
+ function a(e) {
122
+ if (e === v) return "<>";
123
+ if (typeof e == "object" && e && e.$$typeof === D) return "<...>";
124
+ try {
125
+ var n = t(e);
126
+ return n ? "<" + n + ">" : "<...>";
127
+ } catch {
128
+ return "<...>";
129
+ }
130
+ }
131
+ function o() {
132
+ var e = j.A;
133
+ return e === null ? null : e.getOwner();
134
+ }
135
+ function s() {
136
+ return Error("react-stack-top-frame");
137
+ }
138
+ function c(e) {
139
+ if (M.call(e, "key")) {
140
+ var t = Object.getOwnPropertyDescriptor(e, "key").get;
141
+ if (t && t.isReactWarning) return !1;
142
+ }
143
+ return e.key !== void 0;
144
+ }
145
+ function l(e, t) {
146
+ function n() {
147
+ F || (F = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", t));
148
+ }
149
+ n.isReactWarning = !0, Object.defineProperty(e, "key", {
150
+ get: n,
151
+ configurable: !0
152
+ });
153
+ }
154
+ function u() {
155
+ var e = t(this.type);
156
+ return I[e] || (I[e] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")), e = this.props.ref, e === void 0 ? null : e;
157
+ }
158
+ function d(e, t, n, r, i, a) {
159
+ var o = n.ref;
160
+ return e = {
161
+ $$typeof: g,
162
+ type: e,
163
+ key: t,
164
+ props: n,
165
+ _owner: r
166
+ }, (o === void 0 ? null : o) === null ? Object.defineProperty(e, "ref", {
167
+ enumerable: !1,
168
+ value: null
169
+ }) : Object.defineProperty(e, "ref", {
170
+ enumerable: !1,
171
+ get: u
172
+ }), e._store = {}, Object.defineProperty(e._store, "validated", {
173
+ configurable: !1,
174
+ enumerable: !1,
175
+ writable: !0,
176
+ value: 0
177
+ }), Object.defineProperty(e, "_debugInfo", {
178
+ configurable: !1,
179
+ enumerable: !1,
180
+ writable: !0,
181
+ value: null
182
+ }), Object.defineProperty(e, "_debugStack", {
183
+ configurable: !1,
184
+ enumerable: !1,
185
+ writable: !0,
186
+ value: i
187
+ }), Object.defineProperty(e, "_debugTask", {
188
+ configurable: !1,
189
+ enumerable: !1,
190
+ writable: !0,
191
+ value: a
192
+ }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
193
+ }
194
+ function f(e, n, r, a, s, u) {
195
+ var f = n.children;
196
+ if (f !== void 0) {
197
+ if (a) {
198
+ if (N(f)) {
199
+ for (a = 0; a < f.length; a++) p(f[a]);
200
+ Object.freeze && Object.freeze(f);
201
+ } else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
202
+ } else p(f);
203
+ }
204
+ if (M.call(n, "key")) {
205
+ f = t(e);
206
+ var m = Object.keys(n).filter(function(e) {
207
+ return e !== "key";
208
+ });
209
+ a = 0 < m.length ? "{key: someKey, " + m.join(": ..., ") + ": ...}" : "{key: someKey}", z[f + a] || (m = 0 < m.length ? "{" + m.join(": ..., ") + ": ...}" : "{}", console.error("A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />", a, f, m, f), z[f + a] = !0);
210
+ }
211
+ if (f = null, r !== void 0 && (i(r), f = "" + r), c(n) && (i(n.key), f = "" + n.key), "key" in n) for (var h in r = {}, n) h !== "key" && (r[h] = n[h]);
212
+ else r = n;
213
+ return f && l(r, typeof e == "function" ? e.displayName || e.name || "Unknown" : e), d(e, f, r, o(), s, u);
214
+ }
215
+ function p(e) {
216
+ m(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e && e.$$typeof === D && (e._payload.status === "fulfilled" ? m(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
217
+ }
218
+ function m(e) {
219
+ return typeof e == "object" && !!e && e.$$typeof === g;
220
+ }
221
+ var h = n("react"), g = Symbol.for("react.transitional.element"), _ = Symbol.for("react.portal"), v = Symbol.for("react.fragment"), y = Symbol.for("react.strict_mode"), b = Symbol.for("react.profiler"), x = Symbol.for("react.consumer"), S = Symbol.for("react.context"), C = Symbol.for("react.forward_ref"), w = Symbol.for("react.suspense"), T = Symbol.for("react.suspense_list"), E = Symbol.for("react.memo"), D = Symbol.for("react.lazy"), O = Symbol.for("react.activity"), k = Symbol.for("react.view_transition"), A = Symbol.for("react.client.reference"), j = h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, M = Object.prototype.hasOwnProperty, N = Array.isArray, P = console.createTask ? console.createTask : function() {
222
+ return null;
223
+ };
224
+ h = { react_stack_bottom_frame: function(e) {
225
+ return e();
226
+ } };
227
+ var F, I = {}, L = h.react_stack_bottom_frame.bind(h, s)(), R = P(a(s)), z = {};
228
+ e.Fragment = v, e.jsx = function(e, t, n) {
229
+ var r = 1e4 > j.recentlyCreatedOwnerStacks++;
230
+ if (r) {
231
+ var i = Error.stackTraceLimit;
232
+ Error.stackTraceLimit = 10;
233
+ var o = Error("react-stack-top-frame");
234
+ Error.stackTraceLimit = i;
235
+ } else o = L;
236
+ return f(e, t, n, !1, o, r ? P(a(e)) : R);
237
+ }, e.jsxs = function(e, t, n) {
238
+ var r = 1e4 > j.recentlyCreatedOwnerStacks++;
239
+ if (r) {
240
+ var i = Error.stackTraceLimit;
241
+ Error.stackTraceLimit = 10;
242
+ var o = Error("react-stack-top-frame");
243
+ Error.stackTraceLimit = i;
244
+ } else o = L;
245
+ return f(e, t, n, !0, o, r ? P(a(e)) : R);
246
+ };
247
+ })();
248
+ })), f = (/* @__PURE__ */ t(((e, t) => {
249
+ t.exports = process.env.NODE_ENV === "production" ? u() : d();
250
+ })))();
251
+ function p(e) {
252
+ let t = l(e);
253
+ return /* @__PURE__ */ (0, f.jsx)("div", {
254
+ className: t.className,
255
+ "data-theme": t.theme,
256
+ children: t.children
257
+ });
258
+ }
259
+ //#endregion
260
+ export { i as JO_COLOR_TOKENS, o as JO_FONT_WEIGHTS, a as JO_RADIUS_TOKENS, r as TEXT_MUTED_FALLBACK, p as Theme };