@ikatec/nebula-react 1.0.14 → 1.0.15

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.js CHANGED
@@ -8,6 +8,7 @@ var jsxRuntime = require('react/jsx-runtime');
8
8
  var PopoverPrimitive = require('@radix-ui/react-popover');
9
9
  var LabelPrimitive = require('@radix-ui/react-label');
10
10
  var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
11
+ var lucideReact = require('lucide-react');
11
12
  var SeparatorPrimitive = require('@radix-ui/react-separator');
12
13
  var Select = require('react-select');
13
14
  var Creatable = require('react-select/creatable');
@@ -23,6 +24,9 @@ var TabsPrimitive = require('@radix-ui/react-tabs');
23
24
  var sonner = require('sonner');
24
25
  var RPNInput = require('react-phone-number-input');
25
26
  var flags = require('react-phone-number-input/flags');
27
+ var dateFns = require('date-fns');
28
+ var reactDayPicker = require('react-day-picker');
29
+ var locale = require('react-day-picker/locale');
26
30
 
27
31
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
28
32
 
@@ -535,193 +539,6 @@ var TableCell = React8__namespace.forwardRef(({ className, ...props }, ref) => /
535
539
  TableCell.displayName = "TableCell";
536
540
  var TableCaption = React8__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("caption", { ref, className: cn("mt-4 text-sm", className), ...props }));
537
541
  TableCaption.displayName = "TableCaption";
538
-
539
- // ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
540
- var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
541
- var mergeClasses = (...classes) => classes.filter((className, index, array) => {
542
- return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
543
- }).join(" ").trim();
544
-
545
- // ../../node_modules/lucide-react/dist/esm/defaultAttributes.js
546
- var defaultAttributes = {
547
- xmlns: "http://www.w3.org/2000/svg",
548
- width: 24,
549
- height: 24,
550
- viewBox: "0 0 24 24",
551
- fill: "none",
552
- stroke: "currentColor",
553
- strokeWidth: 2,
554
- strokeLinecap: "round",
555
- strokeLinejoin: "round"
556
- };
557
-
558
- // ../../node_modules/lucide-react/dist/esm/Icon.js
559
- var Icon = React8.forwardRef(
560
- ({
561
- color: color2 = "currentColor",
562
- size: size4 = 24,
563
- strokeWidth = 2,
564
- absoluteStrokeWidth,
565
- className = "",
566
- children,
567
- iconNode,
568
- ...rest
569
- }, ref) => {
570
- return React8.createElement(
571
- "svg",
572
- {
573
- ref,
574
- ...defaultAttributes,
575
- width: size4,
576
- height: size4,
577
- stroke: color2,
578
- strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size4) : strokeWidth,
579
- className: mergeClasses("lucide", className),
580
- ...rest
581
- },
582
- [
583
- ...iconNode.map(([tag, attrs]) => React8.createElement(tag, attrs)),
584
- ...Array.isArray(children) ? children : [children]
585
- ]
586
- );
587
- }
588
- );
589
-
590
- // ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
591
- var createLucideIcon = (iconName, iconNode) => {
592
- const Component = React8.forwardRef(
593
- ({ className, ...props }, ref) => React8.createElement(Icon, {
594
- ref,
595
- iconNode,
596
- className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),
597
- ...props
598
- })
599
- );
600
- Component.displayName = `${iconName}`;
601
- return Component;
602
- };
603
-
604
- // ../../node_modules/lucide-react/dist/esm/icons/check.js
605
- var __iconNode = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
606
- var Check = createLucideIcon("Check", __iconNode);
607
-
608
- // ../../node_modules/lucide-react/dist/esm/icons/chevron-down.js
609
- var __iconNode2 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
610
- var ChevronDown = createLucideIcon("ChevronDown", __iconNode2);
611
-
612
- // ../../node_modules/lucide-react/dist/esm/icons/chevron-left.js
613
- var __iconNode3 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
614
- var ChevronLeft = createLucideIcon("ChevronLeft", __iconNode3);
615
-
616
- // ../../node_modules/lucide-react/dist/esm/icons/chevron-right.js
617
- var __iconNode4 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
618
- var ChevronRight = createLucideIcon("ChevronRight", __iconNode4);
619
-
620
- // ../../node_modules/lucide-react/dist/esm/icons/chevrons-left.js
621
- var __iconNode5 = [
622
- ["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
623
- ["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
624
- ];
625
- var ChevronsLeft = createLucideIcon("ChevronsLeft", __iconNode5);
626
-
627
- // ../../node_modules/lucide-react/dist/esm/icons/chevrons-right.js
628
- var __iconNode6 = [
629
- ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
630
- ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
631
- ];
632
- var ChevronsRight = createLucideIcon("ChevronsRight", __iconNode6);
633
-
634
- // ../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js
635
- var __iconNode7 = [
636
- ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
637
- ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
638
- ];
639
- var CircleCheckBig = createLucideIcon("CircleCheckBig", __iconNode7);
640
-
641
- // ../../node_modules/lucide-react/dist/esm/icons/circle-x.js
642
- var __iconNode8 = [
643
- ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
644
- ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
645
- ["path", { d: "m9 9 6 6", key: "z0biqf" }]
646
- ];
647
- var CircleX = createLucideIcon("CircleX", __iconNode8);
648
-
649
- // ../../node_modules/lucide-react/dist/esm/icons/circle.js
650
- var __iconNode9 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
651
- var Circle = createLucideIcon("Circle", __iconNode9);
652
-
653
- // ../../node_modules/lucide-react/dist/esm/icons/ellipsis.js
654
- var __iconNode10 = [
655
- ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
656
- ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
657
- ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
658
- ];
659
- var Ellipsis = createLucideIcon("Ellipsis", __iconNode10);
660
-
661
- // ../../node_modules/lucide-react/dist/esm/icons/eye-off.js
662
- var __iconNode11 = [
663
- [
664
- "path",
665
- {
666
- 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",
667
- key: "ct8e1f"
668
- }
669
- ],
670
- ["path", { d: "M14.084 14.158a3 3 0 0 1-4.242-4.242", key: "151rxh" }],
671
- [
672
- "path",
673
- {
674
- 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",
675
- key: "13bj9a"
676
- }
677
- ],
678
- ["path", { d: "m2 2 20 20", key: "1ooewy" }]
679
- ];
680
- var EyeOff = createLucideIcon("EyeOff", __iconNode11);
681
-
682
- // ../../node_modules/lucide-react/dist/esm/icons/eye.js
683
- var __iconNode12 = [
684
- [
685
- "path",
686
- {
687
- 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",
688
- key: "1nclc0"
689
- }
690
- ],
691
- ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
692
- ];
693
- var Eye = createLucideIcon("Eye", __iconNode12);
694
-
695
- // ../../node_modules/lucide-react/dist/esm/icons/info.js
696
- var __iconNode13 = [
697
- ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
698
- ["path", { d: "M12 16v-4", key: "1dtifu" }],
699
- ["path", { d: "M12 8h.01", key: "e9boi3" }]
700
- ];
701
- var Info = createLucideIcon("Info", __iconNode13);
702
-
703
- // ../../node_modules/lucide-react/dist/esm/icons/minus.js
704
- var __iconNode14 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
705
- var Minus = createLucideIcon("Minus", __iconNode14);
706
-
707
- // ../../node_modules/lucide-react/dist/esm/icons/phone.js
708
- var __iconNode15 = [
709
- [
710
- "path",
711
- {
712
- d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",
713
- key: "foiqr5"
714
- }
715
- ]
716
- ];
717
- var Phone = createLucideIcon("Phone", __iconNode15);
718
-
719
- // ../../node_modules/lucide-react/dist/esm/icons/x.js
720
- var __iconNode16 = [
721
- ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
722
- ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
723
- ];
724
- var X = createLucideIcon("X", __iconNode16);
725
542
  var DropdownMenu = DropdownMenuPrimitive__namespace.Root;
726
543
  var DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
727
544
  var DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
@@ -754,7 +571,7 @@ var DropdownMenuSubTrigger = React8__namespace.forwardRef(({ className, inset, c
754
571
  ...props,
755
572
  children: [
756
573
  children,
757
- /* @__PURE__ */ jsxRuntime.jsx(ChevronRight, { className: "nebula-ds ml-auto size-4" })
574
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "nebula-ds ml-auto size-4" })
758
575
  ]
759
576
  }
760
577
  ));
@@ -879,7 +696,7 @@ var DropdownMenuCheckboxItem = React8__namespace.forwardRef(({ className, childr
879
696
  checked,
880
697
  ...props,
881
698
  children: [
882
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { className: "nebula-ds absolute left-4 h-11 w-4 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Check, { className: "nebula-ds h-4 w-4" }) }),
699
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { className: "nebula-ds absolute left-4 h-11 w-4 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "nebula-ds h-4 w-4" }) }),
883
700
  children
884
701
  ]
885
702
  }
@@ -915,7 +732,7 @@ var DropdownMenuRadioItem = React8__namespace.forwardRef(({ className, children,
915
732
  ),
916
733
  ...props,
917
734
  children: [
918
- /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { className: "nebula-ds absolute left-4 flex h-11 w-2 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Circle, { className: "nebula-ds h-2 w-2 fill-current" }) }),
735
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { className: "nebula-ds absolute left-4 flex h-11 w-2 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "nebula-ds h-2 w-2 fill-current" }) }),
919
736
  children
920
737
  ]
921
738
  }
@@ -1327,15 +1144,22 @@ var messages3 = {
1327
1144
  };
1328
1145
  var input_phone_default = messages3;
1329
1146
 
1147
+ // src/i18n/messages/en/time-picker.ts
1148
+ var messages4 = {
1149
+ label: "Time"
1150
+ };
1151
+ var time_picker_default = messages4;
1152
+
1330
1153
  // src/i18n/messages/en/index.ts
1331
1154
  var enMessages = {
1332
1155
  pagination: pagination_default,
1333
1156
  inputSelect: input_select_default,
1334
- inputPhone: input_phone_default
1157
+ inputPhone: input_phone_default,
1158
+ timePicker: time_picker_default
1335
1159
  };
1336
1160
 
1337
1161
  // src/i18n/messages/es/pagination.ts
1338
- var messages4 = {
1162
+ var messages5 = {
1339
1163
  totalResultsLabel(pagesSize, totalResults) {
1340
1164
  if (totalResults < pagesSize) {
1341
1165
  pagesSize = totalResults;
@@ -1346,16 +1170,16 @@ var messages4 = {
1346
1170
  return `P\xE1gina ${currentPage} de ${totalPages}`;
1347
1171
  }
1348
1172
  };
1349
- var pagination_default2 = messages4;
1173
+ var pagination_default2 = messages5;
1350
1174
 
1351
1175
  // src/i18n/messages/es/input-select.ts
1352
- var messages5 = {
1176
+ var messages6 = {
1353
1177
  noOptions: "No hay opciones disponibles"
1354
1178
  };
1355
- var input_select_default2 = messages5;
1179
+ var input_select_default2 = messages6;
1356
1180
 
1357
1181
  // src/i18n/messages/es/input-phone.ts
1358
- var messages6 = {
1182
+ var messages7 = {
1359
1183
  countries: {
1360
1184
  empty: "Seleccionar",
1361
1185
  AF: "Afganist\xE1n",
@@ -1605,17 +1429,24 @@ var messages6 = {
1605
1429
  ZW: "Zimbabue"
1606
1430
  }
1607
1431
  };
1608
- var input_phone_default2 = messages6;
1432
+ var input_phone_default2 = messages7;
1433
+
1434
+ // src/i18n/messages/es/time-picker.ts
1435
+ var messages8 = {
1436
+ label: "Tiempo"
1437
+ };
1438
+ var time_picker_default2 = messages8;
1609
1439
 
1610
1440
  // src/i18n/messages/es/index.ts
1611
1441
  var esMessages = {
1612
1442
  pagination: pagination_default2,
1613
1443
  inputSelect: input_select_default2,
1614
- inputPhone: input_phone_default2
1444
+ inputPhone: input_phone_default2,
1445
+ timePicker: time_picker_default2
1615
1446
  };
1616
1447
 
1617
1448
  // src/i18n/messages/pt-br/pagination.ts
1618
- var messages7 = {
1449
+ var messages9 = {
1619
1450
  totalResultsLabel(pagesSize, totalResults) {
1620
1451
  if (totalResults < pagesSize) {
1621
1452
  pagesSize = totalResults;
@@ -1626,16 +1457,16 @@ var messages7 = {
1626
1457
  return `P\xE1gina ${currentPage} de ${totalPages}`;
1627
1458
  }
1628
1459
  };
1629
- var pagination_default3 = messages7;
1460
+ var pagination_default3 = messages9;
1630
1461
 
1631
1462
  // src/i18n/messages/pt-br/input-select.ts
1632
- var messages8 = {
1463
+ var messages10 = {
1633
1464
  noOptions: "Nenhuma op\xE7\xE3o dispon\xEDvel"
1634
1465
  };
1635
- var input_select_default3 = messages8;
1466
+ var input_select_default3 = messages10;
1636
1467
 
1637
1468
  // src/i18n/messages/pt-br/input-phone.ts
1638
- var messages9 = {
1469
+ var messages11 = {
1639
1470
  countries: {
1640
1471
  empty: "Selecione",
1641
1472
  AF: "Afeganist\xE3o",
@@ -1885,13 +1716,20 @@ var messages9 = {
1885
1716
  ZW: "Zimb\xE1bue"
1886
1717
  }
1887
1718
  };
1888
- var input_phone_default3 = messages9;
1719
+ var input_phone_default3 = messages11;
1720
+
1721
+ // src/i18n/messages/pt-br/time-picker.ts
1722
+ var messages12 = {
1723
+ label: "Hor\xE1rio"
1724
+ };
1725
+ var time_picker_default3 = messages12;
1889
1726
 
1890
1727
  // src/i18n/messages/pt-br/index.ts
1891
1728
  var ptBrMessages = {
1892
1729
  pagination: pagination_default3,
1893
1730
  inputSelect: input_select_default3,
1894
- inputPhone: input_phone_default3
1731
+ inputPhone: input_phone_default3,
1732
+ timePicker: time_picker_default3
1895
1733
  };
1896
1734
 
1897
1735
  // src/i18n/message-storage-handler.ts
@@ -1916,7 +1754,7 @@ var setNebulaLanguage = (language) => {
1916
1754
  }
1917
1755
  localStorage.setItem(getNebulaI18nStorageKey(), language);
1918
1756
  };
1919
- var messages10 = /* @__PURE__ */ new Map([
1757
+ var messages13 = /* @__PURE__ */ new Map([
1920
1758
  [null, enMessages],
1921
1759
  [void 0, enMessages],
1922
1760
  ["en-US", enMessages],
@@ -1934,14 +1772,14 @@ var NebulaI18nProvider = ({
1934
1772
  () => customI18nStorageKey ?? localStorageKey,
1935
1773
  [customI18nStorageKey]
1936
1774
  );
1937
- const [messages11, setMessages] = React8.useState(
1938
- messages10.get(getNebulaLanguage()) ?? messages10.get("en-US")
1775
+ const [messages14, setMessages] = React8.useState(
1776
+ messages13.get(getNebulaLanguage()) ?? messages13.get("en-US")
1939
1777
  );
1940
1778
  const handleStorageChange = React8.useCallback(
1941
1779
  ({ detail }) => {
1942
1780
  if (detail.key === storageKey) {
1943
1781
  setMessages(
1944
- messages10.get(detail.value) ?? messages10.get("en-US")
1782
+ messages13.get(detail.value) ?? messages13.get("en-US")
1945
1783
  );
1946
1784
  }
1947
1785
  },
@@ -1981,7 +1819,16 @@ var NebulaI18nProvider = ({
1981
1819
  localStorage.removeItem(localStorageKey);
1982
1820
  localStorage.setItem(customNebulaI18nStorageKey, customI18nStorageKey);
1983
1821
  }, [customI18nStorageKey]);
1984
- return /* @__PURE__ */ jsxRuntime.jsx(NebulaI18nContext.Provider, { value: { messages: messages11 }, children });
1822
+ return /* @__PURE__ */ jsxRuntime.jsx(
1823
+ NebulaI18nContext.Provider,
1824
+ {
1825
+ value: {
1826
+ messages: messages14,
1827
+ locale: getNebulaLanguage()
1828
+ },
1829
+ children
1830
+ }
1831
+ );
1985
1832
  };
1986
1833
  var useNebulaI18n = () => {
1987
1834
  const context = React8.useContext(NebulaI18nContext);
@@ -1998,7 +1845,7 @@ var Pagination = ({
1998
1845
  onChangePage,
1999
1846
  ...props
2000
1847
  }) => {
2001
- const { messages: messages11 } = useNebulaI18n();
1848
+ const { messages: messages14 } = useNebulaI18n();
2002
1849
  const totalPages = React8.useMemo(() => {
2003
1850
  return Math.ceil(total / (pageSize || 1));
2004
1851
  }, [total, pageSize]);
@@ -2031,13 +1878,13 @@ var Pagination = ({
2031
1878
  }, [totalPages, pageSize, total]);
2032
1879
  const totalResultsLabel = React8.useMemo(() => {
2033
1880
  if (page === totalPages) {
2034
- return messages11.pagination.totalResultsLabel(lastPageSize, total);
1881
+ return messages14.pagination.totalResultsLabel(lastPageSize, total);
2035
1882
  }
2036
- return messages11.pagination.totalResultsLabel(pageSize, total);
2037
- }, [messages11.pagination, pageSize, total, page, totalPages, lastPageSize]);
1883
+ return messages14.pagination.totalResultsLabel(pageSize, total);
1884
+ }, [messages14.pagination, pageSize, total, page, totalPages, lastPageSize]);
2038
1885
  const currentPageLabel = React8.useMemo(
2039
- () => messages11.pagination.currentPageLabel(normalizedPage, totalPages),
2040
- [messages11.pagination, normalizedPage, totalPages]
1886
+ () => messages14.pagination.currentPageLabel(normalizedPage, totalPages),
1887
+ [messages14.pagination, normalizedPage, totalPages]
2041
1888
  );
2042
1889
  return /* @__PURE__ */ jsxRuntime.jsxs(
2043
1890
  "nav",
@@ -2157,7 +2004,7 @@ var PaginationButtonFirstPage = ({ ...props }) => /* @__PURE__ */ jsxRuntime.jsx
2157
2004
  "aria-label": "Go to previous chunk",
2158
2005
  "data-testid": "nebula-pagination-button-first-page",
2159
2006
  ...props,
2160
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronsLeft, { className: "nebula-ds h-4 w-4" })
2007
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsLeft, { className: "nebula-ds h-4 w-4" })
2161
2008
  }
2162
2009
  );
2163
2010
  PaginationButtonFirstPage.displayName = "PaginationButtonFirstPage";
@@ -2169,7 +2016,7 @@ var PaginationButtonPreviousPage = ({
2169
2016
  "aria-label": "Go to previous page",
2170
2017
  "data-testid": "nebula-pagination-button-previous-page",
2171
2018
  ...props,
2172
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft, { className: "nebula-ds h-4" })
2019
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "nebula-ds h-4" })
2173
2020
  }
2174
2021
  );
2175
2022
  PaginationButtonPreviousPage.displayName = "PaginationButtonPreviousPage";
@@ -2181,7 +2028,7 @@ var PaginationButtonNextPage = ({
2181
2028
  "aria-label": "Go to next page",
2182
2029
  "data-testid": "nebula-pagination-button-next-page",
2183
2030
  ...props,
2184
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight, { className: "nebula-ds h-4" })
2031
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "nebula-ds h-4" })
2185
2032
  }
2186
2033
  );
2187
2034
  PaginationButtonNextPage.displayName = "PaginationButtonNextPage";
@@ -2191,7 +2038,7 @@ var PaginationButtonLastPage = ({ ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
2191
2038
  "aria-label": "Go to next chunk",
2192
2039
  "data-testid": "nebula-pagination-button-last-page",
2193
2040
  ...props,
2194
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronsRight, { className: "nebula-ds h-4 w-4" })
2041
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsRight, { className: "nebula-ds h-4 w-4" })
2195
2042
  }
2196
2043
  );
2197
2044
  PaginationButtonLastPage.displayName = "PaginationButtonLastPage";
@@ -2231,23 +2078,23 @@ var Tag = React8__namespace.forwardRef(
2231
2078
  children: [
2232
2079
  color2 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(tagVariantsConfig({ color: color2 })) }),
2233
2080
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds text-tag-text text-xs font-medium px-1 leading-none", children }),
2234
- onDelete && /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: onDelete, children: /* @__PURE__ */ jsxRuntime.jsx(CircleX, { className: "nebula-ds w-3 h-3 block rounded-sm text-tag-icon" }) })
2081
+ onDelete && /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: onDelete, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleX, { className: "nebula-ds w-3 h-3 block rounded-sm text-tag-icon" }) })
2235
2082
  ]
2236
2083
  }
2237
2084
  );
2238
2085
  }
2239
2086
  );
2240
2087
  Tag.displayName = "Tag";
2241
- var DropdownIndicator = (props) => /* @__PURE__ */ jsxRuntime.jsx(Select.components.DropdownIndicator, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDown, { size: "16px" }) });
2088
+ var DropdownIndicator = (props) => /* @__PURE__ */ jsxRuntime.jsx(Select.components.DropdownIndicator, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { size: "16px" }) });
2242
2089
  var ClearIndicator = (props) => /* @__PURE__ */ jsxRuntime.jsx(
2243
2090
  Select.components.ClearIndicator,
2244
2091
  {
2245
2092
  ...props,
2246
2093
  className: cn(props.className, "cursor-pointer"),
2247
- children: /* @__PURE__ */ jsxRuntime.jsx(X, { size: "16px" })
2094
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { size: "16px" })
2248
2095
  }
2249
2096
  );
2250
- var MultiValueRemove = (props) => /* @__PURE__ */ jsxRuntime.jsx(Select.components.MultiValueRemove, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx(CircleX, { size: "16px" }) });
2097
+ var MultiValueRemove = (props) => /* @__PURE__ */ jsxRuntime.jsx(Select.components.MultiValueRemove, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleX, { size: "16px" }) });
2251
2098
  var Option = (props) => {
2252
2099
  const { isSelected, data, innerRef, innerProps } = props;
2253
2100
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2273,7 +2120,7 @@ var Option = (props) => {
2273
2120
  }
2274
2121
  ),
2275
2122
  children: [
2276
- isSelected && /* @__PURE__ */ jsxRuntime.jsx(Check, { size: "16px" }),
2123
+ isSelected && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { size: "16px" }),
2277
2124
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: data.label })
2278
2125
  ]
2279
2126
  }
@@ -2310,7 +2157,7 @@ var createStyledSelect = (BaseSelect, displayName) => {
2310
2157
  isError = false,
2311
2158
  ...props
2312
2159
  }) => {
2313
- const { messages: messages11 } = useNebulaI18n();
2160
+ const { messages: messages14 } = useNebulaI18n();
2314
2161
  const customClassNames = React8.useMemo(() => {
2315
2162
  return {
2316
2163
  control: (props2) => controlStyles(props2, isError),
@@ -2357,7 +2204,7 @@ var createStyledSelect = (BaseSelect, displayName) => {
2357
2204
  isDisabled: disabled,
2358
2205
  components: customComponents,
2359
2206
  classNames: customClassNames,
2360
- noOptionsMessage: () => /* @__PURE__ */ jsxRuntime.jsx("p", { children: messages11.inputSelect.noOptions }),
2207
+ noOptionsMessage: () => /* @__PURE__ */ jsxRuntime.jsx("p", { children: messages14.inputSelect.noOptions }),
2361
2208
  ...props
2362
2209
  }
2363
2210
  );
@@ -2373,7 +2220,15 @@ var StyledAsyncCreatable = createStyledSelect(
2373
2220
  "AsyncCreatable"
2374
2221
  );
2375
2222
  var InputText = React8__namespace.forwardRef(
2376
- ({ className, icon, isError = false, onClean, ...props }, ref) => {
2223
+ ({
2224
+ className,
2225
+ icon,
2226
+ isError = false,
2227
+ onClean,
2228
+ iconPlacement = "start",
2229
+ disabled,
2230
+ ...props
2231
+ }, ref) => {
2377
2232
  const initialInputType = props.type || "text";
2378
2233
  const [type, setType] = React8__namespace.useState(initialInputType);
2379
2234
  const iconClass = {
@@ -2381,60 +2236,79 @@ var InputText = React8__namespace.forwardRef(
2381
2236
  "text-inputText-icon-default focus:text-inputText-icon-focus": !isError && !props.value,
2382
2237
  "text-inputText-icon-filled focus:text-inputText-icon-filled": !isError && !!props.value
2383
2238
  };
2384
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds relative w-full", children: [
2385
- icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds absolute left-4 top-1/2 transform -translate-y-1/2", children: /* @__PURE__ */ jsxRuntime.jsx(
2386
- "span",
2387
- {
2388
- className: cn(
2389
- "w-4 h-4 flex items-center justify-center disabled:text-inputText-icon-disabled",
2390
- iconClass
2239
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2240
+ "div",
2241
+ {
2242
+ className: cn("relative w-full", {
2243
+ "pointer-events-none": disabled
2244
+ }),
2245
+ children: [
2246
+ /* @__PURE__ */ jsxRuntime.jsx(
2247
+ "input",
2248
+ {
2249
+ ref,
2250
+ className: cn(
2251
+ "w-full h-10 outline-none rounded-input text-sm leading-none font-medium",
2252
+ "bg-inputText-background-default disabled:bg-inputText-background-disabled",
2253
+ "border border-inputText-border-default focus:ring-[3px] focus:ring-inputText-border-focus focus:border-inputText-border-focus",
2254
+ "text-inputText-text-filled focus:text-inputText-text-focus placeholder:text-inputText-text-default disabled:text-inputText-text-disabled",
2255
+ "disabled:cursor-not-allowed",
2256
+ {
2257
+ "pl-10 pr-4": !!icon && iconPlacement === "start",
2258
+ "pr-10 pl-4": !!icon && iconPlacement === "end" && initialInputType !== "password",
2259
+ "px-4": !icon,
2260
+ "border-inputText-border-danger focus:border-inputText-border-danger focus:ring-button-danger-border-focus": isError
2261
+ },
2262
+ className
2263
+ ),
2264
+ ...props,
2265
+ disabled,
2266
+ type
2267
+ }
2391
2268
  ),
2392
- children: icon
2393
- }
2394
- ) }),
2395
- /* @__PURE__ */ jsxRuntime.jsx(
2396
- "input",
2397
- {
2398
- ref,
2399
- className: cn(
2400
- "w-full h-10 outline-none rounded-input text-sm leading-none font-medium",
2401
- "bg-inputText-background-default disabled:bg-inputText-background-disabled",
2402
- "border border-inputText-border-default focus:ring-[3px] focus:ring-inputText-border-focus focus:border-inputText-border-focus",
2403
- "text-inputText-text-filled focus:text-inputText-text-focus placeholder:text-inputText-text-default disabled:text-inputText-text-disabled",
2404
- "disabled:cursor-not-allowed",
2269
+ onClean && props.value && /* @__PURE__ */ jsxRuntime.jsx(
2270
+ "button",
2405
2271
  {
2406
- "pl-10 pr-4": !!icon,
2407
- "px-4": !icon,
2408
- "border-inputText-border-danger focus:border-inputText-border-danger focus:ring-button-danger-border-focus": isError
2409
- },
2410
- className
2272
+ type: "button",
2273
+ className: cn("absolute top-1/2 transform -translate-y-1/2", {
2274
+ "right-10": initialInputType === "password" || iconPlacement === "end",
2275
+ "right-4": initialInputType === "text" && iconPlacement === "start"
2276
+ }),
2277
+ onClick: onClean,
2278
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleX, { className: cn("w-4 h-4", iconClass) })
2279
+ }
2411
2280
  ),
2412
- ...props,
2413
- type
2414
- }
2415
- ),
2416
- onClean && props.value && /* @__PURE__ */ jsxRuntime.jsx(
2417
- "button",
2418
- {
2419
- type: "button",
2420
- className: cn("absolute top-1/2 transform -translate-y-1/2", {
2421
- "right-10": initialInputType === "password",
2422
- "right-4": initialInputType === "text"
2423
- }),
2424
- onClick: onClean,
2425
- children: /* @__PURE__ */ jsxRuntime.jsx(CircleX, { className: cn("w-4 h-4", iconClass) })
2426
- }
2427
- ),
2428
- initialInputType === "password" && /* @__PURE__ */ jsxRuntime.jsx(
2429
- "button",
2430
- {
2431
- type: "button",
2432
- className: "nebula-ds absolute right-4 top-1/2 transform -translate-y-1/2",
2433
- onClick: () => setType((prev) => prev === "text" ? "password" : "text"),
2434
- children: type === "text" ? /* @__PURE__ */ jsxRuntime.jsx(Eye, { className: cn("w-4 h-4", iconClass) }) : /* @__PURE__ */ jsxRuntime.jsx(EyeOff, { className: cn("w-4 h-4", iconClass) })
2435
- }
2436
- )
2437
- ] });
2281
+ initialInputType === "password" && /* @__PURE__ */ jsxRuntime.jsx(
2282
+ "button",
2283
+ {
2284
+ type: "button",
2285
+ className: "nebula-ds absolute right-4 top-1/2 transform -translate-y-1/2",
2286
+ onClick: () => setType((prev) => prev === "text" ? "password" : "text"),
2287
+ children: type === "text" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: cn("w-4 h-4", iconClass) }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.EyeOff, { className: cn("w-4 h-4", iconClass) })
2288
+ }
2289
+ ),
2290
+ icon && /* @__PURE__ */ jsxRuntime.jsx(
2291
+ "span",
2292
+ {
2293
+ className: cn("absolute top-1/2 transform -translate-y-1/2", {
2294
+ "left-4": iconPlacement === "start",
2295
+ "right-4": iconPlacement === "end" && initialInputType !== "password"
2296
+ }),
2297
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2298
+ "span",
2299
+ {
2300
+ className: cn(
2301
+ "w-4 h-4 flex items-center justify-center disabled:text-inputText-icon-disabled",
2302
+ iconClass
2303
+ ),
2304
+ children: icon
2305
+ }
2306
+ )
2307
+ }
2308
+ )
2309
+ ]
2310
+ }
2311
+ );
2438
2312
  }
2439
2313
  );
2440
2314
  InputText.displayName = "InputText";
@@ -2508,7 +2382,7 @@ var DialogContent = React8__namespace.forwardRef(({ className, children, portal
2508
2382
  right-4
2509
2383
  top-4`,
2510
2384
  children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "ghost", size: "sm", icon: true, children: [
2511
- /* @__PURE__ */ jsxRuntime.jsx(X, { className: "nebula-ds !h-4 !w-4 !text-dialog-icon" }),
2385
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "nebula-ds !h-4 !w-4 !text-dialog-icon" }),
2512
2386
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds sr-only", children: "Close" })
2513
2387
  ] })
2514
2388
  }
@@ -2699,7 +2573,7 @@ var Checkbox = React8__namespace.forwardRef(({ className, ...props }, ref) => /*
2699
2573
  CheckboxPrimitive__namespace.Indicator,
2700
2574
  {
2701
2575
  className: cn("flex items-center justify-center text-current"),
2702
- children: props.variant === "multiselect" ? /* @__PURE__ */ jsxRuntime.jsx(Minus, { className: "nebula-ds h-3 w-3" }) : /* @__PURE__ */ jsxRuntime.jsx(Check, { className: "nebula-ds h-3 w-3" })
2576
+ children: props.variant === "multiselect" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minus, { className: "nebula-ds h-3 w-3" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "nebula-ds h-3 w-3" })
2703
2577
  }
2704
2578
  )
2705
2579
  }
@@ -2761,7 +2635,7 @@ var DrawerHeader = ({
2761
2635
  return /* @__PURE__ */ jsxRuntime.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: [
2762
2636
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds flex gap-2", children: [
2763
2637
  /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { size: "sm", variant: "ghost", icon: true, tabIndex: -1, children: [
2764
- /* @__PURE__ */ jsxRuntime.jsx(X, { className: "nebula-ds !h-4 !w-4" }),
2638
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "nebula-ds !h-4 !w-4" }),
2765
2639
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds sr-only", children: "Close" })
2766
2640
  ] }) }),
2767
2641
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2889,7 +2763,7 @@ var BreadcrumbSeparator = ({
2889
2763
  "aria-hidden": "true",
2890
2764
  className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className),
2891
2765
  ...props,
2892
- children: children ?? /* @__PURE__ */ jsxRuntime.jsx(ChevronRight, {})
2766
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, {})
2893
2767
  }
2894
2768
  );
2895
2769
  BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
@@ -2907,7 +2781,7 @@ var BreadcrumbEllipsis = ({
2907
2781
  ),
2908
2782
  ...props,
2909
2783
  children: [
2910
- /* @__PURE__ */ jsxRuntime.jsx(Ellipsis, { className: "nebula-ds h-3 w-3" }),
2784
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "nebula-ds h-3 w-3" }),
2911
2785
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds sr-only", children: "More" })
2912
2786
  ]
2913
2787
  }
@@ -3060,7 +2934,7 @@ function AccordionTrigger({
3060
2934
  children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3061
2935
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds flex flex-col gap-2", children }),
3062
2936
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds flex items-center justify-center w-5 h-5", children: /* @__PURE__ */ jsxRuntime.jsx(
3063
- ChevronDown,
2937
+ lucideReact.ChevronDown,
3064
2938
  {
3065
2939
  "data-slot": "accordion-icon",
3066
2940
  className: "nebula-ds text-accordion-icon w-4 h-4"
@@ -3264,9 +3138,9 @@ function ToastComponent({
3264
3138
  size: 20
3265
3139
  }) : null;
3266
3140
  const typeIcons = {
3267
- success: /* @__PURE__ */ jsxRuntime.jsx(CircleCheckBig, { className: "nebula-ds text-toast-icon-default", size: 20 }),
3268
- error: /* @__PURE__ */ jsxRuntime.jsx(CircleX, { className: "nebula-ds text-toast-icon-error", size: 20 }),
3269
- info: /* @__PURE__ */ jsxRuntime.jsx(Info, { className: "nebula-ds text-toast-icon-default", size: 20 }),
3141
+ success: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheckBig, { className: "nebula-ds text-toast-icon-default", size: 20 }),
3142
+ error: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleX, { className: "nebula-ds text-toast-icon-error", size: 20 }),
3143
+ info: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Info, { className: "nebula-ds text-toast-icon-default", size: 20 }),
3270
3144
  custom: CustomIcon
3271
3145
  };
3272
3146
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds w-[400px] bg-toast-background border border-toast-border rounded-xl p-4 flex items-start justify-start gap-2 shadow-md", children: [
@@ -3286,7 +3160,7 @@ function ToastComponent({
3286
3160
  }
3287
3161
  ) })
3288
3162
  ] }),
3289
- /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: () => sonner.toast.dismiss(t), children: /* @__PURE__ */ jsxRuntime.jsx(X, { className: "nebula-ds text-toast-icon-default", size: 20 }) })
3163
+ /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: () => sonner.toast.dismiss(t), children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "nebula-ds text-toast-icon-default", size: 20 }) })
3290
3164
  ] });
3291
3165
  }
3292
3166
  function success(message, options) {
@@ -3333,13 +3207,13 @@ function custom(message, options) {
3333
3207
  }
3334
3208
  );
3335
3209
  }
3336
- async function promise(promise2, messages11, options) {
3210
+ async function promise(promise2, messages14, options) {
3337
3211
  const loadingToast = sonner.toast.custom(
3338
3212
  (t) => /* @__PURE__ */ jsxRuntime.jsx(
3339
3213
  ToastComponent,
3340
3214
  {
3341
3215
  type: "info",
3342
- message: messages11.loading,
3216
+ message: messages14.loading,
3343
3217
  options,
3344
3218
  t
3345
3219
  }
@@ -3353,7 +3227,7 @@ async function promise(promise2, messages11, options) {
3353
3227
  ToastComponent,
3354
3228
  {
3355
3229
  type: "success",
3356
- message: messages11.success,
3230
+ message: messages14.success,
3357
3231
  options,
3358
3232
  t
3359
3233
  }
@@ -3368,7 +3242,7 @@ async function promise(promise2, messages11, options) {
3368
3242
  ToastComponent,
3369
3243
  {
3370
3244
  type: "error",
3371
- message: messages11.error,
3245
+ message: messages14.error,
3372
3246
  options,
3373
3247
  t
3374
3248
  }
@@ -3538,12 +3412,12 @@ var CountrySelect = ({
3538
3412
  const handleSelect = (event) => {
3539
3413
  onChange(event.target.value);
3540
3414
  };
3541
- const { messages: messages11 } = useNebulaI18n();
3542
- const { countries } = messages11.inputPhone;
3415
+ const { messages: messages14 } = useNebulaI18n();
3416
+ const { countries } = messages14.inputPhone;
3543
3417
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds rounded-s-[20px] relative inline-flex items-center self-stretch py-2 ps-4 pe-2 transition-[color,box-shadow] outline-none has-disabled:pointer-events-none has-disabled:opacity-50", children: [
3544
3418
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds inline-flex items-center gap-1", "aria-hidden": "true", children: [
3545
3419
  /* @__PURE__ */ jsxRuntime.jsx(FlagComponent, { country: value, countryName: value, "aria-hidden": "true" }),
3546
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds text-inputText-text-filled focus:text-inputText-text-focus", children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDown, { size: 16, "aria-hidden": "true" }) })
3420
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds text-inputText-text-filled focus:text-inputText-text-focus", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { size: 16, "aria-hidden": "true" }) })
3547
3421
  ] }),
3548
3422
  /* @__PURE__ */ jsxRuntime.jsxs(
3549
3423
  "select",
@@ -3567,7 +3441,7 @@ var CountrySelect = ({
3567
3441
  };
3568
3442
  var FlagComponent = ({ country, countryName }) => {
3569
3443
  const Flag = flags__default.default[country];
3570
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds w-5 overflow-hidden rounded-sm", children: Flag ? /* @__PURE__ */ jsxRuntime.jsx(Flag, { title: countryName }) : /* @__PURE__ */ jsxRuntime.jsx(Phone, { size: 16, "aria-hidden": "true" }) });
3444
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds w-5 overflow-hidden rounded-sm", children: Flag ? /* @__PURE__ */ jsxRuntime.jsx(Flag, { title: countryName }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PhoneIcon, { size: 16, "aria-hidden": "true" }) });
3571
3445
  };
3572
3446
  var PhoneInput = React8__namespace.default.forwardRef(({ className, ...props }, ref) => {
3573
3447
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds flex items-center justify-center rounded-e-[20px] w-full", children: [
@@ -3675,6 +3549,741 @@ var Skeleton = React8__namespace.default.forwardRef(
3675
3549
  }
3676
3550
  );
3677
3551
  Skeleton.displayName = "Skeleton";
3552
+ var MONTHS = [
3553
+ "01/01",
3554
+ "02/01",
3555
+ "03/01",
3556
+ "04/01",
3557
+ "05/01",
3558
+ "06/01",
3559
+ "07/01",
3560
+ "08/01",
3561
+ "09/01",
3562
+ "10/01",
3563
+ "11/01",
3564
+ "12/01"
3565
+ ];
3566
+ var localeByi18nKey = {
3567
+ es: locale.es,
3568
+ "en-US": locale.enUS,
3569
+ "pt-BR": locale.ptBR
3570
+ };
3571
+ var Calendar = ({
3572
+ numberOfMonths = 1,
3573
+ hideNavigation = false,
3574
+ month,
3575
+ onNextClick,
3576
+ onPrevClick,
3577
+ components: calendarComponents,
3578
+ ...props
3579
+ }) => {
3580
+ const { locale } = useNebulaI18n();
3581
+ const [selectedMonth, setSelectedMonth] = React8.useState(/* @__PURE__ */ new Date());
3582
+ const [showMonthGridSelection, setShowMonthGridSelection] = React8.useState(false);
3583
+ const isRange = props.mode === "range";
3584
+ const currentMonth = React8.useMemo(
3585
+ () => month ?? selectedMonth,
3586
+ [month, selectedMonth]
3587
+ );
3588
+ const handleSelectMonthByOption = React8.useCallback(
3589
+ (monthOption) => {
3590
+ setShowMonthGridSelection(false);
3591
+ const calendarDate = currentMonth;
3592
+ currentMonth.setMonth(monthOption.getMonth());
3593
+ if (typeof month !== "undefined") {
3594
+ onNextClick?.(calendarDate);
3595
+ } else {
3596
+ setSelectedMonth(calendarDate);
3597
+ }
3598
+ },
3599
+ [currentMonth, month, onNextClick]
3600
+ );
3601
+ const components2 = React8.useMemo(() => {
3602
+ return {
3603
+ Day(props2) {
3604
+ const {
3605
+ selected,
3606
+ range_end: rangeEnd,
3607
+ range_start: rangeStart
3608
+ } = props2.modifiers;
3609
+ const isSaturday = props2.day.date.getDay() === 0;
3610
+ const isSunday = props2.day.date.getDay() === 6;
3611
+ return /* @__PURE__ */ jsxRuntime.jsx(
3612
+ "td",
3613
+ {
3614
+ ...props2,
3615
+ className: cn(props2.className, "!w-9 !h-9 !p-0", {
3616
+ "rounded-r-full": isSunday && selected || rangeEnd,
3617
+ "rounded-l-full": isSaturday && selected || rangeStart,
3618
+ "!bg-calendar-rowSelected-background [&>button]:!border-none": selected && isRange
3619
+ })
3620
+ }
3621
+ );
3622
+ },
3623
+ DayButton(props2) {
3624
+ const {
3625
+ outside,
3626
+ today,
3627
+ selected,
3628
+ range_middle: rangeMiddle,
3629
+ range_end: rangeEnd,
3630
+ range_start: rangeStart
3631
+ } = props2.modifiers;
3632
+ return /* @__PURE__ */ jsxRuntime.jsx(
3633
+ "button",
3634
+ {
3635
+ ...props2,
3636
+ tabIndex: 0,
3637
+ className: cn(props2.className, "!w-9 !h-9", {
3638
+ "!text-calendar-day-color": !outside,
3639
+ "!text-calendar-outsideDay-color !opacity-1": outside,
3640
+ "!bg-calendar-daySelected-background !border-calendar-daySelected-background !text-calendar-daySelected-color rounded-full": (selected || rangeEnd || rangeStart) && !rangeMiddle
3641
+ }),
3642
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
3643
+ "div",
3644
+ {
3645
+ className: cn({
3646
+ "flex flex-col relative items-center text-inherit": today
3647
+ }),
3648
+ children: [
3649
+ /* @__PURE__ */ jsxRuntime.jsx(
3650
+ Paragraph,
3651
+ {
3652
+ size: "md",
3653
+ className: "!font-medium !text-inherit text-center",
3654
+ children: props2.children
3655
+ }
3656
+ ),
3657
+ today && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds !bg-calendar-today-dotColor w-1 h-1 rounded-full absolute -bottom-[2px]" })
3658
+ ]
3659
+ }
3660
+ )
3661
+ }
3662
+ );
3663
+ },
3664
+ MonthCaption({ calendarMonth, displayIndex, ...rest }) {
3665
+ const handleNextMonth = () => {
3666
+ const newMonth = dateFns.addMonths(
3667
+ calendarMonth.date,
3668
+ props.pagedNavigation || numberOfMonths === 1 ? 1 : 0
3669
+ );
3670
+ if (typeof month !== "undefined") {
3671
+ onNextClick?.(newMonth);
3672
+ return;
3673
+ }
3674
+ setSelectedMonth(newMonth);
3675
+ };
3676
+ const handlePreviousMonth = () => {
3677
+ const newMonth = dateFns.addMonths(
3678
+ calendarMonth.date,
3679
+ props.pagedNavigation ? -2 : -1
3680
+ );
3681
+ if (typeof month !== "undefined") {
3682
+ onPrevClick?.(newMonth);
3683
+ return;
3684
+ }
3685
+ setSelectedMonth(newMonth);
3686
+ };
3687
+ const handleToggleShowMonthGridSelection = () => {
3688
+ setShowMonthGridSelection((s) => !s);
3689
+ };
3690
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3691
+ "div",
3692
+ {
3693
+ className: cn("flex justify-between items-center !h-9", {
3694
+ "ps-3": numberOfMonths === 1
3695
+ }),
3696
+ children: [
3697
+ !hideNavigation && numberOfMonths > 1 && /* @__PURE__ */ jsxRuntime.jsx(
3698
+ Button,
3699
+ {
3700
+ icon: true,
3701
+ size: "sm",
3702
+ variant: "ghost",
3703
+ onClick: handlePreviousMonth,
3704
+ className: cn({
3705
+ "pointer-events-none invisible": displayIndex === 1
3706
+ }),
3707
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeftIcon, { className: "nebula-ds !w-[unset] !h-[unset]" })
3708
+ }
3709
+ ),
3710
+ /* @__PURE__ */ jsxRuntime.jsx(
3711
+ "div",
3712
+ {
3713
+ ...rest,
3714
+ className: cn(
3715
+ rest.className,
3716
+ "!h-auto select-none ",
3717
+ numberOfMonths > 1 && "pointer-events-none"
3718
+ ),
3719
+ role: "button",
3720
+ onClick: handleToggleShowMonthGridSelection,
3721
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Space, { size: "xs", className: "nebula-ds items-center", children: [
3722
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds !text-calendar-month-label !text-sm !font-semibold", children: dateFns.formatDate(calendarMonth.date, "LLL yyyy", {
3723
+ locale: localeByi18nKey[locale ?? "en-US"]
3724
+ }).replace(/^./, (char) => char.toUpperCase()) }),
3725
+ numberOfMonths === 1 && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: "nebula-ds !text-calendar-month-selectionChevron" })
3726
+ ] })
3727
+ }
3728
+ ),
3729
+ !hideNavigation && numberOfMonths === 1 && !showMonthGridSelection && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds flex gap-x-1", children: [
3730
+ /* @__PURE__ */ jsxRuntime.jsx(
3731
+ Button,
3732
+ {
3733
+ icon: true,
3734
+ size: "sm",
3735
+ variant: "ghost",
3736
+ onClick: handlePreviousMonth,
3737
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeftIcon, { className: "nebula-ds !w-[unset] !h-[unset] !text-calendar-month-navigator" })
3738
+ }
3739
+ ),
3740
+ /* @__PURE__ */ jsxRuntime.jsx(
3741
+ Button,
3742
+ {
3743
+ icon: true,
3744
+ size: "sm",
3745
+ variant: "ghost",
3746
+ onClick: handleNextMonth,
3747
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRightIcon, { className: "nebula-ds !w-[unset] !h-[unset] !text-calendar-month-navigator" })
3748
+ }
3749
+ )
3750
+ ] }),
3751
+ !hideNavigation && numberOfMonths > 1 && /* @__PURE__ */ jsxRuntime.jsx(
3752
+ Button,
3753
+ {
3754
+ icon: true,
3755
+ size: "sm",
3756
+ variant: "ghost",
3757
+ onClick: handleNextMonth,
3758
+ className: cn({
3759
+ "pointer-events-none invisible": displayIndex !== numberOfMonths - 1
3760
+ }),
3761
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRightIcon, { className: "nebula-ds !w-[unset] !h-[unset]" })
3762
+ }
3763
+ )
3764
+ ]
3765
+ }
3766
+ );
3767
+ },
3768
+ MonthGrid(props2) {
3769
+ if (!showMonthGridSelection) {
3770
+ return /* @__PURE__ */ jsxRuntime.jsx("table", { ...props2 });
3771
+ }
3772
+ return /* @__PURE__ */ jsxRuntime.jsx(
3773
+ Box,
3774
+ {
3775
+ className: "nebula-ds z-40 !p-0 flex gap-2 flex-col justify-between w-full",
3776
+ border: false,
3777
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds z-40 grid grid-cols-2 gap-1 bg-inherit pt-2", children: MONTHS.map((monthOption) => {
3778
+ const monthOptionAsDate = new Date(monthOption);
3779
+ const isSelectedMonth = month ? month.getMonth() === monthOptionAsDate.getMonth() : monthOptionAsDate.getMonth() === currentMonth.getMonth();
3780
+ const monthLabel = dateFns.formatDate(monthOptionAsDate, "LLLL", {
3781
+ locale: localeByi18nKey[locale ?? "en-US"]
3782
+ });
3783
+ return /* @__PURE__ */ jsxRuntime.jsx(
3784
+ Button,
3785
+ {
3786
+ variant: isSelectedMonth ? "primary" : "secondary",
3787
+ type: "button",
3788
+ className: cn("rounded-lg", {
3789
+ "border-neutral-200 dark:border-neutral-800": !isSelectedMonth
3790
+ }),
3791
+ size: "md",
3792
+ onClick: () => handleSelectMonthByOption(monthOptionAsDate),
3793
+ children: monthLabel
3794
+ },
3795
+ monthLabel
3796
+ );
3797
+ }) })
3798
+ }
3799
+ );
3800
+ },
3801
+ Months(props2) {
3802
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props2, className: cn(props2.className, "gap-2 flex p-2") });
3803
+ },
3804
+ Month(props2) {
3805
+ return /* @__PURE__ */ jsxRuntime.jsx(
3806
+ "div",
3807
+ {
3808
+ ...props2,
3809
+ className: cn(
3810
+ props2.className,
3811
+ "[&:not(:last-child)]:pr-2 [&:not(:last-child)]:border-neutral-200 [&:not(:last-child)]:border-r dark:[&:not(:last-child)]:border-neutral-800"
3812
+ )
3813
+ }
3814
+ );
3815
+ },
3816
+ Week(props2) {
3817
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3818
+ /* @__PURE__ */ jsxRuntime.jsx("tr", { ...props2, className: cn(props2.className) }),
3819
+ /* @__PURE__ */ jsxRuntime.jsx("tr", { className: "nebula-ds h-1 last:h-0" })
3820
+ ] });
3821
+ },
3822
+ Weekdays(props2) {
3823
+ return /* @__PURE__ */ jsxRuntime.jsx("tr", { ...props2 });
3824
+ },
3825
+ Weekday(props2) {
3826
+ return /* @__PURE__ */ jsxRuntime.jsx(
3827
+ "th",
3828
+ {
3829
+ ...props2,
3830
+ className: cn(
3831
+ props2.className,
3832
+ "font-medium text-xs !text-calendar-weekDay-color"
3833
+ ),
3834
+ children: String(props2.children)?.toUpperCase()?.[0]
3835
+ }
3836
+ );
3837
+ },
3838
+ Footer(props2) {
3839
+ if (showMonthGridSelection) return void 0;
3840
+ return /* @__PURE__ */ jsxRuntime.jsx(
3841
+ "div",
3842
+ {
3843
+ ...props2,
3844
+ className: cn(props2.className, "p-3 border-t border-t-box-border")
3845
+ }
3846
+ );
3847
+ },
3848
+ ...calendarComponents
3849
+ };
3850
+ }, [
3851
+ calendarComponents,
3852
+ isRange,
3853
+ currentMonth,
3854
+ handleSelectMonthByOption,
3855
+ hideNavigation,
3856
+ locale,
3857
+ month,
3858
+ numberOfMonths,
3859
+ onNextClick,
3860
+ onPrevClick,
3861
+ props.pagedNavigation,
3862
+ showMonthGridSelection
3863
+ ]);
3864
+ return /* @__PURE__ */ jsxRuntime.jsx(
3865
+ Box,
3866
+ {
3867
+ border: true,
3868
+ className: cn("p-0 w-fit", numberOfMonths === 1 && "w-[270px]"),
3869
+ shadow: "md",
3870
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3871
+ reactDayPicker.DayPicker,
3872
+ {
3873
+ showOutsideDays: true,
3874
+ mode: "single",
3875
+ animate: false,
3876
+ ...props,
3877
+ month: month ?? selectedMonth,
3878
+ hideNavigation: true,
3879
+ numberOfMonths: Math.min(Math.max(numberOfMonths, 1), 2),
3880
+ components: components2,
3881
+ locale: localeByi18nKey[locale ?? "en-US"],
3882
+ footer: showMonthGridSelection ? void 0 : props.footer
3883
+ }
3884
+ )
3885
+ }
3886
+ );
3887
+ };
3888
+
3889
+ // src/utils/valid-date-format.ts
3890
+ function dateFormatIsValid(dateStr, locale) {
3891
+ const regexBR = /^(?:(?:31\/(0[13578]|1[02]))\/(?:\d{4})|(?:29|30)\/(0[13-9]|1[0-2])\/(?:\d{4})|29\/02\/(?:\d\d(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)|(?:0[1-9]|1\d|2[0-8])\/(0[1-9]|1[0-2])\/(?:\d{4}))$/;
3892
+ const regexUS = /^(?:(?:(0[13578]|1[02])\/31)\/(?:\d{4})|(?:(0[13-9]|1[0-2])\/(29|30))\/(?:\d{4})|(?:02\/29)\/(?:\d\d(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)|(?:(0[1-9]|1[0-2])\/(0[1-9]|1\d|2[0-8]))\/(?:\d{4}))$/;
3893
+ const regex = locale === "en-US" ? regexUS : regexBR;
3894
+ return regex.test(dateStr);
3895
+ }
3896
+ function timeFormatIsValid(timeStr) {
3897
+ const regex = /^(?:[01]\d|2[0-3]):[0-5]\d$/;
3898
+ return regex.test(timeStr);
3899
+ }
3900
+ var InputDatePickerSingle = ({
3901
+ portal,
3902
+ placeholder,
3903
+ className,
3904
+ value,
3905
+ onChange,
3906
+ numberOfMonths = 1,
3907
+ onClean,
3908
+ ...rest
3909
+ }) => {
3910
+ const [popoverIsOpen, setPopoverIsOpen] = React8.useState(false);
3911
+ const [innerDate, setInnerDate] = React8.useState(
3912
+ value ? new Date(value) : void 0
3913
+ );
3914
+ const { locale } = useNebulaI18n();
3915
+ const [month, setMonth] = React8.useState(/* @__PURE__ */ new Date());
3916
+ const handleClearValue = () => {
3917
+ setInnerDate(void 0);
3918
+ setMonth(/* @__PURE__ */ new Date());
3919
+ };
3920
+ const handleInnerInputChange = (text) => {
3921
+ const dateSlice = text.substring(0, 10).trim();
3922
+ onChange?.(text);
3923
+ if (!text) {
3924
+ handleClearValue();
3925
+ return;
3926
+ }
3927
+ const [day, month2, year] = [
3928
+ locale !== "en-US" ? dateSlice.substring(0, 2) : dateSlice.substring(3, 5),
3929
+ locale === "en-US" ? dateSlice.substring(0, 2) : dateSlice.substring(3, 5),
3930
+ dateSlice.substring(6)
3931
+ ];
3932
+ if ([day, month2, year].some((value2) => !value2) || !dateFormatIsValid(dateSlice, locale)) {
3933
+ handleClearValue();
3934
+ return;
3935
+ }
3936
+ const date = new Date(Number(year), Number(month2) - 1, Number(day));
3937
+ if (!dateFns.isValid(new Date(date))) {
3938
+ handleClearValue();
3939
+ return;
3940
+ }
3941
+ setInnerDate(date);
3942
+ };
3943
+ const handleKeyDown = (e) => {
3944
+ if ((e.altKey || e.ctrlKey || e.metaKey) && e.key !== "z") return;
3945
+ const allowedKeys = [
3946
+ "Backspace",
3947
+ "Delete",
3948
+ "Tab",
3949
+ "ArrowLeft",
3950
+ "ArrowRight",
3951
+ "Home",
3952
+ "End",
3953
+ "/"
3954
+ ];
3955
+ if (!allowedKeys.includes(e.key) && !/^[0-9]$/.test(e.key)) {
3956
+ e.preventDefault();
3957
+ }
3958
+ };
3959
+ const handleCalendarSelect = (date) => {
3960
+ const dateToStr = Intl.DateTimeFormat(locale ?? "en-US", {
3961
+ month: "2-digit",
3962
+ year: "numeric",
3963
+ day: "2-digit"
3964
+ }).format(date);
3965
+ setInnerDate(date);
3966
+ onChange?.(dateToStr);
3967
+ };
3968
+ const normalizedCalendarDate = React8.useMemo(() => {
3969
+ return dateFns.isValid(innerDate) ? innerDate : void 0;
3970
+ }, [innerDate]);
3971
+ React8.useEffect(() => {
3972
+ if (innerDate) setMonth(innerDate);
3973
+ }, [innerDate]);
3974
+ return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open: popoverIsOpen, onOpenChange: setPopoverIsOpen, children: [
3975
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { className, asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
3976
+ "div",
3977
+ {
3978
+ onClick: (e) => e.preventDefault(),
3979
+ onFocus: (e) => e.preventDefault(),
3980
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3981
+ InputText,
3982
+ {
3983
+ placeholder,
3984
+ value,
3985
+ className,
3986
+ onChange: (e) => handleInnerInputChange(e.target.value),
3987
+ onKeyDown: handleKeyDown,
3988
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
3989
+ lucideReact.CalendarIcon,
3990
+ {
3991
+ tabIndex: 0,
3992
+ role: "button",
3993
+ onClick: () => setPopoverIsOpen((s) => !s),
3994
+ onKeyUp: (e) => {
3995
+ if (e.key === "Enter") {
3996
+ setPopoverIsOpen((s) => !s);
3997
+ }
3998
+ },
3999
+ className: "nebula-ds cursor-pointer"
4000
+ }
4001
+ ),
4002
+ iconPlacement: "end",
4003
+ onKeyUp: (e) => {
4004
+ if (e.key === "ArrowDown") {
4005
+ setPopoverIsOpen(true);
4006
+ }
4007
+ },
4008
+ maxLength: 10,
4009
+ onClean: onClean ? () => {
4010
+ onClean();
4011
+ handleClearValue();
4012
+ } : void 0,
4013
+ ...rest
4014
+ }
4015
+ )
4016
+ }
4017
+ ) }),
4018
+ /* @__PURE__ */ jsxRuntime.jsx(
4019
+ PopoverContent,
4020
+ {
4021
+ portal,
4022
+ side: "bottom",
4023
+ className: "nebula-ds p-0 border-none bg-transparent shadow-none",
4024
+ align: "start",
4025
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4026
+ Calendar,
4027
+ {
4028
+ required: false,
4029
+ mode: "single",
4030
+ numberOfMonths,
4031
+ selected: normalizedCalendarDate,
4032
+ onSelect: handleCalendarSelect,
4033
+ month,
4034
+ onPrevClick: setMonth,
4035
+ onNextClick: setMonth
4036
+ }
4037
+ )
4038
+ }
4039
+ )
4040
+ ] });
4041
+ };
4042
+ var InputTime = React8.forwardRef(
4043
+ ({ value = "", onChange, placeholder = "--:--", ...rest }, ref) => {
4044
+ const [displayValue, setDisplayValue] = React8.useState(value);
4045
+ const handleKeyDown = (e) => {
4046
+ const currentValue = e.currentTarget.value;
4047
+ if ((e.altKey || e.ctrlKey || e.metaKey) && e.key !== "z") return;
4048
+ const allowedKeys = [
4049
+ "Backspace",
4050
+ "Delete",
4051
+ "Tab",
4052
+ "ArrowLeft",
4053
+ "ArrowRight",
4054
+ "Home",
4055
+ "End",
4056
+ ":"
4057
+ ];
4058
+ if (!allowedKeys.includes(e.key) && !/^[0-9]$/.test(e.key)) {
4059
+ e.preventDefault();
4060
+ }
4061
+ if (currentValue.indexOf(":") > -1 && e.key === ":" || e.key === ":" && currentValue.length < 2) {
4062
+ e.preventDefault();
4063
+ }
4064
+ };
4065
+ const handleInput = (value2) => {
4066
+ if (value2.startsWith(":")) return;
4067
+ let clean = value2.replace(/\D/g, "");
4068
+ if (clean.length === 2) {
4069
+ clean = String(
4070
+ Math.min(Math.max(parseInt(clean || "0", 10), 0), 23)
4071
+ ).padStart(2, "0");
4072
+ }
4073
+ if (clean.length === 4) {
4074
+ let h = parseInt(clean.slice(0, 2) || "0", 10);
4075
+ let m = parseInt(clean.slice(2, 4) || "0", 10);
4076
+ h = Math.min(Math.max(h, 0), 23);
4077
+ m = Math.min(Math.max(m, 0), 59);
4078
+ const value24h = `${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")}`;
4079
+ setDisplayValue(value24h);
4080
+ onChange?.(value24h);
4081
+ } else {
4082
+ setDisplayValue(value2);
4083
+ onChange?.(value2);
4084
+ }
4085
+ };
4086
+ React8.useEffect(() => {
4087
+ if (!value) {
4088
+ setDisplayValue("");
4089
+ }
4090
+ }, [value]);
4091
+ return /* @__PURE__ */ jsxRuntime.jsx(
4092
+ InputText,
4093
+ {
4094
+ ref,
4095
+ type: "text",
4096
+ value: displayValue,
4097
+ placeholder,
4098
+ ...rest,
4099
+ onChange: (e) => handleInput(e.target.value),
4100
+ onKeyDown: handleKeyDown,
4101
+ maxLength: 5,
4102
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClockIcon, {})
4103
+ }
4104
+ );
4105
+ }
4106
+ );
4107
+ InputTime.displayName = "InputTime";
4108
+ var InputDateTimePickerSingle = ({
4109
+ portal,
4110
+ placeholder,
4111
+ className,
4112
+ value,
4113
+ onChange,
4114
+ numberOfMonths = 1,
4115
+ onClean,
4116
+ ...rest
4117
+ }) => {
4118
+ const [popoverIsOpen, setPopoverIsOpen] = React8.useState(false);
4119
+ const [innerTimeValue, setInnerTimeValue] = React8.useState();
4120
+ const [innerDate, setInnerDate] = React8.useState(
4121
+ value ? new Date(value) : void 0
4122
+ );
4123
+ const { locale, messages: messages14 } = useNebulaI18n();
4124
+ const [month, setMonth] = React8.useState(/* @__PURE__ */ new Date());
4125
+ const inputTimeRef = React8.useRef(null);
4126
+ const handleClearValue = () => {
4127
+ setInnerTimeValue("");
4128
+ setInnerDate(void 0);
4129
+ setMonth(/* @__PURE__ */ new Date());
4130
+ };
4131
+ const handleInnerInputChange = (text) => {
4132
+ const dateSlice = text.substring(0, 11).trim();
4133
+ const hourSlice = text.substring(11).trim();
4134
+ onChange?.(text);
4135
+ if (!text) {
4136
+ handleClearValue();
4137
+ return;
4138
+ }
4139
+ const [day, month2, year] = [
4140
+ locale !== "en-US" ? dateSlice.substring(0, 2) : dateSlice.substring(3, 5),
4141
+ locale === "en-US" ? dateSlice.substring(0, 2) : dateSlice.substring(3, 5),
4142
+ dateSlice.substring(6)
4143
+ ];
4144
+ if ([day, month2, year].some((value2) => !value2) || !dateFormatIsValid(dateSlice, locale)) {
4145
+ handleClearValue();
4146
+ return;
4147
+ }
4148
+ if (!timeFormatIsValid(hourSlice)) {
4149
+ setInnerTimeValue("");
4150
+ } else {
4151
+ setInnerTimeValue(hourSlice);
4152
+ }
4153
+ const date = new Date(Number(year), Number(month2) - 1, Number(day));
4154
+ if (!dateFns.isValid(new Date(date))) {
4155
+ handleClearValue();
4156
+ return;
4157
+ }
4158
+ setInnerDate(date);
4159
+ };
4160
+ const handleOnChangeTime = (newTime) => {
4161
+ const [date = ""] = value?.split(" ") ?? [];
4162
+ setInnerTimeValue(newTime);
4163
+ if (date && !dateFormatIsValid(date, locale)) {
4164
+ handleClearValue();
4165
+ }
4166
+ onChange?.(date + " " + newTime);
4167
+ };
4168
+ const handleKeyDown = (e) => {
4169
+ if ((e.altKey || e.ctrlKey || e.metaKey) && e.key !== "z") return;
4170
+ const allowedKeys = [
4171
+ "Backspace",
4172
+ "Delete",
4173
+ "Tab",
4174
+ "ArrowLeft",
4175
+ "ArrowRight",
4176
+ "Home",
4177
+ "End",
4178
+ ":",
4179
+ "/",
4180
+ " "
4181
+ ];
4182
+ if (!allowedKeys.includes(e.key) && !/^[0-9]$/.test(e.key)) {
4183
+ e.preventDefault();
4184
+ }
4185
+ };
4186
+ const handleCalendarSelect = (date) => {
4187
+ const dateToStr = Intl.DateTimeFormat(locale ?? "en-US", {
4188
+ month: "2-digit",
4189
+ year: "numeric",
4190
+ day: "2-digit"
4191
+ }).format(date);
4192
+ setInnerDate(date);
4193
+ onChange?.([dateToStr, innerTimeValue].filter(Boolean).join(" "));
4194
+ if (!innerTimeValue) {
4195
+ setTimeout(() => inputTimeRef.current?.focus(), 100);
4196
+ }
4197
+ };
4198
+ const normalizedCalendarDate = React8.useMemo(() => {
4199
+ return dateFns.isValid(innerDate) ? innerDate : void 0;
4200
+ }, [innerDate]);
4201
+ React8.useEffect(() => {
4202
+ if (innerDate) setMonth(innerDate);
4203
+ }, [innerDate]);
4204
+ return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open: popoverIsOpen, onOpenChange: setPopoverIsOpen, children: [
4205
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { className, asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
4206
+ "div",
4207
+ {
4208
+ onClick: (e) => e.preventDefault(),
4209
+ onFocus: (e) => e.preventDefault(),
4210
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4211
+ InputText,
4212
+ {
4213
+ placeholder,
4214
+ value,
4215
+ className,
4216
+ onChange: (e) => handleInnerInputChange(e.target.value),
4217
+ onKeyDown: handleKeyDown,
4218
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
4219
+ lucideReact.CalendarIcon,
4220
+ {
4221
+ tabIndex: 0,
4222
+ role: "button",
4223
+ onClick: () => setPopoverIsOpen((s) => !s),
4224
+ onKeyUp: (e) => {
4225
+ if (e.key === "Enter") {
4226
+ setPopoverIsOpen((s) => !s);
4227
+ }
4228
+ },
4229
+ className: "nebula-ds cursor-pointer"
4230
+ }
4231
+ ),
4232
+ iconPlacement: "end",
4233
+ onKeyUp: (e) => {
4234
+ if (e.key === "ArrowDown") {
4235
+ setPopoverIsOpen(true);
4236
+ }
4237
+ },
4238
+ maxLength: 16,
4239
+ onClean: onClean ? () => {
4240
+ onClean();
4241
+ handleClearValue();
4242
+ } : void 0,
4243
+ ...rest
4244
+ }
4245
+ )
4246
+ }
4247
+ ) }),
4248
+ /* @__PURE__ */ jsxRuntime.jsx(
4249
+ PopoverContent,
4250
+ {
4251
+ portal,
4252
+ side: "bottom",
4253
+ className: "nebula-ds p-0 border-none bg-transparent shadow-none",
4254
+ align: "start",
4255
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4256
+ Calendar,
4257
+ {
4258
+ required: false,
4259
+ mode: "single",
4260
+ numberOfMonths,
4261
+ selected: normalizedCalendarDate,
4262
+ onSelect: handleCalendarSelect,
4263
+ month,
4264
+ onPrevClick: setMonth,
4265
+ onNextClick: setMonth,
4266
+ footer: /* @__PURE__ */ jsxRuntime.jsxs(Space, { className: "nebula-ds items-center", children: [
4267
+ /* @__PURE__ */ jsxRuntime.jsxs(Label, { children: [
4268
+ messages14.timePicker.label,
4269
+ ":"
4270
+ ] }),
4271
+ /* @__PURE__ */ jsxRuntime.jsx(
4272
+ InputTime,
4273
+ {
4274
+ placeholder: "00:00",
4275
+ value: innerTimeValue,
4276
+ onChange: handleOnChangeTime,
4277
+ ref: inputTimeRef
4278
+ }
4279
+ )
4280
+ ] })
4281
+ }
4282
+ )
4283
+ }
4284
+ )
4285
+ ] });
4286
+ };
3678
4287
 
3679
4288
  // src/tailwind.ts
3680
4289
  function content({ base = "./" } = {}) {
@@ -3685,36 +4294,6 @@ var tailwind = {
3685
4294
  content
3686
4295
  // plugin: () => require("tailwindcss")("node_modules/@nebulareact/dist/tailwind.config.js"),
3687
4296
  };
3688
- /*! Bundled license information:
3689
-
3690
- lucide-react/dist/esm/shared/src/utils.js:
3691
- lucide-react/dist/esm/defaultAttributes.js:
3692
- lucide-react/dist/esm/Icon.js:
3693
- lucide-react/dist/esm/createLucideIcon.js:
3694
- lucide-react/dist/esm/icons/check.js:
3695
- lucide-react/dist/esm/icons/chevron-down.js:
3696
- lucide-react/dist/esm/icons/chevron-left.js:
3697
- lucide-react/dist/esm/icons/chevron-right.js:
3698
- lucide-react/dist/esm/icons/chevrons-left.js:
3699
- lucide-react/dist/esm/icons/chevrons-right.js:
3700
- lucide-react/dist/esm/icons/circle-check-big.js:
3701
- lucide-react/dist/esm/icons/circle-x.js:
3702
- lucide-react/dist/esm/icons/circle.js:
3703
- lucide-react/dist/esm/icons/ellipsis.js:
3704
- lucide-react/dist/esm/icons/eye-off.js:
3705
- lucide-react/dist/esm/icons/eye.js:
3706
- lucide-react/dist/esm/icons/info.js:
3707
- lucide-react/dist/esm/icons/minus.js:
3708
- lucide-react/dist/esm/icons/phone.js:
3709
- lucide-react/dist/esm/icons/x.js:
3710
- lucide-react/dist/esm/lucide-react.js:
3711
- (**
3712
- * @license lucide-react v0.476.0 - ISC
3713
- *
3714
- * This source code is licensed under the ISC license.
3715
- * See the LICENSE file in the root directory of this source tree.
3716
- *)
3717
- */
3718
4297
 
3719
4298
  exports.Accordion = Accordion;
3720
4299
  exports.AccordionContent = AccordionContent;
@@ -3754,6 +4333,7 @@ exports.BreadcrumbList = BreadcrumbList;
3754
4333
  exports.BreadcrumbPage = BreadcrumbPage;
3755
4334
  exports.BreadcrumbSeparator = BreadcrumbSeparator;
3756
4335
  exports.Button = Button;
4336
+ exports.Calendar = Calendar;
3757
4337
  exports.Caption = Caption;
3758
4338
  exports.Checkbox = Checkbox;
3759
4339
  exports.Creatable = StyledCreatable;
@@ -3792,8 +4372,11 @@ exports.DropdownMenuSubContent = DropdownMenuSubContent;
3792
4372
  exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
3793
4373
  exports.DropdownMenuTrigger = DropdownMenuTrigger;
3794
4374
  exports.Heading = Heading;
4375
+ exports.InputDatePickerSingle = InputDatePickerSingle;
4376
+ exports.InputDateTimePickerSingle = InputDateTimePickerSingle;
3795
4377
  exports.InputPhone = InputPhone;
3796
4378
  exports.InputText = InputText;
4379
+ exports.InputTime = InputTime;
3797
4380
  exports.Label = Label;
3798
4381
  exports.Link = Link;
3799
4382
  exports.NebulaI18nProvider = NebulaI18nProvider;
@@ -3831,7 +4414,8 @@ exports.buttonSizeEnum = buttonSizeEnum;
3831
4414
  exports.buttonVariantEnum = buttonVariantEnum;
3832
4415
  exports.buttonVariantsConfig = buttonVariantsConfig;
3833
4416
  exports.getNebulaLanguage = getNebulaLanguage;
3834
- exports.messages = messages10;
4417
+ exports.localeByi18nKey = localeByi18nKey;
4418
+ exports.messages = messages13;
3835
4419
  exports.separatorVariants = separatorVariants;
3836
4420
  exports.setNebulaLanguage = setNebulaLanguage;
3837
4421
  exports.tagVariantsEnum = tagVariantsEnum;