@ikatec/nebula-react 0.0.1-alpha.20

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.mjs ADDED
@@ -0,0 +1,2134 @@
1
+ import * as React8 from 'react';
2
+ import React8__default, { forwardRef, createElement, createContext, useMemo, useState, useCallback, useEffect, useContext } from 'react';
3
+ import { Slot } from '@radix-ui/react-slot';
4
+ import { cva } from 'class-variance-authority';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
8
+ import * as LabelPrimitive from '@radix-ui/react-label';
9
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
10
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
11
+ import Select, { components } from 'react-select';
12
+ import Creatable from 'react-select/creatable';
13
+ import Async from 'react-select/async';
14
+ import AsyncCreatable from 'react-select/async-creatable';
15
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
16
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
17
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
18
+ import * as SwitchPrimitives from '@radix-ui/react-switch';
19
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
20
+
21
+ // src/button.tsx
22
+
23
+ // ../../node_modules/clsx/dist/clsx.mjs
24
+ function r(e) {
25
+ var t, f, n = "";
26
+ if ("string" == typeof e || "number" == typeof e) n += e;
27
+ else if ("object" == typeof e) if (Array.isArray(e)) {
28
+ var o = e.length;
29
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
30
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
31
+ return n;
32
+ }
33
+ function clsx() {
34
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
35
+ return n;
36
+ }
37
+
38
+ // nebula.config.ts
39
+ var nebulaClass = "nebula-ds";
40
+
41
+ // lib/utils.ts
42
+ function cn(...inputs) {
43
+ return twMerge(nebulaClass, clsx(inputs));
44
+ }
45
+ var processChildren = (children) => {
46
+ return React8__default.Children.map(children, (child) => {
47
+ if (typeof child === "string") {
48
+ return /* @__PURE__ */ jsx("span", { className: "nebula-ds px-2", children: child });
49
+ }
50
+ if (React8__default.isValidElement(child) && child.type === React8__default.Fragment) {
51
+ return processChildren(child.props.children);
52
+ }
53
+ return child;
54
+ });
55
+ };
56
+ var buttonVariantEnum = /* @__PURE__ */ ((buttonVariantEnum2) => {
57
+ buttonVariantEnum2["primary"] = `
58
+ bg-button-primary-background-default
59
+ hover:bg-button-primary-background-hover
60
+ active:bg-button-primary-background-active
61
+ focus:bg-button-primary-background-focus
62
+ focus:ring-button-primary-border-focus
63
+ text-button-primary-text
64
+ `;
65
+ buttonVariantEnum2["secondary"] = `
66
+ border
67
+ border-button-secondary-border-default
68
+ bg-button-secondary-background-default
69
+ hover:bg-button-secondary-background-hover
70
+ active:bg-button-secondary-background-active
71
+ focus:bg-button-secondary-background-focus
72
+ focus:ring-button-secondary-border-focus
73
+ text-button-secondary-text
74
+ `;
75
+ buttonVariantEnum2["ghost"] = `
76
+ bg-button-ghost-background-default
77
+ hover:bg-button-ghost-background-hover
78
+ active:bg-button-ghost-background-active
79
+ focus:bg-button-ghost-background-focus
80
+ focus:ring-button-ghost-border-focus
81
+ text-button-ghost-text
82
+ `;
83
+ buttonVariantEnum2["danger"] = `
84
+ bg-button-danger-background-default
85
+ hover:bg-button-danger-background-hover
86
+ active:bg-button-danger-background-active
87
+ focus:bg-button-danger-background-focus
88
+ focus:ring-button-danger-border-focus
89
+ text-button-danger-text
90
+ `;
91
+ return buttonVariantEnum2;
92
+ })(buttonVariantEnum || {});
93
+ var buttonSizeEnum = /* @__PURE__ */ ((buttonSizeEnum2) => {
94
+ buttonSizeEnum2["xs"] = "h-6 px-2 [&>svg]:size-3 text-sm";
95
+ buttonSizeEnum2["sm"] = "h-8 px-2 [&>svg]:size-3 text-sm";
96
+ buttonSizeEnum2["md"] = "h-10 px-4 [&>svg]:size-4 text-base";
97
+ buttonSizeEnum2["lg"] = "h-12 px-6 [&>svg]:size-5 text-xl";
98
+ return buttonSizeEnum2;
99
+ })(buttonSizeEnum || {});
100
+ var variant = {
101
+ primary: "\n bg-button-primary-background-default\n hover:bg-button-primary-background-hover\n active:bg-button-primary-background-active\n focus:bg-button-primary-background-focus\n focus:ring-button-primary-border-focus\n text-button-primary-text\n " /* primary */,
102
+ secondary: "\n border\n border-button-secondary-border-default\n bg-button-secondary-background-default\n hover:bg-button-secondary-background-hover\n active:bg-button-secondary-background-active\n focus:bg-button-secondary-background-focus\n focus:ring-button-secondary-border-focus\n text-button-secondary-text\n " /* secondary */,
103
+ ghost: "\n bg-button-ghost-background-default\n hover:bg-button-ghost-background-hover\n active:bg-button-ghost-background-active\n focus:bg-button-ghost-background-focus\n focus:ring-button-ghost-border-focus\n text-button-ghost-text\n " /* ghost */,
104
+ danger: "\n bg-button-danger-background-default\n hover:bg-button-danger-background-hover\n active:bg-button-danger-background-active\n focus:bg-button-danger-background-focus\n focus:ring-button-danger-border-focus\n text-button-danger-text\n " /* danger */
105
+ };
106
+ var size = {
107
+ xs: "h-6 px-2 [&>svg]:size-3 text-sm" /* xs */,
108
+ sm: "h-8 px-2 [&>svg]:size-3 text-sm" /* sm */,
109
+ md: "h-10 px-4 [&>svg]:size-4 text-base" /* md */,
110
+ lg: "h-12 px-6 [&>svg]:size-5 text-xl" /* lg */
111
+ };
112
+ var buttonVariantsConfig = cva(
113
+ `
114
+ inline-flex
115
+ items-center
116
+ justify-center
117
+ whitespace-nowrap
118
+ rounded-full
119
+ font-semibold
120
+ ring-offset-background
121
+ transition-colors
122
+ focus-visible:outline-none
123
+ focus-visible:ring-4
124
+ focus-visible:ring-ring
125
+ focus-visible:ring-offset-0
126
+ disabled:pointer-events-none
127
+ disabled:bg-button-disabled-background
128
+ disabled:text-button-disabled-text
129
+ disabled:border-none
130
+ `,
131
+ {
132
+ variants: {
133
+ variant,
134
+ size
135
+ },
136
+ defaultVariants: {
137
+ variant: "primary",
138
+ size: "md"
139
+ }
140
+ }
141
+ );
142
+ var Button = React8.forwardRef(
143
+ ({
144
+ className,
145
+ variant: variant3,
146
+ size: size4,
147
+ icon = false,
148
+ asChild = false,
149
+ children,
150
+ ...rest
151
+ }, ref) => {
152
+ const Comp = asChild ? Slot : "button";
153
+ const iconSizeClasses = icon ? {
154
+ xs: "h-6 w-6 p-0",
155
+ sm: "h-8 w-8 p-0",
156
+ md: "h-10 w-10 p-0",
157
+ lg: "h-12 w-12 p-0"
158
+ }[size4 ?? "md"] : "";
159
+ return /* @__PURE__ */ jsx(
160
+ Comp,
161
+ {
162
+ className: cn(
163
+ buttonVariantsConfig({ variant: variant3, size: size4, className }),
164
+ iconSizeClasses
165
+ ),
166
+ ref,
167
+ ...rest,
168
+ children: processChildren(children)
169
+ }
170
+ );
171
+ }
172
+ );
173
+ Button.displayName = "Button";
174
+ var badgeVariantEnum = /* @__PURE__ */ ((badgeVariantEnum2) => {
175
+ badgeVariantEnum2["primary"] = "bg-badge-primary-background text-badge-primary-text";
176
+ badgeVariantEnum2["secondary"] = "bg-badge-secondary-background text-badge-secondary-text";
177
+ badgeVariantEnum2["alert"] = "bg-badge-alert-background text-badge-alert-text";
178
+ return badgeVariantEnum2;
179
+ })(badgeVariantEnum || {});
180
+ var badgeSizeEnum = /* @__PURE__ */ ((badgeSizeEnum2) => {
181
+ badgeSizeEnum2["sm"] = "h-4 min-w-4 text-[10px]";
182
+ badgeSizeEnum2["md"] = "h-6 min-w-6 text-xs";
183
+ return badgeSizeEnum2;
184
+ })(badgeSizeEnum || {});
185
+ var variant2 = {
186
+ primary: "bg-badge-primary-background text-badge-primary-text" /* primary */,
187
+ secondary: "bg-badge-secondary-background text-badge-secondary-text" /* secondary */,
188
+ alert: "bg-badge-alert-background text-badge-alert-text" /* alert */
189
+ };
190
+ var size2 = {
191
+ sm: "h-4 min-w-4 text-[10px]" /* sm */,
192
+ md: "h-6 min-w-6 text-xs" /* md */
193
+ };
194
+ var badgeVariantsConfig = cva(
195
+ "flex items-center justify-center rounded-full font-semibold",
196
+ {
197
+ variants: {
198
+ variant: variant2,
199
+ size: size2
200
+ },
201
+ defaultVariants: {
202
+ variant: "primary",
203
+ size: "md"
204
+ }
205
+ }
206
+ );
207
+ var Badge = React8.forwardRef(
208
+ ({ className, variant: variant3, size: size4, ...props }, ref) => {
209
+ return /* @__PURE__ */ jsx(
210
+ "div",
211
+ {
212
+ ref,
213
+ className: cn(badgeVariantsConfig({ variant: variant3, size: size4 }), className),
214
+ ...props
215
+ }
216
+ );
217
+ }
218
+ );
219
+ Badge.displayName = "Badge";
220
+
221
+ // src/utils/extract-variant.ts
222
+ function extractVariants(variants4) {
223
+ return Object.keys(variants4).reduce(
224
+ (acc, key) => {
225
+ const variantKey = key;
226
+ const variantValues = variants4[variantKey];
227
+ if (variantValues) {
228
+ acc[variantKey] = Object.keys(variantValues);
229
+ }
230
+ return acc;
231
+ },
232
+ {}
233
+ );
234
+ }
235
+ var variants = {
236
+ variant: {
237
+ default: `
238
+ bg-alert-default-background-default
239
+ border-alert-default-border-default
240
+ text-alert-default-text
241
+ [&>svg]:text-alert-default-icon
242
+ `,
243
+ info: `
244
+ bg-alert-info-background-default
245
+ border-alert-info-border-default
246
+ text-alert-info-text
247
+ [&>svg]:text-alert-info-icon
248
+ `,
249
+ success: `
250
+ bg-alert-success-background-default
251
+ border-alert-success-border-default
252
+ text-alert-success-text
253
+ [&>svg]:text-alert-success-icon
254
+ `,
255
+ warning: `
256
+ bg-alert-warning-background-default
257
+ border-alert-warning-border-default
258
+ text-alert-warning-text
259
+ [&>svg]:text-alert-warning-icon
260
+ `,
261
+ danger: `
262
+ bg-alert-danger-background-default
263
+ border-alert-danger-border-default
264
+ text-alert-danger-text
265
+ [&>svg]:text-alert-danger-icon
266
+ `
267
+ }
268
+ };
269
+ var alertVariantsConfig = cva(
270
+ `
271
+ min-h-[48px]
272
+ w-full
273
+ rounded-[0.5rem]
274
+ border
275
+ p-[12px_16px]
276
+ rounded-[16px]
277
+ flex
278
+ items-center
279
+ gap-[8px]
280
+ text-sm
281
+ [&>button]:text-alert-default-button-color
282
+ `,
283
+ {
284
+ variants,
285
+ defaultVariants: {
286
+ variant: "default"
287
+ }
288
+ }
289
+ );
290
+ var alertVariants = extractVariants(variants);
291
+ var Alert = React8.forwardRef(
292
+ ({ className, variant: variant3, ...props }, ref) => /* @__PURE__ */ jsx(
293
+ "div",
294
+ {
295
+ ref,
296
+ role: "alert",
297
+ className: cn(alertVariantsConfig({ variant: variant3 }), className),
298
+ ...props
299
+ }
300
+ )
301
+ );
302
+ Alert.displayName = "Alert";
303
+ var AlertTitle = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
304
+ "h5",
305
+ {
306
+ ref,
307
+ className: cn("mb-1 font-medium leading-none tracking-tight", className),
308
+ ...props
309
+ }
310
+ ));
311
+ AlertTitle.displayName = "AlertTitle";
312
+ var AlertDescription = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
313
+ "div",
314
+ {
315
+ ref,
316
+ className: cn("[&_p]:leading-relaxed", className),
317
+ ...props
318
+ }
319
+ ));
320
+ AlertDescription.displayName = "AlertDescription";
321
+ var AlertButton = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
322
+ "button",
323
+ {
324
+ ref,
325
+ className: cn("flex items-center font-semibold", className),
326
+ ...props
327
+ }
328
+ ));
329
+ AlertButton.displayName = "AlertButton";
330
+ var Popover = PopoverPrimitive.Root;
331
+ var PopoverTrigger = PopoverPrimitive.Trigger;
332
+ var PopoverContent = React8.forwardRef(
333
+ ({ className, align = "center", sideOffset = 4, portal = false, ...props }, ref) => {
334
+ const Comp = portal ? PopoverPrimitive.Portal : React8.Fragment;
335
+ return /* @__PURE__ */ jsx(Comp, { children: /* @__PURE__ */ jsx(
336
+ PopoverPrimitive.Content,
337
+ {
338
+ ref,
339
+ align,
340
+ sideOffset,
341
+ className: cn(
342
+ `
343
+ z-[1000]
344
+ rounded-xl
345
+ border
346
+ border-dropdownMenu-border
347
+ bg-dropdownMenu-background
348
+ shadow-dropdownMenu-shadow
349
+ px-3
350
+ py-4
351
+ shadow-sm
352
+ outline-none
353
+ `,
354
+ className
355
+ ),
356
+ ...props
357
+ }
358
+ ) });
359
+ }
360
+ );
361
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
362
+ var Label = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
363
+ LabelPrimitive.Root,
364
+ {
365
+ ref,
366
+ className: cn(
367
+ "text-sm text-label-text-default font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
368
+ className
369
+ ),
370
+ ...props
371
+ }
372
+ ));
373
+ Label.displayName = LabelPrimitive.Root.displayName;
374
+ var Table = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "nebula-ds relative w-full overflow-auto border rounded-2xl border-table-border bg-table-background", children: /* @__PURE__ */ jsx(
375
+ "table",
376
+ {
377
+ ref,
378
+ className: cn("w-full caption-bottom text-sm", className),
379
+ ...props
380
+ }
381
+ ) }));
382
+ Table.displayName = "Table";
383
+ var TableHeader = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
384
+ TableHeader.displayName = "TableHeader";
385
+ var TableBody = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
386
+ "tbody",
387
+ {
388
+ ref,
389
+ className: cn("[&_tr:last-child]:border-0", className),
390
+ ...props
391
+ }
392
+ ));
393
+ TableBody.displayName = "TableBody";
394
+ var TableFooter = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
395
+ "tfoot",
396
+ {
397
+ ref,
398
+ className: cn(
399
+ "border-t border-table-border font-medium [&>tr]:last:border-b-0",
400
+ className
401
+ ),
402
+ ...props
403
+ }
404
+ ));
405
+ TableFooter.displayName = "TableFooter";
406
+ var variants2 = {
407
+ variant: {
408
+ first: "bg-table-cell-background-first-layer",
409
+ second: "bg-table-cell-background-second-layer"
410
+ }
411
+ };
412
+ var tableRowVariantsConfig = cva(
413
+ `
414
+ border-b
415
+ border-table-cell-border
416
+ transition-colors
417
+ `,
418
+ {
419
+ variants: variants2,
420
+ defaultVariants: {
421
+ variant: "first"
422
+ }
423
+ }
424
+ );
425
+ var TableRow = React8.forwardRef(
426
+ ({ className, variant: variant3 = "first", ...props }, ref) => /* @__PURE__ */ jsx(
427
+ "tr",
428
+ {
429
+ ref,
430
+ className: cn(tableRowVariantsConfig({ variant: variant3, className })),
431
+ ...props
432
+ }
433
+ )
434
+ );
435
+ TableRow.displayName = "TableRow";
436
+ var TableHead = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
437
+ "th",
438
+ {
439
+ ref,
440
+ className: cn(
441
+ "h-10 px-4 text-left align-middle font-medium text-table-header-text [&:has([role=checkbox])]:pr-0",
442
+ className
443
+ ),
444
+ ...props
445
+ }
446
+ ));
447
+ TableHead.displayName = "TableHead";
448
+ var TableCell = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
449
+ "td",
450
+ {
451
+ ref,
452
+ className: cn(
453
+ "h-12 px-4 align-middle [&:has([role=checkbox])]:pr-0 text-table-cell-text",
454
+ className
455
+ ),
456
+ ...props
457
+ }
458
+ ));
459
+ TableCell.displayName = "TableCell";
460
+ var TableCaption = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("caption", { ref, className: cn("mt-4 text-sm", className), ...props }));
461
+ TableCaption.displayName = "TableCaption";
462
+
463
+ // ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
464
+ var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
465
+ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
466
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
467
+ }).join(" ").trim();
468
+
469
+ // ../../node_modules/lucide-react/dist/esm/defaultAttributes.js
470
+ var defaultAttributes = {
471
+ xmlns: "http://www.w3.org/2000/svg",
472
+ width: 24,
473
+ height: 24,
474
+ viewBox: "0 0 24 24",
475
+ fill: "none",
476
+ stroke: "currentColor",
477
+ strokeWidth: 2,
478
+ strokeLinecap: "round",
479
+ strokeLinejoin: "round"
480
+ };
481
+
482
+ // ../../node_modules/lucide-react/dist/esm/Icon.js
483
+ var Icon = forwardRef(
484
+ ({
485
+ color: color2 = "currentColor",
486
+ size: size4 = 24,
487
+ strokeWidth = 2,
488
+ absoluteStrokeWidth,
489
+ className = "",
490
+ children,
491
+ iconNode,
492
+ ...rest
493
+ }, ref) => {
494
+ return createElement(
495
+ "svg",
496
+ {
497
+ ref,
498
+ ...defaultAttributes,
499
+ width: size4,
500
+ height: size4,
501
+ stroke: color2,
502
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size4) : strokeWidth,
503
+ className: mergeClasses("lucide", className),
504
+ ...rest
505
+ },
506
+ [
507
+ ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
508
+ ...Array.isArray(children) ? children : [children]
509
+ ]
510
+ );
511
+ }
512
+ );
513
+
514
+ // ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
515
+ var createLucideIcon = (iconName, iconNode) => {
516
+ const Component = forwardRef(
517
+ ({ className, ...props }, ref) => createElement(Icon, {
518
+ ref,
519
+ iconNode,
520
+ className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),
521
+ ...props
522
+ })
523
+ );
524
+ Component.displayName = `${iconName}`;
525
+ return Component;
526
+ };
527
+
528
+ // ../../node_modules/lucide-react/dist/esm/icons/check.js
529
+ var __iconNode = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
530
+ var Check = createLucideIcon("Check", __iconNode);
531
+
532
+ // ../../node_modules/lucide-react/dist/esm/icons/chevron-down.js
533
+ var __iconNode2 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
534
+ var ChevronDown = createLucideIcon("ChevronDown", __iconNode2);
535
+
536
+ // ../../node_modules/lucide-react/dist/esm/icons/chevron-left.js
537
+ var __iconNode3 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
538
+ var ChevronLeft = createLucideIcon("ChevronLeft", __iconNode3);
539
+
540
+ // ../../node_modules/lucide-react/dist/esm/icons/chevron-right.js
541
+ var __iconNode4 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
542
+ var ChevronRight = createLucideIcon("ChevronRight", __iconNode4);
543
+
544
+ // ../../node_modules/lucide-react/dist/esm/icons/chevrons-left.js
545
+ var __iconNode5 = [
546
+ ["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
547
+ ["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
548
+ ];
549
+ var ChevronsLeft = createLucideIcon("ChevronsLeft", __iconNode5);
550
+
551
+ // ../../node_modules/lucide-react/dist/esm/icons/chevrons-right.js
552
+ var __iconNode6 = [
553
+ ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
554
+ ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
555
+ ];
556
+ var ChevronsRight = createLucideIcon("ChevronsRight", __iconNode6);
557
+
558
+ // ../../node_modules/lucide-react/dist/esm/icons/circle-x.js
559
+ var __iconNode7 = [
560
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
561
+ ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
562
+ ["path", { d: "m9 9 6 6", key: "z0biqf" }]
563
+ ];
564
+ var CircleX = createLucideIcon("CircleX", __iconNode7);
565
+
566
+ // ../../node_modules/lucide-react/dist/esm/icons/circle.js
567
+ var __iconNode8 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
568
+ var Circle = createLucideIcon("Circle", __iconNode8);
569
+
570
+ // ../../node_modules/lucide-react/dist/esm/icons/ellipsis.js
571
+ var __iconNode9 = [
572
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
573
+ ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
574
+ ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
575
+ ];
576
+ var Ellipsis = createLucideIcon("Ellipsis", __iconNode9);
577
+
578
+ // ../../node_modules/lucide-react/dist/esm/icons/eye-off.js
579
+ var __iconNode10 = [
580
+ [
581
+ "path",
582
+ {
583
+ d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",
584
+ key: "ct8e1f"
585
+ }
586
+ ],
587
+ ["path", { d: "M14.084 14.158a3 3 0 0 1-4.242-4.242", key: "151rxh" }],
588
+ [
589
+ "path",
590
+ {
591
+ d: "M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",
592
+ key: "13bj9a"
593
+ }
594
+ ],
595
+ ["path", { d: "m2 2 20 20", key: "1ooewy" }]
596
+ ];
597
+ var EyeOff = createLucideIcon("EyeOff", __iconNode10);
598
+
599
+ // ../../node_modules/lucide-react/dist/esm/icons/eye.js
600
+ var __iconNode11 = [
601
+ [
602
+ "path",
603
+ {
604
+ d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",
605
+ key: "1nclc0"
606
+ }
607
+ ],
608
+ ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
609
+ ];
610
+ var Eye = createLucideIcon("Eye", __iconNode11);
611
+
612
+ // ../../node_modules/lucide-react/dist/esm/icons/minus.js
613
+ var __iconNode12 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
614
+ var Minus = createLucideIcon("Minus", __iconNode12);
615
+
616
+ // ../../node_modules/lucide-react/dist/esm/icons/x.js
617
+ var __iconNode13 = [
618
+ ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
619
+ ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
620
+ ];
621
+ var X = createLucideIcon("X", __iconNode13);
622
+ var DropdownMenu = DropdownMenuPrimitive.Root;
623
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
624
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
625
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
626
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
627
+ var DropdownMenuSubTrigger = React8.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
628
+ DropdownMenuPrimitive.SubTrigger,
629
+ {
630
+ ref,
631
+ className: cn(
632
+ `
633
+ flex
634
+ cursor-default
635
+ select-none
636
+ items-center
637
+ gap-2
638
+ px-4
639
+ h-11
640
+ text-sm
641
+ text-listItem-text-default
642
+ active:text-listItem-text-selected
643
+ active:font-semibold
644
+ active:bg-listItem-background-default
645
+ focus:bg-listItem-background-hover
646
+ outline-none
647
+ `,
648
+ inset && "pl-8",
649
+ className
650
+ ),
651
+ ...props,
652
+ children: [
653
+ children,
654
+ /* @__PURE__ */ jsx(ChevronRight, { className: "nebula-ds ml-auto size-4" })
655
+ ]
656
+ }
657
+ ));
658
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
659
+ var DropdownMenuSubContent = React8.forwardRef(({ className, portal = false, ...props }, ref) => {
660
+ const Comp = portal ? DropdownMenuPrimitive.Portal : React8.Fragment;
661
+ return /* @__PURE__ */ jsx(Comp, { children: /* @__PURE__ */ jsx(
662
+ DropdownMenuPrimitive.SubContent,
663
+ {
664
+ ref,
665
+ className: cn(
666
+ `
667
+ z-50
668
+ min-w-[8rem]
669
+ overflow-hidden
670
+ rounded-2xl
671
+ border
672
+ border-dropdownMenu-border
673
+ bg-dropdownMenu-background
674
+ text-listItem-text-default
675
+ shadow-md
676
+ shadow-dropdownMenu-shadow
677
+ `,
678
+ className
679
+ ),
680
+ ...props
681
+ }
682
+ ) });
683
+ });
684
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
685
+ var DropdownMenuContent = React8.forwardRef(({ className, sideOffset = 4, portal = false, ...props }, ref) => {
686
+ const Comp = portal ? DropdownMenuPrimitive.Portal : React8.Fragment;
687
+ return /* @__PURE__ */ jsx(Comp, { children: /* @__PURE__ */ jsx(
688
+ DropdownMenuPrimitive.Content,
689
+ {
690
+ ref,
691
+ sideOffset,
692
+ className: cn(
693
+ `
694
+ z-50
695
+ max-h-72
696
+ min-w-32
697
+ overflow-y-auto
698
+ overflow-x-hidden
699
+ rounded-2xl
700
+ border
701
+ border-dropdownMenu-border
702
+ bg-dropdownMenu-background
703
+ text-listItem-text-default
704
+ shadow-md
705
+ shadow-dropdownMenu-shadow
706
+ `,
707
+ className
708
+ ),
709
+ ...props
710
+ }
711
+ ) });
712
+ });
713
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
714
+ var DropdownMenuItem = React8.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
715
+ DropdownMenuPrimitive.Item,
716
+ {
717
+ ref,
718
+ className: cn(
719
+ `
720
+ relative
721
+ flex
722
+ cursor-pointer
723
+ select-none
724
+ items-center
725
+ gap-2
726
+ px-4
727
+ h-11
728
+ text-sm
729
+ outline-none
730
+ transition-colors
731
+ active:text-listItem-text-selected
732
+ active:font-semibold
733
+ active:bg-listItem-background-default
734
+ focus:bg-listItem-background-hover
735
+ data-[disabled]:pointer-events-none
736
+ data-[disabled]:opacity-50
737
+ [&>svg]:size-4
738
+ [&>svg]:shrink-0
739
+ `,
740
+ inset && "pl-8",
741
+ className
742
+ ),
743
+ ...props
744
+ }
745
+ ));
746
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
747
+ var DropdownMenuCheckboxItem = React8.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
748
+ DropdownMenuPrimitive.CheckboxItem,
749
+ {
750
+ ref,
751
+ className: cn(
752
+ `
753
+ relative
754
+ flex
755
+ cursor-pointer
756
+ select-none
757
+ items-center
758
+ h-11
759
+ pl-10
760
+ pr-4
761
+ text-listItem-text-default
762
+ outline-none
763
+ transition-colors
764
+ font-normal
765
+ active:text-listItem-text-selected
766
+ active:font-semibold
767
+ active:bg-listItem-background-default
768
+ focus:bg-listItem-background-hover
769
+ data-[disabled]:pointer-events-none
770
+ data-[disabled]:opacity-50
771
+ data-[state=checked]:font-semibold
772
+ data-[state=checked]:text-listItem-text-selected
773
+ `,
774
+ className
775
+ ),
776
+ checked,
777
+ ...props,
778
+ children: [
779
+ /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { className: "nebula-ds absolute left-4 h-11 w-4 flex items-center justify-center", children: /* @__PURE__ */ jsx(Check, { className: "nebula-ds h-4 w-4" }) }),
780
+ children
781
+ ]
782
+ }
783
+ ));
784
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
785
+ var DropdownMenuRadioItem = React8.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
786
+ DropdownMenuPrimitive.RadioItem,
787
+ {
788
+ ref,
789
+ className: cn(
790
+ `
791
+ relative
792
+ flex
793
+ cursor-pointer
794
+ select-none
795
+ items-center
796
+ h-11
797
+ pl-8
798
+ pr-2
799
+ text-listItem-text-default
800
+ outline-none
801
+ transition-colors
802
+ active:text-listItem-text-selected
803
+ active:font-semibold
804
+ active:bg-listItem-background-default
805
+ focus:bg-listItem-background-hover
806
+ data-[disabled]:pointer-events-none
807
+ data-[disabled]:opacity-50
808
+ data-[state=checked]:font-semibold
809
+ data-[state=checked]:text-listItem-text-selected
810
+ `,
811
+ className
812
+ ),
813
+ ...props,
814
+ children: [
815
+ /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { className: "nebula-ds absolute left-4 flex h-11 w-2 items-center justify-center", children: /* @__PURE__ */ jsx(Circle, { className: "nebula-ds h-2 w-2 fill-current" }) }),
816
+ children
817
+ ]
818
+ }
819
+ ));
820
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
821
+ var DropdownMenuLabel = React8.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
822
+ DropdownMenuPrimitive.Label,
823
+ {
824
+ ref,
825
+ className: cn(
826
+ `
827
+ px-4
828
+ h-8
829
+ flex
830
+ items-center
831
+ text-sm
832
+ text-listItem-text-header
833
+ `,
834
+ inset && "pl-8",
835
+ className
836
+ ),
837
+ ...props
838
+ }
839
+ ));
840
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
841
+ var DropdownMenuSeparator = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
842
+ DropdownMenuPrimitive.Separator,
843
+ {
844
+ ref,
845
+ className: cn(
846
+ `
847
+ -mx-1
848
+ h-px
849
+ bg-dropdownMenu-border
850
+ `,
851
+ className
852
+ ),
853
+ ...props
854
+ }
855
+ ));
856
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
857
+ var DropdownMenuShortcut = ({
858
+ className,
859
+ ...props
860
+ }) => {
861
+ return /* @__PURE__ */ jsx(
862
+ "span",
863
+ {
864
+ className: cn(
865
+ `
866
+ ml-auto
867
+ text-xs
868
+ tracking-widest
869
+ opacity-60
870
+ `,
871
+ className
872
+ ),
873
+ ...props
874
+ }
875
+ );
876
+ };
877
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
878
+ var variants3 = {
879
+ orientation: {
880
+ horizontal: "h-[1px] w-full",
881
+ vertical: "h-full w-[1px]"
882
+ }
883
+ };
884
+ var separatorVariantsConfig = cva("shrink-0 bg-separator-border-default", {
885
+ variants: variants3,
886
+ defaultVariants: {
887
+ orientation: "horizontal"
888
+ }
889
+ });
890
+ var separatorVariants = extractVariants(variants3);
891
+ var Separator2 = React8.forwardRef(
892
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => {
893
+ return /* @__PURE__ */ jsx(
894
+ SeparatorPrimitive.Root,
895
+ {
896
+ ref,
897
+ orientation,
898
+ className: cn(separatorVariantsConfig({ orientation, className })),
899
+ decorative,
900
+ ...props
901
+ }
902
+ );
903
+ }
904
+ );
905
+ Separator2.displayName = "Separator";
906
+ var SpaceSizeEnum = /* @__PURE__ */ ((SpaceSizeEnum2) => {
907
+ SpaceSizeEnum2["xs"] = "gap-1";
908
+ SpaceSizeEnum2["sm"] = "gap-2";
909
+ SpaceSizeEnum2["md"] = "gap-3";
910
+ SpaceSizeEnum2["lg"] = "gap-4";
911
+ SpaceSizeEnum2["xl"] = "gap-5";
912
+ return SpaceSizeEnum2;
913
+ })(SpaceSizeEnum || {});
914
+ var SpaceDirectionEnum = /* @__PURE__ */ ((SpaceDirectionEnum2) => {
915
+ SpaceDirectionEnum2["row"] = "flex-row";
916
+ SpaceDirectionEnum2["column"] = "flex-col";
917
+ return SpaceDirectionEnum2;
918
+ })(SpaceDirectionEnum || {});
919
+ var size3 = {
920
+ xs: "gap-1" /* xs */,
921
+ sm: "gap-2" /* sm */,
922
+ md: "gap-3" /* md */,
923
+ lg: "gap-4" /* lg */,
924
+ xl: "gap-5" /* xl */
925
+ };
926
+ var direction = {
927
+ row: "flex-row" /* row */,
928
+ column: "flex-col" /* column */
929
+ };
930
+ var spaceVariantsConfig = cva("flex items-start justify-start", {
931
+ variants: {
932
+ size: size3,
933
+ direction
934
+ },
935
+ defaultVariants: {
936
+ size: "md",
937
+ direction: "row"
938
+ }
939
+ });
940
+ var Space = React8__default.forwardRef(
941
+ ({ size: size4, direction: direction2, className, children }, ref) => {
942
+ return /* @__PURE__ */ jsx(
943
+ "div",
944
+ {
945
+ className: cn(spaceVariantsConfig({ size: size4, direction: direction2, className })),
946
+ ref,
947
+ children
948
+ }
949
+ );
950
+ }
951
+ );
952
+ Space.displayName = "Space";
953
+
954
+ // src/i18n/messages/en/pagination.ts
955
+ var messages = {
956
+ totalResultsLabel(pagesSize, totalResults) {
957
+ if (totalResults < pagesSize) {
958
+ pagesSize = totalResults;
959
+ }
960
+ return `Showing ${pagesSize} of ${totalResults} results`;
961
+ },
962
+ currentPageLabel(currentPage = 1, totalPages = 1) {
963
+ return `Page ${currentPage} of ${totalPages}`;
964
+ }
965
+ };
966
+ var pagination_default = messages;
967
+
968
+ // src/i18n/messages/en/input-select.ts
969
+ var messages2 = {
970
+ noOptions: "No options available"
971
+ };
972
+ var input_select_default = messages2;
973
+
974
+ // src/i18n/messages/en/index.ts
975
+ var enMessages = {
976
+ pagination: pagination_default,
977
+ inputSelect: input_select_default
978
+ };
979
+
980
+ // src/i18n/messages/es/pagination.ts
981
+ var messages3 = {
982
+ totalResultsLabel(pagesSize, totalResults) {
983
+ if (totalResults < pagesSize) {
984
+ pagesSize = totalResults;
985
+ }
986
+ return `Mostrando ${pagesSize} de ${totalResults} resultados`;
987
+ },
988
+ currentPageLabel(currentPage = 1, totalPages = 1) {
989
+ return `P\xE1gina ${currentPage} de ${totalPages}`;
990
+ }
991
+ };
992
+ var pagination_default2 = messages3;
993
+
994
+ // src/i18n/messages/es/input-select.ts
995
+ var messages4 = {
996
+ noOptions: "No hay opciones disponibles"
997
+ };
998
+ var input_select_default2 = messages4;
999
+
1000
+ // src/i18n/messages/es/index.ts
1001
+ var esMessages = {
1002
+ pagination: pagination_default2,
1003
+ inputSelect: input_select_default2
1004
+ };
1005
+
1006
+ // src/i18n/messages/pt-br/pagination.ts
1007
+ var messages5 = {
1008
+ totalResultsLabel(pagesSize, totalResults) {
1009
+ if (totalResults < pagesSize) {
1010
+ pagesSize = totalResults;
1011
+ }
1012
+ return `Mostrando ${pagesSize} de ${totalResults} resultados`;
1013
+ },
1014
+ currentPageLabel(currentPage = 1, totalPages = 1) {
1015
+ return `P\xE1gina ${currentPage} de ${totalPages}`;
1016
+ }
1017
+ };
1018
+ var pagination_default3 = messages5;
1019
+
1020
+ // src/i18n/messages/pt-br/input-select.ts
1021
+ var messages6 = {
1022
+ noOptions: "Nenhuma op\xE7\xE3o dispon\xEDvel"
1023
+ };
1024
+ var input_select_default3 = messages6;
1025
+
1026
+ // src/i18n/messages/pt-br/index.ts
1027
+ var ptBrMessages = {
1028
+ pagination: pagination_default3,
1029
+ inputSelect: input_select_default3
1030
+ };
1031
+
1032
+ // src/i18n/messasge-storege-handler.ts
1033
+ var customNebulaI18nStorageKey = "custom-nebula-i18n-key";
1034
+ var localStorageKey = "nebula-i18n-key";
1035
+ var getNebulaI18nStorageKey = () => {
1036
+ if (typeof window === "undefined") {
1037
+ return localStorageKey;
1038
+ }
1039
+ return localStorage.getItem(customNebulaI18nStorageKey) ?? localStorageKey;
1040
+ };
1041
+ var getNebulaLanguage = () => {
1042
+ if (typeof window === "undefined") {
1043
+ return null;
1044
+ }
1045
+ const language = localStorage.getItem(getNebulaI18nStorageKey());
1046
+ return language;
1047
+ };
1048
+ var setNebulaLanguage = (language) => {
1049
+ if (typeof window === "undefined") {
1050
+ return;
1051
+ }
1052
+ localStorage.setItem(getNebulaI18nStorageKey(), language);
1053
+ };
1054
+ var messages7 = /* @__PURE__ */ new Map([
1055
+ [null, enMessages],
1056
+ [void 0, enMessages],
1057
+ ["en-US", enMessages],
1058
+ ["es", esMessages],
1059
+ ["pt-BR", ptBrMessages]
1060
+ ]);
1061
+ var NebulaI18nContext = createContext(
1062
+ null
1063
+ );
1064
+ var NebulaI18nProvider = ({
1065
+ children,
1066
+ customI18nStorageKey
1067
+ }) => {
1068
+ const storageKey = useMemo(
1069
+ () => customI18nStorageKey ?? localStorageKey,
1070
+ [customI18nStorageKey]
1071
+ );
1072
+ const [messages8, setMessages] = useState(
1073
+ messages7.get(getNebulaLanguage()) ?? messages7.get("en-US")
1074
+ );
1075
+ const handleStorageChange = useCallback(
1076
+ ({ detail }) => {
1077
+ if (detail.key === storageKey) {
1078
+ setMessages(
1079
+ messages7.get(detail.value) ?? messages7.get("en-US")
1080
+ );
1081
+ }
1082
+ },
1083
+ [storageKey]
1084
+ );
1085
+ useEffect(() => {
1086
+ if (typeof window === "undefined") {
1087
+ return;
1088
+ }
1089
+ const originalSetItem = localStorage.setItem;
1090
+ localStorage.setItem = function(key, value) {
1091
+ const event = new CustomEvent("localStorageChange", {
1092
+ detail: { key, value }
1093
+ });
1094
+ window.dispatchEvent(event);
1095
+ originalSetItem.call(this, key, value);
1096
+ };
1097
+ window.addEventListener(
1098
+ "localStorageChange",
1099
+ handleStorageChange
1100
+ );
1101
+ return () => {
1102
+ window.removeEventListener(
1103
+ "localStorageChange",
1104
+ handleStorageChange
1105
+ );
1106
+ };
1107
+ }, [handleStorageChange]);
1108
+ useEffect(() => {
1109
+ if (typeof window === "undefined") {
1110
+ return;
1111
+ }
1112
+ if (!customI18nStorageKey) {
1113
+ localStorage.removeItem(customNebulaI18nStorageKey);
1114
+ return;
1115
+ }
1116
+ localStorage.removeItem(localStorageKey);
1117
+ localStorage.setItem(customNebulaI18nStorageKey, customI18nStorageKey);
1118
+ }, [customI18nStorageKey]);
1119
+ return /* @__PURE__ */ jsx(NebulaI18nContext.Provider, { value: { messages: messages8 }, children });
1120
+ };
1121
+ var useNebulaI18n = () => {
1122
+ const context = useContext(NebulaI18nContext);
1123
+ if (!context) {
1124
+ throw new Error("useNebulaI18n must be used within a NebulaI18nProvider");
1125
+ }
1126
+ return context;
1127
+ };
1128
+ var Pagination = ({
1129
+ className,
1130
+ total,
1131
+ pageSize,
1132
+ page,
1133
+ onChangePage,
1134
+ ...props
1135
+ }) => {
1136
+ const { messages: messages8 } = useNebulaI18n();
1137
+ const totalPages = useMemo(() => {
1138
+ return Math.ceil(total / (pageSize || 1));
1139
+ }, [total, pageSize]);
1140
+ const handleChangePage = useCallback(
1141
+ (page2) => {
1142
+ if (page2 < 1 || page2 > totalPages) {
1143
+ return;
1144
+ }
1145
+ onChangePage(page2);
1146
+ },
1147
+ [totalPages, onChangePage]
1148
+ );
1149
+ const normalizedPage = useMemo(() => {
1150
+ if (page < 1) {
1151
+ return 1;
1152
+ }
1153
+ if (page > totalPages) {
1154
+ return totalPages;
1155
+ }
1156
+ return page;
1157
+ }, [page, totalPages]);
1158
+ const disabledPreviousPage = normalizedPage === 1 || totalPages === 0;
1159
+ const disabledNextPage = normalizedPage === totalPages || totalPages === 0;
1160
+ const lastPageSize = useMemo(() => {
1161
+ if (totalPages === 0) {
1162
+ return 0;
1163
+ }
1164
+ const lastPageStart = (totalPages - 1) * pageSize;
1165
+ return total - lastPageStart;
1166
+ }, [totalPages, pageSize, total]);
1167
+ const totalResultsLabel = useMemo(() => {
1168
+ if (page === totalPages) {
1169
+ return messages8.pagination.totalResultsLabel(lastPageSize, total);
1170
+ }
1171
+ return messages8.pagination.totalResultsLabel(pageSize, total);
1172
+ }, [messages8.pagination, pageSize, total, page, totalPages, lastPageSize]);
1173
+ const currentPageLabel = useMemo(
1174
+ () => messages8.pagination.currentPageLabel(normalizedPage, totalPages),
1175
+ [messages8.pagination, normalizedPage, totalPages]
1176
+ );
1177
+ return /* @__PURE__ */ jsxs(
1178
+ "nav",
1179
+ {
1180
+ role: "navigation",
1181
+ "aria-label": "pagination",
1182
+ className: cn("flex w-full h-12 px-4 items-center", className),
1183
+ ...props,
1184
+ children: [
1185
+ /* @__PURE__ */ jsx("span", { className: "nebula-ds select-none text-pagination-text text-sm font-medium mr-3", children: totalResultsLabel }),
1186
+ /* @__PURE__ */ jsxs(PaginationContent, { children: [
1187
+ totalPages > 0 && /* @__PURE__ */ jsx("span", { className: "nebula-ds select-none text-pagination-text text-sm font-medium mr-[14px]", children: currentPageLabel }),
1188
+ /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
1189
+ PaginationJumpPreviousChunk,
1190
+ {
1191
+ onClick: () => handleChangePage(1),
1192
+ disabled: disabledPreviousPage
1193
+ }
1194
+ ) }),
1195
+ /* @__PURE__ */ jsx(
1196
+ PaginationPrevious,
1197
+ {
1198
+ onClick: () => handleChangePage(normalizedPage - 1),
1199
+ disabled: disabledPreviousPage
1200
+ }
1201
+ ),
1202
+ /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
1203
+ PaginationNext,
1204
+ {
1205
+ onClick: () => handleChangePage(normalizedPage + 1),
1206
+ disabled: disabledNextPage
1207
+ }
1208
+ ) }),
1209
+ /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
1210
+ PaginationJumpNextChunk,
1211
+ {
1212
+ onClick: () => handleChangePage(totalPages),
1213
+ disabled: disabledNextPage
1214
+ }
1215
+ ) })
1216
+ ] })
1217
+ ]
1218
+ }
1219
+ );
1220
+ };
1221
+ Pagination.displayName = "Pagination";
1222
+ var PaginationContent = forwardRef(
1223
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1224
+ "ul",
1225
+ {
1226
+ ref,
1227
+ className: cn(
1228
+ "flex flex-row items-center gap-1 flex-1 justify-end",
1229
+ className
1230
+ ),
1231
+ ...props
1232
+ }
1233
+ )
1234
+ );
1235
+ PaginationContent.displayName = "PaginationContent";
1236
+ var PaginationItem = forwardRef(
1237
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1238
+ "li",
1239
+ {
1240
+ ref,
1241
+ className: cn("flex items-center justify-center", className),
1242
+ ...props
1243
+ }
1244
+ )
1245
+ );
1246
+ PaginationItem.displayName = "PaginationItem";
1247
+ var PaginationButton = ({
1248
+ className,
1249
+ isActive,
1250
+ disabled,
1251
+ ...props
1252
+ }) => {
1253
+ return /* @__PURE__ */ jsx(
1254
+ Button,
1255
+ {
1256
+ variant: "ghost",
1257
+ "aria-current": isActive ? "page" : void 0,
1258
+ "aria-disabled": disabled,
1259
+ disabled,
1260
+ className: cn(
1261
+ `
1262
+ h-8
1263
+ w-8
1264
+ p-0
1265
+ !border
1266
+ !border-solid
1267
+ font-semibold
1268
+ select-none
1269
+ border-pagination-border-default
1270
+ text-pagination-icon-default
1271
+ bg-pagination-background-default
1272
+ hover:bg-pagination-background-hover
1273
+ disabled:text-pagination-icon-disabled
1274
+ disabled:bg-pagination-background-disabled
1275
+ disabled:border-pagination-border-disabled
1276
+ disabled:cursor-not-allowed
1277
+ disabled:pointer-events-none
1278
+ focus:bg-unset
1279
+ focus:text-unset
1280
+ focus:border-unset
1281
+ `,
1282
+ className
1283
+ ),
1284
+ ...props
1285
+ }
1286
+ );
1287
+ };
1288
+ PaginationButton.displayName = "PaginationButton";
1289
+ var PaginationPrevious = ({
1290
+ ...props
1291
+ }) => /* @__PURE__ */ jsx(PaginationButton, { "aria-label": "Go to previous page", ...props, children: /* @__PURE__ */ jsx(ChevronLeft, { className: "nebula-ds h-4" }) });
1292
+ PaginationPrevious.displayName = "PaginationPrevious";
1293
+ var PaginationNext = ({
1294
+ ...props
1295
+ }) => /* @__PURE__ */ jsx(PaginationButton, { "aria-label": "Go to next page", ...props, children: /* @__PURE__ */ jsx(ChevronRight, { className: "nebula-ds h-4" }) });
1296
+ PaginationNext.displayName = "PaginationNext";
1297
+ var PaginationJumpNextChunk = ({ ...props }) => /* @__PURE__ */ jsx(PaginationButton, { "aria-label": "Go to next chunk", ...props, children: /* @__PURE__ */ jsx(ChevronsRight, { className: "nebula-ds h-4 w-4" }) });
1298
+ PaginationJumpNextChunk.displayName = "PaginationJumpNextChunk";
1299
+ var PaginationJumpPreviousChunk = ({ ...props }) => /* @__PURE__ */ jsx(PaginationButton, { "aria-label": "Go to previous chunk", ...props, children: /* @__PURE__ */ jsx(ChevronsLeft, { className: "nebula-ds h-4 w-4" }) });
1300
+ PaginationJumpPreviousChunk.displayName = "PaginationJumpPreviousChunk";
1301
+ var tagVariantsEnum = /* @__PURE__ */ ((tagVariantsEnum2) => {
1302
+ tagVariantsEnum2["blue"] = "bg-tag-colorIndicator-blue";
1303
+ tagVariantsEnum2["green"] = "bg-tag-colorIndicator-green";
1304
+ tagVariantsEnum2["yellow"] = "bg-tag-colorIndicator-yellow";
1305
+ tagVariantsEnum2["red"] = "bg-tag-colorIndicator-red";
1306
+ tagVariantsEnum2["orange"] = "bg-tag-colorIndicator-orange";
1307
+ tagVariantsEnum2["gray"] = "bg-tag-colorIndicator-gray";
1308
+ return tagVariantsEnum2;
1309
+ })(tagVariantsEnum || {});
1310
+ var color = {
1311
+ blue: "bg-tag-colorIndicator-blue" /* blue */,
1312
+ green: "bg-tag-colorIndicator-green" /* green */,
1313
+ yellow: "bg-tag-colorIndicator-yellow" /* yellow */,
1314
+ red: "bg-tag-colorIndicator-red" /* red */,
1315
+ orange: "bg-tag-colorIndicator-orange" /* orange */,
1316
+ gray: "bg-tag-colorIndicator-gray" /* gray */
1317
+ };
1318
+ var tagVariantsConfig = cva("w-2 h-2 block rounded-sm", {
1319
+ variants: {
1320
+ color
1321
+ }
1322
+ });
1323
+ var Tag = React8.forwardRef(
1324
+ ({ className, color: color2, children, onDelete, ...props }, ref) => {
1325
+ return /* @__PURE__ */ jsxs(
1326
+ "div",
1327
+ {
1328
+ ref,
1329
+ className: cn(
1330
+ "flex items-center border border-tag-border px-2 h-6 rounded-full transition-colors hover:bg-tag-background-hover",
1331
+ className
1332
+ ),
1333
+ ...props,
1334
+ children: [
1335
+ color2 && /* @__PURE__ */ jsx("span", { className: cn(tagVariantsConfig({ color: color2 })) }),
1336
+ /* @__PURE__ */ jsx("span", { className: "nebula-ds text-tag-text text-xs font-medium px-1 leading-none", children }),
1337
+ onDelete && /* @__PURE__ */ jsx("button", { onClick: onDelete, children: /* @__PURE__ */ jsx(CircleX, { className: "nebula-ds w-3 h-3 block rounded-sm text-tag-icon" }) })
1338
+ ]
1339
+ }
1340
+ );
1341
+ }
1342
+ );
1343
+ Tag.displayName = "Tag";
1344
+ var DropdownIndicator = (props) => /* @__PURE__ */ jsx(components.DropdownIndicator, { ...props, children: /* @__PURE__ */ jsx(ChevronDown, { size: "16px" }) });
1345
+ var ClearIndicator = (props) => /* @__PURE__ */ jsx(components.ClearIndicator, { ...props, children: /* @__PURE__ */ jsx(X, { size: "16px" }) });
1346
+ var MultiValueRemove = (props) => /* @__PURE__ */ jsx(components.MultiValueRemove, { ...props, children: /* @__PURE__ */ jsx(CircleX, { size: "16px" }) });
1347
+ var Option = (props) => {
1348
+ const { isSelected, data, innerRef, innerProps } = props;
1349
+ return /* @__PURE__ */ jsxs(
1350
+ "div",
1351
+ {
1352
+ ref: innerRef,
1353
+ ...innerProps,
1354
+ className: cn(
1355
+ `
1356
+ flex
1357
+ items-center
1358
+ px-4 py-2
1359
+ gap-2
1360
+ cursor-pointer
1361
+ text-sm
1362
+ hover:text-inputSelect-focus-text
1363
+ hover:bg-listItem-background-hover
1364
+ bg-listItem-background-default
1365
+ `,
1366
+ isSelected ? `
1367
+ text-inputSelect-focus-text
1368
+ font-semibold
1369
+ bg-listItem-background-hover` : `
1370
+ text-inputSelect-default-text
1371
+ `
1372
+ ),
1373
+ children: [
1374
+ isSelected && /* @__PURE__ */ jsx(Check, { size: "16px" }),
1375
+ /* @__PURE__ */ jsx("span", { children: data.label })
1376
+ ]
1377
+ }
1378
+ );
1379
+ };
1380
+ var controlStyles = (state) => cn([
1381
+ `
1382
+ border
1383
+ bg-inputSelect-default-background
1384
+ rounded-[20px]
1385
+ px-4
1386
+ w-full
1387
+ min-h-10
1388
+ transition
1389
+ `,
1390
+ {
1391
+ "border-inputSelect-focus-border text-inputSelect-focus-text ring-[3px] ring-inputSelect-focus-border": state.isFocused,
1392
+ "border-inputSelect-default-border text-inputSelect-default-text": !state.isFocused,
1393
+ "bg-inputText-background-disabled": state.isDisabled
1394
+ }
1395
+ ]);
1396
+ var placeholderStyles = "text-inputSelect-default-text text-sm";
1397
+ var selectInputStyles = "p-0";
1398
+ var valueContainerStyles = "gap-1";
1399
+ var singleValueStyles = "text-inputSelect-active-text text-sm";
1400
+ var multiValueStyles = "border rounded-full items-center px-2 py-0.2 gap-1.5 text-xs border-inputSelect-default-border";
1401
+ var multiValueLabelStyles = "leading-6 px-2 py-0.2";
1402
+ var indicatorsContainerStyles = "";
1403
+ var clearIndicatorStyles = "text-inputSelect-default-icon mr-2";
1404
+ var dropdownIndicatorStyles = "text-inputSelect-default-icon";
1405
+ var menuStyles = "mt-2 border bg-inputSelect-default-background rounded-2xl overflow-hidden shadow-md shadow-dropdownMenu-shadow";
1406
+ var groupHeadingStyles = "ml-3 mt-2 mb-1 text-inputSelect-default-text text-sm";
1407
+ var noOptionsMessageStyles = "p-2 text-inputSelect-default-text";
1408
+ var createStyledSelect = (BaseSelect, displayName) => {
1409
+ const StyledSelect2 = ({
1410
+ icon,
1411
+ disabled = false,
1412
+ ...props
1413
+ }) => {
1414
+ const { messages: messages8 } = useNebulaI18n();
1415
+ return /* @__PURE__ */ jsx(
1416
+ BaseSelect,
1417
+ {
1418
+ unstyled: true,
1419
+ isDisabled: disabled,
1420
+ components: {
1421
+ DropdownIndicator,
1422
+ ClearIndicator,
1423
+ MultiValueRemove,
1424
+ Option,
1425
+ Control: ({ children, ...rest }) => /* @__PURE__ */ jsx(components.Control, { ...rest, children: /* @__PURE__ */ jsxs("div", { className: "nebula-ds flex w-full items-center", children: [
1426
+ icon && /* @__PURE__ */ jsx("span", { className: "nebula-ds text-inputSelect-default-icon pr-2", children: icon }),
1427
+ children
1428
+ ] }) })
1429
+ },
1430
+ classNames: {
1431
+ control: (state) => cn(controlStyles(state)),
1432
+ placeholder: () => placeholderStyles,
1433
+ input: () => selectInputStyles,
1434
+ valueContainer: () => valueContainerStyles,
1435
+ singleValue: () => singleValueStyles,
1436
+ multiValue: () => multiValueStyles,
1437
+ multiValueLabel: () => multiValueLabelStyles,
1438
+ indicatorsContainer: () => indicatorsContainerStyles,
1439
+ clearIndicator: () => clearIndicatorStyles,
1440
+ dropdownIndicator: () => dropdownIndicatorStyles,
1441
+ menu: () => menuStyles,
1442
+ groupHeading: () => groupHeadingStyles,
1443
+ noOptionsMessage: () => noOptionsMessageStyles
1444
+ },
1445
+ noOptionsMessage: () => /* @__PURE__ */ jsx("p", { children: messages8.inputSelect.noOptions }),
1446
+ ...props
1447
+ }
1448
+ );
1449
+ };
1450
+ StyledSelect2.displayName = displayName;
1451
+ return StyledSelect2;
1452
+ };
1453
+ var StyledSelect = createStyledSelect(Select, "Select");
1454
+ var StyledCreatable = createStyledSelect(Creatable, "Creatable");
1455
+ var StyledAsync = createStyledSelect(Async, "Async");
1456
+ var StyledAsyncCreatable = createStyledSelect(
1457
+ AsyncCreatable,
1458
+ "AsyncCreatable"
1459
+ );
1460
+ var InputText = React8.forwardRef(
1461
+ ({ className, icon, isError = false, onClean, ...props }, ref) => {
1462
+ const initialInputType = props.type || "text";
1463
+ const [type, setType] = React8.useState(initialInputType);
1464
+ const iconClass = {
1465
+ "text-inputText-icon-danger": isError,
1466
+ "text-inputText-icon-default focus:text-inputText-icon-focus": !isError && !props.value,
1467
+ "text-inputText-icon-filled focus:text-inputText-icon-filled": !isError && !!props.value
1468
+ };
1469
+ return /* @__PURE__ */ jsxs("div", { className: "nebula-ds relative w-full", children: [
1470
+ icon && /* @__PURE__ */ jsx("span", { className: "nebula-ds absolute left-4 top-1/2 transform -translate-y-1/2", children: /* @__PURE__ */ jsx(
1471
+ "span",
1472
+ {
1473
+ className: cn(
1474
+ "w-4 h-4 flex items-center justify-center disabled:text-inputText-icon-disabled",
1475
+ iconClass
1476
+ ),
1477
+ children: icon
1478
+ }
1479
+ ) }),
1480
+ /* @__PURE__ */ jsx(
1481
+ "input",
1482
+ {
1483
+ ref,
1484
+ className: cn(
1485
+ "w-full h-10 outline-none rounded-[20px] text-sm leading-none font-medium",
1486
+ "bg-inputText-background-default disabled:bg-inputText-background-disabled",
1487
+ "border border-inputText-border-default focus:ring-[3px] focus:ring-inputText-border-focus focus:border-inputText-border-focus",
1488
+ "text-inputText-text-filled focus:text-inputText-text-focus placeholder:text-inputText-text-default disabled:text-inputText-text-disabled",
1489
+ "disabled:cursor-not-allowed",
1490
+ {
1491
+ "pl-10 pr-4": !!icon,
1492
+ "px-4": !icon,
1493
+ "border-inputText-border-danger focus:border-inputText-border-danger focus:ring-button-danger-border-focus": isError
1494
+ },
1495
+ className
1496
+ ),
1497
+ ...props,
1498
+ type
1499
+ }
1500
+ ),
1501
+ onClean && props.value && /* @__PURE__ */ jsx(
1502
+ "button",
1503
+ {
1504
+ type: "button",
1505
+ className: cn("absolute top-1/2 transform -translate-y-1/2", {
1506
+ "right-10": initialInputType === "password",
1507
+ "right-4": initialInputType === "text"
1508
+ }),
1509
+ onClick: onClean,
1510
+ children: /* @__PURE__ */ jsx(CircleX, { className: cn("w-4 h-4", iconClass) })
1511
+ }
1512
+ ),
1513
+ initialInputType === "password" && /* @__PURE__ */ jsx(
1514
+ "button",
1515
+ {
1516
+ type: "button",
1517
+ className: "nebula-ds absolute right-4 top-1/2 transform -translate-y-1/2",
1518
+ onClick: () => setType((prev) => prev === "text" ? "password" : "text"),
1519
+ children: type === "text" ? /* @__PURE__ */ jsx(Eye, { className: cn("w-4 h-4", iconClass) }) : /* @__PURE__ */ jsx(EyeOff, { className: cn("w-4 h-4", iconClass) })
1520
+ }
1521
+ )
1522
+ ] });
1523
+ }
1524
+ );
1525
+ InputText.displayName = "InputText";
1526
+ var Dialog = DialogPrimitive.Root;
1527
+ var DialogTrigger = DialogPrimitive.Trigger;
1528
+ var DialogPortal = DialogPrimitive.Portal;
1529
+ var DialogClose = DialogPrimitive.Close;
1530
+ var DialogOverlay = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1531
+ DialogPrimitive.Overlay,
1532
+ {
1533
+ ref,
1534
+ className: cn(
1535
+ `fixed
1536
+ inset-0
1537
+ z-50
1538
+ bg-dialog-background-overlay
1539
+ data-[state=open]:animate-in
1540
+ data-[state=closed]:animate-out
1541
+ data-[state=closed]:fade-out-0
1542
+ data-[state=open]:fade-in-0`,
1543
+ className
1544
+ ),
1545
+ ...props
1546
+ }
1547
+ ));
1548
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
1549
+ var DialogContent = React8.forwardRef(({ className, children, portal = false, ...props }, ref) => {
1550
+ const Comp = portal ? DialogPortal : React8.Fragment;
1551
+ return /* @__PURE__ */ jsxs(Comp, { children: [
1552
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
1553
+ /* @__PURE__ */ jsxs(
1554
+ DialogPrimitive.Content,
1555
+ {
1556
+ ref,
1557
+ className: cn(
1558
+ `rounded-2xl
1559
+ fixed
1560
+ left-[50%]
1561
+ top-[50%]
1562
+ z-50
1563
+ grid
1564
+ w-full
1565
+ max-w-[600px]
1566
+ translate-x-[-50%]
1567
+ translate-y-[-50%]
1568
+ gap-10
1569
+ bg-dialog-background-default
1570
+ p-6
1571
+ shadow-lg
1572
+ duration-200
1573
+ data-[state=open]:animate-in
1574
+ data-[state=closed]:animate-out
1575
+ data-[state=closed]:fade-out-0
1576
+ data-[state=open]:fade-in-0
1577
+ data-[state=closed]:zoom-out-95
1578
+ data-[state=open]:zoom-in-95
1579
+ data-[state=closed]:slide-out-to-left-1/2
1580
+ data-[state=closed]:slide-out-to-top-[48%]
1581
+ data-[state=open]:slide-in-from-left-1/2
1582
+ data-[state=open]:slide-in-from-top-[48%]`,
1583
+ className
1584
+ ),
1585
+ ...props,
1586
+ children: [
1587
+ children,
1588
+ /* @__PURE__ */ jsx(
1589
+ DialogPrimitive.Close,
1590
+ {
1591
+ asChild: true,
1592
+ className: `absolute
1593
+ right-4
1594
+ top-4`,
1595
+ children: /* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "sm", icon: true, children: [
1596
+ /* @__PURE__ */ jsx(X, { className: "nebula-ds !h-4 !w-4 !text-dialog-icon" }),
1597
+ /* @__PURE__ */ jsx("span", { className: "nebula-ds sr-only", children: "Close" })
1598
+ ] })
1599
+ }
1600
+ )
1601
+ ]
1602
+ }
1603
+ )
1604
+ ] });
1605
+ });
1606
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
1607
+ var DialogHeader = ({
1608
+ className,
1609
+ ...props
1610
+ }) => /* @__PURE__ */ jsx(
1611
+ "div",
1612
+ {
1613
+ className: cn("flex flex-col space-y-1.5 text-center", className),
1614
+ ...props
1615
+ }
1616
+ );
1617
+ DialogHeader.displayName = "DialogHeader";
1618
+ var DialogBody = ({
1619
+ className,
1620
+ ...props
1621
+ }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col space-y-2", className), ...props });
1622
+ DialogBody.displayName = "DialogBody";
1623
+ var DialogFooter = ({
1624
+ className,
1625
+ ...props
1626
+ }) => /* @__PURE__ */ jsx("div", { className: cn("flex gap-2", className), ...props });
1627
+ DialogFooter.displayName = "DialogFooter";
1628
+ var DialogTitle = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1629
+ DialogPrimitive.Title,
1630
+ {
1631
+ ref,
1632
+ className: cn(
1633
+ "text-xl font-semibold leading-none tracking-normal text-dialog-title",
1634
+ className
1635
+ ),
1636
+ ...props
1637
+ }
1638
+ ));
1639
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
1640
+ var DialogDescription = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1641
+ DialogPrimitive.Description,
1642
+ {
1643
+ ref,
1644
+ className: cn("text-base text-center text-dialog-text", className),
1645
+ ...props
1646
+ }
1647
+ ));
1648
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
1649
+ var AlertDialog = AlertDialogPrimitive.Root;
1650
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
1651
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
1652
+ var AlertDialogOverlay = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1653
+ AlertDialogPrimitive.Overlay,
1654
+ {
1655
+ className: cn(
1656
+ "fixed inset-0 z-50 bg-black/60 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1657
+ className
1658
+ ),
1659
+ ...props,
1660
+ ref
1661
+ }
1662
+ ));
1663
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
1664
+ var AlertDialogContent = React8.forwardRef(({ className, portal = false, ...props }, ref) => {
1665
+ const Comp = portal ? AlertDialogPortal : React8.Fragment;
1666
+ return /* @__PURE__ */ jsxs(Comp, { children: [
1667
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
1668
+ /* @__PURE__ */ jsx(
1669
+ AlertDialogPrimitive.Content,
1670
+ {
1671
+ ref,
1672
+ className: cn(
1673
+ "rounded-2xl fixed left-[50%] top-[50%] z-50 grid w-full max-w-[600px] translate-x-[-50%] translate-y-[-50%] gap-10 bg-dialog-background-default p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
1674
+ className
1675
+ ),
1676
+ ...props
1677
+ }
1678
+ )
1679
+ ] });
1680
+ });
1681
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
1682
+ var AlertDialogHeader = ({
1683
+ className,
1684
+ ...props
1685
+ }) => /* @__PURE__ */ jsx(
1686
+ "div",
1687
+ {
1688
+ className: cn(
1689
+ "flex flex-col justify-center items-center gap-2 text-center",
1690
+ className
1691
+ ),
1692
+ ...props
1693
+ }
1694
+ );
1695
+ AlertDialogHeader.displayName = "AlertDialogHeader";
1696
+ var AlertDialogFooter = ({
1697
+ className,
1698
+ ...props
1699
+ }) => /* @__PURE__ */ jsx("div", { className: cn("flex gap-2", className), ...props });
1700
+ AlertDialogFooter.displayName = "AlertDialogFooter";
1701
+ var AlertDialogTitle = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1702
+ AlertDialogPrimitive.Title,
1703
+ {
1704
+ ref,
1705
+ className: cn(
1706
+ "text-xl flex flex-col items-center justify-center gap-2 mb-2 font-semibold leading-none tracking-normal text-center text-dialog-title",
1707
+ className
1708
+ ),
1709
+ ...props
1710
+ }
1711
+ ));
1712
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
1713
+ var AlertDialogDescription = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1714
+ AlertDialogPrimitive.Description,
1715
+ {
1716
+ ref,
1717
+ className: cn("text-base text-center text-dialog-text", className),
1718
+ ...props
1719
+ }
1720
+ ));
1721
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
1722
+ var AlertDialogAction = React8.forwardRef(({ children, className, variant: variant3, ...props }, ref) => /* @__PURE__ */ jsx(
1723
+ AlertDialogPrimitive.Action,
1724
+ {
1725
+ ref,
1726
+ className: cn(buttonVariantsConfig({ variant: variant3 }), className),
1727
+ ...props,
1728
+ children: processChildren(children)
1729
+ }
1730
+ ));
1731
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
1732
+ var AlertDialogCancel = React8.forwardRef(({ children, className, variant: variant3 = "secondary", ...props }, ref) => /* @__PURE__ */ jsx(
1733
+ AlertDialogPrimitive.Cancel,
1734
+ {
1735
+ ref,
1736
+ className: cn(buttonVariantsConfig({ variant: variant3 }), className),
1737
+ ...props,
1738
+ children: processChildren(children)
1739
+ }
1740
+ ));
1741
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
1742
+ var Checkbox = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1743
+ CheckboxPrimitive.Root,
1744
+ {
1745
+ ref,
1746
+ className: cn(
1747
+ `
1748
+ peer
1749
+ shrink-0
1750
+ h-4
1751
+ w-4
1752
+ rounded-[4px]
1753
+ border-2
1754
+ transition-colors
1755
+ disabled:cursor-not-allowed
1756
+ disabled:opacity-50
1757
+ bg-checkbox-unselected-background-default
1758
+ hover:bg-checkbox-unselected-background-hover
1759
+ focus:bg-checkbox-unselected-background-focus
1760
+ disabled:bg-checkbox-unselected-background-disabled
1761
+ data-[state=checked]:bg-checkbox-selected-background-default
1762
+ data-[state=checked]:hover:bg-checkbox-selected-background-hover
1763
+ data-[state=checked]:hover:border-checkbox-selected-background-hover
1764
+ data-[state=checked]:focus:bg-checkbox-selected-background-focus
1765
+ data-[state=checked]:focus:border-checkbox-selected-background-focus
1766
+ data-[state=checked]:disabled:bg-checkbox-selected-background-disabled
1767
+ border-checkbox-unselected-border-default
1768
+ hover:border-checkbox-unselected-border-hover
1769
+ focus:border-checkbox-unselected-border-focus
1770
+ disabled:border-checkbox-unselected-border-disabled
1771
+ data-[state=checked]:border-checkbox-selected-border-focus
1772
+ data-[state=checked]:disabled:border-checkbox-unselected-border-disabled
1773
+ focus-visible:outline-none
1774
+ focus-visible:ring-2
1775
+ focus-visible:ring-checkbox-unselected-border-external-focus
1776
+ focus-visible:ring-offset-0
1777
+ text-checkbox-unselected-icon-default
1778
+ data-[state=checked]:text-checkbox-selected-icon-default
1779
+ disabled:data-[state=checked]:text-checkbox-selected-icon-disabled`,
1780
+ className
1781
+ ),
1782
+ ...props,
1783
+ children: /* @__PURE__ */ jsx(
1784
+ CheckboxPrimitive.Indicator,
1785
+ {
1786
+ className: cn("flex items-center justify-center text-current"),
1787
+ children: props.variant === "multiselect" ? /* @__PURE__ */ jsx(Minus, { className: "nebula-ds h-3 w-3" }) : /* @__PURE__ */ jsx(Check, { className: "nebula-ds h-3 w-3" })
1788
+ }
1789
+ )
1790
+ }
1791
+ ));
1792
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
1793
+ var Drawer = DialogPrimitive.Root;
1794
+ var DrawerTrigger = DialogPrimitive.Trigger;
1795
+ var DrawerClose = DialogPrimitive.Close;
1796
+ var DrawerPortal = DialogPrimitive.Portal;
1797
+ var DrawerOverlay = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1798
+ DialogPrimitive.Overlay,
1799
+ {
1800
+ className: cn(
1801
+ "fixed inset-0 z-50 bg-drawer-overlay data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1802
+ className
1803
+ ),
1804
+ ...props,
1805
+ ref
1806
+ }
1807
+ ));
1808
+ DrawerOverlay.displayName = DialogPrimitive.Overlay.displayName;
1809
+ var DrawerVariants = cva(
1810
+ "fixed flex flex-col z-50 shadow-lg transition ease-in-out",
1811
+ {
1812
+ variants: {
1813
+ side: {
1814
+ top: "inset-x-0 top-0 data-[state=open]:animate-slide-in-from-top data-[state=closed]:animate-slide-out-to-top",
1815
+ bottom: "inset-x-0 bottom-0 data-[state=open]:animate-slide-in-from-bottom data-[state=closed]:animate-slide-out-to-bottom",
1816
+ left: "inset-y-0 h-full left-0 w-3/4 data-[state=open]:animate-slide-in-from-left data-[state=closed]:animate-slide-out-to-left sm:max-w-sm",
1817
+ right: "inset-y-0 h-full right-0 w-3/4 data-[state=open]:animate-slide-in-from-right data-[state=closed]:animate-slide-out-to-right sm:max-w-sm"
1818
+ }
1819
+ },
1820
+ defaultVariants: {
1821
+ side: "right"
1822
+ }
1823
+ }
1824
+ );
1825
+ var DrawerContent = React8.forwardRef(({ side = "right", className, portal = false, children, ...props }, ref) => {
1826
+ const Comp = portal ? DrawerPortal : React8.Fragment;
1827
+ return /* @__PURE__ */ jsxs(Comp, { children: [
1828
+ /* @__PURE__ */ jsx(DrawerOverlay, {}),
1829
+ /* @__PURE__ */ jsx(
1830
+ DialogPrimitive.Content,
1831
+ {
1832
+ ref,
1833
+ className: cn(DrawerVariants({ side }), className),
1834
+ ...props,
1835
+ children
1836
+ }
1837
+ )
1838
+ ] });
1839
+ });
1840
+ DrawerContent.displayName = DialogPrimitive.Content.displayName;
1841
+ var DrawerHeader = ({
1842
+ className,
1843
+ extraActions,
1844
+ ...props
1845
+ }) => {
1846
+ return /* @__PURE__ */ jsxs("div", { className: "nebula-ds bg-drawer-header-background text-drawer-header-title flex w-full min-h-16 items-start gap-2 p-4 border-b border-drawer-header-border", children: [
1847
+ /* @__PURE__ */ jsxs("div", { className: "nebula-ds flex gap-2", children: [
1848
+ /* @__PURE__ */ jsx(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { size: "sm", variant: "ghost", icon: true, tabIndex: -1, children: [
1849
+ /* @__PURE__ */ jsx(X, { className: "nebula-ds !h-4 !w-4" }),
1850
+ /* @__PURE__ */ jsx("span", { className: "nebula-ds sr-only", children: "Close" })
1851
+ ] }) }),
1852
+ /* @__PURE__ */ jsx(
1853
+ "div",
1854
+ {
1855
+ className: cn("flex flex-1 flex-col space-y-1 mt-1", className),
1856
+ ...props
1857
+ }
1858
+ )
1859
+ ] }),
1860
+ /* @__PURE__ */ jsx("div", { className: "nebula-ds ml-auto flex items-start", children: extraActions })
1861
+ ] });
1862
+ };
1863
+ DrawerHeader.displayName = "DrawerHeader";
1864
+ var DrawerBody = ({
1865
+ className,
1866
+ ...props
1867
+ }) => /* @__PURE__ */ jsx(
1868
+ "div",
1869
+ {
1870
+ className: cn(
1871
+ "p-4 bg-drawer-body-background text-drawer-body-text flex-1 overflow-y-auto",
1872
+ className
1873
+ ),
1874
+ ...props
1875
+ }
1876
+ );
1877
+ DrawerBody.displayName = "DrawerBody";
1878
+ var DrawerFooter = ({
1879
+ className,
1880
+ ...props
1881
+ }) => /* @__PURE__ */ jsx(
1882
+ "div",
1883
+ {
1884
+ className: cn(
1885
+ "flex p-4 bg-drawer-footer-background space-x-2 border-t border-drawer-footer-border",
1886
+ className
1887
+ ),
1888
+ ...props
1889
+ }
1890
+ );
1891
+ DrawerFooter.displayName = "DrawerFooter";
1892
+ var DrawerTitle = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1893
+ DialogPrimitive.Title,
1894
+ {
1895
+ ref,
1896
+ className: cn(
1897
+ "text-base font-semibold text-drawer-header-title",
1898
+ className
1899
+ ),
1900
+ ...props
1901
+ }
1902
+ ));
1903
+ DrawerTitle.displayName = DialogPrimitive.Title.displayName;
1904
+ var DrawerDescription = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1905
+ DialogPrimitive.Description,
1906
+ {
1907
+ ref,
1908
+ className: cn("text-sm text-drawer-header-description", className),
1909
+ ...props
1910
+ }
1911
+ ));
1912
+ DrawerDescription.displayName = DialogPrimitive.Description.displayName;
1913
+ var Breadcrumb = React8.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("nav", { ref, "aria-label": "breadcrumb", ...props }));
1914
+ Breadcrumb.displayName = "Breadcrumb";
1915
+ var BreadcrumbList = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1916
+ "ol",
1917
+ {
1918
+ ref,
1919
+ className: cn(
1920
+ "flex flex-wrap items-center gap-1 break-words font-medium text-sm text-breadcrumb-text-default sm:gap-2.5",
1921
+ className
1922
+ ),
1923
+ ...props
1924
+ }
1925
+ ));
1926
+ BreadcrumbList.displayName = "BreadcrumbList";
1927
+ var BreadcrumbItem = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1928
+ "li",
1929
+ {
1930
+ ref,
1931
+ className: cn(
1932
+ "inline-flex hover:text-breadcrumb-text-hover items-center gap-1.5",
1933
+ className
1934
+ ),
1935
+ ...props
1936
+ }
1937
+ ));
1938
+ BreadcrumbItem.displayName = "BreadcrumbItem";
1939
+ var BreadcrumbLink = React8.forwardRef(({ asChild, className, ...props }, ref) => {
1940
+ const Comp = asChild ? Slot : "a";
1941
+ return /* @__PURE__ */ jsx(
1942
+ Comp,
1943
+ {
1944
+ ref,
1945
+ className: cn(
1946
+ "transition-colors hover:text-breadcrumb-text-hover",
1947
+ className
1948
+ ),
1949
+ ...props
1950
+ }
1951
+ );
1952
+ });
1953
+ BreadcrumbLink.displayName = "BreadcrumbLink";
1954
+ var BreadcrumbPage = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1955
+ "span",
1956
+ {
1957
+ ref,
1958
+ role: "link",
1959
+ "aria-disabled": "true",
1960
+ "aria-current": "page",
1961
+ className: cn("font-medium text-breadcrumb-text-active", className),
1962
+ ...props
1963
+ }
1964
+ ));
1965
+ BreadcrumbPage.displayName = "BreadcrumbPage";
1966
+ var BreadcrumbSeparator = ({
1967
+ children,
1968
+ className,
1969
+ ...props
1970
+ }) => /* @__PURE__ */ jsx(
1971
+ "li",
1972
+ {
1973
+ role: "presentation",
1974
+ "aria-hidden": "true",
1975
+ className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className),
1976
+ ...props,
1977
+ children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
1978
+ }
1979
+ );
1980
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
1981
+ var BreadcrumbEllipsis = ({
1982
+ className,
1983
+ ...props
1984
+ }) => /* @__PURE__ */ jsxs(
1985
+ "span",
1986
+ {
1987
+ role: "presentation",
1988
+ "aria-hidden": "true",
1989
+ className: cn(
1990
+ "flex h-5 w-5 p-[2px] rounded-full items-center justify-center hover:bg-breadcrumb-ellipsis-background-hover",
1991
+ className
1992
+ ),
1993
+ ...props,
1994
+ children: [
1995
+ /* @__PURE__ */ jsx(Ellipsis, { className: "nebula-ds h-3 w-3" }),
1996
+ /* @__PURE__ */ jsx("span", { className: "nebula-ds sr-only", children: "More" })
1997
+ ]
1998
+ }
1999
+ );
2000
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
2001
+ var Switch = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2002
+ SwitchPrimitives.Root,
2003
+ {
2004
+ className: cn(
2005
+ `
2006
+ peer
2007
+ inline-flex
2008
+ h-5
2009
+ w-8
2010
+ shrink-0
2011
+ cursor-pointer
2012
+ items-center
2013
+ rounded-full
2014
+ border-2
2015
+ border-transparent
2016
+ shadow-sm
2017
+ transition-colors
2018
+ focus-visible:outline-none
2019
+ focus-visible:ring-2
2020
+ focus-visible:ring-switch-ring
2021
+ focus-visible:ring-offset-background
2022
+ disabled:cursor-not-allowed
2023
+ disabled:opacity-50
2024
+ bg-switch-background-off-default
2025
+ hover:bg-switch-background-off-hover
2026
+ focus:bg-switch-background-off-focus
2027
+ disabled:bg-switch-background-off-disabled
2028
+ data-[state=checked]:bg-switch-background-on-default
2029
+ data-[state=checked]:hover:bg-switch-background-on-hover
2030
+ data-[state=checked]:focus:bg-switch-background-on-focus
2031
+ data-[state=checked]:disabled:bg-switch-background-on-disabled
2032
+ `,
2033
+ className
2034
+ ),
2035
+ ...props,
2036
+ ref,
2037
+ children: /* @__PURE__ */ jsx(
2038
+ SwitchPrimitives.Thumb,
2039
+ {
2040
+ className: cn(
2041
+ `
2042
+ pointer-events-none
2043
+ block
2044
+ h-4
2045
+ w-4
2046
+ rounded-full
2047
+ bg-switch-circle
2048
+ shadow-lg
2049
+ ring-0
2050
+ transition-transform
2051
+ data-[state=checked]:translate-x-3
2052
+ data-[state=unchecked]:translate-x-0
2053
+ `
2054
+ )
2055
+ }
2056
+ )
2057
+ }
2058
+ ));
2059
+ Switch.displayName = SwitchPrimitives.Root.displayName;
2060
+ var Tooltip = React8.forwardRef(
2061
+ ({
2062
+ children,
2063
+ content: content2,
2064
+ sideOffset = 4,
2065
+ side = "top",
2066
+ align = "center",
2067
+ portal = false,
2068
+ className,
2069
+ ...props
2070
+ }, ref) => {
2071
+ const Comp = portal ? TooltipPrimitive.Portal : React8.Fragment;
2072
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { children: /* @__PURE__ */ jsxs(TooltipPrimitive.Root, { children: [
2073
+ /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { children }),
2074
+ /* @__PURE__ */ jsx(Comp, { children: /* @__PURE__ */ jsxs(
2075
+ TooltipPrimitive.Content,
2076
+ {
2077
+ ref,
2078
+ side,
2079
+ sideOffset,
2080
+ align,
2081
+ className: cn(
2082
+ "select-none rounded-lg bg-tooltip-background px-3 py-1.5 max-w-52 text-xs font-medium leading-tight text-tooltip-text shadow-[hsl(206_22%_7%_/_35%)_0px_10px_38px_-10px,_hsl(206_22%_7%_/_20%)_0px_10px_20px_-15px] will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slide-up-and-fade data-[state=delayed-open]:data-[side=left]:animate-slide-right-and-fade data-[state=delayed-open]:data-[side=right]:animate-slide-left-and-fade data-[state=delayed-open]:data-[side=top]:animate-slide-down-and-fade",
2083
+ className
2084
+ ),
2085
+ ...props,
2086
+ children: [
2087
+ content2,
2088
+ /* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "nebula-ds fill-tooltip-background" })
2089
+ ]
2090
+ }
2091
+ ) })
2092
+ ] }) });
2093
+ }
2094
+ );
2095
+ Tooltip.displayName = "Tooltip";
2096
+
2097
+ // src/tailwind.ts
2098
+ function content({ base = "./" } = {}) {
2099
+ const path = "node_modules/@ikatec/nebula-react/dist/**/*.mjs";
2100
+ return `${base}${path}`;
2101
+ }
2102
+ var tailwind = {
2103
+ content
2104
+ // plugin: () => require("tailwindcss")("node_modules/@nebulareact/dist/tailwind.config.js"),
2105
+ };
2106
+ /*! Bundled license information:
2107
+
2108
+ lucide-react/dist/esm/shared/src/utils.js:
2109
+ lucide-react/dist/esm/defaultAttributes.js:
2110
+ lucide-react/dist/esm/Icon.js:
2111
+ lucide-react/dist/esm/createLucideIcon.js:
2112
+ lucide-react/dist/esm/icons/check.js:
2113
+ lucide-react/dist/esm/icons/chevron-down.js:
2114
+ lucide-react/dist/esm/icons/chevron-left.js:
2115
+ lucide-react/dist/esm/icons/chevron-right.js:
2116
+ lucide-react/dist/esm/icons/chevrons-left.js:
2117
+ lucide-react/dist/esm/icons/chevrons-right.js:
2118
+ lucide-react/dist/esm/icons/circle-x.js:
2119
+ lucide-react/dist/esm/icons/circle.js:
2120
+ lucide-react/dist/esm/icons/ellipsis.js:
2121
+ lucide-react/dist/esm/icons/eye-off.js:
2122
+ lucide-react/dist/esm/icons/eye.js:
2123
+ lucide-react/dist/esm/icons/minus.js:
2124
+ lucide-react/dist/esm/icons/x.js:
2125
+ lucide-react/dist/esm/lucide-react.js:
2126
+ (**
2127
+ * @license lucide-react v0.476.0 - ISC
2128
+ *
2129
+ * This source code is licensed under the ISC license.
2130
+ * See the LICENSE file in the root directory of this source tree.
2131
+ *)
2132
+ */
2133
+
2134
+ export { Alert, AlertButton, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, AlertTitle, StyledAsync as Async, StyledAsyncCreatable as AsyncCreatable, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Checkbox, StyledCreatable as Creatable, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, InputText, Label, NebulaI18nProvider, Pagination, Popover, PopoverContent, PopoverTrigger, StyledSelect as Select, Separator2 as Separator, Space, SpaceDirectionEnum, SpaceSizeEnum, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tag, Tooltip, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, getNebulaLanguage, messages7 as messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, useNebulaI18n };