fiboui 2.6.4 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +16 -6
  2. package/dist/cli/bin.js +3 -4
  3. package/dist/cli/commands/generate/component.js +21 -33
  4. package/dist/cli/commands/generate/index.js +3 -3
  5. package/dist/cli/commands/generate/module.js +21 -24
  6. package/dist/cli/commands/generate/plugin.js +18 -34
  7. package/dist/cli/commands/init.js +5 -25
  8. package/dist/cli/config.js +118 -0
  9. package/dist/cli/names.js +35 -0
  10. package/dist/cli/templates.js +76 -0
  11. package/dist/client-Bydlscpe.js +17697 -0
  12. package/dist/content.d.ts +1 -0
  13. package/dist/content.js +14 -14
  14. package/dist/core.d.ts +2 -0
  15. package/dist/core.js +65 -59
  16. package/dist/effects-BxvduC-G.js +14 -0
  17. package/dist/icons-B9HMYLtE.js +383 -0
  18. package/dist/index-B7eVMy2M.js +150 -0
  19. package/dist/index-C9I92HPE.js +140 -0
  20. package/dist/index-CXQSA8WJ.js +944 -0
  21. package/dist/index-D4JzwKSP.js +1474 -0
  22. package/dist/index-DBeyafKI.js +839 -0
  23. package/dist/index.d.ts +73156 -505
  24. package/dist/index.js +4419 -2238
  25. package/dist/interactive.d.ts +2 -0
  26. package/dist/interactive.js +22 -9
  27. package/dist/layout.d.ts +1 -0
  28. package/dist/layout.js +14 -13
  29. package/dist/metadata-BbFwNwNa.js +147 -0
  30. package/dist/navigation.d.ts +1 -0
  31. package/dist/navigation.js +15 -9
  32. package/dist/page-BJoj7vSk.js +266 -0
  33. package/dist/server.d.ts +2 -0
  34. package/dist/server.js +4991 -1774
  35. package/dist/structure.d.ts +1 -0
  36. package/dist/structure.js +13 -9
  37. package/dist/style.css +1 -1
  38. package/dist/theme.d.ts +2 -0
  39. package/dist/theme.js +8 -8
  40. package/package.json +9 -2
  41. package/dist/Link-YjcbA4af.js +0 -50
  42. package/dist/PluginManager-BRjgOLVa.js +0 -110
  43. package/dist/client-DzQ13khL.js +0 -10605
  44. package/dist/effects-D16XdB_d.js +0 -10
  45. package/dist/index-B-cCNvV4.js +0 -455
  46. package/dist/index-Bj-IMHC8.js +0 -119
  47. package/dist/index-CWyBsVAL.js +0 -608
  48. package/dist/index-CYisDyI8.js +0 -602
  49. package/dist/index-Dil2ZG0X.js +0 -1028
  50. package/dist/mount-CDwiTTXM.js +0 -135
@@ -0,0 +1,1474 @@
1
+ var Ct = Object.defineProperty;
2
+ var Et = (e, r, t) => r in e ? Ct(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
3
+ var n = (e, r, t) => Et(e, typeof r != "symbol" ? r + "" : r, t);
4
+ import s from "react";
5
+ import { aT as A, aU as T, aW as C, aZ as K, aX as P, a_ as it, a$ as bt, b2 as kt, bf as It, au as B, F as nt, bg as lt, bh as Bt, bi as At, a3 as W, a8 as x } from "./client-Bydlscpe.js";
6
+ import { S as D, C as F } from "./index-B7eVMy2M.js";
7
+ import { B as yt } from "./index-C9I92HPE.js";
8
+ import { B as Z, I as ot, a as L, A as Tt } from "./icons-B9HMYLtE.js";
9
+ function j(e, r) {
10
+ if (!(typeof r != "string" || !C(r)))
11
+ for (const t of K(r))
12
+ e.bindSignal(t);
13
+ }
14
+ function X(e) {
15
+ return typeof e != "string" ? e : C(e) ? P(e) : e;
16
+ }
17
+ function z(e, r) {
18
+ if (typeof r == "function") {
19
+ try {
20
+ z(e, r());
21
+ } catch {
22
+ }
23
+ return;
24
+ }
25
+ if (typeof r == "string") {
26
+ j(e, r);
27
+ return;
28
+ }
29
+ if (Array.isArray(r))
30
+ for (const t of r) z(e, t);
31
+ }
32
+ function Pt(e) {
33
+ return typeof e == "string" && C(e) ? P(e) : e;
34
+ }
35
+ function Y(e) {
36
+ return e == null || e === !1 ? null : typeof e == "string" ? X(e) ?? e : it(e);
37
+ }
38
+ const $t = {
39
+ green: "var(--fibo-success, #22c55e)",
40
+ orange: "var(--fibo-warning, #f97316)",
41
+ red: "var(--fibo-error, #ef4444)",
42
+ blue: "var(--fibo-info, #3b82f6)",
43
+ purple: "var(--fibo-tertiary, #a855f7)"
44
+ }, Rt = /* @__PURE__ */ new Set(["script", "iframe", "object", "embed", "link", "style"]);
45
+ function jt(e) {
46
+ if (typeof e != "string") return "article";
47
+ const r = e.trim().toLowerCase();
48
+ return !r || !/^[a-z][a-z0-9]*$/.test(r) || Rt.has(r) ? "article" : r;
49
+ }
50
+ const zt = s.memo((e) => {
51
+ const {
52
+ text: r,
53
+ subtitle: t,
54
+ number: i,
55
+ accentColor: o,
56
+ className: l,
57
+ style: a,
58
+ children: c,
59
+ header: f,
60
+ footer: g,
61
+ as: S,
62
+ ...p
63
+ } = e;
64
+ delete p.color;
65
+ const h = Array.isArray(c) ? c : c == null ? [] : [c], u = p.onClick, _ = p.onKeyDown, d = typeof u == "function", k = [
66
+ "fibo-card",
67
+ "rounded-[24px]",
68
+ "transition-shadow",
69
+ "duration-300",
70
+ "p-4",
71
+ d ? "fibo-clickable" : "",
72
+ l
73
+ ].filter(Boolean).join(" "), $ = {
74
+ ...o ? {
75
+ borderLeftWidth: 4,
76
+ borderLeftStyle: "solid",
77
+ borderLeftColor: o
78
+ } : {},
79
+ ...a
80
+ }, v = Y(f), E = Y(g);
81
+ return s.createElement(
82
+ jt(S),
83
+ {
84
+ ...p,
85
+ className: k,
86
+ style: $,
87
+ onClick: u,
88
+ ...d ? {
89
+ role: "button",
90
+ tabIndex: p.tabIndex ?? 0,
91
+ onKeyDown: (b) => {
92
+ _ == null || _(b), !b.defaultPrevented && b.target === b.currentTarget && (b.key === "Enter" || b.key === " ") && (b.preventDefault(), b.currentTarget.click());
93
+ }
94
+ } : null
95
+ },
96
+ v ? s.createElement("header", { className: "fibo-card-header" }, v) : null,
97
+ s.createElement(
98
+ "div",
99
+ { className: "flex flex-col gap-2" },
100
+ r && s.createElement(
101
+ "h3",
102
+ {
103
+ className: "font-semibold text-[var(--fibo-on-surface-variant)] text-sm uppercase tracking-wide"
104
+ },
105
+ r
106
+ ),
107
+ i && s.createElement(
108
+ "p",
109
+ {
110
+ className: "font-bold text-[var(--fibo-on-surface)] text-3xl"
111
+ },
112
+ i
113
+ ),
114
+ t && s.createElement(
115
+ "p",
116
+ {
117
+ className: "text-[var(--fibo-on-surface-variant)] text-xs"
118
+ },
119
+ t
120
+ ),
121
+ ...h
122
+ ),
123
+ E ? s.createElement("footer", { className: "fibo-card-footer" }, E) : null
124
+ );
125
+ });
126
+ class Gt extends T {
127
+ constructor() {
128
+ super(...arguments);
129
+ n(this, "_text", "");
130
+ n(this, "_subtitle");
131
+ n(this, "_number");
132
+ n(this, "_color");
133
+ n(this, "_header");
134
+ n(this, "_footer");
135
+ n(this, "_as");
136
+ }
137
+ text(t) {
138
+ return this._text = t, j(this, t), this;
139
+ }
140
+ /** Alias of `.text()` — same slot as Banner/ListTile/Alert `.title()`. */
141
+ title(t) {
142
+ return this.text(t);
143
+ }
144
+ subtitle(t) {
145
+ return this._subtitle = t, j(this, t), this;
146
+ }
147
+ number(t) {
148
+ return this._number = t, j(this, t), this;
149
+ }
150
+ children(t) {
151
+ return z(this, t), super.children(t);
152
+ }
153
+ header(t) {
154
+ return this._header = t, z(this, t), this;
155
+ }
156
+ footer(t) {
157
+ return this._footer = t, z(this, t), this;
158
+ }
159
+ as(t) {
160
+ return this._as = String(t), this;
161
+ }
162
+ props(t) {
163
+ return t && (j(this, t.text), j(this, t.title), j(this, t.subtitle), j(this, t.number), z(this, t.header), z(this, t.footer), "children" in t && z(this, t.children)), super.props(t);
164
+ }
165
+ color(t) {
166
+ return this._color = t, this;
167
+ }
168
+ build() {
169
+ const t = this._color ? $t[this._color] : void 0, {
170
+ className: i,
171
+ text: o,
172
+ title: l,
173
+ subtitle: a,
174
+ number: c,
175
+ header: f,
176
+ footer: g,
177
+ as: S,
178
+ ...p
179
+ } = this._props, h = [...this._classNames, i].filter(Boolean).join(" "), u = {
180
+ text: X(o ?? l ?? this._text),
181
+ subtitle: X(a ?? this._subtitle),
182
+ number: X(c ?? this._number),
183
+ header: Y(this._header ?? f),
184
+ footer: Y(this._footer ?? g),
185
+ as: this._as ?? S,
186
+ accentColor: t,
187
+ style: this.getStyle(),
188
+ children: this.processChildren().map(Pt),
189
+ ...p,
190
+ className: h
191
+ };
192
+ return s.createElement(zt, u);
193
+ }
194
+ }
195
+ const J = A(Gt);
196
+ function H(e, r) {
197
+ if (!(typeof r != "string" || !C(r)))
198
+ for (const t of K(r))
199
+ e.bindSignal(t);
200
+ }
201
+ function V(e) {
202
+ return typeof e != "string" ? e : C(e) ? P(e) : e;
203
+ }
204
+ function q(e) {
205
+ return typeof e == "string" && C(e) ? P(e) : e;
206
+ }
207
+ function U(e, r) {
208
+ return typeof r == "string" ? (H(e, r), r) : it(r);
209
+ }
210
+ const Ft = 'a, button, input, textarea, select, [role="button"], [role="switch"], [role="checkbox"], [role="menuitem"]';
211
+ function ct(e) {
212
+ const r = e.target;
213
+ r != null && r.closest(Ft) && e.stopPropagation();
214
+ }
215
+ const Lt = () => s.createElement(
216
+ "svg",
217
+ {
218
+ width: 12,
219
+ height: 12,
220
+ viewBox: "0 0 24 24",
221
+ fill: "none",
222
+ stroke: "currentColor",
223
+ strokeWidth: 2,
224
+ "aria-hidden": !0
225
+ },
226
+ s.createElement("path", { d: "M9 5l7 7-7 7" })
227
+ ), Wt = s.memo((e) => {
228
+ const {
229
+ leading: r,
230
+ title: t,
231
+ subtitle: i,
232
+ trailing: o,
233
+ chevron: l,
234
+ divider: a,
235
+ dividerColor: c,
236
+ onPress: f,
237
+ href: g,
238
+ disabled: S,
239
+ dense: p,
240
+ onTap: h,
241
+ className: u,
242
+ style: _,
243
+ ...d
244
+ } = e, k = _ || {}, $ = k.padding ?? (p ? "8px 0" : "14px 0"), v = d.onClick, E = d.onKeyDown, b = typeof f == "function" ? f : typeof h == "function" ? h : void 0, m = !!S, N = typeof g == "string" ? g.trim() : "", y = N && !bt(N) ? N : void 0, w = !!y && !m, R = typeof b == "function" || typeof v == "function" || w, wt = R && !m, vt = typeof t == "string" ? s.createElement(
245
+ "span",
246
+ {
247
+ className: "fibo-list-tile-title",
248
+ style: { fontSize: 11, letterSpacing: "0.06em", lineHeight: 1.3, margin: 0 }
249
+ },
250
+ q(t)
251
+ ) : t, St = typeof i == "string" ? s.createElement(
252
+ "span",
253
+ {
254
+ className: "fibo-list-tile-subtitle",
255
+ style: {
256
+ fontSize: 8,
257
+ letterSpacing: "0.06em",
258
+ lineHeight: 1.3,
259
+ margin: 0,
260
+ color: "#9a9a9a"
261
+ }
262
+ },
263
+ q(i)
264
+ ) : i, Q = q(r), O = q(o), at = d.target, Nt = w && at && String(at).toLowerCase() === "_blank" ? kt(d.rel, "noopener noreferrer") : d.rel, xt = (I) => {
265
+ if (m) {
266
+ I.preventDefault(), I.stopPropagation();
267
+ return;
268
+ }
269
+ b == null || b(), v == null || v(I);
270
+ }, G = {
271
+ className: It("fibo-list-tile flex flex-row items-center w-full", u),
272
+ style: {
273
+ padding: $,
274
+ borderBottom: a ? `1px solid ${c || "#3b3b3b"}` : "none",
275
+ cursor: m ? "not-allowed" : wt ? "pointer" : void 0,
276
+ opacity: m ? 0.6 : void 0,
277
+ pointerEvents: m ? "none" : void 0,
278
+ ...k
279
+ },
280
+ ...d,
281
+ rel: Nt,
282
+ onClick: R || m ? xt : v
283
+ };
284
+ return w && (G.href = y), m && (G["aria-disabled"] = !0, G.tabIndex = d.tabIndex ?? -1), !w && R && (G.role = "button", m || (G.tabIndex = d.tabIndex ?? 0, G.onKeyDown = (I) => {
285
+ E == null || E(I), !I.defaultPrevented && I.target === I.currentTarget && (I.key === "Enter" || I.key === " ") && (I.preventDefault(), I.currentTarget.click());
286
+ })), s.createElement(
287
+ w ? "a" : "div",
288
+ G,
289
+ Q != null && Q !== !1 ? s.createElement(
290
+ "div",
291
+ {
292
+ key: "leading",
293
+ className: "fibo-list-tile-leading shrink-0 flex items-center",
294
+ style: { color: "#9a9a9a", marginRight: 12 },
295
+ onClick: ct
296
+ },
297
+ Q
298
+ ) : null,
299
+ s.createElement(
300
+ "div",
301
+ {
302
+ key: "body",
303
+ className: "fibo-list-tile-body flex-1 min-w-0 flex flex-col justify-center"
304
+ },
305
+ vt,
306
+ St
307
+ ),
308
+ O != null && O !== !1 ? s.createElement(
309
+ "div",
310
+ {
311
+ key: "trailing",
312
+ className: "fibo-list-tile-trailing shrink-0 flex items-center",
313
+ style: { color: "#9a9a9a", marginLeft: 12 },
314
+ onClick: ct
315
+ },
316
+ O
317
+ ) : null,
318
+ l ? s.createElement(
319
+ "div",
320
+ {
321
+ key: "chevron",
322
+ className: "fibo-list-tile-chevron shrink-0 flex items-center",
323
+ style: { color: "#9a9a9a", marginLeft: O ? 8 : 0 }
324
+ },
325
+ s.createElement(Lt)
326
+ ) : null
327
+ );
328
+ });
329
+ class Dt extends T {
330
+ constructor() {
331
+ super(...arguments);
332
+ n(this, "_leading");
333
+ n(this, "_title");
334
+ n(this, "_subtitle");
335
+ n(this, "_trailing");
336
+ n(this, "_chevron", !1);
337
+ n(this, "_divider", !1);
338
+ n(this, "_dividerColor");
339
+ n(this, "_onPress");
340
+ n(this, "_href");
341
+ n(this, "_disabled", !1);
342
+ n(this, "_dense", !1);
343
+ }
344
+ leading(t) {
345
+ return this._leading = U(this, t), this;
346
+ }
347
+ icon(t) {
348
+ return this.leading(t);
349
+ }
350
+ title(t) {
351
+ return this._title = U(this, t), this;
352
+ }
353
+ subtitle(t) {
354
+ return this._subtitle = U(this, t), this;
355
+ }
356
+ trailing(t) {
357
+ return this._trailing = U(this, t), this;
358
+ }
359
+ chevron(t = !0) {
360
+ return this._chevron = t, this;
361
+ }
362
+ divider(t = !0, i) {
363
+ return this._divider = t, i && (this._dividerColor = i), this;
364
+ }
365
+ onPress(t) {
366
+ return this._onPress = t, this;
367
+ }
368
+ /** Flutter-style alias of `.onPress()`. */
369
+ onTap(t) {
370
+ return this.onPress(t);
371
+ }
372
+ href(t) {
373
+ return this._href = t, this;
374
+ }
375
+ disabled(t = !0) {
376
+ return this._disabled = t, this;
377
+ }
378
+ dense(t = !0) {
379
+ return this._dense = t, this;
380
+ }
381
+ build() {
382
+ const {
383
+ leading: t,
384
+ trailing: i,
385
+ title: o,
386
+ subtitle: l,
387
+ onPress: a,
388
+ onTap: c,
389
+ href: f,
390
+ disabled: g,
391
+ dense: S,
392
+ ...p
393
+ } = this._props, h = this._title !== void 0 ? this._title : o, u = this._subtitle !== void 0 ? this._subtitle : l, _ = this._leading !== void 0 ? this._leading : t, d = this._trailing !== void 0 ? this._trailing : i;
394
+ return typeof h == "string" && H(this, h), typeof u == "string" && H(this, u), typeof _ == "string" && H(this, _), typeof d == "string" && H(this, d), s.createElement(Wt, {
395
+ ...p,
396
+ leading: typeof _ == "string" ? V(_) : _,
397
+ title: typeof h == "string" ? V(h) : h,
398
+ subtitle: typeof u == "string" ? V(u) : u,
399
+ trailing: typeof d == "string" ? V(d) : d,
400
+ chevron: this._chevron,
401
+ divider: this._divider,
402
+ dividerColor: this._dividerColor,
403
+ onPress: this._onPress ?? a ?? c,
404
+ href: this._href ?? f,
405
+ disabled: this._disabled || !!g,
406
+ dense: this._dense || !!S,
407
+ className: this.getClassName(),
408
+ style: this.getStyle()
409
+ });
410
+ }
411
+ }
412
+ const je = A(Dt);
413
+ function Ht(e, r) {
414
+ if (!(typeof r != "string" || !C(r)))
415
+ for (const t of K(r))
416
+ e.bindSignal(t);
417
+ }
418
+ function Mt(e) {
419
+ return typeof e != "string" ? e : C(e) ? P(e) : e;
420
+ }
421
+ function Kt(e) {
422
+ return e != null && typeof e == "object" && !Array.isArray(e) && typeof e.subscribe == "function" && "value" in e;
423
+ }
424
+ function Ot(e, r) {
425
+ if (e != null && typeof e == "object") {
426
+ const t = e;
427
+ if (t._id != null && t._id !== "") return t._id;
428
+ if (t.id != null && t.id !== "") return t.id;
429
+ if (t.key != null && t.key !== "") return t.key;
430
+ }
431
+ return r;
432
+ }
433
+ function Vt(e, r) {
434
+ return typeof r.render == "function" ? r.render(e) : e == null || typeof e != "object" || r.accessor == null || r.accessor === "" ? null : e[r.accessor];
435
+ }
436
+ function qt(e) {
437
+ return typeof e == "string" && C(e) ? s.createElement(nt, {
438
+ as: "span",
439
+ compute: () => P(e)
440
+ }) : it(e);
441
+ }
442
+ function ut(e, r) {
443
+ return e.sortable === !1 ? !1 : e.sortable === !0 ? !0 : r;
444
+ }
445
+ function dt(e, r) {
446
+ if (e != null && typeof e == "object" && r.accessor != null && r.accessor !== "") {
447
+ const i = e[r.accessor];
448
+ if (i == null || typeof i == "string" || typeof i == "number" || typeof i == "boolean")
449
+ return i ?? null;
450
+ }
451
+ if (typeof r.render != "function") return null;
452
+ const t = r.render(e);
453
+ return t == null || typeof t == "string" || typeof t == "number" || typeof t == "boolean" ? t ?? null : null;
454
+ }
455
+ function Ut(e, r) {
456
+ return e == null && r == null ? 0 : e == null ? 1 : r == null ? -1 : typeof e == "number" && typeof r == "number" ? e - r : typeof e == "boolean" && typeof r == "boolean" ? Number(e) - Number(r) : String(e).localeCompare(String(r), void 0, { numeric: !0, sensitivity: "base" });
457
+ }
458
+ function ht(e, r) {
459
+ return !e || e.index !== r ? { index: r, dir: "ascending" } : { index: r, dir: e.dir === "ascending" ? "descending" : "ascending" };
460
+ }
461
+ const Xt = s.memo((e) => {
462
+ const {
463
+ data: r,
464
+ columns: t,
465
+ variant: i,
466
+ density: o,
467
+ striped: l,
468
+ width: a,
469
+ sortable: c,
470
+ className: f,
471
+ style: g,
472
+ children: S,
473
+ ...p
474
+ } = e, h = !!c, [u, _] = s.useState(null), d = {
475
+ width: "100%",
476
+ borderCollapse: "separate",
477
+ borderSpacing: "0",
478
+ ...g
479
+ };
480
+ a && (d.width = typeof a == "number" ? `${a}px` : a);
481
+ const k = i === "clean" ? ["bg-white", "rounded-2xl", "border", "border-gray-100", "overflow-hidden", "shadow-sm"] : [], v = {
482
+ compact: "10px 16px",
483
+ standard: "16px 24px",
484
+ relaxed: "24px 32px"
485
+ }[o], E = Array.isArray(r) ? r : [], b = s.useMemo(() => {
486
+ if (!u) return E;
487
+ const m = t == null ? void 0 : t[u.index];
488
+ if (!m || !ut(m, h)) return E;
489
+ const N = u.dir === "ascending" ? 1 : -1;
490
+ return E.map((y, w) => ({ row: y, index: w })).sort((y, w) => {
491
+ const R = Ut(dt(y.row, m), dt(w.row, m));
492
+ return R === 0 ? y.index - w.index : N * R;
493
+ }).map((y) => y.row);
494
+ }, [E, t, u, h]);
495
+ return B().className(f).classNames(k).props(p).children(
496
+ s.createElement("table", {
497
+ style: d,
498
+ className: ["fibo-table", f].filter(Boolean).join(" ")
499
+ }, [
500
+ s.createElement(
501
+ "thead",
502
+ { key: "thead", className: "bg-gray-50/50" },
503
+ s.createElement(
504
+ "tr",
505
+ {},
506
+ t.map((m, N) => {
507
+ const y = ut(m, h);
508
+ return s.createElement("th", {
509
+ key: String(m.accessor ?? N),
510
+ scope: "col",
511
+ style: {
512
+ textAlign: m.align || "left",
513
+ padding: v,
514
+ width: m.width,
515
+ cursor: y ? "pointer" : void 0
516
+ },
517
+ className: "text-xs font-bold text-gray-400 uppercase tracking-widest",
518
+ "aria-sort": y ? (u == null ? void 0 : u.index) === N ? u.dir : "none" : void 0,
519
+ tabIndex: y ? 0 : void 0,
520
+ onClick: y ? () => _((w) => ht(w, N)) : void 0,
521
+ onKeyDown: y ? (w) => {
522
+ w.key !== "Enter" && w.key !== " " || (w.preventDefault(), _((R) => ht(R, N)));
523
+ } : void 0
524
+ }, Mt(m.header) ?? m.header);
525
+ })
526
+ )
527
+ ),
528
+ s.createElement(
529
+ "tbody",
530
+ { key: "tbody" },
531
+ b.map(
532
+ (m, N) => s.createElement(
533
+ "tr",
534
+ {
535
+ key: Ot(m, N),
536
+ className: `group transition-all duration-200 border-b border-gray-50 last:border-b-0 ${l && N % 2 !== 0 ? "bg-gray-50/30" : "bg-transparent"} ${i === "clean" ? "hover:bg-white hover:shadow-md hover:scale-[1.002] hover:z-10 relative" : "hover:bg-gray-50/50"}`
537
+ },
538
+ t.map(
539
+ (y, w) => s.createElement(
540
+ "td",
541
+ {
542
+ key: w,
543
+ style: {
544
+ textAlign: y.align || "left",
545
+ padding: v,
546
+ borderTop: i === "default" ? "1px solid #F3F4F6" : "none"
547
+ },
548
+ className: "text-sm text-gray-900 font-medium"
549
+ },
550
+ qt(Vt(m, y))
551
+ )
552
+ )
553
+ )
554
+ )
555
+ )
556
+ ])
557
+ ).build();
558
+ });
559
+ class Yt extends T {
560
+ constructor() {
561
+ super(...arguments);
562
+ n(this, "_data", []);
563
+ /** Live source (`listSignal` / `signal`). Read on each rebuild. */
564
+ n(this, "_source");
565
+ n(this, "_columns", []);
566
+ n(this, "_variant", "clean");
567
+ n(this, "_density", "standard");
568
+ n(this, "_striped", !1);
569
+ n(this, "_width");
570
+ n(this, "_sortable", !1);
571
+ }
572
+ data(t) {
573
+ return Kt(t) ? (this._source = t, this.bindSignal(t), this) : (this._source = void 0, this._data = t, this);
574
+ }
575
+ columns(t) {
576
+ this._columns = t;
577
+ for (const i of t) Ht(this, i.header);
578
+ return this;
579
+ }
580
+ variant(t) {
581
+ return this._variant = t, this;
582
+ }
583
+ density(t) {
584
+ return this._density = t, this;
585
+ }
586
+ striped(t = !0) {
587
+ return this._striped = t, this;
588
+ }
589
+ width(t) {
590
+ return this._width = t, this;
591
+ }
592
+ /** Header clicks sort that column ascending, then descending (`aria-sort`). */
593
+ sortable(t = !0) {
594
+ return this._sortable = t, this;
595
+ }
596
+ build() {
597
+ const t = {
598
+ data: this._source ? this._source.value : this._data,
599
+ columns: this._columns,
600
+ variant: this._variant,
601
+ density: this._density,
602
+ striped: this._striped,
603
+ width: this._width,
604
+ sortable: this._sortable,
605
+ className: this.getClassName(),
606
+ style: this.getStyle(),
607
+ ...this._props
608
+ };
609
+ return s.createElement(Xt, t);
610
+ }
611
+ }
612
+ const ze = A(Yt);
613
+ function ft(e, r) {
614
+ if (!(typeof r != "string" || !C(r)))
615
+ for (const t of K(r))
616
+ e.bindSignal(t);
617
+ }
618
+ function Jt(e) {
619
+ return typeof e != "string" ? e : C(e) ? P(e) : e;
620
+ }
621
+ function Qt(e) {
622
+ return e != null && typeof e == "object" && !Array.isArray(e) && typeof e.subscribe == "function" && "value" in e;
623
+ }
624
+ function Zt(e, r) {
625
+ if (e != null && typeof e == "object") {
626
+ const t = e;
627
+ if (t._id != null && t._id !== "") return t._id;
628
+ if (t.id != null && t.id !== "") return t.id;
629
+ if (t.key != null && t.key !== "") return t.key;
630
+ }
631
+ return r;
632
+ }
633
+ function te(e) {
634
+ const r = e.title;
635
+ return typeof r == "string" ? r : "";
636
+ }
637
+ function ee(e, r, t) {
638
+ let i = Zt(e, r);
639
+ const o = String(i);
640
+ return t.has(o) && (i = `${o}::${r}`), t.add(String(i)), i;
641
+ }
642
+ const re = {
643
+ position: "absolute",
644
+ width: 1,
645
+ height: 1,
646
+ padding: 0,
647
+ margin: -1,
648
+ overflow: "hidden",
649
+ clip: "rect(0, 0, 0, 0)",
650
+ whiteSpace: "nowrap",
651
+ border: 0
652
+ };
653
+ function se(e, r) {
654
+ if (C(e))
655
+ return s.createElement(
656
+ "button",
657
+ {
658
+ key: "rm",
659
+ type: "button",
660
+ className: "relative shrink-0 opacity-80 text-sm leading-none",
661
+ onClick: r
662
+ },
663
+ s.createElement(nt, {
664
+ key: "lbl",
665
+ as: "span",
666
+ style: re,
667
+ compute: () => `Remove ${P(e) || "tag"}`
668
+ }),
669
+ s.createElement("span", { key: "x", "aria-hidden": !0 }, "×")
670
+ );
671
+ const t = e || "tag";
672
+ return s.createElement(
673
+ "button",
674
+ {
675
+ key: "rm",
676
+ type: "button",
677
+ className: "relative shrink-0 opacity-80 text-sm leading-none",
678
+ "aria-label": `Remove ${t}`,
679
+ onClick: r
680
+ },
681
+ "×"
682
+ );
683
+ }
684
+ const ie = s.memo((e) => {
685
+ const { items: r, className: t, style: i, onRemove: o, ...l } = e, a = typeof o == "function", c = /* @__PURE__ */ new Set(), f = (Array.isArray(r) ? r : []).flatMap((g, S) => {
686
+ if (g == null || typeof g != "object") return [];
687
+ const p = te(g), h = ee(g, S, c), u = a ? se(p, (d) => {
688
+ d.stopPropagation(), o(g, S);
689
+ }) : null;
690
+ if (C(p)) {
691
+ const d = s.createElement(nt, {
692
+ key: a ? "t" : h,
693
+ as: "span",
694
+ className: a ? void 0 : "fibo-tag",
695
+ compute: () => P(p)
696
+ });
697
+ return a ? [
698
+ s.createElement("span", { key: h, className: "fibo-tag" }, d, u)
699
+ ] : [d];
700
+ }
701
+ const _ = Jt(p) ?? p;
702
+ return a ? [
703
+ s.createElement("span", { key: h, className: "fibo-tag" }, _, u)
704
+ ] : [
705
+ s.createElement("span", { key: h, className: "fibo-tag" }, _)
706
+ ];
707
+ });
708
+ return s.createElement(
709
+ "div",
710
+ {
711
+ className: t,
712
+ style: i,
713
+ ...l
714
+ },
715
+ ...f
716
+ );
717
+ });
718
+ class ne extends T {
719
+ constructor(t = []) {
720
+ super();
721
+ n(this, "_items", []);
722
+ /** Live source (`listSignal` / `signal`). Read on each rebuild. */
723
+ n(this, "_source");
724
+ this.items(t);
725
+ }
726
+ items(t) {
727
+ if (Qt(t)) {
728
+ this._source = t, this.bindSignal(t);
729
+ for (const i of Array.isArray(t.value) ? t.value : [])
730
+ ft(this, i == null ? void 0 : i.title);
731
+ return this;
732
+ }
733
+ this._source = void 0, this._items = Array.isArray(t) ? t : [];
734
+ for (const i of this._items) ft(this, i == null ? void 0 : i.title);
735
+ return this;
736
+ }
737
+ build() {
738
+ const t = ["fibo-tags", "flex", "gap-2", "flex-wrap", ...this._classNames].filter(Boolean).join(" "), {
739
+ className: i,
740
+ style: o,
741
+ items: l,
742
+ ...a
743
+ } = this._props ?? {}, c = typeof i == "string" ? i : "", f = {
744
+ ...a,
745
+ items: this._source ? this._source.value : this._items,
746
+ className: [t, c].filter(Boolean).join(" "),
747
+ style: {
748
+ display: "flex",
749
+ flexWrap: "wrap",
750
+ gap: "0.5rem",
751
+ minWidth: 0,
752
+ ...this.getStyle(),
753
+ ...o && typeof o == "object" ? o : null
754
+ }
755
+ };
756
+ return s.createElement(ie, f);
757
+ }
758
+ }
759
+ const Ge = A(ne);
760
+ function et(e, r) {
761
+ if (!(typeof r != "string" || !C(r)))
762
+ for (const t of K(r))
763
+ e.bindSignal(t);
764
+ }
765
+ function pt(e) {
766
+ return typeof e != "string" ? e : C(e) ? P(e) : e;
767
+ }
768
+ function rt(e, r) {
769
+ if (typeof r == "function") {
770
+ try {
771
+ rt(e, r());
772
+ } catch {
773
+ }
774
+ return;
775
+ }
776
+ if (typeof r == "string") {
777
+ et(e, r);
778
+ return;
779
+ }
780
+ if (Array.isArray(r))
781
+ for (const t of r) rt(e, t);
782
+ }
783
+ function oe(e) {
784
+ return typeof e == "string" && C(e) ? P(e) : e;
785
+ }
786
+ function mt(e) {
787
+ return e === "success" || e === "warning" || e === "error" || e === "info";
788
+ }
789
+ function ae(e, r) {
790
+ return mt(r) ? r : mt(e) ? e : "info";
791
+ }
792
+ function gt(e) {
793
+ return e == null || e === !1 ? [] : Array.isArray(e) ? e : [e];
794
+ }
795
+ const le = s.memo((e) => {
796
+ const {
797
+ status: r,
798
+ intent: t,
799
+ title: i,
800
+ subtitle: o,
801
+ className: l,
802
+ style: a,
803
+ onClose: c,
804
+ action: f,
805
+ children: g,
806
+ ...S
807
+ } = e, p = ae(r, t), h = p === "error" || p === "warning", u = typeof c == "function", _ = [i, o].filter(Boolean).join(". "), d = ["fibo-banner", `fibo-banner-${p}`, l].filter(Boolean).join(" ").replace(/\s+/g, " ").trim(), k = s.createElement(
808
+ "div",
809
+ { key: "copy", className: "flex flex-col gap-1 min-w-0 flex-1" },
810
+ i && s.createElement(
811
+ "h4",
812
+ {
813
+ className: "font-semibold text-sm uppercase tracking-wide opacity-90"
814
+ },
815
+ i
816
+ ),
817
+ o && s.createElement(
818
+ "p",
819
+ {
820
+ className: "opacity-80 text-sm"
821
+ },
822
+ o
823
+ )
824
+ ), $ = [...gt(f), ...gt(g)].filter(
825
+ (b) => b != null && b !== !1
826
+ ), v = [];
827
+ $.length > 0 && v.push(
828
+ s.createElement(
829
+ "div",
830
+ { key: "actions", className: "flex items-center gap-2 shrink-0" },
831
+ $
832
+ )
833
+ ), u && v.push(
834
+ s.createElement(
835
+ "button",
836
+ {
837
+ key: "dismiss",
838
+ type: "button",
839
+ className: "shrink-0 opacity-80 text-sm leading-none",
840
+ "aria-label": "Dismiss",
841
+ onClick: (b) => {
842
+ b.stopPropagation(), c();
843
+ }
844
+ },
845
+ "×"
846
+ )
847
+ );
848
+ const E = v.length > 0 ? s.createElement("div", { className: "flex items-start gap-2" }, [k, ...v]) : k;
849
+ return s.createElement(
850
+ "div",
851
+ {
852
+ ...S,
853
+ className: d,
854
+ style: a,
855
+ role: h ? "alert" : "status",
856
+ "aria-live": h ? "assertive" : "polite",
857
+ "aria-atomic": !0,
858
+ "aria-label": S["aria-label"] || _ || void 0
859
+ },
860
+ E
861
+ );
862
+ });
863
+ class ce extends T {
864
+ constructor(t = "") {
865
+ super();
866
+ n(this, "_status", "info");
867
+ n(this, "_title", "");
868
+ n(this, "_subtitle");
869
+ this.title(t);
870
+ }
871
+ status(t) {
872
+ return this._status = t, this;
873
+ }
874
+ /** Docs alias: `.status()` is the Banner intent. */
875
+ intent(t) {
876
+ return this.status(t);
877
+ }
878
+ title(t) {
879
+ return this._title = t, et(this, t), this;
880
+ }
881
+ subtitle(t) {
882
+ return this._subtitle = t, et(this, t), this;
883
+ }
884
+ children(t) {
885
+ return rt(this, t), super.children(t);
886
+ }
887
+ build() {
888
+ const t = {
889
+ status: this._status,
890
+ title: pt(this._title),
891
+ subtitle: pt(this._subtitle),
892
+ className: this.getClassName(),
893
+ style: this.getStyle(),
894
+ children: this.processChildren().map(oe),
895
+ ...this._props
896
+ };
897
+ return s.createElement(le, t);
898
+ }
899
+ }
900
+ const Fe = A(ce), ue = {
901
+ none: "0px",
902
+ sm: "8px",
903
+ md: "16px",
904
+ lg: "24px",
905
+ xl: "32px"
906
+ };
907
+ function st(e) {
908
+ return `repeat(${e}, minmax(0, 1fr))`;
909
+ }
910
+ function de(e) {
911
+ return `repeat(${e}, minmax(0, auto))`;
912
+ }
913
+ function he(e, r) {
914
+ return r || st(typeof e == "number" ? e : 1);
915
+ }
916
+ function fe(e, r) {
917
+ if (r) return r;
918
+ if (typeof e == "number") return de(e);
919
+ }
920
+ function M(e) {
921
+ return typeof e == "number" ? `${e}px` : ue[e] ?? (e || "16px");
922
+ }
923
+ function pe(e, r, t) {
924
+ return r == null && t == null ? { gap: e } : {
925
+ ...r != null ? { rowGap: M(r) } : { rowGap: e },
926
+ ...t != null ? { columnGap: M(t) } : { columnGap: e }
927
+ };
928
+ }
929
+ function _t(e) {
930
+ return e == null || e === !1 ? [] : Array.isArray(e) ? e : [e];
931
+ }
932
+ function tt(e, r) {
933
+ if (typeof e == "number") return [];
934
+ const t = Bt.getInstance(), i = ["sm", "md", "lg", "xl"], o = [];
935
+ for (const l of i) {
936
+ const a = e[l];
937
+ if (!a) continue;
938
+ const c = At(l);
939
+ r === "masonry" ? o.push(t.registerMedia(c, "column-count", String(a))) : o.push(t.registerMedia(c, "grid-template-columns", st(a)));
940
+ }
941
+ return o;
942
+ }
943
+ function me(e) {
944
+ if (!s.isValidElement(e)) return !1;
945
+ const r = e.props;
946
+ return !!(r && typeof r == "object" && (r.colSpan || r.rowSpan || r.colStart != null || r.colEnd != null || r.rowStart != null || r.rowEnd != null || typeof r.className == "string" && /(col|row)-span/.test(r.className)));
947
+ }
948
+ const ge = s.memo((e) => {
949
+ const {
950
+ children: r,
951
+ variant: t = "standard",
952
+ columns: i = 1,
953
+ gap: o = "md",
954
+ rows: l,
955
+ templateColumns: a,
956
+ templateRows: c,
957
+ autoFlow: f,
958
+ rowGap: g,
959
+ columnGap: S,
960
+ className: p,
961
+ style: h,
962
+ ...u
963
+ } = e, _ = _t(r), d = M(o), k = pe(d, g, S), $ = he(i, a), v = fe(l, c);
964
+ if (t === "bento") {
965
+ const b = [
966
+ { col: 2, row: 2 },
967
+ { col: 1, row: 1 },
968
+ { col: 1, row: 1 },
969
+ { col: 1, row: 2 },
970
+ { col: 2, row: 1 }
971
+ ], m = {
972
+ display: "grid",
973
+ gridTemplateColumns: $,
974
+ ...v ? { gridTemplateRows: v } : {},
975
+ ...k,
976
+ gridAutoFlow: f ?? "dense",
977
+ ...h
978
+ };
979
+ return s.createElement("div", {
980
+ className: ["fibo-grid", "grid", ...tt(i, "grid"), p].filter(Boolean).join(" "),
981
+ style: m,
982
+ ...u
983
+ }, s.Children.map(_, (N, y) => {
984
+ if (me(N))
985
+ return N;
986
+ const w = b[y % b.length];
987
+ return s.createElement("div", {
988
+ key: lt(N, y),
989
+ style: { gridColumn: `span ${w.col}`, gridRow: `span ${w.row}` }
990
+ }, N);
991
+ }));
992
+ }
993
+ if (t === "masonry") {
994
+ const b = S != null ? M(S) : d, m = g != null ? M(g) : d, N = {
995
+ columnCount: typeof i == "number" ? i : 1,
996
+ columnGap: b,
997
+ ...h
998
+ };
999
+ return s.createElement("div", {
1000
+ className: ["fibo-grid", ...tt(i, "masonry"), p].filter(Boolean).join(" "),
1001
+ style: N,
1002
+ ...u
1003
+ }, s.Children.map(
1004
+ _,
1005
+ (y, w) => s.createElement("div", {
1006
+ key: lt(y, w),
1007
+ style: { breakInside: "avoid", marginBottom: m }
1008
+ }, y)
1009
+ ));
1010
+ }
1011
+ const E = {
1012
+ display: "grid",
1013
+ gridTemplateColumns: $,
1014
+ ...v ? { gridTemplateRows: v } : {},
1015
+ ...f ? { gridAutoFlow: f } : {},
1016
+ ...k,
1017
+ ...h
1018
+ };
1019
+ return s.createElement("div", {
1020
+ className: ["fibo-grid", "grid", ...tt(i, "grid"), p].filter(Boolean).join(" "),
1021
+ style: E,
1022
+ ...u
1023
+ }, ..._);
1024
+ }), be = s.memo((e) => {
1025
+ const {
1026
+ children: r,
1027
+ colSpan: t,
1028
+ rowSpan: i,
1029
+ colStart: o,
1030
+ colEnd: l,
1031
+ rowStart: a,
1032
+ rowEnd: c,
1033
+ className: f,
1034
+ style: g,
1035
+ ...S
1036
+ } = e, p = _t(r), h = [
1037
+ t ? `col-span-${t}` : "",
1038
+ i ? `row-span-${i}` : ""
1039
+ ].filter(Boolean).join(" "), u = {
1040
+ ...t ? { gridColumn: `span ${t}` } : {},
1041
+ ...i ? { gridRow: `span ${i}` } : {},
1042
+ ...o != null ? { gridColumnStart: o } : {},
1043
+ ...l != null ? { gridColumnEnd: l } : {},
1044
+ ...a != null ? { gridRowStart: a } : {},
1045
+ ...c != null ? { gridRowEnd: c } : {},
1046
+ ...g
1047
+ };
1048
+ return s.createElement("div", {
1049
+ className: ["fibo-grid-item", h, f].filter(Boolean).join(" "),
1050
+ style: u,
1051
+ ...S
1052
+ }, ...p);
1053
+ });
1054
+ class ye extends T {
1055
+ constructor() {
1056
+ super(...arguments);
1057
+ n(this, "_variant", "standard");
1058
+ n(this, "_columns", 1);
1059
+ n(this, "_gap", "md");
1060
+ n(this, "_rowGap");
1061
+ n(this, "_columnGap");
1062
+ n(this, "_rows");
1063
+ n(this, "_templateColumns");
1064
+ n(this, "_templateRows");
1065
+ n(this, "_autoFlow");
1066
+ }
1067
+ variant(t) {
1068
+ return this._variant = t, this;
1069
+ }
1070
+ columns(t) {
1071
+ return this._columns = t, this;
1072
+ }
1073
+ rows(t) {
1074
+ return this._rows = t, this;
1075
+ }
1076
+ gap(t) {
1077
+ return this._gap = t, this;
1078
+ }
1079
+ rowGap(t) {
1080
+ return this._rowGap = t, this;
1081
+ }
1082
+ columnGap(t) {
1083
+ return this._columnGap = t, this;
1084
+ }
1085
+ templateColumns(t) {
1086
+ return this._templateColumns = t, this;
1087
+ }
1088
+ /** CSS name — same as `.templateColumns()`, wins over numeric `.columns()`. */
1089
+ gridTemplateColumns(t) {
1090
+ return this.templateColumns(t);
1091
+ }
1092
+ templateRows(t) {
1093
+ return this._templateRows = t, this;
1094
+ }
1095
+ autoFlow(t) {
1096
+ return this._autoFlow = t, this;
1097
+ }
1098
+ build() {
1099
+ const t = {
1100
+ variant: this._variant,
1101
+ columns: this._columns,
1102
+ gap: this._gap,
1103
+ rowGap: this._rowGap,
1104
+ columnGap: this._columnGap,
1105
+ rows: this._rows,
1106
+ templateColumns: this._templateColumns,
1107
+ templateRows: this._templateRows,
1108
+ autoFlow: this._autoFlow,
1109
+ children: this.processChildren(),
1110
+ className: this.getClassName(),
1111
+ style: this.getStyle(),
1112
+ ...this._props
1113
+ };
1114
+ return s.createElement(ge, t);
1115
+ }
1116
+ }
1117
+ class _e extends T {
1118
+ constructor() {
1119
+ super(...arguments);
1120
+ n(this, "_colSpan");
1121
+ n(this, "_rowSpan");
1122
+ n(this, "_colStart");
1123
+ n(this, "_colEnd");
1124
+ n(this, "_rowStart");
1125
+ n(this, "_rowEnd");
1126
+ }
1127
+ colSpan(t) {
1128
+ return this._colSpan = t, this;
1129
+ }
1130
+ rowSpan(t) {
1131
+ return this._rowSpan = t, this;
1132
+ }
1133
+ colStart(t) {
1134
+ return this._colStart = t, this;
1135
+ }
1136
+ colEnd(t) {
1137
+ return this._colEnd = t, this;
1138
+ }
1139
+ rowStart(t) {
1140
+ return this._rowStart = t, this;
1141
+ }
1142
+ rowEnd(t) {
1143
+ return this._rowEnd = t, this;
1144
+ }
1145
+ build() {
1146
+ const t = {
1147
+ colSpan: this._colSpan,
1148
+ rowSpan: this._rowSpan,
1149
+ colStart: this._colStart,
1150
+ colEnd: this._colEnd,
1151
+ rowStart: this._rowStart,
1152
+ rowEnd: this._rowEnd,
1153
+ children: this.processChildren(),
1154
+ className: this.getClassName(),
1155
+ style: this.getStyle(),
1156
+ ...this._props
1157
+ };
1158
+ return s.createElement(be, t);
1159
+ }
1160
+ }
1161
+ const Le = A(ye), We = A(_e), we = s.memo((e) => {
1162
+ const { image: r, title: t, price: i, likes: o, timeLeft: l, className: a, style: c, ...f } = e;
1163
+ return J().classNames(["group", "transition-all", "duration-300", "hover:-translate-y-1"]).style({
1164
+ width: "100%",
1165
+ borderRadius: "24px",
1166
+ border: "none",
1167
+ boxShadow: "0 10px 40px -10px rgba(0,0,0,0.05)",
1168
+ padding: "16px",
1169
+ background: "#fff",
1170
+ ...c
1171
+ }).className(a).props(f).children([
1172
+ B().classNames(["relative", "aspect-square", "overflow-hidden", "rounded-[20px]"]).children([
1173
+ ot().src(r).alt(t || "").classNames(["w-full", "h-full", "object-cover", "bg-gray-200"]).build(),
1174
+ B().classNames(["absolute", "top-3", "right-3"]).children(
1175
+ Z().variant("glass").shape("pill").icon(B().classNames(["text-gray-400", "hover:text-red-500"]).children(L.Heart).build()).text(`${o}`).build()
1176
+ ).build()
1177
+ ]).build(),
1178
+ D().height(16).build(),
1179
+ W().justifyContent("between").alignItems("start").children([
1180
+ F().gap(4).children([
1181
+ x(t).fontWeight(700).fontSize(18).color("#111827").build(),
1182
+ Z().variant("neutral").text("Not for sale x1").build()
1183
+ ]).build(),
1184
+ B().classNames(["text-gray-300"]).children(L.More).build()
1185
+ ]).build(),
1186
+ D().height(16).build(),
1187
+ W().justifyContent("between").alignItems("center").children([
1188
+ F().gap(4).children([
1189
+ x("Current Bid").fontSize(11).fontWeight(600).color("#6B7280").build(),
1190
+ W().gap(4).alignItems("center").children([
1191
+ B().classNames(["text-blue-500"]).children(L.Eth).build(),
1192
+ x(`${i} ETH`).fontSize(15).fontWeight(700).color("#111827").build()
1193
+ ]).build()
1194
+ ]).build(),
1195
+ yt("Place a bid").variant("filled").shape("pill").shadow("soft").style({
1196
+ backgroundColor: "#111827",
1197
+ color: "#fff",
1198
+ padding: "10px 20px",
1199
+ fontSize: "13px",
1200
+ fontWeight: 600
1201
+ }).build()
1202
+ ]).build(),
1203
+ D().height(12).build(),
1204
+ l ? Z().variant("accent").shape("rounded").icon(B().children(L.Clock).build()).text(l).style({ width: "100%" }).build() : null
1205
+ ]).build();
1206
+ });
1207
+ class ve extends T {
1208
+ constructor() {
1209
+ super(...arguments);
1210
+ n(this, "_image", "");
1211
+ n(this, "_title", "");
1212
+ n(this, "_price", "");
1213
+ n(this, "_likes", "");
1214
+ n(this, "_timeLeft");
1215
+ }
1216
+ image(t) {
1217
+ return this._image = t, this;
1218
+ }
1219
+ title(t) {
1220
+ return this._title = t, this;
1221
+ }
1222
+ price(t) {
1223
+ return this._price = t, this;
1224
+ }
1225
+ likes(t) {
1226
+ return this._likes = t, this;
1227
+ }
1228
+ timeLeft(t) {
1229
+ return this._timeLeft = t, this;
1230
+ }
1231
+ build() {
1232
+ const t = {
1233
+ ...this._props,
1234
+ image: this._image,
1235
+ title: this._title,
1236
+ price: this._price,
1237
+ likes: this._likes,
1238
+ timeLeft: this._timeLeft,
1239
+ className: this.getClassName(),
1240
+ style: this.getStyle()
1241
+ };
1242
+ return s.createElement(we, t);
1243
+ }
1244
+ }
1245
+ const De = A(ve);
1246
+ function Se(e) {
1247
+ if (typeof e != "string") return "";
1248
+ const r = e.trim();
1249
+ return !r || bt(r) ? "" : r;
1250
+ }
1251
+ const Ne = s.memo((e) => {
1252
+ const { banner: r, avatar: t, name: i, handle: o, stats: l, className: a, style: c, ...f } = e, g = Se(r);
1253
+ return J().style({
1254
+ width: "100%",
1255
+ borderRadius: "24px",
1256
+ border: "none",
1257
+ boxShadow: "0 10px 40px -10px rgba(0,0,0,0.05)",
1258
+ padding: "0",
1259
+ overflow: "hidden",
1260
+ background: "#fff",
1261
+ ...c
1262
+ }).className(a).props(f).children([
1263
+ B().style({
1264
+ height: "100px",
1265
+ backgroundImage: g ? `url(${JSON.stringify(g)})` : void 0,
1266
+ backgroundSize: "cover",
1267
+ backgroundPosition: "center"
1268
+ }).build(),
1269
+ F().padding(20).alignItems("center").style({ marginTop: "-50px" }).children([
1270
+ Tt().image(t).size(80).border("4px solid #fff").build(),
1271
+ D().height(12).build(),
1272
+ W().gap(6).alignItems("center").children([
1273
+ x(i).fontWeight(700).fontSize(18).color("#111827").build(),
1274
+ L.Verify
1275
+ ]).build(),
1276
+ x(o).fontSize(13).color("#6B7280").style({ marginTop: "4px" }).build(),
1277
+ D().height(16).build(),
1278
+ yt("+ Follow").variant("filled").shape("pill").shadow("soft").style({
1279
+ backgroundColor: "#3B82F6",
1280
+ color: "#fff",
1281
+ padding: "8px 24px",
1282
+ fontSize: "13px",
1283
+ fontWeight: 600
1284
+ }).build(),
1285
+ D().height(24).build(),
1286
+ W().classNames(["w-full", "border-t", "border-gray-100", "pt-4"]).justifyContent("between").children([
1287
+ F().alignItems("center").gap(4).children([
1288
+ x(l.items).fontWeight(700).fontSize(14).build(),
1289
+ x("Items").fontSize(11).color("#9CA3AF").build()
1290
+ ]).build(),
1291
+ F().alignItems("center").gap(4).children([
1292
+ x(l.owners).fontWeight(700).fontSize(14).build(),
1293
+ x("Owners").fontSize(11).color("#9CA3AF").build()
1294
+ ]).build(),
1295
+ F().alignItems("center").gap(4).children([
1296
+ W().alignItems("center").gap(2).children([
1297
+ B().width(8).children(L.Eth).build(),
1298
+ x(l.floor).fontWeight(700).fontSize(14).build()
1299
+ ]).build(),
1300
+ x("Floor").fontSize(11).color("#9CA3AF").build()
1301
+ ]).build()
1302
+ ]).build()
1303
+ ]).build()
1304
+ ]).build();
1305
+ });
1306
+ class xe extends T {
1307
+ constructor() {
1308
+ super(...arguments);
1309
+ n(this, "_banner", "");
1310
+ n(this, "_avatar", "");
1311
+ n(this, "_name", "");
1312
+ n(this, "_handle", "");
1313
+ n(this, "_stats", { items: "0", owners: "0", floor: "0" });
1314
+ }
1315
+ banner(t) {
1316
+ return this._banner = t, this;
1317
+ }
1318
+ avatar(t) {
1319
+ return this._avatar = t, this;
1320
+ }
1321
+ name(t) {
1322
+ return this._name = t, this;
1323
+ }
1324
+ handle(t) {
1325
+ return this._handle = t, this;
1326
+ }
1327
+ stats(t) {
1328
+ return this._stats = t, this;
1329
+ }
1330
+ build() {
1331
+ const t = {
1332
+ ...this._props,
1333
+ banner: this._banner,
1334
+ avatar: this._avatar,
1335
+ name: this._name,
1336
+ handle: this._handle,
1337
+ stats: this._stats,
1338
+ className: this.getClassName(),
1339
+ style: this.getStyle()
1340
+ };
1341
+ return s.createElement(Ne, t);
1342
+ }
1343
+ }
1344
+ const He = A(xe), Ce = s.memo((e) => {
1345
+ const { image: r, title: t, author: i, items: o, className: l, style: a, ...c } = e;
1346
+ return J().classNames(["group", "cursor-pointer"]).style({
1347
+ width: "100%",
1348
+ borderRadius: "24px",
1349
+ height: "320px",
1350
+ position: "relative",
1351
+ overflow: "hidden",
1352
+ border: "none",
1353
+ ...a
1354
+ }).className(l).props(c).children([
1355
+ ot().src(r).alt(t || "").classNames(["absolute", "inset-0", "w-full", "h-full", "object-cover", "transition-transform", "duration-500"]).style({ position: "absolute", inset: 0, width: "100%", height: "100%" }).build(),
1356
+ B().classNames(["absolute", "inset-0", "bg-gradient-to-t", "from-black/80", "via-black/20", "to-transparent"]).build(),
1357
+ F().classNames(["absolute", "bottom-0", "left-0", "p-6"]).gap(4).children([
1358
+ x(o).color("white").fontSize(12).classNames(["opacity-90", "mb-1", "uppercase", "tracking-wider"]).fontWeight(600).build(),
1359
+ x(t).color("white").fontSize(22).fontWeight(700).build(),
1360
+ W().gap(6).alignItems("center").children([
1361
+ x("Created by").color("white").fontSize(13).classNames(["opacity-80"]).build(),
1362
+ x(i).color("white").fontSize(13).fontWeight(600).build(),
1363
+ L.Verify
1364
+ ]).build()
1365
+ ]).build()
1366
+ ]).build();
1367
+ });
1368
+ class Ee extends T {
1369
+ constructor() {
1370
+ super(...arguments);
1371
+ n(this, "_image", "");
1372
+ n(this, "_title", "");
1373
+ n(this, "_author", "");
1374
+ n(this, "_items", "");
1375
+ }
1376
+ image(t) {
1377
+ return this._image = t, this;
1378
+ }
1379
+ title(t) {
1380
+ return this._title = t, this;
1381
+ }
1382
+ author(t) {
1383
+ return this._author = t, this;
1384
+ }
1385
+ items(t) {
1386
+ return this._items = t, this;
1387
+ }
1388
+ build() {
1389
+ const t = {
1390
+ ...this._props,
1391
+ image: this._image,
1392
+ title: this._title,
1393
+ author: this._author,
1394
+ items: this._items,
1395
+ className: this.getClassName(),
1396
+ style: this.getStyle()
1397
+ };
1398
+ return s.createElement(Ce, t);
1399
+ }
1400
+ }
1401
+ const Me = A(Ee), ke = s.memo((e) => {
1402
+ const {
1403
+ image: r,
1404
+ title: t,
1405
+ description: i,
1406
+ date: o,
1407
+ source: l,
1408
+ className: a,
1409
+ style: c,
1410
+ ...f
1411
+ } = e;
1412
+ return J().className(`overflow-hidden hover:shadow-lg transition-shadow duration-300 ${a || ""}`).style(c).props(f).children([
1413
+ r ? ot().src(r).alt(t || "").className("w-full object-cover rounded-[20px] mb-4").style({ height: "200px" }).build() : null,
1414
+ B().className("flex flex-col gap-2").children([
1415
+ t ? x(t).fontSize(18).fontWeight(700).color("#111827").lineHeight(1.25).build() : null,
1416
+ i ? x(i).fontSize(14).color("#4B5563").lineHeight(1.5).className("line-clamp-2").build() : null,
1417
+ l || o ? B().className("flex items-center gap-2 mt-2").children([
1418
+ x(`${l || ""}${l && o ? " • " : ""}${o || ""}`).fontSize(11).fontWeight(600).color("#9CA3AF").textTransform("uppercase").letterSpacing("0.05em").build()
1419
+ ]).build() : null
1420
+ ]).build()
1421
+ ]).build();
1422
+ });
1423
+ class Ie extends T {
1424
+ constructor() {
1425
+ super(...arguments);
1426
+ n(this, "_image");
1427
+ n(this, "_title");
1428
+ n(this, "_description");
1429
+ n(this, "_date");
1430
+ n(this, "_source");
1431
+ }
1432
+ image(t) {
1433
+ return this._image = t, this;
1434
+ }
1435
+ title(t) {
1436
+ return this._title = t, this;
1437
+ }
1438
+ description(t) {
1439
+ return this._description = t, this;
1440
+ }
1441
+ date(t) {
1442
+ return this._date = t, this;
1443
+ }
1444
+ source(t) {
1445
+ return this._source = t, this;
1446
+ }
1447
+ build() {
1448
+ const t = {
1449
+ ...this._props,
1450
+ image: this._image,
1451
+ title: this._title,
1452
+ description: this._description,
1453
+ date: this._date,
1454
+ source: this._source,
1455
+ className: this.getClassName(),
1456
+ style: this.getStyle()
1457
+ };
1458
+ return s.createElement(ke, t);
1459
+ }
1460
+ }
1461
+ const Ke = A(Ie);
1462
+ export {
1463
+ De as A,
1464
+ Fe as B,
1465
+ J as C,
1466
+ Le as G,
1467
+ je as L,
1468
+ He as P,
1469
+ ze as T,
1470
+ Ge as a,
1471
+ We as b,
1472
+ Me as c,
1473
+ Ke as d
1474
+ };