framepexls-ui-lib 0.1.12 → 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 (125) 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.d.mts +8 -9
  6. package/dist/AppTopbar.d.ts +8 -9
  7. package/dist/AppTopbar.js +31 -5
  8. package/dist/AppTopbar.mjs +21 -5
  9. package/dist/AvatarGroup.d.mts +14 -0
  10. package/dist/AvatarGroup.d.ts +14 -0
  11. package/dist/AvatarGroup.js +77 -0
  12. package/dist/AvatarGroup.mjs +47 -0
  13. package/dist/AvatarSquare.d.mts +2 -5
  14. package/dist/AvatarSquare.d.ts +2 -5
  15. package/dist/AvatarSquare.js +52 -3
  16. package/dist/AvatarSquare.mjs +52 -3
  17. package/dist/Badge.d.mts +2 -1
  18. package/dist/Badge.d.ts +2 -1
  19. package/dist/Badge.js +3 -1
  20. package/dist/Badge.mjs +3 -1
  21. package/dist/BadgeCluster.js +3 -3
  22. package/dist/BadgeCluster.mjs +3 -3
  23. package/dist/Button.d.mts +3 -4
  24. package/dist/Button.d.ts +3 -4
  25. package/dist/Button.js +97 -9
  26. package/dist/Button.mjs +87 -9
  27. package/dist/CalendarPanel.js +20 -3
  28. package/dist/CalendarPanel.mjs +10 -3
  29. package/dist/Card.d.mts +6 -0
  30. package/dist/Card.d.ts +6 -0
  31. package/dist/Card.js +52 -0
  32. package/dist/Card.mjs +22 -0
  33. package/dist/CheckboxPillsGroup.d.mts +2 -1
  34. package/dist/CheckboxPillsGroup.d.ts +2 -1
  35. package/dist/CheckboxPillsGroup.js +8 -4
  36. package/dist/CheckboxPillsGroup.mjs +8 -4
  37. package/dist/ColumnSelector.js +16 -2
  38. package/dist/ColumnSelector.mjs +6 -2
  39. package/dist/ComboSelect.d.mts +0 -2
  40. package/dist/ComboSelect.d.ts +0 -2
  41. package/dist/ComboSelect.js +8 -4
  42. package/dist/ComboSelect.mjs +8 -4
  43. package/dist/DateTimeField.d.mts +0 -5
  44. package/dist/DateTimeField.d.ts +0 -5
  45. package/dist/DateTimeField.js +17 -8
  46. package/dist/DateTimeField.mjs +17 -8
  47. package/dist/Dialog.d.mts +2 -5
  48. package/dist/Dialog.d.ts +2 -5
  49. package/dist/Dialog.js +21 -22
  50. package/dist/Dialog.mjs +21 -22
  51. package/dist/Drawer.d.mts +38 -0
  52. package/dist/Drawer.d.ts +38 -0
  53. package/dist/Drawer.js +139 -0
  54. package/dist/Drawer.mjs +102 -0
  55. package/dist/Dropdown.d.mts +0 -3
  56. package/dist/Dropdown.d.ts +0 -3
  57. package/dist/Dropdown.js +61 -42
  58. package/dist/Dropdown.mjs +51 -42
  59. package/dist/Input.d.mts +2 -0
  60. package/dist/Input.d.ts +2 -0
  61. package/dist/Input.js +20 -5
  62. package/dist/Input.mjs +20 -5
  63. package/dist/Link.d.mts +15 -0
  64. package/dist/Link.d.ts +15 -0
  65. package/dist/Link.js +93 -0
  66. package/dist/Link.mjs +63 -0
  67. package/dist/MediaCard.d.mts +15 -0
  68. package/dist/MediaCard.d.ts +15 -0
  69. package/dist/MediaCard.js +153 -0
  70. package/dist/MediaCard.mjs +123 -0
  71. package/dist/MediaSelector.d.mts +48 -0
  72. package/dist/MediaSelector.d.ts +48 -0
  73. package/dist/MediaSelector.js +225 -0
  74. package/dist/MediaSelector.mjs +195 -0
  75. package/dist/Money.d.mts +2 -1
  76. package/dist/Money.d.ts +2 -1
  77. package/dist/Money.js +26 -2
  78. package/dist/Money.mjs +26 -2
  79. package/dist/MultiComboSelect.js +6 -11
  80. package/dist/MultiComboSelect.mjs +6 -11
  81. package/dist/OrderButton.js +13 -1
  82. package/dist/OrderButton.mjs +3 -1
  83. package/dist/Pagination.d.mts +2 -1
  84. package/dist/Pagination.d.ts +2 -1
  85. package/dist/Pagination.js +40 -3
  86. package/dist/Pagination.mjs +30 -3
  87. package/dist/ReviewHistory.js +3 -9
  88. package/dist/ReviewHistory.mjs +3 -9
  89. package/dist/SearchInput.js +17 -42
  90. package/dist/SearchInput.mjs +17 -42
  91. package/dist/Select.js +5 -2
  92. package/dist/Select.mjs +5 -2
  93. package/dist/Sidebar.d.mts +2 -3
  94. package/dist/Sidebar.d.ts +2 -3
  95. package/dist/Sidebar.js +132 -24
  96. package/dist/Sidebar.mjs +132 -24
  97. package/dist/Steps.d.mts +0 -2
  98. package/dist/Steps.d.ts +0 -2
  99. package/dist/Steps.js +19 -6
  100. package/dist/Steps.mjs +9 -6
  101. package/dist/Table.js +3 -1
  102. package/dist/Table.mjs +3 -1
  103. package/dist/TimePanel.js +21 -7
  104. package/dist/TimePanel.mjs +11 -7
  105. package/dist/TimePopover.js +32 -15
  106. package/dist/TimePopover.mjs +32 -15
  107. package/dist/TimeRangeField.js +13 -6
  108. package/dist/TimeRangeField.mjs +13 -6
  109. package/dist/Toast.d.mts +53 -0
  110. package/dist/Toast.d.ts +53 -0
  111. package/dist/Toast.js +273 -0
  112. package/dist/Toast.mjs +238 -0
  113. package/dist/Tooltip.d.mts +15 -0
  114. package/dist/Tooltip.d.ts +15 -0
  115. package/dist/Tooltip.js +135 -0
  116. package/dist/Tooltip.mjs +105 -0
  117. package/dist/UploadCard.d.mts +27 -0
  118. package/dist/UploadCard.d.ts +27 -0
  119. package/dist/UploadCard.js +143 -0
  120. package/dist/UploadCard.mjs +113 -0
  121. package/dist/index.d.mts +10 -1
  122. package/dist/index.d.ts +10 -1
  123. package/dist/index.js +30 -1
  124. package/dist/index.mjs +58 -39
  125. package/package.json +1 -1
package/dist/Dropdown.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  "use client";
3
+ var __create = Object.create;
3
4
  var __defProp = Object.defineProperty;
4
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
6
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
9
  var __export = (target, all) => {
8
10
  for (var name in all)
@@ -16,6 +18,14 @@ var __copyProps = (to, from, except, desc) => {
16
18
  }
17
19
  return to;
18
20
  };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
19
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
30
  var Dropdown_exports = {};
21
31
  __export(Dropdown_exports, {
@@ -32,6 +42,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
32
42
  var import_react = require("react");
33
43
  var import_react_dom = require("react-dom");
34
44
  var import_iconos = require("./iconos/index");
45
+ var import_Button = __toESM(require("./Button"));
35
46
  const DropdownCtx = (0, import_react.createContext)(null);
36
47
  const useDropdown = () => {
37
48
  const ctx = (0, import_react.useContext)(DropdownCtx);
@@ -125,25 +136,29 @@ function Trigger({
125
136
  setOpen(true);
126
137
  }
127
138
  };
128
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
129
- "button",
130
- {
131
- ref: triggerRef,
132
- "aria-haspopup": "menu",
133
- "aria-controls": menuId,
134
- "aria-expanded": open,
135
- onClick,
136
- onKeyDown,
137
- className: [
138
- "inline-flex items-center gap-2 rounded-xl border border-slate-300/70 bg-white px-3 py-2",
139
- "text-sm font-medium text-slate-700 shadow-sm hover:bg-slate-50 active:scale-[0.98]",
140
- "dark:border-white/10 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10",
141
- className
142
- ].join(" "),
143
- ...btnProps,
144
- children
145
- }
146
- );
139
+ return (() => {
140
+ const { color: _c, ...safe } = btnProps;
141
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
142
+ import_Button.default,
143
+ {
144
+ unstyled: true,
145
+ ref: triggerRef,
146
+ "aria-haspopup": "menu",
147
+ "aria-controls": menuId,
148
+ "aria-expanded": open,
149
+ onClick,
150
+ onKeyDown,
151
+ className: [
152
+ "inline-flex items-center gap-2 rounded-xl border border-slate-300/70 bg-white px-3 py-2",
153
+ "text-sm font-medium text-slate-700 shadow-sm hover:bg-slate-50 active:scale-[0.98]",
154
+ "dark:border-white/10 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10",
155
+ className
156
+ ].join(" "),
157
+ ...safe,
158
+ children
159
+ }
160
+ );
161
+ })();
147
162
  }
148
163
  function Content({
149
164
  children,
@@ -289,29 +304,33 @@ function Item({
289
304
  setOpen(false);
290
305
  }
291
306
  };
292
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
293
- "button",
294
- {
295
- role: "menuitem",
296
- "data-disabled": disabled || shouldDisable ? "true" : "false",
297
- disabled: disabled || shouldDisable,
298
- onClick,
299
- onKeyDown,
300
- className: [
301
- "group flex w-full items-center justify-between gap-3 rounded-xl px-2.5 py-2 text-left text-sm",
302
- disabled || shouldDisable ? "text-slate-400 dark:text-slate-500 cursor-not-allowed" : danger ? "text-blue-600 hover:bg-blue-50 dark:text-blue-400 dark:hover:bg-blue-500/10" : "text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-white/10",
303
- className
304
- ].join(" "),
305
- ...rest,
306
- children: [
307
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "flex min-w-0 items-center gap-2", children: [
308
- icon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0 flex items-center justify-center h-4 w-4 text-slate-500 dark:text-slate-400", children: icon }),
309
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "truncate leading-none", children })
310
- ] }),
311
- kbd && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0 rounded-md border border-slate-200/80 bg-white px-1.5 py-0.5 text-[11px] text-slate-500 dark:border-white/10 dark:bg-white/5 dark:text-slate-400", children: kbd })
312
- ]
313
- }
314
- );
307
+ return (() => {
308
+ const { color: _c, ...safe } = rest;
309
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
310
+ import_Button.default,
311
+ {
312
+ unstyled: true,
313
+ role: "menuitem",
314
+ "data-disabled": disabled || shouldDisable ? "true" : "false",
315
+ disabled: disabled || shouldDisable,
316
+ onClick,
317
+ onKeyDown,
318
+ className: [
319
+ "group flex w-full items-center justify-between gap-3 rounded-xl px-2.5 py-2 text-left text-sm",
320
+ disabled || shouldDisable ? "text-slate-400 dark:text-slate-500 cursor-not-allowed" : danger ? "text-blue-600 hover:bg-blue-50 dark:text-blue-400 dark:hover:bg-blue-500/10" : "text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-white/10",
321
+ className
322
+ ].join(" "),
323
+ ...safe,
324
+ children: [
325
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "flex min-w-0 items-center gap-2", children: [
326
+ icon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0 flex items-center justify-center h-4 w-4 text-slate-500 dark:text-slate-400", children: icon }),
327
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "truncate leading-none", children })
328
+ ] }),
329
+ kbd && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0 rounded-md border border-slate-200/80 bg-white px-1.5 py-0.5 text-[11px] text-slate-500 dark:border-white/10 dark:bg-white/5 dark:text-slate-400", children: kbd })
330
+ ]
331
+ }
332
+ );
333
+ })();
315
334
  }
316
335
  const DropdownExport = Object.assign(Dropdown, {
317
336
  Trigger,
package/dist/Dropdown.mjs CHANGED
@@ -12,6 +12,7 @@ import {
12
12
  } from "react";
13
13
  import { createPortal } from "react-dom";
14
14
  import { MenuPuntosVerticalIcon } from "./iconos/index";
15
+ import Button from "./Button";
15
16
  const DropdownCtx = createContext(null);
16
17
  const useDropdown = () => {
17
18
  const ctx = useContext(DropdownCtx);
@@ -105,25 +106,29 @@ function Trigger({
105
106
  setOpen(true);
106
107
  }
107
108
  };
108
- return /* @__PURE__ */ jsx(
109
- "button",
110
- {
111
- ref: triggerRef,
112
- "aria-haspopup": "menu",
113
- "aria-controls": menuId,
114
- "aria-expanded": open,
115
- onClick,
116
- onKeyDown,
117
- className: [
118
- "inline-flex items-center gap-2 rounded-xl border border-slate-300/70 bg-white px-3 py-2",
119
- "text-sm font-medium text-slate-700 shadow-sm hover:bg-slate-50 active:scale-[0.98]",
120
- "dark:border-white/10 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10",
121
- className
122
- ].join(" "),
123
- ...btnProps,
124
- children
125
- }
126
- );
109
+ return (() => {
110
+ const { color: _c, ...safe } = btnProps;
111
+ return /* @__PURE__ */ jsx(
112
+ Button,
113
+ {
114
+ unstyled: true,
115
+ ref: triggerRef,
116
+ "aria-haspopup": "menu",
117
+ "aria-controls": menuId,
118
+ "aria-expanded": open,
119
+ onClick,
120
+ onKeyDown,
121
+ className: [
122
+ "inline-flex items-center gap-2 rounded-xl border border-slate-300/70 bg-white px-3 py-2",
123
+ "text-sm font-medium text-slate-700 shadow-sm hover:bg-slate-50 active:scale-[0.98]",
124
+ "dark:border-white/10 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10",
125
+ className
126
+ ].join(" "),
127
+ ...safe,
128
+ children
129
+ }
130
+ );
131
+ })();
127
132
  }
128
133
  function Content({
129
134
  children,
@@ -269,29 +274,33 @@ function Item({
269
274
  setOpen(false);
270
275
  }
271
276
  };
272
- return /* @__PURE__ */ jsxs(
273
- "button",
274
- {
275
- role: "menuitem",
276
- "data-disabled": disabled || shouldDisable ? "true" : "false",
277
- disabled: disabled || shouldDisable,
278
- onClick,
279
- onKeyDown,
280
- className: [
281
- "group flex w-full items-center justify-between gap-3 rounded-xl px-2.5 py-2 text-left text-sm",
282
- disabled || shouldDisable ? "text-slate-400 dark:text-slate-500 cursor-not-allowed" : danger ? "text-blue-600 hover:bg-blue-50 dark:text-blue-400 dark:hover:bg-blue-500/10" : "text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-white/10",
283
- className
284
- ].join(" "),
285
- ...rest,
286
- children: [
287
- /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 items-center gap-2", children: [
288
- icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 flex items-center justify-center h-4 w-4 text-slate-500 dark:text-slate-400", children: icon }),
289
- /* @__PURE__ */ jsx("span", { className: "truncate leading-none", children })
290
- ] }),
291
- kbd && /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded-md border border-slate-200/80 bg-white px-1.5 py-0.5 text-[11px] text-slate-500 dark:border-white/10 dark:bg-white/5 dark:text-slate-400", children: kbd })
292
- ]
293
- }
294
- );
277
+ return (() => {
278
+ const { color: _c, ...safe } = rest;
279
+ return /* @__PURE__ */ jsxs(
280
+ Button,
281
+ {
282
+ unstyled: true,
283
+ role: "menuitem",
284
+ "data-disabled": disabled || shouldDisable ? "true" : "false",
285
+ disabled: disabled || shouldDisable,
286
+ onClick,
287
+ onKeyDown,
288
+ className: [
289
+ "group flex w-full items-center justify-between gap-3 rounded-xl px-2.5 py-2 text-left text-sm",
290
+ disabled || shouldDisable ? "text-slate-400 dark:text-slate-500 cursor-not-allowed" : danger ? "text-blue-600 hover:bg-blue-50 dark:text-blue-400 dark:hover:bg-blue-500/10" : "text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-white/10",
291
+ className
292
+ ].join(" "),
293
+ ...safe,
294
+ children: [
295
+ /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 items-center gap-2", children: [
296
+ icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 flex items-center justify-center h-4 w-4 text-slate-500 dark:text-slate-400", children: icon }),
297
+ /* @__PURE__ */ jsx("span", { className: "truncate leading-none", children })
298
+ ] }),
299
+ kbd && /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded-md border border-slate-200/80 bg-white px-1.5 py-0.5 text-[11px] text-slate-500 dark:border-white/10 dark:bg-white/5 dark:text-slate-400", children: kbd })
300
+ ]
301
+ }
302
+ );
303
+ })();
295
304
  }
296
305
  const DropdownExport = Object.assign(Dropdown, {
297
306
  Trigger,
package/dist/Input.d.mts CHANGED
@@ -7,6 +7,7 @@ type InputProps = Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "si
7
7
  clearable?: boolean;
8
8
  onClear?: () => void;
9
9
  tone?: "default" | "danger";
10
+ unstyled?: boolean;
10
11
  };
11
12
  declare const Input: React__default.ForwardRefExoticComponent<Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "size"> & {
12
13
  error?: boolean;
@@ -15,6 +16,7 @@ declare const Input: React__default.ForwardRefExoticComponent<Omit<React__defaul
15
16
  clearable?: boolean;
16
17
  onClear?: () => void;
17
18
  tone?: "default" | "danger";
19
+ unstyled?: boolean;
18
20
  } & React__default.RefAttributes<HTMLInputElement>>;
19
21
 
20
22
  export { type InputProps, Input as default };
package/dist/Input.d.ts CHANGED
@@ -7,6 +7,7 @@ type InputProps = Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "si
7
7
  clearable?: boolean;
8
8
  onClear?: () => void;
9
9
  tone?: "default" | "danger";
10
+ unstyled?: boolean;
10
11
  };
11
12
  declare const Input: React__default.ForwardRefExoticComponent<Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "size"> & {
12
13
  error?: boolean;
@@ -15,6 +16,7 @@ declare const Input: React__default.ForwardRefExoticComponent<Omit<React__defaul
15
16
  clearable?: boolean;
16
17
  onClear?: () => void;
17
18
  tone?: "default" | "danger";
19
+ unstyled?: boolean;
18
20
  } & React__default.RefAttributes<HTMLInputElement>>;
19
21
 
20
22
  export { type InputProps, Input as default };
package/dist/Input.js CHANGED
@@ -34,13 +34,26 @@ __export(Input_exports, {
34
34
  module.exports = __toCommonJS(Input_exports);
35
35
  var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = __toESM(require("react"));
37
+ var import_Button = __toESM(require("./Button"));
37
38
  function cx(...a) {
38
39
  return a.filter(Boolean).join(" ");
39
40
  }
40
41
  const baseControl = "w-full rounded-2xl border border-slate-200 bg-white px-3.5 py-2.5 text-sm text-slate-900 placeholder:text-slate-400 shadow-sm outline-none transition focus:ring-4 focus:ring-slate-900/5 focus: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:ring-white/10";
41
42
  const errorControl = "border-blue-300 focus:border-blue-300 focus:ring-blue-500/15";
42
43
  const Input = import_react.default.forwardRef(
43
- ({ className, error, leftSlot, rightSlot, clearable, onClear, tone = "default", value, onChange, ...props }, ref) => {
44
+ ({ className, error, leftSlot, rightSlot, clearable, onClear, tone = "default", value, onChange, unstyled, ...props }, ref) => {
45
+ if (unstyled) {
46
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
47
+ "input",
48
+ {
49
+ ref,
50
+ value,
51
+ onChange,
52
+ className,
53
+ ...props
54
+ }
55
+ );
56
+ }
44
57
  const showClear = clearable && !!value && !props.disabled;
45
58
  const readOnly = !onChange;
46
59
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative content-center", children: [
@@ -63,12 +76,14 @@ const Input = import_react.default.forwardRef(
63
76
  ...props
64
77
  }
65
78
  ),
66
- showClear ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
67
- "button",
79
+ rightSlot && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-slate-400", children: rightSlot }),
80
+ showClear && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
81
+ import_Button.default,
68
82
  {
83
+ unstyled: true,
69
84
  type: "button",
70
85
  title: "Limpiar",
71
- className: "absolute right-2.5 top-1/2 -translate-y-1/2 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",
86
+ className: `absolute ${rightSlot ? "right-9" : "right-2.5"} top-1/2 -translate-y-1/2 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`,
72
87
  onClick: (e) => {
73
88
  e.preventDefault();
74
89
  onClear == null ? void 0 : onClear();
@@ -79,7 +94,7 @@ const Input = import_react.default.forwardRef(
79
94
  },
80
95
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { viewBox: "0 0 24 24", className: "h-4.5 w-4.5", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) })
81
96
  }
82
- ) : rightSlot && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-slate-400", children: rightSlot })
97
+ )
83
98
  ] });
84
99
  }
85
100
  );
package/dist/Input.mjs CHANGED
@@ -1,13 +1,26 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
+ import Button from "./Button";
4
5
  function cx(...a) {
5
6
  return a.filter(Boolean).join(" ");
6
7
  }
7
8
  const baseControl = "w-full rounded-2xl border border-slate-200 bg-white px-3.5 py-2.5 text-sm text-slate-900 placeholder:text-slate-400 shadow-sm outline-none transition focus:ring-4 focus:ring-slate-900/5 focus: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:ring-white/10";
8
9
  const errorControl = "border-blue-300 focus:border-blue-300 focus:ring-blue-500/15";
9
10
  const Input = React.forwardRef(
10
- ({ className, error, leftSlot, rightSlot, clearable, onClear, tone = "default", value, onChange, ...props }, ref) => {
11
+ ({ className, error, leftSlot, rightSlot, clearable, onClear, tone = "default", value, onChange, unstyled, ...props }, ref) => {
12
+ if (unstyled) {
13
+ return /* @__PURE__ */ jsx(
14
+ "input",
15
+ {
16
+ ref,
17
+ value,
18
+ onChange,
19
+ className,
20
+ ...props
21
+ }
22
+ );
23
+ }
11
24
  const showClear = clearable && !!value && !props.disabled;
12
25
  const readOnly = !onChange;
13
26
  return /* @__PURE__ */ jsxs("div", { className: "relative content-center", children: [
@@ -30,12 +43,14 @@ const Input = React.forwardRef(
30
43
  ...props
31
44
  }
32
45
  ),
33
- showClear ? /* @__PURE__ */ jsx(
34
- "button",
46
+ rightSlot && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-slate-400", children: rightSlot }),
47
+ showClear && /* @__PURE__ */ jsx(
48
+ Button,
35
49
  {
50
+ unstyled: true,
36
51
  type: "button",
37
52
  title: "Limpiar",
38
- className: "absolute right-2.5 top-1/2 -translate-y-1/2 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",
53
+ className: `absolute ${rightSlot ? "right-9" : "right-2.5"} top-1/2 -translate-y-1/2 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`,
39
54
  onClick: (e) => {
40
55
  e.preventDefault();
41
56
  onClear == null ? void 0 : onClear();
@@ -46,7 +61,7 @@ const Input = React.forwardRef(
46
61
  },
47
62
  children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", className: "h-4.5 w-4.5", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsx("path", { d: "M18 6L6 18M6 6l12 12" }) })
48
63
  }
49
- ) : rightSlot && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-slate-400", children: rightSlot })
64
+ )
50
65
  ] });
51
66
  }
52
67
  );
@@ -0,0 +1,15 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React__default from 'react';
3
+
4
+ type Size = "sm" | "md";
5
+ type LinkProps = Omit<React__default.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> & {
6
+ href: string;
7
+ showAnchorIcon?: boolean;
8
+ underline?: "hover" | "always" | "none";
9
+ size?: Size;
10
+ external?: boolean;
11
+ color?: "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
12
+ };
13
+ declare function Link({ href, children, className, showAnchorIcon, underline, size, external, color, ...rest }: LinkProps): react_jsx_runtime.JSX.Element;
14
+
15
+ export { type LinkProps, Link as default };
package/dist/Link.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React__default from 'react';
3
+
4
+ type Size = "sm" | "md";
5
+ type LinkProps = Omit<React__default.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> & {
6
+ href: string;
7
+ showAnchorIcon?: boolean;
8
+ underline?: "hover" | "always" | "none";
9
+ size?: Size;
10
+ external?: boolean;
11
+ color?: "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
12
+ };
13
+ declare function Link({ href, children, className, showAnchorIcon, underline, size, external, color, ...rest }: LinkProps): react_jsx_runtime.JSX.Element;
14
+
15
+ export { type LinkProps, Link as default };
package/dist/Link.js ADDED
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var Link_exports = {};
31
+ __export(Link_exports, {
32
+ default: () => Link
33
+ });
34
+ module.exports = __toCommonJS(Link_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_link = __toESM(require("next/link"));
37
+ function Link({
38
+ href,
39
+ children,
40
+ className,
41
+ showAnchorIcon,
42
+ underline = "hover",
43
+ size = "md",
44
+ external,
45
+ color = "rose",
46
+ ...rest
47
+ }) {
48
+ const base = "inline-flex items-center gap-1 font-medium transition";
49
+ const sizeCls = size === "sm" ? "text-sm" : "text-[15px]";
50
+ const COLORS = {
51
+ slate: "text-slate-600 hover:text-slate-700 dark:text-slate-300 dark:hover:text-slate-200",
52
+ gray: "text-gray-600 hover:text-gray-700 dark:text-gray-300 dark:hover:text-gray-200",
53
+ zinc: "text-zinc-600 hover:text-zinc-700 dark:text-zinc-300 dark:hover:text-zinc-200",
54
+ neutral: "text-neutral-600 hover:text-neutral-700 dark:text-neutral-300 dark:hover:text-neutral-200",
55
+ stone: "text-stone-600 hover:text-stone-700 dark:text-stone-300 dark:hover:text-stone-200",
56
+ red: "text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300",
57
+ orange: "text-orange-600 hover:text-orange-700 dark:text-orange-400 dark:hover:text-orange-300",
58
+ amber: "text-amber-600 hover:text-amber-700 dark:text-amber-400 dark:hover:text-amber-300",
59
+ yellow: "text-yellow-600 hover:text-yellow-700 dark:text-yellow-400 dark:hover:text-yellow-300",
60
+ lime: "text-lime-600 hover:text-lime-700 dark:text-lime-400 dark:hover:text-lime-300",
61
+ green: "text-green-600 hover:text-green-700 dark:text-green-400 dark:hover:text-green-300",
62
+ emerald: "text-emerald-600 hover:text-emerald-700 dark:text-emerald-400 dark:hover:text-emerald-300",
63
+ teal: "text-teal-600 hover:text-teal-700 dark:text-teal-400 dark:hover:text-teal-300",
64
+ cyan: "text-cyan-600 hover:text-cyan-700 dark:text-cyan-400 dark:hover:text-cyan-300",
65
+ sky: "text-sky-600 hover:text-sky-700 dark:text-sky-400 dark:hover:text-sky-300",
66
+ blue: "text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300",
67
+ indigo: "text-indigo-600 hover:text-indigo-700 dark:text-indigo-400 dark:hover:text-indigo-300",
68
+ violet: "text-violet-600 hover:text-violet-700 dark:text-violet-400 dark:hover:text-violet-300",
69
+ purple: "text-purple-600 hover:text-purple-700 dark:text-purple-400 dark:hover:text-purple-300",
70
+ fuchsia: "text-fuchsia-600 hover:text-fuchsia-700 dark:text-fuchsia-400 dark:hover:text-fuchsia-300",
71
+ pink: "text-pink-600 hover:text-pink-700 dark:text-pink-400 dark:hover:text-pink-300",
72
+ rose: "text-rose-600 hover:text-rose-700 dark:text-rose-400 dark:hover:text-rose-300"
73
+ };
74
+ const deco = underline === "always" ? "underline decoration-dotted underline-offset-4" : underline === "hover" ? "hover:underline decoration-dotted underline-offset-4" : "";
75
+ const content = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
76
+ "span",
77
+ {
78
+ className: [base, sizeCls, COLORS[color], deco, className != null ? className : ""].join(" "),
79
+ ...rest,
80
+ children: [
81
+ children,
82
+ showAnchorIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { viewBox: "0 0 24 24", className: "h-[15px] w-[15px] opacity-80", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": true, children: [
83
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M14 3h7v7" }),
84
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M10 14L21 3" }),
85
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M21 14v7h-7" }),
86
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M3 10l11 11" })
87
+ ] })
88
+ ]
89
+ }
90
+ );
91
+ const isExternal = external != null ? external : /^https?:\/\//i.test(href);
92
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href, target: isExternal ? "_blank" : rest.target, rel: isExternal ? "noopener noreferrer" : rest.rel, children: content });
93
+ }
package/dist/Link.mjs ADDED
@@ -0,0 +1,63 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import NextLink from "next/link";
4
+ function Link({
5
+ href,
6
+ children,
7
+ className,
8
+ showAnchorIcon,
9
+ underline = "hover",
10
+ size = "md",
11
+ external,
12
+ color = "rose",
13
+ ...rest
14
+ }) {
15
+ const base = "inline-flex items-center gap-1 font-medium transition";
16
+ const sizeCls = size === "sm" ? "text-sm" : "text-[15px]";
17
+ const COLORS = {
18
+ slate: "text-slate-600 hover:text-slate-700 dark:text-slate-300 dark:hover:text-slate-200",
19
+ gray: "text-gray-600 hover:text-gray-700 dark:text-gray-300 dark:hover:text-gray-200",
20
+ zinc: "text-zinc-600 hover:text-zinc-700 dark:text-zinc-300 dark:hover:text-zinc-200",
21
+ neutral: "text-neutral-600 hover:text-neutral-700 dark:text-neutral-300 dark:hover:text-neutral-200",
22
+ stone: "text-stone-600 hover:text-stone-700 dark:text-stone-300 dark:hover:text-stone-200",
23
+ red: "text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300",
24
+ orange: "text-orange-600 hover:text-orange-700 dark:text-orange-400 dark:hover:text-orange-300",
25
+ amber: "text-amber-600 hover:text-amber-700 dark:text-amber-400 dark:hover:text-amber-300",
26
+ yellow: "text-yellow-600 hover:text-yellow-700 dark:text-yellow-400 dark:hover:text-yellow-300",
27
+ lime: "text-lime-600 hover:text-lime-700 dark:text-lime-400 dark:hover:text-lime-300",
28
+ green: "text-green-600 hover:text-green-700 dark:text-green-400 dark:hover:text-green-300",
29
+ emerald: "text-emerald-600 hover:text-emerald-700 dark:text-emerald-400 dark:hover:text-emerald-300",
30
+ teal: "text-teal-600 hover:text-teal-700 dark:text-teal-400 dark:hover:text-teal-300",
31
+ cyan: "text-cyan-600 hover:text-cyan-700 dark:text-cyan-400 dark:hover:text-cyan-300",
32
+ sky: "text-sky-600 hover:text-sky-700 dark:text-sky-400 dark:hover:text-sky-300",
33
+ blue: "text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300",
34
+ indigo: "text-indigo-600 hover:text-indigo-700 dark:text-indigo-400 dark:hover:text-indigo-300",
35
+ violet: "text-violet-600 hover:text-violet-700 dark:text-violet-400 dark:hover:text-violet-300",
36
+ purple: "text-purple-600 hover:text-purple-700 dark:text-purple-400 dark:hover:text-purple-300",
37
+ fuchsia: "text-fuchsia-600 hover:text-fuchsia-700 dark:text-fuchsia-400 dark:hover:text-fuchsia-300",
38
+ pink: "text-pink-600 hover:text-pink-700 dark:text-pink-400 dark:hover:text-pink-300",
39
+ rose: "text-rose-600 hover:text-rose-700 dark:text-rose-400 dark:hover:text-rose-300"
40
+ };
41
+ const deco = underline === "always" ? "underline decoration-dotted underline-offset-4" : underline === "hover" ? "hover:underline decoration-dotted underline-offset-4" : "";
42
+ const content = /* @__PURE__ */ jsxs(
43
+ "span",
44
+ {
45
+ className: [base, sizeCls, COLORS[color], deco, className != null ? className : ""].join(" "),
46
+ ...rest,
47
+ children: [
48
+ children,
49
+ showAnchorIcon && /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", className: "h-[15px] w-[15px] opacity-80", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": true, children: [
50
+ /* @__PURE__ */ jsx("path", { d: "M14 3h7v7" }),
51
+ /* @__PURE__ */ jsx("path", { d: "M10 14L21 3" }),
52
+ /* @__PURE__ */ jsx("path", { d: "M21 14v7h-7" }),
53
+ /* @__PURE__ */ jsx("path", { d: "M3 10l11 11" })
54
+ ] })
55
+ ]
56
+ }
57
+ );
58
+ const isExternal = external != null ? external : /^https?:\/\//i.test(href);
59
+ return /* @__PURE__ */ jsx(NextLink, { href, target: isExternal ? "_blank" : rest.target, rel: isExternal ? "noopener noreferrer" : rest.rel, children: content });
60
+ }
61
+ export {
62
+ Link as default
63
+ };
@@ -0,0 +1,15 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ type MediaCardProps = {
4
+ imageUrl?: string | null;
5
+ title: string;
6
+ subtitle?: string;
7
+ copyUrl?: string;
8
+ onRename?: () => void;
9
+ onReplace?: () => void;
10
+ onDelete?: () => void;
11
+ className?: string;
12
+ };
13
+ declare function MediaCard({ imageUrl, title, subtitle, copyUrl, onRename, onReplace, onDelete, className, }: MediaCardProps): react_jsx_runtime.JSX.Element;
14
+
15
+ export { type MediaCardProps, MediaCard as default };
@@ -0,0 +1,15 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ type MediaCardProps = {
4
+ imageUrl?: string | null;
5
+ title: string;
6
+ subtitle?: string;
7
+ copyUrl?: string;
8
+ onRename?: () => void;
9
+ onReplace?: () => void;
10
+ onDelete?: () => void;
11
+ className?: string;
12
+ };
13
+ declare function MediaCard({ imageUrl, title, subtitle, copyUrl, onRename, onReplace, onDelete, className, }: MediaCardProps): react_jsx_runtime.JSX.Element;
14
+
15
+ export { type MediaCardProps, MediaCard as default };