@jogak/ui 0.1.0-alpha.1 → 0.1.0-alpha.10.2

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