@chaibuilder/pages 0.4.14 → 0.4.16

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/server.js CHANGED
@@ -1,30 +1,30 @@
1
- var T = Object.defineProperty;
2
- var y = (i, a, e) => a in i ? T(i, a, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[a] = e;
3
- var u = (i, a, e) => y(i, typeof a != "symbol" ? a + "" : a, e);
4
- import { isEmpty as w, get as C, first as L, startsWith as _, has as A } from "lodash-es";
5
- const g = {}, v = (i, a) => {
1
+ var y = Object.defineProperty;
2
+ var C = (i, a, e) => a in i ? y(i, a, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[a] = e;
3
+ var u = (i, a, e) => C(i, typeof a != "symbol" ? a + "" : a, e);
4
+ import { isEmpty as b, get as L, first as _, startsWith as v, has as A } from "lodash-es";
5
+ const g = {}, U = (i, a) => {
6
6
  g[i] = { key: i, ...a, hasSlug: !0 };
7
- }, U = (i, a) => {
7
+ }, G = (i, a) => {
8
8
  g[i] = { key: i, ...a, hasSlug: !1 };
9
- }, b = () => Object.values(g), l = (i) => g[i];
10
- let P = async (i) => ({
9
+ }, p = () => Object.values(g), l = (i) => g[i];
10
+ let T = async (i) => ({
11
11
  ...i
12
12
  });
13
- const B = (i) => P = i, p = async (i) => {
13
+ const K = (i) => T = i, P = async (i) => {
14
14
  try {
15
- return await P(i);
15
+ return await T(i);
16
16
  } catch (a) {
17
17
  return console.error(a), {};
18
18
  }
19
19
  };
20
- class G {
20
+ class D {
21
21
  constructor(a) {
22
22
  this.backend = a;
23
23
  }
24
24
  async upload({
25
25
  file: a,
26
26
  folderId: e,
27
- name: n
27
+ name: s
28
28
  }, t) {
29
29
  var o, c;
30
30
  return await ((c = (o = this.backend).handleAssetsAction) == null ? void 0 : c.call(
@@ -32,7 +32,7 @@ class G {
32
32
  {
33
33
  action: "UPLOAD_ASSET",
34
34
  data: {
35
- name: n,
35
+ name: s,
36
36
  file: a,
37
37
  folderId: e
38
38
  }
@@ -41,17 +41,17 @@ class G {
41
41
  ));
42
42
  }
43
43
  async getAsset({ id: a }, e) {
44
- var n, t;
45
- return (t = (n = this.backend).handleAssetsAction) == null ? void 0 : t.call(
46
- n,
44
+ var s, t;
45
+ return (t = (s = this.backend).handleAssetsAction) == null ? void 0 : t.call(
46
+ s,
47
47
  { action: "GET_ASSET", data: { id: a } },
48
48
  e
49
49
  );
50
50
  }
51
51
  async getAssets(a, e) {
52
- var n, t;
53
- return (t = (n = this.backend).handleAssetsAction) == null ? void 0 : t.call(
54
- n,
52
+ var s, t;
53
+ return (t = (s = this.backend).handleAssetsAction) == null ? void 0 : t.call(
54
+ s,
55
55
  {
56
56
  action: "GET_ASSETS",
57
57
  data: a
@@ -59,13 +59,13 @@ class G {
59
59
  e
60
60
  );
61
61
  }
62
- async deleteAsset(a, e) {
63
- var n, t;
64
- return (t = (n = this.backend).handleAssetsAction) == null ? void 0 : t.call(
65
- n,
62
+ async deleteAsset({ id: a }, e) {
63
+ var s, t;
64
+ return (t = (s = this.backend).handleAssetsAction) == null ? void 0 : t.call(
65
+ s,
66
66
  {
67
67
  action: "DELETE_ASSET",
68
- data: { assetId: a }
68
+ data: { id: a }
69
69
  },
70
70
  e
71
71
  );
@@ -73,26 +73,26 @@ class G {
73
73
  async updateAsset({
74
74
  id: a,
75
75
  file: e,
76
- description: n
76
+ description: s
77
77
  }, t) {
78
- var s, o;
79
- return (o = (s = this.backend).handleAssetsAction) == null ? void 0 : o.call(
80
- s,
78
+ var n, o;
79
+ return (o = (n = this.backend).handleAssetsAction) == null ? void 0 : o.call(
80
+ n,
81
81
  {
82
82
  action: "UPDATE_ASSET",
83
- data: { id: a, file: e, description: n }
83
+ data: { id: a, file: e, description: s }
84
84
  },
85
85
  t
86
86
  );
87
87
  }
88
88
  }
89
- class D {
89
+ class M {
90
90
  constructor(a) {
91
91
  this.backend = a;
92
92
  }
93
93
  async refreshToken(a) {
94
- var n, t;
95
- const e = await ((t = (n = this.backend).handleUsersAction) == null ? void 0 : t.call(n, {
94
+ var s, t;
95
+ const e = await ((t = (s = this.backend).handleUsersAction) == null ? void 0 : t.call(s, {
96
96
  action: "REFRESH_TOKEN",
97
97
  data: a
98
98
  }));
@@ -102,12 +102,12 @@ class D {
102
102
  email: a,
103
103
  password: e
104
104
  }) {
105
- var t, s;
106
- const n = await ((s = (t = this.backend).handleUsersAction) == null ? void 0 : s.call(t, {
105
+ var t, n;
106
+ const s = await ((n = (t = this.backend).handleUsersAction) == null ? void 0 : n.call(t, {
107
107
  action: "LOGIN",
108
108
  data: { email: a, password: e }
109
109
  }));
110
- return n.error ? { error: n.error } : n;
110
+ return s.error ? { error: s.error } : s;
111
111
  }
112
112
  async logout() {
113
113
  var a, e;
@@ -116,9 +116,9 @@ class D {
116
116
  }));
117
117
  }
118
118
  async isUserActive(a) {
119
- var n, t;
120
- return (await ((t = (n = this.backend).handleUsersAction) == null ? void 0 : t.call(
121
- n,
119
+ var s, t;
120
+ return (await ((t = (s = this.backend).handleUsersAction) == null ? void 0 : t.call(
121
+ s,
122
122
  {
123
123
  action: "CHECK_USER_STATUS"
124
124
  },
@@ -126,9 +126,9 @@ class D {
126
126
  ))).success;
127
127
  }
128
128
  async getUserRoleAndPermissions(a) {
129
- var n, t;
130
- return await ((t = (n = this.backend).handleUsersAction) == null ? void 0 : t.call(
131
- n,
129
+ var s, t;
130
+ return await ((t = (s = this.backend).handleUsersAction) == null ? void 0 : t.call(
131
+ s,
132
132
  {
133
133
  action: "GET_ROLE_AND_PERMISSIONS"
134
134
  },
@@ -136,8 +136,8 @@ class D {
136
136
  ));
137
137
  }
138
138
  async getUserInfo(a, e) {
139
- var t, s;
140
- return await ((s = (t = this.backend).handleUsersAction) == null ? void 0 : s.call(
139
+ var t, n;
140
+ return await ((n = (t = this.backend).handleUsersAction) == null ? void 0 : n.call(
141
141
  t,
142
142
  {
143
143
  action: "GET_CHAI_USER",
@@ -147,7 +147,7 @@ class D {
147
147
  ));
148
148
  }
149
149
  }
150
- const M = {
150
+ const I = {
151
151
  ab: "Abkhazian",
152
152
  aa: "Afar",
153
153
  af: "Afrikaans",
@@ -336,25 +336,25 @@ const M = {
336
336
  za: "Zhuang, Chuang",
337
337
  zu: "Zulu"
338
338
  };
339
- class K {
340
- constructor(a, e, n) {
339
+ class N {
340
+ constructor(a, e, s) {
341
341
  u(this, "fallbackLang", "");
342
342
  u(this, "currentLang", "");
343
343
  u(this, "draftMode", !1);
344
- this.backend = a, this.chaiUsers = e, this.chaiAssets = n, this._registerDefaultPageTypes(), this.chaiUsers = e ?? new D(this.backend), this.chaiAssets = n ?? new G(this.backend);
344
+ this.backend = a, this.chaiUsers = e, this.chaiAssets = s, this._registerDefaultPageTypes(), this.chaiUsers = e ?? new M(this.backend), this.chaiAssets = s ?? new D(this.backend);
345
345
  }
346
346
  _registerDefaultPageTypes() {
347
- v("page", {
347
+ U("page", {
348
348
  name: "Static Page",
349
349
  icon: '<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M5 8V20H19V8H5ZM5 6H19V4H5V6ZM20 22H4C3.44772 22 3 21.5523 3 21V3C3 2.44772 3.44772 2 4 2H20C20.5523 2 21 2.44772 21 3V21C21 21.5523 20.5523 22 20 22ZM7 10H11V14H7V10ZM7 16H17V18H7V16ZM13 11H17V13H13V11Z"></path></svg>'
350
- }), U("global", {
350
+ }), G("global", {
351
351
  name: "Global Block",
352
352
  helpText: "A global block can be reused in multiple pages.",
353
353
  icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe w-4 h-4 text-slate-500 stroke-[1]"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg>'
354
354
  });
355
355
  }
356
356
  setFallbackLang(a) {
357
- if (w(a))
357
+ if (b(a))
358
358
  throw new Error("Fallback language cannot be empty");
359
359
  this.fallbackLang = a;
360
360
  }
@@ -362,7 +362,7 @@ class K {
362
362
  return this.fallbackLang;
363
363
  }
364
364
  setCurrentLang(a) {
365
- if (w(a))
365
+ if (b(a))
366
366
  throw new Error("Current language cannot be empty");
367
367
  this.currentLang = a;
368
368
  }
@@ -376,7 +376,7 @@ class K {
376
376
  return this.draftMode;
377
377
  }
378
378
  async handle(a, e) {
379
- var t, s, o, c, h, k, m, E, S, f;
379
+ var t, n, o, c, h, k, E, S, m, f, w;
380
380
  switch (a.action) {
381
381
  // Media
382
382
  case "UPLOAD_ASSET":
@@ -388,35 +388,43 @@ class K {
388
388
  },
389
389
  e
390
390
  );
391
+ case "GET_ASSET":
392
+ return (n = this.chaiAssets) == null ? void 0 : n.getAsset(
393
+ a.data,
394
+ e
395
+ );
391
396
  case "GET_ASSETS":
392
- return (s = this.chaiAssets) == null ? void 0 : s.getAssets(a.data, e);
397
+ return (o = this.chaiAssets) == null ? void 0 : o.getAssets(a.data, e);
393
398
  case "DELETE_ASSET":
394
- return (o = this.chaiAssets) == null ? void 0 : o.deleteAsset(a.data.id, e);
399
+ return (c = this.chaiAssets) == null ? void 0 : c.deleteAsset(
400
+ a.data,
401
+ e
402
+ );
395
403
  case "UPDATE_ASSET":
396
- return (c = this.chaiAssets) == null ? void 0 : c.updateAsset(a.data, e);
404
+ return (h = this.chaiAssets) == null ? void 0 : h.updateAsset(a.data, e);
397
405
  // Users
398
406
  case "REFRESH_TOKEN":
399
- return (h = this.chaiUsers) == null ? void 0 : h.refreshToken(
407
+ return (k = this.chaiUsers) == null ? void 0 : k.refreshToken(
400
408
  a.data
401
409
  );
402
410
  case "LOGIN":
403
- return (k = this.chaiUsers) == null ? void 0 : k.login(
411
+ return (E = this.chaiUsers) == null ? void 0 : E.login(
404
412
  a.data
405
413
  );
406
414
  case "LOGOUT":
407
- return (m = this.chaiUsers) == null ? void 0 : m.logout();
415
+ return (S = this.chaiUsers) == null ? void 0 : S.logout();
408
416
  case "CHECK_USER_STATUS":
409
- return (E = this.chaiUsers) == null ? void 0 : E.isUserActive(e);
417
+ return (m = this.chaiUsers) == null ? void 0 : m.isUserActive(e);
410
418
  case "GET_ROLE_AND_PERMISSIONS":
411
- return (S = this.chaiUsers) == null ? void 0 : S.getUserRoleAndPermissions(e);
419
+ return (f = this.chaiUsers) == null ? void 0 : f.getUserRoleAndPermissions(e);
412
420
  case "GET_CHAI_USER":
413
- return (f = this.chaiUsers) == null ? void 0 : f.getUserInfo(
421
+ return (w = this.chaiUsers) == null ? void 0 : w.getUserInfo(
414
422
  e,
415
423
  a.data
416
424
  );
417
425
  }
418
426
  if (a.action === "GET_BUILDER_PAGE_DATA") {
419
- const r = await p({
427
+ const r = await P({
420
428
  lang: a.data.lang,
421
429
  draft: !0,
422
430
  inBuilder: !0
@@ -435,7 +443,7 @@ class K {
435
443
  }
436
444
  if (a.action === "GET_PAGE_TYPES")
437
445
  return Promise.all(
438
- b().map(async (r) => ({
446
+ p().map(async (r) => ({
439
447
  key: r.key,
440
448
  helpText: r.helpText ?? "",
441
449
  icon: r.icon ?? "",
@@ -451,23 +459,23 @@ class K {
451
459
  );
452
460
  return r ? r.search ? await r.search(a.data.query) : this.backend.handleAction(a, e) : { error: "Page type not found" };
453
461
  }
454
- const n = await this.backend.handleAction(a, e);
455
- return this.emit(a.action, n), n;
462
+ const s = await this.backend.handleAction(a, e);
463
+ return this.emit(a.action, s), s;
456
464
  }
457
465
  emit(a, e) {
458
- var s, o, c;
466
+ var n, o, c;
459
467
  if (!["CREATE_PAGE", "UPDATE_PAGE", "DELETE_PAGE"].includes(a)) return;
460
- const n = C(e, "page");
461
- if (!n) return;
462
- const t = l(n.pageType);
468
+ const s = L(e, "page");
469
+ if (!s) return;
470
+ const t = l(s.pageType);
463
471
  if (t)
464
472
  switch (a) {
465
473
  case "CREATE_PAGE":
466
- return (s = t.onCreate) == null ? void 0 : s.call(t, n);
474
+ return (n = t.onCreate) == null ? void 0 : n.call(t, s);
467
475
  case "UPDATE_PAGE":
468
- return (o = t.onUpdate) == null ? void 0 : o.call(t, n);
476
+ return (o = t.onUpdate) == null ? void 0 : o.call(t, s);
469
477
  case "DELETE_PAGE":
470
- return (c = t.onDelete) == null ? void 0 : c.call(t, n);
478
+ return (c = t.onDelete) == null ? void 0 : c.call(t, s);
471
479
  }
472
480
  }
473
481
  // APIS
@@ -476,8 +484,8 @@ class K {
476
484
  throw new Error(
477
485
  "Please set a fallback language using setFallbackLang(lang: string)"
478
486
  );
479
- const e = L(a || [""]);
480
- Object.keys(M).includes(e) ? this.setCurrentLang(e) : this.setCurrentLang(this.getFallbackLang());
487
+ const e = _(a || [""]);
488
+ Object.keys(I).includes(e) ? this.setCurrentLang(e) : this.setCurrentLang(this.getFallbackLang());
481
489
  }
482
490
  /**
483
491
  * Resolve a page link
@@ -485,42 +493,42 @@ class K {
485
493
  * @returns The resolved link
486
494
  */
487
495
  async resolvePageLink(a) {
488
- if (!_(a, "pageType:"))
496
+ if (!v(a, "pageType:"))
489
497
  return a;
490
- const e = a.split(":")[1], n = a.split(":")[2], t = l(e);
491
- return t ? await this.resolveLink(t.key, n) : a;
498
+ const e = a.split(":")[1], s = a.split(":")[2], t = l(e);
499
+ return t ? await this.resolveLink(t.key, s) : a;
492
500
  }
493
501
  async resolveLink(a, e) {
494
- const n = l(a);
495
- if (!n)
502
+ const s = l(a);
503
+ if (!s)
496
504
  return "/not-found";
497
- const t = this.isDraftMode(), s = this.getCurrentLang() === this.getFallbackLang() ? "" : this.getCurrentLang();
498
- return n.resolveLink ? await n.resolveLink(e, t, s) : await this.backend.handleAction({
505
+ const t = this.isDraftMode(), n = this.getCurrentLang() === this.getFallbackLang() ? "" : this.getCurrentLang();
506
+ return s.resolveLink ? await s.resolveLink(e, t, n) : await this.backend.handleAction({
499
507
  action: "GET_LINK",
500
508
  data: {
501
509
  pageType: a,
502
510
  id: e,
503
511
  draft: t,
504
- lang: s
512
+ lang: n
505
513
  }
506
514
  });
507
515
  }
508
516
  async getPageBySlug(a) {
509
- const e = this.isDraftMode(), n = {};
510
- return b().forEach((t) => {
511
- A(t, "dynamicSegments") && t.dynamicSegments && (n[t.key] = t.dynamicSegments);
517
+ const e = this.isDraftMode(), s = {};
518
+ return p().forEach((t) => {
519
+ A(t, "dynamicSegments") && t.dynamicSegments && (s[t.key] = t.dynamicSegments);
512
520
  }), await this.backend.handleAction({
513
521
  action: "GET_PAGE_META",
514
- data: { slug: a, draft: e, dynamicSegments: n }
522
+ data: { slug: a, draft: e, dynamicSegments: s }
515
523
  });
516
524
  }
517
525
  async getFullPage(a) {
518
- const e = this.isDraftMode(), n = this.getCurrentLang(), t = this.getFallbackLang();
526
+ const e = this.isDraftMode(), s = this.getCurrentLang(), t = this.getFallbackLang();
519
527
  return await this.backend.handleAction({
520
528
  action: "GET_PAGE",
521
529
  data: {
522
530
  id: a,
523
- lang: t === n ? void 0 : n,
531
+ lang: t === s ? void 0 : s,
524
532
  draft: e,
525
533
  mergePartials: !0
526
534
  }
@@ -535,23 +543,23 @@ class K {
535
543
  }
536
544
  async getPageData(a, e = {}) {
537
545
  var h;
538
- const n = this.isDraftMode(), t = this.getCurrentLang(), s = l(a), [o, c] = await Promise.all([
546
+ const s = this.isDraftMode(), t = this.getCurrentLang(), n = l(a), [o, c] = await Promise.all([
539
547
  this.getGlobalData(),
540
- ((h = s == null ? void 0 : s.dataProvider) == null ? void 0 : h.call(s, {
548
+ ((h = n == null ? void 0 : n.dataProvider) == null ? void 0 : h.call(n, {
541
549
  lang: t,
542
- draft: n,
550
+ draft: s,
543
551
  inBuilder: !1,
544
552
  pageProps: e
545
553
  })) || Promise.resolve({})
546
554
  ]);
547
- return s ? {
555
+ return n ? {
548
556
  ...c,
549
557
  global: o
550
558
  } : { global: o };
551
559
  }
552
560
  async getGlobalData() {
553
561
  const a = this.getCurrentLang();
554
- return await p({
562
+ return await P({
555
563
  lang: a,
556
564
  draft: this.isDraftMode(),
557
565
  inBuilder: !1
@@ -561,31 +569,31 @@ class K {
561
569
  return await this.backend.handleAction(a);
562
570
  }
563
571
  }
564
- class N {
565
- constructor(a = "", e = I) {
572
+ class R {
573
+ constructor(a = "", e = O) {
566
574
  this.apiKey = a, this.apiUrl = e;
567
575
  }
568
576
  async handleUsersAction(a, e) {
569
- const n = await fetch(`${this.apiUrl}/v1/api/users`, {
577
+ const s = await fetch(`${this.apiUrl}/v1/api/users`, {
570
578
  method: "POST",
571
579
  body: JSON.stringify(a),
572
580
  headers: {
573
581
  "x-chai-api-key": this.apiKey,
574
582
  "x-chai-auth-token": e
575
583
  }
576
- }), t = await n.json();
577
- return A(t, "error") ? { ...t, status: n.status } : t;
584
+ }), t = await s.json();
585
+ return A(t, "error") ? { ...t, status: s.status } : t;
578
586
  }
579
587
  async handleAction(a, e) {
580
- const n = await fetch(`${this.apiUrl}/v1/api/chai`, {
588
+ const s = await fetch(`${this.apiUrl}/v1/api/chai`, {
581
589
  method: "POST",
582
590
  body: JSON.stringify(a),
583
591
  headers: {
584
592
  "x-chai-api-key": this.apiKey,
585
593
  "x-chai-auth-token": e
586
594
  }
587
- }), t = await n.json();
588
- return A(t, "error") ? { ...t, status: n.status } : t;
595
+ }), t = await s.json();
596
+ return A(t, "error") ? { ...t, status: s.status } : t;
589
597
  }
590
598
  async handleAssetsAction(a, e) {
591
599
  return await (await fetch(`${this.apiUrl}/v1/api/assets`, {
@@ -598,17 +606,17 @@ class N {
598
606
  })).json();
599
607
  }
600
608
  }
601
- const I = "https://api.chaibuilder.com";
609
+ const O = "https://api.chaibuilder.com";
602
610
  export {
603
- I as API_URL,
604
- K as ChaiBuilderPages,
605
- N as ChaiBuilderPagesBackend,
606
- D as ChaiBuilderPagesUserManagement,
607
- M as LANGUAGES,
608
- p as getChaiGlobalData,
611
+ O as API_URL,
612
+ N as ChaiBuilderPages,
613
+ R as ChaiBuilderPagesBackend,
614
+ M as ChaiBuilderPagesUserManagement,
615
+ I as LANGUAGES,
616
+ P as getChaiGlobalData,
609
617
  l as getChaiPageType,
610
- b as getChaiPageTypes,
611
- B as registerChaiGlobalDataProvider,
612
- v as registerChaiPageType,
613
- U as registerChaiPartialType
618
+ p as getChaiPageTypes,
619
+ K as registerChaiGlobalDataProvider,
620
+ U as registerChaiPageType,
621
+ G as registerChaiPartialType
614
622
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "Suraj Air",
4
4
  "license": "Private",
5
5
  "homepage": "https://chaibuilder.com",
6
- "version": "0.4.14",
6
+ "version": "0.4.16",
7
7
  "type": "module",
8
8
  "files": [
9
9
  "dist"
@@ -1,108 +0,0 @@
1
- import { jsxs as i, Fragment as w, jsx as a } from "react/jsx-runtime";
2
- import { Dialog as u, DialogContent as h, DialogHeader as N, DialogTitle as b, Label as r, Textarea as D, DialogFooter as F, Button as p } from "@chaibuilder/sdk/ui";
3
- import { Eye as y } from "lucide-react";
4
- import { useState as n } from "react";
5
- function k({
6
- asset: e,
7
- onSave: l,
8
- onCancel: o
9
- }) {
10
- const [c, f] = n(e.description || ""), [d, m] = n(!1), [v, s] = n(!1), x = async () => {
11
- m(!0);
12
- try {
13
- await l({
14
- description: c || void 0
15
- });
16
- } finally {
17
- m(!1);
18
- }
19
- };
20
- return /* @__PURE__ */ i(w, { children: [
21
- /* @__PURE__ */ a(u, { open: !0, onOpenChange: () => o(), children: /* @__PURE__ */ i(h, { className: "sm:max-w-[700px]", children: [
22
- /* @__PURE__ */ a(N, { children: /* @__PURE__ */ a(b, { children: "Edit Asset Details" }) }),
23
- /* @__PURE__ */ i("div", { className: "flex gap-4", children: [
24
- /* @__PURE__ */ i("div", { className: "relative group", children: [
25
- /* @__PURE__ */ a(
26
- "img",
27
- {
28
- src: e.url,
29
- className: "max-h-96 w-96 border rounded-md p-2"
30
- }
31
- ),
32
- /* @__PURE__ */ a(
33
- "button",
34
- {
35
- onClick: () => s(!0),
36
- className: "absolute inset-0 flex items-center justify-center bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity rounded-md",
37
- children: /* @__PURE__ */ a(y, { className: "h-8 w-8 text-white" })
38
- }
39
- )
40
- ] }),
41
- /* @__PURE__ */ i("div", { className: "grid gap-3 w-full", children: [
42
- /* @__PURE__ */ a(r, { htmlFor: "description", children: "Details" }),
43
- /* @__PURE__ */ a("div", { className: "grid grid-cols-1 gap-2 text-sm border rounded-md p-2", children: [
44
- { label: "File Name", value: e.name },
45
- { label: "Type", value: e.type },
46
- { label: "Format", value: e.format },
47
- { label: "Size", value: S(e.size) },
48
- {
49
- label: "Dimensions",
50
- value: `${e.width} × ${e.height}`
51
- },
52
- { label: "Created", value: g(e.createdAt) },
53
- {
54
- label: "Updated",
55
- value: g((e == null ? void 0 : e.updatedAt) || "")
56
- }
57
- ].map((t) => /* @__PURE__ */ i("div", { className: "flex items-center gap-2", children: [
58
- /* @__PURE__ */ a(r, { className: "w-max text-left px-2 w-1/4 font-normal text-gray-700", children: t.label }),
59
- ":",
60
- /* @__PURE__ */ a("div", { className: "w-max text-left font-medium text-gray-900 capitalize", children: t.value })
61
- ] })) }),
62
- /* @__PURE__ */ i("div", { className: "grid gap-2", children: [
63
- /* @__PURE__ */ a(r, { htmlFor: "description", children: "Description" }),
64
- /* @__PURE__ */ a(
65
- D,
66
- {
67
- id: "description",
68
- value: c,
69
- placeholder: "Enter a description for the asset",
70
- onChange: (t) => f(t.target.value),
71
- rows: 3
72
- }
73
- )
74
- ] })
75
- ] })
76
- ] }),
77
- /* @__PURE__ */ i(F, { children: [
78
- /* @__PURE__ */ a(p, { variant: "outline", onClick: o, children: "Cancel" }),
79
- /* @__PURE__ */ a(p, { onClick: x, disabled: d, children: d ? "Saving..." : "Save Changes" })
80
- ] })
81
- ] }) }),
82
- /* @__PURE__ */ a(u, { open: v, onOpenChange: s, children: /* @__PURE__ */ a(h, { className: "w-[60vw] h-[60vh] p-0 flex items-center justify-center bg-gray-100", children: /* @__PURE__ */ a(
83
- "img",
84
- {
85
- src: e.url,
86
- className: "w-full h-full object-contain",
87
- alt: e.name
88
- }
89
- ) }) })
90
- ] });
91
- }
92
- function S(e) {
93
- return e < 1024 ? `${e.toFixed(2)} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(2)} KB` : `${(e / (1024 * 1024)).toFixed(2)} MB`;
94
- }
95
- function g(e) {
96
- if (!e) return "N/A";
97
- const l = new Date(e);
98
- return new Intl.DateTimeFormat("en-US", {
99
- month: "short",
100
- day: "numeric",
101
- year: "numeric",
102
- hour: "2-digit",
103
- minute: "2-digit"
104
- }).format(l);
105
- }
106
- export {
107
- k as default
108
- };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("@chaibuilder/sdk/ui"),g=require("lucide-react"),r=require("react");function p({asset:t,onSave:l,onCancel:n}){const[s,m]=r.useState(t.description||""),[o,c]=r.useState(!1),[x,d]=r.useState(!1),h=async()=>{c(!0);try{await l({description:s||void 0})}finally{c(!1)}};return e.jsxs(e.Fragment,{children:[e.jsx(a.Dialog,{open:!0,onOpenChange:()=>n(),children:e.jsxs(a.DialogContent,{className:"sm:max-w-[700px]",children:[e.jsx(a.DialogHeader,{children:e.jsx(a.DialogTitle,{children:"Edit Asset Details"})}),e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"relative group",children:[e.jsx("img",{src:t.url,className:"max-h-96 w-96 border rounded-md p-2"}),e.jsx("button",{onClick:()=>d(!0),className:"absolute inset-0 flex items-center justify-center bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity rounded-md",children:e.jsx(g.Eye,{className:"h-8 w-8 text-white"})})]}),e.jsxs("div",{className:"grid gap-3 w-full",children:[e.jsx(a.Label,{htmlFor:"description",children:"Details"}),e.jsx("div",{className:"grid grid-cols-1 gap-2 text-sm border rounded-md p-2",children:[{label:"File Name",value:t.name},{label:"Type",value:t.type},{label:"Format",value:t.format},{label:"Size",value:f(t.size)},{label:"Dimensions",value:`${t.width} × ${t.height}`},{label:"Created",value:u(t.createdAt)},{label:"Updated",value:u((t==null?void 0:t.updatedAt)||"")}].map(i=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Label,{className:"w-max text-left px-2 w-1/4 font-normal text-gray-700",children:i.label}),":",e.jsx("div",{className:"w-max text-left font-medium text-gray-900 capitalize",children:i.value})]}))}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(a.Label,{htmlFor:"description",children:"Description"}),e.jsx(a.Textarea,{id:"description",value:s,placeholder:"Enter a description for the asset",onChange:i=>m(i.target.value),rows:3})]})]})]}),e.jsxs(a.DialogFooter,{children:[e.jsx(a.Button,{variant:"outline",onClick:n,children:"Cancel"}),e.jsx(a.Button,{onClick:h,disabled:o,children:o?"Saving...":"Save Changes"})]})]})}),e.jsx(a.Dialog,{open:x,onOpenChange:d,children:e.jsx(a.DialogContent,{className:"w-[60vw] h-[60vh] p-0 flex items-center justify-center bg-gray-100",children:e.jsx("img",{src:t.url,className:"w-full h-full object-contain",alt:t.name})})})]})}function f(t){return t<1024?`${t.toFixed(2)} B`:t<1024*1024?`${(t/1024).toFixed(2)} KB`:`${(t/(1024*1024)).toFixed(2)} MB`}function u(t){if(!t)return"N/A";const l=new Date(t);return new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"}).format(l)}exports.default=p;