mta-design-system 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,2269 @@
1
+ 'use strict';
2
+
3
+ var clsx = require('clsx');
4
+ var tailwindMerge = require('tailwind-merge');
5
+ var classVarianceAuthority = require('class-variance-authority');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var reactSlot = require('@radix-ui/react-slot');
8
+ var React9 = require('react');
9
+ var LucideIcons = require('lucide-react');
10
+ var reactDayPicker = require('react-day-picker');
11
+ var cmdk = require('cmdk');
12
+ var DialogPrimitive = require('@radix-ui/react-dialog');
13
+ var LabelPrimitive = require('@radix-ui/react-label');
14
+ var PopoverPrimitive = require('@radix-ui/react-popover');
15
+ var ProgressPrimitive = require('@radix-ui/react-progress');
16
+ var SelectPrimitive = require('@radix-ui/react-select');
17
+ var SwitchPrimitive = require('@radix-ui/react-switch');
18
+ var TooltipPrimitive = require('@radix-ui/react-tooltip');
19
+ var dateFns = require('date-fns');
20
+
21
+ function _interopNamespace(e) {
22
+ if (e && e.__esModule) return e;
23
+ var n = Object.create(null);
24
+ if (e) {
25
+ Object.keys(e).forEach(function (k) {
26
+ if (k !== 'default') {
27
+ var d = Object.getOwnPropertyDescriptor(e, k);
28
+ Object.defineProperty(n, k, d.get ? d : {
29
+ enumerable: true,
30
+ get: function () { return e[k]; }
31
+ });
32
+ }
33
+ });
34
+ }
35
+ n.default = e;
36
+ return Object.freeze(n);
37
+ }
38
+
39
+ var React9__namespace = /*#__PURE__*/_interopNamespace(React9);
40
+ var LucideIcons__namespace = /*#__PURE__*/_interopNamespace(LucideIcons);
41
+ var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
42
+ var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
43
+ var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
44
+ var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
45
+ var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
46
+ var SwitchPrimitive__namespace = /*#__PURE__*/_interopNamespace(SwitchPrimitive);
47
+ var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
48
+
49
+ var __defProp = Object.defineProperty;
50
+ var __defProps = Object.defineProperties;
51
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
52
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
53
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
54
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
55
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
56
+ var __spreadValues = (a, b) => {
57
+ for (var prop in b || (b = {}))
58
+ if (__hasOwnProp.call(b, prop))
59
+ __defNormalProp(a, prop, b[prop]);
60
+ if (__getOwnPropSymbols)
61
+ for (var prop of __getOwnPropSymbols(b)) {
62
+ if (__propIsEnum.call(b, prop))
63
+ __defNormalProp(a, prop, b[prop]);
64
+ }
65
+ return a;
66
+ };
67
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
68
+ var __objRest = (source, exclude) => {
69
+ var target = {};
70
+ for (var prop in source)
71
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
72
+ target[prop] = source[prop];
73
+ if (source != null && __getOwnPropSymbols)
74
+ for (var prop of __getOwnPropSymbols(source)) {
75
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
76
+ target[prop] = source[prop];
77
+ }
78
+ return target;
79
+ };
80
+ function cn(...inputs) {
81
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
82
+ }
83
+ var alertVariants = classVarianceAuthority.cva(
84
+ "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
85
+ {
86
+ variants: {
87
+ variant: {
88
+ default: "bg-card text-card-foreground",
89
+ destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"
90
+ }
91
+ },
92
+ defaultVariants: {
93
+ variant: "default"
94
+ }
95
+ }
96
+ );
97
+ function Alert(_a) {
98
+ var _b = _a, {
99
+ className,
100
+ variant
101
+ } = _b, props = __objRest(_b, [
102
+ "className",
103
+ "variant"
104
+ ]);
105
+ return /* @__PURE__ */ jsxRuntime.jsx(
106
+ "div",
107
+ __spreadValues({
108
+ "data-slot": "alert",
109
+ role: "alert",
110
+ className: cn(alertVariants({ variant }), className)
111
+ }, props)
112
+ );
113
+ }
114
+ function AlertTitle(_a) {
115
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
116
+ return /* @__PURE__ */ jsxRuntime.jsx(
117
+ "div",
118
+ __spreadValues({
119
+ "data-slot": "alert-title",
120
+ className: cn(
121
+ "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
122
+ className
123
+ )
124
+ }, props)
125
+ );
126
+ }
127
+ function AlertDescription(_a) {
128
+ var _b = _a, {
129
+ className
130
+ } = _b, props = __objRest(_b, [
131
+ "className"
132
+ ]);
133
+ return /* @__PURE__ */ jsxRuntime.jsx(
134
+ "div",
135
+ __spreadValues({
136
+ "data-slot": "alert-description",
137
+ className: cn(
138
+ "text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
139
+ className
140
+ )
141
+ }, props)
142
+ );
143
+ }
144
+ var buttonVariants = classVarianceAuthority.cva(
145
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
146
+ {
147
+ variants: {
148
+ variant: {
149
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
150
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
151
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
152
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
153
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
154
+ link: "text-primary underline-offset-4 hover:underline"
155
+ },
156
+ size: {
157
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
158
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
159
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
160
+ icon: "size-9",
161
+ "icon-sm": "size-8",
162
+ "icon-lg": "size-10"
163
+ }
164
+ },
165
+ defaultVariants: {
166
+ variant: "default",
167
+ size: "default"
168
+ }
169
+ }
170
+ );
171
+ function Button(_a) {
172
+ var _b = _a, {
173
+ className,
174
+ variant,
175
+ size,
176
+ asChild = false
177
+ } = _b, props = __objRest(_b, [
178
+ "className",
179
+ "variant",
180
+ "size",
181
+ "asChild"
182
+ ]);
183
+ const Comp = asChild ? reactSlot.Slot : "button";
184
+ return /* @__PURE__ */ jsxRuntime.jsx(
185
+ Comp,
186
+ __spreadValues({
187
+ "data-slot": "button",
188
+ className: cn(buttonVariants({ variant, size, className }))
189
+ }, props)
190
+ );
191
+ }
192
+ function Calendar(_a) {
193
+ var _b = _a, {
194
+ className,
195
+ classNames,
196
+ showOutsideDays = true,
197
+ captionLayout = "label",
198
+ buttonVariant = "ghost",
199
+ formatters,
200
+ components
201
+ } = _b, props = __objRest(_b, [
202
+ "className",
203
+ "classNames",
204
+ "showOutsideDays",
205
+ "captionLayout",
206
+ "buttonVariant",
207
+ "formatters",
208
+ "components"
209
+ ]);
210
+ const defaultClassNames = reactDayPicker.getDefaultClassNames();
211
+ return /* @__PURE__ */ jsxRuntime.jsx(
212
+ reactDayPicker.DayPicker,
213
+ __spreadValues({
214
+ showOutsideDays,
215
+ className: cn(
216
+ "bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
217
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
218
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
219
+ className
220
+ ),
221
+ captionLayout,
222
+ formatters: __spreadValues({
223
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" })
224
+ }, formatters),
225
+ classNames: __spreadValues({
226
+ root: cn("w-fit", defaultClassNames.root),
227
+ months: cn(
228
+ "flex gap-4 flex-col md:flex-row relative",
229
+ defaultClassNames.months
230
+ ),
231
+ month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
232
+ nav: cn(
233
+ "flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",
234
+ defaultClassNames.nav
235
+ ),
236
+ button_previous: cn(
237
+ buttonVariants({ variant: buttonVariant }),
238
+ "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
239
+ defaultClassNames.button_previous
240
+ ),
241
+ button_next: cn(
242
+ buttonVariants({ variant: buttonVariant }),
243
+ "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
244
+ defaultClassNames.button_next
245
+ ),
246
+ month_caption: cn(
247
+ "flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)",
248
+ defaultClassNames.month_caption
249
+ ),
250
+ dropdowns: cn(
251
+ "w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5",
252
+ defaultClassNames.dropdowns
253
+ ),
254
+ dropdown_root: cn(
255
+ "relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md",
256
+ defaultClassNames.dropdown_root
257
+ ),
258
+ dropdown: cn(
259
+ "absolute bg-popover inset-0 opacity-0",
260
+ defaultClassNames.dropdown
261
+ ),
262
+ caption_label: cn(
263
+ "select-none font-medium",
264
+ captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5",
265
+ defaultClassNames.caption_label
266
+ ),
267
+ table: "w-full border-collapse",
268
+ weekdays: cn("flex", defaultClassNames.weekdays),
269
+ weekday: cn(
270
+ "text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none",
271
+ defaultClassNames.weekday
272
+ ),
273
+ week: cn("flex w-full mt-2", defaultClassNames.week),
274
+ week_number_header: cn(
275
+ "select-none w-(--cell-size)",
276
+ defaultClassNames.week_number_header
277
+ ),
278
+ week_number: cn(
279
+ "text-[0.8rem] select-none text-muted-foreground",
280
+ defaultClassNames.week_number
281
+ ),
282
+ day: cn(
283
+ "relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",
284
+ props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "[&:first-child[data-selected=true]_button]:rounded-l-md",
285
+ defaultClassNames.day
286
+ ),
287
+ range_start: cn(
288
+ "rounded-l-md bg-accent",
289
+ defaultClassNames.range_start
290
+ ),
291
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
292
+ range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
293
+ today: cn(
294
+ "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
295
+ defaultClassNames.today
296
+ ),
297
+ outside: cn(
298
+ "text-muted-foreground aria-selected:text-muted-foreground",
299
+ defaultClassNames.outside
300
+ ),
301
+ disabled: cn(
302
+ "text-muted-foreground opacity-50",
303
+ defaultClassNames.disabled
304
+ ),
305
+ hidden: cn("invisible", defaultClassNames.hidden)
306
+ }, classNames),
307
+ components: __spreadValues({
308
+ Root: (_a2) => {
309
+ var _b2 = _a2, { className: className2, rootRef } = _b2, props2 = __objRest(_b2, ["className", "rootRef"]);
310
+ return /* @__PURE__ */ jsxRuntime.jsx(
311
+ "div",
312
+ __spreadValues({
313
+ "data-slot": "calendar",
314
+ ref: rootRef,
315
+ className: cn(className2)
316
+ }, props2)
317
+ );
318
+ },
319
+ Chevron: (_c) => {
320
+ var _d = _c, { className: className2, orientation } = _d, props2 = __objRest(_d, ["className", "orientation"]);
321
+ if (orientation === "left") {
322
+ return /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronLeftIcon, __spreadValues({ className: cn("size-4", className2) }, props2));
323
+ }
324
+ if (orientation === "right") {
325
+ return /* @__PURE__ */ jsxRuntime.jsx(
326
+ LucideIcons.ChevronRightIcon,
327
+ __spreadValues({
328
+ className: cn("size-4", className2)
329
+ }, props2)
330
+ );
331
+ }
332
+ return /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDownIcon, __spreadValues({ className: cn("size-4", className2) }, props2));
333
+ },
334
+ DayButton: CalendarDayButton,
335
+ WeekNumber: (_e) => {
336
+ var _f = _e, { children } = _f, props2 = __objRest(_f, ["children"]);
337
+ return /* @__PURE__ */ jsxRuntime.jsx("td", __spreadProps(__spreadValues({}, props2), { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
338
+ }
339
+ }, components)
340
+ }, props)
341
+ );
342
+ }
343
+ function CalendarDayButton(_a) {
344
+ var _b = _a, {
345
+ className,
346
+ day,
347
+ modifiers
348
+ } = _b, props = __objRest(_b, [
349
+ "className",
350
+ "day",
351
+ "modifiers"
352
+ ]);
353
+ const defaultClassNames = reactDayPicker.getDefaultClassNames();
354
+ const ref = React9__namespace.useRef(null);
355
+ React9__namespace.useEffect(() => {
356
+ var _a2;
357
+ if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
358
+ }, [modifiers.focused]);
359
+ return /* @__PURE__ */ jsxRuntime.jsx(
360
+ Button,
361
+ __spreadValues({
362
+ ref,
363
+ variant: "ghost",
364
+ size: "icon",
365
+ "data-day": day.date.toLocaleDateString(),
366
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
367
+ "data-range-start": modifiers.range_start,
368
+ "data-range-end": modifiers.range_end,
369
+ "data-range-middle": modifiers.range_middle,
370
+ className: cn(
371
+ "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70",
372
+ defaultClassNames.day,
373
+ className
374
+ )
375
+ }, props)
376
+ );
377
+ }
378
+ function Card(_a) {
379
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
380
+ return /* @__PURE__ */ jsxRuntime.jsx(
381
+ "div",
382
+ __spreadValues({
383
+ "data-slot": "card",
384
+ className: cn(
385
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
386
+ className
387
+ )
388
+ }, props)
389
+ );
390
+ }
391
+ function CardHeader(_a) {
392
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
393
+ return /* @__PURE__ */ jsxRuntime.jsx(
394
+ "div",
395
+ __spreadValues({
396
+ "data-slot": "card-header",
397
+ className: cn(
398
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
399
+ className
400
+ )
401
+ }, props)
402
+ );
403
+ }
404
+ function CardTitle(_a) {
405
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
406
+ return /* @__PURE__ */ jsxRuntime.jsx(
407
+ "div",
408
+ __spreadValues({
409
+ "data-slot": "card-title",
410
+ className: cn("leading-none font-semibold", className)
411
+ }, props)
412
+ );
413
+ }
414
+ function CardDescription(_a) {
415
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
416
+ return /* @__PURE__ */ jsxRuntime.jsx(
417
+ "div",
418
+ __spreadValues({
419
+ "data-slot": "card-description",
420
+ className: cn("text-muted-foreground text-sm", className)
421
+ }, props)
422
+ );
423
+ }
424
+ function CardAction(_a) {
425
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
426
+ return /* @__PURE__ */ jsxRuntime.jsx(
427
+ "div",
428
+ __spreadValues({
429
+ "data-slot": "card-action",
430
+ className: cn(
431
+ "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
432
+ className
433
+ )
434
+ }, props)
435
+ );
436
+ }
437
+ function CardContent(_a) {
438
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
439
+ return /* @__PURE__ */ jsxRuntime.jsx(
440
+ "div",
441
+ __spreadValues({
442
+ "data-slot": "card-content",
443
+ className: cn("px-6", className)
444
+ }, props)
445
+ );
446
+ }
447
+ function CardFooter(_a) {
448
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
449
+ return /* @__PURE__ */ jsxRuntime.jsx(
450
+ "div",
451
+ __spreadValues({
452
+ "data-slot": "card-footer",
453
+ className: cn("flex items-center px-6 [.border-t]:pt-6", className)
454
+ }, props)
455
+ );
456
+ }
457
+ function Dialog(_a) {
458
+ var props = __objRest(_a, []);
459
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Root, __spreadValues({ "data-slot": "dialog" }, props));
460
+ }
461
+ function DialogTrigger(_a) {
462
+ var props = __objRest(_a, []);
463
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Trigger, __spreadValues({ "data-slot": "dialog-trigger" }, props));
464
+ }
465
+ function DialogPortal(_a) {
466
+ var props = __objRest(_a, []);
467
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Portal, __spreadValues({ "data-slot": "dialog-portal" }, props));
468
+ }
469
+ function DialogClose(_a) {
470
+ var props = __objRest(_a, []);
471
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Close, __spreadValues({ "data-slot": "dialog-close" }, props));
472
+ }
473
+ function DialogOverlay(_a) {
474
+ var _b = _a, {
475
+ className
476
+ } = _b, props = __objRest(_b, [
477
+ "className"
478
+ ]);
479
+ return /* @__PURE__ */ jsxRuntime.jsx(
480
+ DialogPrimitive__namespace.Overlay,
481
+ __spreadValues({
482
+ "data-slot": "dialog-overlay",
483
+ className: cn(
484
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
485
+ className
486
+ )
487
+ }, props)
488
+ );
489
+ }
490
+ function DialogContent(_a) {
491
+ var _b = _a, {
492
+ className,
493
+ children,
494
+ showCloseButton = true
495
+ } = _b, props = __objRest(_b, [
496
+ "className",
497
+ "children",
498
+ "showCloseButton"
499
+ ]);
500
+ return /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
501
+ /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
502
+ /* @__PURE__ */ jsxRuntime.jsxs(
503
+ DialogPrimitive__namespace.Content,
504
+ __spreadProps(__spreadValues({
505
+ "data-slot": "dialog-content",
506
+ className: cn(
507
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",
508
+ className
509
+ )
510
+ }, props), {
511
+ children: [
512
+ children,
513
+ showCloseButton && /* @__PURE__ */ jsxRuntime.jsxs(
514
+ DialogPrimitive__namespace.Close,
515
+ {
516
+ "data-slot": "dialog-close",
517
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
518
+ children: [
519
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.XIcon, {}),
520
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
521
+ ]
522
+ }
523
+ )
524
+ ]
525
+ })
526
+ )
527
+ ] });
528
+ }
529
+ function DialogHeader(_a) {
530
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
531
+ return /* @__PURE__ */ jsxRuntime.jsx(
532
+ "div",
533
+ __spreadValues({
534
+ "data-slot": "dialog-header",
535
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className)
536
+ }, props)
537
+ );
538
+ }
539
+ function DialogFooter(_a) {
540
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
541
+ return /* @__PURE__ */ jsxRuntime.jsx(
542
+ "div",
543
+ __spreadValues({
544
+ "data-slot": "dialog-footer",
545
+ className: cn(
546
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
547
+ className
548
+ )
549
+ }, props)
550
+ );
551
+ }
552
+ function DialogTitle(_a) {
553
+ var _b = _a, {
554
+ className
555
+ } = _b, props = __objRest(_b, [
556
+ "className"
557
+ ]);
558
+ return /* @__PURE__ */ jsxRuntime.jsx(
559
+ DialogPrimitive__namespace.Title,
560
+ __spreadValues({
561
+ "data-slot": "dialog-title",
562
+ className: cn("text-lg leading-none font-semibold", className)
563
+ }, props)
564
+ );
565
+ }
566
+ function DialogDescription(_a) {
567
+ var _b = _a, {
568
+ className
569
+ } = _b, props = __objRest(_b, [
570
+ "className"
571
+ ]);
572
+ return /* @__PURE__ */ jsxRuntime.jsx(
573
+ DialogPrimitive__namespace.Description,
574
+ __spreadValues({
575
+ "data-slot": "dialog-description",
576
+ className: cn("text-muted-foreground text-sm", className)
577
+ }, props)
578
+ );
579
+ }
580
+ function Command(_a) {
581
+ var _b = _a, {
582
+ className
583
+ } = _b, props = __objRest(_b, [
584
+ "className"
585
+ ]);
586
+ return /* @__PURE__ */ jsxRuntime.jsx(
587
+ cmdk.Command,
588
+ __spreadValues({
589
+ "data-slot": "command",
590
+ className: cn(
591
+ "bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",
592
+ className
593
+ )
594
+ }, props)
595
+ );
596
+ }
597
+ function CommandDialog(_a) {
598
+ var _b = _a, {
599
+ title = "Command Palette",
600
+ description = "Search for a command to run...",
601
+ children,
602
+ className,
603
+ showCloseButton = true
604
+ } = _b, props = __objRest(_b, [
605
+ "title",
606
+ "description",
607
+ "children",
608
+ "className",
609
+ "showCloseButton"
610
+ ]);
611
+ return /* @__PURE__ */ jsxRuntime.jsxs(Dialog, __spreadProps(__spreadValues({}, props), { children: [
612
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { className: "sr-only", children: [
613
+ /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: title }),
614
+ /* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { children: description })
615
+ ] }),
616
+ /* @__PURE__ */ jsxRuntime.jsx(
617
+ DialogContent,
618
+ {
619
+ className: cn("overflow-hidden p-0", className),
620
+ showCloseButton,
621
+ children: /* @__PURE__ */ jsxRuntime.jsx(Command, { className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children })
622
+ }
623
+ )
624
+ ] }));
625
+ }
626
+ function CommandInput(_a) {
627
+ var _b = _a, {
628
+ className
629
+ } = _b, props = __objRest(_b, [
630
+ "className"
631
+ ]);
632
+ return /* @__PURE__ */ jsxRuntime.jsxs(
633
+ "div",
634
+ {
635
+ "data-slot": "command-input-wrapper",
636
+ className: "flex h-9 items-center gap-2 border-b px-3",
637
+ children: [
638
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.SearchIcon, { className: "size-4 shrink-0 opacity-50" }),
639
+ /* @__PURE__ */ jsxRuntime.jsx(
640
+ cmdk.Command.Input,
641
+ __spreadValues({
642
+ "data-slot": "command-input",
643
+ className: cn(
644
+ "placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
645
+ className
646
+ )
647
+ }, props)
648
+ )
649
+ ]
650
+ }
651
+ );
652
+ }
653
+ function CommandList(_a) {
654
+ var _b = _a, {
655
+ className
656
+ } = _b, props = __objRest(_b, [
657
+ "className"
658
+ ]);
659
+ return /* @__PURE__ */ jsxRuntime.jsx(
660
+ cmdk.Command.List,
661
+ __spreadValues({
662
+ "data-slot": "command-list",
663
+ className: cn(
664
+ "max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",
665
+ className
666
+ )
667
+ }, props)
668
+ );
669
+ }
670
+ function CommandEmpty(_a) {
671
+ var props = __objRest(_a, []);
672
+ return /* @__PURE__ */ jsxRuntime.jsx(
673
+ cmdk.Command.Empty,
674
+ __spreadValues({
675
+ "data-slot": "command-empty",
676
+ className: "py-6 text-center text-sm"
677
+ }, props)
678
+ );
679
+ }
680
+ function CommandGroup(_a) {
681
+ var _b = _a, {
682
+ className
683
+ } = _b, props = __objRest(_b, [
684
+ "className"
685
+ ]);
686
+ return /* @__PURE__ */ jsxRuntime.jsx(
687
+ cmdk.Command.Group,
688
+ __spreadValues({
689
+ "data-slot": "command-group",
690
+ className: cn(
691
+ "text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",
692
+ className
693
+ )
694
+ }, props)
695
+ );
696
+ }
697
+ function CommandSeparator(_a) {
698
+ var _b = _a, {
699
+ className
700
+ } = _b, props = __objRest(_b, [
701
+ "className"
702
+ ]);
703
+ return /* @__PURE__ */ jsxRuntime.jsx(
704
+ cmdk.Command.Separator,
705
+ __spreadValues({
706
+ "data-slot": "command-separator",
707
+ className: cn("bg-border -mx-1 h-px", className)
708
+ }, props)
709
+ );
710
+ }
711
+ function CommandItem(_a) {
712
+ var _b = _a, {
713
+ className
714
+ } = _b, props = __objRest(_b, [
715
+ "className"
716
+ ]);
717
+ return /* @__PURE__ */ jsxRuntime.jsx(
718
+ cmdk.Command.Item,
719
+ __spreadValues({
720
+ "data-slot": "command-item",
721
+ className: cn(
722
+ "data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
723
+ className
724
+ )
725
+ }, props)
726
+ );
727
+ }
728
+ function CommandShortcut(_a) {
729
+ var _b = _a, {
730
+ className
731
+ } = _b, props = __objRest(_b, [
732
+ "className"
733
+ ]);
734
+ return /* @__PURE__ */ jsxRuntime.jsx(
735
+ "span",
736
+ __spreadValues({
737
+ "data-slot": "command-shortcut",
738
+ className: cn(
739
+ "text-muted-foreground ml-auto text-xs tracking-widest",
740
+ className
741
+ )
742
+ }, props)
743
+ );
744
+ }
745
+ function Input(_a) {
746
+ var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
747
+ return /* @__PURE__ */ jsxRuntime.jsx(
748
+ "input",
749
+ __spreadValues({
750
+ type,
751
+ "data-slot": "input",
752
+ className: cn(
753
+ "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
754
+ "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
755
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
756
+ className
757
+ )
758
+ }, props)
759
+ );
760
+ }
761
+ function Label(_a) {
762
+ var _b = _a, {
763
+ className
764
+ } = _b, props = __objRest(_b, [
765
+ "className"
766
+ ]);
767
+ return /* @__PURE__ */ jsxRuntime.jsx(
768
+ LabelPrimitive__namespace.Root,
769
+ __spreadValues({
770
+ "data-slot": "label",
771
+ className: cn(
772
+ "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
773
+ className
774
+ )
775
+ }, props)
776
+ );
777
+ }
778
+ function Popover(_a) {
779
+ var props = __objRest(_a, []);
780
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Root, __spreadValues({ "data-slot": "popover" }, props));
781
+ }
782
+ function PopoverTrigger(_a) {
783
+ var props = __objRest(_a, []);
784
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
785
+ }
786
+ function PopoverContent(_a) {
787
+ var _b = _a, {
788
+ className,
789
+ align = "center",
790
+ sideOffset = 4
791
+ } = _b, props = __objRest(_b, [
792
+ "className",
793
+ "align",
794
+ "sideOffset"
795
+ ]);
796
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
797
+ PopoverPrimitive__namespace.Content,
798
+ __spreadValues({
799
+ "data-slot": "popover-content",
800
+ align,
801
+ sideOffset,
802
+ className: cn(
803
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
804
+ className
805
+ )
806
+ }, props)
807
+ ) });
808
+ }
809
+ function PopoverAnchor(_a) {
810
+ var props = __objRest(_a, []);
811
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Anchor, __spreadValues({ "data-slot": "popover-anchor" }, props));
812
+ }
813
+ function Progress(_a) {
814
+ var _b = _a, {
815
+ className,
816
+ value
817
+ } = _b, props = __objRest(_b, [
818
+ "className",
819
+ "value"
820
+ ]);
821
+ return /* @__PURE__ */ jsxRuntime.jsx(
822
+ ProgressPrimitive__namespace.Root,
823
+ __spreadProps(__spreadValues({
824
+ "data-slot": "progress",
825
+ className: cn(
826
+ "bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",
827
+ className
828
+ )
829
+ }, props), {
830
+ children: /* @__PURE__ */ jsxRuntime.jsx(
831
+ ProgressPrimitive__namespace.Indicator,
832
+ {
833
+ "data-slot": "progress-indicator",
834
+ className: "bg-[var(--theme-primary,black)] h-full w-full flex-1 transition-all",
835
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
836
+ }
837
+ )
838
+ })
839
+ );
840
+ }
841
+ function Select(_a) {
842
+ var props = __objRest(_a, []);
843
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Root, __spreadValues({ "data-slot": "select" }, props));
844
+ }
845
+ function SelectGroup(_a) {
846
+ var props = __objRest(_a, []);
847
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Group, __spreadValues({ "data-slot": "select-group" }, props));
848
+ }
849
+ function SelectValue(_a) {
850
+ var props = __objRest(_a, []);
851
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Value, __spreadValues({ "data-slot": "select-value" }, props));
852
+ }
853
+ function SelectTrigger(_a) {
854
+ var _b = _a, {
855
+ className,
856
+ size = "default",
857
+ children
858
+ } = _b, props = __objRest(_b, [
859
+ "className",
860
+ "size",
861
+ "children"
862
+ ]);
863
+ return /* @__PURE__ */ jsxRuntime.jsxs(
864
+ SelectPrimitive__namespace.Trigger,
865
+ __spreadProps(__spreadValues({
866
+ "data-slot": "select-trigger",
867
+ "data-size": size,
868
+ className: cn(
869
+ "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
870
+ className
871
+ )
872
+ }, props), {
873
+ children: [
874
+ children,
875
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDownIcon, { className: "size-4 opacity-50" }) })
876
+ ]
877
+ })
878
+ );
879
+ }
880
+ function SelectContent(_a) {
881
+ var _b = _a, {
882
+ className,
883
+ children,
884
+ position = "item-aligned",
885
+ align = "center"
886
+ } = _b, props = __objRest(_b, [
887
+ "className",
888
+ "children",
889
+ "position",
890
+ "align"
891
+ ]);
892
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
893
+ SelectPrimitive__namespace.Content,
894
+ __spreadProps(__spreadValues({
895
+ "data-slot": "select-content",
896
+ className: cn(
897
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
898
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
899
+ className
900
+ ),
901
+ position,
902
+ align
903
+ }, props), {
904
+ children: [
905
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
906
+ /* @__PURE__ */ jsxRuntime.jsx(
907
+ SelectPrimitive__namespace.Viewport,
908
+ {
909
+ className: cn(
910
+ "p-1",
911
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
912
+ ),
913
+ children
914
+ }
915
+ ),
916
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
917
+ ]
918
+ })
919
+ ) });
920
+ }
921
+ function SelectLabel(_a) {
922
+ var _b = _a, {
923
+ className
924
+ } = _b, props = __objRest(_b, [
925
+ "className"
926
+ ]);
927
+ return /* @__PURE__ */ jsxRuntime.jsx(
928
+ SelectPrimitive__namespace.Label,
929
+ __spreadValues({
930
+ "data-slot": "select-label",
931
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs", className)
932
+ }, props)
933
+ );
934
+ }
935
+ function SelectItem(_a) {
936
+ var _b = _a, {
937
+ className,
938
+ children
939
+ } = _b, props = __objRest(_b, [
940
+ "className",
941
+ "children"
942
+ ]);
943
+ return /* @__PURE__ */ jsxRuntime.jsxs(
944
+ SelectPrimitive__namespace.Item,
945
+ __spreadProps(__spreadValues({
946
+ "data-slot": "select-item",
947
+ className: cn(
948
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
949
+ className
950
+ )
951
+ }, props), {
952
+ children: [
953
+ /* @__PURE__ */ jsxRuntime.jsx(
954
+ "span",
955
+ {
956
+ "data-slot": "select-item-indicator",
957
+ className: "absolute right-2 flex size-3.5 items-center justify-center",
958
+ children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.CheckIcon, { className: "size-4" }) })
959
+ }
960
+ ),
961
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
962
+ ]
963
+ })
964
+ );
965
+ }
966
+ function SelectSeparator(_a) {
967
+ var _b = _a, {
968
+ className
969
+ } = _b, props = __objRest(_b, [
970
+ "className"
971
+ ]);
972
+ return /* @__PURE__ */ jsxRuntime.jsx(
973
+ SelectPrimitive__namespace.Separator,
974
+ __spreadValues({
975
+ "data-slot": "select-separator",
976
+ className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className)
977
+ }, props)
978
+ );
979
+ }
980
+ function SelectScrollUpButton(_a) {
981
+ var _b = _a, {
982
+ className
983
+ } = _b, props = __objRest(_b, [
984
+ "className"
985
+ ]);
986
+ return /* @__PURE__ */ jsxRuntime.jsx(
987
+ SelectPrimitive__namespace.ScrollUpButton,
988
+ __spreadProps(__spreadValues({
989
+ "data-slot": "select-scroll-up-button",
990
+ className: cn(
991
+ "flex cursor-default items-center justify-center py-1",
992
+ className
993
+ )
994
+ }, props), {
995
+ children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronUpIcon, { className: "size-4" })
996
+ })
997
+ );
998
+ }
999
+ function SelectScrollDownButton(_a) {
1000
+ var _b = _a, {
1001
+ className
1002
+ } = _b, props = __objRest(_b, [
1003
+ "className"
1004
+ ]);
1005
+ return /* @__PURE__ */ jsxRuntime.jsx(
1006
+ SelectPrimitive__namespace.ScrollDownButton,
1007
+ __spreadProps(__spreadValues({
1008
+ "data-slot": "select-scroll-down-button",
1009
+ className: cn(
1010
+ "flex cursor-default items-center justify-center py-1",
1011
+ className
1012
+ )
1013
+ }, props), {
1014
+ children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDownIcon, { className: "size-4" })
1015
+ })
1016
+ );
1017
+ }
1018
+ var Spinner = React9__namespace.forwardRef(
1019
+ (_a, ref) => {
1020
+ var _b = _a, { className, size = "md" } = _b, props = __objRest(_b, ["className", "size"]);
1021
+ const sizeClasses = {
1022
+ sm: "h-4 w-4",
1023
+ md: "h-6 w-6",
1024
+ lg: "h-8 w-8",
1025
+ xl: "h-12 w-12"
1026
+ };
1027
+ return /* @__PURE__ */ jsxRuntime.jsx(
1028
+ "svg",
1029
+ __spreadProps(__spreadValues({
1030
+ ref,
1031
+ xmlns: "http://www.w3.org/2000/svg",
1032
+ viewBox: "0 0 24 24",
1033
+ fill: "none",
1034
+ stroke: "currentColor",
1035
+ strokeWidth: "2",
1036
+ strokeLinecap: "round",
1037
+ strokeLinejoin: "round",
1038
+ className: cn("animate-spin", sizeClasses[size], className)
1039
+ }, props), {
1040
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" })
1041
+ })
1042
+ );
1043
+ }
1044
+ );
1045
+ Spinner.displayName = "Spinner";
1046
+ function Switch(_a) {
1047
+ var _b = _a, {
1048
+ className
1049
+ } = _b, props = __objRest(_b, [
1050
+ "className"
1051
+ ]);
1052
+ return /* @__PURE__ */ jsxRuntime.jsx(
1053
+ SwitchPrimitive__namespace.Root,
1054
+ __spreadProps(__spreadValues({
1055
+ "data-slot": "switch",
1056
+ className: cn(
1057
+ "peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
1058
+ className
1059
+ )
1060
+ }, props), {
1061
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1062
+ SwitchPrimitive__namespace.Thumb,
1063
+ {
1064
+ "data-slot": "switch-thumb",
1065
+ className: cn(
1066
+ "bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
1067
+ )
1068
+ }
1069
+ )
1070
+ })
1071
+ );
1072
+ }
1073
+ function Table(_a) {
1074
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1075
+ return /* @__PURE__ */ jsxRuntime.jsx(
1076
+ "div",
1077
+ {
1078
+ "data-slot": "table-container",
1079
+ className: "relative w-full overflow-x-auto",
1080
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1081
+ "table",
1082
+ __spreadValues({
1083
+ "data-slot": "table",
1084
+ className: cn("w-full caption-bottom text-sm", className)
1085
+ }, props)
1086
+ )
1087
+ }
1088
+ );
1089
+ }
1090
+ function TableHeader(_a) {
1091
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1092
+ return /* @__PURE__ */ jsxRuntime.jsx(
1093
+ "thead",
1094
+ __spreadValues({
1095
+ "data-slot": "table-header",
1096
+ className: cn("[&_tr]:border-b", className)
1097
+ }, props)
1098
+ );
1099
+ }
1100
+ function TableBody(_a) {
1101
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1102
+ return /* @__PURE__ */ jsxRuntime.jsx(
1103
+ "tbody",
1104
+ __spreadValues({
1105
+ "data-slot": "table-body",
1106
+ className: cn("[&_tr:last-child]:border-0", className)
1107
+ }, props)
1108
+ );
1109
+ }
1110
+ function TableFooter(_a) {
1111
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1112
+ return /* @__PURE__ */ jsxRuntime.jsx(
1113
+ "tfoot",
1114
+ __spreadValues({
1115
+ "data-slot": "table-footer",
1116
+ className: cn(
1117
+ "bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",
1118
+ className
1119
+ )
1120
+ }, props)
1121
+ );
1122
+ }
1123
+ function TableRow(_a) {
1124
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1125
+ return /* @__PURE__ */ jsxRuntime.jsx(
1126
+ "tr",
1127
+ __spreadValues({
1128
+ "data-slot": "table-row",
1129
+ className: cn(
1130
+ "hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",
1131
+ className
1132
+ )
1133
+ }, props)
1134
+ );
1135
+ }
1136
+ function TableHead(_a) {
1137
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1138
+ return /* @__PURE__ */ jsxRuntime.jsx(
1139
+ "th",
1140
+ __spreadValues({
1141
+ "data-slot": "table-head",
1142
+ className: cn(
1143
+ "text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1144
+ className
1145
+ )
1146
+ }, props)
1147
+ );
1148
+ }
1149
+ function TableCell(_a) {
1150
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1151
+ return /* @__PURE__ */ jsxRuntime.jsx(
1152
+ "td",
1153
+ __spreadValues({
1154
+ "data-slot": "table-cell",
1155
+ className: cn(
1156
+ "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1157
+ className
1158
+ )
1159
+ }, props)
1160
+ );
1161
+ }
1162
+ function TableCaption(_a) {
1163
+ var _b = _a, {
1164
+ className
1165
+ } = _b, props = __objRest(_b, [
1166
+ "className"
1167
+ ]);
1168
+ return /* @__PURE__ */ jsxRuntime.jsx(
1169
+ "caption",
1170
+ __spreadValues({
1171
+ "data-slot": "table-caption",
1172
+ className: cn("text-muted-foreground mt-4 text-sm", className)
1173
+ }, props)
1174
+ );
1175
+ }
1176
+ function TooltipProvider(_a) {
1177
+ var _b = _a, {
1178
+ delayDuration = 0
1179
+ } = _b, props = __objRest(_b, [
1180
+ "delayDuration"
1181
+ ]);
1182
+ return /* @__PURE__ */ jsxRuntime.jsx(
1183
+ TooltipPrimitive__namespace.Provider,
1184
+ __spreadValues({
1185
+ "data-slot": "tooltip-provider",
1186
+ delayDuration
1187
+ }, props)
1188
+ );
1189
+ }
1190
+ function Tooltip(_a) {
1191
+ var props = __objRest(_a, []);
1192
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Root, __spreadValues({ "data-slot": "tooltip" }, props)) });
1193
+ }
1194
+ function TooltipTrigger(_a) {
1195
+ var props = __objRest(_a, []);
1196
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
1197
+ }
1198
+ function TooltipContent(_a) {
1199
+ var _b = _a, {
1200
+ className,
1201
+ sideOffset = 0,
1202
+ children
1203
+ } = _b, props = __objRest(_b, [
1204
+ "className",
1205
+ "sideOffset",
1206
+ "children"
1207
+ ]);
1208
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
1209
+ TooltipPrimitive__namespace.Content,
1210
+ __spreadProps(__spreadValues({
1211
+ "data-slot": "tooltip-content",
1212
+ sideOffset,
1213
+ className: cn(
1214
+ "bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
1215
+ className
1216
+ )
1217
+ }, props), {
1218
+ children: [
1219
+ children,
1220
+ /* @__PURE__ */ jsxRuntime.jsx(
1221
+ TooltipPrimitive__namespace.Arrow,
1222
+ {
1223
+ "data-slot": "tooltip-arrow",
1224
+ className: "z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] fill-foreground bg-foreground"
1225
+ }
1226
+ )
1227
+ ]
1228
+ })
1229
+ ) });
1230
+ }
1231
+
1232
+ // src/stories/claimmind/theme.ts
1233
+ var themeStyles = {
1234
+ Default: {
1235
+ primary: "var(--claimmind-primary)",
1236
+ secondary: "var(--claimmind-secondary)",
1237
+ tertiary: "var(--claimmind-tertiary)",
1238
+ success: "var(--claimmind-success)",
1239
+ danger: "var(--claimmind-danger)",
1240
+ background: "var(--claimmind-background)"
1241
+ },
1242
+ Owlexa: {
1243
+ primary: "var(--owlexa-primary)",
1244
+ secondary: "var(--owlexa-secondary)",
1245
+ tertiary: "var(--owlexa-tertiary)",
1246
+ success: "var(--owlexa-success)",
1247
+ danger: "var(--owlexa-danger)",
1248
+ background: "var(--owlexa-background)"
1249
+ },
1250
+ BPJS: {
1251
+ primary: "var(--bpjs-primary)",
1252
+ secondary: "var(--bpjs-secondary)",
1253
+ tertiary: "var(--bpjs-tertiary)",
1254
+ success: "var(--bpjs-success)",
1255
+ danger: "var(--bpjs-danger)",
1256
+ background: "var(--bpjs-background)"
1257
+ }
1258
+ };
1259
+ function ClaimMindSpinner({ theme = "Default", size = "md", className }) {
1260
+ const currentTheme = themeStyles[theme];
1261
+ return /* @__PURE__ */ jsxRuntime.jsx(
1262
+ Spinner,
1263
+ {
1264
+ size,
1265
+ style: {
1266
+ "--theme-primary": currentTheme.primary
1267
+ },
1268
+ className: cn(
1269
+ "text-[var(--theme-primary)]",
1270
+ className
1271
+ )
1272
+ }
1273
+ );
1274
+ }
1275
+ var Spinner_default = ClaimMindSpinner;
1276
+ var ClaimMindButton = React9__namespace.forwardRef(
1277
+ (_a, ref) => {
1278
+ var _b = _a, {
1279
+ label,
1280
+ children,
1281
+ size,
1282
+ variant = "default",
1283
+ theme = "Default",
1284
+ className,
1285
+ loading,
1286
+ disabled,
1287
+ onClick,
1288
+ leftIconName,
1289
+ rightIconName
1290
+ } = _b, props = __objRest(_b, [
1291
+ "label",
1292
+ "children",
1293
+ "size",
1294
+ "variant",
1295
+ "theme",
1296
+ "className",
1297
+ "loading",
1298
+ "disabled",
1299
+ "onClick",
1300
+ "leftIconName",
1301
+ "rightIconName"
1302
+ ]);
1303
+ const currentTheme = themeStyles[theme];
1304
+ let LeftIconComponent = null;
1305
+ if (leftIconName && LucideIcons__namespace[leftIconName]) {
1306
+ const LucideIcon = LucideIcons__namespace[leftIconName];
1307
+ LeftIconComponent = /* @__PURE__ */ jsxRuntime.jsx(LucideIcon, { className: "w-4 h-4" });
1308
+ }
1309
+ let RightIconComponent = null;
1310
+ if (rightIconName && LucideIcons__namespace[rightIconName]) {
1311
+ const LucideIcon = LucideIcons__namespace[rightIconName];
1312
+ RightIconComponent = /* @__PURE__ */ jsxRuntime.jsx(LucideIcon, { className: "w-4 h-4" });
1313
+ }
1314
+ const displayLeftIcon = LeftIconComponent;
1315
+ const displayRightIcon = RightIconComponent;
1316
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1317
+ Button,
1318
+ __spreadProps(__spreadValues({
1319
+ ref,
1320
+ size,
1321
+ variant,
1322
+ disabled: disabled || loading,
1323
+ onClick,
1324
+ style: {
1325
+ "--theme-primary": currentTheme.primary,
1326
+ "--theme-secondary": currentTheme.secondary,
1327
+ "--theme-tertiary": currentTheme.tertiary,
1328
+ "--theme-success": currentTheme.success,
1329
+ "--theme-danger": currentTheme.danger,
1330
+ "--theme-background": currentTheme.background
1331
+ },
1332
+ className: cn(
1333
+ "font-sans gap-2",
1334
+ variant === "default" && theme === "Default" && "bg-white border border-gray-300 text-gray-700 hover:bg-gray-50 shadow-sm",
1335
+ variant === "default" && theme !== "Default" && "bg-[var(--theme-primary)] hover:bg-[var(--theme-secondary)] text-white shadow-sm",
1336
+ variant === "outline" && "border-[var(--theme-primary)] text-[var(--theme-primary)] hover:bg-[var(--theme-background)]",
1337
+ className
1338
+ )
1339
+ }, props), {
1340
+ children: [
1341
+ loading ? /* @__PURE__ */ jsxRuntime.jsx(Spinner_default, { theme, size: "sm", className: "text-current" }) : displayLeftIcon,
1342
+ children || label,
1343
+ !loading && displayRightIcon
1344
+ ]
1345
+ })
1346
+ );
1347
+ }
1348
+ );
1349
+ ClaimMindButton.displayName = "ClaimMindButton";
1350
+ var Button_default = ClaimMindButton;
1351
+ var ClaimMindInput = React9__namespace.forwardRef(
1352
+ (_a, ref) => {
1353
+ var _b = _a, { theme = "Default", className } = _b, props = __objRest(_b, ["theme", "className"]);
1354
+ const currentTheme = themeStyles[theme];
1355
+ return /* @__PURE__ */ jsxRuntime.jsx(
1356
+ Input,
1357
+ __spreadValues({
1358
+ ref,
1359
+ style: {
1360
+ "--theme-primary": currentTheme.primary,
1361
+ "--theme-secondary": currentTheme.secondary,
1362
+ "--theme-background": currentTheme.background
1363
+ },
1364
+ className: cn(
1365
+ "font-sans focus-visible:border-[var(--theme-primary)] focus-visible:ring-[var(--theme-primary)]/50",
1366
+ className
1367
+ )
1368
+ }, props)
1369
+ );
1370
+ }
1371
+ );
1372
+ ClaimMindInput.displayName = "ClaimMindInput";
1373
+ var Input_default = ClaimMindInput;
1374
+ function ClaimMindAlert(_a) {
1375
+ var _b = _a, { theme = "Default", title, description, icon, className, children } = _b, props = __objRest(_b, ["theme", "title", "description", "icon", "className", "children"]);
1376
+ const currentTheme = themeStyles[theme];
1377
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1378
+ Alert,
1379
+ __spreadProps(__spreadValues({
1380
+ style: {
1381
+ "--theme-primary": currentTheme.primary,
1382
+ "--theme-secondary": currentTheme.secondary,
1383
+ "--theme-tertiary": currentTheme.tertiary,
1384
+ "--theme-success": currentTheme.success,
1385
+ "--theme-danger": currentTheme.danger,
1386
+ "--theme-background": currentTheme.background
1387
+ },
1388
+ className: cn(
1389
+ "font-sans border-[var(--theme-primary)] bg-[var(--theme-background)] text-slate-900",
1390
+ className
1391
+ )
1392
+ }, props), {
1393
+ children: [
1394
+ icon,
1395
+ title && /* @__PURE__ */ jsxRuntime.jsx(AlertTitle, { className: "text-[var(--theme-primary)] font-bold", children: title }),
1396
+ description && /* @__PURE__ */ jsxRuntime.jsx(AlertDescription, { className: "text-slate-700", children: description }),
1397
+ children
1398
+ ]
1399
+ })
1400
+ );
1401
+ }
1402
+ var ClaimMindSwitch = React9__namespace.forwardRef(
1403
+ (_a, ref) => {
1404
+ var _b = _a, { theme = "Default", className } = _b, props = __objRest(_b, ["theme", "className"]);
1405
+ const currentTheme = themeStyles[theme];
1406
+ return /* @__PURE__ */ jsxRuntime.jsx(
1407
+ Switch,
1408
+ __spreadValues({
1409
+ ref,
1410
+ style: {
1411
+ "--theme-primary": currentTheme.primary
1412
+ },
1413
+ className: cn(
1414
+ "data-[state=checked]:bg-[var(--theme-primary)]",
1415
+ className
1416
+ )
1417
+ }, props)
1418
+ );
1419
+ }
1420
+ );
1421
+ ClaimMindSwitch.displayName = "ClaimMindSwitch";
1422
+ var Switch_default = ClaimMindSwitch;
1423
+ function ClaimMindTooltip({
1424
+ content,
1425
+ children,
1426
+ theme = "Default",
1427
+ variant = "theme",
1428
+ side = "top"
1429
+ }) {
1430
+ const currentTheme = themeStyles[theme];
1431
+ const isThemeVariant = variant === "theme";
1432
+ return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
1433
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children }),
1434
+ /* @__PURE__ */ jsxRuntime.jsx(
1435
+ TooltipContent,
1436
+ {
1437
+ side,
1438
+ style: isThemeVariant ? {
1439
+ "--theme-primary": currentTheme.primary
1440
+ } : void 0,
1441
+ className: cn(
1442
+ isThemeVariant && "bg-[var(--theme-primary)] text-white border-[var(--theme-primary)]",
1443
+ isThemeVariant && "[&_[data-slot=tooltip-arrow]]:fill-[var(--theme-primary)] [&_[data-slot=tooltip-arrow]]:bg-[var(--theme-primary)]"
1444
+ ),
1445
+ children: content
1446
+ }
1447
+ )
1448
+ ] });
1449
+ }
1450
+ var Tooltip_default = ClaimMindTooltip;
1451
+ function ClaimMindCard(_a) {
1452
+ var _b = _a, { theme = "Default", showTopBorder = false, className, children } = _b, props = __objRest(_b, ["theme", "showTopBorder", "className", "children"]);
1453
+ const currentTheme = themeStyles[theme];
1454
+ return /* @__PURE__ */ jsxRuntime.jsx(
1455
+ Card,
1456
+ __spreadProps(__spreadValues({
1457
+ style: {
1458
+ "--theme-primary": currentTheme.primary,
1459
+ "--theme-secondary": currentTheme.secondary,
1460
+ "--theme-tertiary": currentTheme.tertiary,
1461
+ "--theme-success": currentTheme.success,
1462
+ "--theme-danger": currentTheme.danger,
1463
+ "--theme-background": currentTheme.background
1464
+ },
1465
+ className: cn(
1466
+ "font-sans shadow",
1467
+ showTopBorder && "border-t-4 border-t-(--theme-primary)",
1468
+ className
1469
+ )
1470
+ }, props), {
1471
+ children
1472
+ })
1473
+ );
1474
+ }
1475
+ var ClaimMindSelect = ({
1476
+ placeholder = "Pilih opsi",
1477
+ options,
1478
+ theme = "Default",
1479
+ className,
1480
+ label,
1481
+ value,
1482
+ onValueChange,
1483
+ disabled
1484
+ }) => {
1485
+ const currentTheme = themeStyles[theme];
1486
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1487
+ "div",
1488
+ {
1489
+ style: {
1490
+ "--theme-primary": currentTheme.primary,
1491
+ "--theme-secondary": currentTheme.secondary,
1492
+ "--theme-background": currentTheme.background
1493
+ },
1494
+ className: cn("w-full grid gap-1.5", className),
1495
+ children: [
1496
+ label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: label }),
1497
+ /* @__PURE__ */ jsxRuntime.jsxs(Select, { value, onValueChange, disabled, children: [
1498
+ /* @__PURE__ */ jsxRuntime.jsx(
1499
+ SelectTrigger,
1500
+ {
1501
+ className: cn(
1502
+ "w-full font-sans",
1503
+ "focus-visible:ring-[var(--theme-primary)]/50 focus-visible:border-[var(--theme-primary)]",
1504
+ "hover:bg-[var(--theme-background)] hover:text-[var(--theme-primary)] hover:border-[var(--theme-primary)] transition-colors",
1505
+ "[&_svg]:hover:text-[var(--theme-primary)]"
1506
+ ),
1507
+ children: /* @__PURE__ */ jsxRuntime.jsx(SelectValue, { placeholder })
1508
+ }
1509
+ ),
1510
+ /* @__PURE__ */ jsxRuntime.jsx(
1511
+ SelectContent,
1512
+ {
1513
+ className: "font-sans",
1514
+ style: {
1515
+ "--accent": currentTheme.primary,
1516
+ "--accent-foreground": "white"
1517
+ },
1518
+ children: /* @__PURE__ */ jsxRuntime.jsx(SelectGroup, { children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
1519
+ SelectItem,
1520
+ {
1521
+ value: option.value,
1522
+ children: option.label
1523
+ },
1524
+ option.value
1525
+ )) })
1526
+ }
1527
+ )
1528
+ ] })
1529
+ ]
1530
+ }
1531
+ );
1532
+ };
1533
+ var Select_default = ClaimMindSelect;
1534
+ function ClaimMindCombobox({
1535
+ options,
1536
+ placeholder = "Pilih item...",
1537
+ searchPlaceholder = "Cari item...",
1538
+ emptyText = "Item tidak ditemukan.",
1539
+ theme = "Default",
1540
+ className,
1541
+ label,
1542
+ value,
1543
+ onValueChange,
1544
+ disabled
1545
+ }) {
1546
+ var _a;
1547
+ const [open, setOpen] = React9__namespace.useState(false);
1548
+ const currentTheme = themeStyles[theme];
1549
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1550
+ "div",
1551
+ {
1552
+ style: {
1553
+ "--theme-primary": currentTheme.primary,
1554
+ "--theme-secondary": currentTheme.secondary,
1555
+ "--theme-background": currentTheme.background
1556
+ },
1557
+ className: cn("w-full grid gap-1.5", className),
1558
+ children: [
1559
+ label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: label }),
1560
+ /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
1561
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1562
+ Button,
1563
+ {
1564
+ variant: "outline",
1565
+ role: "combobox",
1566
+ "aria-expanded": open,
1567
+ disabled,
1568
+ className: cn(
1569
+ "w-full justify-between font-sans font-normal",
1570
+ "focus-visible:ring-[var(--theme-primary)]/50 focus-visible:border-[var(--theme-primary)]",
1571
+ "hover:bg-[var(--theme-background)] hover:text-[var(--theme-primary)] hover:border-[var(--theme-primary)] transition-colors",
1572
+ "[&_svg]:hover:text-[var(--theme-primary)]",
1573
+ !value && "text-muted-foreground"
1574
+ ),
1575
+ children: [
1576
+ value ? (_a = options.find((option) => option.value === value)) == null ? void 0 : _a.label : placeholder,
1577
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
1578
+ ]
1579
+ }
1580
+ ) }),
1581
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { className: "w-full p-0 font-sans", align: "start", children: /* @__PURE__ */ jsxRuntime.jsxs(
1582
+ Command,
1583
+ {
1584
+ className: "w-full",
1585
+ style: {
1586
+ "--accent": currentTheme.primary,
1587
+ "--accent-foreground": "white"
1588
+ },
1589
+ children: [
1590
+ /* @__PURE__ */ jsxRuntime.jsx(CommandInput, { placeholder: searchPlaceholder, className: "font-sans" }),
1591
+ /* @__PURE__ */ jsxRuntime.jsxs(CommandList, { children: [
1592
+ /* @__PURE__ */ jsxRuntime.jsx(CommandEmpty, { children: emptyText }),
1593
+ /* @__PURE__ */ jsxRuntime.jsx(CommandGroup, { children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
1594
+ CommandItem,
1595
+ {
1596
+ value: option.value,
1597
+ className: "font-sans",
1598
+ onSelect: (currentValue) => {
1599
+ onValueChange == null ? void 0 : onValueChange(currentValue === value ? "" : currentValue);
1600
+ setOpen(false);
1601
+ },
1602
+ children: [
1603
+ /* @__PURE__ */ jsxRuntime.jsx(
1604
+ LucideIcons.Check,
1605
+ {
1606
+ className: cn(
1607
+ "mr-2 h-4 w-4",
1608
+ value === option.value ? "opacity-100" : "opacity-0"
1609
+ )
1610
+ }
1611
+ ),
1612
+ option.label
1613
+ ]
1614
+ },
1615
+ option.value
1616
+ )) })
1617
+ ] })
1618
+ ]
1619
+ }
1620
+ ) })
1621
+ ] })
1622
+ ]
1623
+ }
1624
+ );
1625
+ }
1626
+ var Combobox_default = ClaimMindCombobox;
1627
+ var ClaimMindDialog = (_a) => {
1628
+ var _b = _a, { theme = "Default" } = _b, props = __objRest(_b, ["theme"]);
1629
+ return /* @__PURE__ */ jsxRuntime.jsx(Dialog, __spreadValues({}, props));
1630
+ };
1631
+ var ClaimMindDialogContent = React9__namespace.forwardRef((_a, ref) => {
1632
+ var _b = _a, { theme = "Default", className, children } = _b, props = __objRest(_b, ["theme", "className", "children"]);
1633
+ const currentTheme = themeStyles[theme];
1634
+ return /* @__PURE__ */ jsxRuntime.jsx(
1635
+ DialogContent,
1636
+ __spreadProps(__spreadValues({
1637
+ ref,
1638
+ style: {
1639
+ "--theme-primary": currentTheme.primary,
1640
+ "--theme-secondary": currentTheme.secondary,
1641
+ "--theme-background": currentTheme.background
1642
+ },
1643
+ className: cn(
1644
+ "font-sans",
1645
+ className
1646
+ )
1647
+ }, props), {
1648
+ children
1649
+ })
1650
+ );
1651
+ });
1652
+ ClaimMindDialogContent.displayName = "ClaimMindDialogContent";
1653
+ var ClaimMindDialogHeader = (_a) => {
1654
+ var _b = _a, {
1655
+ className
1656
+ } = _b, props = __objRest(_b, [
1657
+ "className"
1658
+ ]);
1659
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogHeader, __spreadValues({ className: cn("font-sans", className) }, props));
1660
+ };
1661
+ var ClaimMindDialogFooter = (_a) => {
1662
+ var _b = _a, {
1663
+ className
1664
+ } = _b, props = __objRest(_b, [
1665
+ "className"
1666
+ ]);
1667
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogFooter, __spreadValues({ className: cn("font-sans", className) }, props));
1668
+ };
1669
+ var ClaimMindDialogTitle = React9__namespace.forwardRef((_a, ref) => {
1670
+ var _b = _a, { theme = "Default", className } = _b, props = __objRest(_b, ["theme", "className"]);
1671
+ const currentTheme = themeStyles[theme];
1672
+ return /* @__PURE__ */ jsxRuntime.jsx(
1673
+ DialogTitle,
1674
+ __spreadValues({
1675
+ ref,
1676
+ style: { "--theme-primary": currentTheme.primary },
1677
+ className: cn("text-[var(--theme-primary)] font-bold", className)
1678
+ }, props)
1679
+ );
1680
+ });
1681
+ ClaimMindDialogTitle.displayName = "ClaimMindDialogTitle";
1682
+ var ClaimMindDialogDescription = (_a) => {
1683
+ var _b = _a, {
1684
+ className
1685
+ } = _b, props = __objRest(_b, [
1686
+ "className"
1687
+ ]);
1688
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogDescription, __spreadValues({ className: cn("text-slate-600", className) }, props));
1689
+ };
1690
+ var ClaimMindDialogTrigger = DialogTrigger;
1691
+ var ClaimMindDialogClose = DialogClose;
1692
+ var ClaimMindTable = React9__namespace.forwardRef(
1693
+ (_a, ref) => {
1694
+ var _b = _a, { theme = "Default", variant = "default", className, children } = _b, props = __objRest(_b, ["theme", "variant", "className", "children"]);
1695
+ const currentTheme = themeStyles[theme];
1696
+ return /* @__PURE__ */ jsxRuntime.jsx(
1697
+ Table,
1698
+ __spreadProps(__spreadValues({
1699
+ ref,
1700
+ style: {
1701
+ "--theme-primary": currentTheme.primary,
1702
+ "--theme-secondary": currentTheme.secondary,
1703
+ "--theme-background": currentTheme.background
1704
+ },
1705
+ className: cn(
1706
+ "font-sans",
1707
+ variant === "striped" && "[&_tbody_tr:nth-child(even)]:bg-[var(--theme-background)]",
1708
+ className
1709
+ )
1710
+ }, props), {
1711
+ children
1712
+ })
1713
+ );
1714
+ }
1715
+ );
1716
+ ClaimMindTable.displayName = "ClaimMindTable";
1717
+ function ClaimMindDatePicker({
1718
+ date,
1719
+ setDate,
1720
+ placeholder = "Pilih tanggal",
1721
+ theme = "Default",
1722
+ className
1723
+ }) {
1724
+ const currentTheme = themeStyles[theme];
1725
+ return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { children: [
1726
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1727
+ Button,
1728
+ {
1729
+ variant: "outline",
1730
+ style: {
1731
+ "--theme-primary": currentTheme.primary,
1732
+ "--theme-secondary": currentTheme.secondary,
1733
+ "--theme-background": currentTheme.background
1734
+ },
1735
+ className: cn(
1736
+ "w-[280px] justify-start text-left font-normal font-sans",
1737
+ "border-input hover:bg-[var(--theme-background)] hover:text-[var(--theme-primary)] hover:border-[var(--theme-primary)]",
1738
+ "focus-visible:ring-[var(--theme-primary)]/50 focus-visible:border-[var(--theme-primary)]",
1739
+ !date && "text-muted-foreground",
1740
+ className
1741
+ ),
1742
+ children: [
1743
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.CalendarIcon, { className: "mr-2 h-4 w-4" }),
1744
+ date ? dateFns.format(date, "PPP") : /* @__PURE__ */ jsxRuntime.jsx("span", { children: placeholder })
1745
+ ]
1746
+ }
1747
+ ) }),
1748
+ /* @__PURE__ */ jsxRuntime.jsx(
1749
+ PopoverContent,
1750
+ {
1751
+ className: "w-auto p-0",
1752
+ align: "start",
1753
+ style: {
1754
+ "--theme-primary": currentTheme.primary,
1755
+ "--theme-secondary": currentTheme.secondary,
1756
+ "--theme-background": currentTheme.background
1757
+ },
1758
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1759
+ Calendar,
1760
+ {
1761
+ mode: "single",
1762
+ selected: date,
1763
+ onSelect: setDate,
1764
+ initialFocus: true,
1765
+ className: "font-sans",
1766
+ classNames: {
1767
+ day_button: cn(
1768
+ "data-[selected-single=true]:bg-[var(--theme-primary)] data-[selected-single=true]:text-white",
1769
+ "data-[range-start=true]:bg-[var(--theme-primary)] data-[range-start=true]:text-white",
1770
+ "data-[range-end=true]:bg-[var(--theme-primary)] data-[range-end=true]:text-white",
1771
+ "group-data-[focused=true]/day:ring-[var(--theme-primary)]/50 group-data-[focused=true]/day:border-[var(--theme-primary)]"
1772
+ ),
1773
+ today: "text-[var(--theme-primary)] font-bold bg-[var(--theme-background)]"
1774
+ }
1775
+ }
1776
+ )
1777
+ }
1778
+ )
1779
+ ] });
1780
+ }
1781
+ var DatePicker_default = ClaimMindDatePicker;
1782
+ var Chat = ({
1783
+ theme = "Default",
1784
+ variant = "float",
1785
+ title = "Chat Support",
1786
+ messages = [],
1787
+ onSendMessage,
1788
+ isOpen = false,
1789
+ onToggle,
1790
+ placeholder = "Ketik pesan...",
1791
+ className
1792
+ }) => {
1793
+ const currentTheme = themeStyles[theme];
1794
+ const [inputValue, setInputValue] = React9__namespace.useState("");
1795
+ const scrollRef = React9__namespace.useRef(null);
1796
+ React9__namespace.useEffect(() => {
1797
+ if (scrollRef.current) {
1798
+ scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
1799
+ }
1800
+ }, [messages, isOpen]);
1801
+ const handleSend = () => {
1802
+ if (inputValue.trim() && onSendMessage) {
1803
+ onSendMessage(inputValue);
1804
+ setInputValue("");
1805
+ }
1806
+ };
1807
+ const handleKeyPress = (e) => {
1808
+ if (e.key === "Enter") {
1809
+ handleSend();
1810
+ }
1811
+ };
1812
+ const containerClasses = cn(
1813
+ "fixed z-50 flex flex-col transition-all duration-300 ease-in-out font-sans",
1814
+ variant === "float" ? "bottom-6 right-6 w-80 sm:w-96" : "bottom-0 right-6 w-80 sm:w-96",
1815
+ !isOpen && (variant === "float" ? "h-0 w-0 opacity-0 pointer-events-none" : "h-0 opacity-0 pointer-events-none"),
1816
+ isOpen && (variant === "float" ? "h-[500px]" : "h-[500px]"),
1817
+ className
1818
+ );
1819
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1820
+ !isOpen && /* @__PURE__ */ jsxRuntime.jsx(
1821
+ "button",
1822
+ {
1823
+ onClick: onToggle,
1824
+ style: {
1825
+ backgroundColor: currentTheme.primary
1826
+ },
1827
+ className: cn(
1828
+ "fixed z-50 flex items-center justify-center w-14 h-14 rounded-full text-white shadow-lg hover:opacity-90 transition-all focus:outline-none focus:ring-2 focus:ring-offset-2",
1829
+ variant === "float" ? "bottom-6 right-6" : "bottom-0 right-6 rounded-b-none h-12",
1830
+ `focus:ring-[var(--theme-primary)]`
1831
+ ),
1832
+ children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.MessageCircle, { size: 24 })
1833
+ }
1834
+ ),
1835
+ /* @__PURE__ */ jsxRuntime.jsxs(
1836
+ "div",
1837
+ {
1838
+ className: containerClasses,
1839
+ style: {
1840
+ "--theme-primary": currentTheme.primary,
1841
+ "--theme-secondary": currentTheme.secondary,
1842
+ "--theme-background": currentTheme.background
1843
+ },
1844
+ children: [
1845
+ /* @__PURE__ */ jsxRuntime.jsxs(
1846
+ "div",
1847
+ {
1848
+ className: cn(
1849
+ "flex items-center justify-between p-4 rounded-t-lg text-white shadow-md",
1850
+ variant === "bottom-side" && "rounded-t-lg rounded-b-none"
1851
+ ),
1852
+ style: { backgroundColor: currentTheme.primary },
1853
+ children: [
1854
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
1855
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2 h-2 rounded-full bg-green-400 animate-pulse" }),
1856
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-bold", children: title })
1857
+ ] }),
1858
+ /* @__PURE__ */ jsxRuntime.jsx(
1859
+ "button",
1860
+ {
1861
+ onClick: onToggle,
1862
+ className: "p-1 hover:bg-white/20 rounded-full transition-colors",
1863
+ children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { size: 20 })
1864
+ }
1865
+ )
1866
+ ]
1867
+ }
1868
+ ),
1869
+ /* @__PURE__ */ jsxRuntime.jsx(
1870
+ "div",
1871
+ {
1872
+ ref: scrollRef,
1873
+ className: "flex-1 overflow-y-auto p-4 bg-white border-x border-slate-200 space-y-4",
1874
+ children: messages.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center h-full text-slate-400 text-sm", children: [
1875
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.MessageCircle, { size: 48, className: "mb-2 opacity-20" }),
1876
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Belum ada pesan" })
1877
+ ] }) : messages.map((msg) => /* @__PURE__ */ jsxRuntime.jsxs(
1878
+ "div",
1879
+ {
1880
+ className: cn(
1881
+ "flex flex-col max-w-[80%]",
1882
+ msg.sender === "user" ? "ml-auto items-end" : "mr-auto items-start"
1883
+ ),
1884
+ children: [
1885
+ /* @__PURE__ */ jsxRuntime.jsx(
1886
+ "div",
1887
+ {
1888
+ className: cn(
1889
+ "px-4 py-2 rounded-2xl text-sm shadow-sm",
1890
+ msg.sender === "user" ? "bg-[var(--theme-primary)] text-white rounded-tr-none" : "bg-slate-100 text-slate-800 rounded-tl-none"
1891
+ ),
1892
+ style: msg.sender === "user" ? { backgroundColor: currentTheme.primary } : {},
1893
+ children: msg.text
1894
+ }
1895
+ ),
1896
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-slate-400 mt-1", children: msg.timestamp.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) })
1897
+ ]
1898
+ },
1899
+ msg.id
1900
+ ))
1901
+ }
1902
+ ),
1903
+ /* @__PURE__ */ jsxRuntime.jsxs(
1904
+ "div",
1905
+ {
1906
+ className: cn(
1907
+ "p-4 bg-white border-x border-b border-slate-200 flex gap-2 items-center",
1908
+ variant === "float" ? "rounded-b-lg" : ""
1909
+ ),
1910
+ children: [
1911
+ /* @__PURE__ */ jsxRuntime.jsx(
1912
+ Input_default,
1913
+ {
1914
+ theme,
1915
+ value: inputValue,
1916
+ onChange: (e) => setInputValue(e.target.value),
1917
+ onKeyPress: handleKeyPress,
1918
+ placeholder,
1919
+ className: "flex-1"
1920
+ }
1921
+ ),
1922
+ /* @__PURE__ */ jsxRuntime.jsx(
1923
+ Button_default,
1924
+ {
1925
+ theme,
1926
+ size: "icon",
1927
+ onClick: handleSend,
1928
+ className: "shrink-0 h-10 w-10",
1929
+ children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Send, { size: 18 })
1930
+ }
1931
+ )
1932
+ ]
1933
+ }
1934
+ )
1935
+ ]
1936
+ }
1937
+ )
1938
+ ] });
1939
+ };
1940
+ var Chat_default = Chat;
1941
+ function Title2({
1942
+ children,
1943
+ size = "xl",
1944
+ iconName,
1945
+ theme = "Default",
1946
+ colorVariant = "primary",
1947
+ fontWeight = "bold",
1948
+ className
1949
+ }) {
1950
+ const currentTheme = themeStyles[theme];
1951
+ const iconColor = currentTheme[colorVariant] || currentTheme.primary;
1952
+ let IconComponent = null;
1953
+ if (iconName && LucideIcons__namespace[iconName]) {
1954
+ const LucideIcon = LucideIcons__namespace[iconName];
1955
+ const iconSizeMap = {
1956
+ "sm": "w-4 h-4",
1957
+ "md": "w-5 h-5",
1958
+ "lg": "w-6 h-6",
1959
+ "xl": "w-7 h-7",
1960
+ "2xl": "w-8 h-8",
1961
+ "3xl": "w-9 h-9"
1962
+ };
1963
+ IconComponent = /* @__PURE__ */ jsxRuntime.jsx(
1964
+ LucideIcon,
1965
+ {
1966
+ className: cn(iconSizeMap[size] || "w-6 h-6"),
1967
+ style: { color: iconColor }
1968
+ }
1969
+ );
1970
+ }
1971
+ const displayIcon = IconComponent;
1972
+ const sizeClasses = {
1973
+ "sm": "text-sm",
1974
+ "md": "text-base",
1975
+ "lg": "text-lg",
1976
+ "xl": "text-xl",
1977
+ "2xl": "text-2xl",
1978
+ "3xl": "text-3xl"
1979
+ };
1980
+ const weightClasses = {
1981
+ "normal": "font-normal",
1982
+ "medium": "font-medium",
1983
+ "semibold": "font-semibold",
1984
+ "bold": "font-bold"
1985
+ };
1986
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", className), children: [
1987
+ displayIcon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0", children: displayIcon }),
1988
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn(
1989
+ "tracking-tight text-foreground",
1990
+ sizeClasses[size],
1991
+ weightClasses[fontWeight]
1992
+ ), children })
1993
+ ] });
1994
+ }
1995
+ function DashboardCard({
1996
+ label,
1997
+ value,
1998
+ iconName,
1999
+ icon,
2000
+ theme = "Default",
2001
+ colorVariant = "primary",
2002
+ className
2003
+ }) {
2004
+ const currentTheme = themeStyles[theme];
2005
+ const iconColor = currentTheme[colorVariant] || currentTheme.primary;
2006
+ let IconComponent = null;
2007
+ if (iconName && LucideIcons__namespace[iconName]) {
2008
+ const LucideIcon = LucideIcons__namespace[iconName];
2009
+ IconComponent = /* @__PURE__ */ jsxRuntime.jsx(LucideIcon, { className: "w-6 h-6", style: { color: iconColor } });
2010
+ }
2011
+ const displayIcon = icon || IconComponent;
2012
+ return /* @__PURE__ */ jsxRuntime.jsx(
2013
+ ClaimMindCard,
2014
+ {
2015
+ theme,
2016
+ className: cn("p-6", className),
2017
+ showTopBorder: true,
2018
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [
2019
+ displayIcon && displayIcon,
2020
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2021
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-muted-foreground mb-1", children: label }),
2022
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-bold tracking-tight", children: value })
2023
+ ] })
2024
+ ] })
2025
+ }
2026
+ );
2027
+ }
2028
+ function SyncProgress({
2029
+ theme = "Default",
2030
+ title,
2031
+ icon,
2032
+ iconName,
2033
+ status = "idle",
2034
+ progress: manualProgress,
2035
+ totalItems,
2036
+ completedItems,
2037
+ description,
2038
+ className,
2039
+ variant = "Summary",
2040
+ inpatientCount,
2041
+ outpatientCount
2042
+ }) {
2043
+ const currentTheme = themeStyles[theme];
2044
+ const defaultTitle = variant === "Summary" ? "Summary Progress" : variant === "Validasi" ? "Validasi Dokumen Klaim" : "Jenis Rawat";
2045
+ const hasItems = totalItems !== void 0 && completedItems !== void 0;
2046
+ const progress = hasItems ? totalItems > 0 ? completedItems / totalItems * 100 : 0 : manualProgress != null ? manualProgress : 0;
2047
+ let renderedIcon = icon;
2048
+ if (iconName && LucideIcons__namespace[iconName]) {
2049
+ const IconComponent = LucideIcons__namespace[iconName];
2050
+ renderedIcon = /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "w-5 h-5" });
2051
+ }
2052
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2053
+ ClaimMindCard,
2054
+ {
2055
+ theme,
2056
+ className: cn(
2057
+ "w-full",
2058
+ variant === "Summary" && "bg-[var(--theme-background)]",
2059
+ className
2060
+ ),
2061
+ children: [
2062
+ /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { className: "pb-0", children: /* @__PURE__ */ jsxRuntime.jsxs(CardTitle, { className: "text-lg font-semibold flex items-center justify-between", children: [
2063
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
2064
+ renderedIcon,
2065
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: title || defaultTitle })
2066
+ ] }),
2067
+ status === "running" && /* @__PURE__ */ jsxRuntime.jsx(Spinner_default, { theme, size: "sm" })
2068
+ ] }) }),
2069
+ /* @__PURE__ */ jsxRuntime.jsx(CardContent, { children: variant === "Healthcare Type" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2070
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between items-center border-b pb-2 border-gray-100", children: [
2071
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-x-2", children: [
2072
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 bg-claimmind-primary rounded-full" }),
2073
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-600", children: "Rawat Inap" })
2074
+ ] }),
2075
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-bold text-gray-900", children: inpatientCount || 0 })
2076
+ ] }),
2077
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between items-center", children: [
2078
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-x-2", children: [
2079
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 bg-claimmind-tertiary rounded-full" }),
2080
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-600", children: "Rawat Jalan" })
2081
+ ] }),
2082
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-bold text-gray-900", children: outpatientCount || 0 })
2083
+ ] })
2084
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2085
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2086
+ /* @__PURE__ */ jsxRuntime.jsx(
2087
+ Progress,
2088
+ {
2089
+ value: progress,
2090
+ className: "h-2",
2091
+ style: {
2092
+ "--theme-primary": status === "completed" ? currentTheme.success : status === "error" ? currentTheme.danger : currentTheme.tertiary
2093
+ }
2094
+ }
2095
+ ),
2096
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between text-sm text-muted-foreground", children: [
2097
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: status === "completed" ? "Selesai" : status === "running" ? "Memproses..." : "Menunggu" }),
2098
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: hasItems ? `${completedItems} / ${totalItems}` : `${Math.round(progress)}%` })
2099
+ ] })
2100
+ ] }),
2101
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: description })
2102
+ ] }) })
2103
+ ]
2104
+ }
2105
+ );
2106
+ }
2107
+ var LoginPage = ({
2108
+ theme = "Default",
2109
+ title = "Login ke ClaimMind",
2110
+ description = "Masukkan email dan kata sandi Anda untuk mengakses akun."
2111
+ }) => {
2112
+ const currentTheme = themeStyles[theme];
2113
+ return /* @__PURE__ */ jsxRuntime.jsx(
2114
+ "div",
2115
+ {
2116
+ style: {
2117
+ "--theme-primary": currentTheme.primary,
2118
+ "--theme-secondary": currentTheme.secondary,
2119
+ "--theme-background": currentTheme.background
2120
+ },
2121
+ className: "min-h-screen w-full flex items-center justify-center bg-[var(--theme-background)] p-4 font-sans",
2122
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col w-full justify-center items-center", children: [
2123
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src: theme === "Owlexa" ? "/logo-owlexa.webp" : theme === "BPJS" ? "/BPJS_ketenagakerjaan_logo.png" : "", className: "w-56 mb-5" }),
2124
+ /* @__PURE__ */ jsxRuntime.jsxs(ClaimMindCard, { theme, className: "w-full max-w-md", children: [
2125
+ /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "space-y-1 text-center", children: [
2126
+ /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: "text-2xl font-bold tracking-tight text-slate-900", children: title }),
2127
+ /* @__PURE__ */ jsxRuntime.jsx(CardDescription, { className: "text-slate-500", children: description })
2128
+ ] }),
2129
+ /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "grid gap-4 mt-4", children: [
2130
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-2", children: [
2131
+ /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: "email", className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: "Email" }),
2132
+ /* @__PURE__ */ jsxRuntime.jsx(
2133
+ Input_default,
2134
+ {
2135
+ id: "email",
2136
+ type: "email",
2137
+ placeholder: "nama@perusahaan.com",
2138
+ theme
2139
+ }
2140
+ )
2141
+ ] }),
2142
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-2", children: [
2143
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
2144
+ /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: "password", children: "Kata Sandi" }),
2145
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: "#", className: "text-sm text-[var(--theme-primary)] hover:underline", children: "Lupa kata sandi?" })
2146
+ ] }),
2147
+ /* @__PURE__ */ jsxRuntime.jsx(
2148
+ Input_default,
2149
+ {
2150
+ id: "password",
2151
+ type: "password",
2152
+ theme
2153
+ }
2154
+ )
2155
+ ] })
2156
+ ] }),
2157
+ /* @__PURE__ */ jsxRuntime.jsxs(CardFooter, { className: "flex flex-col gap-4 mt-2", children: [
2158
+ /* @__PURE__ */ jsxRuntime.jsx(
2159
+ Button_default,
2160
+ {
2161
+ label: "Masuk",
2162
+ theme,
2163
+ className: "w-full"
2164
+ }
2165
+ ),
2166
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center text-sm text-slate-500", children: [
2167
+ "Belum punya akun?",
2168
+ " ",
2169
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: "#", className: "text-[var(--theme-primary)] font-medium hover:underline", children: "Daftar sekarang" })
2170
+ ] })
2171
+ ] })
2172
+ ] })
2173
+ ] })
2174
+ }
2175
+ );
2176
+ };
2177
+
2178
+ exports.Alert = Alert;
2179
+ exports.AlertDescription = AlertDescription;
2180
+ exports.AlertTitle = AlertTitle;
2181
+ exports.Button = Button;
2182
+ exports.Calendar = Calendar;
2183
+ exports.CalendarDayButton = CalendarDayButton;
2184
+ exports.Card = Card;
2185
+ exports.CardAction = CardAction;
2186
+ exports.CardContent = CardContent;
2187
+ exports.CardDescription = CardDescription;
2188
+ exports.CardFooter = CardFooter;
2189
+ exports.CardHeader = CardHeader;
2190
+ exports.CardTitle = CardTitle;
2191
+ exports.Chat = Chat_default;
2192
+ exports.ClaimMindAlert = ClaimMindAlert;
2193
+ exports.ClaimMindButton = Button_default;
2194
+ exports.ClaimMindCard = ClaimMindCard;
2195
+ exports.ClaimMindCombobox = Combobox_default;
2196
+ exports.ClaimMindDatePicker = DatePicker_default;
2197
+ exports.ClaimMindDialog = ClaimMindDialog;
2198
+ exports.ClaimMindDialogClose = ClaimMindDialogClose;
2199
+ exports.ClaimMindDialogContent = ClaimMindDialogContent;
2200
+ exports.ClaimMindDialogDescription = ClaimMindDialogDescription;
2201
+ exports.ClaimMindDialogFooter = ClaimMindDialogFooter;
2202
+ exports.ClaimMindDialogHeader = ClaimMindDialogHeader;
2203
+ exports.ClaimMindDialogTitle = ClaimMindDialogTitle;
2204
+ exports.ClaimMindDialogTrigger = ClaimMindDialogTrigger;
2205
+ exports.ClaimMindInput = Input_default;
2206
+ exports.ClaimMindSelect = Select_default;
2207
+ exports.ClaimMindSpinner = Spinner_default;
2208
+ exports.ClaimMindSwitch = Switch_default;
2209
+ exports.ClaimMindTable = ClaimMindTable;
2210
+ exports.ClaimMindTooltip = Tooltip_default;
2211
+ exports.Command = Command;
2212
+ exports.CommandDialog = CommandDialog;
2213
+ exports.CommandEmpty = CommandEmpty;
2214
+ exports.CommandGroup = CommandGroup;
2215
+ exports.CommandInput = CommandInput;
2216
+ exports.CommandItem = CommandItem;
2217
+ exports.CommandList = CommandList;
2218
+ exports.CommandSeparator = CommandSeparator;
2219
+ exports.CommandShortcut = CommandShortcut;
2220
+ exports.DashboardCard = DashboardCard;
2221
+ exports.Dialog = Dialog;
2222
+ exports.DialogClose = DialogClose;
2223
+ exports.DialogContent = DialogContent;
2224
+ exports.DialogDescription = DialogDescription;
2225
+ exports.DialogFooter = DialogFooter;
2226
+ exports.DialogHeader = DialogHeader;
2227
+ exports.DialogOverlay = DialogOverlay;
2228
+ exports.DialogPortal = DialogPortal;
2229
+ exports.DialogTitle = DialogTitle;
2230
+ exports.DialogTrigger = DialogTrigger;
2231
+ exports.Input = Input;
2232
+ exports.Label = Label;
2233
+ exports.LoginPage = LoginPage;
2234
+ exports.Popover = Popover;
2235
+ exports.PopoverAnchor = PopoverAnchor;
2236
+ exports.PopoverContent = PopoverContent;
2237
+ exports.PopoverTrigger = PopoverTrigger;
2238
+ exports.Progress = Progress;
2239
+ exports.Select = Select;
2240
+ exports.SelectContent = SelectContent;
2241
+ exports.SelectGroup = SelectGroup;
2242
+ exports.SelectItem = SelectItem;
2243
+ exports.SelectLabel = SelectLabel;
2244
+ exports.SelectScrollDownButton = SelectScrollDownButton;
2245
+ exports.SelectScrollUpButton = SelectScrollUpButton;
2246
+ exports.SelectSeparator = SelectSeparator;
2247
+ exports.SelectTrigger = SelectTrigger;
2248
+ exports.SelectValue = SelectValue;
2249
+ exports.Spinner = Spinner;
2250
+ exports.Switch = Switch;
2251
+ exports.SyncProgress = SyncProgress;
2252
+ exports.Table = Table;
2253
+ exports.TableBody = TableBody;
2254
+ exports.TableCaption = TableCaption;
2255
+ exports.TableCell = TableCell;
2256
+ exports.TableFooter = TableFooter;
2257
+ exports.TableHead = TableHead;
2258
+ exports.TableHeader = TableHeader;
2259
+ exports.TableRow = TableRow;
2260
+ exports.Title = Title2;
2261
+ exports.Tooltip = Tooltip;
2262
+ exports.TooltipContent = TooltipContent;
2263
+ exports.TooltipProvider = TooltipProvider;
2264
+ exports.TooltipTrigger = TooltipTrigger;
2265
+ exports.buttonVariants = buttonVariants;
2266
+ exports.cn = cn;
2267
+ exports.themeStyles = themeStyles;
2268
+ //# sourceMappingURL=index.cjs.map
2269
+ //# sourceMappingURL=index.cjs.map