@deepnoid/ui 0.1.155 → 0.1.157

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/.turbo/turbo-build.log +175 -175
  2. package/dist/{chunk-6EMUORXZ.mjs → chunk-5KOTQEFC.mjs} +1 -1
  3. package/dist/{chunk-6F4GD2PP.mjs → chunk-73NBUI4Y.mjs} +1 -1
  4. package/dist/{chunk-7HWPWDYW.mjs → chunk-ACFDUCPL.mjs} +2 -2
  5. package/dist/{chunk-WWSQIDWW.mjs → chunk-BFC4VP3B.mjs} +1 -1
  6. package/dist/{chunk-EOP4227J.mjs → chunk-DQ3ZRNX4.mjs} +1 -1
  7. package/dist/{chunk-WYEUAXY7.mjs → chunk-DSEF7GGB.mjs} +1 -1
  8. package/dist/{chunk-UOVPR2VJ.mjs → chunk-HLWNJLRZ.mjs} +1 -1
  9. package/dist/{chunk-J64OQUOI.mjs → chunk-IN6M25YL.mjs} +2 -2
  10. package/dist/{chunk-63IEPEKU.mjs → chunk-JJAPJQUD.mjs} +1 -1
  11. package/dist/{chunk-Q6BXFXQM.mjs → chunk-LBJN5TAP.mjs} +1 -1
  12. package/dist/{chunk-67A5TV7C.mjs → chunk-MGGBCCZL.mjs} +2 -2
  13. package/dist/{chunk-H3UI2ZNK.mjs → chunk-NB45YSED.mjs} +1 -1
  14. package/dist/{chunk-LWSGRTWO.mjs → chunk-PO4H65C3.mjs} +1 -1
  15. package/dist/{chunk-UMMZ7NI5.mjs → chunk-QJUPHJN6.mjs} +1 -1
  16. package/dist/{chunk-5HMTKXVV.mjs → chunk-SHI7P4DQ.mjs} +1 -1
  17. package/dist/{chunk-CSZQLOP5.mjs → chunk-T6V6BJOT.mjs} +2 -2
  18. package/dist/chunk-T7IJB3N4.mjs +449 -0
  19. package/dist/{chunk-NX4FTFY3.mjs → chunk-VUMESK5D.mjs} +66 -0
  20. package/dist/{chunk-ZF25F457.mjs → chunk-ZUAOUHWS.mjs} +3 -3
  21. package/dist/components/avatar/avatar.js +66 -0
  22. package/dist/components/avatar/avatar.mjs +2 -2
  23. package/dist/components/avatar/index.js +66 -0
  24. package/dist/components/avatar/index.mjs +2 -2
  25. package/dist/components/breadcrumb/breadcrumb.js +66 -0
  26. package/dist/components/breadcrumb/breadcrumb.mjs +5 -5
  27. package/dist/components/breadcrumb/index.js +66 -0
  28. package/dist/components/breadcrumb/index.mjs +5 -5
  29. package/dist/components/button/button.js +66 -0
  30. package/dist/components/button/button.mjs +3 -3
  31. package/dist/components/button/icon-button.js +66 -0
  32. package/dist/components/button/icon-button.mjs +3 -3
  33. package/dist/components/button/index.js +66 -0
  34. package/dist/components/button/index.mjs +4 -4
  35. package/dist/components/chip/chip.js +66 -0
  36. package/dist/components/chip/chip.mjs +3 -3
  37. package/dist/components/chip/index.js +66 -0
  38. package/dist/components/chip/index.mjs +3 -3
  39. package/dist/components/fileUpload/fileUpload.js +66 -0
  40. package/dist/components/fileUpload/fileUpload.mjs +6 -6
  41. package/dist/components/fileUpload/index.js +66 -0
  42. package/dist/components/fileUpload/index.mjs +6 -6
  43. package/dist/components/icon/Icon.d.mts +12 -0
  44. package/dist/components/icon/Icon.d.ts +12 -0
  45. package/dist/components/icon/Icon.js +66 -0
  46. package/dist/components/icon/Icon.mjs +2 -2
  47. package/dist/components/icon/index.js +66 -0
  48. package/dist/components/icon/index.mjs +2 -2
  49. package/dist/components/icon/template.d.mts +3 -0
  50. package/dist/components/icon/template.d.ts +3 -0
  51. package/dist/components/icon/template.js +66 -0
  52. package/dist/components/icon/template.mjs +1 -1
  53. package/dist/components/input/index.js +66 -0
  54. package/dist/components/input/index.mjs +3 -3
  55. package/dist/components/input/input.js +66 -0
  56. package/dist/components/input/input.mjs +3 -3
  57. package/dist/components/list/index.js +66 -0
  58. package/dist/components/list/index.mjs +4 -4
  59. package/dist/components/list/listItem.js +66 -0
  60. package/dist/components/list/listItem.mjs +4 -4
  61. package/dist/components/modal/index.js +66 -0
  62. package/dist/components/modal/index.mjs +5 -5
  63. package/dist/components/modal/modal.js +66 -0
  64. package/dist/components/modal/modal.mjs +5 -5
  65. package/dist/components/pagination/index.js +66 -0
  66. package/dist/components/pagination/index.mjs +4 -4
  67. package/dist/components/pagination/pagination.js +66 -0
  68. package/dist/components/pagination/pagination.mjs +4 -4
  69. package/dist/components/picker/datePicker.d.mts +35 -4
  70. package/dist/components/picker/datePicker.d.ts +35 -4
  71. package/dist/components/picker/datePicker.js +247 -47
  72. package/dist/components/picker/datePicker.mjs +6 -6
  73. package/dist/components/picker/index.d.mts +1 -1
  74. package/dist/components/picker/index.d.ts +1 -1
  75. package/dist/components/picker/index.js +247 -47
  76. package/dist/components/picker/index.mjs +8 -8
  77. package/dist/components/picker/timePicker.js +66 -0
  78. package/dist/components/picker/timePicker.mjs +4 -4
  79. package/dist/components/radio/index.d.mts +1 -1
  80. package/dist/components/radio/index.d.ts +1 -1
  81. package/dist/components/select/index.js +66 -0
  82. package/dist/components/select/index.mjs +3 -3
  83. package/dist/components/select/select.js +66 -0
  84. package/dist/components/select/select.mjs +3 -3
  85. package/dist/components/table/index.js +66 -0
  86. package/dist/components/table/index.mjs +5 -5
  87. package/dist/components/table/table-body.js +66 -0
  88. package/dist/components/table/table-body.mjs +5 -5
  89. package/dist/components/table/table-head.js +66 -0
  90. package/dist/components/table/table-head.mjs +5 -5
  91. package/dist/components/table/table.js +66 -0
  92. package/dist/components/table/table.mjs +5 -5
  93. package/dist/components/timePicker/calendar.js +66 -0
  94. package/dist/components/timePicker/calendar.mjs +2 -2
  95. package/dist/components/toast/index.js +66 -0
  96. package/dist/components/toast/index.mjs +4 -4
  97. package/dist/components/toast/toast.js +66 -0
  98. package/dist/components/toast/toast.mjs +3 -3
  99. package/dist/components/toast/use-toast.js +66 -0
  100. package/dist/components/toast/use-toast.mjs +4 -4
  101. package/dist/components/tree/index.js +66 -0
  102. package/dist/components/tree/index.mjs +3 -3
  103. package/dist/components/tree/tree.js +66 -0
  104. package/dist/components/tree/tree.mjs +3 -3
  105. package/dist/index.d.mts +2 -2
  106. package/dist/index.d.ts +2 -2
  107. package/dist/index.js +247 -47
  108. package/dist/index.mjs +19 -19
  109. package/package.json +1 -1
  110. package/dist/chunk-5MQZ7SDK.mjs +0 -315
package/dist/index.d.mts CHANGED
@@ -15,7 +15,7 @@ export { default as DefinitionTable, DefinitionTableRow, DefinitionTableRowCell
15
15
  export { default as Select, SelectOption, SelectProps } from './components/select/select.mjs';
16
16
  export { default as CheckBox } from './components/checkbox/checkbox.mjs';
17
17
  export { default as Chip } from './components/chip/chip.mjs';
18
- export { default as Radio } from './components/radio/radio.mjs';
18
+ export { default as Radio, RadioProps } from './components/radio/radio.mjs';
19
19
  export { default as Icon, IconName, iconTemplate } from './components/icon/Icon.mjs';
20
20
  export { default as Switch } from './components/switch/switch.mjs';
21
21
  export { default as Pagination } from './components/pagination/pagination.mjs';
@@ -27,7 +27,7 @@ export { default as ListItem, ListItemProps } from './components/list/listItem.m
27
27
  export { default as Toast } from './components/toast/toast.mjs';
28
28
  export { ToastProvider, useToast } from './components/toast/use-toast.mjs';
29
29
  export { default as Day } from './components/picker/day.mjs';
30
- export { default as DatePicker, DatePickerProps } from './components/picker/datePicker.mjs';
30
+ export { default as DatePicker, DatePickerProps, DateRangeValue, DateValue } from './components/picker/datePicker.mjs';
31
31
  export { default as TimePicker, TimePickerProps } from './components/picker/timePicker.mjs';
32
32
  export { default as ScrollArea } from './components/scroll/scrollArea.mjs';
33
33
  export { default as Tree, TreeNode } from './components/tree/tree.mjs';
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ export { default as DefinitionTable, DefinitionTableRow, DefinitionTableRowCell
15
15
  export { default as Select, SelectOption, SelectProps } from './components/select/select.js';
16
16
  export { default as CheckBox } from './components/checkbox/checkbox.js';
17
17
  export { default as Chip } from './components/chip/chip.js';
18
- export { default as Radio } from './components/radio/radio.js';
18
+ export { default as Radio, RadioProps } from './components/radio/radio.js';
19
19
  export { default as Icon, IconName, iconTemplate } from './components/icon/Icon.js';
20
20
  export { default as Switch } from './components/switch/switch.js';
21
21
  export { default as Pagination } from './components/pagination/pagination.js';
@@ -27,7 +27,7 @@ export { default as ListItem, ListItemProps } from './components/list/listItem.j
27
27
  export { default as Toast } from './components/toast/toast.js';
28
28
  export { ToastProvider, useToast } from './components/toast/use-toast.js';
29
29
  export { default as Day } from './components/picker/day.js';
30
- export { default as DatePicker, DatePickerProps } from './components/picker/datePicker.js';
30
+ export { default as DatePicker, DatePickerProps, DateRangeValue, DateValue } from './components/picker/datePicker.js';
31
31
  export { default as TimePicker, TimePickerProps } from './components/picker/timePicker.js';
32
32
  export { default as ScrollArea } from './components/scroll/scrollArea.js';
33
33
  export { default as Tree, TreeNode } from './components/tree/tree.js';
package/dist/index.js CHANGED
@@ -1468,6 +1468,29 @@ var template = {
1468
1468
  }
1469
1469
  );
1470
1470
  },
1471
+ ["home-outline"]: ({ className }) => {
1472
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1473
+ "svg",
1474
+ {
1475
+ width: "21",
1476
+ height: "21",
1477
+ viewBox: "0 0 21 21",
1478
+ fill: "none",
1479
+ xmlns: "http://www.w3.org/2000/svg",
1480
+ className,
1481
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1482
+ "path",
1483
+ {
1484
+ d: "M1.96875 10.4997L9.8035 2.66407C10.1885 2.27995 10.8115 2.27995 11.1956 2.66407L19.0312 10.4997M3.9375 8.53094V17.3903C3.9375 17.9337 4.3785 18.3747 4.92188 18.3747H8.53125V14.1091C8.53125 13.5657 8.97225 13.1247 9.51562 13.1247H11.4844C12.0277 13.1247 12.4688 13.5657 12.4688 14.1091V18.3747H16.0781C16.6215 18.3747 17.0625 17.9337 17.0625 17.3903V8.53094M7.21875 18.3747H14.4375",
1485
+ stroke: "#5B5E62",
1486
+ strokeWidth: "1.25",
1487
+ strokeLinecap: "round",
1488
+ strokeLinejoin: "round"
1489
+ }
1490
+ )
1491
+ }
1492
+ );
1493
+ },
1471
1494
  exclamation: ({ className, fill }) => {
1472
1495
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1473
1496
  "svg",
@@ -2313,6 +2336,29 @@ var template = {
2313
2336
  }
2314
2337
  );
2315
2338
  },
2339
+ ["chat-outline"]: ({ className }) => {
2340
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2341
+ "svg",
2342
+ {
2343
+ width: "21",
2344
+ height: "21",
2345
+ viewBox: "0 0 21 21",
2346
+ fill: "none",
2347
+ xmlns: "http://www.w3.org/2000/svg",
2348
+ className,
2349
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2350
+ "path",
2351
+ {
2352
+ d: "M7.54688 10.5C7.54688 10.587 7.51231 10.6705 7.45077 10.732C7.38923 10.7936 7.30577 10.8281 7.21875 10.8281C7.13173 10.8281 7.04827 10.7936 6.98673 10.732C6.9252 10.6705 6.89062 10.587 6.89062 10.5C6.89062 10.413 6.9252 10.3295 6.98673 10.268C7.04827 10.2064 7.13173 10.1719 7.21875 10.1719C7.30577 10.1719 7.38923 10.2064 7.45077 10.268C7.51231 10.3295 7.54688 10.413 7.54688 10.5ZM7.54688 10.5H7.21875M10.8281 10.5C10.8281 10.587 10.7936 10.6705 10.732 10.732C10.6705 10.7936 10.587 10.8281 10.5 10.8281C10.413 10.8281 10.3295 10.7936 10.268 10.732C10.2064 10.6705 10.1719 10.587 10.1719 10.5C10.1719 10.413 10.2064 10.3295 10.268 10.268C10.3295 10.2064 10.413 10.1719 10.5 10.1719C10.587 10.1719 10.6705 10.2064 10.732 10.268C10.7936 10.3295 10.8281 10.413 10.8281 10.5ZM10.8281 10.5H10.5M14.1094 10.5C14.1094 10.587 14.0748 10.6705 14.0133 10.732C13.9517 10.7936 13.8683 10.8281 13.7812 10.8281C13.6942 10.8281 13.6108 10.7936 13.5492 10.732C13.4877 10.6705 13.4531 10.587 13.4531 10.5C13.4531 10.413 13.4877 10.3295 13.5492 10.268C13.6108 10.2064 13.6942 10.1719 13.7812 10.1719C13.8683 10.1719 13.9517 10.2064 14.0133 10.268C14.0748 10.3295 14.1094 10.413 14.1094 10.5ZM14.1094 10.5H13.7812M18.375 10.5C18.375 14.4865 14.8487 17.7188 10.5 17.7188C9.74504 17.7197 8.99328 17.6205 8.26437 17.4239C7.23692 18.1465 5.98353 18.4748 4.73375 18.3487C4.5948 18.3353 4.45643 18.3164 4.319 18.2919C4.75026 17.7836 5.04479 17.1738 5.17475 16.52C5.2535 16.1201 5.05838 15.7316 4.76613 15.4472C3.43875 14.1557 2.625 12.4154 2.625 10.5C2.625 6.5135 6.15125 3.28125 10.5 3.28125C14.8487 3.28125 18.375 6.5135 18.375 10.5Z",
2353
+ stroke: "#5B5E62",
2354
+ strokeWidth: "1.25",
2355
+ strokeLinecap: "round",
2356
+ strokeLinejoin: "round"
2357
+ }
2358
+ )
2359
+ }
2360
+ );
2361
+ },
2316
2362
  calendar: ({ className, fill }) => {
2317
2363
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2318
2364
  "svg",
@@ -2529,6 +2575,26 @@ var template = {
2529
2575
  }
2530
2576
  );
2531
2577
  },
2578
+ question: ({ className = "text-white" }) => {
2579
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2580
+ "svg",
2581
+ {
2582
+ xmlns: "http://www.w3.org/2000/svg",
2583
+ width: "24",
2584
+ height: "24",
2585
+ viewBox: "0 0 24 24",
2586
+ fill: "none",
2587
+ className,
2588
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2589
+ "path",
2590
+ {
2591
+ d: "M17 2.42969H7C4 2.42969 2 4.42969 2 7.42969V13.4297C2 16.4297 4 18.4297 7 18.4297V20.5597C7 21.3597 7.89 21.8397 8.55 21.3897L13 18.4297H17C20 18.4297 22 16.4297 22 13.4297V7.42969C22 4.42969 20 2.42969 17 2.42969ZM12 14.5997C11.58 14.5997 11.25 14.2597 11.25 13.8497C11.25 13.4397 11.58 13.0997 12 13.0997C12.42 13.0997 12.75 13.4397 12.75 13.8497C12.75 14.2597 12.42 14.5997 12 14.5997ZM13.26 10.4497C12.87 10.7097 12.75 10.8797 12.75 11.1597V11.3697C12.75 11.7797 12.41 12.1197 12 12.1197C11.59 12.1197 11.25 11.7797 11.25 11.3697V11.1597C11.25 9.99969 12.1 9.42969 12.42 9.20969C12.79 8.95969 12.91 8.78969 12.91 8.52969C12.91 8.02969 12.5 7.61969 12 7.61969C11.5 7.61969 11.09 8.02969 11.09 8.52969C11.09 8.93969 10.75 9.27969 10.34 9.27969C9.93 9.27969 9.59 8.93969 9.59 8.52969C9.59 7.19969 10.67 6.11969 12 6.11969C13.33 6.11969 14.41 7.19969 14.41 8.52969C14.41 9.66969 13.57 10.2397 13.26 10.4497Z",
2592
+ fill: "currentColor"
2593
+ }
2594
+ )
2595
+ }
2596
+ );
2597
+ },
2532
2598
  // ----------------------------------- old ---------------------------------
2533
2599
  // ** Status **
2534
2600
  "plus-circle": ({ className, fill }) => {
@@ -11190,12 +11256,25 @@ var DatePicker = (0, import_react32.forwardRef)((originalProps, ref) => {
11190
11256
  todayTitle,
11191
11257
  cancelTitle,
11192
11258
  confirmTitle,
11259
+ range = false,
11260
+ dualCalendar = false,
11193
11261
  ...inputProps
11194
11262
  } = { ...props, ...variantProps };
11195
- const [selectedDate, setSelectedDate] = (0, import_react32.useState)(value || "");
11196
- const [tempSelectedDate, setTempSelectedDate] = (0, import_react32.useState)(value || "");
11263
+ const [selectedDate, setSelectedDate] = (0, import_react32.useState)(range ? "" : typeof value === "string" ? value || "" : "");
11264
+ const [selectedRange, setSelectedRange] = (0, import_react32.useState)({
11265
+ startDate: range && typeof value === "object" ? (value == null ? void 0 : value.startDate) || "" : "",
11266
+ endDate: range && typeof value === "object" ? (value == null ? void 0 : value.endDate) || "" : ""
11267
+ });
11268
+ const [tempSelectedDate, setTempSelectedDate] = (0, import_react32.useState)(selectedDate);
11269
+ const [tempSelectedRange, setTempSelectedRange] = (0, import_react32.useState)(selectedRange);
11270
+ const [rangeSelection, setRangeSelection] = (0, import_react32.useState)("start");
11197
11271
  const [isPanelOpen, setIsPanelOpen] = (0, import_react32.useState)(false);
11198
- const [currentDate, setCurrentDate] = (0, import_react32.useState)(tempSelectedDate ? new Date(tempSelectedDate) : /* @__PURE__ */ new Date());
11272
+ const [leftCurrentDate, setLeftCurrentDate] = (0, import_react32.useState)(
11273
+ range && tempSelectedRange.startDate ? new Date(tempSelectedRange.startDate) : tempSelectedDate ? new Date(tempSelectedDate) : /* @__PURE__ */ new Date()
11274
+ );
11275
+ const [rightCurrentDate, setRightCurrentDate] = (0, import_react32.useState)(
11276
+ dualCalendar ? new Date(leftCurrentDate.getFullYear(), leftCurrentDate.getMonth() + 1) : /* @__PURE__ */ new Date()
11277
+ );
11199
11278
  const inputWrapperRef = (0, import_react32.useRef)(null);
11200
11279
  const calendarWrapperRef = (0, import_react32.useRef)(null);
11201
11280
  const [panelPos, setPanelPos] = (0, import_react32.useState)({ top: -9999, left: -9999 });
@@ -11212,7 +11291,16 @@ var DatePicker = (0, import_react32.forwardRef)((originalProps, ref) => {
11212
11291
  return dateString;
11213
11292
  }
11214
11293
  };
11215
- const displayValue = (0, import_react32.useMemo)(() => formatDate(selectedDate), [selectedDate, format]);
11294
+ const displayValue = (0, import_react32.useMemo)(() => {
11295
+ if (range) {
11296
+ const start = formatDate(selectedRange.startDate);
11297
+ const end = formatDate(selectedRange.endDate);
11298
+ if (start && end) return `${start} ~ ${end}`;
11299
+ if (start) return start;
11300
+ return "";
11301
+ }
11302
+ return formatDate(selectedDate);
11303
+ }, [selectedDate, selectedRange, format, range]);
11216
11304
  const calculatePosition = (0, import_react32.useCallback)(() => {
11217
11305
  if (inputWrapperRef.current) {
11218
11306
  const rect = inputWrapperRef.current.getBoundingClientRect();
@@ -11245,13 +11333,18 @@ var DatePicker = (0, import_react32.forwardRef)((originalProps, ref) => {
11245
11333
  };
11246
11334
  const handleClearDate = (e) => {
11247
11335
  e.preventDefault();
11248
- setTempSelectedDate("");
11336
+ if (range) {
11337
+ setTempSelectedRange({ startDate: "", endDate: "" });
11338
+ setRangeSelection("start");
11339
+ } else {
11340
+ setTempSelectedDate("");
11341
+ }
11249
11342
  };
11250
11343
  const handleCalendarMouseDown = (e) => {
11251
11344
  e.preventDefault();
11252
11345
  if (blurTimeoutRef.current) clearTimeout(blurTimeoutRef.current);
11253
11346
  };
11254
- const getCalendarDates = (0, import_react32.useCallback)(() => {
11347
+ const getCalendarDates = (0, import_react32.useCallback)((currentDate) => {
11255
11348
  const year = currentDate.getFullYear();
11256
11349
  const month = currentDate.getMonth();
11257
11350
  const firstDayOfMonth = new Date(year, month, 1).getDay();
@@ -11265,47 +11358,160 @@ var DatePicker = (0, import_react32.forwardRef)((originalProps, ref) => {
11265
11358
  const weeks = [];
11266
11359
  for (let i = 0; i < dates.length; i += 7) weeks.push(dates.slice(i, i + 7));
11267
11360
  return weeks;
11268
- }, [currentDate]);
11269
- const handlePrevMonth = () => setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() - 1));
11270
- const handleNextMonth = () => setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1));
11271
- const handleDateSelect = (date, isCurrentMonth) => {
11361
+ }, []);
11362
+ const handleLeftPrevMonth = () => {
11363
+ const newLeftDate = new Date(leftCurrentDate.getFullYear(), leftCurrentDate.getMonth() - 1);
11364
+ setLeftCurrentDate(newLeftDate);
11365
+ if (dualCalendar) {
11366
+ setRightCurrentDate(new Date(newLeftDate.getFullYear(), newLeftDate.getMonth() + 1));
11367
+ }
11368
+ };
11369
+ const handleLeftNextMonth = () => {
11370
+ const newLeftDate = new Date(leftCurrentDate.getFullYear(), leftCurrentDate.getMonth() + 1);
11371
+ setLeftCurrentDate(newLeftDate);
11372
+ if (dualCalendar) {
11373
+ setRightCurrentDate(new Date(newLeftDate.getFullYear(), newLeftDate.getMonth() + 1));
11374
+ }
11375
+ };
11376
+ const handleRightNextMonth = () => {
11377
+ if (!dualCalendar) return;
11378
+ const newRightDate = new Date(rightCurrentDate.getFullYear(), rightCurrentDate.getMonth() + 1);
11379
+ setRightCurrentDate(newRightDate);
11380
+ setLeftCurrentDate(new Date(newRightDate.getFullYear(), newRightDate.getMonth() - 1));
11381
+ };
11382
+ const handleDateSelect = (date, isCurrentMonth, currentDate) => {
11272
11383
  if (!isCurrentMonth) return;
11273
11384
  const selected = new Date(currentDate.getFullYear(), currentDate.getMonth(), date);
11274
11385
  const formatted = formatDateToString(selected);
11275
- setTempSelectedDate(formatted);
11386
+ if (range) {
11387
+ if (rangeSelection === "start") {
11388
+ setTempSelectedRange({ startDate: formatted, endDate: "" });
11389
+ setRangeSelection("end");
11390
+ } else {
11391
+ const startDate = new Date(tempSelectedRange.startDate);
11392
+ if (selected >= startDate) {
11393
+ setTempSelectedRange({ ...tempSelectedRange, endDate: formatted });
11394
+ } else {
11395
+ setTempSelectedRange({ startDate: formatted, endDate: tempSelectedRange.startDate });
11396
+ }
11397
+ }
11398
+ } else {
11399
+ setTempSelectedDate(formatted);
11400
+ }
11276
11401
  };
11277
11402
  const handleSetToday = () => {
11278
11403
  const today = /* @__PURE__ */ new Date();
11279
11404
  const formatted = formatDateToString(today);
11280
- setCurrentDate(today);
11281
- setTempSelectedDate(formatted);
11405
+ if (range) {
11406
+ if (rangeSelection === "start") {
11407
+ setTempSelectedRange({ startDate: formatted, endDate: "" });
11408
+ setRangeSelection("end");
11409
+ } else {
11410
+ const startDate = new Date(tempSelectedRange.startDate);
11411
+ if (today >= startDate) {
11412
+ setTempSelectedRange({ ...tempSelectedRange, endDate: formatted });
11413
+ } else {
11414
+ setTempSelectedRange({ startDate: formatted, endDate: tempSelectedRange.startDate });
11415
+ }
11416
+ }
11417
+ } else {
11418
+ setLeftCurrentDate(today);
11419
+ if (dualCalendar) setRightCurrentDate(new Date(today.getFullYear(), today.getMonth() + 1));
11420
+ setTempSelectedDate(formatted);
11421
+ }
11282
11422
  };
11283
11423
  const handleConfirmDate = () => {
11284
- setSelectedDate(tempSelectedDate);
11285
- onChange == null ? void 0 : onChange(tempSelectedDate);
11424
+ if (range) {
11425
+ setSelectedRange(tempSelectedRange);
11426
+ onChange == null ? void 0 : onChange(tempSelectedRange);
11427
+ } else {
11428
+ setSelectedDate(tempSelectedDate);
11429
+ onChange == null ? void 0 : onChange(tempSelectedDate);
11430
+ }
11286
11431
  setIsPanelOpen(false);
11287
11432
  };
11288
11433
  const handleResetDate = () => {
11289
- setTempSelectedDate(selectedDate);
11434
+ if (range) {
11435
+ setTempSelectedRange(selectedRange);
11436
+ setRangeSelection("start");
11437
+ } else {
11438
+ setTempSelectedDate(selectedDate);
11439
+ }
11290
11440
  setIsPanelOpen(false);
11291
11441
  };
11292
11442
  const getDayProps = (0, import_react32.useCallback)(
11293
- (dateObj) => {
11443
+ (dateObj, currentDate) => {
11294
11444
  const today = /* @__PURE__ */ new Date();
11295
11445
  const isToday = today.getDate() === dateObj.date && today.getMonth() === currentDate.getMonth() && today.getFullYear() === currentDate.getFullYear();
11296
- const formatted = tempSelectedDate ? formatStringToDate(tempSelectedDate) : null;
11297
- const isSelected = (formatted == null ? void 0 : formatted.getDate()) === dateObj.date && formatted.getMonth() === currentDate.getMonth() && formatted.getFullYear() === currentDate.getFullYear();
11298
- return dateObj.currentMonth && isSelected ? "selected" : dateObj.currentMonth && isToday ? "today" : !dateObj.currentMonth ? "disabled" : "default";
11446
+ if (range) {
11447
+ const startFormatted = tempSelectedRange.startDate ? formatStringToDate(tempSelectedRange.startDate) : null;
11448
+ const endFormatted = tempSelectedRange.endDate ? formatStringToDate(tempSelectedRange.endDate) : null;
11449
+ const currentFormatted = new Date(currentDate.getFullYear(), currentDate.getMonth(), dateObj.date);
11450
+ const isStartSelected = startFormatted && startFormatted.getDate() === dateObj.date && startFormatted.getMonth() === currentDate.getMonth() && startFormatted.getFullYear() === currentDate.getFullYear();
11451
+ const isEndSelected = endFormatted && endFormatted.getDate() === dateObj.date && endFormatted.getMonth() === currentDate.getMonth() && endFormatted.getFullYear() === currentDate.getFullYear();
11452
+ const isInRange = startFormatted && endFormatted && currentFormatted > startFormatted && currentFormatted < endFormatted;
11453
+ if (dateObj.currentMonth && (isStartSelected || isEndSelected)) return "selected";
11454
+ if (dateObj.currentMonth && isInRange) return "period";
11455
+ if (dateObj.currentMonth && isToday) return "today";
11456
+ if (!dateObj.currentMonth) return "disabled";
11457
+ return "default";
11458
+ } else {
11459
+ const formatted = tempSelectedDate ? formatStringToDate(tempSelectedDate) : null;
11460
+ const isSelected = (formatted == null ? void 0 : formatted.getDate()) === dateObj.date && formatted.getMonth() === currentDate.getMonth() && formatted.getFullYear() === currentDate.getFullYear();
11461
+ return dateObj.currentMonth && isSelected ? "selected" : dateObj.currentMonth && isToday ? "today" : !dateObj.currentMonth ? "disabled" : "default";
11462
+ }
11299
11463
  },
11300
- [tempSelectedDate, currentDate]
11464
+ [tempSelectedDate, tempSelectedRange, range]
11301
11465
  );
11466
+ const getPlaceholderText = () => {
11467
+ return placeholder;
11468
+ };
11469
+ (0, import_react32.useEffect)(() => {
11470
+ if (range && typeof value === "object") {
11471
+ setSelectedRange(value || { startDate: "", endDate: "" });
11472
+ setTempSelectedRange(value || { startDate: "", endDate: "" });
11473
+ if (value == null ? void 0 : value.startDate) setLeftCurrentDate(new Date(value.startDate));
11474
+ } else if (!range && typeof value === "string") {
11475
+ setSelectedDate(value || "");
11476
+ setTempSelectedDate(value || "");
11477
+ if (value) setLeftCurrentDate(new Date(value));
11478
+ }
11479
+ }, [value, range]);
11302
11480
  (0, import_react32.useEffect)(() => {
11303
- setSelectedDate(value || "");
11304
- setTempSelectedDate(value || "");
11305
- if (value) setCurrentDate(new Date(value));
11306
- }, [value]);
11307
- const slots = (0, import_react32.useMemo)(() => datePickerStyle({ ...variantProps }), [variantProps]);
11481
+ if (dualCalendar) {
11482
+ setRightCurrentDate(new Date(leftCurrentDate.getFullYear(), leftCurrentDate.getMonth() + 1));
11483
+ }
11484
+ }, [leftCurrentDate, dualCalendar]);
11485
+ const slots = (0, import_react32.useMemo)(() => datePickerStyle({ ...variantProps, dualCalendar }), [variantProps, dualCalendar]);
11308
11486
  const endContent = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icon_default, { name: "calendar", size, className: "cursor-pointer", fill: true, onClick: handleCalendarIconClick });
11487
+ const renderCalendar = (currentDate, isLeft) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex flex-col gap-[5px]", children: [
11488
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: slots.calendarHead({ class: classNames == null ? void 0 : classNames.calendarHead }), children: dualCalendar ? isLeft ? /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
11489
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(icon_button_default, { name: "left", variant: "soft", color: "neutral", onClick: handleLeftPrevMonth }),
11490
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xl font-extrabold", children: monthYearFormat(currentDate.getFullYear(), currentDate.getMonth()) }),
11491
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "w-8" })
11492
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
11493
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "w-8" }),
11494
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xl font-extrabold", children: monthYearFormat(currentDate.getFullYear(), currentDate.getMonth()) }),
11495
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(icon_button_default, { name: "right", variant: "soft", color: "neutral", onClick: handleRightNextMonth })
11496
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
11497
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(icon_button_default, { name: "left", variant: "soft", color: "neutral", onClick: handleLeftPrevMonth }),
11498
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xl font-extrabold", children: monthYearFormat(currentDate.getFullYear(), currentDate.getMonth()) }),
11499
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(icon_button_default, { name: "right", variant: "soft", color: "neutral", onClick: handleLeftNextMonth })
11500
+ ] }) }),
11501
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "grid grid-cols-7", children: daysOfWeek.map((day, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(day_default, { variant: "text", children: day }, `${day}-${index}`)) }),
11502
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "grid grid-cols-7 gap-y-[5px] text-center", children: getCalendarDates(currentDate).map((week, weekIndex) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_react32.Fragment, { children: week.map((dateObj, index) => {
11503
+ const dayVariant = getDayProps(dateObj, currentDate);
11504
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
11505
+ day_default,
11506
+ {
11507
+ variant: dayVariant,
11508
+ onClick: () => handleDateSelect(dateObj.date, dateObj.currentMonth, currentDate),
11509
+ children: dateObj.date
11510
+ },
11511
+ index
11512
+ );
11513
+ }) }, weekIndex)) })
11514
+ ] });
11309
11515
  return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
11310
11516
  /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { ref: inputWrapperRef, className: slots.base({ class: classNames == null ? void 0 : classNames.base }), onClick: handleFocusInput, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
11311
11517
  input_default,
@@ -11314,7 +11520,7 @@ var DatePicker = (0, import_react32.forwardRef)((originalProps, ref) => {
11314
11520
  ref,
11315
11521
  label,
11316
11522
  value: displayValue,
11317
- placeholder,
11523
+ placeholder: getPlaceholderText(),
11318
11524
  errorMessage,
11319
11525
  helperMessage,
11320
11526
  size,
@@ -11347,22 +11553,12 @@ var DatePicker = (0, import_react32.forwardRef)((originalProps, ref) => {
11347
11553
  style: { position: "absolute", top: panelPos.top, left: panelPos.left, zIndex: 1e3 },
11348
11554
  onMouseDown: handleCalendarMouseDown,
11349
11555
  children: [
11350
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: slots.calendarHead({ class: classNames == null ? void 0 : classNames.calendarHead }), children: [
11351
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(icon_button_default, { name: "left", variant: "soft", color: "neutral", onClick: handlePrevMonth }),
11352
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xl font-extrabold", children: monthYearFormat(currentDate.getFullYear(), currentDate.getMonth()) }),
11353
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(icon_button_default, { name: "right", variant: "soft", color: "neutral", onClick: handleNextMonth })
11556
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: dualCalendar ? "flex gap-[10px]" : "flex", children: [
11557
+ renderCalendar(leftCurrentDate, true),
11558
+ dualCalendar && range && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "bg-neutral-soft w-px self-stretch" }),
11559
+ dualCalendar && renderCalendar(rightCurrentDate, false)
11354
11560
  ] }),
11355
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "grid grid-cols-7", children: daysOfWeek.map((day, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(day_default, { variant: "text", children: day }, `${day}-${index}`)) }),
11356
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "grid grid-cols-7 gap-[5px] text-center", children: getCalendarDates().map((week, weekIndex) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_react32.Fragment, { children: week.map((dateObj, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
11357
- day_default,
11358
- {
11359
- variant: getDayProps(dateObj),
11360
- onClick: () => handleDateSelect(dateObj.date, dateObj.currentMonth),
11361
- children: dateObj.date
11362
- },
11363
- index
11364
- )) }, weekIndex)) }),
11365
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex justify-between px-[10px]", children: [
11561
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex h-[30px] justify-between px-[10px]", children: [
11366
11562
  /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
11367
11563
  text_button_default,
11368
11564
  {
@@ -11408,13 +11604,11 @@ var datePickerStyle = tv({
11408
11604
  "rounded-xl",
11409
11605
  "bg-body-background",
11410
11606
  "shadow-drop-xl",
11411
- "gap-[5px]",
11412
11607
  "overflow-auto",
11413
- "w-[300px]",
11414
11608
  "select-none",
11415
11609
  "p-[10px]"
11416
11610
  ],
11417
- calendarHead: ["calendar-header", "flex", "items-center", "justify-between", "h-[40px]"],
11611
+ calendarHead: ["calendar-header", "flex", "items-center", "justify-between", "h-[40px]", "w-[280px]"],
11418
11612
  inputBase: [],
11419
11613
  inputWrapper: [],
11420
11614
  input: [],
@@ -11426,13 +11620,19 @@ var datePickerStyle = tv({
11426
11620
  color: { primary: {}, secondary: {} },
11427
11621
  size: { sm: {}, md: {}, lg: {}, xl: {} },
11428
11622
  full: { true: { base: ["w-full"] } },
11429
- disabled: { true: { base: ["pointer-events-none"] } }
11623
+ disabled: { true: { base: ["pointer-events-none"] } },
11624
+ dualCalendar: {
11625
+ true: { calendarWrapper: ["w-fit", "gap-[10px]"] },
11626
+ false: { calendarWrapper: ["w-[300px]", "gap-[5px]"] }
11627
+ }
11430
11628
  },
11431
11629
  defaultVariants: {
11432
11630
  color: "primary",
11433
11631
  size: "md",
11434
11632
  full: false,
11435
- disabled: false
11633
+ disabled: false,
11634
+ range: false,
11635
+ dualCalendar: false
11436
11636
  }
11437
11637
  });
11438
11638
 
package/dist/index.mjs CHANGED
@@ -2,16 +2,16 @@
2
2
  import "./chunk-MBLZYQCN.mjs";
3
3
  import {
4
4
  tree_default
5
- } from "./chunk-UOVPR2VJ.mjs";
5
+ } from "./chunk-HLWNJLRZ.mjs";
6
6
  import "./chunk-LUWGOKLG.mjs";
7
7
  import {
8
8
  ToastProvider,
9
9
  useToast
10
- } from "./chunk-UMMZ7NI5.mjs";
10
+ } from "./chunk-QJUPHJN6.mjs";
11
11
  import "./chunk-ZOTHPHXA.mjs";
12
12
  import {
13
13
  toast_default
14
- } from "./chunk-EOP4227J.mjs";
14
+ } from "./chunk-DQ3ZRNX4.mjs";
15
15
  import "./chunk-HIE2YRGA.mjs";
16
16
  import {
17
17
  tooltip_default
@@ -21,7 +21,7 @@ import "./chunk-WSIADHVC.mjs";
21
21
  import "./chunk-DX3KXNP6.mjs";
22
22
  import {
23
23
  table_default
24
- } from "./chunk-63IEPEKU.mjs";
24
+ } from "./chunk-JJAPJQUD.mjs";
25
25
  import "./chunk-3MY6LO7N.mjs";
26
26
  import {
27
27
  tabs_default
@@ -48,22 +48,22 @@ import {
48
48
  import "./chunk-7B7LRG5J.mjs";
49
49
  import {
50
50
  pagination_default
51
- } from "./chunk-67A5TV7C.mjs";
51
+ } from "./chunk-MGGBCCZL.mjs";
52
52
  import "./chunk-F3HENRVM.mjs";
53
53
  import "./chunk-4VWG4726.mjs";
54
54
  import {
55
55
  datePicker_default
56
- } from "./chunk-5MQZ7SDK.mjs";
56
+ } from "./chunk-T7IJB3N4.mjs";
57
57
  import {
58
58
  day_default
59
59
  } from "./chunk-4DESGO3D.mjs";
60
60
  import {
61
61
  timePicker_default
62
- } from "./chunk-CSZQLOP5.mjs";
62
+ } from "./chunk-T6V6BJOT.mjs";
63
63
  import "./chunk-QCEKPS7U.mjs";
64
64
  import {
65
65
  select_default
66
- } from "./chunk-5HMTKXVV.mjs";
66
+ } from "./chunk-SHI7P4DQ.mjs";
67
67
  import "./chunk-FWFEKWWD.mjs";
68
68
  import "./chunk-7MVEAQ7Z.mjs";
69
69
  import {
@@ -71,15 +71,15 @@ import {
71
71
  } from "./chunk-3IILPVRA.mjs";
72
72
  import {
73
73
  listItem_default
74
- } from "./chunk-7HWPWDYW.mjs";
74
+ } from "./chunk-ACFDUCPL.mjs";
75
75
  import "./chunk-DJOG6Z35.mjs";
76
76
  import {
77
77
  modal_default
78
- } from "./chunk-J64OQUOI.mjs";
78
+ } from "./chunk-IN6M25YL.mjs";
79
79
  import "./chunk-MGEWSREV.mjs";
80
80
  import {
81
81
  chip_default
82
- } from "./chunk-6EMUORXZ.mjs";
82
+ } from "./chunk-5KOTQEFC.mjs";
83
83
  import "./chunk-32GA3YW4.mjs";
84
84
  import {
85
85
  drawer_default
@@ -87,7 +87,7 @@ import {
87
87
  import "./chunk-RLXOHILK.mjs";
88
88
  import {
89
89
  fileUpload_default
90
- } from "./chunk-ZF25F457.mjs";
90
+ } from "./chunk-ZUAOUHWS.mjs";
91
91
  import "./chunk-7VOQKIIK.mjs";
92
92
  import {
93
93
  progress_default
@@ -95,7 +95,7 @@ import {
95
95
  import "./chunk-2GCSFWHD.mjs";
96
96
  import {
97
97
  input_default
98
- } from "./chunk-WWSQIDWW.mjs";
98
+ } from "./chunk-BFC4VP3B.mjs";
99
99
  import "./chunk-VYNBJBXD.mjs";
100
100
  import {
101
101
  areaChart_default
@@ -124,7 +124,7 @@ import {
124
124
  import "./chunk-KYIODWXL.mjs";
125
125
  import {
126
126
  breadcrumb_default
127
- } from "./chunk-LWSGRTWO.mjs";
127
+ } from "./chunk-PO4H65C3.mjs";
128
128
  import "./chunk-MY5U63QO.mjs";
129
129
  import {
130
130
  text_button_default
@@ -134,10 +134,10 @@ import {
134
134
  } from "./chunk-ITWKPTSD.mjs";
135
135
  import {
136
136
  button_default
137
- } from "./chunk-6F4GD2PP.mjs";
137
+ } from "./chunk-73NBUI4Y.mjs";
138
138
  import {
139
139
  icon_button_default
140
- } from "./chunk-WYEUAXY7.mjs";
140
+ } from "./chunk-DSEF7GGB.mjs";
141
141
  import "./chunk-6WSACUIB.mjs";
142
142
  import "./chunk-LXHUO6VM.mjs";
143
143
  import "./chunk-SZL743JC.mjs";
@@ -145,7 +145,7 @@ import "./chunk-ZYIIXWVY.mjs";
145
145
  import {
146
146
  Icon_default,
147
147
  iconTemplate
148
- } from "./chunk-Q6BXFXQM.mjs";
148
+ } from "./chunk-LBJN5TAP.mjs";
149
149
  import "./chunk-NMSDSEBD.mjs";
150
150
  import {
151
151
  accordion_default
@@ -157,8 +157,8 @@ import "./chunk-E3G5QXSH.mjs";
157
157
  import "./chunk-7DLOYKVC.mjs";
158
158
  import {
159
159
  avatar_default
160
- } from "./chunk-H3UI2ZNK.mjs";
161
- import "./chunk-NX4FTFY3.mjs";
160
+ } from "./chunk-NB45YSED.mjs";
161
+ import "./chunk-VUMESK5D.mjs";
162
162
  import {
163
163
  deepnoidUi,
164
164
  tv
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepnoid/ui",
3
- "version": "0.1.155",
3
+ "version": "0.1.157",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "exports": {