@jogak/ui 0.1.0-alpha.3 → 0.1.0-alpha.5

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/index.mjs CHANGED
@@ -1,1217 +1,902 @@
1
- import { jsxs as c, jsx as n } from "react/jsx-runtime";
2
- import { useState as x, useEffect as v, useRef as V, useMemo as w, useCallback as R } from "react";
3
- import { defaultActionChannel as z, ComponentRegistry as U, defaultRegistry as F } from "@jogak/core";
4
- import { useRegistryMeta as _, useEntry as G, reactAdapter as j, JogakProvider as T, useRegistry as q } from "@jogak/react";
5
- import { themes as L, Highlight as Q } from "prism-react-renderer";
6
- function Y({
7
- selectedEntryId: e,
8
- selectedJogakName: t,
9
- onSelect: o
1
+ import { jsxs as j, jsx as e } from "react/jsx-runtime";
2
+ import { useState as f, useEffect as w, useRef as H, useMemo as y, useCallback as C } from "react";
3
+ import { defaultActionChannel as S, ComponentRegistry as I, defaultRegistry as V } from "@jogak/core";
4
+ import { useRegistryMeta as q, useEntry as Q, reactAdapter as A, JogakProvider as X, useRegistry as Y } from "@jogak/react";
5
+ import { themes as B, Highlight as Z } from "prism-react-renderer";
6
+ function z(o) {
7
+ var a, r, t = "";
8
+ if (typeof o == "string" || typeof o == "number") t += o;
9
+ else if (typeof o == "object") if (Array.isArray(o)) {
10
+ var g = o.length;
11
+ for (a = 0; a < g; a++) o[a] && (r = z(o[a])) && (t && (t += " "), t += r);
12
+ } else for (r in o) o[r] && (t && (t += " "), t += r);
13
+ return t;
14
+ }
15
+ function h() {
16
+ for (var o, a, r = 0, t = "", g = arguments.length; r < g; r++) (o = arguments[r]) && (a = z(o)) && (t && (t += " "), t += a);
17
+ return t;
18
+ }
19
+ function K({
20
+ selectedEntryId: o,
21
+ selectedJogakName: a,
22
+ onSelect: r
10
23
  }) {
11
- const [i, d] = x(""), { metaTree: r, searchMeta: s } = _(), l = i.trim().length > 0 ? s(i) : null;
12
- return /* @__PURE__ */ c(
24
+ const [t, g] = f(""), { metaTree: n, searchMeta: k } = q(), s = t.trim().length > 0 ? k(t) : null;
25
+ return /* @__PURE__ */ j(
13
26
  "aside",
14
27
  {
15
28
  "data-testid": "sidebar",
16
- style: {
17
- borderRight: "1px solid #e5e7eb",
18
- height: "100%",
19
- overflow: "auto",
20
- display: "flex",
21
- flexDirection: "column"
22
- },
29
+ className: "jogak:flex jogak:flex-col jogak:h-full jogak:overflow-auto jogak:border-r jogak:border-[var(--jogak-color-border)]",
23
30
  children: [
24
- /* @__PURE__ */ n("div", { style: { padding: "12px", borderBottom: "1px solid #e5e7eb" }, children: /* @__PURE__ */ n(
31
+ /* @__PURE__ */ e("div", { className: "jogak:p-3 jogak:border-b jogak:border-[var(--jogak-color-border)]", children: /* @__PURE__ */ e(
25
32
  "input",
26
33
  {
27
34
  type: "search",
28
35
  placeholder: "Search components...",
29
- value: i,
30
- onChange: (a) => {
31
- d(a.target.value);
32
- },
33
- style: {
34
- width: "100%",
35
- padding: "6px 8px",
36
- border: "1px solid #d1d5db",
37
- borderRadius: 4
36
+ value: t,
37
+ onChange: (l) => {
38
+ g(l.target.value);
38
39
  },
40
+ className: "jogak:w-full jogak:px-2 jogak:py-1.5 jogak:border jogak:border-[var(--jogak-color-border-strong)] jogak:rounded-[var(--jogak-radius-md)]",
39
41
  "aria-label": "Search components"
40
42
  }
41
43
  ) }),
42
- /* @__PURE__ */ n("nav", { style: { flex: 1, overflow: "auto", padding: "8px 0" }, children: l !== null ? /* @__PURE__ */ n(
43
- X,
44
+ /* @__PURE__ */ e("nav", { className: "jogak:flex-1 jogak:overflow-auto jogak:py-2", children: s !== null ? /* @__PURE__ */ e(
45
+ T,
44
46
  {
45
- metas: l,
46
- selectedEntryId: e,
47
- selectedJogakName: t,
48
- onSelect: o
47
+ metas: s,
48
+ selectedEntryId: o,
49
+ selectedJogakName: a,
50
+ onSelect: r
49
51
  }
50
- ) : /* @__PURE__ */ n(
51
- H,
52
+ ) : /* @__PURE__ */ e(
53
+ D,
52
54
  {
53
- node: r,
54
- selectedEntryId: e,
55
- selectedJogakName: t,
56
- onSelect: o
55
+ node: n,
56
+ selectedEntryId: o,
57
+ selectedJogakName: a,
58
+ onSelect: r
57
59
  }
58
60
  ) })
59
61
  ]
60
62
  }
61
63
  );
62
64
  }
63
- function X({
64
- metas: e,
65
- selectedEntryId: t,
66
- selectedJogakName: o,
67
- onSelect: i
65
+ function T({
66
+ metas: o,
67
+ selectedEntryId: a,
68
+ selectedJogakName: r,
69
+ onSelect: t
68
70
  }) {
69
- return e.length === 0 ? /* @__PURE__ */ n("p", { style: { padding: "0 12px", color: "#9ca3af", fontSize: 13 }, children: "No results" }) : /* @__PURE__ */ n("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: e.map((d) => /* @__PURE__ */ n("li", { children: /* @__PURE__ */ n(
70
- D,
71
+ return o.length === 0 ? /* @__PURE__ */ e("p", { className: "jogak:px-3 jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px]", children: "No results" }) : /* @__PURE__ */ e("ul", { className: "jogak:list-none jogak:m-0 jogak:p-0", children: o.map((g) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
72
+ F,
71
73
  {
72
- meta: d,
73
- selectedEntryId: t,
74
- selectedJogakName: o,
75
- onSelect: i,
74
+ meta: g,
75
+ selectedEntryId: a,
76
+ selectedJogakName: r,
77
+ onSelect: t,
76
78
  indent: 0
77
79
  }
78
- ) }, d.id)) });
80
+ ) }, g.id)) });
79
81
  }
80
- function H({
81
- node: e,
82
- selectedEntryId: t,
83
- selectedJogakName: o,
84
- onSelect: i,
85
- depth: d = 0
82
+ function D({
83
+ node: o,
84
+ selectedEntryId: a,
85
+ selectedJogakName: r,
86
+ onSelect: t,
87
+ depth: g = 0
86
88
  }) {
87
- return /* @__PURE__ */ n(
89
+ return /* @__PURE__ */ e(
88
90
  "ul",
89
91
  {
90
- style: {
91
- listStyle: "none",
92
- margin: 0,
93
- padding: `0 0 0 ${d * 12}px`
94
- },
95
- children: Object.entries(e).map(([r, s]) => /* @__PURE__ */ n("li", { children: "id" in s ? /* @__PURE__ */ n(
96
- D,
92
+ className: "jogak:list-none jogak:m-0 jogak:pr-0 jogak:py-0 jogak:pl-[var(--jogak-tree-pl)]",
93
+ style: { "--jogak-tree-pl": `${g * 12}px` },
94
+ children: Object.entries(o).map(([n, k]) => /* @__PURE__ */ e("li", { children: "id" in k ? /* @__PURE__ */ e(
95
+ F,
97
96
  {
98
- meta: s,
99
- selectedEntryId: t,
100
- selectedJogakName: o,
101
- onSelect: i,
97
+ meta: k,
98
+ selectedEntryId: a,
99
+ selectedJogakName: r,
100
+ onSelect: t,
102
101
  indent: 0
103
102
  }
104
- ) : /* @__PURE__ */ n(
105
- Z,
103
+ ) : /* @__PURE__ */ e(
104
+ oo,
106
105
  {
107
- label: r,
108
- node: s,
109
- selectedEntryId: t,
110
- selectedJogakName: o,
111
- onSelect: i,
112
- depth: d + 1
106
+ label: n,
107
+ node: k,
108
+ selectedEntryId: a,
109
+ selectedJogakName: r,
110
+ onSelect: t,
111
+ depth: g + 1
113
112
  }
114
- ) }, r))
113
+ ) }, n))
115
114
  }
116
115
  );
117
116
  }
118
- function Z({
119
- label: e,
120
- node: t,
121
- selectedEntryId: o,
122
- selectedJogakName: i,
123
- onSelect: d,
124
- depth: r
117
+ function oo({
118
+ label: o,
119
+ node: a,
120
+ selectedEntryId: r,
121
+ selectedJogakName: t,
122
+ onSelect: g,
123
+ depth: n
125
124
  }) {
126
- const [s, l] = x(!0);
127
- return /* @__PURE__ */ c("div", { children: [
128
- /* @__PURE__ */ c(
125
+ const [k, s] = f(!0);
126
+ return /* @__PURE__ */ j("div", { children: [
127
+ /* @__PURE__ */ j(
129
128
  "button",
130
129
  {
131
130
  type: "button",
132
131
  onClick: () => {
133
- l((a) => !a);
134
- },
135
- style: {
136
- display: "flex",
137
- alignItems: "center",
138
- gap: 4,
139
- width: "100%",
140
- padding: "4px 12px",
141
- background: "none",
142
- border: "none",
143
- cursor: "pointer",
144
- fontSize: 12,
145
- fontWeight: 600,
146
- color: "#6b7280",
147
- textTransform: "uppercase",
148
- letterSpacing: "0.05em"
132
+ s((l) => !l);
149
133
  },
150
- "aria-expanded": s,
134
+ className: "jogak:flex jogak:items-center jogak:gap-1 jogak:w-full jogak:px-3 jogak:py-1 jogak:bg-transparent jogak:border-none jogak:cursor-pointer jogak:text-[12px] jogak:font-semibold jogak:text-[var(--jogak-color-fg-muted)] jogak:uppercase jogak:tracking-wider",
135
+ "aria-expanded": k,
151
136
  children: [
152
- /* @__PURE__ */ n("span", { children: s ? "▾" : "▸" }),
153
- e
137
+ /* @__PURE__ */ e("span", { children: k ? "▾" : "▸" }),
138
+ o
154
139
  ]
155
140
  }
156
141
  ),
157
- s && /* @__PURE__ */ n(
158
- H,
142
+ k && /* @__PURE__ */ e(
143
+ D,
159
144
  {
160
- node: t,
161
- selectedEntryId: o,
162
- selectedJogakName: i,
163
- onSelect: d,
164
- depth: r
145
+ node: a,
146
+ selectedEntryId: r,
147
+ selectedJogakName: t,
148
+ onSelect: g,
149
+ depth: n
165
150
  }
166
151
  )
167
152
  ] });
168
153
  }
169
- function D({
170
- meta: e,
171
- selectedEntryId: t,
172
- selectedJogakName: o,
173
- onSelect: i,
174
- indent: d
154
+ function F({
155
+ meta: o,
156
+ selectedEntryId: a,
157
+ selectedJogakName: r,
158
+ onSelect: t,
159
+ indent: g
175
160
  }) {
176
- const r = e.id === t, [s, l] = x(r);
177
- v(() => {
178
- r && l(!0);
179
- }, [r]);
180
- const a = e.title.split("/").pop() ?? e.title, m = 16 + d * 12;
181
- return /* @__PURE__ */ c("div", { children: [
182
- /* @__PURE__ */ c(
161
+ const n = o.id === a, [k, s] = f(n);
162
+ w(() => {
163
+ n && s(!0);
164
+ }, [n]);
165
+ const l = o.title.split("/").pop() ?? o.title, b = 16 + g * 12;
166
+ return /* @__PURE__ */ j("div", { children: [
167
+ /* @__PURE__ */ j(
183
168
  "button",
184
169
  {
185
170
  type: "button",
186
171
  onClick: () => {
187
- if (r)
188
- l((p) => !p);
172
+ if (n)
173
+ s((i) => !i);
189
174
  else {
190
- l(!0);
191
- const p = e.jogakNames[0];
192
- p !== void 0 && i(e.id, p);
175
+ s(!0);
176
+ const i = o.jogakNames[0];
177
+ i !== void 0 && t(o.id, i);
193
178
  }
194
179
  },
195
- style: {
196
- display: "flex",
197
- alignItems: "center",
198
- gap: 6,
199
- width: "100%",
200
- padding: `5px 12px 5px ${m}px`,
201
- background: r ? "#eff6ff" : "none",
202
- border: "none",
203
- cursor: "pointer",
204
- fontSize: 13,
205
- color: r ? "#2563eb" : "#374151",
206
- fontWeight: r ? 500 : 400,
207
- textAlign: "left"
208
- },
209
- "aria-expanded": s,
180
+ className: h(
181
+ "jogak:flex jogak:items-center jogak:gap-1.5 jogak:w-full jogak:pr-3 jogak:py-[5px]",
182
+ "jogak:pl-[var(--jogak-entry-pl)]",
183
+ "jogak:border-none jogak:cursor-pointer jogak:text-left jogak:text-[13px]",
184
+ n ? "jogak:bg-[var(--jogak-color-accent-bg)] jogak:text-[var(--jogak-color-accent)] jogak:font-medium" : "jogak:bg-transparent jogak:text-[var(--jogak-color-fg)] jogak:font-normal"
185
+ ),
186
+ style: { "--jogak-entry-pl": `${b}px` },
187
+ "aria-expanded": k,
210
188
  children: [
211
- /* @__PURE__ */ n("span", { style: { fontSize: 10, flexShrink: 0, lineHeight: 1 }, children: s ? "▾" : "▸" }),
212
- a
189
+ /* @__PURE__ */ e("span", { className: "jogak:text-[10px] jogak:shrink-0 jogak:leading-none", children: k ? "▾" : "▸" }),
190
+ l
213
191
  ]
214
192
  }
215
193
  ),
216
- s && /* @__PURE__ */ n("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: e.jogakNames.map((p) => {
217
- const h = r && p === o;
218
- return /* @__PURE__ */ n("li", { children: /* @__PURE__ */ n(
194
+ k && /* @__PURE__ */ e("ul", { className: "jogak:list-none jogak:m-0 jogak:p-0", children: o.jogakNames.map((i) => {
195
+ const u = n && i === r;
196
+ return /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
219
197
  "button",
220
198
  {
221
199
  type: "button",
222
200
  onClick: () => {
223
- i(e.id, p);
201
+ t(o.id, i);
224
202
  },
225
- style: {
226
- display: "block",
227
- width: "100%",
228
- textAlign: "left",
229
- padding: `4px 12px 4px ${m + 18}px`,
230
- background: h ? "#dbeafe" : "none",
231
- border: "none",
232
- cursor: "pointer",
233
- fontSize: 12,
234
- color: h ? "#1d4ed8" : "#6b7280",
235
- fontWeight: h ? 500 : 400
236
- },
237
- "aria-current": h ? "true" : void 0,
238
- children: p
203
+ className: h(
204
+ "jogak:block jogak:w-full jogak:text-left jogak:pr-3 jogak:py-1",
205
+ "jogak:pl-[var(--jogak-jogak-pl)]",
206
+ "jogak:border-none jogak:cursor-pointer jogak:text-[12px]",
207
+ u ? "jogak:bg-[var(--jogak-color-accent-bg-soft)] jogak:text-[var(--jogak-color-accent-fg)] jogak:font-medium" : "jogak:bg-transparent jogak:text-[var(--jogak-color-fg-muted)] jogak:font-normal"
208
+ ),
209
+ style: { "--jogak-jogak-pl": `${b + 18}px` },
210
+ "aria-current": u ? "true" : void 0,
211
+ children: i
239
212
  }
240
- ) }, p);
213
+ ) }, i);
241
214
  }) })
242
215
  ] });
243
216
  }
244
- function K(e, t) {
245
- const o = t == null ? void 0 : t.control, i = (t == null ? void 0 : t.action) !== void 0 && t.action !== !1, d = (t == null ? void 0 : t.type) === "function" || typeof e == "function";
246
- return i || d ? "action" : o === "boolean" || typeof e == "boolean" ? "boolean" : o === "number" || o === "range" || typeof e == "number" ? "number" : o === "select" || o === "radio" || (t == null ? void 0 : t.options) !== void 0 && t.options.length > 0 ? "select" : o === "text" || o === "color" || typeof e == "string" ? "text" : "json";
217
+ function ao(o, a) {
218
+ const r = a == null ? void 0 : a.control, t = (a == null ? void 0 : a.action) !== void 0 && a.action !== !1, g = (a == null ? void 0 : a.type) === "function" || typeof o == "function";
219
+ return t || g ? "action" : r === "boolean" || typeof o == "boolean" ? "boolean" : r === "number" || r === "range" || typeof o == "number" ? "number" : r === "select" || r === "radio" || (a == null ? void 0 : a.options) !== void 0 && a.options.length > 0 ? "select" : r === "text" || r === "color" || typeof o == "string" ? "text" : "json";
247
220
  }
248
- function ee({ argKey: e, value: t, argType: o, onArgChange: i }) {
249
- switch (K(t, o)) {
221
+ const R = "jogak:px-2 jogak:py-1 jogak:border jogak:border-[var(--jogak-color-border-strong)] jogak:rounded-[var(--jogak-radius-md)] jogak:text-[13px] jogak:w-full jogak:max-w-[280px]", _ = "jogak:px-5 jogak:py-1.5 jogak:text-left jogak:text-[var(--jogak-color-fg-muted)] jogak:font-medium jogak:text-[12px] jogak:border-b jogak:border-[var(--jogak-color-border)]", $ = "jogak:px-5 jogak:py-2 jogak:align-middle jogak:border-b jogak:border-[var(--jogak-color-border-muted)]";
222
+ function eo({ argKey: o, value: a, argType: r, onArgChange: t }) {
223
+ switch (ao(a, r)) {
250
224
  case "boolean":
251
- return /* @__PURE__ */ n(
225
+ return /* @__PURE__ */ e(
252
226
  "input",
253
227
  {
254
228
  type: "checkbox",
255
- checked: t === !0,
256
- onChange: (r) => {
257
- i(e, r.target.checked);
229
+ checked: a === !0,
230
+ onChange: (n) => {
231
+ t(o, n.target.checked);
258
232
  },
259
- style: { cursor: "pointer", width: 16, height: 16, accentColor: "#2563eb" }
233
+ className: "jogak:cursor-pointer jogak:w-4 jogak:h-4 jogak:accent-[var(--jogak-color-accent)]"
260
234
  }
261
235
  );
262
236
  case "number":
263
- return /* @__PURE__ */ n(
237
+ return /* @__PURE__ */ e(
264
238
  "input",
265
239
  {
266
240
  type: "number",
267
- value: typeof t == "number" ? t : "",
268
- onChange: (r) => {
269
- i(e, r.target.valueAsNumber);
241
+ value: typeof a == "number" ? a : "",
242
+ onChange: (n) => {
243
+ t(o, n.target.valueAsNumber);
270
244
  },
271
- style: W
245
+ className: R
272
246
  }
273
247
  );
274
248
  case "select": {
275
- const r = (o == null ? void 0 : o.options) ?? [];
276
- return /* @__PURE__ */ n(
249
+ const n = (r == null ? void 0 : r.options) ?? [];
250
+ return /* @__PURE__ */ e(
277
251
  "select",
278
252
  {
279
- value: String(t ?? ""),
280
- onChange: (s) => {
281
- i(e, s.target.value);
253
+ value: String(a ?? ""),
254
+ onChange: (k) => {
255
+ t(o, k.target.value);
282
256
  },
283
- style: W,
284
- children: r.map((s) => /* @__PURE__ */ n("option", { value: String(s), children: String(s) }, String(s)))
257
+ className: R,
258
+ children: n.map((k) => /* @__PURE__ */ e("option", { value: String(k), children: String(k) }, String(k)))
285
259
  }
286
260
  );
287
261
  }
288
262
  case "text":
289
- return /* @__PURE__ */ n(
263
+ return /* @__PURE__ */ e(
290
264
  "input",
291
265
  {
292
266
  type: "text",
293
- value: typeof t == "string" ? t : String(t ?? ""),
294
- onChange: (r) => {
295
- i(e, r.target.value);
267
+ value: typeof a == "string" ? a : String(a ?? ""),
268
+ onChange: (n) => {
269
+ t(o, n.target.value);
296
270
  },
297
- style: W
271
+ className: R
298
272
  }
299
273
  );
300
274
  case "action":
301
- return /* @__PURE__ */ n(
302
- "span",
303
- {
304
- style: {
305
- display: "inline-block",
306
- padding: "2px 8px",
307
- fontSize: 11,
308
- fontWeight: 600,
309
- color: "#7c3aed",
310
- background: "#f5f3ff",
311
- border: "1px solid #ddd6fe",
312
- borderRadius: 4,
313
- fontFamily: "monospace"
314
- },
315
- children: "(action)"
316
- }
317
- );
275
+ return /* @__PURE__ */ e("span", { className: "jogak:inline-block jogak:px-2 jogak:py-0.5 jogak:text-[11px] jogak:font-semibold jogak:text-[var(--jogak-color-violet)] jogak:bg-[var(--jogak-color-violet-bg)] jogak:border jogak:border-[var(--jogak-color-violet-border)] jogak:rounded-[var(--jogak-radius-md)] jogak:font-[family-name:var(--jogak-font-mono)] jogak:leading-none", children: "(action)" });
318
276
  case "json":
319
- return /* @__PURE__ */ n("code", { style: { fontSize: 12, color: "#6b7280", fontFamily: "monospace" }, children: JSON.stringify(t) });
277
+ return /* @__PURE__ */ e("code", { className: "jogak:text-[12px] jogak:text-[var(--jogak-color-fg-muted)] jogak:font-[family-name:var(--jogak-font-mono)]", children: JSON.stringify(a) });
320
278
  }
321
279
  }
322
- const W = {
323
- padding: "4px 8px",
324
- border: "1px solid #d1d5db",
325
- borderRadius: 4,
326
- fontSize: 13,
327
- width: "100%",
328
- maxWidth: 280
329
- }, A = {
330
- padding: "6px 20px",
331
- textAlign: "left",
332
- color: "#6b7280",
333
- fontWeight: 500,
334
- fontSize: 12,
335
- borderBottom: "1px solid #e5e7eb"
336
- }, B = {
337
- padding: "8px 20px",
338
- verticalAlign: "middle",
339
- borderBottom: "1px solid #f3f4f6"
340
- };
341
- function te({ args: e, argTypes: t, onArgChange: o }) {
342
- const d = Array.from(/* @__PURE__ */ new Set([...Object.keys(e), ...Object.keys(t)])).map((r) => [r, e[r]]);
343
- return /* @__PURE__ */ c("div", { style: { borderTop: "2px solid #e5e7eb" }, children: [
344
- /* @__PURE__ */ n(
345
- "div",
346
- {
347
- style: {
348
- padding: "6px 20px",
349
- fontSize: 11,
350
- fontWeight: 700,
351
- color: "#9ca3af",
352
- textTransform: "uppercase",
353
- letterSpacing: "0.08em",
354
- borderBottom: "1px solid #e5e7eb",
355
- background: "#f9fafb"
356
- },
357
- children: "Controls"
358
- }
359
- ),
360
- d.length === 0 ? /* @__PURE__ */ n("div", { style: { padding: "12px 20px", color: "#9ca3af", fontSize: 13 }, children: "No args defined" }) : /* @__PURE__ */ c("table", { style: { width: "100%", borderCollapse: "collapse", fontSize: 13 }, children: [
361
- /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ c("tr", { children: [
362
- /* @__PURE__ */ n("th", { style: A, children: "Name" }),
363
- /* @__PURE__ */ n("th", { style: A, children: "Control" }),
364
- /* @__PURE__ */ n("th", { style: A, children: "Description" })
280
+ function ro({ args: o, argTypes: a, onArgChange: r }) {
281
+ const g = Array.from(/* @__PURE__ */ new Set([...Object.keys(o), ...Object.keys(a)])).map((n) => [n, o[n]]);
282
+ return /* @__PURE__ */ j("div", { className: "jogak:border-t-2 jogak:border-[var(--jogak-color-border)]", children: [
283
+ /* @__PURE__ */ e("div", { className: "jogak:px-5 jogak:py-1.5 jogak:text-[11px] jogak:font-bold jogak:text-[var(--jogak-color-fg-subtle)] jogak:uppercase jogak:tracking-[0.08em] jogak:border-b jogak:border-[var(--jogak-color-border)] jogak:bg-[var(--jogak-color-bg-subtle)]", children: "Controls" }),
284
+ g.length === 0 ? /* @__PURE__ */ e("div", { className: "jogak:px-5 jogak:py-3 jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px]", children: "No args defined" }) : /* @__PURE__ */ j("table", { className: "jogak:w-full jogak:border-collapse jogak:text-[13px]", children: [
285
+ /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ j("tr", { children: [
286
+ /* @__PURE__ */ e("th", { className: _, children: "Name" }),
287
+ /* @__PURE__ */ e("th", { className: _, children: "Control" }),
288
+ /* @__PURE__ */ e("th", { className: _, children: "Description" })
365
289
  ] }) }),
366
- /* @__PURE__ */ n("tbody", { children: d.map(([r, s]) => {
367
- const l = t[r];
368
- return /* @__PURE__ */ c("tr", { children: [
369
- /* @__PURE__ */ n(
290
+ /* @__PURE__ */ e("tbody", { children: g.map(([n, k]) => {
291
+ const s = a[n];
292
+ return /* @__PURE__ */ j("tr", { children: [
293
+ /* @__PURE__ */ e(
370
294
  "td",
371
295
  {
372
- style: {
373
- ...B,
374
- fontFamily: "monospace",
375
- fontSize: 12,
376
- color: "#374151",
377
- whiteSpace: "nowrap"
378
- },
379
- children: r
296
+ className: h(
297
+ $,
298
+ "jogak:font-[family-name:var(--jogak-font-mono)] jogak:text-[12px] jogak:text-[var(--jogak-color-fg)] jogak:whitespace-nowrap"
299
+ ),
300
+ children: n
380
301
  }
381
302
  ),
382
- /* @__PURE__ */ n("td", { style: B, children: /* @__PURE__ */ n(
383
- ee,
303
+ /* @__PURE__ */ e("td", { className: $, children: /* @__PURE__ */ e(
304
+ eo,
384
305
  {
385
- argKey: r,
386
- value: s,
387
- argType: l,
388
- onArgChange: o
306
+ argKey: n,
307
+ value: k,
308
+ argType: s,
309
+ onArgChange: r
389
310
  }
390
311
  ) }),
391
- /* @__PURE__ */ n("td", { style: { ...B, color: "#9ca3af" }, children: (l == null ? void 0 : l.description) ?? "" })
392
- ] }, r);
312
+ /* @__PURE__ */ e("td", { className: h($, "jogak:text-[var(--jogak-color-fg-subtle)]"), children: (s == null ? void 0 : s.description) ?? "" })
313
+ ] }, n);
393
314
  }) })
394
315
  ] })
395
316
  ] });
396
317
  }
397
- function ne(e) {
398
- if (e.length === 0) return "()";
318
+ function to(o) {
319
+ if (o.length === 0) return "()";
399
320
  try {
400
- return e.map((t) => {
401
- var o;
402
- if (t === null) return "null";
403
- if (t === void 0) return "undefined";
404
- if (typeof t == "function") return "[Function]";
405
- if (typeof t == "object") {
406
- const i = ((o = t.constructor) == null ? void 0 : o.name) ?? "Object";
407
- return i !== "Object" && i !== "Array" ? `[${i}]` : JSON.stringify(t);
321
+ return o.map((a) => {
322
+ var r;
323
+ if (a === null) return "null";
324
+ if (a === void 0) return "undefined";
325
+ if (typeof a == "function") return "[Function]";
326
+ if (typeof a == "object") {
327
+ const t = ((r = a.constructor) == null ? void 0 : r.name) ?? "Object";
328
+ return t !== "Object" && t !== "Array" ? `[${t}]` : JSON.stringify(a);
408
329
  }
409
- return JSON.stringify(t);
330
+ return JSON.stringify(a);
410
331
  }).join(", ");
411
332
  } catch {
412
333
  return "[unserializable]";
413
334
  }
414
335
  }
415
- function oe(e) {
416
- const t = new Date(e), o = t.getHours().toString().padStart(2, "0"), i = t.getMinutes().toString().padStart(2, "0"), d = t.getSeconds().toString().padStart(2, "0"), r = t.getMilliseconds().toString().padStart(3, "0");
417
- return `${o}:${i}:${d}.${r}`;
336
+ function no(o) {
337
+ const a = new Date(o), r = a.getHours().toString().padStart(2, "0"), t = a.getMinutes().toString().padStart(2, "0"), g = a.getSeconds().toString().padStart(2, "0"), n = a.getMilliseconds().toString().padStart(3, "0");
338
+ return `${r}:${t}:${g}.${n}`;
418
339
  }
419
- function re() {
420
- const [e, t] = x(() => z.getLogs());
421
- return v(() => z.subscribe(t), []), /* @__PURE__ */ c("div", { style: { height: "100%", display: "flex", flexDirection: "column" }, children: [
422
- /* @__PURE__ */ c(
423
- "div",
424
- {
425
- style: {
426
- padding: "6px 20px",
427
- fontSize: 11,
428
- fontWeight: 700,
429
- color: "#9ca3af",
430
- textTransform: "uppercase",
431
- letterSpacing: "0.08em",
432
- borderBottom: "1px solid #e5e7eb",
433
- background: "#f9fafb",
434
- display: "flex",
435
- alignItems: "center",
436
- justifyContent: "space-between",
437
- flexShrink: 0
438
- },
439
- children: [
440
- /* @__PURE__ */ c("span", { children: [
441
- "Actions ",
442
- e.length > 0 && `(${e.length.toString()})`
443
- ] }),
444
- /* @__PURE__ */ n(
445
- "button",
446
- {
447
- type: "button",
448
- onClick: () => {
449
- z.clear();
450
- },
451
- disabled: e.length === 0,
452
- style: {
453
- fontSize: 10,
454
- fontWeight: 600,
455
- padding: "2px 8px",
456
- border: "1px solid #d1d5db",
457
- borderRadius: 3,
458
- background: "#fff",
459
- color: e.length === 0 ? "#9ca3af" : "#374151",
460
- cursor: e.length === 0 ? "default" : "pointer",
461
- textTransform: "none",
462
- letterSpacing: 0
463
- },
464
- children: "Clear"
465
- }
466
- )
467
- ]
468
- }
469
- ),
470
- /* @__PURE__ */ n("div", { style: { flex: 1, overflow: "auto" }, children: e.length === 0 ? /* @__PURE__ */ n(
471
- "div",
472
- {
473
- style: {
474
- padding: "12px 20px",
475
- color: "#9ca3af",
476
- fontSize: 13
477
- },
478
- children: "함수 prop이 호출되면 여기에 기록됩니다"
479
- }
480
- ) : /* @__PURE__ */ n("ul", { style: { listStyle: "none", margin: 0, padding: 0, fontFamily: "monospace", fontSize: 12 }, children: e.map((o) => /* @__PURE__ */ c(
340
+ function go() {
341
+ const [o, a] = f(() => S.getLogs());
342
+ w(() => S.subscribe(a), []);
343
+ const r = o.length === 0;
344
+ return /* @__PURE__ */ j("div", { className: "jogak:h-full jogak:flex jogak:flex-col", children: [
345
+ /* @__PURE__ */ j("div", { className: "jogak:px-5 jogak:py-1.5 jogak:text-[11px] jogak:font-bold jogak:text-[var(--jogak-color-fg-subtle)] jogak:uppercase jogak:tracking-[0.08em] jogak:border-b jogak:border-[var(--jogak-color-border)] jogak:bg-[var(--jogak-color-bg-subtle)] jogak:flex jogak:items-center jogak:justify-between jogak:shrink-0", children: [
346
+ /* @__PURE__ */ j("span", { children: [
347
+ "Actions ",
348
+ o.length > 0 && `(${o.length.toString()})`
349
+ ] }),
350
+ /* @__PURE__ */ e(
351
+ "button",
352
+ {
353
+ type: "button",
354
+ onClick: () => {
355
+ S.clear();
356
+ },
357
+ disabled: r,
358
+ className: h(
359
+ "jogak:text-[10px] jogak:font-semibold jogak:px-2 jogak:py-0.5 jogak:border jogak:border-[var(--jogak-color-border-strong)] jogak:rounded-[var(--jogak-radius-sm)] jogak:bg-[var(--jogak-color-bg)] jogak:normal-case jogak:tracking-normal",
360
+ r ? "jogak:text-[var(--jogak-color-fg-subtle)] jogak:cursor-default" : "jogak:text-[var(--jogak-color-fg)] jogak:cursor-pointer"
361
+ ),
362
+ children: "Clear"
363
+ }
364
+ )
365
+ ] }),
366
+ /* @__PURE__ */ e("div", { className: "jogak:flex-1 jogak:overflow-auto", children: r ? /* @__PURE__ */ e("div", { className: "jogak:px-5 jogak:py-3 jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px] jogak:leading-none", children: "함수 prop이 호출되면 여기에 기록됩니다" }) : /* @__PURE__ */ e("ul", { className: "jogak:list-none jogak:m-0 jogak:p-0 jogak:font-[family-name:var(--jogak-font-mono)] jogak:text-[12px]", children: o.map((t) => /* @__PURE__ */ j(
481
367
  "li",
482
368
  {
483
- style: {
484
- display: "flex",
485
- alignItems: "baseline",
486
- gap: 10,
487
- padding: "6px 20px",
488
- borderBottom: "1px solid #f3f4f6"
489
- },
369
+ className: "jogak:flex jogak:items-baseline jogak:gap-[10px] jogak:px-5 jogak:py-1.5 jogak:border-b jogak:border-[var(--jogak-color-border-muted)]",
490
370
  children: [
491
- /* @__PURE__ */ n("span", { style: { color: "#9ca3af", fontSize: 11, minWidth: 92 }, children: oe(o.timestamp) }),
492
- /* @__PURE__ */ n("span", { style: { color: "#7c3aed", fontWeight: 600 }, children: o.name }),
493
- /* @__PURE__ */ c("span", { style: { color: "#374151", wordBreak: "break-all", flex: 1 }, children: [
371
+ /* @__PURE__ */ e("span", { className: "jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[11px] jogak:min-w-[92px]", children: no(t.timestamp) }),
372
+ /* @__PURE__ */ e("span", { className: "jogak:text-[var(--jogak-color-violet)] jogak:font-semibold", children: t.name }),
373
+ /* @__PURE__ */ j("span", { className: "jogak:text-[var(--jogak-color-fg)] jogak:break-all jogak:flex-1", children: [
494
374
  "(",
495
- ne(o.args),
375
+ to(t.args),
496
376
  ")"
497
377
  ] })
498
378
  ]
499
379
  },
500
- o.id
380
+ t.id
501
381
  )) }) })
502
382
  ] });
503
383
  }
504
- const N = {
384
+ const U = {
505
385
  mobile: 375,
506
386
  tablet: 768,
507
387
  desktop: "none"
508
- }, ie = {
388
+ }, so = {
509
389
  mobile: "Mobile",
510
390
  tablet: "Tablet",
511
391
  desktop: "Desktop"
512
- }, M = {
513
- white: { background: "#ffffff" },
514
- dark: { background: "#1f2937" },
392
+ }, O = {
393
+ white: {
394
+ "--jogak-canvas-bg": "#ffffff",
395
+ "--jogak-canvas-bg-image": "none",
396
+ "--jogak-canvas-bg-size": "auto",
397
+ "--jogak-canvas-bg-position": "0 0"
398
+ },
399
+ dark: {
400
+ "--jogak-canvas-bg": "#1f2937",
401
+ "--jogak-canvas-bg-image": "none",
402
+ "--jogak-canvas-bg-size": "auto",
403
+ "--jogak-canvas-bg-position": "0 0"
404
+ },
515
405
  transparent: {
516
- backgroundImage: [
517
- "linear-gradient(45deg, #e2e8f0 25%, transparent 25%)",
518
- "linear-gradient(-45deg, #e2e8f0 25%, transparent 25%)",
519
- "linear-gradient(45deg, transparent 75%, #e2e8f0 75%)",
520
- "linear-gradient(-45deg, transparent 75%, #e2e8f0 75%)"
521
- ].join(", "),
522
- backgroundSize: "16px 16px",
523
- backgroundPosition: "0 0, 0 8px, 8px -8px, -8px 0px",
524
- backgroundColor: "#ffffff"
406
+ "--jogak-canvas-bg": "#ffffff",
407
+ "--jogak-canvas-bg-image": "linear-gradient(45deg, #e2e8f0 25%, transparent 25%), linear-gradient(-45deg, #e2e8f0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e2e8f0 75%), linear-gradient(-45deg, transparent 75%, #e2e8f0 75%)",
408
+ "--jogak-canvas-bg-size": "16px 16px",
409
+ "--jogak-canvas-bg-position": "0 0, 0 8px, 8px -8px, -8px 0px"
525
410
  }
526
- }, I = 320;
527
- function de(e) {
528
- return L[e] ?? L.vsDark;
411
+ }, L = "jogak:bg-[var(--jogak-canvas-bg)] jogak:bg-[image:var(--jogak-canvas-bg-image)] jogak:bg-[length:var(--jogak-canvas-bg-size)] jogak:bg-[position:var(--jogak-canvas-bg-position)]";
412
+ function ko(o) {
413
+ return B[o] ?? B.vsDark;
529
414
  }
530
- function le({
531
- entryId: e,
532
- jogakName: t,
533
- overrideArgs: o,
534
- onArgChange: i,
535
- onReset: d,
536
- codeTheme: r,
537
- onResolveJogak: s
415
+ function lo({
416
+ entryId: o,
417
+ jogakName: a,
418
+ overrideArgs: r,
419
+ onArgChange: t,
420
+ onReset: g,
421
+ codeTheme: n,
422
+ onResolveJogak: k
538
423
  }) {
539
- const l = G(e), [a, m] = x("desktop"), [p, h] = x("white"), [S, b] = x("controls"), y = de(r);
540
- return l.status === "unknown" ? /* @__PURE__ */ c("div", { "data-testid": "preview-not-found", style: { padding: 24, color: "#ef4444" }, children: [
541
- "Entry not found: ",
542
- e
543
- ] }) : l.status === "error" ? /* @__PURE__ */ c(
424
+ const s = Q(o), [l, b] = f("desktop"), [i, u] = f("white"), [v, m] = f("controls"), x = ko(n);
425
+ return s.status === "unknown" ? /* @__PURE__ */ j(
426
+ "div",
427
+ {
428
+ "data-testid": "preview-not-found",
429
+ className: "jogak:p-6 jogak:text-[var(--jogak-color-error)]",
430
+ children: [
431
+ "Entry not found: ",
432
+ o
433
+ ]
434
+ }
435
+ ) : s.status === "error" ? /* @__PURE__ */ j(
544
436
  "div",
545
437
  {
546
438
  "data-testid": "preview-error",
547
- style: {
548
- padding: 24,
549
- color: "#b91c1c",
550
- background: "#fef2f2",
551
- height: "100%",
552
- display: "flex",
553
- flexDirection: "column",
554
- gap: 12,
555
- alignItems: "flex-start"
556
- },
439
+ className: "jogak:p-6 jogak:text-[var(--jogak-color-error-fg)] jogak:bg-[var(--jogak-color-bg-error)] jogak:h-full jogak:flex jogak:flex-col jogak:gap-3 jogak:items-start",
557
440
  children: [
558
- /* @__PURE__ */ c("div", { style: { fontWeight: 600 }, children: [
441
+ /* @__PURE__ */ j("div", { className: "jogak:font-semibold", children: [
559
442
  "Failed to load entry: ",
560
- e
443
+ o
561
444
  ] }),
562
- /* @__PURE__ */ n(
563
- "pre",
564
- {
565
- style: {
566
- margin: 0,
567
- padding: 12,
568
- background: "#fff",
569
- border: "1px solid #fecaca",
570
- borderRadius: 6,
571
- fontSize: 12,
572
- whiteSpace: "pre-wrap",
573
- maxWidth: "100%"
574
- },
575
- children: l.error.message
576
- }
577
- )
445
+ /* @__PURE__ */ e("pre", { className: "jogak:m-0 jogak:p-3 jogak:bg-[var(--jogak-color-bg)] jogak:border jogak:border-[var(--jogak-color-error-border)] jogak:rounded-[var(--jogak-radius-lg)] jogak:text-[12px] jogak:whitespace-pre-wrap jogak:max-w-full", children: s.error.message })
578
446
  ]
579
447
  }
580
- ) : l.status === "loading" ? /* @__PURE__ */ n(
581
- se,
448
+ ) : s.status === "loading" ? /* @__PURE__ */ e(
449
+ jo,
582
450
  {
583
- meta: l.meta,
584
- jogakName: t,
585
- viewport: a,
586
- bgMode: p,
587
- onViewportChange: m,
588
- onBgModeChange: h
451
+ meta: s.meta,
452
+ jogakName: a,
453
+ viewport: l,
454
+ bgMode: i,
455
+ onViewportChange: b,
456
+ onBgModeChange: u
589
457
  }
590
- ) : /* @__PURE__ */ n(
591
- ae,
458
+ ) : /* @__PURE__ */ e(
459
+ io,
592
460
  {
593
- entry: l.entry,
594
- jogakName: t,
595
- overrideArgs: o,
596
- onArgChange: i,
597
- onReset: d,
598
- onResolveJogak: s,
599
- viewport: a,
600
- bgMode: p,
601
- bottomTab: S,
602
- onViewportChange: m,
603
- onBgModeChange: h,
604
- onBottomTabChange: b,
605
- prismTheme: y
461
+ entry: s.entry,
462
+ jogakName: a,
463
+ overrideArgs: r,
464
+ onArgChange: t,
465
+ onReset: g,
466
+ onResolveJogak: k,
467
+ viewport: l,
468
+ bgMode: i,
469
+ bottomTab: v,
470
+ onViewportChange: b,
471
+ onBgModeChange: u,
472
+ onBottomTabChange: m,
473
+ prismTheme: x
606
474
  }
607
475
  );
608
476
  }
609
- function se({
610
- meta: e,
611
- jogakName: t,
612
- viewport: o,
613
- bgMode: i,
614
- onViewportChange: d,
615
- onBgModeChange: r
477
+ function jo({
478
+ meta: o,
479
+ jogakName: a,
480
+ viewport: r,
481
+ bgMode: t,
482
+ onViewportChange: g,
483
+ onBgModeChange: n
616
484
  }) {
617
- const s = t ?? e.jogakNames[0] ?? "...", l = N[o];
618
- return /* @__PURE__ */ c(
485
+ const k = a ?? o.jogakNames[0] ?? "...", s = U[r];
486
+ return /* @__PURE__ */ j(
619
487
  "div",
620
488
  {
621
489
  "data-testid": "preview-loading",
622
- style: { display: "flex", flexDirection: "column", height: "100%" },
490
+ className: "jogak:flex jogak:flex-col jogak:h-full",
623
491
  children: [
624
- /* @__PURE__ */ n(
625
- J,
492
+ /* @__PURE__ */ e(
493
+ W,
626
494
  {
627
- title: e.title,
628
- jogakName: s,
629
- viewport: o,
630
- bgMode: i,
631
- onViewportChange: d,
632
- onBgModeChange: r,
495
+ title: o.title,
496
+ jogakName: k,
497
+ viewport: r,
498
+ bgMode: t,
499
+ onViewportChange: g,
500
+ onBgModeChange: n,
633
501
  showReset: !1,
634
502
  onReset: () => {
635
503
  }
636
504
  }
637
505
  ),
638
- /* @__PURE__ */ n(
506
+ /* @__PURE__ */ e(
639
507
  "div",
640
508
  {
641
- style: {
642
- flex: 1,
643
- minHeight: I,
644
- overflow: "auto",
645
- ...M[i]
646
- },
647
- children: /* @__PURE__ */ n(
509
+ className: `jogak:flex-1 jogak:overflow-auto jogak:min-h-[320px] ${L}`,
510
+ style: O[t],
511
+ children: /* @__PURE__ */ e(
648
512
  "div",
649
513
  {
514
+ className: "jogak:mx-auto jogak:p-6 jogak:max-w-[var(--jogak-canvas-mw)]",
650
515
  style: {
651
- maxWidth: l === "none" ? "100%" : l,
652
- margin: "0 auto",
653
- padding: 24
516
+ "--jogak-canvas-mw": s === "none" ? "100%" : `${s}px`
654
517
  },
655
- children: /* @__PURE__ */ c(
656
- "div",
657
- {
658
- style: {
659
- border: "1px dashed #e5e7eb",
660
- borderRadius: 8,
661
- padding: 16,
662
- minHeight: I - 64,
663
- display: "flex",
664
- alignItems: "center",
665
- justifyContent: "center",
666
- color: "#9ca3af",
667
- fontSize: 13,
668
- background: "linear-gradient(90deg, rgba(229,231,235,0) 0%, rgba(229,231,235,0.45) 50%, rgba(229,231,235,0) 100%)",
669
- backgroundSize: "200% 100%",
670
- animation: "jogakSkeleton 1.4s ease-in-out infinite"
671
- },
672
- children: [
673
- "Loading ",
674
- e.title,
675
- "…"
676
- ]
677
- }
678
- )
518
+ children: /* @__PURE__ */ j("div", { className: "jogak-skeleton-shimmer jogak:border jogak:border-dashed jogak:border-[var(--jogak-color-border)] jogak:rounded-[var(--jogak-radius-xl)] jogak:p-4 jogak:flex jogak:items-center jogak:justify-center jogak:text-[var(--jogak-color-fg-subtle)] jogak:text-[13px] jogak:min-h-[256px]", children: [
519
+ "Loading ",
520
+ o.title,
521
+ "…"
522
+ ] })
679
523
  }
680
524
  )
681
525
  }
682
- ),
683
- /* @__PURE__ */ n("style", { children: "@keyframes jogakSkeleton { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }" })
526
+ )
684
527
  ]
685
528
  }
686
529
  );
687
530
  }
688
- function ae({
689
- entry: e,
690
- jogakName: t,
691
- overrideArgs: o,
692
- onArgChange: i,
693
- onReset: d,
694
- onResolveJogak: r,
695
- viewport: s,
696
- bgMode: l,
697
- bottomTab: a,
698
- onViewportChange: m,
699
- onBgModeChange: p,
700
- onBottomTabChange: h,
701
- prismTheme: S
531
+ function io({
532
+ entry: o,
533
+ jogakName: a,
534
+ overrideArgs: r,
535
+ onArgChange: t,
536
+ onReset: g,
537
+ onResolveJogak: n,
538
+ viewport: k,
539
+ bgMode: s,
540
+ bottomTab: l,
541
+ onViewportChange: b,
542
+ onBgModeChange: i,
543
+ onBottomTabChange: u,
544
+ prismTheme: v
702
545
  }) {
703
- var $;
704
- const b = t ?? (($ = e.jogaks[0]) == null ? void 0 : $.name) ?? null;
705
- if (v(() => {
706
- t === null && b !== null && r !== void 0 && r(e.id, b);
707
- }, [t, b, e.id, r]), b === null)
708
- return /* @__PURE__ */ c("div", { style: { padding: 24, color: "#ef4444" }, children: [
546
+ var J;
547
+ const m = a ?? ((J = o.jogaks[0]) == null ? void 0 : J.name) ?? null;
548
+ if (w(() => {
549
+ a === null && m !== null && n !== void 0 && n(o.id, m);
550
+ }, [a, m, o.id, n]), m === null)
551
+ return /* @__PURE__ */ j("div", { className: "jogak:p-6 jogak:text-[var(--jogak-color-error)]", children: [
709
552
  "Entry has no jogaks: ",
710
- e.id
553
+ o.id
711
554
  ] });
712
- const y = e.jogaks.find((k) => k.name === b);
713
- if (y === void 0)
714
- return /* @__PURE__ */ c("div", { style: { padding: 24, color: "#ef4444" }, children: [
555
+ const x = o.jogaks.find((N) => N.name === m);
556
+ if (x === void 0)
557
+ return /* @__PURE__ */ j("div", { className: "jogak:p-6 jogak:text-[var(--jogak-color-error)]", children: [
715
558
  "Jogak not found: ",
716
- b
559
+ m
717
560
  ] });
718
- const u = { ...y.args ?? {}, ...o }, g = {
719
- ...e.meta.argTypes ?? {},
720
- ...y.argTypes ?? {}
721
- }, P = Object.keys(o).length > 0, O = N[s];
722
- return /* @__PURE__ */ c("div", { style: { display: "flex", flexDirection: "column", height: "100%" }, children: [
723
- /* @__PURE__ */ n(
724
- J,
561
+ const d = { ...x.args ?? {}, ...r }, p = {
562
+ ...o.meta.argTypes ?? {},
563
+ ...x.argTypes ?? {}
564
+ }, G = Object.keys(r).length > 0, E = U[k];
565
+ return /* @__PURE__ */ j("div", { className: "jogak:flex jogak:flex-col jogak:h-full", children: [
566
+ /* @__PURE__ */ e(
567
+ W,
725
568
  {
726
- title: e.title,
727
- jogakName: y.name,
728
- viewport: s,
729
- bgMode: l,
730
- onViewportChange: m,
731
- onBgModeChange: p,
732
- showReset: P,
733
- onReset: d
569
+ title: o.title,
570
+ jogakName: x.name,
571
+ viewport: k,
572
+ bgMode: s,
573
+ onViewportChange: b,
574
+ onBgModeChange: i,
575
+ showReset: G,
576
+ onReset: g
734
577
  }
735
578
  ),
736
- /* @__PURE__ */ n(
579
+ /* @__PURE__ */ e(
737
580
  "div",
738
581
  {
739
- style: {
740
- flex: 1,
741
- minHeight: I,
742
- overflow: "auto",
743
- ...M[l]
744
- },
745
- children: /* @__PURE__ */ n(
582
+ className: `jogak:flex-1 jogak:overflow-auto jogak:min-h-[320px] ${L}`,
583
+ style: O[s],
584
+ children: /* @__PURE__ */ e(
746
585
  "div",
747
586
  {
587
+ "data-jogak-content": !0,
588
+ className: "jogak:mx-auto jogak:p-6 jogak:max-w-[var(--jogak-canvas-mw)]",
748
589
  style: {
749
- maxWidth: O === "none" ? "100%" : O,
750
- margin: "0 auto",
751
- padding: 24
590
+ "--jogak-canvas-mw": E === "none" ? "100%" : `${E}px`
752
591
  },
753
- children: /* @__PURE__ */ n(
754
- ce,
592
+ children: /* @__PURE__ */ e(
593
+ co,
755
594
  {
756
- entry: e,
757
- args: u,
758
- source: e.source,
759
- theme: S
595
+ entry: o,
596
+ args: d,
597
+ source: o.source,
598
+ theme: v
760
599
  },
761
- `${e.id}/${y.name}`
600
+ `${o.id}/${x.name}`
762
601
  )
763
602
  }
764
603
  )
765
604
  }
766
605
  ),
767
- /* @__PURE__ */ c(
606
+ /* @__PURE__ */ j(
768
607
  "div",
769
608
  {
770
- style: {
771
- height: 260,
772
- flexShrink: 0,
773
- display: "flex",
774
- flexDirection: "column",
775
- borderTop: "2px solid #e5e7eb"
776
- },
609
+ "data-testid": "bottom-panel",
610
+ className: "jogak:h-[260px] jogak:shrink-0 jogak:flex jogak:flex-col jogak:border-t-2 jogak:border-[var(--jogak-color-border)]",
777
611
  children: [
778
- /* @__PURE__ */ n(
612
+ /* @__PURE__ */ e(
779
613
  "div",
780
614
  {
781
615
  role: "tablist",
782
- style: {
783
- display: "flex",
784
- gap: 4,
785
- padding: "4px 12px 0",
786
- background: "#fff",
787
- borderBottom: "1px solid #e5e7eb",
788
- flexShrink: 0
789
- },
790
- children: ["controls", "actions"].map((k) => {
791
- const C = a === k;
792
- return /* @__PURE__ */ n(
616
+ className: "jogak:flex jogak:gap-1 jogak:pt-1 jogak:px-3 jogak:pb-0 jogak:bg-[var(--jogak-color-bg)] jogak:border-b jogak:border-[var(--jogak-color-border)] jogak:shrink-0",
617
+ children: ["controls", "actions"].map((N) => {
618
+ const P = l === N;
619
+ return /* @__PURE__ */ e(
793
620
  "button",
794
621
  {
795
622
  type: "button",
796
623
  role: "tab",
797
- "aria-selected": C,
624
+ "aria-selected": P,
798
625
  onClick: () => {
799
- h(k);
626
+ u(N);
800
627
  },
801
- style: {
802
- padding: "6px 14px",
803
- fontSize: 12,
804
- fontWeight: C ? 600 : 500,
805
- color: C ? "#111827" : "#6b7280",
806
- background: "transparent",
807
- border: "none",
808
- borderBottom: C ? "2px solid #2563eb" : "2px solid transparent",
809
- marginBottom: -1,
810
- cursor: "pointer",
811
- textTransform: "capitalize"
812
- },
813
- children: k
628
+ className: h(
629
+ "jogak:px-[14px] jogak:py-[6px] jogak:text-[12px] jogak:bg-transparent jogak:border-x-0 jogak:border-t-0 jogak:border-b-2 jogak:border-solid jogak:-mb-px jogak:cursor-pointer jogak:capitalize",
630
+ P ? "jogak:font-semibold jogak:text-[var(--jogak-color-fg-strong)] jogak:border-[var(--jogak-color-accent)]" : "jogak:font-medium jogak:text-[var(--jogak-color-fg-muted)] jogak:border-transparent"
631
+ ),
632
+ children: N
814
633
  },
815
- k
634
+ N
816
635
  );
817
636
  })
818
637
  }
819
638
  ),
820
- /* @__PURE__ */ n("div", { style: { flex: 1, minHeight: 0, overflow: "auto" }, children: a === "controls" ? /* @__PURE__ */ n(
821
- te,
639
+ /* @__PURE__ */ e("div", { className: "jogak:flex-1 jogak:min-h-0 jogak:overflow-auto", children: l === "controls" ? /* @__PURE__ */ e(
640
+ ro,
822
641
  {
823
- args: u,
824
- argTypes: g,
825
- onArgChange: i
642
+ args: d,
643
+ argTypes: p,
644
+ onArgChange: t
826
645
  }
827
- ) : /* @__PURE__ */ n(re, {}) })
646
+ ) : /* @__PURE__ */ e(go, {}) })
828
647
  ]
829
648
  }
830
649
  )
831
650
  ] });
832
651
  }
833
- function J({
834
- title: e,
835
- jogakName: t,
836
- viewport: o,
837
- bgMode: i,
838
- onViewportChange: d,
839
- onBgModeChange: r,
840
- showReset: s,
841
- onReset: l
652
+ function W({
653
+ title: o,
654
+ jogakName: a,
655
+ viewport: r,
656
+ bgMode: t,
657
+ onViewportChange: g,
658
+ onBgModeChange: n,
659
+ showReset: k,
660
+ onReset: s
842
661
  }) {
843
- return /* @__PURE__ */ c(
844
- "div",
845
- {
846
- style: {
847
- display: "flex",
848
- alignItems: "center",
849
- gap: 10,
850
- padding: "7px 14px",
851
- borderBottom: "1px solid #e5e7eb",
852
- background: "#fff",
853
- flexShrink: 0
662
+ return /* @__PURE__ */ j("div", { className: "jogak:flex jogak:items-center jogak:gap-[10px] jogak:px-[14px] jogak:py-[7px] jogak:border-b jogak:border-[var(--jogak-color-border)] jogak:bg-[var(--jogak-color-bg)] jogak:shrink-0", children: [
663
+ /* @__PURE__ */ j("div", { className: "jogak:flex-1 jogak:text-[13px]", children: [
664
+ /* @__PURE__ */ e("span", { className: "jogak:text-[var(--jogak-color-fg-subtle)]", children: o }),
665
+ /* @__PURE__ */ e("span", { className: "jogak:text-[var(--jogak-color-border-strong)] jogak:mx-1.5 jogak:leading-none", children: "/" }),
666
+ /* @__PURE__ */ e("span", { className: "jogak:text-[var(--jogak-color-fg-strong)] jogak:font-semibold", children: a })
667
+ ] }),
668
+ /* @__PURE__ */ e("div", { className: "jogak:flex jogak:gap-0.5 jogak:bg-[var(--jogak-color-bg-subtle)] jogak:rounded-[var(--jogak-radius-lg)] jogak:p-0.5", children: ["mobile", "tablet", "desktop"].map((l) => /* @__PURE__ */ e(
669
+ "button",
670
+ {
671
+ type: "button",
672
+ onClick: () => {
673
+ g(l);
674
+ },
675
+ "aria-pressed": r === l,
676
+ className: h(
677
+ "jogak:px-[9px] jogak:py-[3px] jogak:text-[12px] jogak:border-none jogak:rounded-[var(--jogak-radius-md)] jogak:cursor-pointer jogak:transition-all jogak:duration-100",
678
+ r === l ? "jogak:bg-[var(--jogak-color-bg-elevated)] jogak:text-[var(--jogak-color-fg-strong)] jogak:font-semibold jogak:shadow-[0_1px_2px_rgba(0,0,0,0.08)]" : "jogak:bg-transparent jogak:text-[var(--jogak-color-fg-muted)] jogak:font-normal jogak:shadow-none"
679
+ ),
680
+ children: so[l]
854
681
  },
855
- children: [
856
- /* @__PURE__ */ c("div", { style: { flex: 1, fontSize: 13 }, children: [
857
- /* @__PURE__ */ n("span", { style: { color: "#9ca3af" }, children: e }),
858
- /* @__PURE__ */ n("span", { style: { color: "#d1d5db", margin: "0 6px" }, children: "/" }),
859
- /* @__PURE__ */ n("span", { style: { color: "#111827", fontWeight: 600 }, children: t })
860
- ] }),
861
- /* @__PURE__ */ n(
862
- "div",
863
- {
864
- style: {
865
- display: "flex",
866
- gap: 2,
867
- background: "#f3f4f6",
868
- borderRadius: 6,
869
- padding: 2
870
- },
871
- children: ["mobile", "tablet", "desktop"].map((a) => /* @__PURE__ */ n(
872
- "button",
873
- {
874
- type: "button",
875
- onClick: () => {
876
- d(a);
877
- },
878
- "aria-pressed": o === a,
879
- style: {
880
- padding: "3px 9px",
881
- fontSize: 12,
882
- border: "none",
883
- borderRadius: 4,
884
- cursor: "pointer",
885
- background: o === a ? "#fff" : "transparent",
886
- color: o === a ? "#111827" : "#6b7280",
887
- fontWeight: o === a ? 600 : 400,
888
- boxShadow: o === a ? "0 1px 2px rgba(0,0,0,0.08)" : "none",
889
- transition: "all 0.1s"
890
- },
891
- children: ie[a]
892
- },
893
- a
894
- ))
895
- }
682
+ l
683
+ )) }),
684
+ /* @__PURE__ */ e("div", { className: "jogak:flex jogak:gap-1 jogak:items-center", children: ["white", "dark", "transparent"].map((l) => /* @__PURE__ */ e(
685
+ "button",
686
+ {
687
+ type: "button",
688
+ onClick: () => {
689
+ n(l);
690
+ },
691
+ "aria-pressed": t === l,
692
+ "aria-label": `${l} background`,
693
+ className: h(
694
+ "jogak:w-5 jogak:h-5 jogak:rounded-[var(--jogak-radius-md)] jogak:border-2 jogak:cursor-pointer jogak:p-0 jogak:shrink-0",
695
+ L,
696
+ t === l ? "jogak:border-[var(--jogak-color-accent)]" : "jogak:border-[var(--jogak-color-border-strong)]"
896
697
  ),
897
- /* @__PURE__ */ n("div", { style: { display: "flex", gap: 4, alignItems: "center" }, children: ["white", "dark", "transparent"].map((a) => /* @__PURE__ */ n(
898
- "button",
899
- {
900
- type: "button",
901
- onClick: () => {
902
- r(a);
903
- },
904
- "aria-pressed": i === a,
905
- "aria-label": `${a} background`,
906
- style: {
907
- width: 20,
908
- height: 20,
909
- borderRadius: 4,
910
- border: i === a ? "2px solid #2563eb" : "2px solid #d1d5db",
911
- cursor: "pointer",
912
- padding: 0,
913
- flexShrink: 0,
914
- ...M[a]
915
- }
916
- },
917
- a
918
- )) }),
919
- s && /* @__PURE__ */ n(
920
- "button",
921
- {
922
- type: "button",
923
- onClick: l,
924
- style: {
925
- padding: "3px 10px",
926
- fontSize: 12,
927
- border: "1px solid #d1d5db",
928
- borderRadius: 4,
929
- background: "#fff",
930
- cursor: "pointer",
931
- color: "#374151"
932
- },
933
- children: "Reset"
934
- }
935
- )
936
- ]
937
- }
938
- );
698
+ style: O[l]
699
+ },
700
+ l
701
+ )) }),
702
+ k && /* @__PURE__ */ e(
703
+ "button",
704
+ {
705
+ type: "button",
706
+ onClick: s,
707
+ className: "jogak:px-[10px] jogak:py-[3px] jogak:text-[12px] jogak:border jogak:border-[var(--jogak-color-border-strong)] jogak:rounded-[var(--jogak-radius-md)] jogak:bg-[var(--jogak-color-bg)] jogak:cursor-pointer jogak:text-[var(--jogak-color-fg)] jogak:leading-none",
708
+ children: "Reset"
709
+ }
710
+ )
711
+ ] });
939
712
  }
940
- function ce({ entry: e, args: t, source: o, theme: i }) {
941
- const d = V(null), [r, s] = x(!1);
942
- return v(() => {
943
- const l = d.current;
944
- if (l !== null)
945
- return j.render(e, t, l), () => {
946
- j.unmount(l);
713
+ function co({ entry: o, args: a, source: r, theme: t }) {
714
+ const g = H(null), [n, k] = f(!1);
715
+ return w(() => {
716
+ const s = g.current;
717
+ if (s !== null)
718
+ return A.render(o, a, s), () => {
719
+ A.unmount(s);
947
720
  };
948
- }, [e]), v(() => {
949
- const l = d.current;
950
- l !== null && j.render(e, t, l);
951
- }, [e, t]), /* @__PURE__ */ c("div", { children: [
952
- /* @__PURE__ */ c("div", { style: { position: "relative" }, children: [
953
- /* @__PURE__ */ n(
721
+ }, [o]), w(() => {
722
+ const s = g.current;
723
+ s !== null && A.render(o, a, s);
724
+ }, [o, a]), /* @__PURE__ */ j("div", { children: [
725
+ /* @__PURE__ */ j("div", { className: "jogak:relative", children: [
726
+ /* @__PURE__ */ e(
954
727
  "div",
955
728
  {
956
- ref: d,
729
+ ref: g,
957
730
  "data-testid": "preview-content",
958
- style: {
959
- border: "1px dashed #e5e7eb",
960
- borderRadius: 8,
961
- padding: 16,
962
- paddingBottom: 36
963
- }
731
+ className: "jogak:border jogak:border-dashed jogak:border-[var(--jogak-color-border)] jogak:rounded-[var(--jogak-radius-xl)] jogak:p-4 jogak:pb-9"
964
732
  }
965
733
  ),
966
- /* @__PURE__ */ n(
734
+ /* @__PURE__ */ e(
967
735
  "button",
968
736
  {
969
737
  type: "button",
970
738
  onClick: () => {
971
- s((l) => !l);
972
- },
973
- "aria-pressed": r,
974
- "aria-label": r ? "Hide source code" : "Show source code",
975
- style: {
976
- position: "absolute",
977
- bottom: 8,
978
- right: 8,
979
- padding: "4px 9px",
980
- fontSize: 11,
981
- fontFamily: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",
982
- fontWeight: 600,
983
- letterSpacing: "0.02em",
984
- background: r ? "#2563eb" : "#1e293b",
985
- color: "#fff",
986
- border: "none",
987
- borderRadius: 5,
988
- cursor: "pointer",
989
- boxShadow: "0 1px 4px rgba(0,0,0,0.2)",
990
- transition: "background 0.15s"
739
+ k((s) => !s);
991
740
  },
741
+ "aria-pressed": n,
742
+ "aria-label": n ? "Hide source code" : "Show source code",
743
+ className: h(
744
+ "jogak:absolute jogak:bottom-2 jogak:right-2 jogak:px-[9px] jogak:py-1",
745
+ "jogak:text-[11px] jogak:font-[family-name:var(--jogak-font-mono)] jogak:font-semibold jogak:tracking-[0.02em]",
746
+ "jogak:text-[var(--jogak-color-bg)] jogak:border-none jogak:rounded-[5px] jogak:cursor-pointer",
747
+ "jogak:shadow-[0_1px_4px_rgba(0,0,0,0.2)] jogak:transition-[background-color] jogak:duration-150 jogak:leading-none",
748
+ n ? "jogak:bg-[var(--jogak-color-accent)]" : "jogak:bg-[#1e293b]"
749
+ ),
992
750
  children: "</>"
993
751
  }
994
752
  )
995
753
  ] }),
996
- r && /* @__PURE__ */ n(
997
- "div",
998
- {
999
- style: {
1000
- marginTop: 8,
1001
- borderRadius: 8,
1002
- overflow: "hidden",
1003
- height: 320,
1004
- boxShadow: "0 0 0 1px rgba(0,0,0,0.08), 0 4px 16px rgba(0,0,0,0.12)"
1005
- },
1006
- children: /* @__PURE__ */ n(pe, { source: o, theme: i })
1007
- }
1008
- )
754
+ n && /* @__PURE__ */ e("div", { className: "jogak:mt-2 jogak:rounded-[var(--jogak-radius-xl)] jogak:overflow-hidden jogak:h-[320px] jogak:shadow-[0_0_0_1px_rgba(0,0,0,0.08),_0_4px_16px_rgba(0,0,0,0.12)]", children: /* @__PURE__ */ e(po, { source: r, theme: t }) })
1009
755
  ] });
1010
756
  }
1011
- function pe({ source: e, theme: t }) {
1012
- const [o, i] = x(!1), d = t.plain.backgroundColor ?? "#1e293b";
1013
- return e === void 0 ? /* @__PURE__ */ n(
757
+ function po({ source: o, theme: a }) {
758
+ const [r, t] = f(!1), g = a.plain.backgroundColor ?? "#1e293b";
759
+ return o === void 0 ? /* @__PURE__ */ e(
1014
760
  "div",
1015
761
  {
1016
- style: {
1017
- height: "100%",
1018
- display: "flex",
1019
- alignItems: "center",
1020
- justifyContent: "center",
1021
- background: d,
1022
- color: "#94a3b8",
1023
- fontSize: 13
1024
- },
762
+ className: "jogak:h-full jogak:flex jogak:items-center jogak:justify-center jogak:bg-[var(--jogak-source-bg)] jogak:text-[#94a3b8] jogak:text-[13px]",
763
+ style: { "--jogak-source-bg": g },
1025
764
  children: "Source not available"
1026
765
  }
1027
- ) : /* @__PURE__ */ c("div", { style: { position: "relative", height: "100%" }, children: [
1028
- /* @__PURE__ */ n(
766
+ ) : /* @__PURE__ */ j("div", { className: "jogak:relative jogak:h-full", children: [
767
+ /* @__PURE__ */ e(
1029
768
  "button",
1030
769
  {
1031
770
  type: "button",
1032
771
  onClick: () => {
1033
- navigator.clipboard.writeText(e).then(() => {
1034
- i(!0), setTimeout(() => {
1035
- i(!1);
772
+ navigator.clipboard.writeText(o).then(() => {
773
+ t(!0), setTimeout(() => {
774
+ t(!1);
1036
775
  }, 2e3);
1037
776
  });
1038
777
  },
1039
- style: {
1040
- position: "absolute",
1041
- top: 10,
1042
- right: 12,
1043
- zIndex: 1,
1044
- padding: "3px 9px",
1045
- fontSize: 11,
1046
- background: "rgba(255,255,255,0.1)",
1047
- color: "#e2e8f0",
1048
- border: "1px solid rgba(255,255,255,0.18)",
1049
- borderRadius: 4,
1050
- cursor: "pointer"
1051
- },
1052
- children: o ? "✓ Copied" : "Copy"
778
+ className: "jogak:absolute jogak:top-[10px] jogak:right-3 jogak:z-[1] jogak:px-[9px] jogak:py-[3px] jogak:text-[11px] jogak:bg-[rgba(255,255,255,0.1)] jogak:text-[#e2e8f0] jogak:border jogak:border-[rgba(255,255,255,0.18)] jogak:rounded-[var(--jogak-radius-md)] jogak:cursor-pointer jogak:leading-none",
779
+ children: r ? "✓ Copied" : "Copy"
1053
780
  }
1054
781
  ),
1055
- /* @__PURE__ */ n(Q, { code: e.trim(), language: "tsx", theme: t, children: ({ style: s, tokens: l, getLineProps: a, getTokenProps: m }) => /* @__PURE__ */ n(
782
+ /* @__PURE__ */ e(Z, { code: o.trim(), language: "tsx", theme: a, children: ({ style: k, tokens: s, getLineProps: l, getTokenProps: b }) => /* @__PURE__ */ e(
1056
783
  "pre",
1057
784
  {
1058
- style: {
1059
- ...s,
1060
- margin: 0,
1061
- padding: "12px 0",
1062
- fontSize: 12.5,
1063
- lineHeight: 1.7,
1064
- fontFamily: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",
1065
- height: "100%",
1066
- boxSizing: "border-box",
1067
- overflow: "auto"
1068
- },
1069
- children: l.map((p, h) => /* @__PURE__ */ c(
785
+ className: "jogak:m-0 jogak:py-3 jogak:px-0 jogak:text-[12.5px] jogak:leading-[1.7] jogak:font-[family-name:var(--jogak-font-mono)] jogak:h-full jogak:box-border jogak:overflow-auto",
786
+ style: k,
787
+ children: s.map((i, u) => /* @__PURE__ */ j(
1070
788
  "div",
1071
789
  {
1072
- ...a({ line: p }),
1073
- style: {
1074
- ...a({ line: p }).style,
1075
- display: "flex",
1076
- paddingRight: 24
1077
- },
790
+ ...l({ line: i }),
791
+ className: "jogak:flex jogak:pr-6",
792
+ style: l({ line: i }).style,
1078
793
  children: [
1079
- /* @__PURE__ */ n(
1080
- "span",
1081
- {
1082
- style: {
1083
- userSelect: "none",
1084
- minWidth: 40,
1085
- paddingLeft: 14,
1086
- paddingRight: 14,
1087
- textAlign: "right",
1088
- color: "rgba(148,163,184,0.45)",
1089
- flexShrink: 0
1090
- },
1091
- children: h + 1
1092
- }
1093
- ),
1094
- /* @__PURE__ */ n("span", { children: p.map((S, b) => /* @__PURE__ */ n("span", { ...m({ token: S }) }, b)) })
794
+ /* @__PURE__ */ e("span", { className: "jogak:select-none jogak:min-w-10 jogak:pl-[14px] jogak:pr-[14px] jogak:text-right jogak:text-[rgba(148,163,184,0.45)] jogak:shrink-0 jogak:leading-[1.7]", children: u + 1 }),
795
+ /* @__PURE__ */ e("span", { children: i.map((v, m) => /* @__PURE__ */ e("span", { ...b({ token: v }) }, m)) })
1095
796
  ]
1096
797
  },
1097
- h
798
+ u
1098
799
  ))
1099
800
  }
1100
801
  ) })
1101
802
  ] });
1102
803
  }
1103
- function E() {
804
+ function M() {
1104
805
  if (typeof window > "u") return null;
1105
- const e = new URLSearchParams(window.location.search), t = e.get("entry");
1106
- if (t === null) return null;
1107
- const o = e.get("jogak");
1108
- return { entryId: t, jogakName: o };
806
+ const o = new URLSearchParams(window.location.search), a = o.get("entry");
807
+ if (a === null) return null;
808
+ const r = o.get("jogak");
809
+ return { entryId: a, jogakName: r };
1109
810
  }
1110
- function fe(e, t) {
1111
- const o = new URLSearchParams();
1112
- o.set("entry", e), o.set("jogak", t), window.history.pushState({}, "", `?${o.toString()}`);
811
+ function uo(o, a) {
812
+ const r = new URLSearchParams();
813
+ r.set("entry", o), r.set("jogak", a), window.history.pushState({}, "", `?${r.toString()}`);
1113
814
  }
1114
- function me({
1115
- entries: e,
1116
- metas: t,
1117
- codeTheme: o = "vsDark"
815
+ function vo({
816
+ entries: o,
817
+ metas: a,
818
+ codeTheme: r = "vsDark"
1118
819
  } = {}) {
1119
- const i = w(() => {
1120
- if (e !== void 0) {
1121
- t !== void 0 && console.warn(
820
+ const t = y(() => {
821
+ if (o !== void 0) {
822
+ a !== void 0 && console.warn(
1122
823
  "[jogak] JogakApp received both `entries` and `metas` — `entries` (eager) takes precedence."
1123
824
  );
1124
- const f = new U();
1125
- for (const u of e) f.register(u);
1126
- return f;
825
+ const c = new I();
826
+ for (const d of o) c.register(d);
827
+ return c;
1127
828
  }
1128
- if (t !== void 0)
1129
- for (const f of t) F.registerMeta(f);
1130
- return F;
1131
- }, [e, t]), d = w(() => E(), []), [r, s] = x(
1132
- (d == null ? void 0 : d.entryId) ?? null
1133
- ), [l, a] = x(
1134
- (d == null ? void 0 : d.jogakName) ?? null
1135
- ), [m, p] = x({});
1136
- v(() => {
1137
- const f = () => {
1138
- const u = E();
1139
- u !== null ? (s(u.entryId), a(u.jogakName), p({})) : (s(null), a(null));
829
+ if (a !== void 0)
830
+ for (const c of a) V.registerMeta(c);
831
+ return V;
832
+ }, [o, a]), g = y(() => M(), []), [n, k] = f(
833
+ (g == null ? void 0 : g.entryId) ?? null
834
+ ), [s, l] = f(
835
+ (g == null ? void 0 : g.jogakName) ?? null
836
+ ), [b, i] = f({});
837
+ w(() => {
838
+ const c = () => {
839
+ const d = M();
840
+ d !== null ? (k(d.entryId), l(d.jogakName), i({})) : (k(null), l(null));
1140
841
  };
1141
- return window.addEventListener("popstate", f), () => {
1142
- window.removeEventListener("popstate", f);
842
+ return window.addEventListener("popstate", c), () => {
843
+ window.removeEventListener("popstate", c);
1143
844
  };
1144
845
  }, []);
1145
- const h = R((f, u) => {
1146
- s(f), a(u), p({}), fe(f, u);
1147
- }, []), S = R((f, u) => {
1148
- if (s((g) => g === f ? f : g), a((g) => g ?? u), typeof window < "u") {
1149
- const g = new URLSearchParams(window.location.search);
1150
- g.get("entry") === f && g.get("jogak") === null && (g.set("jogak", u), window.history.replaceState({}, "", `?${g.toString()}`));
846
+ const u = C((c, d) => {
847
+ k(c), l(d), i({}), uo(c, d);
848
+ }, []), v = C((c, d) => {
849
+ if (k((p) => p === c ? c : p), l((p) => p ?? d), typeof window < "u") {
850
+ const p = new URLSearchParams(window.location.search);
851
+ p.get("entry") === c && p.get("jogak") === null && (p.set("jogak", d), window.history.replaceState({}, "", `?${p.toString()}`));
1151
852
  }
1152
- }, []), b = R((f, u) => {
1153
- p((g) => ({ ...g, [f]: u }));
1154
- }, []), y = R(() => {
1155
- p({});
853
+ }, []), m = C((c, d) => {
854
+ i((p) => ({ ...p, [c]: d }));
855
+ }, []), x = C(() => {
856
+ i({});
1156
857
  }, []);
1157
- return /* @__PURE__ */ n(T, { registry: i, children: /* @__PURE__ */ c(
858
+ return /* @__PURE__ */ e(X, { registry: t, children: /* @__PURE__ */ j(
1158
859
  "div",
1159
860
  {
1160
- style: {
1161
- display: "grid",
1162
- gridTemplateColumns: "260px 1fr",
1163
- height: "100dvh",
1164
- overflow: "hidden"
1165
- },
861
+ "data-jogak-shell": !0,
862
+ className: "jogak:grid jogak:grid-cols-[260px_1fr] jogak:h-dvh jogak:overflow-hidden",
1166
863
  children: [
1167
- /* @__PURE__ */ n(
1168
- Y,
864
+ /* @__PURE__ */ e(
865
+ K,
1169
866
  {
1170
- selectedEntryId: r,
1171
- selectedJogakName: l,
1172
- onSelect: h
867
+ selectedEntryId: n,
868
+ selectedJogakName: s,
869
+ onSelect: u
1173
870
  }
1174
871
  ),
1175
- /* @__PURE__ */ n("main", { style: { overflow: "hidden", minHeight: 0 }, children: r !== null ? /* @__PURE__ */ n(
1176
- le,
1177
- {
1178
- entryId: r,
1179
- jogakName: l,
1180
- overrideArgs: m,
1181
- onArgChange: b,
1182
- onReset: y,
1183
- codeTheme: o,
1184
- onResolveJogak: S
1185
- }
1186
- ) : /* @__PURE__ */ n(
1187
- "div",
872
+ /* @__PURE__ */ e("main", { className: "jogak:overflow-hidden jogak:min-h-0", children: n !== null ? /* @__PURE__ */ e(
873
+ lo,
1188
874
  {
1189
- style: {
1190
- display: "flex",
1191
- alignItems: "center",
1192
- justifyContent: "center",
1193
- height: "100%",
1194
- color: "#9ca3af"
1195
- },
1196
- children: "Select a component from the sidebar"
875
+ entryId: n,
876
+ jogakName: s,
877
+ overrideArgs: b,
878
+ onArgChange: m,
879
+ onReset: x,
880
+ codeTheme: r,
881
+ onResolveJogak: v
1197
882
  }
1198
- ) })
883
+ ) : /* @__PURE__ */ e("div", { className: "jogak:flex jogak:items-center jogak:justify-center jogak:h-full jogak:text-[var(--jogak-color-fg-subtle)]", children: "Select a component from the sidebar" }) })
1199
884
  ]
1200
885
  }
1201
886
  ) });
1202
887
  }
1203
- function ye() {
1204
- const e = q(), t = w(() => e.getAll(), [e]), o = w(() => e.getTree(), [e]), i = w(
1205
- () => (d) => e.search(d),
1206
- [e]
888
+ function No() {
889
+ const o = Y(), a = y(() => o.getAll(), [o]), r = y(() => o.getTree(), [o]), t = y(
890
+ () => (g) => o.search(g),
891
+ [o]
1207
892
  );
1208
- return { entries: t, tree: o, search: i };
893
+ return { entries: a, tree: r, search: t };
1209
894
  }
1210
895
  export {
1211
- re as Actions,
1212
- te as Controls,
1213
- me as JogakApp,
1214
- le as Preview,
1215
- Y as Sidebar,
1216
- ye as useRegistry
896
+ go as Actions,
897
+ ro as Controls,
898
+ vo as JogakApp,
899
+ lo as Preview,
900
+ K as Sidebar,
901
+ No as useRegistry
1217
902
  };