geoiq-frontend-ui-kit 2.0.2 → 2.0.4

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 (217) hide show
  1. package/dist/components/organisms/image-editor/components/line-session-bar.d.ts +20 -0
  2. package/dist/components/organisms/image-editor/components/line-session-bar.d.ts.map +1 -0
  3. package/dist/components/organisms/image-editor/components/panel-insert.d.ts.map +1 -1
  4. package/dist/components/organisms/image-editor/components/panel-selected.d.ts.map +1 -1
  5. package/dist/components/organisms/image-editor/components/panel.d.ts.map +1 -1
  6. package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts +9 -0
  7. package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts.map +1 -0
  8. package/dist/components/organisms/image-editor/image-editor-modal.d.ts.map +1 -1
  9. package/dist/components/organisms/image-editor/image-editor.types.d.ts +73 -0
  10. package/dist/components/organisms/image-editor/image-editor.types.d.ts.map +1 -1
  11. package/dist/components/organisms/image-editor/use-image-editor.d.ts.map +1 -1
  12. package/dist/components/ui/request-credits-view/component/request-credit-dialog.d.ts.map +1 -1
  13. package/dist/index.es100.js +147 -120
  14. package/dist/index.es100.js.map +1 -1
  15. package/dist/index.es101.js +16 -11
  16. package/dist/index.es101.js.map +1 -1
  17. package/dist/index.es102.js +7 -41
  18. package/dist/index.es102.js.map +1 -1
  19. package/dist/index.es103.js +21 -10
  20. package/dist/index.es103.js.map +1 -1
  21. package/dist/index.es104.js +7 -74
  22. package/dist/index.es104.js.map +1 -1
  23. package/dist/index.es105.js +177 -30
  24. package/dist/index.es105.js.map +1 -1
  25. package/dist/index.es106.js +45 -16
  26. package/dist/index.es106.js.map +1 -1
  27. package/dist/index.es107.js +42 -20
  28. package/dist/index.es107.js.map +1 -1
  29. package/dist/index.es108.js +22 -12
  30. package/dist/index.es108.js.map +1 -1
  31. package/dist/index.es109.js +122 -98
  32. package/dist/index.es109.js.map +1 -1
  33. package/dist/index.es11.js +1 -1
  34. package/dist/index.es110.js +33 -62
  35. package/dist/index.es110.js.map +1 -1
  36. package/dist/index.es111.js +60 -52
  37. package/dist/index.es111.js.map +1 -1
  38. package/dist/index.es112.js +10 -41
  39. package/dist/index.es112.js.map +1 -1
  40. package/dist/index.es113.js +21 -11
  41. package/dist/index.es113.js.map +1 -1
  42. package/dist/index.es114.js +42 -92
  43. package/dist/index.es114.js.map +1 -1
  44. package/dist/index.es115.js +37 -16
  45. package/dist/index.es115.js.map +1 -1
  46. package/dist/index.es116.js +12 -99
  47. package/dist/index.es116.js.map +1 -1
  48. package/dist/index.es117.js +92 -13
  49. package/dist/index.es117.js.map +1 -1
  50. package/dist/index.es118.js +13 -101
  51. package/dist/index.es118.js.map +1 -1
  52. package/dist/index.es119.js +71 -20
  53. package/dist/index.es119.js.map +1 -1
  54. package/dist/index.es12.js +1 -1
  55. package/dist/index.es120.js +34 -25
  56. package/dist/index.es120.js.map +1 -1
  57. package/dist/index.es121.js +20 -22
  58. package/dist/index.es121.js.map +1 -1
  59. package/dist/index.es122.js +16 -45
  60. package/dist/index.es122.js.map +1 -1
  61. package/dist/index.es123.js +11 -34
  62. package/dist/index.es123.js.map +1 -1
  63. package/dist/index.es124.js +96 -61
  64. package/dist/index.es124.js.map +1 -1
  65. package/dist/index.es125.js +57 -174
  66. package/dist/index.es125.js.map +1 -1
  67. package/dist/index.es126.js +50 -17
  68. package/dist/index.es126.js.map +1 -1
  69. package/dist/index.es127.js +2 -2
  70. package/dist/index.es128.js +2 -2
  71. package/dist/index.es129.js +1 -1
  72. package/dist/index.es130.js +1 -1
  73. package/dist/index.es131.js +2 -2
  74. package/dist/index.es132.js +35 -38
  75. package/dist/index.es132.js.map +1 -1
  76. package/dist/index.es133.js +41 -7
  77. package/dist/index.es133.js.map +1 -1
  78. package/dist/index.es134.js +88 -7
  79. package/dist/index.es134.js.map +1 -1
  80. package/dist/index.es135.js +14 -34
  81. package/dist/index.es135.js.map +1 -1
  82. package/dist/index.es136.js +269 -35
  83. package/dist/index.es136.js.map +1 -1
  84. package/dist/index.es137.js +7 -2
  85. package/dist/index.es137.js.map +1 -1
  86. package/dist/index.es138.js +23 -25
  87. package/dist/index.es138.js.map +1 -1
  88. package/dist/index.es139.js +169 -15
  89. package/dist/index.es139.js.map +1 -1
  90. package/dist/index.es140.js +82 -7
  91. package/dist/index.es140.js.map +1 -1
  92. package/dist/index.es141.js +73 -21
  93. package/dist/index.es141.js.map +1 -1
  94. package/dist/index.es142.js +3 -168
  95. package/dist/index.es142.js.map +1 -1
  96. package/dist/index.es143.js +56 -82
  97. package/dist/index.es143.js.map +1 -1
  98. package/dist/index.es144.js +119 -4
  99. package/dist/index.es144.js.map +1 -1
  100. package/dist/index.es145.js +405 -56
  101. package/dist/index.es145.js.map +1 -1
  102. package/dist/index.es146.js +25 -110
  103. package/dist/index.es146.js.map +1 -1
  104. package/dist/index.es147.js +60 -314
  105. package/dist/index.es147.js.map +1 -1
  106. package/dist/index.es148.js +29 -24
  107. package/dist/index.es148.js.map +1 -1
  108. package/dist/index.es149.js +21 -64
  109. package/dist/index.es149.js.map +1 -1
  110. package/dist/index.es150.js +36 -30
  111. package/dist/index.es150.js.map +1 -1
  112. package/dist/index.es151.js +211 -24
  113. package/dist/index.es151.js.map +1 -1
  114. package/dist/index.es152.js +141 -35
  115. package/dist/index.es152.js.map +1 -1
  116. package/dist/index.es153.js +141 -140
  117. package/dist/index.es153.js.map +1 -1
  118. package/dist/index.es154.js +45 -142
  119. package/dist/index.es154.js.map +1 -1
  120. package/dist/index.es155.js +353 -45
  121. package/dist/index.es155.js.map +1 -1
  122. package/dist/index.es156.js +14 -10
  123. package/dist/index.es156.js.map +1 -1
  124. package/dist/index.es157.js +10 -42
  125. package/dist/index.es157.js.map +1 -1
  126. package/dist/index.es158.js +44 -5
  127. package/dist/index.es158.js.map +1 -1
  128. package/dist/index.es159.js +5 -11
  129. package/dist/index.es159.js.map +1 -1
  130. package/dist/index.es16.js +1 -1
  131. package/dist/index.es160.js +10 -10
  132. package/dist/index.es160.js.map +1 -1
  133. package/dist/index.es161.js +11 -2
  134. package/dist/index.es161.js.map +1 -1
  135. package/dist/index.es162.js +2 -91
  136. package/dist/index.es162.js.map +1 -1
  137. package/dist/index.es163.js +2 -213
  138. package/dist/index.es163.js.map +1 -1
  139. package/dist/index.es164.js +23 -52
  140. package/dist/index.es164.js.map +1 -1
  141. package/dist/index.es165.js +88 -33
  142. package/dist/index.es165.js.map +1 -1
  143. package/dist/index.es166.js +52 -31
  144. package/dist/index.es166.js.map +1 -1
  145. package/dist/index.es167.js +32 -29
  146. package/dist/index.es167.js.map +1 -1
  147. package/dist/index.es168.js +26 -84
  148. package/dist/index.es168.js.map +1 -1
  149. package/dist/index.es169.js +27 -111
  150. package/dist/index.es169.js.map +1 -1
  151. package/dist/index.es170.js +97 -285
  152. package/dist/index.es170.js.map +1 -1
  153. package/dist/index.es171.js +251 -30
  154. package/dist/index.es171.js.map +1 -1
  155. package/dist/index.es172.js +63 -11
  156. package/dist/index.es172.js.map +1 -1
  157. package/dist/index.es173.js +284 -82
  158. package/dist/index.es173.js.map +1 -1
  159. package/dist/index.es174.js +29 -70
  160. package/dist/index.es174.js.map +1 -1
  161. package/dist/index.es175.js +10 -114
  162. package/dist/index.es175.js.map +1 -1
  163. package/dist/index.es176.js +23 -106
  164. package/dist/index.es176.js.map +1 -1
  165. package/dist/index.es177.js +19 -82
  166. package/dist/index.es177.js.map +1 -1
  167. package/dist/index.es178.js +63 -109
  168. package/dist/index.es178.js.map +1 -1
  169. package/dist/index.es179.js +63 -117
  170. package/dist/index.es179.js.map +1 -1
  171. package/dist/index.es180.js +112 -23
  172. package/dist/index.es180.js.map +1 -1
  173. package/dist/index.es181.js +103 -18
  174. package/dist/index.es181.js.map +1 -1
  175. package/dist/index.es182.js +86 -5
  176. package/dist/index.es182.js.map +1 -1
  177. package/dist/index.es183.js +133 -0
  178. package/dist/index.es183.js.map +1 -0
  179. package/dist/index.es184.js +133 -0
  180. package/dist/index.es184.js.map +1 -0
  181. package/dist/index.es185.js +9 -0
  182. package/dist/index.es185.js.map +1 -0
  183. package/dist/index.es19.js +1 -1
  184. package/dist/index.es2.js +21 -21
  185. package/dist/index.es2.js.map +1 -1
  186. package/dist/index.es20.js +1 -1
  187. package/dist/index.es21.js +3 -3
  188. package/dist/index.es22.js +1 -1
  189. package/dist/index.es25.js +1 -1
  190. package/dist/index.es27.js +1 -1
  191. package/dist/index.es28.js +2 -2
  192. package/dist/index.es30.js +1 -1
  193. package/dist/index.es32.js +1 -1
  194. package/dist/index.es33.js +1 -1
  195. package/dist/index.es45.js +48 -46
  196. package/dist/index.es45.js.map +1 -1
  197. package/dist/index.es46.js +2 -2
  198. package/dist/index.es47.js +1 -1
  199. package/dist/index.es48.js +1 -1
  200. package/dist/index.es53.js +1 -1
  201. package/dist/index.es54.js +1 -1
  202. package/dist/index.es57.js +1 -1
  203. package/dist/index.es59.js +1 -1
  204. package/dist/index.es67.js +2 -2
  205. package/dist/index.es68.js +1 -1
  206. package/dist/index.es71.js +1 -1
  207. package/dist/index.es72.js +7 -7
  208. package/dist/index.es73.js +2 -2
  209. package/dist/index.es85.js +1 -1
  210. package/dist/index.es97.js +16 -11
  211. package/dist/index.es97.js.map +1 -1
  212. package/dist/index.es98.js +89 -262
  213. package/dist/index.es98.js.map +1 -1
  214. package/dist/index.es99.js +13 -87
  215. package/dist/index.es99.js.map +1 -1
  216. package/dist/styles.css +55 -0
  217. package/package.json +2 -1
@@ -1,87 +1,289 @@
1
- import { Typography as u } from "./index.es19.js";
2
- import e, { useState as v, useRef as N } from "react";
3
- import "./index.es35.js";
4
- import { useToast as h } from "./index.es87.js";
5
- import { Spinner as x } from "./index.es64.js";
6
- import { Upload as _, X as w, Pen as k } from "lucide-react";
7
- import { useFormValues as I } from "./index.es160.js";
8
- const j = ({
9
- id: g,
10
- onChange: l,
11
- value: t,
12
- accept: f = "image/*",
13
- error: c
14
- }) => {
15
- const { onAssetUpload: s, onToggleImageEditor: o } = I(), { toast: n } = h(), [r, m] = v(!1), i = N(null), b = (a) => {
16
- const d = a.target.files?.[0];
17
- !d || r || s && (m(!0), s(d).then((p) => {
18
- l({ ...p, original_private_url: p.private_url }), n({
19
- title: "Alert!",
20
- description: "File uploaded successfully.",
21
- icon: "success"
22
- });
23
- }).catch(() => {
24
- l(void 0), n({
25
- title: "Alert!",
26
- description: "Error uploading file",
27
- icon: "warning"
28
- });
29
- }).finally(() => {
30
- m(!1), i.current && (i.current.value = "");
31
- }));
32
- }, y = (a) => {
33
- l({
34
- ...a,
35
- original_private_url: t?.original_private_url ?? t?.private_url
36
- });
37
- }, E = () => {
38
- r || i.current?.click();
39
- };
40
- return /* @__PURE__ */ e.createElement("div", { className: "relative" }, r && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70" }, /* @__PURE__ */ e.createElement(x, { className: "w-8 h-8 text-primary-1" })), /* @__PURE__ */ e.createElement("div", { className: "relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1" }, /* @__PURE__ */ e.createElement("button", { className: "w-full", onClick: E }, /* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(_, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(u, { variant: "body1", className: "text-gray-600" }, r ? "Uploading..." : t ? "Replace Image" : "Attach Image"))), /* @__PURE__ */ e.createElement(
41
- "input",
42
- {
43
- ref: i,
44
- id: `${g}-gallery`,
45
- type: "file",
46
- accept: f,
47
- disabled: r,
48
- onChange: b,
49
- className: "hidden"
50
- }
51
- ), c && /* @__PURE__ */ e.createElement(u, { variant: "body1", className: "mt-1 text-danger-1" }, c)), t && /* @__PURE__ */ e.createElement("div", { className: "grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4" }, /* @__PURE__ */ e.createElement("div", { className: "relative flex rounded" }, /* @__PURE__ */ e.createElement(
52
- "img",
53
- {
54
- src: t.public_url,
55
- alt: "Preview",
56
- className: "object-cover w-full h-24 rounded"
1
+ import t from "react";
2
+ import { Input as m } from "./index.es11.js";
3
+ import { Checkbox as v } from "./index.es10.js";
4
+ import { RadioGroup as u, RadioGroupItem as p } from "./index.es13.js";
5
+ import { MultiCombobox as I } from "./index.es23.js";
6
+ import { SingleCombobox as _ } from "./index.es27.js";
7
+ import { CreatableMultiCombobox as C } from "./index.es28.js";
8
+ import { Textarea as x } from "./index.es16.js";
9
+ import { Typography as s } from "./index.es19.js";
10
+ import { Phone as O, Mail as T } from "lucide-react";
11
+ import { SingleImagePicker as y } from "./index.es178.js";
12
+ import { SingleVideoPicker as R } from "./index.es179.js";
13
+ import { MultiImagePicker as M } from "./index.es180.js";
14
+ import { MultiVideoPicker as P } from "./index.es181.js";
15
+ import { RepeatableGroup as N } from "./index.es182.js";
16
+ import { TaggableMultiImagePicker as B } from "./index.es183.js";
17
+ import { FormFieldType as c } from "./index.es162.js";
18
+ import { DatePicker as U } from "./index.es69.js";
19
+ import { TaggableImageUploadFieldWithInput as G } from "./index.es184.js";
20
+ import { useFormValues as L } from "./index.es161.js";
21
+ const f = ({ field: e }) => {
22
+ const {
23
+ values: o,
24
+ errors: i,
25
+ setValue: r,
26
+ getRequestHeaders: E,
27
+ getCreateOptionExtraBody: d
28
+ } = L(), g = () => {
29
+ switch (e.type) {
30
+ case c.SINGLE_COMBOBOX:
31
+ return /* @__PURE__ */ t.createElement(
32
+ _,
33
+ {
34
+ options: e.options.map((a) => ({
35
+ id: a,
36
+ name: a
37
+ })),
38
+ value: o[e.id],
39
+ onChange: (a) => r(e.id, a),
40
+ placeholder: e.placeholder
41
+ }
42
+ );
43
+ case c.CREATABLE_MULTI_COMBOBOX: {
44
+ const a = o[e.id]?.split(",").filter(Boolean) ?? [];
45
+ return /* @__PURE__ */ t.createElement(
46
+ C,
47
+ {
48
+ fieldId: e.id,
49
+ optionsUrl: e.optionsUrl,
50
+ createOptionUrl: e.createOptionUrl,
51
+ optionsRequestBody: e.optionsRequestBody,
52
+ createOptionRequestBody: e.createOptionRequestBody,
53
+ createOptionValueKey: e.createOptionValueKey,
54
+ createOptionExtraBody: e.skipCreateOptionExtraBody ? void 0 : d,
55
+ requestHeaders: E,
56
+ urlTemplateData: o,
57
+ value: a,
58
+ onChange: (n) => r(e.id, n.length > 0 ? n.join(",") : void 0),
59
+ placeholder: e.placeholder,
60
+ minSelected: e.minSelected,
61
+ maxSelected: e.maxSelected
62
+ }
63
+ );
64
+ }
65
+ case c.MULTI_COMBOBOX:
66
+ return /* @__PURE__ */ t.createElement(
67
+ I,
68
+ {
69
+ options: e.options.map((a) => ({
70
+ label: a,
71
+ value: a
72
+ })),
73
+ selected: o[e.id]?.split(",") || [],
74
+ onChange: (a) => {
75
+ a.length === 0 ? r(e.id, void 0) : r(e.id, a.join(","));
76
+ },
77
+ placeholder: e.placeholder
78
+ }
79
+ );
80
+ case c.RADIO_GROUP:
81
+ return /* @__PURE__ */ t.createElement(
82
+ u,
83
+ {
84
+ value: o[e.id],
85
+ onValueChange: (a) => r(e.id, a)
86
+ },
87
+ e.options.map((a) => /* @__PURE__ */ t.createElement("div", { key: a, className: "flex items-center space-x-2" }, /* @__PURE__ */ t.createElement(p, { value: a, id: a }), /* @__PURE__ */ t.createElement(s, { variant: "body1", className: "text-light-4" }, a)))
88
+ );
89
+ case c.RADIO_GROUP_WITH_OPTIONAL_INPUT: {
90
+ const a = o[e.id];
91
+ return /* @__PURE__ */ t.createElement("div", null, /* @__PURE__ */ t.createElement(
92
+ u,
93
+ {
94
+ value: a?.radio_value,
95
+ onValueChange: (n) => r(e.id, {
96
+ ...a,
97
+ radio_value: n,
98
+ input_value: ""
99
+ })
100
+ },
101
+ e.options.map((n) => /* @__PURE__ */ t.createElement("div", { key: n, className: "flex items-center space-x-2" }, /* @__PURE__ */ t.createElement(p, { value: n, id: n }), /* @__PURE__ */ t.createElement(s, { variant: "body1", className: "text-light-4" }, n)))
102
+ ), e.inputTriggerOptionValue === a?.radio_value ? /* @__PURE__ */ t.createElement(
103
+ m,
104
+ {
105
+ id: e.id,
106
+ type: "text",
107
+ placeholder: e.inputFieldPlaceholder,
108
+ value: a?.input_value,
109
+ onChange: (n) => r(e.id, {
110
+ ...a,
111
+ input_value: n.target.value
112
+ })
113
+ }
114
+ ) : null);
115
+ }
116
+ case c.CHECKBOX_GROUP: {
117
+ const a = o[e.id];
118
+ return /* @__PURE__ */ t.createElement("div", { className: "flex flex-col gap-2" }, e.options.map((n) => /* @__PURE__ */ t.createElement("div", { key: n, className: "flex items-center space-x-2" }, /* @__PURE__ */ t.createElement(
119
+ v,
120
+ {
121
+ id: n,
122
+ checked: a?.split(",").includes(n),
123
+ onCheckedChange: (l) => {
124
+ l ? r(
125
+ e.id,
126
+ a ? `${a},${n}` : n
127
+ ) : r(
128
+ e.id,
129
+ a?.split(",").filter((h) => h !== n).join(",")
130
+ );
131
+ }
132
+ }
133
+ ), /* @__PURE__ */ t.createElement(s, { variant: "body1", className: "text-light-4" }, n))));
134
+ }
135
+ case c.DATE_PICKER: {
136
+ const a = o[e.id], n = a ? new Date(a * 1e3) : void 0;
137
+ return /* @__PURE__ */ t.createElement(
138
+ U,
139
+ {
140
+ variant: "single",
141
+ date: n,
142
+ onDateChange: (l) => {
143
+ l && r(e.id, Math.floor(l.valueOf() / 1e3));
144
+ }
145
+ }
146
+ );
147
+ }
148
+ case c.LONG_TEXT:
149
+ return /* @__PURE__ */ t.createElement(
150
+ x,
151
+ {
152
+ id: e.id,
153
+ placeholder: e.placeholder,
154
+ value: o[e.id],
155
+ onChange: (a) => r(e.id, a.target.value)
156
+ }
157
+ );
158
+ case c.EMAIL:
159
+ return /* @__PURE__ */ t.createElement(
160
+ m,
161
+ {
162
+ type: "email",
163
+ id: e.id,
164
+ value: o[e.id],
165
+ onChange: (a) => r(e.id, a.target.value),
166
+ placeholder: e.placeholder,
167
+ prefix: /* @__PURE__ */ t.createElement(T, { className: "stroke-gray-400", size: 20 })
168
+ }
169
+ );
170
+ case c.SHORT_TEXT:
171
+ return /* @__PURE__ */ t.createElement(
172
+ m,
173
+ {
174
+ id: e.id,
175
+ type: "text",
176
+ placeholder: e.placeholder,
177
+ value: o[e.id],
178
+ onChange: (a) => r(e.id, a.target.value)
179
+ }
180
+ );
181
+ case c.MOBILE_NUMBER:
182
+ return /* @__PURE__ */ t.createElement(
183
+ m,
184
+ {
185
+ prefix: /* @__PURE__ */ t.createElement(O, { className: "stroke-gray-400", size: 20 }),
186
+ type: "tel",
187
+ id: e.id,
188
+ placeholder: e.placeholder,
189
+ value: o[e.id],
190
+ onChange: (a) => r(e.id, a.target.value)
191
+ }
192
+ );
193
+ case c.NUMBER:
194
+ return /* @__PURE__ */ t.createElement(
195
+ m,
196
+ {
197
+ type: "number",
198
+ inputMode: "decimal",
199
+ pattern: "^\\d*\\.?\\d*$",
200
+ id: e.id,
201
+ placeholder: e.placeholder,
202
+ value: o[e.id],
203
+ onChange: (a) => r(e.id, a.target.value)
204
+ }
205
+ );
206
+ case c.SINGLE_IMAGE_PICKER:
207
+ return /* @__PURE__ */ t.createElement(
208
+ y,
209
+ {
210
+ id: e.id,
211
+ onChange: (a) => r(e.id, a),
212
+ value: o[e.id]
213
+ }
214
+ );
215
+ case c.MULTI_IMAGE_PICKER:
216
+ return /* @__PURE__ */ t.createElement(
217
+ M,
218
+ {
219
+ id: e.id,
220
+ onChange: (a) => r(e.id, a),
221
+ value: o[e.id],
222
+ maxImages: e.max_items
223
+ }
224
+ );
225
+ case c.TAGGABLE_MULTI_IMAGE_PICKER:
226
+ return /* @__PURE__ */ t.createElement(
227
+ B,
228
+ {
229
+ id: e.id,
230
+ onChange: (a) => r(e.id, a),
231
+ value: o[e.id],
232
+ options: e.options,
233
+ maxImages: e.max_items
234
+ }
235
+ );
236
+ case c.SINGLE_VIDEO_PICKER:
237
+ return /* @__PURE__ */ t.createElement(
238
+ R,
239
+ {
240
+ id: e.id,
241
+ onChange: (a) => r(e.id, a),
242
+ value: o[e.id]
243
+ }
244
+ );
245
+ case c.MULTI_VIDEO_PICKER:
246
+ return /* @__PURE__ */ t.createElement(
247
+ P,
248
+ {
249
+ id: e.id,
250
+ onChange: (a) => r(e.id, a),
251
+ value: o[e.id],
252
+ maxVideos: e.max_items
253
+ }
254
+ );
255
+ case c.REPEATABLE_GROUP_FIELD:
256
+ return /* @__PURE__ */ t.createElement(N, { field: e });
257
+ case c.SINGLE_VIDEO_PICKER_WITH_INPUT:
258
+ return /* @__PURE__ */ t.createElement(
259
+ m,
260
+ {
261
+ id: e.id,
262
+ required: e.required,
263
+ type: "url",
264
+ placeholder: e.placeholder,
265
+ value: o[e.id],
266
+ onChange: (a) => r(e.id, a.target.value)
267
+ }
268
+ );
269
+ case c.TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT:
270
+ return /* @__PURE__ */ t.createElement(
271
+ G,
272
+ {
273
+ id: e.id,
274
+ onChange: (a) => r(e.id, a),
275
+ value: o[e.id],
276
+ maxImages: e.max_items,
277
+ placeholder: e.placeholder
278
+ }
279
+ );
280
+ default:
281
+ return /* @__PURE__ */ t.createElement("div", null, "Unknown Field");
57
282
  }
58
- ), /* @__PURE__ */ e.createElement(
59
- "button",
60
- {
61
- type: "button",
62
- onClick: () => {
63
- r || l(void 0);
64
- },
65
- className: "absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100"
66
- },
67
- /* @__PURE__ */ e.createElement(w, { size: 16, className: "stroke-danger" })
68
- ), o && /* @__PURE__ */ e.createElement(
69
- "button",
70
- {
71
- type: "button",
72
- onClick: (a) => {
73
- a.currentTarget.blur(), o({
74
- imageUrl: t.public_url,
75
- index: -1,
76
- onReplaceImage: y
77
- });
78
- },
79
- className: "absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100"
80
- },
81
- /* @__PURE__ */ e.createElement(k, { size: 16, className: "stroke-danger" })
82
- ))));
283
+ };
284
+ return /* @__PURE__ */ t.createElement("aside", { className: "flex flex-col gap-1" }, /* @__PURE__ */ t.createElement(s, { variant: "body1", className: "text-light-2" }, e.name, e.required && /* @__PURE__ */ t.createElement("span", { className: "text-danger-1" }, "*")), g(), i[e.id] && /* @__PURE__ */ t.createElement("div", { className: "error-message" }, i[e.id]));
83
285
  };
84
286
  export {
85
- j as SingleImagePicker
287
+ f as FormField
86
288
  };
87
289
  //# sourceMappingURL=index.es173.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es173.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/single-image-picker/index.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { Upload, X, Pen } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue } from '../../../../form.types'\n\ninterface ImagePickerProps {\n id: string\n onChange: (data?: AssetValue) => void\n value?: AssetValue\n accept?: string\n error?: string\n}\n\nconst SingleImagePicker: React.FC<ImagePickerProps> = ({\n id,\n onChange,\n value,\n accept = 'image/*',\n error,\n}) => {\n const { onAssetUpload, onToggleImageEditor } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const handleImageSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file || isLoading) return\n if (onAssetUpload) {\n setIsLoading(true)\n onAssetUpload(file)\n .then((data: AssetValue) => {\n onChange({ ...data, original_private_url: data.private_url })\n\n toast({\n title: 'Alert!',\n description: `File uploaded successfully.`,\n icon: 'success',\n })\n })\n .catch(() => {\n onChange(undefined)\n toast({\n title: 'Alert!',\n description: `Error uploading file`,\n icon: 'warning',\n })\n })\n .finally(() => {\n setIsLoading(false)\n // Reset the file input so the same file can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n })\n }\n }\n\n const onReplaceImage = (data: AssetValue) => {\n onChange({\n ...data,\n original_private_url: value?.original_private_url ?? value?.private_url,\n })\n }\n\n const handleClick = () => {\n if (!isLoading) {\n fileInputRef.current?.click()\n }\n }\n\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button className=\"w-full\" onClick={handleClick}>\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Upload className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value\n ? 'Replace Image'\n : 'Attach Image'}\n </Typography>\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading}\n onChange={handleImageSelect}\n className=\"hidden\"\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n {value && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4\">\n <div className=\"relative flex rounded\">\n <img\n src={value.public_url}\n alt=\"Preview\"\n className=\"object-cover w-full h-24 rounded\"\n />\n <button\n type=\"button\"\n onClick={() => {\n if (!isLoading) {\n onChange(undefined)\n }\n }}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n {onToggleImageEditor && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.currentTarget.blur()\n onToggleImageEditor({\n imageUrl: value.public_url,\n index: -1,\n onReplaceImage,\n })\n }}\n className=\"absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100\"\n >\n <Pen size={16} className=\"stroke-danger\" />\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport { SingleImagePicker }\n"],"names":["SingleImagePicker","id","onChange","value","accept","error","onAssetUpload","onToggleImageEditor","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","handleImageSelect","e","file","data","onReplaceImage","handleClick","React","Spinner","Upload","Typography","X","Pen"],"mappings":"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"}
1
+ {"version":3,"file":"index.es173.js","sources":["../src/components/ui/form-renderer/components/form-fields/index.tsx"],"sourcesContent":["// components/FormField.tsx\nimport React from 'react'\nimport {\n AssetValue,\n FormField as FormFieldInterface,\n RadioGroupWithInputFieldValue,\n TaggableAssetValue,\n} from '../../form.types'\nimport { useFormValues } from '../../context/form-values'\nimport { Input } from '@/components/atoms/input'\nimport { Checkbox } from '@/components/atoms/checkbox'\nimport { RadioGroup } from '@/components/atoms/radio-group'\nimport { RadioGroupItem } from '@/components/atoms/radio-group'\nimport { MultiCombobox } from '@/components/molecules/multi-combobox'\nimport { SingleCombobox } from '@/components/molecules/single-combobox'\nimport { CreatableMultiCombobox } from '@/components/molecules/creatable-multi-combobox'\nimport { Textarea } from '@/components/atoms/textarea'\nimport { Typography } from '@/components/atoms/typography'\n\nimport { Mail, Phone } from 'lucide-react'\nimport { SingleImagePicker } from './components/single-image-picker'\nimport { SingleVideoPicker } from './components/single-video-picker'\nimport { MultiImagePicker } from './components/multi-image-picker'\nimport { MultiVideoPicker } from './components/multi-video-picker'\nimport { RepeatableGroup } from './components/repeatable-group'\nimport { TaggableMultiImagePicker } from './components/taggable-multi-image-picker'\nimport { FormFieldType } from '../../form.enums'\nimport { DatePicker } from '@/components/unstyled/date-picker'\nimport { TaggableImageUploadFieldWithInput } from './components/taggable-multi-image-picker-with-input'\n\ninterface FormFieldProps {\n field: FormFieldInterface\n}\n\nexport const FormField: React.FC<FormFieldProps> = ({ field }) => {\n const {\n values,\n errors,\n setValue,\n getRequestHeaders,\n getCreateOptionExtraBody,\n } = useFormValues()\n\n const renderField = () => {\n switch (field.type) {\n case FormFieldType.SINGLE_COMBOBOX:\n return (\n <SingleCombobox\n options={field.options.map((option) => ({\n id: option,\n name: option,\n }))}\n value={values[field.id] as string}\n onChange={(data) => setValue(field.id, data)}\n placeholder={field.placeholder}\n />\n )\n\n case FormFieldType.CREATABLE_MULTI_COMBOBOX: {\n const selected =\n (values[field.id] as string)?.split(',').filter(Boolean) ?? []\n return (\n <CreatableMultiCombobox\n fieldId={field.id}\n optionsUrl={field.optionsUrl}\n createOptionUrl={field.createOptionUrl}\n optionsRequestBody={field.optionsRequestBody}\n createOptionRequestBody={field.createOptionRequestBody}\n createOptionValueKey={field.createOptionValueKey}\n createOptionExtraBody={\n field.skipCreateOptionExtraBody\n ? undefined\n : getCreateOptionExtraBody\n }\n requestHeaders={getRequestHeaders}\n urlTemplateData={values}\n value={selected}\n onChange={(data) =>\n setValue(field.id, data.length > 0 ? data.join(',') : undefined)\n }\n placeholder={field.placeholder}\n minSelected={field.minSelected}\n maxSelected={field.maxSelected}\n />\n )\n }\n\n case FormFieldType.MULTI_COMBOBOX:\n return (\n <MultiCombobox\n options={field.options.map((option) => ({\n label: option,\n value: option,\n }))}\n selected={(values[field.id] as string)?.split(',') || []}\n onChange={(data) => {\n if (data.length === 0) {\n setValue(field.id, undefined)\n } else {\n setValue(field.id, (data as string[]).join(','))\n }\n }}\n placeholder={field.placeholder}\n />\n )\n\n case FormFieldType.RADIO_GROUP:\n return (\n <RadioGroup\n value={values[field.id] as string}\n onValueChange={(data) => setValue(field.id, data)}\n >\n {field.options.map((option) => (\n <div key={option} className=\"flex items-center space-x-2\">\n <RadioGroupItem value={option} id={option} />\n <Typography variant=\"body1\" className=\"text-light-4\">\n {option}\n </Typography>\n </div>\n ))}\n </RadioGroup>\n )\n\n case FormFieldType.RADIO_GROUP_WITH_OPTIONAL_INPUT: {\n const value = values[field.id] as RadioGroupWithInputFieldValue\n return (\n <div>\n <RadioGroup\n value={value?.radio_value}\n onValueChange={(data) =>\n setValue(field.id, {\n ...value,\n radio_value: data,\n input_value: '',\n })\n }\n >\n {field.options.map((option) => (\n <div key={option} className=\"flex items-center space-x-2\">\n <RadioGroupItem value={option} id={option} />\n <Typography variant=\"body1\" className=\"text-light-4\">\n {option}\n </Typography>\n </div>\n ))}\n </RadioGroup>\n {field.inputTriggerOptionValue === value?.radio_value ? (\n <Input\n id={field.id}\n type=\"text\"\n placeholder={field.inputFieldPlaceholder}\n value={value?.input_value}\n onChange={(e) =>\n setValue(field.id, {\n ...value,\n input_value: e.target.value,\n })\n }\n />\n ) : null}\n </div>\n )\n }\n\n case FormFieldType.CHECKBOX_GROUP: {\n const value = values[field.id] as string\n return (\n <div className=\"flex flex-col gap-2\">\n {field.options.map((option) => {\n return (\n <div key={option} className=\"flex items-center space-x-2\">\n <Checkbox\n id={option}\n checked={value?.split(',').includes(option)}\n onCheckedChange={(data) => {\n if (data) {\n setValue(\n field.id,\n value ? `${value},${option}` : option\n )\n } else {\n setValue(\n field.id,\n value\n ?.split(',')\n .filter((item) => item !== option)\n .join(',')\n )\n }\n }}\n />\n <Typography variant=\"body1\" className=\"text-light-4\">\n {option}\n </Typography>\n </div>\n )\n })}\n </div>\n )\n }\n\n case FormFieldType.DATE_PICKER: {\n const epochValue = values[field.id] as number | undefined\n const dateValue = epochValue ? new Date(epochValue * 1000) : undefined\n return (\n <DatePicker\n variant=\"single\"\n date={dateValue}\n onDateChange={(date) => {\n if (date) {\n setValue(field.id, Math.floor(date.valueOf() / 1000))\n }\n }}\n />\n )\n }\n\n case FormFieldType.LONG_TEXT:\n return (\n <Textarea\n id={field.id}\n placeholder={field.placeholder}\n value={values[field.id] as string}\n onChange={(e) => setValue(field.id, e.target.value)}\n />\n )\n\n case FormFieldType.EMAIL:\n return (\n <Input\n type=\"email\"\n id={field.id}\n value={values[field.id] as string}\n onChange={(e) => setValue(field.id, e.target.value)}\n placeholder={field.placeholder}\n prefix={<Mail className=\"stroke-gray-400\" size={20} />}\n />\n )\n\n case FormFieldType.SHORT_TEXT:\n // Default string input\n return (\n <Input\n id={field.id}\n type=\"text\"\n placeholder={field.placeholder}\n value={values[field.id] as string}\n onChange={(e) => setValue(field.id, e.target.value)}\n />\n )\n case FormFieldType.MOBILE_NUMBER:\n return (\n <Input\n prefix={<Phone className=\"stroke-gray-400\" size={20} />}\n type=\"tel\"\n id={field.id}\n placeholder={field.placeholder}\n value={values[field.id] as string}\n onChange={(e) => setValue(field.id, e.target.value)}\n />\n )\n case FormFieldType.NUMBER:\n return (\n <Input\n // type=\"number\"\n type=\"number\"\n inputMode=\"decimal\"\n pattern=\"^\\d*\\.?\\d*$\"\n id={field.id}\n placeholder={field.placeholder}\n value={values[field.id] as string}\n onChange={(e) => setValue(field.id, e.target.value)}\n />\n )\n case FormFieldType.SINGLE_IMAGE_PICKER:\n return (\n <SingleImagePicker\n id={field.id}\n onChange={(data?: AssetValue) => setValue(field.id, data)}\n value={values[field.id] as AssetValue | undefined}\n />\n )\n\n case FormFieldType.MULTI_IMAGE_PICKER:\n return (\n <MultiImagePicker\n id={field.id}\n onChange={(data?: AssetValue[]) => setValue(field.id, data)}\n value={values[field.id] as AssetValue[] | undefined}\n maxImages={field.max_items}\n />\n )\n\n case FormFieldType.TAGGABLE_MULTI_IMAGE_PICKER:\n return (\n <TaggableMultiImagePicker\n id={field.id}\n onChange={(data?: TaggableAssetValue[]) => setValue(field.id, data)}\n value={values[field.id] as TaggableAssetValue[] | undefined}\n options={field.options}\n maxImages={field.max_items}\n />\n )\n\n case FormFieldType.SINGLE_VIDEO_PICKER:\n return (\n <SingleVideoPicker\n id={field.id}\n onChange={(data?: AssetValue) => setValue(field.id, data)}\n value={values[field.id] as AssetValue | undefined}\n />\n )\n\n case FormFieldType.MULTI_VIDEO_PICKER:\n return (\n <MultiVideoPicker\n id={field.id}\n onChange={(data?: AssetValue[]) => setValue(field.id, data)}\n value={values[field.id] as AssetValue[] | undefined}\n maxVideos={field.max_items}\n />\n )\n\n case FormFieldType.REPEATABLE_GROUP_FIELD: {\n return <RepeatableGroup field={field} />\n }\n\n case FormFieldType.SINGLE_VIDEO_PICKER_WITH_INPUT: {\n return (\n <Input\n id={field.id}\n required={field.required}\n type=\"url\"\n placeholder={field.placeholder}\n value={values[field.id] as string}\n onChange={(e) => setValue(field.id, e.target.value)}\n />\n )\n }\n\n case FormFieldType.TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT: {\n return (\n <TaggableImageUploadFieldWithInput\n id={field.id}\n onChange={(data?: TaggableAssetValue[]) => setValue(field.id, data)}\n value={values[field.id] as TaggableAssetValue[] | undefined}\n maxImages={field.max_items}\n placeholder={field.placeholder}\n />\n )\n }\n\n default:\n return <div>Unknown Field</div>\n }\n }\n\n return (\n <aside className=\"flex flex-col gap-1\">\n <Typography variant=\"body1\" className=\"text-light-2\">\n {field.name}\n {field.required && <span className=\"text-danger-1\">*</span>}\n </Typography>\n {renderField()}\n {errors[field.id] && (\n <div className=\"error-message\">{errors[field.id]}</div>\n )}\n </aside>\n )\n}\n"],"names":["FormField","field","values","errors","setValue","getRequestHeaders","getCreateOptionExtraBody","useFormValues","renderField","FormFieldType","React","SingleCombobox","option","data","selected","CreatableMultiCombobox","MultiCombobox","RadioGroup","RadioGroupItem","Typography","value","Input","e","Checkbox","item","epochValue","dateValue","DatePicker","date","Textarea","Mail","Phone","SingleImagePicker","MultiImagePicker","TaggableMultiImagePicker","SingleVideoPicker","MultiVideoPicker","RepeatableGroup","TaggableImageUploadFieldWithInput"],"mappings":"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"}
@@ -1,79 +1,38 @@
1
- import { Typography as d } from "./index.es19.js";
2
- import { Spinner as y } from "./index.es64.js";
3
- import { Video as h, X as N } from "lucide-react";
4
- import e, { useState as x, useRef as m } from "react";
5
- import { useFormValues as k } from "./index.es160.js";
6
- import { useToast as w } from "./index.es87.js";
7
- const j = ({
8
- id: u,
9
- onChange: r,
10
- value: l,
11
- accept: p = "video/*",
12
- error: i
13
- }) => {
14
- const { onAssetUpload: c } = k(), { toast: s } = w(), [t, o] = x(!1), a = m(null), f = m(null), g = (v) => {
15
- const n = v.target.files?.[0];
16
- !n || t || c && (o(!0), c(n).then((b) => {
17
- r(b), s({
18
- title: "Alert!",
19
- description: "Video uploaded successfully.",
20
- icon: "success"
21
- });
22
- }).catch(() => {
23
- r(void 0), s({
24
- title: "Alert!",
25
- description: "Error uploading video",
26
- icon: "warning"
27
- });
28
- }).finally(() => {
29
- o(!1), a.current && (a.current.value = "");
30
- }));
31
- }, E = () => {
32
- t || a.current?.click();
1
+ import * as r from "react";
2
+ import { Clock4 as m } from "lucide-react";
3
+ import { convertEpochTime as i } from "./index.es185.js";
4
+ import { AvatarDemo as c } from "./index.es6.js";
5
+ import { Typography as a } from "./index.es19.js";
6
+ const u = (e) => {
7
+ const l = (t) => t ? t.split(" ").map((s) => s[0]).join("").toUpperCase() : "", o = () => {
8
+ typeof window < "u" && e?.action?.redirect_url && (window.location.href = e?.action?.redirect_url);
33
9
  };
34
- return /* @__PURE__ */ e.createElement("div", { className: "relative" }, t && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70" }, /* @__PURE__ */ e.createElement(y, { className: "w-8 h-8 text-primary-1" })), /* @__PURE__ */ e.createElement("div", { className: "relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1" }, /* @__PURE__ */ e.createElement("button", { className: "w-full", onClick: E }, /* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(h, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(d, { variant: "body1", className: "text-gray-600" }, t ? "Uploading..." : l ? "Replace Video" : "Attach Video"))), /* @__PURE__ */ e.createElement(
35
- "input",
36
- {
37
- ref: a,
38
- id: `${u}-gallery`,
39
- type: "file",
40
- accept: p,
41
- disabled: t,
42
- onChange: g,
43
- className: "hidden"
44
- }
45
- ), i && /* @__PURE__ */ e.createElement(d, { variant: "body1", className: "mt-1 text-danger-1" }, i)), l && /* @__PURE__ */ e.createElement("div", { className: "grid grid-cols-2 gap-4 mt-4 sm:grid-cols-2 md:grid-cols-2" }, /* @__PURE__ */ e.createElement("div", { className: "relative flex rounded" }, /* @__PURE__ */ e.createElement(
46
- "video",
47
- {
48
- ref: f,
49
- src: l.public_url,
50
- className: "object-cover h-32 rounded",
51
- controls: !0,
52
- controlsList: "nodownload",
53
- preload: "metadata"
54
- },
55
- /* @__PURE__ */ e.createElement(
56
- "track",
57
- {
58
- kind: "captions",
59
- label: "English captions",
60
- srcLang: "en",
61
- src: "",
62
- default: !0
63
- }
64
- )
65
- ), /* @__PURE__ */ e.createElement(
66
- "button",
10
+ return /* @__PURE__ */ r.createElement(
11
+ "div",
67
12
  {
13
+ className: "flex flex-row items-start justify-start gap-2 p-3 border-b border-neutral-1 bg-light-1 hover:cursor-pointer",
68
14
  onClick: () => {
69
- t || r(void 0);
15
+ o();
16
+ },
17
+ role: "button",
18
+ onKeyDown: (t) => {
19
+ t.key === "Enter" && o();
70
20
  },
71
- className: "absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100"
21
+ tabIndex: 0
72
22
  },
73
- /* @__PURE__ */ e.createElement(N, { size: 16, className: "stroke-danger" })
74
- ))));
23
+ /* @__PURE__ */ r.createElement(
24
+ c,
25
+ {
26
+ fallback: l(e.user.first_name),
27
+ imageSrc: e.user.profile_url,
28
+ alt: l(e.user.first_name),
29
+ size: "md"
30
+ }
31
+ ),
32
+ /* @__PURE__ */ r.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ r.createElement(a, { variant: "body3", className: "text-light-2 hover:underline" }, e.title), /* @__PURE__ */ r.createElement(a, { variant: "body4", className: "text-light-3" }, e.description), /* @__PURE__ */ r.createElement("div", { className: "flex flex-row gap-[6px]" }, /* @__PURE__ */ r.createElement(m, { size: 16, className: "stroke-light-2" }), /* @__PURE__ */ r.createElement(a, { variant: "body6", className: "text-light-3" }, i(Number(e.timestamp)))))
33
+ );
75
34
  };
76
35
  export {
77
- j as SingleVideoPicker
36
+ u as default
78
37
  };
79
38
  //# sourceMappingURL=index.es174.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es174.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/single-video-picker/index.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { X, Video } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue } from '../../../../form.types'\n\ninterface VideoPickerProps {\n id: string\n onChange: (data?: AssetValue) => void\n value?: AssetValue\n accept?: string\n error?: string\n}\n\nconst SingleVideoPicker: React.FC<VideoPickerProps> = ({\n id,\n onChange,\n value,\n accept = 'video/*',\n error,\n}) => {\n const { onAssetUpload } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n const videoElRef = useRef<HTMLVideoElement>(null)\n\n const handleVideoSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file || isLoading) return\n if (onAssetUpload) {\n setIsLoading(true)\n onAssetUpload(file)\n .then((data: AssetValue) => {\n onChange(data)\n\n toast({\n title: 'Alert!',\n description: `Video uploaded successfully.`,\n icon: 'success',\n })\n })\n .catch(() => {\n onChange(undefined)\n toast({\n title: 'Alert!',\n description: `Error uploading video`,\n icon: 'warning',\n })\n })\n .finally(() => {\n setIsLoading(false)\n // Reset the file input so the same video can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n })\n }\n }\n\n const handleClick = () => {\n if (!isLoading) {\n fileInputRef.current?.click()\n }\n }\n\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button className=\"w-full\" onClick={handleClick}>\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Video className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value\n ? 'Replace Video'\n : 'Attach Video'}\n </Typography>\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading}\n onChange={handleVideoSelect}\n className=\"hidden\"\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n {value && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-2 md:grid-cols-2\">\n <div className=\"relative flex rounded\">\n <video\n ref={videoElRef}\n src={value.public_url}\n className=\"object-cover h-32 rounded\"\n controls={true}\n controlsList=\"nodownload\"\n preload=\"metadata\"\n >\n {/* Add caption track for accessibility */}\n <track\n kind=\"captions\"\n label=\"English captions\"\n srcLang=\"en\"\n src=\"\"\n default\n />\n </video>\n <button\n onClick={() => {\n if (!isLoading) {\n onChange(undefined)\n }\n }}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport { SingleVideoPicker }\n"],"names":["SingleVideoPicker","id","onChange","value","accept","error","onAssetUpload","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","videoElRef","handleVideoSelect","e","file","data","handleClick","React","Spinner","Video","Typography","X"],"mappings":"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"}
1
+ {"version":3,"file":"index.es174.js","sources":["../src/components/organisms/navbar/components/notification-panel/components/notification-card/notification-card.tsx"],"sourcesContent":["import { FC } from 'react'\nimport { NotificationCardProps } from './notification-card.types'\nimport * as React from 'react'\nimport { Clock4 } from 'lucide-react'\nimport { convertEpochTime } from './notification.utils'\nimport { Avatar } from '@/components/atoms/avatar'\nimport { Typography } from '@/components/atoms/typography'\n\nconst NotificationCard: FC<NotificationCardProps> = (notification) => {\n const getInitials = (name: string): string => {\n if (!name) {\n return ''\n }\n return name\n .split(' ')\n .map((word) => word[0])\n .join('')\n .toUpperCase()\n }\n\n const onCardClick = () => {\n if (typeof window !== 'undefined' && notification?.action?.redirect_url)\n window.location.href = notification?.action?.redirect_url\n }\n\n return (\n <div\n className=\"flex flex-row items-start justify-start gap-2 p-3 border-b border-neutral-1 bg-light-1 hover:cursor-pointer\"\n onClick={() => {\n onCardClick()\n }}\n role=\"button\"\n onKeyDown={(event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n onCardClick()\n }\n }}\n tabIndex={0}\n >\n <Avatar\n fallback={getInitials(notification.user.first_name)}\n imageSrc={notification.user.profile_url}\n alt={getInitials(notification.user.first_name)}\n size=\"md\"\n />\n <div className=\"flex flex-col gap-1\">\n <Typography variant=\"body3\" className=\"text-light-2 hover:underline\">\n {notification.title}\n </Typography>\n <Typography variant=\"body4\" className=\"text-light-3\">\n {notification.description}\n </Typography>\n\n <div className=\"flex flex-row gap-[6px]\">\n <Clock4 size={16} className=\"stroke-light-2\" />\n <Typography variant=\"body6\" className=\"text-light-3\">\n {convertEpochTime(Number(notification.timestamp))}\n </Typography>\n </div>\n </div>\n </div>\n )\n}\n\nexport default NotificationCard\n"],"names":["NotificationCard","notification","getInitials","name","word","onCardClick","React","event","Avatar","Typography","Clock4","convertEpochTime"],"mappings":";;;;;AAQA,MAAMA,IAA8C,CAACC,MAAiB;AACpE,QAAMC,IAAc,CAACC,MACdA,IAGEA,EACJ,MAAM,GAAG,EACT,IAAI,CAACC,MAASA,EAAK,CAAC,CAAC,EACrB,KAAK,EAAE,EACP,YAAA,IANM,IASLC,IAAc,MAAM;AACxB,IAAI,OAAO,SAAW,OAAeJ,GAAc,QAAQ,iBACzD,OAAO,SAAS,OAAOA,GAAc,QAAQ;AAAA,EACjD;AAEA,SACE,gBAAAK,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAS,MAAM;AACb,QAAAD,EAAA;AAAA,MACF;AAAA,MACA,MAAK;AAAA,MACL,WAAW,CAACE,MAA+B;AACzC,QAAIA,EAAM,QAAQ,WAChBF,EAAA;AAAA,MAEJ;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,IAEV,gBAAAC,EAAA;AAAA,MAACE;AAAAA,MAAA;AAAA,QACC,UAAUN,EAAYD,EAAa,KAAK,UAAU;AAAA,QAClD,UAAUA,EAAa,KAAK;AAAA,QAC5B,KAAKC,EAAYD,EAAa,KAAK,UAAU;AAAA,QAC7C,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP,gBAAAK,EAAA,cAAC,SAAI,WAAU,sBAAA,mCACZG,GAAA,EAAW,SAAQ,SAAQ,WAAU,kCACnCR,EAAa,KAChB,mCACCQ,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBACnCR,EAAa,WAChB,GAEA,gBAAAK,EAAA,cAAC,SAAI,WAAU,0BAAA,mCACZI,GAAA,EAAO,MAAM,IAAI,WAAU,iBAAA,CAAiB,GAC7C,gBAAAJ,EAAA,cAACG,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBACnCE,EAAiB,OAAOV,EAAa,SAAS,CAAC,CAClD,CACF,CACF;AAAA,EAAA;AAGN;"}