chordia-ui 3.2.5 → 3.2.7

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.
@@ -1,486 +0,0 @@
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
@@ -1 +0,0 @@
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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"}