chordia-ui 3.2.3 → 3.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/IntegrationCard.cjs.js +2 -0
  2. package/dist/IntegrationCard.cjs.js.map +1 -0
  3. package/dist/IntegrationCard.es.js +188 -0
  4. package/dist/IntegrationCard.es.js.map +1 -0
  5. package/dist/SideDrawer.cjs.js +2 -0
  6. package/dist/SideDrawer.cjs.js.map +1 -0
  7. package/dist/SideDrawer.es.js +486 -0
  8. package/dist/SideDrawer.es.js.map +1 -0
  9. package/dist/UploadInteraction.cjs.js +2 -0
  10. package/dist/UploadInteraction.cjs.js.map +1 -0
  11. package/dist/UploadInteraction.es.js +379 -0
  12. package/dist/UploadInteraction.es.js.map +1 -0
  13. package/dist/components/common.cjs.js +1 -1
  14. package/dist/components/common.es.js +13 -11
  15. package/dist/components/layout.cjs.js +2 -2
  16. package/dist/components/layout.cjs.js.map +1 -1
  17. package/dist/components/layout.es.js +202 -411
  18. package/dist/components/layout.es.js.map +1 -1
  19. package/dist/components/navigation.cjs.js +1 -1
  20. package/dist/components/navigation.cjs.js.map +1 -1
  21. package/dist/components/navigation.es.js +212 -203
  22. package/dist/components/navigation.es.js.map +1 -1
  23. package/dist/components/onboarding.cjs.js +2 -0
  24. package/dist/components/onboarding.cjs.js.map +1 -0
  25. package/dist/components/onboarding.es.js +712 -0
  26. package/dist/components/onboarding.es.js.map +1 -0
  27. package/dist/index.cjs.js +1 -1
  28. package/dist/index.cjs2.js +1 -1
  29. package/dist/index.cjs2.js.map +1 -1
  30. package/dist/index.es.js +74 -64
  31. package/dist/index.es.js.map +1 -1
  32. package/dist/index.es2.js +2 -2
  33. package/dist/index.es2.js.map +1 -1
  34. package/dist/pages/interactionDetails.cjs.js +1 -1
  35. package/dist/pages/interactionDetails.cjs.js.map +1 -1
  36. package/dist/pages/interactionDetails.es.js +16 -15
  37. package/dist/pages/interactionDetails.es.js.map +1 -1
  38. package/package.json +5 -1
  39. package/src/components/common/SideDrawer.jsx +321 -0
  40. package/src/components/common/index.js +1 -0
  41. package/src/components/index.js +4 -1
  42. package/src/components/layout/IntegrationCard.jsx +151 -141
  43. package/src/components/login/LoginPage.jsx +2 -2
  44. package/src/components/navigation/Sidebar.jsx +59 -39
  45. package/src/components/onboarding/AddTeammates.jsx +278 -0
  46. package/src/components/onboarding/GettingStarted.jsx +4 -0
  47. package/src/components/onboarding/UploadInteraction.jsx +3 -3
  48. package/src/components/onboarding/index.js +5 -0
  49. package/dist/AutoSearch.cjs.js +0 -2
  50. package/dist/AutoSearch.cjs.js.map +0 -1
  51. package/dist/AutoSearch.es.js +0 -190
  52. package/dist/AutoSearch.es.js.map +0 -1
@@ -0,0 +1,486 @@
1
+ import { jsxs as d, jsx as e, Fragment as S } from "react/jsx-runtime";
2
+ import { useState as w, useRef as B, useMemo as E, useEffect as D } from "react";
3
+ import { Search as N, X as I, PlusCircle as O } from "lucide-react";
4
+ import { T } from "./TextInput.es.js";
5
+ import { S as F } from "./SmallButton.es.js";
6
+ const V = ({
7
+ options: c = [],
8
+ value: a = null,
9
+ onChange: n,
10
+ placeholder: s = "Search...",
11
+ disabled: u = !1,
12
+ showSuggestions: i = !0,
13
+ styling: y,
14
+ isAddNew: x = !1
15
+ }) => {
16
+ const [l, f] = w(""), [h, p] = w(!1), [o, m] = w(null), b = B(null), k = E(() => {
17
+ if (!i)
18
+ return [];
19
+ const t = l.toLowerCase();
20
+ return c.filter((r) => {
21
+ if (!r)
22
+ return !1;
23
+ const v = r.label || "", g = r.value || "";
24
+ return (v.toLowerCase().includes(t) || g.toLowerCase().includes(t)) && (!o || r.value !== o.value);
25
+ });
26
+ }, [l, c, i, o]), z = E(() => {
27
+ if (!x)
28
+ return !1;
29
+ const t = l.toLowerCase();
30
+ return c.some((r) => {
31
+ if (!r)
32
+ return !1;
33
+ const v = r.label || "", g = r.value || "";
34
+ return v.toLowerCase() === t || g.toLowerCase() === t;
35
+ });
36
+ }, [c, l, x]);
37
+ D(() => {
38
+ if (!h)
39
+ return;
40
+ const t = (r) => {
41
+ b.current && !b.current.contains(r.target) && p(!1);
42
+ };
43
+ return document.addEventListener("mousedown", t), () => document.removeEventListener("mousedown", t);
44
+ }, [h]);
45
+ const L = (t) => {
46
+ n == null || n(t), f(""), p(!1), m(null);
47
+ }, R = () => {
48
+ const t = { label: l, value: l };
49
+ m(t), n == null || n(t), p(!1), f("");
50
+ }, j = () => {
51
+ n == null || n(null), f(""), p(!1), m(null);
52
+ }, H = (t) => {
53
+ const r = t.target.value;
54
+ i ? (f(r), p(!0)) : x ? (f(r), p(r.length >= 3)) : n == null || n(r);
55
+ }, M = () => {
56
+ (i || x) && p(!0);
57
+ }, W = h && !a && l.length >= 3;
58
+ return /* @__PURE__ */ d("div", { className: "relative w-full", ref: b, children: [
59
+ /* @__PURE__ */ d(
60
+ "div",
61
+ {
62
+ className: y || "flex items-center gap-2 border rounded-md px-3 py-2 bg-white shadow-sm",
63
+ children: [
64
+ /* @__PURE__ */ e(N, { className: "w-4 h-4 text-gray-400" }),
65
+ /* @__PURE__ */ e("div", { className: "flex-1", children: i && a ? /* @__PURE__ */ e(
66
+ "div",
67
+ {
68
+ className: "text-gray-800 truncate",
69
+ title: a.label,
70
+ style: {
71
+ fontSize: "var(--text-sm)",
72
+ fontWeight: "var(--font-medium)",
73
+ letterSpacing: "var(--tracking-normal)",
74
+ lineHeight: "var(--leading-normal)",
75
+ textTransform: "none",
76
+ textDecoration: "none",
77
+ fontFamily: "var(--font-sans)"
78
+ },
79
+ children: a.label
80
+ }
81
+ ) : /* @__PURE__ */ e(
82
+ T,
83
+ {
84
+ value: i || x ? l : a || "",
85
+ onChange: (t) => H({ target: { value: t } }),
86
+ placeholder: s,
87
+ disabled: u,
88
+ style: {
89
+ border: "none",
90
+ boxShadow: "none",
91
+ padding: 0,
92
+ backgroundColor: "transparent"
93
+ },
94
+ onFocus: M
95
+ }
96
+ ) }),
97
+ (a || o) && /* @__PURE__ */ e(
98
+ F,
99
+ {
100
+ type: "button",
101
+ variant: "ghost",
102
+ size: "sm",
103
+ onClick: j,
104
+ style: {
105
+ padding: 0,
106
+ width: 20,
107
+ height: 20,
108
+ border: "none",
109
+ backgroundColor: "transparent",
110
+ color: "rgba(107,114,128,1)"
111
+ },
112
+ children: /* @__PURE__ */ e(I, { className: "w-3 h-3" })
113
+ }
114
+ )
115
+ ]
116
+ }
117
+ ),
118
+ W && /* @__PURE__ */ d(
119
+ "div",
120
+ {
121
+ className: "absolute w-full rounded-md border border-gray-300 bg-white shadow-lg custom-thin-scrollbar-library",
122
+ style: {
123
+ maxHeight: 240,
124
+ overflowY: "auto",
125
+ zIndex: 30
126
+ },
127
+ children: [
128
+ k.length > 0 && /* @__PURE__ */ e("ul", { className: "m-0 p-0 list-none", children: k.map((t) => /* @__PURE__ */ e(
129
+ "li",
130
+ {
131
+ onClick: () => L(t),
132
+ onMouseEnter: (r) => {
133
+ r.currentTarget.style.backgroundColor = "var(--hover-warm)";
134
+ },
135
+ onMouseLeave: (r) => {
136
+ r.currentTarget.style.backgroundColor = "transparent";
137
+ },
138
+ className: "cursor-pointer px-4 py-2",
139
+ title: t.label,
140
+ children: /* @__PURE__ */ e(
141
+ "span",
142
+ {
143
+ className: "truncate block w-full",
144
+ style: {
145
+ fontFamily: "var(--font-sans)",
146
+ color: "var(--text-base)",
147
+ fontSize: "var(--text-sm)",
148
+ fontWeight: "var(--font-medium)",
149
+ letterSpacing: "var(--tracking-normal)",
150
+ lineHeight: "var(--leading-normal)",
151
+ textTransform: "none",
152
+ textDecoration: "none"
153
+ },
154
+ children: t.label
155
+ }
156
+ )
157
+ },
158
+ t.value
159
+ )) }),
160
+ x && !z && !o && l.length >= 3 && /* @__PURE__ */ d(
161
+ F,
162
+ {
163
+ type: "button",
164
+ variant: "secondary",
165
+ onClick: R,
166
+ style: {
167
+ width: "100%",
168
+ justifyContent: "space-between",
169
+ padding: "8px 10px",
170
+ border: "none",
171
+ borderTop: "1px solid rgba(229, 231, 235, 1)",
172
+ borderRadius: 0,
173
+ backgroundColor: "transparent",
174
+ color: "rgba(107,114,128,1)"
175
+ },
176
+ children: [
177
+ /* @__PURE__ */ e("span", { children: `Add "${l}"` }),
178
+ /* @__PURE__ */ e(O, { className: "w-5 h-5 text-green-500" })
179
+ ]
180
+ }
181
+ )
182
+ ]
183
+ }
184
+ )
185
+ ] });
186
+ };
187
+ function X({
188
+ open: c,
189
+ onClose: a,
190
+ title: n,
191
+ subtitle: s,
192
+ children: u,
193
+ footer: i,
194
+ width: y = 515,
195
+ height: x = 762,
196
+ toggleLabel: l,
197
+ toggleChecked: f,
198
+ onToggle: h
199
+ }) {
200
+ const p = B(null);
201
+ return D(() => {
202
+ if (!c)
203
+ return;
204
+ const o = (m) => {
205
+ m.key === "Escape" && (a == null || a());
206
+ };
207
+ return document.addEventListener("keydown", o), () => document.removeEventListener("keydown", o);
208
+ }, [c, a]), c ? /* @__PURE__ */ d(S, { children: [
209
+ /* @__PURE__ */ e(
210
+ "div",
211
+ {
212
+ onClick: a,
213
+ style: {
214
+ position: "fixed",
215
+ inset: 0,
216
+ zIndex: 1200,
217
+ background: "rgba(0, 0, 0, 0.20)"
218
+ }
219
+ }
220
+ ),
221
+ /* @__PURE__ */ d(
222
+ "div",
223
+ {
224
+ ref: p,
225
+ style: {
226
+ position: "fixed",
227
+ top: "50%",
228
+ right: 0,
229
+ transform: "translateY(-50%)",
230
+ zIndex: 1201,
231
+ display: "flex",
232
+ width: y,
233
+ height: x,
234
+ maxHeight: "100vh",
235
+ padding: "20px",
236
+ flexDirection: "column",
237
+ alignItems: "flex-start",
238
+ gap: "20px",
239
+ borderRadius: "12px 0 0 12px",
240
+ background: "#FFF",
241
+ boxShadow: "648px 0 100px 0 rgba(0, 0, 0, 0.20)"
242
+ },
243
+ children: [
244
+ /* @__PURE__ */ d(
245
+ "div",
246
+ {
247
+ style: {
248
+ display: "flex",
249
+ alignItems: "center",
250
+ justifyContent: "space-between",
251
+ width: "100%",
252
+ flexShrink: 0
253
+ },
254
+ children: [
255
+ /* @__PURE__ */ e(
256
+ "h2",
257
+ {
258
+ style: {
259
+ fontSize: "20px",
260
+ fontWeight: 700,
261
+ color: "var(--Base-Strong, #0B0B0B)",
262
+ margin: 0,
263
+ lineHeight: 1.3
264
+ },
265
+ children: n
266
+ }
267
+ ),
268
+ /* @__PURE__ */ e(
269
+ "button",
270
+ {
271
+ onClick: a,
272
+ style: {
273
+ display: "flex",
274
+ alignItems: "center",
275
+ justifyContent: "center",
276
+ width: "28px",
277
+ height: "28px",
278
+ border: "none",
279
+ background: "transparent",
280
+ color: "var(--Grey-Strong, #808183)",
281
+ cursor: "pointer",
282
+ borderRadius: "4px",
283
+ transition: "background 0.15s ease"
284
+ },
285
+ onMouseEnter: (o) => {
286
+ o.currentTarget.style.background = "#ECEEF2";
287
+ },
288
+ onMouseLeave: (o) => {
289
+ o.currentTarget.style.background = "transparent";
290
+ },
291
+ children: /* @__PURE__ */ e(I, { size: 20, strokeWidth: 2 })
292
+ }
293
+ )
294
+ ]
295
+ }
296
+ ),
297
+ /* @__PURE__ */ e(
298
+ "div",
299
+ {
300
+ style: {
301
+ width: "100%",
302
+ height: "1px",
303
+ background: "#ECEEF2",
304
+ flexShrink: 0
305
+ }
306
+ }
307
+ ),
308
+ (s || l) && /* @__PURE__ */ d(
309
+ "div",
310
+ {
311
+ style: {
312
+ display: "flex",
313
+ alignItems: "center",
314
+ justifyContent: "space-between",
315
+ width: "100%",
316
+ gap: "12px",
317
+ flexShrink: 0
318
+ },
319
+ children: [
320
+ s && /* @__PURE__ */ e(
321
+ "p",
322
+ {
323
+ style: {
324
+ fontSize: "13px",
325
+ lineHeight: 1.5,
326
+ color: "var(--Grey-Strong, #808183)",
327
+ margin: 0,
328
+ flex: 1
329
+ },
330
+ children: s
331
+ }
332
+ ),
333
+ l && /* @__PURE__ */ d(
334
+ "div",
335
+ {
336
+ style: {
337
+ display: "flex",
338
+ alignItems: "center",
339
+ gap: "8px",
340
+ flexShrink: 0
341
+ },
342
+ children: [
343
+ /* @__PURE__ */ e(
344
+ "button",
345
+ {
346
+ onClick: () => h == null ? void 0 : h(!f),
347
+ style: {
348
+ position: "relative",
349
+ width: "40px",
350
+ height: "22px",
351
+ borderRadius: "11px",
352
+ border: "none",
353
+ background: f ? "var(--Base-Strong, #0B0B0B)" : "var(--Base-Faint, #D9D9D9)",
354
+ cursor: "pointer",
355
+ transition: "background 0.2s ease",
356
+ padding: 0,
357
+ flexShrink: 0
358
+ },
359
+ children: /* @__PURE__ */ e(
360
+ "div",
361
+ {
362
+ style: {
363
+ position: "absolute",
364
+ top: "2px",
365
+ left: f ? "20px" : "2px",
366
+ width: "18px",
367
+ height: "18px",
368
+ borderRadius: "50%",
369
+ background: "#FFF",
370
+ transition: "left 0.2s ease",
371
+ boxShadow: "0 1px 3px rgba(0,0,0,0.15)"
372
+ }
373
+ }
374
+ )
375
+ }
376
+ ),
377
+ /* @__PURE__ */ e(
378
+ "span",
379
+ {
380
+ style: {
381
+ fontSize: "13px",
382
+ fontWeight: 500,
383
+ color: "var(--Base-Strong, #1E1E1E)",
384
+ lineHeight: 1.4
385
+ },
386
+ children: l
387
+ }
388
+ )
389
+ ]
390
+ }
391
+ )
392
+ ]
393
+ }
394
+ ),
395
+ /* @__PURE__ */ e(
396
+ "div",
397
+ {
398
+ style: {
399
+ flex: 1,
400
+ width: "100%",
401
+ overflowY: "auto",
402
+ display: "flex",
403
+ flexDirection: "column",
404
+ gap: "16px",
405
+ minHeight: 0
406
+ },
407
+ children: u
408
+ }
409
+ ),
410
+ i && /* @__PURE__ */ d(S, { children: [
411
+ /* @__PURE__ */ e(
412
+ "div",
413
+ {
414
+ style: {
415
+ width: "100%",
416
+ height: "1px",
417
+ background: "#ECEEF2",
418
+ flexShrink: 0
419
+ }
420
+ }
421
+ ),
422
+ /* @__PURE__ */ e(
423
+ "div",
424
+ {
425
+ style: {
426
+ display: "flex",
427
+ alignItems: "center",
428
+ justifyContent: "flex-end",
429
+ gap: "12px",
430
+ width: "100%",
431
+ flexShrink: 0
432
+ },
433
+ children: i
434
+ }
435
+ )
436
+ ] })
437
+ ]
438
+ }
439
+ )
440
+ ] }) : null;
441
+ }
442
+ function $({
443
+ label: c,
444
+ variant: a = "secondary",
445
+ onClick: n,
446
+ disabled: s
447
+ }) {
448
+ const u = a === "primary";
449
+ return /* @__PURE__ */ e(
450
+ "button",
451
+ {
452
+ onClick: n,
453
+ disabled: s,
454
+ style: {
455
+ display: "flex",
456
+ height: "36px",
457
+ padding: "0 20px",
458
+ justifyContent: "center",
459
+ alignItems: "center",
460
+ gap: "8px",
461
+ borderRadius: "6px",
462
+ border: u ? "none" : "1px solid #D9D9D9",
463
+ background: u ? "var(--Base-Strong, #0B0B0B)" : "var(--Base-White, #FFF)",
464
+ color: u ? "#FFF" : "var(--Base-Strong, #1E1E1E)",
465
+ fontSize: "14px",
466
+ fontWeight: 600,
467
+ cursor: s ? "default" : "pointer",
468
+ opacity: s ? 0.5 : 1,
469
+ transition: "all 0.15s ease"
470
+ },
471
+ onMouseEnter: (i) => {
472
+ !s && !u && (i.currentTarget.style.background = "#ECEEF2");
473
+ },
474
+ onMouseLeave: (i) => {
475
+ !s && !u && (i.currentTarget.style.background = "var(--Base-White, #FFF)");
476
+ },
477
+ children: c
478
+ }
479
+ );
480
+ }
481
+ export {
482
+ V as A,
483
+ $ as D,
484
+ X as S
485
+ };
486
+ //# sourceMappingURL=SideDrawer.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideDrawer.es.js","sources":["../src/components/common/AutoSearch.jsx","../src/components/common/SideDrawer.jsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport { X, Search, PlusCircle } from \"lucide-react\";\nimport TextInput from \"../primitives/TextInput\";\nimport SmallButton from \"../primitives/SmallButton\";\n\nconst AutoSearch = ({\n options = [],\n value = null,\n onChange,\n placeholder = \"Search...\",\n disabled = false,\n showSuggestions = true,\n styling,\n isAddNew = false,\n}) => {\n const [search, setSearch] = useState(\"\");\n const [isOpen, setIsOpen] = useState(false);\n const [addedOption, setAddedOption] = useState(null);\n\n const containerRef = useRef(null);\n\n const filteredOptions = useMemo(() => {\n if (!showSuggestions) return [];\n const lower = search.toLowerCase();\n\n return options.filter((opt) => {\n if (!opt) return false;\n const label = opt.label || \"\";\n const val = opt.value || \"\";\n return (\n (label.toLowerCase().includes(lower) ||\n val.toLowerCase().includes(lower)) &&\n (!addedOption || opt.value !== addedOption.value)\n );\n });\n }, [search, options, showSuggestions, addedOption]);\n\n const exactMatchExists = useMemo(() => {\n if (!isAddNew) return false;\n const lower = search.toLowerCase();\n return options.some((opt) => {\n if (!opt) return false;\n const label = opt.label || \"\";\n const val = opt.value || \"\";\n return label.toLowerCase() === lower || val.toLowerCase() === lower;\n });\n }, [options, search, isAddNew]);\n\n // Close dropdown on outside click\n useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (event) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target)\n ) {\n setIsOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n const handleSelect = (opt) => {\n onChange?.(opt);\n setSearch(\"\");\n setIsOpen(false);\n setAddedOption(null);\n };\n\n const handleAddNew = () => {\n const newOpt = { label: search, value: search };\n setAddedOption(newOpt);\n onChange?.(newOpt);\n setIsOpen(false);\n setSearch(\"\");\n };\n\n const handleClear = () => {\n onChange?.(null);\n setSearch(\"\");\n setIsOpen(false);\n setAddedOption(null);\n };\n\n const handleInputChange = (e) => {\n const newValue = e.target.value;\n if (showSuggestions) {\n setSearch(newValue);\n setIsOpen(true);\n } else if (isAddNew) {\n setSearch(newValue);\n setIsOpen(newValue.length >= 3);\n } else {\n onChange?.(newValue);\n }\n };\n\n const handleInputFocus = () => {\n if (showSuggestions || isAddNew) {\n setIsOpen(true);\n }\n };\n\n const shouldShowDropdown =\n isOpen && !value && (showSuggestions ? search.length >= 3 : search.length >= 3);\n\n return (\n <div className=\"relative w-full\" ref={containerRef}>\n <div\n className={\n styling\n ? styling\n : \"flex items-center gap-2 border rounded-md px-3 py-2 bg-white shadow-sm\"\n }\n >\n <Search className=\"w-4 h-4 text-gray-400\" />\n <div className=\"flex-1\">\n {showSuggestions && value ? (\n <div\n className=\"text-gray-800 truncate\"\n title={value.label}\n style={{\n fontSize: 'var(--text-sm)',\n fontWeight: 'var(--font-medium)',\n letterSpacing: 'var(--tracking-normal)',\n lineHeight: 'var(--leading-normal)',\n textTransform: 'none',\n textDecoration: 'none',\n fontFamily: 'var(--font-sans)',\n }}\n >\n {value.label}\n </div>\n ) : (\n <TextInput\n value={showSuggestions || isAddNew ? search : value || \"\"}\n onChange={(val) =>\n handleInputChange({ target: { value: val } })\n }\n placeholder={placeholder}\n disabled={disabled}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n padding: 0,\n backgroundColor: \"transparent\",\n }}\n onFocus={handleInputFocus}\n />\n )}\n </div>\n {(value || addedOption) && (\n <SmallButton\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClear}\n style={{\n padding: 0,\n width: 20,\n height: 20,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: \"rgba(107,114,128,1)\",\n }}\n >\n <X className=\"w-3 h-3\" />\n </SmallButton>\n )}\n </div>\n\n {shouldShowDropdown && (\n <div\n className=\"absolute w-full rounded-md border border-gray-300 bg-white shadow-lg custom-thin-scrollbar-library\"\n style={{\n maxHeight: 240,\n overflowY: \"auto\",\n zIndex: 30,\n }}\n >\n {filteredOptions.length > 0 && (\n <ul className=\"m-0 p-0 list-none\">\n {filteredOptions.map((opt) => (\n <li\n key={opt.value}\n onClick={() => handleSelect(opt)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = \"var(--hover-warm)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n className=\"cursor-pointer px-4 py-2\"\n title={opt.label}\n >\n <span\n className=\"truncate block w-full\"\n style={{\n fontFamily: \"var(--font-sans)\",\n color: \"var(--text-base)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-medium)\",\n letterSpacing: \"var(--tracking-normal)\",\n lineHeight: \"var(--leading-normal)\",\n textTransform: \"none\",\n textDecoration: \"none\",\n }}\n >\n {opt.label}\n </span>\n </li>\n ))}\n </ul>\n )}\n\n {isAddNew &&\n !exactMatchExists &&\n !addedOption &&\n search.length >= 3 && (\n <SmallButton\n type=\"button\"\n variant=\"secondary\"\n onClick={handleAddNew}\n style={{\n width: \"100%\",\n justifyContent: \"space-between\",\n padding: \"8px 10px\",\n border: \"none\",\n borderTop: \"1px solid rgba(229, 231, 235, 1)\",\n borderRadius: 0,\n backgroundColor: \"transparent\",\n color: \"rgba(107,114,128,1)\",\n }}\n >\n <span>{`Add \"${search}\"`}</span>\n <PlusCircle className=\"w-5 h-5 text-green-500\" />\n </SmallButton>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default AutoSearch;\n\n","\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport { X } from \"lucide-react\";\n\n/**\n * SideDrawer — slide-in panel from the right edge.\n *\n * Props:\n * - open boolean Whether the drawer is visible\n * - onClose function Close callback\n * - title string Header title\n * - subtitle string Optional description below the divider\n * - children ReactNode Drawer body content\n * - footer ReactNode Optional fixed footer (e.g. Cancel/Save buttons)\n * - width number|string Drawer width (default 515)\n * - height number|string Drawer height (default 762)\n * - toggleLabel string Optional toggle label (right side of subtitle row)\n * - toggleChecked boolean Toggle state\n * - onToggle function Toggle callback\n */\nexport default function SideDrawer({\n open,\n onClose,\n title,\n subtitle,\n children,\n footer,\n width = 515,\n height = 762,\n toggleLabel,\n toggleChecked,\n onToggle,\n}) {\n const drawerRef = useRef(null);\n\n // Close on Escape key\n useEffect(() => {\n if (!open) return;\n const handleKey = (e) => {\n if (e.key === \"Escape\") onClose?.();\n };\n document.addEventListener(\"keydown\", handleKey);\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return (\n <>\n {/* Backdrop */}\n <div\n onClick={onClose}\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 1200,\n background: \"rgba(0, 0, 0, 0.20)\",\n }}\n />\n\n {/* Drawer panel */}\n <div\n ref={drawerRef}\n style={{\n position: \"fixed\",\n top: \"50%\",\n right: 0,\n transform: \"translateY(-50%)\",\n zIndex: 1201,\n display: \"flex\",\n width,\n height,\n maxHeight: \"100vh\",\n padding: \"20px\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n gap: \"20px\",\n borderRadius: \"12px 0 0 12px\",\n background: \"#FFF\",\n boxShadow: \"648px 0 100px 0 rgba(0, 0, 0, 0.20)\",\n }}\n >\n {/* Header: Title + Close */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n flexShrink: 0,\n }}\n >\n <h2\n style={{\n fontSize: \"20px\",\n fontWeight: 700,\n color: \"var(--Base-Strong, #0B0B0B)\",\n margin: 0,\n lineHeight: 1.3,\n }}\n >\n {title}\n </h2>\n <button\n onClick={onClose}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"28px\",\n height: \"28px\",\n border: \"none\",\n background: \"transparent\",\n color: \"var(--Grey-Strong, #808183)\",\n cursor: \"pointer\",\n borderRadius: \"4px\",\n transition: \"background 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"#ECEEF2\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n }}\n >\n <X size={20} strokeWidth={2} />\n </button>\n </div>\n\n {/* Divider */}\n <div\n style={{\n width: \"100%\",\n height: \"1px\",\n background: \"#ECEEF2\",\n flexShrink: 0,\n }}\n />\n\n {/* Subtitle row with optional toggle */}\n {(subtitle || toggleLabel) && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n gap: \"12px\",\n flexShrink: 0,\n }}\n >\n {subtitle && (\n <p\n style={{\n fontSize: \"13px\",\n lineHeight: 1.5,\n color: \"var(--Grey-Strong, #808183)\",\n margin: 0,\n flex: 1,\n }}\n >\n {subtitle}\n </p>\n )}\n {toggleLabel && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n flexShrink: 0,\n }}\n >\n {/* Toggle switch */}\n <button\n onClick={() => onToggle?.(!toggleChecked)}\n style={{\n position: \"relative\",\n width: \"40px\",\n height: \"22px\",\n borderRadius: \"11px\",\n border: \"none\",\n background: toggleChecked\n ? \"var(--Base-Strong, #0B0B0B)\"\n : \"var(--Base-Faint, #D9D9D9)\",\n cursor: \"pointer\",\n transition: \"background 0.2s ease\",\n padding: 0,\n flexShrink: 0,\n }}\n >\n <div\n style={{\n position: \"absolute\",\n top: \"2px\",\n left: toggleChecked ? \"20px\" : \"2px\",\n width: \"18px\",\n height: \"18px\",\n borderRadius: \"50%\",\n background: \"#FFF\",\n transition: \"left 0.2s ease\",\n boxShadow: \"0 1px 3px rgba(0,0,0,0.15)\",\n }}\n />\n </button>\n <span\n style={{\n fontSize: \"13px\",\n fontWeight: 500,\n color: \"var(--Base-Strong, #1E1E1E)\",\n lineHeight: 1.4,\n }}\n >\n {toggleLabel}\n </span>\n </div>\n )}\n </div>\n )}\n\n {/* Body content — scrollable */}\n <div\n style={{\n flex: 1,\n width: \"100%\",\n overflowY: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"16px\",\n minHeight: 0,\n }}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <>\n <div\n style={{\n width: \"100%\",\n height: \"1px\",\n background: \"#ECEEF2\",\n flexShrink: 0,\n }}\n />\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: \"12px\",\n width: \"100%\",\n flexShrink: 0,\n }}\n >\n {footer}\n </div>\n </>\n )}\n </div>\n </>\n );\n}\n\n/**\n * DrawerButton — standard button for use in SideDrawer footer.\n *\n * Props:\n * - label string\n * - variant \"primary\" | \"secondary\" (default \"secondary\")\n * - onClick function\n * - disabled boolean\n */\nexport function DrawerButton({\n label,\n variant = \"secondary\",\n onClick,\n disabled,\n}) {\n const isPrimary = variant === \"primary\";\n\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n style={{\n display: \"flex\",\n height: \"36px\",\n padding: \"0 20px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"8px\",\n borderRadius: \"6px\",\n border: isPrimary ? \"none\" : \"1px solid #D9D9D9\",\n background: isPrimary\n ? \"var(--Base-Strong, #0B0B0B)\"\n : \"var(--Base-White, #FFF)\",\n color: isPrimary ? \"#FFF\" : \"var(--Base-Strong, #1E1E1E)\",\n fontSize: \"14px\",\n fontWeight: 600,\n cursor: disabled ? \"default\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n transition: \"all 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n if (!disabled && !isPrimary) {\n e.currentTarget.style.background = \"#ECEEF2\";\n }\n }}\n onMouseLeave={(e) => {\n if (!disabled && !isPrimary) {\n e.currentTarget.style.background = \"var(--Base-White, #FFF)\";\n }\n }}\n >\n {label}\n </button>\n );\n}\n"],"names":["AutoSearch","options","value","onChange","placeholder","disabled","showSuggestions","styling","isAddNew","search","setSearch","useState","isOpen","setIsOpen","addedOption","setAddedOption","containerRef","useRef","filteredOptions","useMemo","lower","opt","label","val","exactMatchExists","useEffect","handleClickOutside","event","handleSelect","handleAddNew","newOpt","handleClear","handleInputChange","e","newValue","handleInputFocus","shouldShowDropdown","jsxs","jsx","Search","TextInput","SmallButton","X","PlusCircle","SideDrawer","open","onClose","title","subtitle","children","footer","width","height","toggleLabel","toggleChecked","onToggle","drawerRef","handleKey","Fragment","DrawerButton","variant","onClick","isPrimary"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("react/jsx-runtime"),f=require("react"),p=require("lucide-react"),i="var(--font-sans)",b={padding:"40px 48px",fontFamily:i,minHeight:"100vh",background:"var(--grey-white)",boxSizing:"border-box"},j={fontSize:"var(--text-4xl)",fontWeight:"var(--font-bold)",fontFamily:i,color:"var(--text-ink)",margin:0,letterSpacing:"var(--tracking-tight)",lineHeight:"var(--leading-tight)"},S={fontSize:14,fontStyle:"normal",fontWeight:400,lineHeight:"140%",color:"var(--color-text-secondary)",margin:"8px 0 0",fontFamily:i},w={display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginTop:"36px"},v={display:"flex",height:160,padding:24,flexDirection:"column",justifyContent:"space-between",alignItems:"flex-start",borderRadius:12,border:"1px solid var(--grey-absent)",background:"var(--grey-white)",boxSizing:"border-box",transition:"var(--transition)",cursor:"default",gap:8},z={...v,boxShadow:"var(--shadow-sm)"},C={width:40,height:40,borderRadius:"var(--radius)",background:"var(--paper-secondary)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-base)"},k={color:"var(--grey-strong)",fontSize:20,fontStyle:"normal",fontWeight:600,lineHeight:"normal",fontFamily:i,margin:0},W={fontSize:13,fontStyle:"normal",fontWeight:400,lineHeight:"140%",color:"var(--text-base)",margin:0,fontFamily:i,flex:"1 0 0"},D={display:"flex",height:28,padding:10,justifyContent:"center",alignItems:"center",gap:10,borderRadius:10,background:"var(--grey-strong)",fontSize:14,fontStyle:"normal",fontWeight:600,lineHeight:1,fontFamily:i,color:"var(--grey-white)",border:"none",cursor:"pointer",transition:"var(--transition-fast)",outline:"none",boxSizing:"border-box"},H={flex:1,height:8,borderRadius:4,background:"var(--border)",overflow:"hidden"},I=n=>({width:`${n}%`,height:"100%",borderRadius:4,background:"var(--color-green)",transition:"width 0.4s ease-out"}),R={display:"inline-flex",alignItems:"center",gap:4,fontSize:"var(--text-xs)",fontWeight:"var(--font-semibold)",color:"var(--rail-compliance)",fontFamily:i,marginLeft:12};function y({icon:n,title:a,description:o,buttonLabel:s,onAction:c,recommended:g,children:h}){const[l,u]=f.useState(!1);return e.jsxs("div",{style:l?z:v,onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),children:[e.jsxs("div",{children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12},children:[e.jsx("div",{style:C,children:n}),e.jsx("h3",{style:k,children:a})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4,marginLeft:52,marginTop:4},children:[o&&e.jsx("p",{style:W,children:o}),h]})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",marginLeft:52},children:[e.jsx("button",{style:D,onClick:c,onMouseEnter:t=>{t.currentTarget.style.opacity="0.85"},onMouseLeave:t=>{t.currentTarget.style.opacity="1"},children:s}),g&&e.jsxs("span",{style:R,children:[e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("path",{d:"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"})}),"Recommended"]})]})]})}const M=({userName:n="Will",stepsCompleted:a=4,totalSteps:o=6,onUpload:s,onContinue:c,onExplore:g,onConnect:h})=>{const l=a/o*100;return e.jsxs("div",{style:b,children:[e.jsxs("h1",{style:j,children:["Welcome ",n]}),e.jsx("p",{style:S,children:"Get started with your project or explore new features"}),e.jsxs("div",{style:w,children:[e.jsx(y,{icon:e.jsx(p.Upload,{size:24}),title:"Upload and Evaluate Audio",description:"Upload Audio Files to Run Evaluations: MP3, WMA or WAV (up to 50 files, max 325MB total)",buttonLabel:"Upload",onAction:s}),e.jsx(y,{icon:e.jsx(p.CircleUser,{size:24}),title:"Getting started with Chordia",description:"Complete these steps to get the most out of Chordia.",buttonLabel:"Continue",onAction:c,children:e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,width:"100%"},children:[e.jsx("div",{style:H,children:e.jsx("div",{style:I(l)})}),e.jsxs("span",{style:{fontSize:12,color:"var(--text-muted)",fontFamily:i,whiteSpace:"nowrap"},children:[e.jsx("strong",{style:{color:"var(--text-base)",fontWeight:600},children:a})," of ",o," steps completed"]})]})}),e.jsx(y,{icon:e.jsx(p.Compass,{size:24}),title:"Explore Demo Projects",description:"Explore how Chordia Compass transforms real data into insights with plans, dashboards, and evaluations.",buttonLabel:"Explore",onAction:g,recommended:!0}),e.jsx(y,{icon:e.jsx(p.Link2,{size:24}),title:"Connect Data Source",description:"Connect and integrate third-party tools with your external data sources.",buttonLabel:"Connect",onAction:h})]})]})},d="var(--font-sans)",T={fontFamily:d},L={fontSize:20,fontWeight:600,fontStyle:"normal",fontFamily:d,color:"var(--grey-strong)",margin:0,lineHeight:"normal"},A={fontSize:13,fontWeight:400,fontStyle:"normal",color:"var(--color-text-secondary)",fontFamily:d,margin:"4px 0 0",lineHeight:"140%"},m={display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",width:"100%",minHeight:320,borderRadius:16,border:"2px dashed var(--color-input-border)",background:"var(--grey-white)",boxSizing:"border-box",cursor:"pointer",transition:"var(--transition-fast)",marginTop:24,padding:"48px 24px"},E={...m,borderColor:"var(--color-green)",background:"var(--color-green-ring)"},F={width:80,height:80,borderRadius:9999,background:"var(--focus-2)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,marginBottom:20},B={fontSize:18,fontWeight:600,fontFamily:d,color:"var(--grey-strong)",textAlign:"center",lineHeight:"28px",margin:0},U={display:"flex",height:32,padding:16,justifyContent:"center",alignItems:"center",gap:10,borderRadius:10,border:"1px solid var(--grey-absent)",background:"var(--grey-white)",fontSize:15,fontWeight:400,fontFamily:d,color:"var(--grey-strong)",cursor:"pointer",transition:"var(--transition-fast)",outline:"none",marginTop:16,boxSizing:"border-box"},P={fontSize:14,fontWeight:400,fontFamily:d,color:"var(--grey-muted)",textAlign:"center",marginTop:16,lineHeight:"140%"},O=({onFileSelect:n})=>{const[a,o]=f.useState(!1),s=f.useRef(null),c=t=>{t.preventDefault(),o(!0)},g=()=>{o(!1)},h=t=>{var x;t.preventDefault(),o(!1);const r=(x=t.dataTransfer)==null?void 0:x.files;r!=null&&r.length&&(n==null||n(r))},l=()=>{var t;(t=s.current)==null||t.click()},u=t=>{const r=t.target.files;r!=null&&r.length&&(n==null||n(r)),t.target.value=""};return e.jsxs("div",{style:T,children:[e.jsx("h2",{style:L,children:"Evaluate Interaction"}),e.jsx("p",{style:A,children:"Upload interactions to generate insights, explore results, and identify patterns."}),e.jsx("input",{ref:s,type:"file",accept:"audio/mpeg,audio/wav,audio/x-ms-wma,audio/mp4,video/mp4,video/webm",multiple:!0,style:{display:"none"},onChange:u}),e.jsxs("div",{style:a?E:m,onDragOver:c,onDragLeave:g,onDrop:h,onClick:l,children:[e.jsx("div",{style:F,children:e.jsx(p.CloudUpload,{size:32,color:"var(--grey-strong)"})}),e.jsx("p",{style:B,children:"Drop your file here, or"}),e.jsx("button",{type:"button",style:U,onClick:t=>{t.stopPropagation(),l()},onMouseEnter:t=>{t.currentTarget.style.background="var(--hover-warm-subtle)"},onMouseLeave:t=>{t.currentTarget.style.background="var(--grey-white)"},children:"Browse files"}),e.jsx("p",{style:P,children:"Supports: MP3, WAV, WMA, MP4, and WEBM"})]})]})};exports.UploadEvaluate=M;exports.UploadInteraction=O;
2
+ //# sourceMappingURL=UploadInteraction.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadInteraction.cjs.js","sources":["../src/components/onboarding/UploadEvaluate.jsx","../src/components/onboarding/UploadInteraction.jsx"],"sourcesContent":["import { useState } from 'react';\nimport { Upload, CircleUser, Compass, Link2 } from 'lucide-react';\n\nconst FF = 'var(--font-sans)';\n\n// ─── Styles ───\n\nconst containerStyle = {\n padding: '40px 48px',\n fontFamily: FF,\n minHeight: '100vh',\n background: 'var(--grey-white)',\n boxSizing: 'border-box',\n};\n\nconst headingStyle = {\n fontSize: 'var(--text-4xl)',\n fontWeight: 'var(--font-bold)',\n fontFamily: FF,\n color: 'var(--text-ink)',\n margin: 0,\n letterSpacing: 'var(--tracking-tight)',\n lineHeight: 'var(--leading-tight)',\n};\n\nconst subtitleStyle = {\n fontSize: 14,\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '140%',\n color: 'var(--color-text-secondary)',\n margin: '8px 0 0',\n fontFamily: FF,\n};\n\nconst gridStyle = {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: 12,\n marginTop: '36px',\n};\n\nconst cardStyle = {\n display: 'flex',\n height: 160,\n padding: 24,\n flexDirection: 'column',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n borderRadius: 12,\n border: '1px solid var(--grey-absent)',\n background: 'var(--grey-white)',\n boxSizing: 'border-box',\n transition: 'var(--transition)',\n cursor: 'default',\n gap: 8\n};\n\nconst cardHoverStyle = {\n ...cardStyle,\n boxShadow: 'var(--shadow-sm)',\n};\n\nconst iconWrapperStyle = {\n width: 40,\n height: 40,\n borderRadius: 'var(--radius)',\n background: 'var(--paper-secondary)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'var(--text-base)',\n};\n\nconst cardTitleStyle = {\n color: 'var(--grey-strong)',\n fontSize: 20,\n fontStyle: 'normal',\n fontWeight: 600,\n lineHeight: 'normal',\n fontFamily: FF,\n margin: 0,\n};\n\nconst cardDescStyle = {\n fontSize: 13,\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '140%',\n color: 'var(--text-base)',\n margin: 0,\n fontFamily: FF,\n flex: '1 0 0',\n};\n\nconst btnStyle = {\n display: 'flex',\n height: 28,\n padding: 10,\n justifyContent: 'center',\n alignItems: 'center',\n gap: 10,\n borderRadius: 10,\n background: 'var(--grey-strong)',\n fontSize: 14,\n fontStyle: 'normal',\n fontWeight: 600,\n lineHeight: 1,\n fontFamily: FF,\n color: 'var(--grey-white)',\n border: 'none',\n cursor: 'pointer',\n transition: 'var(--transition-fast)',\n outline: 'none',\n boxSizing: 'border-box',\n};\n\nconst progressBarBg = {\n flex: 1,\n height: 8,\n borderRadius: 4,\n background: 'var(--border)',\n overflow: 'hidden',\n};\n\nconst progressBarFill = (pct) => ({\n width: `${pct}%`,\n height: '100%',\n borderRadius: 4,\n background: 'var(--color-green)',\n transition: 'width 0.4s ease-out',\n});\n\nconst recommendedBadge = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 4,\n fontSize: 'var(--text-xs)',\n fontWeight: 'var(--font-semibold)',\n color: 'var(--rail-compliance)',\n fontFamily: FF,\n marginLeft: 12,\n};\n\n// ─── Card Component ───\n\nfunction OnboardingCard({ icon, title, description, buttonLabel, onAction, recommended, children }) {\n const [hovered, setHovered] = useState(false);\n\n return (\n <div\n style={hovered ? cardHoverStyle : cardStyle}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>\n <div style={iconWrapperStyle}>{icon}</div>\n <h3 style={cardTitleStyle}>{title}</h3>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 4, marginLeft: 52, marginTop: 4 }}>\n {description && <p style={cardDescStyle}>{description}</p>}\n {children}\n </div>\n </div>\n <div style={{ display: 'flex', alignItems: 'center', marginLeft: 52 }}>\n <button\n style={btnStyle}\n onClick={onAction}\n onMouseEnter={(e) => { e.currentTarget.style.opacity = '0.85'; }}\n onMouseLeave={(e) => { e.currentTarget.style.opacity = '1'; }}\n >\n {buttonLabel}\n </button>\n {recommended && (\n <span style={recommendedBadge}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\" /></svg>\n Recommended\n </span>\n )}\n </div>\n </div>\n );\n}\n\n// ─── Main Component ───\n\nconst UploadEvaluate = ({\n userName = 'Will',\n stepsCompleted = 4,\n totalSteps = 6,\n onUpload,\n onContinue,\n onExplore,\n onConnect,\n}) => {\n const progressPct = (stepsCompleted / totalSteps) * 100;\n\n return (\n <div style={containerStyle}>\n <h1 style={headingStyle}>Welcome {userName}</h1>\n <p style={subtitleStyle}>Get started with your project or explore new features</p>\n\n <div style={gridStyle}>\n {/* Upload and Evaluate Audio */}\n <OnboardingCard\n icon={<Upload size={24} />}\n title=\"Upload and Evaluate Audio\"\n description=\"Upload Audio Files to Run Evaluations: MP3, WMA or WAV (up to 50 files, max 325MB total)\"\n buttonLabel=\"Upload\"\n onAction={onUpload}\n />\n\n {/* Getting started with Chordia */}\n <OnboardingCard\n icon={<CircleUser size={24} />}\n title=\"Getting started with Chordia\"\n description=\"Complete these steps to get the most out of Chordia.\"\n buttonLabel=\"Continue\"\n onAction={onContinue}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, width: '100%' }}>\n <div style={progressBarBg}>\n <div style={progressBarFill(progressPct)} />\n </div>\n <span style={{ fontSize: 12, color: 'var(--text-muted)', fontFamily: FF, whiteSpace: 'nowrap' }}>\n <strong style={{ color: 'var(--text-base)', fontWeight: 600 }}>{stepsCompleted}</strong> of {totalSteps} steps completed\n </span>\n </div>\n </OnboardingCard>\n\n {/* Explore Demo Projects */}\n <OnboardingCard\n icon={<Compass size={24} />}\n title=\"Explore Demo Projects\"\n description=\"Explore how Chordia Compass transforms real data into insights with plans, dashboards, and evaluations.\"\n buttonLabel=\"Explore\"\n onAction={onExplore}\n recommended\n />\n\n {/* Connect Data Source */}\n <OnboardingCard\n icon={<Link2 size={24} />}\n title=\"Connect Data Source\"\n description=\"Connect and integrate third-party tools with your external data sources.\"\n buttonLabel=\"Connect\"\n onAction={onConnect}\n />\n </div>\n </div>\n );\n};\n\nexport default UploadEvaluate;\n","import { useState, useRef } from 'react';\nimport { CloudUpload } from 'lucide-react';\n\nconst FF = 'var(--font-sans)';\n\n// ─── Styles ───\n\nconst containerStyle = {\n fontFamily: FF,\n};\n\nconst sectionTitleStyle = {\n fontSize: 20,\n fontWeight: 600,\n fontStyle: 'normal',\n fontFamily: FF,\n color: 'var(--grey-strong)',\n margin: 0,\n lineHeight: 'normal',\n};\n\nconst sectionSubtitleStyle = {\n fontSize: 13,\n fontWeight: 400,\n fontStyle: 'normal',\n color: 'var(--color-text-secondary)',\n fontFamily: FF,\n margin: '4px 0 0',\n lineHeight: '140%',\n};\n\nconst dropzoneStyle = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n minHeight: 320,\n borderRadius: 16,\n border: '2px dashed var(--color-input-border)',\n background: 'var(--grey-white)',\n boxSizing: 'border-box',\n cursor: 'pointer',\n transition: 'var(--transition-fast)',\n marginTop: 24,\n padding: '48px 24px',\n};\n\nconst dropzoneHoverStyle = {\n ...dropzoneStyle,\n borderColor: 'var(--color-green)',\n background: 'var(--color-green-ring)',\n};\n\nconst dropzoneIconWrap = {\n width: 80,\n height: 80,\n borderRadius: 9999,\n background: 'var(--focus-2)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n marginBottom: 20,\n};\n\nconst dropzoneTextStyle = {\n fontSize: 18,\n fontWeight: 600,\n fontFamily: FF,\n color: 'var(--grey-strong)',\n textAlign: 'center',\n lineHeight: '28px',\n margin: 0,\n};\n\nconst browseButtonStyle = {\n display: 'flex',\n height: 32,\n padding: 16,\n justifyContent: 'center',\n alignItems: 'center',\n gap: 10,\n borderRadius: 10,\n border: '1px solid var(--grey-absent)',\n background: 'var(--grey-white)',\n fontSize: 15,\n fontWeight: 400,\n fontFamily: FF,\n color: 'var(--grey-strong)',\n cursor: 'pointer',\n transition: 'var(--transition-fast)',\n outline: 'none',\n marginTop: 16,\n boxSizing: 'border-box',\n};\n\nconst dropzoneHintStyle = {\n fontSize: 14,\n fontWeight: 400,\n fontFamily: FF,\n color: 'var(--grey-muted)',\n textAlign: 'center',\n marginTop: 16,\n lineHeight: '140%',\n};\n\n// ─── Component ───\n\nconst UploadInteraction = ({ onFileSelect }) => {\n const [dragOver, setDragOver] = useState(false);\n const fileInputRef = useRef(null);\n\n const handleDragOver = (e) => {\n e.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleDrop = (e) => {\n e.preventDefault();\n setDragOver(false);\n const files = e.dataTransfer?.files;\n if (files?.length) {\n onFileSelect?.(files);\n }\n };\n\n const handleBrowseClick = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = (e) => {\n const files = e.target.files;\n if (files?.length) {\n onFileSelect?.(files);\n }\n e.target.value = '';\n };\n\n return (\n <div style={containerStyle}>\n <h2 style={sectionTitleStyle}>Evaluate Interaction</h2>\n <p style={sectionSubtitleStyle}>\n Upload interactions to generate insights, explore results, and identify patterns.\n </p>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"audio/mpeg,audio/wav,audio/x-ms-wma,audio/mp4,video/mp4,video/webm\"\n multiple\n style={{ display: 'none' }}\n onChange={handleFileChange}\n />\n\n <div\n style={dragOver ? dropzoneHoverStyle : dropzoneStyle}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={handleBrowseClick}\n >\n <div style={dropzoneIconWrap}>\n <CloudUpload size={32} color=\"var(--grey-strong)\" />\n </div>\n <p style={dropzoneTextStyle}>Drop your file here, or</p>\n <button\n type=\"button\"\n style={browseButtonStyle}\n onClick={(e) => { e.stopPropagation(); handleBrowseClick(); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = 'var(--hover-warm-subtle)'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = 'var(--grey-white)'; }}\n >\n Browse files\n </button>\n <p style={dropzoneHintStyle}>Supports: MP3, WAV, WMA, MP4, and WEBM</p>\n </div>\n </div>\n );\n};\n\nexport default UploadInteraction;\n"],"names":["FF","containerStyle","headingStyle","subtitleStyle","gridStyle","cardStyle","cardHoverStyle","iconWrapperStyle","cardTitleStyle","cardDescStyle","btnStyle","progressBarBg","progressBarFill","pct","recommendedBadge","OnboardingCard","icon","title","description","buttonLabel","onAction","recommended","children","hovered","setHovered","useState","jsxs","jsx","e","UploadEvaluate","userName","stepsCompleted","totalSteps","onUpload","onContinue","onExplore","onConnect","progressPct","Upload","CircleUser","Compass","Link2","sectionTitleStyle","sectionSubtitleStyle","dropzoneStyle","dropzoneHoverStyle","dropzoneIconWrap","dropzoneTextStyle","browseButtonStyle","dropzoneHintStyle","UploadInteraction","onFileSelect","dragOver","setDragOver","fileInputRef","useRef","handleDragOver","handleDragLeave","handleDrop","files","_a","handleBrowseClick","handleFileChange","CloudUpload"],"mappings":"+FAGMA,EAAK,mBAILC,EAAiB,CACrB,QAAS,YACT,WAAYD,EACZ,UAAW,QACX,WAAY,oBACZ,UAAW,YACb,EAEME,EAAe,CACnB,SAAU,kBACV,WAAY,mBACZ,WAAYF,EACZ,MAAO,kBACP,OAAQ,EACR,cAAe,wBACf,WAAY,sBACd,EAEMG,EAAgB,CACpB,SAAU,GACV,UAAW,SACX,WAAY,IACZ,WAAY,OACZ,MAAO,8BACP,OAAQ,UACR,WAAYH,CACd,EAEMI,EAAY,CAChB,QAAS,OACT,oBAAqB,UACrB,IAAK,GACL,UAAW,MACb,EAEMC,EAAY,CAChB,QAAS,OACT,OAAQ,IACR,QAAS,GACT,cAAe,SACf,eAAgB,gBAChB,WAAY,aACZ,aAAc,GACd,OAAQ,+BACR,WAAY,oBACZ,UAAW,aACX,WAAY,oBACZ,OAAQ,UACR,IAAK,CACP,EAEMC,EAAiB,CACrB,GAAGD,EACH,UAAW,kBACb,EAEME,EAAmB,CACvB,MAAO,GACP,OAAQ,GACR,aAAc,gBACd,WAAY,yBACZ,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,MAAO,kBACT,EAEMC,EAAiB,CACrB,MAAO,qBACP,SAAU,GACV,UAAW,SACX,WAAY,IACZ,WAAY,SACZ,WAAYR,EACZ,OAAQ,CACV,EAEMS,EAAgB,CACpB,SAAU,GACV,UAAW,SACX,WAAY,IACZ,WAAY,OACZ,MAAO,mBACP,OAAQ,EACR,WAAYT,EACZ,KAAM,OACR,EAEMU,EAAW,CACf,QAAS,OACT,OAAQ,GACR,QAAS,GACT,eAAgB,SAChB,WAAY,SACZ,IAAK,GACL,aAAc,GACd,WAAY,qBACZ,SAAU,GACV,UAAW,SACX,WAAY,IACZ,WAAY,EACZ,WAAYV,EACZ,MAAO,oBACP,OAAQ,OACR,OAAQ,UACR,WAAY,yBACZ,QAAS,OACT,UAAW,YACb,EAEMW,EAAgB,CACpB,KAAM,EACN,OAAQ,EACR,aAAc,EACd,WAAY,gBACZ,SAAU,QACZ,EAEMC,EAAmBC,IAAS,CAChC,MAAO,GAAGA,CAAG,IACb,OAAQ,OACR,aAAc,EACd,WAAY,qBACZ,WAAY,qBACd,GAEMC,EAAmB,CACvB,QAAS,cACT,WAAY,SACZ,IAAK,EACL,SAAU,iBACV,WAAY,uBACZ,MAAO,yBACP,WAAYd,EACZ,WAAY,EACd,EAIA,SAASe,EAAe,CAAE,KAAAC,EAAM,MAAAC,EAAO,YAAAC,EAAa,YAAAC,EAAa,SAAAC,EAAU,YAAAC,EAAa,SAAAC,GAAY,CAClG,KAAM,CAACC,EAASC,CAAU,EAAIC,WAAS,EAAK,EAG1C,OAAAC,EAAA,KAAC,MAAA,CACC,MAAOH,EAAUjB,EAAiBD,EAClC,aAAc,IAAMmB,EAAW,EAAI,EACnC,aAAc,IAAMA,EAAW,EAAK,EAEpC,SAAA,CAAAE,OAAC,MACC,CAAA,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,EAAA,EACxD,SAAA,CAACC,EAAA,IAAA,MAAA,CAAI,MAAOpB,EAAmB,SAAKS,EAAA,EACnCW,EAAA,IAAA,KAAA,CAAG,MAAOnB,EAAiB,SAAMS,EAAA,CAAA,EACpC,EACCS,EAAA,KAAA,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,EAAG,WAAY,GAAI,UAAW,CACxF,EAAA,SAAA,CAAAR,GAAgBS,EAAA,IAAA,IAAA,CAAE,MAAOlB,EAAgB,SAAYS,EAAA,EACrDI,CAAA,EACH,CAAA,EACF,EACAI,EAAAA,KAAC,MAAI,CAAA,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,WAAY,EAAA,EAC/D,SAAA,CAAAC,EAAA,IAAC,SAAA,CACC,MAAOjB,EACP,QAASU,EACT,aAAeQ,GAAM,CAAIA,EAAA,cAAc,MAAM,QAAU,MAAQ,EAC/D,aAAeA,GAAM,CAAIA,EAAA,cAAc,MAAM,QAAU,GAAK,EAE3D,SAAAT,CAAA,CACH,EACCE,GACCK,EAAA,KAAC,OAAK,CAAA,MAAOZ,EACX,SAAA,CAAAa,EAAA,IAAC,MAAI,CAAA,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,eAAe,SAAAA,MAAC,OAAK,CAAA,EAAE,mDAAoD,CAAA,EAAE,EAAM,aAAA,EAE1I,CAAA,EAEJ,CAAA,CAAA,CAAA,CAGN,CAIA,MAAME,EAAiB,CAAC,CACtB,SAAAC,EAAW,OACX,eAAAC,EAAiB,EACjB,WAAAC,EAAa,EACb,SAAAC,EACA,WAAAC,EACA,UAAAC,EACA,UAAAC,CACF,IAAM,CACE,MAAAC,EAAeN,EAAiBC,EAAc,IAGlD,OAAAN,EAAA,KAAC,MAAI,CAAA,MAAOzB,EACV,SAAA,CAACyB,EAAAA,KAAA,KAAA,CAAG,MAAOxB,EAAc,SAAA,CAAA,WAAS4B,CAAA,EAAS,EAC1CH,EAAA,IAAA,IAAA,CAAE,MAAOxB,EAAe,SAAqD,wDAAA,EAE9EuB,EAAAA,KAAC,MAAI,CAAA,MAAOtB,EAEV,SAAA,CAAAuB,EAAA,IAACZ,EAAA,CACC,KAAMY,EAAAA,IAACW,EAAAA,OAAO,CAAA,KAAM,EAAI,CAAA,EACxB,MAAM,4BACN,YAAY,2FACZ,YAAY,SACZ,SAAUL,CAAA,CACZ,EAGAN,EAAA,IAACZ,EAAA,CACC,KAAMY,EAAAA,IAACY,EAAAA,WAAW,CAAA,KAAM,EAAI,CAAA,EAC5B,MAAM,+BACN,YAAY,uDACZ,YAAY,WACZ,SAAUL,EAEV,SAACR,EAAA,KAAA,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,EAAG,MAAO,MAAA,EAClE,SAAA,CAACC,EAAAA,IAAA,MAAA,CAAI,MAAOhB,EACV,SAAAgB,EAAAA,IAAC,OAAI,MAAOf,EAAgByB,CAAW,CAAA,CAAG,CAC5C,CAAA,EACCX,EAAAA,KAAA,OAAA,CAAK,MAAO,CAAE,SAAU,GAAI,MAAO,oBAAqB,WAAY1B,EAAI,WAAY,QAAA,EACnF,SAAA,CAAC2B,EAAAA,IAAA,SAAA,CAAO,MAAO,CAAE,MAAO,mBAAoB,WAAY,GAAA,EAAQ,SAAeI,CAAA,CAAA,EAAS,OAAKC,EAAW,kBAAA,EAC1G,CAAA,EACF,CAAA,CACF,EAGAL,EAAA,IAACZ,EAAA,CACC,KAAMY,EAAAA,IAACa,EAAAA,QAAQ,CAAA,KAAM,EAAI,CAAA,EACzB,MAAM,wBACN,YAAY,0GACZ,YAAY,UACZ,SAAUL,EACV,YAAW,EAAA,CACb,EAGAR,EAAA,IAACZ,EAAA,CACC,KAAMY,EAAAA,IAACc,EAAAA,MAAM,CAAA,KAAM,EAAI,CAAA,EACvB,MAAM,sBACN,YAAY,2EACZ,YAAY,UACZ,SAAUL,CAAA,CACZ,CAAA,EACF,CACF,CAAA,CAAA,CAEJ,ECzPMpC,EAAK,mBAILC,EAAiB,CACrB,WAAYD,CACd,EAEM0C,EAAoB,CACxB,SAAU,GACV,WAAY,IACZ,UAAW,SACX,WAAY1C,EACZ,MAAO,qBACP,OAAQ,EACR,WAAY,QACd,EAEM2C,EAAuB,CAC3B,SAAU,GACV,WAAY,IACZ,UAAW,SACX,MAAO,8BACP,WAAY3C,EACZ,OAAQ,UACR,WAAY,MACd,EAEM4C,EAAgB,CACpB,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,MAAO,OACP,UAAW,IACX,aAAc,GACd,OAAQ,uCACR,WAAY,oBACZ,UAAW,aACX,OAAQ,UACR,WAAY,yBACZ,UAAW,GACX,QAAS,WACX,EAEMC,EAAqB,CACzB,GAAGD,EACH,YAAa,qBACb,WAAY,yBACd,EAEME,EAAmB,CACvB,MAAO,GACP,OAAQ,GACR,aAAc,KACd,WAAY,iBACZ,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,WAAY,EACZ,aAAc,EAChB,EAEMC,EAAoB,CACxB,SAAU,GACV,WAAY,IACZ,WAAY/C,EACZ,MAAO,qBACP,UAAW,SACX,WAAY,OACZ,OAAQ,CACV,EAEMgD,EAAoB,CACxB,QAAS,OACT,OAAQ,GACR,QAAS,GACT,eAAgB,SAChB,WAAY,SACZ,IAAK,GACL,aAAc,GACd,OAAQ,+BACR,WAAY,oBACZ,SAAU,GACV,WAAY,IACZ,WAAYhD,EACZ,MAAO,qBACP,OAAQ,UACR,WAAY,yBACZ,QAAS,OACT,UAAW,GACX,UAAW,YACb,EAEMiD,EAAoB,CACxB,SAAU,GACV,WAAY,IACZ,WAAYjD,EACZ,MAAO,oBACP,UAAW,SACX,UAAW,GACX,WAAY,MACd,EAIMkD,EAAoB,CAAC,CAAE,aAAAC,KAAmB,CAC9C,KAAM,CAACC,EAAUC,CAAW,EAAI5B,WAAS,EAAK,EACxC6B,EAAeC,SAAO,IAAI,EAE1BC,EAAkB5B,GAAM,CAC5BA,EAAE,eAAe,EACjByB,EAAY,EAAI,CAAA,EAGZI,EAAkB,IAAM,CAC5BJ,EAAY,EAAK,CAAA,EAGbK,EAAc9B,GAAM,OACxBA,EAAE,eAAe,EACjByB,EAAY,EAAK,EACX,MAAAM,GAAQC,EAAAhC,EAAE,eAAF,YAAAgC,EAAgB,MAC1BD,GAAA,MAAAA,EAAO,SACTR,GAAA,MAAAA,EAAeQ,GACjB,EAGIE,EAAoB,IAAM,QAC9BD,EAAAN,EAAa,UAAb,MAAAM,EAAsB,OAAM,EAGxBE,EAAoBlC,GAAM,CACxB,MAAA+B,EAAQ/B,EAAE,OAAO,MACnB+B,GAAA,MAAAA,EAAO,SACTR,GAAA,MAAAA,EAAeQ,IAEjB/B,EAAE,OAAO,MAAQ,EAAA,EAIjB,OAAAF,EAAA,KAAC,MAAI,CAAA,MAAOzB,EACV,SAAA,CAAC0B,EAAA,IAAA,KAAA,CAAG,MAAOe,EAAmB,SAAoB,uBAAA,EACjDf,EAAA,IAAA,IAAA,CAAE,MAAOgB,EAAsB,SAEhC,oFAAA,EAEAhB,EAAA,IAAC,QAAA,CACC,IAAK2B,EACL,KAAK,OACL,OAAO,qEACP,SAAQ,GACR,MAAO,CAAE,QAAS,MAAO,EACzB,SAAUQ,CAAA,CACZ,EAEApC,EAAA,KAAC,MAAA,CACC,MAAO0B,EAAWP,EAAqBD,EACvC,WAAYY,EACZ,YAAaC,EACb,OAAQC,EACR,QAASG,EAET,SAAA,CAAClC,EAAAA,IAAA,MAAA,CAAI,MAAOmB,EACV,SAAAnB,EAAA,IAACoC,eAAY,KAAM,GAAI,MAAM,oBAAA,CAAqB,CACpD,CAAA,EACCpC,EAAA,IAAA,IAAA,CAAE,MAAOoB,EAAmB,SAAuB,0BAAA,EACpDpB,EAAA,IAAC,SAAA,CACC,KAAK,SACL,MAAOqB,EACP,QAAUpB,GAAM,CAAEA,EAAE,gBAAgB,EAAqBiC,GAAG,EAC5D,aAAejC,GAAM,CAAIA,EAAA,cAAc,MAAM,WAAa,0BAA4B,EACtF,aAAeA,GAAM,CAAIA,EAAA,cAAc,MAAM,WAAa,mBAAqB,EAChF,SAAA,cAAA,CAED,EACCD,EAAA,IAAA,IAAA,CAAE,MAAOsB,EAAmB,SAAsC,yCAAA,CAAA,CAAA,CACrE,CACF,CAAA,CAAA,CAEJ"}