@misael703/ui 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/chunk-IMHLJKYR.mjs +176 -0
  2. package/dist/chunk-IMHLJKYR.mjs.map +1 -0
  3. package/dist/{chunk-Y6CBRW2S.js → chunk-K5S3SV2U.js} +51 -52
  4. package/dist/chunk-K5S3SV2U.js.map +1 -0
  5. package/dist/chunk-N2Y2KWX5.mjs +216 -0
  6. package/dist/chunk-N2Y2KWX5.mjs.map +1 -0
  7. package/dist/{chunk-HU7RYXQK.js → chunk-N7LFCAAY.js} +59 -63
  8. package/dist/chunk-N7LFCAAY.js.map +1 -0
  9. package/dist/{chunk-MPGASTSK.mjs → chunk-OHCS5CYV.mjs} +51 -52
  10. package/dist/chunk-OHCS5CYV.mjs.map +1 -0
  11. package/dist/chunk-V7MK42GX.js +238 -0
  12. package/dist/chunk-V7MK42GX.js.map +1 -0
  13. package/dist/chunk-VR4OXVKE.js +198 -0
  14. package/dist/chunk-VR4OXVKE.js.map +1 -0
  15. package/dist/{chunk-QCVIN2ET.mjs → chunk-YFLVB62R.mjs} +59 -63
  16. package/dist/chunk-YFLVB62R.mjs.map +1 -0
  17. package/dist/components/AdvancedPickers.js +5 -5
  18. package/dist/components/AdvancedPickers.mjs +1 -1
  19. package/dist/components/Menubar.js +5 -2
  20. package/dist/components/Menubar.mjs +4 -1
  21. package/dist/components/NavigationMenu.js +5 -2
  22. package/dist/components/NavigationMenu.mjs +4 -1
  23. package/dist/components/Pickers.js +4 -4
  24. package/dist/components/Pickers.mjs +1 -1
  25. package/dist/index.js +13 -13
  26. package/dist/index.mjs +4 -4
  27. package/dist/styles.css +1 -1
  28. package/dist/tokens.css +1 -1
  29. package/package.json +1 -1
  30. package/dist/chunk-HU7RYXQK.js.map +0 -1
  31. package/dist/chunk-JDOXRLZW.js +0 -138
  32. package/dist/chunk-JDOXRLZW.js.map +0 -1
  33. package/dist/chunk-MPGASTSK.mjs.map +0 -1
  34. package/dist/chunk-OCE4ODTM.mjs +0 -116
  35. package/dist/chunk-OCE4ODTM.mjs.map +0 -1
  36. package/dist/chunk-QCVIN2ET.mjs.map +0 -1
  37. package/dist/chunk-QI6TVWWF.js +0 -121
  38. package/dist/chunk-QI6TVWWF.js.map +0 -1
  39. package/dist/chunk-Y6CBRW2S.js.map +0 -1
  40. package/dist/chunk-YBOTLQ3G.mjs +0 -99
  41. package/dist/chunk-YBOTLQ3G.mjs.map +0 -1
@@ -6,7 +6,6 @@ import { useLocale } from './chunk-ZRFSTYRL.mjs';
6
6
  import { X, CalendarIcon, ChevronLeft, ChevronRight } from './chunk-CIBJKJV3.mjs';
7
7
  import { cx } from './chunk-IEPCH3JB.mjs';
8
8
  import * as React from 'react';
9
- import { createPortal } from 'react-dom';
10
9
  import { jsxs, jsx } from 'react/jsx-runtime';
11
10
 
12
11
  var defaultFilter = (o, q) => o.label.toLowerCase().includes(q.toLowerCase());
@@ -183,22 +182,17 @@ function DatePicker({
183
182
  const [view, setView] = React.useState(() => startOfMonth(value ?? /* @__PURE__ */ new Date()));
184
183
  const wrapRef = React.useRef(null);
185
184
  const popoverRef = React.useRef(null);
186
- const [coords, setCoords] = React.useState(null);
187
- React.useEffect(() => {
188
- const onClick = (e) => {
189
- const target = e.target;
190
- if (wrapRef.current?.contains(target)) return;
191
- if (popoverRef.current?.contains(target)) return;
192
- setOpen(false);
193
- };
194
- document.addEventListener("mousedown", onClick);
195
- return () => document.removeEventListener("mousedown", onClick);
196
- }, []);
197
- React.useEffect(() => {
198
- if (!open || !wrapRef.current) return;
199
- const t = wrapRef.current.getBoundingClientRect();
200
- setCoords({ top: t.bottom + 4 + window.scrollY, left: t.left + window.scrollX });
201
- }, [open]);
185
+ const pos = usePopoverPosition(wrapRef, popoverRef, {
186
+ open,
187
+ side: "bottom",
188
+ align: "start",
189
+ offset: 4
190
+ });
191
+ useDismiss({
192
+ open,
193
+ onDismiss: () => setOpen(false),
194
+ refs: [wrapRef, popoverRef]
195
+ });
202
196
  React.useEffect(() => {
203
197
  if (value) setView(startOfMonth(value));
204
198
  }, [value]);
@@ -238,52 +232,54 @@ function DatePicker({
238
232
  children: /* @__PURE__ */ jsx(CalendarIcon, { size: 16 })
239
233
  }
240
234
  ),
241
- open && typeof document !== "undefined" && createPortal(
242
- /* @__PURE__ */ jsxs(
243
- "div",
244
- {
245
- ref: popoverRef,
246
- className: "datepicker__popover",
247
- role: "dialog",
248
- style: coords ? { position: "absolute", top: coords.top, left: coords.left } : { position: "absolute", visibility: "hidden" },
249
- children: [
250
- /* @__PURE__ */ jsxs("div", { className: "datepicker__nav", children: [
251
- /* @__PURE__ */ jsx("button", { type: "button", onClick: () => setView((v) => addMonths(v, -1)), "aria-label": locale["calendar.prevMonth"], children: /* @__PURE__ */ jsx(ChevronLeft, { size: 16 }) }),
252
- /* @__PURE__ */ jsxs("span", { className: "datepicker__title", children: [
253
- months[view.getMonth()],
254
- " ",
255
- view.getFullYear()
256
- ] }),
257
- /* @__PURE__ */ jsx("button", { type: "button", onClick: () => setView((v) => addMonths(v, 1)), "aria-label": locale["calendar.nextMonth"], children: /* @__PURE__ */ jsx(ChevronRight, { size: 16 }) })
235
+ open && /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(
236
+ "div",
237
+ {
238
+ ref: popoverRef,
239
+ className: cx("datepicker__popover", "is-floating"),
240
+ role: "dialog",
241
+ style: {
242
+ position: "absolute",
243
+ top: pos.top,
244
+ left: pos.left,
245
+ visibility: pos.ready ? "visible" : "hidden"
246
+ },
247
+ children: [
248
+ /* @__PURE__ */ jsxs("div", { className: "datepicker__nav", children: [
249
+ /* @__PURE__ */ jsx("button", { type: "button", onClick: () => setView((v) => addMonths(v, -1)), "aria-label": locale["calendar.prevMonth"], children: /* @__PURE__ */ jsx(ChevronLeft, { size: 16 }) }),
250
+ /* @__PURE__ */ jsxs("span", { className: "datepicker__title", children: [
251
+ months[view.getMonth()],
252
+ " ",
253
+ view.getFullYear()
258
254
  ] }),
259
- /* @__PURE__ */ jsxs("div", { className: "datepicker__grid", children: [
260
- weekdays.map((w, i) => /* @__PURE__ */ jsx("span", { className: "datepicker__dow", children: w }, i)),
261
- cells.map((d, i) => {
262
- if (!d) return /* @__PURE__ */ jsx("span", {}, `b${i}`);
263
- const sel = value && isSameDay(d, value);
264
- const today = isSameDay(d, /* @__PURE__ */ new Date());
265
- const off = isDisabled(d);
266
- return /* @__PURE__ */ jsx(
267
- "button",
268
- {
269
- type: "button",
270
- className: cx("datepicker__day", sel && "is-selected", today && "is-today", off && "is-disabled"),
271
- disabled: !!off,
272
- onClick: () => {
273
- onChange(d);
274
- setOpen(false);
275
- },
276
- children: d.getDate()
255
+ /* @__PURE__ */ jsx("button", { type: "button", onClick: () => setView((v) => addMonths(v, 1)), "aria-label": locale["calendar.nextMonth"], children: /* @__PURE__ */ jsx(ChevronRight, { size: 16 }) })
256
+ ] }),
257
+ /* @__PURE__ */ jsxs("div", { className: "datepicker__grid", children: [
258
+ weekdays.map((w, i) => /* @__PURE__ */ jsx("span", { className: "datepicker__dow", children: w }, i)),
259
+ cells.map((d, i) => {
260
+ if (!d) return /* @__PURE__ */ jsx("span", {}, `b${i}`);
261
+ const sel = value && isSameDay(d, value);
262
+ const today = isSameDay(d, /* @__PURE__ */ new Date());
263
+ const off = isDisabled(d);
264
+ return /* @__PURE__ */ jsx(
265
+ "button",
266
+ {
267
+ type: "button",
268
+ className: cx("datepicker__day", sel && "is-selected", today && "is-today", off && "is-disabled"),
269
+ disabled: !!off,
270
+ onClick: () => {
271
+ onChange(d);
272
+ setOpen(false);
277
273
  },
278
- i
279
- );
280
- })
281
- ] })
282
- ]
283
- }
284
- ),
285
- document.body
286
- )
274
+ children: d.getDate()
275
+ },
276
+ i
277
+ );
278
+ })
279
+ ] })
280
+ ]
281
+ }
282
+ ) })
287
283
  ] });
288
284
  }
289
285
  function FileUpload({
@@ -351,5 +347,5 @@ function FileUpload({
351
347
  }
352
348
 
353
349
  export { Combobox, DatePicker, FileUpload };
354
- //# sourceMappingURL=chunk-QCVIN2ET.mjs.map
355
- //# sourceMappingURL=chunk-QCVIN2ET.mjs.map
350
+ //# sourceMappingURL=chunk-YFLVB62R.mjs.map
351
+ //# sourceMappingURL=chunk-YFLVB62R.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Pickers.tsx"],"names":[],"mappings":"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","file":"chunk-YFLVB62R.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { CalendarIcon, ChevronLeft, ChevronRight, X } from './Icons';\nimport { resolveDateFormat, formatDate, parseDate, dateFormatPlaceholder, type DateFormat } from '../utils/dateFormat';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\n// ---------- Combobox -----------------------------------------------------\nexport interface ComboboxOption<T = string> {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxProps<T = string> {\n value: T | null;\n onChange: (value: T | null) => void;\n options: ComboboxOption<T>[];\n placeholder?: string;\n emptyMessage?: string;\n filter?: (option: ComboboxOption<T>, query: string) => boolean;\n className?: string;\n invalid?: boolean;\n disabled?: boolean;\n id?: string;\n}\n\nconst defaultFilter = <T,>(o: ComboboxOption<T>, q: string) =>\n o.label.toLowerCase().includes(q.toLowerCase());\n\nexport function Combobox<T = string>({\n value, onChange, options, placeholder,\n emptyMessage, filter = defaultFilter,\n className, invalid, disabled, id,\n}: ComboboxProps<T>) {\n const locale = useLocale();\n const ph = placeholder ?? locale['common.search'];\n const empty = emptyMessage ?? locale['common.noResults'];\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState('');\n const [active, setActive] = React.useState(0);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n // Stable per-instance listbox id so multiple Comboboxes don't collide on aria-controls.\n const reactId = React.useId();\n const listboxId = `${id ?? reactId}-listbox`;\n\n const selected = React.useMemo(\n () => options.find((o) => o.value === value) ?? null,\n [options, value]\n );\n const filtered = React.useMemo(\n () => (query ? options.filter((o) => filter(o, query)) : options),\n [options, query, filter]\n );\n\n const pos = usePopoverPosition(wrapRef, listRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n matchAnchorWidth: true,\n });\n\n // Escape is handled by the input's onKeyDown; here we only need\n // outside-click (closeOnEscape: false avoids a double close).\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, listRef],\n closeOnEscape: false,\n });\n\n React.useEffect(() => { setActive(0); }, [query, open]);\n\n const onKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n setActive((a) => Math.min(filtered.length - 1, a + 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActive((a) => Math.max(0, a - 1));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n const opt = filtered[active];\n if (opt && !opt.disabled) {\n onChange(opt.value);\n setQuery('');\n setOpen(false);\n }\n } else if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n return (\n <div ref={wrapRef} className={cx('combobox', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={listboxId}\n className=\"combobox__input\"\n placeholder={ph}\n disabled={disabled}\n value={open ? query : selected?.label ?? ''}\n onFocus={() => setOpen(true)}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onKeyDown={onKey}\n />\n {selected && !open && (\n <button\n type=\"button\"\n className=\"combobox__clear\"\n onClick={() => { onChange(null); setQuery(''); inputRef.current?.focus(); }}\n aria-label={locale['picker.clearSelection']}\n ><X size={16} /></button>\n )}\n {open && (\n <Portal>\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n className={cx('combobox__list', 'is-floating')}\n style={{\n position: 'absolute',\n top: pos.top,\n left: pos.left,\n width: pos.width,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {filtered.length === 0 ? (\n <li className=\"combobox__empty\">{empty}</li>\n ) : (\n filtered.map((o, i) => (\n <li\n key={String(o.value)}\n role=\"option\"\n aria-selected={o.value === value}\n aria-disabled={o.disabled}\n className={cx('combobox__option', i === active && 'is-active', o.value === value && 'is-selected', o.disabled && 'is-disabled')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => {\n e.preventDefault();\n if (o.disabled) return;\n onChange(o.value);\n setQuery('');\n setOpen(false);\n }}\n >\n <span className=\"combobox__option-label\">{o.label}</span>\n {o.description && <span className=\"combobox__option-desc\">{o.description}</span>}\n </li>\n ))\n )}\n </ul>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- DatePicker (text + calendar popover) -------------------------\nfunction startOfMonth(d: Date) { return new Date(d.getFullYear(), d.getMonth(), 1); }\nfunction addMonths(d: Date, n: number) { return new Date(d.getFullYear(), d.getMonth() + n, 1); }\nfunction isSameDay(a: Date, b: Date) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nexport interface DatePickerProps {\n value: Date | null;\n onChange: (date: Date | null) => void;\n minDate?: Date;\n maxDate?: Date;\n placeholder?: string;\n disabled?: boolean;\n invalid?: boolean;\n className?: string;\n id?: string;\n /**\n * Display & parse format. Default `'auto'` derives from `configureBrand().locale`\n * (e.g. `es-CL` → `dd-mm-aaaa`, `en-US` → `mm-dd-aaaa`, `ja-JP` → `aaaa-mm-dd`).\n */\n format?: DateFormat;\n}\n\nexport function DatePicker({\n value, onChange, minDate, maxDate, placeholder,\n disabled, invalid, className, id, format = 'auto',\n}: DatePickerProps) {\n const locale = useLocale();\n const fmt = resolveDateFormat(format);\n const ph = placeholder ?? dateFormatPlaceholder(fmt);\n const weekdays = locale['picker.weekdaysShort'];\n const months = locale['calendar.months'];\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState(() => startOfMonth(value ?? new Date()));\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n\n // Portaled to body (escapes overflow ancestors) with flip/clamp and\n // scroll/resize reposition — same primitive as Combobox above. No\n // returnFocusRef: the input opens on focus, so refocusing it on close\n // would immediately reopen the calendar (Combobox omits it for the same\n // reason). Escape still closes via useDismiss's default handler.\n const pos = usePopoverPosition(wrapRef, popoverRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n });\n\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, popoverRef],\n });\n\n React.useEffect(() => {\n if (value) setView(startOfMonth(value));\n }, [value]);\n\n const monthStart = view;\n const startDow = (monthStart.getDay() + 6) % 7; // Mon=0\n const daysInMonth = new Date(view.getFullYear(), view.getMonth() + 1, 0).getDate();\n const cells: (Date | null)[] = [];\n for (let i = 0; i < startDow; i++) cells.push(null);\n for (let d = 1; d <= daysInMonth; d++) cells.push(new Date(view.getFullYear(), view.getMonth(), d));\n\n const isDisabled = (d: Date) =>\n (minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) ||\n (maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()));\n\n return (\n <div ref={wrapRef} className={cx('datepicker', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <input\n id={id}\n type=\"text\"\n className=\"datepicker__input\"\n placeholder={ph}\n disabled={disabled}\n value={value ? formatDate(value, fmt) : ''}\n onChange={(e) => {\n const d = parseDate(e.target.value, fmt);\n onChange(d);\n }}\n onFocus={() => setOpen(true)}\n aria-invalid={invalid || undefined}\n />\n <button\n type=\"button\"\n className=\"datepicker__toggle\"\n onClick={() => setOpen((o) => !o)}\n disabled={disabled}\n aria-label={locale['picker.openCalendar']}\n ><CalendarIcon size={16} /></button>\n {open && (\n <Portal>\n <div\n ref={popoverRef}\n className={cx('datepicker__popover', 'is-floating')}\n role=\"dialog\"\n style={{\n position: 'absolute',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n <div className=\"datepicker__nav\">\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, -1))} aria-label={locale['calendar.prevMonth']}><ChevronLeft size={16} /></button>\n <span className=\"datepicker__title\">{months[view.getMonth()]} {view.getFullYear()}</span>\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, 1))} aria-label={locale['calendar.nextMonth']}><ChevronRight size={16} /></button>\n </div>\n <div className=\"datepicker__grid\">\n {weekdays.map((w, i) => <span key={i} className=\"datepicker__dow\">{w}</span>)}\n {cells.map((d, i) => {\n if (!d) return <span key={`b${i}`} />;\n const sel = value && isSameDay(d, value);\n const today = isSameDay(d, new Date());\n const off = isDisabled(d);\n return (\n <button\n key={i}\n type=\"button\"\n className={cx('datepicker__day', sel && 'is-selected', today && 'is-today', off && 'is-disabled')}\n disabled={!!off}\n onClick={() => { onChange(d); setOpen(false); }}\n >\n {d.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- FileUpload (drop zone) ---------------------------------------\nexport interface FileUploadProps {\n onFiles: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // bytes\n disabled?: boolean;\n className?: string;\n hint?: React.ReactNode;\n /** Accessible name for the drop zone (e.g. \"Subir foto de perfil\"). */\n 'aria-label'?: string;\n}\n\nexport function FileUpload({\n onFiles, accept, multiple = false, maxSize, disabled, className, hint,\n 'aria-label': ariaLabel,\n}: FileUploadProps) {\n const [drag, setDrag] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const hintId = React.useId();\n const locale = useLocale();\n const handle = (list: FileList | null) => {\n if (!list) return;\n let arr = Array.from(list);\n if (maxSize) arr = arr.filter((f) => f.size <= maxSize);\n if (!multiple) arr = arr.slice(0, 1);\n onFiles(arr);\n };\n return (\n <div\n className={cx('file-upload', drag && 'is-drag', disabled && 'is-disabled', className)}\n onDragOver={(e) => { e.preventDefault(); if (!disabled) setDrag(true); }}\n onDragLeave={() => setDrag(false)}\n onDrop={(e) => { e.preventDefault(); setDrag(false); if (!disabled) handle(e.dataTransfer.files); }}\n onClick={() => !disabled && inputRef.current?.click()}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel}\n aria-describedby={hint ? hintId : undefined}\n onKeyDown={(e) => { if ((e.key === 'Enter' || e.key === ' ') && !disabled) inputRef.current?.click(); }}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n hidden\n onChange={(e) => handle(e.target.files)}\n />\n <div className=\"file-upload__icon\" aria-hidden=\"true\">⤴</div>\n <div className=\"file-upload__title\">{locale['fileUpload.title']}</div>\n {hint && <div id={hintId} className=\"file-upload__hint\">{hint}</div>}\n </div>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkY6CBRW2S_js = require('../chunk-Y6CBRW2S.js');
3
+ var chunkK5S3SV2U_js = require('../chunk-K5S3SV2U.js');
4
4
  require('../chunk-6LOJIU3C.js');
5
5
  require('../chunk-LIGJBHXU.js');
6
6
  require('../chunk-XMLBKK7X.js');
@@ -15,19 +15,19 @@ require('../chunk-PASF6T4H.js');
15
15
 
16
16
  Object.defineProperty(exports, "CommandPalette", {
17
17
  enumerable: true,
18
- get: function () { return chunkY6CBRW2S_js.CommandPalette; }
18
+ get: function () { return chunkK5S3SV2U_js.CommandPalette; }
19
19
  });
20
20
  Object.defineProperty(exports, "DateRangePicker", {
21
21
  enumerable: true,
22
- get: function () { return chunkY6CBRW2S_js.DateRangePicker; }
22
+ get: function () { return chunkK5S3SV2U_js.DateRangePicker; }
23
23
  });
24
24
  Object.defineProperty(exports, "MultiCombobox", {
25
25
  enumerable: true,
26
- get: function () { return chunkY6CBRW2S_js.MultiCombobox; }
26
+ get: function () { return chunkK5S3SV2U_js.MultiCombobox; }
27
27
  });
28
28
  Object.defineProperty(exports, "useCommandPalette", {
29
29
  enumerable: true,
30
- get: function () { return chunkY6CBRW2S_js.useCommandPalette; }
30
+ get: function () { return chunkK5S3SV2U_js.useCommandPalette; }
31
31
  });
32
32
  //# sourceMappingURL=AdvancedPickers.js.map
33
33
  //# sourceMappingURL=AdvancedPickers.js.map
@@ -1,4 +1,4 @@
1
- export { CommandPalette, DateRangePicker, MultiCombobox, useCommandPalette } from '../chunk-MPGASTSK.mjs';
1
+ export { CommandPalette, DateRangePicker, MultiCombobox, useCommandPalette } from '../chunk-OHCS5CYV.mjs';
2
2
  import '../chunk-BCIZLGM3.mjs';
3
3
  import '../chunk-KKOJI25C.mjs';
4
4
  import '../chunk-6P2TKRTL.mjs';
@@ -1,13 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunkQI6TVWWF_js = require('../chunk-QI6TVWWF.js');
3
+ var chunkV7MK42GX_js = require('../chunk-V7MK42GX.js');
4
+ require('../chunk-XMLBKK7X.js');
5
+ require('../chunk-DPMUWQHL.js');
6
+ require('../chunk-GLYGO7WX.js');
4
7
  require('../chunk-PASF6T4H.js');
5
8
 
6
9
 
7
10
 
8
11
  Object.defineProperty(exports, "Menubar", {
9
12
  enumerable: true,
10
- get: function () { return chunkQI6TVWWF_js.Menubar; }
13
+ get: function () { return chunkV7MK42GX_js.Menubar; }
11
14
  });
12
15
  //# sourceMappingURL=Menubar.js.map
13
16
  //# sourceMappingURL=Menubar.js.map
@@ -1,4 +1,7 @@
1
- export { Menubar } from '../chunk-YBOTLQ3G.mjs';
1
+ export { Menubar } from '../chunk-N2Y2KWX5.mjs';
2
+ import '../chunk-6P2TKRTL.mjs';
3
+ import '../chunk-H3PRT76O.mjs';
4
+ import '../chunk-QX5GGPV5.mjs';
2
5
  import '../chunk-IEPCH3JB.mjs';
3
6
  //# sourceMappingURL=Menubar.mjs.map
4
7
  //# sourceMappingURL=Menubar.mjs.map
@@ -1,6 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkJDOXRLZW_js = require('../chunk-JDOXRLZW.js');
3
+ var chunkVR4OXVKE_js = require('../chunk-VR4OXVKE.js');
4
+ require('../chunk-XMLBKK7X.js');
5
+ require('../chunk-DPMUWQHL.js');
6
+ require('../chunk-GLYGO7WX.js');
4
7
  require('../chunk-RQOTH7I7.js');
5
8
  require('../chunk-PASF6T4H.js');
6
9
 
@@ -8,7 +11,7 @@ require('../chunk-PASF6T4H.js');
8
11
 
9
12
  Object.defineProperty(exports, "NavigationMenu", {
10
13
  enumerable: true,
11
- get: function () { return chunkJDOXRLZW_js.NavigationMenu; }
14
+ get: function () { return chunkVR4OXVKE_js.NavigationMenu; }
12
15
  });
13
16
  //# sourceMappingURL=NavigationMenu.js.map
14
17
  //# sourceMappingURL=NavigationMenu.js.map
@@ -1,4 +1,7 @@
1
- export { NavigationMenu } from '../chunk-OCE4ODTM.mjs';
1
+ export { NavigationMenu } from '../chunk-IMHLJKYR.mjs';
2
+ import '../chunk-6P2TKRTL.mjs';
3
+ import '../chunk-H3PRT76O.mjs';
4
+ import '../chunk-QX5GGPV5.mjs';
2
5
  import '../chunk-CIBJKJV3.mjs';
3
6
  import '../chunk-IEPCH3JB.mjs';
4
7
  //# sourceMappingURL=NavigationMenu.mjs.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkHU7RYXQK_js = require('../chunk-HU7RYXQK.js');
3
+ var chunkN7LFCAAY_js = require('../chunk-N7LFCAAY.js');
4
4
  require('../chunk-6LOJIU3C.js');
5
5
  require('../chunk-XMLBKK7X.js');
6
6
  require('../chunk-DPMUWQHL.js');
@@ -14,15 +14,15 @@ require('../chunk-PASF6T4H.js');
14
14
 
15
15
  Object.defineProperty(exports, "Combobox", {
16
16
  enumerable: true,
17
- get: function () { return chunkHU7RYXQK_js.Combobox; }
17
+ get: function () { return chunkN7LFCAAY_js.Combobox; }
18
18
  });
19
19
  Object.defineProperty(exports, "DatePicker", {
20
20
  enumerable: true,
21
- get: function () { return chunkHU7RYXQK_js.DatePicker; }
21
+ get: function () { return chunkN7LFCAAY_js.DatePicker; }
22
22
  });
23
23
  Object.defineProperty(exports, "FileUpload", {
24
24
  enumerable: true,
25
- get: function () { return chunkHU7RYXQK_js.FileUpload; }
25
+ get: function () { return chunkN7LFCAAY_js.FileUpload; }
26
26
  });
27
27
  //# sourceMappingURL=Pickers.js.map
28
28
  //# sourceMappingURL=Pickers.js.map
@@ -1,4 +1,4 @@
1
- export { Combobox, DatePicker, FileUpload } from '../chunk-QCVIN2ET.mjs';
1
+ export { Combobox, DatePicker, FileUpload } from '../chunk-YFLVB62R.mjs';
2
2
  import '../chunk-BCIZLGM3.mjs';
3
3
  import '../chunk-6P2TKRTL.mjs';
4
4
  import '../chunk-H3PRT76O.mjs';
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  require('./chunk-427NHGTX.js');
4
4
  require('./chunk-4REALDR3.js');
5
5
  var chunkTZG34EYW_js = require('./chunk-TZG34EYW.js');
6
- var chunkHU7RYXQK_js = require('./chunk-HU7RYXQK.js');
6
+ var chunkN7LFCAAY_js = require('./chunk-N7LFCAAY.js');
7
7
  var chunkMUL2FKYF_js = require('./chunk-MUL2FKYF.js');
8
8
  var chunkGCW5JYWQ_js = require('./chunk-GCW5JYWQ.js');
9
9
  var chunkQHRP73CS_js = require('./chunk-QHRP73CS.js');
@@ -13,8 +13,8 @@ var chunk2JTBLDMK_js = require('./chunk-2JTBLDMK.js');
13
13
  var chunkKOIRRZRD_js = require('./chunk-KOIRRZRD.js');
14
14
  var chunkNU4GAGUV_js = require('./chunk-NU4GAGUV.js');
15
15
  var chunkADQM725E_js = require('./chunk-ADQM725E.js');
16
- var chunkQI6TVWWF_js = require('./chunk-QI6TVWWF.js');
17
- var chunkJDOXRLZW_js = require('./chunk-JDOXRLZW.js');
16
+ var chunkV7MK42GX_js = require('./chunk-V7MK42GX.js');
17
+ var chunkVR4OXVKE_js = require('./chunk-VR4OXVKE.js');
18
18
  var chunk3TNBETXR_js = require('./chunk-3TNBETXR.js');
19
19
  var chunkLXNHGGAK_js = require('./chunk-LXNHGGAK.js');
20
20
  var chunkUNOPDYA7_js = require('./chunk-UNOPDYA7.js');
@@ -33,7 +33,7 @@ var chunkIMFQ55KO_js = require('./chunk-IMFQ55KO.js');
33
33
  var chunk26KJA67X_js = require('./chunk-26KJA67X.js');
34
34
  var chunkOHMFYAB2_js = require('./chunk-OHMFYAB2.js');
35
35
  var chunk2S6JJYN7_js = require('./chunk-2S6JJYN7.js');
36
- var chunkY6CBRW2S_js = require('./chunk-Y6CBRW2S.js');
36
+ var chunkK5S3SV2U_js = require('./chunk-K5S3SV2U.js');
37
37
  var chunk6LOJIU3C_js = require('./chunk-6LOJIU3C.js');
38
38
  var chunkLIGJBHXU_js = require('./chunk-LIGJBHXU.js');
39
39
  var chunkXMLBKK7X_js = require('./chunk-XMLBKK7X.js');
@@ -57,15 +57,15 @@ Object.defineProperty(exports, "PermissionMatrix", {
57
57
  });
58
58
  Object.defineProperty(exports, "Combobox", {
59
59
  enumerable: true,
60
- get: function () { return chunkHU7RYXQK_js.Combobox; }
60
+ get: function () { return chunkN7LFCAAY_js.Combobox; }
61
61
  });
62
62
  Object.defineProperty(exports, "DatePicker", {
63
63
  enumerable: true,
64
- get: function () { return chunkHU7RYXQK_js.DatePicker; }
64
+ get: function () { return chunkN7LFCAAY_js.DatePicker; }
65
65
  });
66
66
  Object.defineProperty(exports, "FileUpload", {
67
67
  enumerable: true,
68
- get: function () { return chunkHU7RYXQK_js.FileUpload; }
68
+ get: function () { return chunkN7LFCAAY_js.FileUpload; }
69
69
  });
70
70
  Object.defineProperty(exports, "Popover", {
71
71
  enumerable: true,
@@ -237,11 +237,11 @@ Object.defineProperty(exports, "Testimonial", {
237
237
  });
238
238
  Object.defineProperty(exports, "Menubar", {
239
239
  enumerable: true,
240
- get: function () { return chunkQI6TVWWF_js.Menubar; }
240
+ get: function () { return chunkV7MK42GX_js.Menubar; }
241
241
  });
242
242
  Object.defineProperty(exports, "NavigationMenu", {
243
243
  enumerable: true,
244
- get: function () { return chunkJDOXRLZW_js.NavigationMenu; }
244
+ get: function () { return chunkVR4OXVKE_js.NavigationMenu; }
245
245
  });
246
246
  Object.defineProperty(exports, "NotificationCenter", {
247
247
  enumerable: true,
@@ -545,19 +545,19 @@ Object.defineProperty(exports, "Stat", {
545
545
  });
546
546
  Object.defineProperty(exports, "CommandPalette", {
547
547
  enumerable: true,
548
- get: function () { return chunkY6CBRW2S_js.CommandPalette; }
548
+ get: function () { return chunkK5S3SV2U_js.CommandPalette; }
549
549
  });
550
550
  Object.defineProperty(exports, "DateRangePicker", {
551
551
  enumerable: true,
552
- get: function () { return chunkY6CBRW2S_js.DateRangePicker; }
552
+ get: function () { return chunkK5S3SV2U_js.DateRangePicker; }
553
553
  });
554
554
  Object.defineProperty(exports, "MultiCombobox", {
555
555
  enumerable: true,
556
- get: function () { return chunkY6CBRW2S_js.MultiCombobox; }
556
+ get: function () { return chunkK5S3SV2U_js.MultiCombobox; }
557
557
  });
558
558
  Object.defineProperty(exports, "useCommandPalette", {
559
559
  enumerable: true,
560
- get: function () { return chunkY6CBRW2S_js.useCommandPalette; }
560
+ get: function () { return chunkK5S3SV2U_js.useCommandPalette; }
561
561
  });
562
562
  Object.defineProperty(exports, "dateFormatPlaceholder", {
563
563
  enumerable: true,
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import './chunk-BVQRDAR7.mjs';
2
2
  import './chunk-CHVTPN3K.mjs';
3
3
  export { PermissionMatrix } from './chunk-UB2XEZ7C.mjs';
4
- export { Combobox, DatePicker, FileUpload } from './chunk-QCVIN2ET.mjs';
4
+ export { Combobox, DatePicker, FileUpload } from './chunk-YFLVB62R.mjs';
5
5
  export { Popover } from './chunk-6RVCYULF.mjs';
6
6
  export { AspectRatio, ScrollArea, Separator } from './chunk-6MEOR4YO.mjs';
7
7
  export { ResizableGroup, ResizableHandle, ResizablePanel } from './chunk-ML5IYW5D.mjs';
@@ -11,8 +11,8 @@ export { CheckboxGroup, MoneyInput, PhoneInput, Progress, ProgressCircle, RadioG
11
11
  export { Container, Divider, Grid, HStack, KeyValue, KeyValueRow, ListGroup, ListGroupItem, Stack, Stepper, Tab, TabList, TabPanel, Table, Tabs, Tooltip, VStack } from './chunk-MM7VE7YN.mjs';
12
12
  export { Logo } from './chunk-JMFDIN5R.mjs';
13
13
  export { CategoryNav, Hero, Testimonial } from './chunk-X2DBGT7M.mjs';
14
- export { Menubar } from './chunk-YBOTLQ3G.mjs';
15
- export { NavigationMenu } from './chunk-OCE4ODTM.mjs';
14
+ export { Menubar } from './chunk-N2Y2KWX5.mjs';
15
+ export { NavigationMenu } from './chunk-IMHLJKYR.mjs';
16
16
  export { NotificationCenter } from './chunk-6PEC4RRO.mjs';
17
17
  export { ConfirmDialog, DescriptionList, DescriptionListItem, DiffViewer, TransferList } from './chunk-R76SJURE.mjs';
18
18
  export { BulkActionBar, FilterPanel, FilterSection, SortDropdown } from './chunk-PXCH5Z76.mjs';
@@ -31,7 +31,7 @@ export { EmptyState, Kpi, NumberInput, Pagination } from './chunk-PCRNKITV.mjs';
31
31
  export { Alert, Badge, Card, CardBody, CardFooter, CardHeader, Chip, ChipGroup, ProductCard, Skeleton, Spinner } from './chunk-SYX4GZ7E.mjs';
32
32
  export { Calendar, StatusIndicator, Timeline, TimelineItem, Tree, UserCell } from './chunk-IEJXZ67E.mjs';
33
33
  export { Avatar, AvatarGroup, Menu, Stat } from './chunk-OCLBAGNF.mjs';
34
- export { CommandPalette, DateRangePicker, MultiCombobox, useCommandPalette } from './chunk-MPGASTSK.mjs';
34
+ export { CommandPalette, DateRangePicker, MultiCombobox, useCommandPalette } from './chunk-OHCS5CYV.mjs';
35
35
  export { dateFormatPlaceholder, detectFormatFromLocale, formatDate, parseDate, resolveDateFormat } from './chunk-BCIZLGM3.mjs';
36
36
  export { format } from './chunk-KKOJI25C.mjs';
37
37
  export { useDismiss } from './chunk-6P2TKRTL.mjs';