@doscientos/ui 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -327,7 +327,7 @@ function getTextMatchParts(text, query) {
327
327
 
328
328
  // src/ui/accordion/accordion.tsx
329
329
  var import_react_aria_components = require("react-aria-components");
330
- var import_react4 = require("@phosphor-icons/react");
330
+ var import_lucide_react = require("lucide-react");
331
331
  var import_jsx_runtime = require("react/jsx-runtime");
332
332
  function Accordion({ className, ...props }) {
333
333
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_aria_components.DisclosureGroup, { "data-slot": "accordion", className: cn("flex w-full flex-col", className), ...props });
@@ -338,7 +338,7 @@ function AccordionItem({ className, ...props }) {
338
338
  function AccordionTrigger({ className, children, ...props }) {
339
339
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_aria_components.Button, { "data-slot": "accordion-trigger", className: cn("group/accordion-trigger flex w-full items-center justify-between py-3 text-left text-sm font-medium outline-none transition-colors hover:text-primary focus-visible:ring-3 focus-visible:ring-ring/50", className), ...props, children: (values) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
340
340
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: typeof children === "function" ? children(values) : children }),
341
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react4.CaretDownIcon, { "aria-hidden": "true", weight: "bold", className: "size-4 transition-transform group-data-expanded/accordion-trigger:rotate-180 motion-reduce:transition-none" })
341
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, { "aria-hidden": "true", className: "size-4 transition-transform group-data-expanded/accordion-trigger:rotate-180 motion-reduce:transition-none" })
342
342
  ] }) });
343
343
  }
344
344
  function AccordionContent({ className, ...props }) {
@@ -382,14 +382,14 @@ function AppShellContent({ className, ...props }) {
382
382
  }
383
383
 
384
384
  // src/ui/avatar/avatar.tsx
385
- var import_react5 = require("react");
385
+ var import_react4 = require("react");
386
386
  var import_jsx_runtime4 = require("react/jsx-runtime");
387
387
  var sizes = { xs: "size-5 text-[10px]", sm: "size-6 text-xs", default: "size-8 text-sm", lg: "size-10 text-base" };
388
388
  function Avatar({ className, size = "default", ...props }) {
389
389
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { "data-slot": "avatar", "data-size": size, className: cn("group/avatar relative flex shrink-0 overflow-hidden rounded-full bg-muted text-muted-foreground", sizes[size], className), ...props });
390
390
  }
391
391
  function AvatarImage({ className, ...props }) {
392
- const [failed, setFailed] = (0, import_react5.useState)(false);
392
+ const [failed, setFailed] = (0, import_react4.useState)(false);
393
393
  if (failed) return null;
394
394
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { "data-slot": "avatar-image", className: cn("aspect-square size-full object-cover", className), onError: () => setFailed(true), ...props });
395
395
  }
@@ -509,17 +509,17 @@ function CardFooter({ className, ...props }) {
509
509
 
510
510
  // src/ui/checkbox/checkbox.tsx
511
511
  var import_react_aria_components4 = require("react-aria-components");
512
- var import_react6 = require("@phosphor-icons/react");
512
+ var import_lucide_react2 = require("lucide-react");
513
513
  var import_jsx_runtime10 = require("react/jsx-runtime");
514
514
  function Checkbox({ className, children, ...props }) {
515
515
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_aria_components4.Checkbox, { "data-slot": "checkbox", className: cn("group inline-flex items-center gap-2 text-sm text-foreground data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: (state) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
516
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { "aria-hidden": "true", className: "grid size-4 place-items-center rounded border border-border bg-background text-primary-foreground transition-colors group-data-selected:border-primary group-data-selected:bg-primary group-data-focus-visible:ring-3 group-data-focus-visible:ring-ring/50", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react6.CheckIcon, { weight: "bold", className: "size-3 opacity-0 transition-opacity group-data-selected:opacity-100 motion-reduce:transition-none" }) }),
516
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { "aria-hidden": "true", className: "grid size-4 place-items-center rounded border border-border bg-background text-primary-foreground transition-colors group-data-selected:border-primary group-data-selected:bg-primary group-data-focus-visible:ring-3 group-data-focus-visible:ring-ring/50", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react2.Check, { className: "size-3 opacity-0 transition-opacity group-data-selected:opacity-100 motion-reduce:transition-none" }) }),
517
517
  typeof children === "function" ? children(state) : children
518
518
  ] }) });
519
519
  }
520
520
 
521
521
  // src/ui/combobox/combobox.tsx
522
- var import_react7 = require("react");
522
+ var import_react5 = require("react");
523
523
  var import_react_aria_components5 = require("react-aria-components");
524
524
  var import_jsx_runtime11 = require("react/jsx-runtime");
525
525
  var Combobox = import_react_aria_components5.ComboBox;
@@ -536,18 +536,18 @@ function ComboboxItem({ className, children, ...props }) {
536
536
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_react_aria_components5.ListBoxItem, { "data-slot": "combobox-item", className: cn("flex w-full cursor-default items-center justify-between rounded-md px-2 py-2 text-sm outline-none transition-colors data-focused:bg-muted data-focused:text-foreground data-hovered:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50", className), ...props, children });
537
537
  }
538
538
  function HighlightMatch({ text, query, className }) {
539
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className, children: getTextMatchParts(text, query).map((part, index) => part.match ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("mark", { className: "rounded bg-accent px-0.5 text-accent-foreground", children: part.text }, `${part.text}-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_react7.Fragment, { children: part.text }, `${part.text}-${index}`)) });
539
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className, children: getTextMatchParts(text, query).map((part, index) => part.match ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("mark", { className: "rounded bg-accent px-0.5 text-accent-foreground", children: part.text }, `${part.text}-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_react5.Fragment, { children: part.text }, `${part.text}-${index}`)) });
540
540
  }
541
541
  function AutocompleteCombobox({ items, getItemKey, getItemLabel, renderItem, inputValue: controlledInputValue, onInputChange, selectedKey, onSelectionChange, label, description, errorMessage, emptyState = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "px-3 py-7 text-center text-sm text-muted-foreground", children: "No hay resultados." }), suggestion = true, placeholder, className, onKeyDown: _onKeyDown, ...props }) {
542
- const [internalInputValue, setInternalInputValue] = (0, import_react7.useState)("");
542
+ const [internalInputValue, setInternalInputValue] = (0, import_react5.useState)("");
543
543
  const inputValue = controlledInputValue ?? internalInputValue;
544
544
  const setInputValue = (value) => {
545
545
  setInternalInputValue(value);
546
546
  onInputChange?.(value);
547
547
  };
548
548
  const normalizedQuery = inputValue.trim().toLocaleLowerCase();
549
- const filteredItems = (0, import_react7.useMemo)(() => normalizedQuery ? items.filter((item) => getItemLabel(item).toLocaleLowerCase().includes(normalizedQuery)) : [...items], [getItemLabel, items, normalizedQuery]);
550
- const suggestedItem = (0, import_react7.useMemo)(() => !suggestion || !normalizedQuery ? void 0 : items.find((item) => getItemLabel(item).toLocaleLowerCase().startsWith(normalizedQuery) && getItemLabel(item).length > inputValue.length), [getItemLabel, inputValue.length, items, normalizedQuery, suggestion]);
549
+ const filteredItems = (0, import_react5.useMemo)(() => normalizedQuery ? items.filter((item) => getItemLabel(item).toLocaleLowerCase().includes(normalizedQuery)) : [...items], [getItemLabel, items, normalizedQuery]);
550
+ const suggestedItem = (0, import_react5.useMemo)(() => !suggestion || !normalizedQuery ? void 0 : items.find((item) => getItemLabel(item).toLocaleLowerCase().startsWith(normalizedQuery) && getItemLabel(item).length > inputValue.length), [getItemLabel, inputValue.length, items, normalizedQuery, suggestion]);
551
551
  const suggestionLabel = suggestedItem ? getItemLabel(suggestedItem) : void 0;
552
552
  const acceptSuggestion = () => {
553
553
  if (!suggestedItem || !suggestionLabel) return false;
@@ -597,16 +597,16 @@ function CommandItem({ className, ...props }) {
597
597
  }
598
598
 
599
599
  // src/ui/dialog/dialog.tsx
600
- var import_react8 = require("react");
601
- var import_react9 = require("@phosphor-icons/react");
600
+ var import_react6 = require("react");
601
+ var import_lucide_react3 = require("lucide-react");
602
602
  var import_react_aria_components7 = require("react-aria-components");
603
603
  var import_jsx_runtime13 = require("react/jsx-runtime");
604
- var DialogCloseContext = (0, import_react8.createContext)(null);
604
+ var DialogCloseContext = (0, import_react6.createContext)(null);
605
605
  function Dialog({ open, children, ...props }) {
606
606
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react_aria_components7.ModalOverlay, { isOpen: open, className: "fixed inset-0 z-50 grid place-items-center bg-black/20 p-4 backdrop-blur-[1px] motion-safe:data-entering:animate-ui-overlay-in motion-safe:data-exiting:animate-ui-overlay-out", ...props, children });
607
607
  }
608
608
  function DialogClose({ onPress, ...props }) {
609
- const close = (0, import_react8.useContext)(DialogCloseContext);
609
+ const close = (0, import_react6.useContext)(DialogCloseContext);
610
610
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Button2, { onPress: (event) => {
611
611
  onPress?.(event);
612
612
  close?.();
@@ -615,7 +615,7 @@ function DialogClose({ onPress, ...props }) {
615
615
  function DialogContent({ className, children, showCloseButton = true, ...props }) {
616
616
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react_aria_components7.Modal, { className: "w-full max-w-md outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react_aria_components7.Dialog, { "data-slot": "dialog-content", className: cn("relative grid max-h-[calc(100dvh-2rem)] gap-4 overflow-y-auto rounded-xl bg-background p-5 text-foreground shadow-xl outline-none", className), ...props, children: ({ close }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(DialogCloseContext.Provider, { value: close, children: [
617
617
  typeof children === "function" ? children({ close }) : children,
618
- showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogClose, { "aria-label": "Cerrar di\xE1logo", variant: "ghost", size: "icon", className: "absolute top-2 right-2", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react9.XIcon, { "aria-hidden": "true", weight: "bold", className: "size-4" }) })
618
+ showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogClose, { "aria-label": "Cerrar di\xE1logo", variant: "ghost", size: "icon", className: "absolute top-2 right-2", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react3.X, { "aria-hidden": "true", className: "size-4" }) })
619
619
  ] }) }) });
620
620
  }
621
621
  function DialogHeader({ className, ...props }) {
@@ -694,10 +694,10 @@ function EmptyStateDescription({ className, ...props }) {
694
694
  }
695
695
 
696
696
  // src/ui/label/label.tsx
697
- var import_react10 = require("react");
697
+ var import_react7 = require("react");
698
698
  var import_react_aria_components10 = require("react-aria-components");
699
699
  var import_jsx_runtime18 = require("react/jsx-runtime");
700
- var Label2 = (0, import_react10.forwardRef)(function Label3({ className, ...props }, ref) {
700
+ var Label2 = (0, import_react7.forwardRef)(function Label3({ className, ...props }, ref) {
701
701
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_aria_components10.Label, { ref, "data-slot": "label", className: cn("flex items-center gap-2 text-sm font-medium leading-none select-none", className), ...props });
702
702
  });
703
703
 
@@ -718,32 +718,32 @@ function FieldError2({ className, children, ...props }) {
718
718
  }
719
719
 
720
720
  // src/ui/form-feedback/form-feedback.tsx
721
- var import_react11 = require("react");
722
- var import_react12 = require("@phosphor-icons/react");
721
+ var import_react8 = require("react");
722
+ var import_lucide_react4 = require("lucide-react");
723
723
  var import_jsx_runtime20 = require("react/jsx-runtime");
724
724
  function useFormFeedback(options) {
725
725
  const resetMs = options?.successResetMs ?? 2500;
726
- const [state, setState] = (0, import_react11.useState)({ status: "idle" });
727
- const timer = (0, import_react11.useRef)(null);
728
- const clearTimer = (0, import_react11.useCallback)(() => {
726
+ const [state, setState] = (0, import_react8.useState)({ status: "idle" });
727
+ const timer = (0, import_react8.useRef)(null);
728
+ const clearTimer = (0, import_react8.useCallback)(() => {
729
729
  if (timer.current) clearTimeout(timer.current);
730
730
  timer.current = null;
731
731
  }, []);
732
- (0, import_react11.useEffect)(() => () => clearTimer(), [clearTimer]);
733
- const setPending = (0, import_react11.useCallback)(() => {
732
+ (0, import_react8.useEffect)(() => () => clearTimer(), [clearTimer]);
733
+ const setPending = (0, import_react8.useCallback)(() => {
734
734
  clearTimer();
735
735
  setState({ status: "pending" });
736
736
  }, [clearTimer]);
737
- const setSuccess = (0, import_react11.useCallback)((message) => {
737
+ const setSuccess = (0, import_react8.useCallback)((message) => {
738
738
  clearTimer();
739
739
  setState({ status: "success", message });
740
740
  if (resetMs > 0) timer.current = setTimeout(() => setState({ status: "idle" }), resetMs);
741
741
  }, [clearTimer, resetMs]);
742
- const setError = (0, import_react11.useCallback)((message) => {
742
+ const setError = (0, import_react8.useCallback)((message) => {
743
743
  clearTimer();
744
744
  setState({ status: "error", message });
745
745
  }, [clearTimer]);
746
- const reset = (0, import_react11.useCallback)(() => {
746
+ const reset = (0, import_react8.useCallback)(() => {
747
747
  clearTimer();
748
748
  setState({ status: "idle" });
749
749
  }, [clearTimer]);
@@ -754,9 +754,9 @@ function FormFeedback({ state, className, pendingLabel = "Guardando\u2026", succ
754
754
  const error = state.status === "error";
755
755
  const success = state.status === "success";
756
756
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { role: error ? "alert" : "status", "aria-live": "polite", className: cn("inline-flex h-5 items-center gap-1.5 text-xs", error && "text-destructive", success && "text-success", state.status === "pending" && "text-muted-foreground", className), children: [
757
- state.status === "pending" && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react12.CircleNotchIcon, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
758
- success && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react12.CheckCircleIcon, { "aria-hidden": "true", className: "size-3.5", weight: "fill" }),
759
- error && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react12.WarningCircleIcon, { "aria-hidden": "true", className: "size-3.5", weight: "fill" }),
757
+ state.status === "pending" && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react4.LoaderCircle, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
758
+ success && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react4.CheckCircle, { "aria-hidden": "true", className: "size-3.5" }),
759
+ error && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react4.CircleAlert, { "aria-hidden": "true", className: "size-3.5" }),
760
760
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { children: state.status === "pending" ? pendingLabel : success ? state.message ?? successLabel : state.message })
761
761
  ] });
762
762
  }
@@ -833,10 +833,10 @@ function IconButton({
833
833
  }
834
834
 
835
835
  // src/ui/input/input.tsx
836
- var import_react13 = require("react");
836
+ var import_react9 = require("react");
837
837
  var import_react_aria_components13 = require("react-aria-components");
838
838
  var import_jsx_runtime24 = require("react/jsx-runtime");
839
- var InputImpl = (0, import_react13.forwardRef)(function Input2({ className, type, ...props }, ref) {
839
+ var InputImpl = (0, import_react9.forwardRef)(function Input2({ className, type, ...props }, ref) {
840
840
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_aria_components13.Input, { ref, type, "data-slot": "input", className: cn("h-8 w-full min-w-0 rounded-lg border border-border bg-background px-2.5 py-1 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive", className), ...props });
841
841
  });
842
842
  var Input3 = InputImpl;
@@ -845,10 +845,10 @@ var Input3 = InputImpl;
845
845
  var import_class_variance_authority3 = require("class-variance-authority");
846
846
 
847
847
  // src/ui/textarea/textarea.tsx
848
- var import_react14 = require("react");
848
+ var import_react10 = require("react");
849
849
  var import_react_aria_components14 = require("react-aria-components");
850
850
  var import_jsx_runtime25 = require("react/jsx-runtime");
851
- var TextareaImpl = (0, import_react14.forwardRef)(function Textarea({ className, ...props }, ref) {
851
+ var TextareaImpl = (0, import_react10.forwardRef)(function Textarea({ className, ...props }, ref) {
852
852
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_aria_components14.TextArea, { ref, "data-slot": "textarea", className: cn("min-h-20 w-full rounded-lg border border-border bg-background px-2.5 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive", className), ...props });
853
853
  });
854
854
  var Textarea2 = TextareaImpl;
@@ -885,11 +885,11 @@ function KbdGroup({ className, ...props }) {
885
885
  }
886
886
 
887
887
  // src/ui/loading-overlay/loading-overlay.tsx
888
- var import_react15 = require("@phosphor-icons/react");
888
+ var import_lucide_react5 = require("lucide-react");
889
889
  var import_jsx_runtime28 = require("react/jsx-runtime");
890
890
  function LoadingOverlay({ label = "Cargando", className, ...props }) {
891
891
  return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { role: "status", "aria-live": "polite", className: cn("absolute inset-0 z-10 flex items-center justify-center bg-background/70 backdrop-blur-[2px]", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2 rounded-lg border border-border bg-background px-3 py-2 text-sm shadow-sm", children: [
892
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_react15.CircleNotchIcon, { className: "animate-spin", "aria-hidden": "true" }),
892
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react5.LoaderCircle, { className: "animate-spin", "aria-hidden": "true" }),
893
893
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { children: label })
894
894
  ] }) });
895
895
  }
@@ -927,7 +927,7 @@ function PageHeaderActions({ className, ...props }) {
927
927
  }
928
928
 
929
929
  // src/ui/pagination/pagination.tsx
930
- var import_react16 = require("@phosphor-icons/react");
930
+ var import_lucide_react6 = require("lucide-react");
931
931
  var import_jsx_runtime31 = require("react/jsx-runtime");
932
932
  function Pagination({ page, pageCount, onPageChange, className }) {
933
933
  const pages = Array.from({ length: pageCount }, (_, index) => index + 1);
@@ -939,9 +939,9 @@ function Pagination({ page, pageCount, onPageChange, className }) {
939
939
  pageCount
940
940
  ] }),
941
941
  /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex items-center gap-1", children: [
942
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button2, { "aria-label": "P\xE1gina anterior", isDisabled: page <= 1, onPress: () => onPageChange(page - 1), size: "icon", variant: "ghost", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_react16.CaretLeftIcon, {}) }),
942
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button2, { "aria-label": "P\xE1gina anterior", isDisabled: page <= 1, onPress: () => onPageChange(page - 1), size: "icon", variant: "ghost", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react6.ChevronLeft, {}) }),
943
943
  pages.map((item) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button2, { "aria-current": item === page ? "page" : void 0, "aria-label": `P\xE1gina ${item}`, onPress: () => onPageChange(item), size: "icon", variant: item === page ? "secondary" : "ghost", children: item }, item)),
944
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button2, { "aria-label": "P\xE1gina siguiente", isDisabled: page >= pageCount, onPress: () => onPageChange(page + 1), size: "icon", variant: "ghost", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_react16.CaretRightIcon, {}) })
944
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button2, { "aria-label": "P\xE1gina siguiente", isDisabled: page >= pageCount, onPress: () => onPageChange(page + 1), size: "icon", variant: "ghost", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react6.ChevronRight, {}) })
945
945
  ] })
946
946
  ] });
947
947
  }
@@ -956,7 +956,7 @@ function Popover4({ className, ...props }) {
956
956
  var PopoverContent = Popover4;
957
957
 
958
958
  // src/ui/quantity-input/quantity-input.tsx
959
- var import_react17 = require("@phosphor-icons/react");
959
+ var import_lucide_react7 = require("lucide-react");
960
960
  var import_react_aria_components17 = require("react-aria-components");
961
961
  var import_jsx_runtime33 = require("react/jsx-runtime");
962
962
  function QuantityInput({
@@ -982,9 +982,9 @@ function QuantityInput({
982
982
  "data-slot": "quantity-input-group",
983
983
  className: "flex h-8 min-w-0 items-stretch overflow-hidden rounded-lg border border-border bg-background text-foreground transition-[border-color,box-shadow] focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 group-data-invalid/quantity-input:border-destructive",
984
984
  children: [
985
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react_aria_components17.Button, { slot: "decrement", "aria-label": decrementAriaLabel, "data-slot": "quantity-input-decrement", className: "flex size-8 shrink-0 cursor-pointer items-center justify-center border-r border-border text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted data-disabled:pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react17.MinusIcon, { "aria-hidden": "true", weight: "bold", className: "size-4" }) }),
985
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react_aria_components17.Button, { slot: "decrement", "aria-label": decrementAriaLabel, "data-slot": "quantity-input-decrement", className: "flex size-8 shrink-0 cursor-pointer items-center justify-center border-r border-border text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted data-disabled:pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react7.Minus, { "aria-hidden": "true", className: "size-4" }) }),
986
986
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react_aria_components17.Input, { "data-slot": "quantity-input-value", className: cn("w-14 min-w-0 bg-transparent px-1 text-center text-sm tabular-nums outline-none", inputClassName) }),
987
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react_aria_components17.Button, { slot: "increment", "aria-label": incrementAriaLabel, "data-slot": "quantity-input-increment", className: "flex size-8 shrink-0 cursor-pointer items-center justify-center border-l border-border text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted data-disabled:pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react17.PlusIcon, { "aria-hidden": "true", weight: "bold", className: "size-4" }) })
987
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react_aria_components17.Button, { slot: "increment", "aria-label": incrementAriaLabel, "data-slot": "quantity-input-increment", className: "flex size-8 shrink-0 cursor-pointer items-center justify-center border-l border-border text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted data-disabled:pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react7.Plus, { "aria-hidden": "true", className: "size-4" }) })
988
988
  ]
989
989
  }
990
990
  )
@@ -994,25 +994,25 @@ function QuantityInput({
994
994
 
995
995
  // src/ui/search-field/search-field.tsx
996
996
  var import_react_aria_components18 = require("react-aria-components");
997
- var import_react18 = require("@phosphor-icons/react");
997
+ var import_lucide_react8 = require("lucide-react");
998
998
  var import_jsx_runtime34 = require("react/jsx-runtime");
999
999
  var SearchField = import_react_aria_components18.SearchField;
1000
1000
  function SearchInput({ className, ...props }) {
1001
1001
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_react_aria_components18.Input, { "data-slot": "search-input", className: cn("h-8 w-full min-w-0 rounded-lg border border-border bg-background px-2.5 py-1 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50", className), ...props });
1002
1002
  }
1003
- function SearchClearButton({ className, children = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_react18.XIcon, { "aria-hidden": "true", weight: "bold", className: "size-4" }), ...props }) {
1003
+ function SearchClearButton({ className, children = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react8.X, { "aria-hidden": "true", className: "size-4" }), ...props }) {
1004
1004
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_react_aria_components18.Button, { slot: "clear", "data-slot": "search-clear", className: cn("absolute top-1/2 right-1 rounded p-1 text-muted-foreground outline-none hover:bg-muted data-focus-visible:ring-2 data-focus-visible:ring-ring", className), ...props, children });
1005
1005
  }
1006
1006
 
1007
1007
  // src/ui/select/select.tsx
1008
1008
  var import_react_aria_components19 = require("react-aria-components");
1009
- var import_react19 = require("@phosphor-icons/react");
1009
+ var import_lucide_react9 = require("lucide-react");
1010
1010
  var import_jsx_runtime35 = require("react/jsx-runtime");
1011
1011
  var Select = import_react_aria_components19.Select;
1012
1012
  function SelectTrigger({ className, children, ...props }) {
1013
1013
  return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_react_aria_components19.Button, { "data-slot": "select-trigger", className: cn("group/select-trigger flex h-8 w-full min-w-36 items-center gap-2 rounded-lg border border-border bg-background px-2.5 text-left text-sm text-foreground outline-none data-focus-visible:ring-3 data-focus-visible:ring-ring/50 data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: (state) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
1014
1014
  typeof children === "function" ? children(state) : children,
1015
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_react19.CaretDownIcon, { "aria-hidden": "true", weight: "bold", className: "ml-auto size-4 text-muted-foreground transition-transform group-data-pressed/select-trigger:rotate-180 motion-reduce:transition-none" })
1015
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react9.ChevronDown, { "aria-hidden": "true", className: "ml-auto size-4 text-muted-foreground transition-transform group-data-pressed/select-trigger:rotate-180 motion-reduce:transition-none" })
1016
1016
  ] }) });
1017
1017
  }
1018
1018
  function SelectValue({ className, ...props }) {
@@ -1036,13 +1036,13 @@ function Separator({ className, orientation = "horizontal", ...props }) {
1036
1036
  }
1037
1037
 
1038
1038
  // src/ui/sidebar/sidebar.tsx
1039
- var import_react20 = require("@phosphor-icons/react");
1040
- var import_react21 = require("react");
1039
+ var import_lucide_react10 = require("lucide-react");
1040
+ var import_react11 = require("react");
1041
1041
  var import_react_aria_components21 = require("react-aria-components");
1042
1042
  var import_jsx_runtime37 = require("react/jsx-runtime");
1043
- var SidebarContext = (0, import_react21.createContext)(null);
1043
+ var SidebarContext = (0, import_react11.createContext)(null);
1044
1044
  function useSidebar() {
1045
- const context = (0, import_react21.useContext)(SidebarContext);
1045
+ const context = (0, import_react11.useContext)(SidebarContext);
1046
1046
  if (!context)
1047
1047
  throw new Error("useSidebar must be used inside SidebarProvider");
1048
1048
  return context;
@@ -1051,8 +1051,8 @@ function SidebarProvider({
1051
1051
  defaultCollapsed = false,
1052
1052
  children
1053
1053
  }) {
1054
- const [collapsed, setCollapsed] = (0, import_react21.useState)(defaultCollapsed);
1055
- const value = (0, import_react21.useMemo)(
1054
+ const [collapsed, setCollapsed] = (0, import_react11.useState)(defaultCollapsed);
1055
+ const value = (0, import_react11.useMemo)(
1056
1056
  () => ({
1057
1057
  collapsed,
1058
1058
  setCollapsed,
@@ -1110,7 +1110,7 @@ function SidebarSearch({
1110
1110
  ),
1111
1111
  ...props,
1112
1112
  children: [
1113
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react20.MagnifyingGlassIcon, { className: "size-4 shrink-0" }),
1113
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react10.Search, { className: "size-4 shrink-0" }),
1114
1114
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "flex-1 text-left", children: label }),
1115
1115
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("kbd", { className: "rounded bg-secondary px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground", children: shortcut })
1116
1116
  ]
@@ -1237,7 +1237,7 @@ function SidebarTrigger({ className, ...props }) {
1237
1237
  variant: "ghost",
1238
1238
  className: cn("ml-auto", className),
1239
1239
  ...props,
1240
- children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react20.CaretRightIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react20.CaretLeftIcon, {})
1240
+ children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react10.ChevronRight, {}) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react10.ChevronLeft, {})
1241
1241
  }
1242
1242
  );
1243
1243
  }
@@ -1269,7 +1269,7 @@ function SidebarMore({ className, ...props }) {
1269
1269
  variant: "ghost",
1270
1270
  className: cn("size-7", className),
1271
1271
  ...props,
1272
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react20.DotsThreeIcon, { weight: "bold" })
1272
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react10.Ellipsis, {})
1273
1273
  }
1274
1274
  );
1275
1275
  }
@@ -1282,13 +1282,13 @@ function Skeleton({ className, ...props }) {
1282
1282
 
1283
1283
  // src/ui/submit-button/submit-button.tsx
1284
1284
  var import_react_dom = require("react-dom");
1285
- var import_react22 = require("@phosphor-icons/react");
1285
+ var import_lucide_react11 = require("lucide-react");
1286
1286
  var import_jsx_runtime39 = require("react/jsx-runtime");
1287
1287
  function SubmitButton({ pendingLabel = "Guardando\u2026", loading = false, children, isDisabled, size = "sm", ...props }) {
1288
1288
  const { pending } = (0, import_react_dom.useFormStatus)();
1289
1289
  const busy = pending || loading;
1290
1290
  return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Button2, { type: "submit", size, isDisabled: busy || isDisabled, "aria-busy": busy || void 0, ...props, children: busy ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
1291
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react22.CircleNotchIcon, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
1291
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react11.LoaderCircle, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
1292
1292
  pendingLabel
1293
1293
  ] }) : children });
1294
1294
  }
@@ -1393,8 +1393,8 @@ function TabsContent({ className, ...props }) {
1393
1393
  }
1394
1394
 
1395
1395
  // src/ui/toast/toast.tsx
1396
- var import_react23 = require("react");
1397
- var import_react24 = require("@phosphor-icons/react");
1396
+ var import_react12 = require("react");
1397
+ var import_lucide_react12 = require("lucide-react");
1398
1398
  var import_jsx_runtime43 = require("react/jsx-runtime");
1399
1399
  var records = [];
1400
1400
  var listeners = /* @__PURE__ */ new Set();
@@ -1457,25 +1457,25 @@ function Toaster({ position = "bottom-right" }) {
1457
1457
  return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_jsx_runtime43.Fragment, { children: Object.keys(positionClasses).map((item) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ToastViewport, { position: item, visiblePosition: position }, item)) });
1458
1458
  }
1459
1459
  function ToastViewport({ position, visiblePosition, className }) {
1460
- const toasts = (0, import_react23.useSyncExternalStore)(subscribe, snapshot, snapshot).filter((item) => item.position === position);
1460
+ const toasts = (0, import_react12.useSyncExternalStore)(subscribe, snapshot, snapshot).filter((item) => item.position === position);
1461
1461
  if (visiblePosition && position !== visiblePosition && toasts.length === 0) return null;
1462
1462
  return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { "aria-label": `Notificaciones ${position}`, className: cn("pointer-events-none fixed z-50 flex w-[min(24rem,calc(100vw-2rem))] flex-col gap-2", positionClasses[position], className), children: toasts.map((item) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Toast, { ...item, onDismiss: () => dismiss(item.id) }, item.id)) });
1463
1463
  }
1464
1464
  function Toast({ id, title, description, variant = "default", action, state = "open", duration = 0, onDismiss }) {
1465
- (0, import_react23.useEffect)(() => {
1465
+ (0, import_react12.useEffect)(() => {
1466
1466
  if (state !== "open" || duration <= 0) return;
1467
1467
  const timeout = window.setTimeout(() => dismiss(id), duration);
1468
1468
  return () => window.clearTimeout(timeout);
1469
1469
  }, [duration, id, state]);
1470
- const Icon = variant === "success" ? import_react24.CheckCircleIcon : variant === "error" ? import_react24.XCircleIcon : variant === "warning" ? import_react24.WarningCircleIcon : variant === "info" ? import_react24.InfoIcon : import_react24.InfoIcon;
1470
+ const Icon = variant === "success" ? import_lucide_react12.CheckCircle : variant === "error" ? import_lucide_react12.XCircle : variant === "warning" ? import_lucide_react12.CircleAlert : variant === "info" ? import_lucide_react12.Info : import_lucide_react12.Info;
1471
1471
  return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { role: variant === "error" ? "alert" : "status", "data-state": state, className: cn("pointer-events-auto w-full overflow-hidden rounded-xl border border-border/80 bg-background/95 p-3.5 text-foreground shadow-xl shadow-black/10 backdrop-blur-md animate-ui-toast-in", "data-[state=closing]:animate-ui-toast-out motion-reduce:animate-none", variant === "success" && "border-success/30", variant === "error" && "border-destructive/30", variant === "warning" && "border-warning/40"), children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex items-start gap-3", children: [
1472
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icon, { "aria-hidden": "true", weight: "duotone", className: cn("mt-0.5 size-5 shrink-0", variant === "success" && "text-success", variant === "error" && "text-destructive", variant === "warning" && "text-warning", variant === "info" && "text-primary") }),
1472
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icon, { "aria-hidden": "true", className: cn("mt-0.5 size-5 shrink-0", variant === "success" && "text-success", variant === "error" && "text-destructive", variant === "warning" && "text-warning", variant === "info" && "text-primary") }),
1473
1473
  /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "min-w-0 flex-1", children: [
1474
1474
  /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { className: "animate-ui-toast-title text-sm font-semibold", children: title }),
1475
1475
  description && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { className: "mt-1 max-h-20 animate-ui-toast-description overflow-hidden text-sm leading-5 text-muted-foreground data-[state=closing]:max-h-0", "data-state": state, children: description }),
1476
1476
  action && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Button2, { size: "sm", variant: "link", onPress: action.onPress, className: "mt-1 h-auto px-0", children: action.label })
1477
1477
  ] }),
1478
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Button2, { "aria-label": "Cerrar notificaci\xF3n", onPress: onDismiss, size: "icon", variant: "ghost", className: "-mr-2 -mt-2 size-7", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react24.XIcon, {}) })
1478
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Button2, { "aria-label": "Cerrar notificaci\xF3n", onPress: onDismiss, size: "icon", variant: "ghost", className: "-mr-2 -mt-2 size-7", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react12.X, {}) })
1479
1479
  ] }) });
1480
1480
  }
1481
1481