framepexls-ui-lib 0.1.13 → 0.1.14

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 (123) hide show
  1. package/dist/ActionIconButton.d.mts +1 -0
  2. package/dist/ActionIconButton.d.ts +1 -0
  3. package/dist/ActionIconButton.js +12 -9
  4. package/dist/ActionIconButton.mjs +13 -10
  5. package/dist/AppTopbar.js +23 -6
  6. package/dist/AppTopbar.mjs +13 -6
  7. package/dist/AvatarGroup.d.mts +14 -0
  8. package/dist/AvatarGroup.d.ts +14 -0
  9. package/dist/AvatarGroup.js +77 -0
  10. package/dist/AvatarGroup.mjs +47 -0
  11. package/dist/AvatarSquare.d.mts +2 -5
  12. package/dist/AvatarSquare.d.ts +2 -5
  13. package/dist/AvatarSquare.js +52 -3
  14. package/dist/AvatarSquare.mjs +52 -3
  15. package/dist/Badge.d.mts +2 -1
  16. package/dist/Badge.d.ts +2 -1
  17. package/dist/Badge.js +3 -1
  18. package/dist/Badge.mjs +3 -1
  19. package/dist/BadgeCluster.js +3 -3
  20. package/dist/BadgeCluster.mjs +3 -3
  21. package/dist/Button.d.mts +3 -4
  22. package/dist/Button.d.ts +3 -4
  23. package/dist/Button.js +96 -8
  24. package/dist/Button.mjs +86 -8
  25. package/dist/CalendarPanel.js +20 -3
  26. package/dist/CalendarPanel.mjs +10 -3
  27. package/dist/Card.d.mts +6 -0
  28. package/dist/Card.d.ts +6 -0
  29. package/dist/Card.js +52 -0
  30. package/dist/Card.mjs +22 -0
  31. package/dist/CheckboxPillsGroup.d.mts +2 -1
  32. package/dist/CheckboxPillsGroup.d.ts +2 -1
  33. package/dist/CheckboxPillsGroup.js +8 -4
  34. package/dist/CheckboxPillsGroup.mjs +8 -4
  35. package/dist/ColumnSelector.js +16 -2
  36. package/dist/ColumnSelector.mjs +6 -2
  37. package/dist/ComboSelect.d.mts +0 -2
  38. package/dist/ComboSelect.d.ts +0 -2
  39. package/dist/ComboSelect.js +8 -4
  40. package/dist/ComboSelect.mjs +8 -4
  41. package/dist/DateTimeField.d.mts +0 -5
  42. package/dist/DateTimeField.d.ts +0 -5
  43. package/dist/DateTimeField.js +17 -8
  44. package/dist/DateTimeField.mjs +17 -8
  45. package/dist/Dialog.d.mts +2 -5
  46. package/dist/Dialog.d.ts +2 -5
  47. package/dist/Dialog.js +21 -22
  48. package/dist/Dialog.mjs +21 -22
  49. package/dist/Drawer.d.mts +38 -0
  50. package/dist/Drawer.d.ts +38 -0
  51. package/dist/Drawer.js +139 -0
  52. package/dist/Drawer.mjs +102 -0
  53. package/dist/Dropdown.d.mts +0 -3
  54. package/dist/Dropdown.d.ts +0 -3
  55. package/dist/Dropdown.js +61 -42
  56. package/dist/Dropdown.mjs +51 -42
  57. package/dist/Input.d.mts +2 -0
  58. package/dist/Input.d.ts +2 -0
  59. package/dist/Input.js +20 -5
  60. package/dist/Input.mjs +20 -5
  61. package/dist/Link.d.mts +15 -0
  62. package/dist/Link.d.ts +15 -0
  63. package/dist/Link.js +93 -0
  64. package/dist/Link.mjs +63 -0
  65. package/dist/MediaCard.d.mts +15 -0
  66. package/dist/MediaCard.d.ts +15 -0
  67. package/dist/MediaCard.js +153 -0
  68. package/dist/MediaCard.mjs +123 -0
  69. package/dist/MediaSelector.d.mts +48 -0
  70. package/dist/MediaSelector.d.ts +48 -0
  71. package/dist/MediaSelector.js +225 -0
  72. package/dist/MediaSelector.mjs +195 -0
  73. package/dist/Money.d.mts +2 -1
  74. package/dist/Money.d.ts +2 -1
  75. package/dist/Money.js +26 -2
  76. package/dist/Money.mjs +26 -2
  77. package/dist/MultiComboSelect.js +6 -11
  78. package/dist/MultiComboSelect.mjs +6 -11
  79. package/dist/OrderButton.js +13 -1
  80. package/dist/OrderButton.mjs +3 -1
  81. package/dist/Pagination.d.mts +2 -1
  82. package/dist/Pagination.d.ts +2 -1
  83. package/dist/Pagination.js +40 -3
  84. package/dist/Pagination.mjs +30 -3
  85. package/dist/ReviewHistory.js +3 -9
  86. package/dist/ReviewHistory.mjs +3 -9
  87. package/dist/SearchInput.js +17 -42
  88. package/dist/SearchInput.mjs +17 -42
  89. package/dist/Select.js +5 -2
  90. package/dist/Select.mjs +5 -2
  91. package/dist/Sidebar.d.mts +2 -3
  92. package/dist/Sidebar.d.ts +2 -3
  93. package/dist/Sidebar.js +132 -24
  94. package/dist/Sidebar.mjs +132 -24
  95. package/dist/Steps.d.mts +0 -2
  96. package/dist/Steps.d.ts +0 -2
  97. package/dist/Steps.js +19 -6
  98. package/dist/Steps.mjs +9 -6
  99. package/dist/Table.js +3 -1
  100. package/dist/Table.mjs +3 -1
  101. package/dist/TimePanel.js +21 -7
  102. package/dist/TimePanel.mjs +11 -7
  103. package/dist/TimePopover.js +32 -15
  104. package/dist/TimePopover.mjs +32 -15
  105. package/dist/TimeRangeField.js +13 -6
  106. package/dist/TimeRangeField.mjs +13 -6
  107. package/dist/Toast.d.mts +53 -0
  108. package/dist/Toast.d.ts +53 -0
  109. package/dist/Toast.js +273 -0
  110. package/dist/Toast.mjs +238 -0
  111. package/dist/Tooltip.d.mts +15 -0
  112. package/dist/Tooltip.d.ts +15 -0
  113. package/dist/Tooltip.js +135 -0
  114. package/dist/Tooltip.mjs +105 -0
  115. package/dist/UploadCard.d.mts +27 -0
  116. package/dist/UploadCard.d.ts +27 -0
  117. package/dist/UploadCard.js +143 -0
  118. package/dist/UploadCard.mjs +113 -0
  119. package/dist/index.d.mts +10 -1
  120. package/dist/index.d.ts +10 -1
  121. package/dist/index.js +30 -1
  122. package/dist/index.mjs +58 -39
  123. package/package.json +1 -1
package/dist/Card.mjs ADDED
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import React from "react";
4
+ const base = "rounded-2xl border border-slate-200 bg-white p-4 shadow-sm dark:border-white/10 dark:bg-[#0f0d0e]";
5
+ const Card = React.forwardRef(
6
+ ({ className, children, ...rest }, ref) => {
7
+ return /* @__PURE__ */ jsx(
8
+ "div",
9
+ {
10
+ ref,
11
+ className: [base, className].filter(Boolean).join(" "),
12
+ ...rest,
13
+ children
14
+ }
15
+ );
16
+ }
17
+ );
18
+ Card.displayName = "Card";
19
+ var Card_default = Card;
20
+ export {
21
+ Card_default as default
22
+ };
@@ -22,7 +22,8 @@ type CheckboxPillsGroupProps = {
22
22
  withIcon?: boolean;
23
23
  maxSelected?: number;
24
24
  className?: string;
25
+ color?: "rose" | "sky" | "violet" | "emerald" | "indigo" | "amber" | "slate";
25
26
  };
26
- declare function CheckboxPillsGroup({ options, value, onChange, multiple, name, label, emptyText, size, accent, variant, rounded, withIcon, maxSelected, className, }: CheckboxPillsGroupProps): react_jsx_runtime.JSX.Element;
27
+ declare function CheckboxPillsGroup({ options, value, onChange, multiple, name, label, emptyText, size, accent, variant, rounded, withIcon, maxSelected, className, color, }: CheckboxPillsGroupProps): react_jsx_runtime.JSX.Element;
27
28
 
28
29
  export { type CheckboxPillsGroupProps, type PillsOption, CheckboxPillsGroup as default };
@@ -22,7 +22,8 @@ type CheckboxPillsGroupProps = {
22
22
  withIcon?: boolean;
23
23
  maxSelected?: number;
24
24
  className?: string;
25
+ color?: "rose" | "sky" | "violet" | "emerald" | "indigo" | "amber" | "slate";
25
26
  };
26
- declare function CheckboxPillsGroup({ options, value, onChange, multiple, name, label, emptyText, size, accent, variant, rounded, withIcon, maxSelected, className, }: CheckboxPillsGroupProps): react_jsx_runtime.JSX.Element;
27
+ declare function CheckboxPillsGroup({ options, value, onChange, multiple, name, label, emptyText, size, accent, variant, rounded, withIcon, maxSelected, className, color, }: CheckboxPillsGroupProps): react_jsx_runtime.JSX.Element;
27
28
 
28
29
  export { type CheckboxPillsGroupProps, type PillsOption, CheckboxPillsGroup as default };
@@ -34,6 +34,7 @@ __export(CheckboxPillsGroup_exports, {
34
34
  module.exports = __toCommonJS(CheckboxPillsGroup_exports);
35
35
  var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = __toESM(require("react"));
37
+ var import_Input = __toESM(require("./Input"));
37
38
  const cx = (...a) => a.filter(Boolean).join(" ");
38
39
  function toObj(opt) {
39
40
  var _a, _b;
@@ -96,10 +97,12 @@ function CheckboxPillsGroup({
96
97
  rounded = "full",
97
98
  withIcon = true,
98
99
  maxSelected,
99
- className
100
+ className,
101
+ color
100
102
  }) {
101
103
  const opts = import_react.default.useMemo(() => options.map(toObj), [options]);
102
104
  const sz = SIZE[size];
105
+ const selectedAccent = color != null ? color : accent;
103
106
  const radius = rounded === "full" ? "rounded-full" : rounded === "2xl" ? "rounded-2xl" : rounded === "md" ? "rounded-md" : "rounded-xl";
104
107
  const baseChip = cx(
105
108
  "relative inline-flex items-center whitespace-nowrap select-none",
@@ -140,13 +143,14 @@ function CheckboxPillsGroup({
140
143
  title: o.title,
141
144
  className: cx(
142
145
  baseChip,
143
- active ? activeClasses(accent, variant) : NEUTRAL,
146
+ active ? activeClasses(selectedAccent, variant) : NEUTRAL,
144
147
  (disabled || !canSelectMore) && !active && "cursor-not-allowed opacity-60"
145
148
  ),
146
149
  children: [
147
150
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
148
- "input",
151
+ import_Input.default,
149
152
  {
153
+ unstyled: true,
150
154
  type: multiple ? "checkbox" : "radio",
151
155
  name: !multiple ? name != null ? name : "pills-group" : void 0,
152
156
  className: "sr-only",
@@ -170,7 +174,7 @@ function CheckboxPillsGroup({
170
174
  indigo: "bg-indigo-500/10 text-indigo-600",
171
175
  amber: "bg-amber-500/10 text-amber-600",
172
176
  slate: "bg-slate-500/10 text-slate-600"
173
- }[accent]
177
+ }[selectedAccent]
174
178
  ),
175
179
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { viewBox: "0 0 24 24", className: sz.icon, fill: "none", stroke: "currentColor", strokeWidth: 3, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m5 12 4 4 10-10" }) })
176
180
  }
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
+ import Input from "./Input";
4
5
  const cx = (...a) => a.filter(Boolean).join(" ");
5
6
  function toObj(opt) {
6
7
  var _a, _b;
@@ -63,10 +64,12 @@ function CheckboxPillsGroup({
63
64
  rounded = "full",
64
65
  withIcon = true,
65
66
  maxSelected,
66
- className
67
+ className,
68
+ color
67
69
  }) {
68
70
  const opts = React.useMemo(() => options.map(toObj), [options]);
69
71
  const sz = SIZE[size];
72
+ const selectedAccent = color != null ? color : accent;
70
73
  const radius = rounded === "full" ? "rounded-full" : rounded === "2xl" ? "rounded-2xl" : rounded === "md" ? "rounded-md" : "rounded-xl";
71
74
  const baseChip = cx(
72
75
  "relative inline-flex items-center whitespace-nowrap select-none",
@@ -107,13 +110,14 @@ function CheckboxPillsGroup({
107
110
  title: o.title,
108
111
  className: cx(
109
112
  baseChip,
110
- active ? activeClasses(accent, variant) : NEUTRAL,
113
+ active ? activeClasses(selectedAccent, variant) : NEUTRAL,
111
114
  (disabled || !canSelectMore) && !active && "cursor-not-allowed opacity-60"
112
115
  ),
113
116
  children: [
114
117
  /* @__PURE__ */ jsx(
115
- "input",
118
+ Input,
116
119
  {
120
+ unstyled: true,
117
121
  type: multiple ? "checkbox" : "radio",
118
122
  name: !multiple ? name != null ? name : "pills-group" : void 0,
119
123
  className: "sr-only",
@@ -137,7 +141,7 @@ function CheckboxPillsGroup({
137
141
  indigo: "bg-indigo-500/10 text-indigo-600",
138
142
  amber: "bg-amber-500/10 text-amber-600",
139
143
  slate: "bg-slate-500/10 text-slate-600"
140
- }[accent]
144
+ }[selectedAccent]
141
145
  ),
142
146
  children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", className: sz.icon, fill: "none", stroke: "currentColor", strokeWidth: 3, children: /* @__PURE__ */ jsx("path", { d: "m5 12 4 4 10-10" }) })
143
147
  }
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
  var ColumnSelector_exports = {};
20
30
  __export(ColumnSelector_exports, {
@@ -23,6 +33,8 @@ __export(ColumnSelector_exports, {
23
33
  module.exports = __toCommonJS(ColumnSelector_exports);
24
34
  var import_jsx_runtime = require("react/jsx-runtime");
25
35
  var import_react = require("motion/react");
36
+ var import_Button = __toESM(require("./Button"));
37
+ var import_Input = __toESM(require("./Input"));
26
38
  function ColumnSelector({
27
39
  open,
28
40
  onToggleOpen,
@@ -32,8 +44,9 @@ function ColumnSelector({
32
44
  }) {
33
45
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative", children: [
34
46
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
35
- "button",
47
+ import_Button.default,
36
48
  {
49
+ unstyled: true,
37
50
  onClick: (e) => {
38
51
  e.stopPropagation();
39
52
  onToggleOpen((v) => !v);
@@ -56,8 +69,9 @@ function ColumnSelector({
56
69
  children: [
57
70
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "font-medium text-slate-800 dark:text-slate-100", children: label }),
58
71
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
59
- "input",
72
+ import_Input.default,
60
73
  {
74
+ unstyled: true,
61
75
  type: "checkbox",
62
76
  checked: visible[key],
63
77
  onChange: (e) => setVisible(key, e.target.checked),
@@ -1,5 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { AnimatePresence, motion } from "motion/react";
3
+ import Button from "./Button";
4
+ import Input from "./Input";
3
5
  function ColumnSelector({
4
6
  open,
5
7
  onToggleOpen,
@@ -9,8 +11,9 @@ function ColumnSelector({
9
11
  }) {
10
12
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
11
13
  /* @__PURE__ */ jsx(
12
- "button",
14
+ Button,
13
15
  {
16
+ unstyled: true,
14
17
  onClick: (e) => {
15
18
  e.stopPropagation();
16
19
  onToggleOpen((v) => !v);
@@ -33,8 +36,9 @@ function ColumnSelector({
33
36
  children: [
34
37
  /* @__PURE__ */ jsx("span", { className: "font-medium text-slate-800 dark:text-slate-100", children: label }),
35
38
  /* @__PURE__ */ jsx(
36
- "input",
39
+ Input,
37
40
  {
41
+ unstyled: true,
38
42
  type: "checkbox",
39
43
  checked: visible[key],
40
44
  onChange: (e) => setVisible(key, e.target.checked),
@@ -36,9 +36,7 @@ type ComboSelectProps = {
36
36
  keepFocusOnSelect?: boolean;
37
37
  clearQueryOnSelect?: boolean;
38
38
  renderTags?: React__default.ReactNode;
39
- /** Si true, las filas pueden tener inputs/botones y el click de fondo dispara onChange */
40
39
  interactiveOptions?: boolean;
41
- /** 🔹 Nuevo: notifica cambios en el texto de búsqueda */
42
40
  onQueryChange?: (q: string) => void;
43
41
  };
44
42
  declare function ComboSelect({ options, sections, value, onChange, placeholder, disabled, loading, allowClear, searchable, maxItems, className, noResultsText, renderOption, renderSectionHeader, portalTarget, closeOnSelect, keepFocusOnSelect, clearQueryOnSelect, renderTags, interactiveOptions, onQueryChange, }: ComboSelectProps): react_jsx_runtime.JSX.Element;
@@ -36,9 +36,7 @@ type ComboSelectProps = {
36
36
  keepFocusOnSelect?: boolean;
37
37
  clearQueryOnSelect?: boolean;
38
38
  renderTags?: React__default.ReactNode;
39
- /** Si true, las filas pueden tener inputs/botones y el click de fondo dispara onChange */
40
39
  interactiveOptions?: boolean;
41
- /** 🔹 Nuevo: notifica cambios en el texto de búsqueda */
42
40
  onQueryChange?: (q: string) => void;
43
41
  };
44
42
  declare function ComboSelect({ options, sections, value, onChange, placeholder, disabled, loading, allowClear, searchable, maxItems, className, noResultsText, renderOption, renderSectionHeader, portalTarget, closeOnSelect, keepFocusOnSelect, clearQueryOnSelect, renderTags, interactiveOptions, onQueryChange, }: ComboSelectProps): react_jsx_runtime.JSX.Element;
@@ -36,6 +36,8 @@ var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_react_dom = require("react-dom");
38
38
  var import_AvatarSquare = __toESM(require("./AvatarSquare"));
39
+ var import_Input = __toESM(require("./Input"));
40
+ var import_Button = __toESM(require("./Button"));
39
41
  const cx = (...a) => a.filter(Boolean).join(" ");
40
42
  const controlShell = "relative w-full rounded-2xl border border-slate-200 bg-white text-sm text-slate-900 placeholder:text-slate-400 shadow-sm outline-none transition focus-within:ring-4 focus-within:ring-slate-900/5 focus-within:border-slate-300 disabled:opacity-60 disabled:cursor-not-allowed dark:border-white/10 dark:bg-white/10 dark:text-slate-100 dark:placeholder:text-slate-400 dark:focus-within:ring-white/10";
41
43
  const isFocusableOrInteractive = (el) => {
@@ -66,7 +68,6 @@ function ComboSelect({
66
68
  renderTags,
67
69
  interactiveOptions = false,
68
70
  onQueryChange
69
- // 🔹 nuevo
70
71
  }) {
71
72
  var _a;
72
73
  const [query, _setQuery] = import_react.default.useState("");
@@ -360,8 +361,9 @@ function ComboSelect({
360
361
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cx(controlShell, "pr-20 pl-3 py-2 min-h-[44px] flex flex-wrap items-center gap-2"), children: [
361
362
  renderTags,
362
363
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
363
- "input",
364
+ import_Input.default,
364
365
  {
366
+ unstyled: true,
365
367
  ref: inputRef,
366
368
  role: "combobox",
367
369
  "aria-haspopup": "listbox",
@@ -388,8 +390,9 @@ function ComboSelect({
388
390
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-1.5 pointer-events-none", children: [
389
391
  loading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "pointer-events-none text-xs text-slate-400", children: "cargando\u2026" }),
390
392
  allowClear && value != null && !disabled && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
391
- "button",
393
+ import_Button.default,
392
394
  {
395
+ unstyled: true,
393
396
  type: "button",
394
397
  title: "Limpiar",
395
398
  className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-600 hover:bg-slate-50 active:scale-95 dark:border-white/10 dark:bg-white/5",
@@ -413,8 +416,9 @@ function ComboSelect({
413
416
  }
414
417
  ),
415
418
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
416
- "button",
419
+ import_Button.default,
417
420
  {
421
+ unstyled: true,
418
422
  type: "button",
419
423
  title: open ? "Cerrar" : "Abrir",
420
424
  className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-600 hover:bg-slate-50 active:scale-95 dark:border-white/10 dark:bg-white/5",
@@ -3,6 +3,8 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
4
  import { createPortal } from "react-dom";
5
5
  import AvatarSquare from "./AvatarSquare";
6
+ import Input from "./Input";
7
+ import Button from "./Button";
6
8
  const cx = (...a) => a.filter(Boolean).join(" ");
7
9
  const controlShell = "relative w-full rounded-2xl border border-slate-200 bg-white text-sm text-slate-900 placeholder:text-slate-400 shadow-sm outline-none transition focus-within:ring-4 focus-within:ring-slate-900/5 focus-within:border-slate-300 disabled:opacity-60 disabled:cursor-not-allowed dark:border-white/10 dark:bg-white/10 dark:text-slate-100 dark:placeholder:text-slate-400 dark:focus-within:ring-white/10";
8
10
  const isFocusableOrInteractive = (el) => {
@@ -33,7 +35,6 @@ function ComboSelect({
33
35
  renderTags,
34
36
  interactiveOptions = false,
35
37
  onQueryChange
36
- // 🔹 nuevo
37
38
  }) {
38
39
  var _a;
39
40
  const [query, _setQuery] = React.useState("");
@@ -327,8 +328,9 @@ function ComboSelect({
327
328
  /* @__PURE__ */ jsxs("div", { className: cx(controlShell, "pr-20 pl-3 py-2 min-h-[44px] flex flex-wrap items-center gap-2"), children: [
328
329
  renderTags,
329
330
  /* @__PURE__ */ jsx(
330
- "input",
331
+ Input,
331
332
  {
333
+ unstyled: true,
332
334
  ref: inputRef,
333
335
  role: "combobox",
334
336
  "aria-haspopup": "listbox",
@@ -355,8 +357,9 @@ function ComboSelect({
355
357
  /* @__PURE__ */ jsxs("div", { className: "absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-1.5 pointer-events-none", children: [
356
358
  loading && /* @__PURE__ */ jsx("span", { className: "pointer-events-none text-xs text-slate-400", children: "cargando\u2026" }),
357
359
  allowClear && value != null && !disabled && /* @__PURE__ */ jsx(
358
- "button",
360
+ Button,
359
361
  {
362
+ unstyled: true,
360
363
  type: "button",
361
364
  title: "Limpiar",
362
365
  className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-600 hover:bg-slate-50 active:scale-95 dark:border-white/10 dark:bg-white/5",
@@ -380,8 +383,9 @@ function ComboSelect({
380
383
  }
381
384
  ),
382
385
  /* @__PURE__ */ jsx(
383
- "button",
386
+ Button,
384
387
  {
388
+ unstyled: true,
385
389
  type: "button",
386
390
  title: open ? "Cerrar" : "Abrir",
387
391
  className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-600 hover:bg-slate-50 active:scale-95 dark:border-white/10 dark:bg-white/5",
@@ -4,17 +4,12 @@ import React__default from 'react';
4
4
  type PickerMode = "date" | "datetime-local" | "time";
5
5
  type DateTimeFieldProps = Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "onChange"> & {
6
6
  type?: PickerMode;
7
- /** ISO para date/datetime-local, HH:mm para time; o null */
8
7
  value?: string | null;
9
8
  min?: string;
10
9
  max?: string;
11
- /** Cambio por valor (recomendado) */
12
10
  onValueChange?: (next: string | null) => void;
13
- /** Si true, usa portal (document.body o portalId) */
14
11
  portal?: boolean;
15
- /** id del contenedor de portal (opcional) */
16
12
  portalId?: string;
17
- /** muestra botón de limpiar en el Input */
18
13
  clearable?: boolean;
19
14
  };
20
15
  declare function DateTimeField({ type, value, min, max, onValueChange, portal, portalId, clearable, ...inputProps }: DateTimeFieldProps): react_jsx_runtime.JSX.Element;
@@ -4,17 +4,12 @@ import React__default from 'react';
4
4
  type PickerMode = "date" | "datetime-local" | "time";
5
5
  type DateTimeFieldProps = Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "onChange"> & {
6
6
  type?: PickerMode;
7
- /** ISO para date/datetime-local, HH:mm para time; o null */
8
7
  value?: string | null;
9
8
  min?: string;
10
9
  max?: string;
11
- /** Cambio por valor (recomendado) */
12
10
  onValueChange?: (next: string | null) => void;
13
- /** Si true, usa portal (document.body o portalId) */
14
11
  portal?: boolean;
15
- /** id del contenedor de portal (opcional) */
16
12
  portalId?: string;
17
- /** muestra botón de limpiar en el Input */
18
13
  clearable?: boolean;
19
14
  };
20
15
  declare function DateTimeField({ type, value, min, max, onValueChange, portal, portalId, clearable, ...inputProps }: DateTimeFieldProps): react_jsx_runtime.JSX.Element;
@@ -36,6 +36,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = require("react");
37
37
  var import_react_dom = require("react-dom");
38
38
  var import_Input = __toESM(require("./Input"));
39
+ var import_Button = __toESM(require("./Button"));
39
40
  var import_CalendarPanel = __toESM(require("./CalendarPanel"));
40
41
  var import_TimePopover = __toESM(require("./TimePopover"));
41
42
  const pad2 = (n) => n < 10 ? `0${n}` : String(n);
@@ -269,8 +270,9 @@ function DateTimeField({
269
270
  (type === "time" || type === "datetime-local") && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-2 border-t border-slate-100 px-3 py-2 text-sm dark:border-white/10", children: [
270
271
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2", children: [
271
272
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
272
- "button",
273
+ import_Button.default,
273
274
  {
275
+ unstyled: true,
274
276
  ref: timeBtnRef,
275
277
  type: "button",
276
278
  className: "rounded-xl ring-1 ring-slate-200 px-2.5 py-1.5 font-medium tracking-wide hover:bg-slate-50 active:scale-[0.98] dark:ring-white/10 dark:hover:bg-white/10",
@@ -282,8 +284,9 @@ function DateTimeField({
282
284
  }
283
285
  ),
284
286
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
285
- "button",
287
+ import_Button.default,
286
288
  {
289
+ unstyled: true,
287
290
  type: "button",
288
291
  className: "rounded-xl ring-1 ring-slate-200 px-2.5 py-1.5 hover:bg-slate-50 active:scale-[0.98] dark:ring-white/10 dark:hover:bg-white/10",
289
292
  onClick: () => {
@@ -299,8 +302,9 @@ function DateTimeField({
299
302
  )
300
303
  ] }),
301
304
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
302
- "button",
305
+ import_Button.default,
303
306
  {
307
+ unstyled: true,
304
308
  type: "button",
305
309
  className: "rounded-xl bg-slate-900 px-3 py-1.5 text-white hover:opacity-95 active:scale-[0.98] dark:bg-white dark:text-slate-900",
306
310
  onClick: () => setOpen(false),
@@ -311,8 +315,9 @@ function DateTimeField({
311
315
  type !== "time" && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-2 border-t border-slate-100 px-3 py-2 text-sm dark:border-white/10", children: [
312
316
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex gap-1.5", children: [
313
317
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
314
- "button",
318
+ import_Button.default,
315
319
  {
320
+ unstyled: true,
316
321
  className: "rounded-lg px-2 py-1 hover:bg-slate-100 dark:hover:bg-white/10",
317
322
  onClick: () => {
318
323
  const t = /* @__PURE__ */ new Date();
@@ -324,8 +329,9 @@ function DateTimeField({
324
329
  }
325
330
  ),
326
331
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
327
- "button",
332
+ import_Button.default,
328
333
  {
334
+ unstyled: true,
329
335
  className: "rounded-lg px-2 py-1 hover:bg-slate-100 dark:hover:bg-white/10",
330
336
  onClick: () => {
331
337
  const t = /* @__PURE__ */ new Date();
@@ -338,8 +344,9 @@ function DateTimeField({
338
344
  }
339
345
  ),
340
346
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
341
- "button",
347
+ import_Button.default,
342
348
  {
349
+ unstyled: true,
343
350
  className: "rounded-lg px-2 py-1 hover:bg-slate-100 dark:hover:bg-white/10",
344
351
  onClick: () => {
345
352
  const t = /* @__PURE__ */ new Date();
@@ -353,8 +360,9 @@ function DateTimeField({
353
360
  )
354
361
  ] }),
355
362
  value && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
356
- "button",
363
+ import_Button.default,
357
364
  {
365
+ unstyled: true,
358
366
  className: "rounded-lg px-2 py-1 text-blue-600 hover:bg-blue-50 dark:hover:bg-blue-500/10",
359
367
  onClick: () => {
360
368
  emit(null);
@@ -374,8 +382,9 @@ function DateTimeField({
374
382
  {
375
383
  leftSlot: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CalendarIcon, {}),
376
384
  rightSlot: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
377
- "button",
385
+ import_Button.default,
378
386
  {
387
+ unstyled: true,
379
388
  type: "button",
380
389
  className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-600 hover:bg-slate-50 active:scale-95 dark:border-white/10 dark:bg-white/5",
381
390
  onClick: (e) => {
@@ -3,6 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useMemo, useRef, useState } from "react";
4
4
  import { createPortal } from "react-dom";
5
5
  import Input from "./Input";
6
+ import Button from "./Button";
6
7
  import CalendarPanel from "./CalendarPanel";
7
8
  import TimePopover from "./TimePopover";
8
9
  const pad2 = (n) => n < 10 ? `0${n}` : String(n);
@@ -236,8 +237,9 @@ function DateTimeField({
236
237
  (type === "time" || type === "datetime-local") && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 border-t border-slate-100 px-3 py-2 text-sm dark:border-white/10", children: [
237
238
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
238
239
  /* @__PURE__ */ jsx(
239
- "button",
240
+ Button,
240
241
  {
242
+ unstyled: true,
241
243
  ref: timeBtnRef,
242
244
  type: "button",
243
245
  className: "rounded-xl ring-1 ring-slate-200 px-2.5 py-1.5 font-medium tracking-wide hover:bg-slate-50 active:scale-[0.98] dark:ring-white/10 dark:hover:bg-white/10",
@@ -249,8 +251,9 @@ function DateTimeField({
249
251
  }
250
252
  ),
251
253
  /* @__PURE__ */ jsx(
252
- "button",
254
+ Button,
253
255
  {
256
+ unstyled: true,
254
257
  type: "button",
255
258
  className: "rounded-xl ring-1 ring-slate-200 px-2.5 py-1.5 hover:bg-slate-50 active:scale-[0.98] dark:ring-white/10 dark:hover:bg-white/10",
256
259
  onClick: () => {
@@ -266,8 +269,9 @@ function DateTimeField({
266
269
  )
267
270
  ] }),
268
271
  /* @__PURE__ */ jsx(
269
- "button",
272
+ Button,
270
273
  {
274
+ unstyled: true,
271
275
  type: "button",
272
276
  className: "rounded-xl bg-slate-900 px-3 py-1.5 text-white hover:opacity-95 active:scale-[0.98] dark:bg-white dark:text-slate-900",
273
277
  onClick: () => setOpen(false),
@@ -278,8 +282,9 @@ function DateTimeField({
278
282
  type !== "time" && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 border-t border-slate-100 px-3 py-2 text-sm dark:border-white/10", children: [
279
283
  /* @__PURE__ */ jsxs("div", { className: "flex gap-1.5", children: [
280
284
  /* @__PURE__ */ jsx(
281
- "button",
285
+ Button,
282
286
  {
287
+ unstyled: true,
283
288
  className: "rounded-lg px-2 py-1 hover:bg-slate-100 dark:hover:bg-white/10",
284
289
  onClick: () => {
285
290
  const t = /* @__PURE__ */ new Date();
@@ -291,8 +296,9 @@ function DateTimeField({
291
296
  }
292
297
  ),
293
298
  /* @__PURE__ */ jsx(
294
- "button",
299
+ Button,
295
300
  {
301
+ unstyled: true,
296
302
  className: "rounded-lg px-2 py-1 hover:bg-slate-100 dark:hover:bg-white/10",
297
303
  onClick: () => {
298
304
  const t = /* @__PURE__ */ new Date();
@@ -305,8 +311,9 @@ function DateTimeField({
305
311
  }
306
312
  ),
307
313
  /* @__PURE__ */ jsx(
308
- "button",
314
+ Button,
309
315
  {
316
+ unstyled: true,
310
317
  className: "rounded-lg px-2 py-1 hover:bg-slate-100 dark:hover:bg-white/10",
311
318
  onClick: () => {
312
319
  const t = /* @__PURE__ */ new Date();
@@ -320,8 +327,9 @@ function DateTimeField({
320
327
  )
321
328
  ] }),
322
329
  value && /* @__PURE__ */ jsx(
323
- "button",
330
+ Button,
324
331
  {
332
+ unstyled: true,
325
333
  className: "rounded-lg px-2 py-1 text-blue-600 hover:bg-blue-50 dark:hover:bg-blue-500/10",
326
334
  onClick: () => {
327
335
  emit(null);
@@ -341,8 +349,9 @@ function DateTimeField({
341
349
  {
342
350
  leftSlot: /* @__PURE__ */ jsx(CalendarIcon, {}),
343
351
  rightSlot: /* @__PURE__ */ jsx(
344
- "button",
352
+ Button,
345
353
  {
354
+ unstyled: true,
346
355
  type: "button",
347
356
  className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-600 hover:bg-slate-50 active:scale-95 dark:border-white/10 dark:bg-white/5",
348
357
  onClick: (e) => {
package/dist/Dialog.d.mts CHANGED
@@ -16,8 +16,7 @@ type DialogProps = {
16
16
  disableBackdropClose?: boolean;
17
17
  children?: React__default.ReactNode;
18
18
  };
19
- declare function DialogHeader({ title, description, onClose, showClose, actions, compact, // 👈 nuevo
20
- className, }: {
19
+ declare function DialogHeader({ title, description, onClose, showClose, actions, compact, className, }: {
21
20
  title?: React__default.ReactNode;
22
21
  description?: React__default.ReactNode;
23
22
  onClose?: () => void;
@@ -67,9 +66,7 @@ type ConfirmDialogProps = {
67
66
  disableEscClose?: boolean;
68
67
  disableBackdropClose?: boolean;
69
68
  };
70
- declare function ConfirmDialog({ open, onClose, title, headerDescription, // <— nuevo
71
- description, // body
72
- confirmLabel, cancelLabel, danger, loading, onConfirm, autoCloseOnConfirm, disableEscClose, disableBackdropClose, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
69
+ declare function ConfirmDialog({ open, onClose, title, headerDescription, description, confirmLabel, cancelLabel, danger, loading, onConfirm, autoCloseOnConfirm, disableEscClose, disableBackdropClose, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
73
70
  type DialogCompound = React__default.FC<DialogProps> & {
74
71
  Header: typeof DialogHeader;
75
72
  Body: typeof DialogBody;
package/dist/Dialog.d.ts CHANGED
@@ -16,8 +16,7 @@ type DialogProps = {
16
16
  disableBackdropClose?: boolean;
17
17
  children?: React__default.ReactNode;
18
18
  };
19
- declare function DialogHeader({ title, description, onClose, showClose, actions, compact, // 👈 nuevo
20
- className, }: {
19
+ declare function DialogHeader({ title, description, onClose, showClose, actions, compact, className, }: {
21
20
  title?: React__default.ReactNode;
22
21
  description?: React__default.ReactNode;
23
22
  onClose?: () => void;
@@ -67,9 +66,7 @@ type ConfirmDialogProps = {
67
66
  disableEscClose?: boolean;
68
67
  disableBackdropClose?: boolean;
69
68
  };
70
- declare function ConfirmDialog({ open, onClose, title, headerDescription, // <— nuevo
71
- description, // body
72
- confirmLabel, cancelLabel, danger, loading, onConfirm, autoCloseOnConfirm, disableEscClose, disableBackdropClose, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
69
+ declare function ConfirmDialog({ open, onClose, title, headerDescription, description, confirmLabel, cancelLabel, danger, loading, onConfirm, autoCloseOnConfirm, disableEscClose, disableBackdropClose, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
73
70
  type DialogCompound = React__default.FC<DialogProps> & {
74
71
  Header: typeof DialogHeader;
75
72
  Body: typeof DialogBody;