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/Badge.d.mts CHANGED
@@ -3,8 +3,9 @@ import React__default from 'react';
3
3
 
4
4
  type Tone = "emerald" | "indigo" | "amber" | "slate" | "rose" | "sky" | "violet" | "cyan" | "teal" | "pink" | "orange" | "lime";
5
5
  type Size = "sm" | "md" | "lg";
6
- declare function Badge({ tone, size, children, onClick, title, className, }: {
6
+ declare function Badge({ tone, color, size, children, onClick, title, className, }: {
7
7
  tone?: Tone;
8
+ color?: Tone;
8
9
  size?: Size;
9
10
  children: React__default.ReactNode;
10
11
  onClick?: (e: React__default.MouseEvent) => void;
package/dist/Badge.d.ts CHANGED
@@ -3,8 +3,9 @@ import React__default from 'react';
3
3
 
4
4
  type Tone = "emerald" | "indigo" | "amber" | "slate" | "rose" | "sky" | "violet" | "cyan" | "teal" | "pink" | "orange" | "lime";
5
5
  type Size = "sm" | "md" | "lg";
6
- declare function Badge({ tone, size, children, onClick, title, className, }: {
6
+ declare function Badge({ tone, color, size, children, onClick, title, className, }: {
7
7
  tone?: Tone;
8
+ color?: Tone;
8
9
  size?: Size;
9
10
  children: React__default.ReactNode;
10
11
  onClick?: (e: React__default.MouseEvent) => void;
package/dist/Badge.js CHANGED
@@ -44,6 +44,7 @@ const sizeClasses = {
44
44
  };
45
45
  function Badge({
46
46
  tone = "slate",
47
+ color,
47
48
  size = "md",
48
49
  children,
49
50
  onClick,
@@ -53,6 +54,7 @@ function Badge({
53
54
  var _a;
54
55
  const clickable = typeof onClick === "function";
55
56
  const sz = (_a = sizeClasses[size]) != null ? _a : sizeClasses.md;
57
+ const chosenTone = color != null ? color : tone;
56
58
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
57
59
  "span",
58
60
  {
@@ -60,7 +62,7 @@ function Badge({
60
62
  onClick,
61
63
  className: [
62
64
  "inline-flex items-center rounded-full font-semibold truncate",
63
- tones[tone],
65
+ tones[chosenTone],
64
66
  sz.wrap,
65
67
  sz.gap,
66
68
  clickable ? "cursor-pointer hover:opacity-90 active:scale-[0.98]" : "",
package/dist/Badge.mjs CHANGED
@@ -21,6 +21,7 @@ const sizeClasses = {
21
21
  };
22
22
  function Badge({
23
23
  tone = "slate",
24
+ color,
24
25
  size = "md",
25
26
  children,
26
27
  onClick,
@@ -30,6 +31,7 @@ function Badge({
30
31
  var _a;
31
32
  const clickable = typeof onClick === "function";
32
33
  const sz = (_a = sizeClasses[size]) != null ? _a : sizeClasses.md;
34
+ const chosenTone = color != null ? color : tone;
33
35
  return /* @__PURE__ */ jsxs(
34
36
  "span",
35
37
  {
@@ -37,7 +39,7 @@ function Badge({
37
39
  onClick,
38
40
  className: [
39
41
  "inline-flex items-center rounded-full font-semibold truncate",
40
- tones[tone],
42
+ tones[chosenTone],
41
43
  sz.wrap,
42
44
  sz.gap,
43
45
  clickable ? "cursor-pointer hover:opacity-90 active:scale-[0.98]" : "",
@@ -37,13 +37,13 @@ var import_react = require("react");
37
37
  var import_react_dom = require("react-dom");
38
38
  var import_react2 = require("motion/react");
39
39
  var import_Badge = __toESM(require("./Badge"));
40
+ var import_Button = __toESM(require("./Button"));
40
41
  function BadgeCluster({
41
42
  items,
42
43
  max = 3,
43
44
  align = "left",
44
45
  className = "",
45
46
  usePortal = true
46
- // 👈 por defecto evita clipping
47
47
  }) {
48
48
  const show = items.slice(0, max);
49
49
  const rest = items.slice(max);
@@ -95,7 +95,6 @@ function BadgeCluster({
95
95
  ].join(" "),
96
96
  style: usePortal && pos ? {
97
97
  top: pos.top,
98
- // si alineas a la derecha, ancla por la derecha del botón
99
98
  left: align === "right" ? void 0 : pos.left,
100
99
  right: align === "right" ? Math.max(window.innerWidth - pos.left, 0) : void 0
101
100
  } : void 0,
@@ -106,8 +105,9 @@ function BadgeCluster({
106
105
  show.map((it, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Badge.default, { tone: it.tone, children: it.label }, `${it.label}-${i}`)),
107
106
  rest.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
108
107
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
109
- "button",
108
+ import_Button.default,
110
109
  {
110
+ unstyled: true,
111
111
  ref: btnRef,
112
112
  type: "button",
113
113
  onClick: () => setOpen((v) => !v),
@@ -4,13 +4,13 @@ import { useEffect, useLayoutEffect, useRef, useState } from "react";
4
4
  import { createPortal } from "react-dom";
5
5
  import { AnimatePresence, motion } from "motion/react";
6
6
  import Badge from "./Badge";
7
+ import Button from "./Button";
7
8
  function BadgeCluster({
8
9
  items,
9
10
  max = 3,
10
11
  align = "left",
11
12
  className = "",
12
13
  usePortal = true
13
- // 👈 por defecto evita clipping
14
14
  }) {
15
15
  const show = items.slice(0, max);
16
16
  const rest = items.slice(max);
@@ -62,7 +62,6 @@ function BadgeCluster({
62
62
  ].join(" "),
63
63
  style: usePortal && pos ? {
64
64
  top: pos.top,
65
- // si alineas a la derecha, ancla por la derecha del botón
66
65
  left: align === "right" ? void 0 : pos.left,
67
66
  right: align === "right" ? Math.max(window.innerWidth - pos.left, 0) : void 0
68
67
  } : void 0,
@@ -73,8 +72,9 @@ function BadgeCluster({
73
72
  show.map((it, i) => /* @__PURE__ */ jsx(Badge, { tone: it.tone, children: it.label }, `${it.label}-${i}`)),
74
73
  rest.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
75
74
  /* @__PURE__ */ jsxs(
76
- "button",
75
+ Button,
77
76
  {
77
+ unstyled: true,
78
78
  ref: btnRef,
79
79
  type: "button",
80
80
  onClick: () => setOpen((v) => !v),
package/dist/Button.d.mts CHANGED
@@ -1,8 +1,8 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
 
4
- type ButtonProps = {
3
+ declare const Button: React__default.ForwardRefExoticComponent<{
5
4
  variant?: "primary" | "secondary" | "outline" | "ghost" | "danger";
5
+ color?: "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
6
6
  size?: "sm" | "md" | "lg";
7
7
  loading?: boolean;
8
8
  leftIcon?: React__default.ReactNode;
@@ -15,7 +15,6 @@ type ButtonProps = {
15
15
  icon?: React__default.ReactNode;
16
16
  noPaddingX?: boolean;
17
17
  unstyled?: boolean;
18
- } & React__default.ButtonHTMLAttributes<HTMLButtonElement>;
19
- declare function Button({ children, variant, size, loading, disabled, leftIcon, rightIcon, block, className, type, active, inverted, iconOnly, icon, noPaddingX, unstyled, ...rest }: ButtonProps): react_jsx_runtime.JSX.Element;
18
+ } & React__default.ButtonHTMLAttributes<HTMLButtonElement> & React__default.RefAttributes<HTMLButtonElement>>;
20
19
 
21
20
  export { Button as default };
package/dist/Button.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
 
4
- type ButtonProps = {
3
+ declare const Button: React__default.ForwardRefExoticComponent<{
5
4
  variant?: "primary" | "secondary" | "outline" | "ghost" | "danger";
5
+ color?: "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
6
6
  size?: "sm" | "md" | "lg";
7
7
  loading?: boolean;
8
8
  leftIcon?: React__default.ReactNode;
@@ -15,7 +15,6 @@ type ButtonProps = {
15
15
  icon?: React__default.ReactNode;
16
16
  noPaddingX?: boolean;
17
17
  unstyled?: boolean;
18
- } & React__default.ButtonHTMLAttributes<HTMLButtonElement>;
19
- declare function Button({ children, variant, size, loading, disabled, leftIcon, rightIcon, block, className, type, active, inverted, iconOnly, icon, noPaddingX, unstyled, ...rest }: ButtonProps): react_jsx_runtime.JSX.Element;
18
+ } & React__default.ButtonHTMLAttributes<HTMLButtonElement> & React__default.RefAttributes<HTMLButtonElement>>;
20
19
 
21
20
  export { Button as default };
package/dist/Button.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,16 +18,26 @@ 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 Button_exports = {};
21
31
  __export(Button_exports, {
22
- default: () => Button
32
+ default: () => Button_default
23
33
  });
24
34
  module.exports = __toCommonJS(Button_exports);
25
35
  var import_jsx_runtime = require("react/jsx-runtime");
26
- function Button({
36
+ var import_react = __toESM(require("react"));
37
+ const Button = import_react.default.forwardRef(({
27
38
  children,
28
39
  variant = "primary",
40
+ color,
29
41
  size = "md",
30
42
  loading = false,
31
43
  disabled,
@@ -41,11 +53,12 @@ function Button({
41
53
  noPaddingX = false,
42
54
  unstyled = false,
43
55
  ...rest
44
- }) {
56
+ }, ref) => {
45
57
  if (unstyled) {
46
58
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
47
59
  "button",
48
60
  {
61
+ ref,
49
62
  type,
50
63
  disabled: disabled || loading,
51
64
  "aria-pressed": active ? true : void 0,
@@ -57,21 +70,93 @@ function Button({
57
70
  }
58
71
  const base = "inline-flex items-center justify-center rounded-xl font-medium transition focus:outline-none focus-visible:ring-2 disabled:opacity-60 disabled:cursor-not-allowed";
59
72
  const sizes = size === "sm" ? `h-9 ${noPaddingX ? "" : "px-3"} text-sm` : size === "lg" ? `h-11 ${noPaddingX ? "" : "px-5"} text-base` : `h-10 ${noPaddingX ? "" : "px-4"} text-sm`;
73
+ const SOLID = {
74
+ slate: "bg-slate-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-slate-500",
75
+ gray: "bg-gray-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-gray-500",
76
+ zinc: "bg-zinc-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-zinc-500",
77
+ neutral: "bg-neutral-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-neutral-500",
78
+ stone: "bg-stone-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-stone-500",
79
+ red: "bg-red-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-red-500",
80
+ orange: "bg-orange-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-orange-500",
81
+ amber: "bg-amber-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-amber-500",
82
+ yellow: "bg-yellow-500 text-slate-900 hover:opacity-95 active:scale-[.98] dark:bg-yellow-400",
83
+ lime: "bg-lime-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-lime-500",
84
+ green: "bg-green-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-green-500",
85
+ emerald: "bg-emerald-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-emerald-500",
86
+ teal: "bg-teal-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-teal-500",
87
+ cyan: "bg-cyan-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-cyan-500",
88
+ sky: "bg-sky-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-sky-500",
89
+ blue: "bg-blue-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-blue-500",
90
+ indigo: "bg-indigo-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-indigo-500",
91
+ violet: "bg-violet-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-violet-500",
92
+ purple: "bg-purple-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-purple-500",
93
+ fuchsia: "bg-fuchsia-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-fuchsia-500",
94
+ pink: "bg-pink-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-pink-500",
95
+ rose: "bg-rose-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-rose-500"
96
+ };
97
+ const OUTLINE = {
98
+ slate: "border border-slate-300/80 bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:border-white/10 dark:text-slate-200 dark:hover:bg-white/10",
99
+ gray: "border border-gray-300/80 bg-transparent text-gray-700 hover:bg-gray-50 active:scale-[.98] dark:border-white/10 dark:text-gray-200 dark:hover:bg-white/10",
100
+ zinc: "border border-zinc-300/80 bg-transparent text-zinc-700 hover:bg-zinc-50 active:scale-[.98] dark:border-white/10 dark:text-zinc-200 dark:hover:bg-white/10",
101
+ neutral: "border border-neutral-300/80 bg-transparent text-neutral-700 hover:bg-neutral-50 active:scale-[.98] dark:border-white/10 dark:text-neutral-200 dark:hover:bg-white/10",
102
+ stone: "border border-stone-300/80 bg-transparent text-stone-700 hover:bg-stone-50 active:scale-[.98] dark:border-white/10 dark:text-stone-200 dark:hover:bg-white/10",
103
+ red: "border border-red-300/80 bg-transparent text-red-700 hover:bg-red-50 active:scale-[.98] dark:border-white/10 dark:text-red-300 dark:hover:bg-white/10",
104
+ orange: "border border-orange-300/80 bg-transparent text-orange-700 hover:bg-orange-50 active:scale-[.98] dark:border-white/10 dark:text-orange-300 dark:hover:bg-white/10",
105
+ amber: "border border-amber-300/80 bg-transparent text-amber-700 hover:bg-amber-50 active:scale-[.98] dark:border-white/10 dark:text-amber-300 dark:hover:bg-white/10",
106
+ yellow: "border border-yellow-300/80 bg-transparent text-yellow-700 hover:bg-yellow-50 active:scale-[.98] dark:border-white/10 dark:text-yellow-300 dark:hover:bg-white/10",
107
+ lime: "border border-lime-300/80 bg-transparent text-lime-700 hover:bg-lime-50 active:scale-[.98] dark:border-white/10 dark:text-lime-300 dark:hover:bg-white/10",
108
+ green: "border border-green-300/80 bg-transparent text-green-700 hover:bg-green-50 active:scale-[.98] dark:border-white/10 dark:text-green-300 dark:hover:bg-white/10",
109
+ emerald: "border border-emerald-300/80 bg-transparent text-emerald-700 hover:bg-emerald-50 active:scale-[.98] dark:border-white/10 dark:text-emerald-300 dark:hover:bg-white/10",
110
+ teal: "border border-teal-300/80 bg-transparent text-teal-700 hover:bg-teal-50 active:scale-[.98] dark:border-white/10 dark:text-teal-300 dark:hover:bg-white/10",
111
+ cyan: "border border-cyan-300/80 bg-transparent text-cyan-700 hover:bg-cyan-50 active:scale-[.98] dark:border-white/10 dark:text-cyan-300 dark:hover:bg-white/10",
112
+ sky: "border border-sky-300/80 bg-transparent text-sky-700 hover:bg-sky-50 active:scale-[.98] dark:border-white/10 dark:text-sky-300 dark:hover:bg-white/10",
113
+ blue: "border border-blue-300/80 bg-transparent text-blue-700 hover:bg-blue-50 active:scale-[.98] dark:border-white/10 dark:text-blue-300 dark:hover:bg-white/10",
114
+ indigo: "border border-indigo-300/80 bg-transparent text-indigo-700 hover:bg-indigo-50 active:scale-[.98] dark:border-white/10 dark:text-indigo-300 dark:hover:bg-white/10",
115
+ violet: "border border-violet-300/80 bg-transparent text-violet-700 hover:bg-violet-50 active:scale-[.98] dark:border-white/10 dark:text-violet-300 dark:hover:bg-white/10",
116
+ purple: "border border-purple-300/80 bg-transparent text-purple-700 hover:bg-purple-50 active:scale-[.98] dark:border-white/10 dark:text-purple-300 dark:hover:bg-white/10",
117
+ fuchsia: "border border-fuchsia-300/80 bg-transparent text-fuchsia-700 hover:bg-fuchsia-50 active:scale-[.98] dark:border-white/10 dark:text-fuchsia-300 dark:hover:bg-white/10",
118
+ pink: "border border-pink-300/80 bg-transparent text-pink-700 hover:bg-pink-50 active:scale-[.98] dark:border-white/10 dark:text-pink-300 dark:hover:bg-white/10",
119
+ rose: "border border-rose-300/80 bg-transparent text-rose-700 hover:bg-rose-50 active:scale-[.98] dark:border-white/10 dark:text-rose-300 dark:hover:bg-white/10"
120
+ };
121
+ const GHOST = {
122
+ slate: "bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:text-slate-200 dark:hover:bg-white/10",
123
+ gray: "bg-transparent text-gray-700 hover:bg-gray-50 active:scale-[.98] dark:text-gray-200 dark:hover:bg-white/10",
124
+ zinc: "bg-transparent text-zinc-700 hover:bg-zinc-50 active:scale-[.98] dark:text-zinc-200 dark:hover:bg-white/10",
125
+ neutral: "bg-transparent text-neutral-700 hover:bg-neutral-50 active:scale-[.98] dark:text-neutral-200 dark:hover:bg-white/10",
126
+ stone: "bg-transparent text-stone-700 hover:bg-stone-50 active:scale-[.98] dark:text-stone-200 dark:hover:bg-white/10",
127
+ red: "bg-transparent text-red-700 hover:bg-red-50 active:scale-[.98] dark:text-red-300 dark:hover:bg-white/10",
128
+ orange: "bg-transparent text-orange-700 hover:bg-orange-50 active:scale-[.98] dark:text-orange-300 dark:hover:bg-white/10",
129
+ amber: "bg-transparent text-amber-700 hover:bg-amber-50 active:scale-[.98] dark:text-amber-300 dark:hover:bg-white/10",
130
+ yellow: "bg-transparent text-yellow-700 hover:bg-yellow-50 active:scale-[.98] dark:text-yellow-300 dark:hover:bg-white/10",
131
+ lime: "bg-transparent text-lime-700 hover:bg-lime-50 active:scale-[.98] dark:text-lime-300 dark:hover:bg-white/10",
132
+ green: "bg-transparent text-green-700 hover:bg-green-50 active:scale-[.98] dark:text-green-300 dark:hover:bg-white/10",
133
+ emerald: "bg-transparent text-emerald-700 hover:bg-emerald-50 active:scale-[.98] dark:text-emerald-300 dark:hover:bg-white/10",
134
+ teal: "bg-transparent text-teal-700 hover:bg-teal-50 active:scale-[.98] dark:text-teal-300 dark:hover:bg-white/10",
135
+ cyan: "bg-transparent text-cyan-700 hover:bg-cyan-50 active:scale-[.98] dark:text-cyan-300 dark:hover:bg-white/10",
136
+ sky: "bg-transparent text-sky-700 hover:bg-sky-50 active:scale-[.98] dark:text-sky-300 dark:hover:bg-white/10",
137
+ blue: "bg-transparent text-blue-700 hover:bg-blue-50 active:scale-[.98] dark:text-blue-300 dark:hover:bg-white/10",
138
+ indigo: "bg-transparent text-indigo-700 hover:bg-indigo-50 active:scale-[.98] dark:text-indigo-300 dark:hover:bg-white/10",
139
+ violet: "bg-transparent text-violet-700 hover:bg-violet-50 active:scale-[.98] dark:text-violet-300 dark:hover:bg-white/10",
140
+ purple: "bg-transparent text-purple-700 hover:bg-purple-50 active:scale-[.98] dark:text-purple-300 dark:hover:bg-white/10",
141
+ fuchsia: "bg-transparent text-fuchsia-700 hover:bg-fuchsia-50 active:scale-[.98] dark:text-fuchsia-300 dark:hover:bg-white/10",
142
+ pink: "bg-transparent text-pink-700 hover:bg-pink-50 active:scale-[.98] dark:text-pink-300 dark:hover:bg-white/10",
143
+ rose: "bg-transparent text-rose-700 hover:bg-rose-50 active:scale-[.98] dark:text-rose-300 dark:hover:bg-white/10"
144
+ };
60
145
  const variantClass = (() => {
61
146
  switch (variant) {
62
147
  case "primary":
63
- return "bg-slate-900 text-white hover:opacity-90 active:scale-[.98] dark:bg-white dark:text-slate-900";
148
+ return color ? SOLID[color] : "bg-slate-900 text-white hover:opacity-90 active:scale-[.98] dark:bg-white dark:text-slate-900";
64
149
  case "secondary":
65
150
  return inverted ? "border border-white/15 bg-white/10 text-white hover:bg-white/15 active:scale-[.98]" : "border border-slate-300/80 bg-white text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:border-white/10 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10";
66
151
  case "outline":
67
- return inverted ? "border border-white/20 bg-transparent text-white hover:bg-white/10 active:scale-[.98]" : "border border-slate-300/80 bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:border-white/10 dark:text-slate-200 dark:hover:bg-white/10";
152
+ return inverted ? "border border-white/20 bg-transparent text-white hover:bg-white/10 active:scale-[.98]" : color ? OUTLINE[color] : "border border-slate-300/80 bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:border-white/10 dark:text-slate-200 dark:hover:bg-white/10";
68
153
  case "ghost":
69
- return inverted ? "bg-transparent text-white hover:bg-white/10 active:scale-[.98]" : "bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:text-slate-200 dark:hover:bg-white/10";
154
+ return inverted ? "bg-transparent text-white hover:bg-white/10 active:scale-[.98]" : color ? GHOST[color] : "bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:text-slate-200 dark:hover:bg-white/10";
70
155
  case "danger":
71
- return "bg-blue-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-blue-500";
156
+ return color ? SOLID[color] : "bg-rose-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-rose-500";
72
157
  }
73
158
  })();
74
- const activeClass = active ? variant === "primary" ? "ring-2 ring-slate-300/60 dark:ring-white/20" : variant === "ghost" ? inverted ? "bg-white/15 text-white shadow-sm" : "bg-slate-100 text-slate-900 shadow-sm" : variant === "outline" ? inverted ? "bg-white/10 text-white" : "bg-slate-50" : variant === "secondary" ? inverted ? "bg-white/15 text-white" : "bg-slate-100" : "" : "";
159
+ const activeClass = active ? variant === "primary" ? "ring-2 ring-slate-300/60 dark:ring-white/20" : variant === "ghost" ? inverted ? "bg-white/15 text-white shadow-sm" : "bg-slate-100 text-slate-900 ring-1 ring-slate-300 dark:ring-white/15 shadow-sm" : variant === "outline" ? inverted ? "bg-white/10 text-white" : "bg-slate-50 ring-1 ring-slate-300 dark:ring-white/15" : variant === "secondary" ? inverted ? "bg-white/15 text-white" : "bg-slate-100 ring-1 ring-slate-300/80 dark:ring-white/15" : "" : "";
75
160
  const hasChildren = children !== void 0 && children !== null && children !== false;
76
161
  const showText = hasChildren && !iconOnly;
77
162
  const iconLeft = !loading ? leftIcon != null ? leftIcon : iconOnly ? icon != null ? icon : children : void 0 : void 0;
@@ -81,6 +166,7 @@ function Button({
81
166
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
82
167
  "button",
83
168
  {
169
+ ref,
84
170
  type,
85
171
  disabled: disabled || loading,
86
172
  "aria-pressed": active ? true : void 0,
@@ -105,4 +191,6 @@ function Button({
105
191
  ]
106
192
  }
107
193
  );
108
- }
194
+ });
195
+ Button.displayName = "Button";
196
+ var Button_default = Button;
package/dist/Button.mjs CHANGED
@@ -1,8 +1,10 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- function Button({
3
+ import React from "react";
4
+ const Button = React.forwardRef(({
4
5
  children,
5
6
  variant = "primary",
7
+ color,
6
8
  size = "md",
7
9
  loading = false,
8
10
  disabled,
@@ -18,11 +20,12 @@ function Button({
18
20
  noPaddingX = false,
19
21
  unstyled = false,
20
22
  ...rest
21
- }) {
23
+ }, ref) => {
22
24
  if (unstyled) {
23
25
  return /* @__PURE__ */ jsx(
24
26
  "button",
25
27
  {
28
+ ref,
26
29
  type,
27
30
  disabled: disabled || loading,
28
31
  "aria-pressed": active ? true : void 0,
@@ -34,21 +37,93 @@ function Button({
34
37
  }
35
38
  const base = "inline-flex items-center justify-center rounded-xl font-medium transition focus:outline-none focus-visible:ring-2 disabled:opacity-60 disabled:cursor-not-allowed";
36
39
  const sizes = size === "sm" ? `h-9 ${noPaddingX ? "" : "px-3"} text-sm` : size === "lg" ? `h-11 ${noPaddingX ? "" : "px-5"} text-base` : `h-10 ${noPaddingX ? "" : "px-4"} text-sm`;
40
+ const SOLID = {
41
+ slate: "bg-slate-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-slate-500",
42
+ gray: "bg-gray-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-gray-500",
43
+ zinc: "bg-zinc-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-zinc-500",
44
+ neutral: "bg-neutral-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-neutral-500",
45
+ stone: "bg-stone-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-stone-500",
46
+ red: "bg-red-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-red-500",
47
+ orange: "bg-orange-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-orange-500",
48
+ amber: "bg-amber-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-amber-500",
49
+ yellow: "bg-yellow-500 text-slate-900 hover:opacity-95 active:scale-[.98] dark:bg-yellow-400",
50
+ lime: "bg-lime-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-lime-500",
51
+ green: "bg-green-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-green-500",
52
+ emerald: "bg-emerald-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-emerald-500",
53
+ teal: "bg-teal-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-teal-500",
54
+ cyan: "bg-cyan-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-cyan-500",
55
+ sky: "bg-sky-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-sky-500",
56
+ blue: "bg-blue-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-blue-500",
57
+ indigo: "bg-indigo-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-indigo-500",
58
+ violet: "bg-violet-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-violet-500",
59
+ purple: "bg-purple-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-purple-500",
60
+ fuchsia: "bg-fuchsia-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-fuchsia-500",
61
+ pink: "bg-pink-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-pink-500",
62
+ rose: "bg-rose-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-rose-500"
63
+ };
64
+ const OUTLINE = {
65
+ slate: "border border-slate-300/80 bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:border-white/10 dark:text-slate-200 dark:hover:bg-white/10",
66
+ gray: "border border-gray-300/80 bg-transparent text-gray-700 hover:bg-gray-50 active:scale-[.98] dark:border-white/10 dark:text-gray-200 dark:hover:bg-white/10",
67
+ zinc: "border border-zinc-300/80 bg-transparent text-zinc-700 hover:bg-zinc-50 active:scale-[.98] dark:border-white/10 dark:text-zinc-200 dark:hover:bg-white/10",
68
+ neutral: "border border-neutral-300/80 bg-transparent text-neutral-700 hover:bg-neutral-50 active:scale-[.98] dark:border-white/10 dark:text-neutral-200 dark:hover:bg-white/10",
69
+ stone: "border border-stone-300/80 bg-transparent text-stone-700 hover:bg-stone-50 active:scale-[.98] dark:border-white/10 dark:text-stone-200 dark:hover:bg-white/10",
70
+ red: "border border-red-300/80 bg-transparent text-red-700 hover:bg-red-50 active:scale-[.98] dark:border-white/10 dark:text-red-300 dark:hover:bg-white/10",
71
+ orange: "border border-orange-300/80 bg-transparent text-orange-700 hover:bg-orange-50 active:scale-[.98] dark:border-white/10 dark:text-orange-300 dark:hover:bg-white/10",
72
+ amber: "border border-amber-300/80 bg-transparent text-amber-700 hover:bg-amber-50 active:scale-[.98] dark:border-white/10 dark:text-amber-300 dark:hover:bg-white/10",
73
+ yellow: "border border-yellow-300/80 bg-transparent text-yellow-700 hover:bg-yellow-50 active:scale-[.98] dark:border-white/10 dark:text-yellow-300 dark:hover:bg-white/10",
74
+ lime: "border border-lime-300/80 bg-transparent text-lime-700 hover:bg-lime-50 active:scale-[.98] dark:border-white/10 dark:text-lime-300 dark:hover:bg-white/10",
75
+ green: "border border-green-300/80 bg-transparent text-green-700 hover:bg-green-50 active:scale-[.98] dark:border-white/10 dark:text-green-300 dark:hover:bg-white/10",
76
+ emerald: "border border-emerald-300/80 bg-transparent text-emerald-700 hover:bg-emerald-50 active:scale-[.98] dark:border-white/10 dark:text-emerald-300 dark:hover:bg-white/10",
77
+ teal: "border border-teal-300/80 bg-transparent text-teal-700 hover:bg-teal-50 active:scale-[.98] dark:border-white/10 dark:text-teal-300 dark:hover:bg-white/10",
78
+ cyan: "border border-cyan-300/80 bg-transparent text-cyan-700 hover:bg-cyan-50 active:scale-[.98] dark:border-white/10 dark:text-cyan-300 dark:hover:bg-white/10",
79
+ sky: "border border-sky-300/80 bg-transparent text-sky-700 hover:bg-sky-50 active:scale-[.98] dark:border-white/10 dark:text-sky-300 dark:hover:bg-white/10",
80
+ blue: "border border-blue-300/80 bg-transparent text-blue-700 hover:bg-blue-50 active:scale-[.98] dark:border-white/10 dark:text-blue-300 dark:hover:bg-white/10",
81
+ indigo: "border border-indigo-300/80 bg-transparent text-indigo-700 hover:bg-indigo-50 active:scale-[.98] dark:border-white/10 dark:text-indigo-300 dark:hover:bg-white/10",
82
+ violet: "border border-violet-300/80 bg-transparent text-violet-700 hover:bg-violet-50 active:scale-[.98] dark:border-white/10 dark:text-violet-300 dark:hover:bg-white/10",
83
+ purple: "border border-purple-300/80 bg-transparent text-purple-700 hover:bg-purple-50 active:scale-[.98] dark:border-white/10 dark:text-purple-300 dark:hover:bg-white/10",
84
+ fuchsia: "border border-fuchsia-300/80 bg-transparent text-fuchsia-700 hover:bg-fuchsia-50 active:scale-[.98] dark:border-white/10 dark:text-fuchsia-300 dark:hover:bg-white/10",
85
+ pink: "border border-pink-300/80 bg-transparent text-pink-700 hover:bg-pink-50 active:scale-[.98] dark:border-white/10 dark:text-pink-300 dark:hover:bg-white/10",
86
+ rose: "border border-rose-300/80 bg-transparent text-rose-700 hover:bg-rose-50 active:scale-[.98] dark:border-white/10 dark:text-rose-300 dark:hover:bg-white/10"
87
+ };
88
+ const GHOST = {
89
+ slate: "bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:text-slate-200 dark:hover:bg-white/10",
90
+ gray: "bg-transparent text-gray-700 hover:bg-gray-50 active:scale-[.98] dark:text-gray-200 dark:hover:bg-white/10",
91
+ zinc: "bg-transparent text-zinc-700 hover:bg-zinc-50 active:scale-[.98] dark:text-zinc-200 dark:hover:bg-white/10",
92
+ neutral: "bg-transparent text-neutral-700 hover:bg-neutral-50 active:scale-[.98] dark:text-neutral-200 dark:hover:bg-white/10",
93
+ stone: "bg-transparent text-stone-700 hover:bg-stone-50 active:scale-[.98] dark:text-stone-200 dark:hover:bg-white/10",
94
+ red: "bg-transparent text-red-700 hover:bg-red-50 active:scale-[.98] dark:text-red-300 dark:hover:bg-white/10",
95
+ orange: "bg-transparent text-orange-700 hover:bg-orange-50 active:scale-[.98] dark:text-orange-300 dark:hover:bg-white/10",
96
+ amber: "bg-transparent text-amber-700 hover:bg-amber-50 active:scale-[.98] dark:text-amber-300 dark:hover:bg-white/10",
97
+ yellow: "bg-transparent text-yellow-700 hover:bg-yellow-50 active:scale-[.98] dark:text-yellow-300 dark:hover:bg-white/10",
98
+ lime: "bg-transparent text-lime-700 hover:bg-lime-50 active:scale-[.98] dark:text-lime-300 dark:hover:bg-white/10",
99
+ green: "bg-transparent text-green-700 hover:bg-green-50 active:scale-[.98] dark:text-green-300 dark:hover:bg-white/10",
100
+ emerald: "bg-transparent text-emerald-700 hover:bg-emerald-50 active:scale-[.98] dark:text-emerald-300 dark:hover:bg-white/10",
101
+ teal: "bg-transparent text-teal-700 hover:bg-teal-50 active:scale-[.98] dark:text-teal-300 dark:hover:bg-white/10",
102
+ cyan: "bg-transparent text-cyan-700 hover:bg-cyan-50 active:scale-[.98] dark:text-cyan-300 dark:hover:bg-white/10",
103
+ sky: "bg-transparent text-sky-700 hover:bg-sky-50 active:scale-[.98] dark:text-sky-300 dark:hover:bg-white/10",
104
+ blue: "bg-transparent text-blue-700 hover:bg-blue-50 active:scale-[.98] dark:text-blue-300 dark:hover:bg-white/10",
105
+ indigo: "bg-transparent text-indigo-700 hover:bg-indigo-50 active:scale-[.98] dark:text-indigo-300 dark:hover:bg-white/10",
106
+ violet: "bg-transparent text-violet-700 hover:bg-violet-50 active:scale-[.98] dark:text-violet-300 dark:hover:bg-white/10",
107
+ purple: "bg-transparent text-purple-700 hover:bg-purple-50 active:scale-[.98] dark:text-purple-300 dark:hover:bg-white/10",
108
+ fuchsia: "bg-transparent text-fuchsia-700 hover:bg-fuchsia-50 active:scale-[.98] dark:text-fuchsia-300 dark:hover:bg-white/10",
109
+ pink: "bg-transparent text-pink-700 hover:bg-pink-50 active:scale-[.98] dark:text-pink-300 dark:hover:bg-white/10",
110
+ rose: "bg-transparent text-rose-700 hover:bg-rose-50 active:scale-[.98] dark:text-rose-300 dark:hover:bg-white/10"
111
+ };
37
112
  const variantClass = (() => {
38
113
  switch (variant) {
39
114
  case "primary":
40
- return "bg-slate-900 text-white hover:opacity-90 active:scale-[.98] dark:bg-white dark:text-slate-900";
115
+ return color ? SOLID[color] : "bg-slate-900 text-white hover:opacity-90 active:scale-[.98] dark:bg-white dark:text-slate-900";
41
116
  case "secondary":
42
117
  return inverted ? "border border-white/15 bg-white/10 text-white hover:bg-white/15 active:scale-[.98]" : "border border-slate-300/80 bg-white text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:border-white/10 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10";
43
118
  case "outline":
44
- return inverted ? "border border-white/20 bg-transparent text-white hover:bg-white/10 active:scale-[.98]" : "border border-slate-300/80 bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:border-white/10 dark:text-slate-200 dark:hover:bg-white/10";
119
+ return inverted ? "border border-white/20 bg-transparent text-white hover:bg-white/10 active:scale-[.98]" : color ? OUTLINE[color] : "border border-slate-300/80 bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:border-white/10 dark:text-slate-200 dark:hover:bg-white/10";
45
120
  case "ghost":
46
- return inverted ? "bg-transparent text-white hover:bg-white/10 active:scale-[.98]" : "bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:text-slate-200 dark:hover:bg-white/10";
121
+ return inverted ? "bg-transparent text-white hover:bg-white/10 active:scale-[.98]" : color ? GHOST[color] : "bg-transparent text-slate-700 hover:bg-slate-50 active:scale-[.98] dark:text-slate-200 dark:hover:bg-white/10";
47
122
  case "danger":
48
- return "bg-blue-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-blue-500";
123
+ return color ? SOLID[color] : "bg-rose-600 text-white hover:opacity-90 active:scale-[.98] dark:bg-rose-500";
49
124
  }
50
125
  })();
51
- const activeClass = active ? variant === "primary" ? "ring-2 ring-slate-300/60 dark:ring-white/20" : variant === "ghost" ? inverted ? "bg-white/15 text-white shadow-sm" : "bg-slate-100 text-slate-900 shadow-sm" : variant === "outline" ? inverted ? "bg-white/10 text-white" : "bg-slate-50" : variant === "secondary" ? inverted ? "bg-white/15 text-white" : "bg-slate-100" : "" : "";
126
+ const activeClass = active ? variant === "primary" ? "ring-2 ring-slate-300/60 dark:ring-white/20" : variant === "ghost" ? inverted ? "bg-white/15 text-white shadow-sm" : "bg-slate-100 text-slate-900 ring-1 ring-slate-300 dark:ring-white/15 shadow-sm" : variant === "outline" ? inverted ? "bg-white/10 text-white" : "bg-slate-50 ring-1 ring-slate-300 dark:ring-white/15" : variant === "secondary" ? inverted ? "bg-white/15 text-white" : "bg-slate-100 ring-1 ring-slate-300/80 dark:ring-white/15" : "" : "";
52
127
  const hasChildren = children !== void 0 && children !== null && children !== false;
53
128
  const showText = hasChildren && !iconOnly;
54
129
  const iconLeft = !loading ? leftIcon != null ? leftIcon : iconOnly ? icon != null ? icon : children : void 0 : void 0;
@@ -58,6 +133,7 @@ function Button({
58
133
  return /* @__PURE__ */ jsxs(
59
134
  "button",
60
135
  {
136
+ ref,
61
137
  type,
62
138
  disabled: disabled || loading,
63
139
  "aria-pressed": active ? true : void 0,
@@ -82,7 +158,9 @@ function Button({
82
158
  ]
83
159
  }
84
160
  );
85
- }
161
+ });
162
+ Button.displayName = "Button";
163
+ var Button_default = Button;
86
164
  export {
87
- Button as default
165
+ Button_default as default
88
166
  };
@@ -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 CalendarPanel_exports = {};
21
31
  __export(CalendarPanel_exports, {
@@ -23,6 +33,7 @@ __export(CalendarPanel_exports, {
23
33
  });
24
34
  module.exports = __toCommonJS(CalendarPanel_exports);
25
35
  var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_Button = __toESM(require("./Button"));
26
37
  const pad2 = (n) => n < 10 ? `0${n}` : String(n);
27
38
  const fmtISODate = (d) => `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;
28
39
  const dow = ["D", "L", "M", "M", "J", "V", "S"];
@@ -66,16 +77,20 @@ function CalendarPanel({
66
77
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-sm font-semibold", children: cursor.toLocaleDateString("es-MX", { month: "long", year: "numeric" }) }),
67
78
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-1.5", children: [
68
79
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
69
- "button",
80
+ import_Button.default,
70
81
  {
82
+ unstyled: true,
83
+ type: "button",
71
84
  className: "rounded-lg border border-slate-200 px-2 py-1 text-sm hover:bg-slate-50 dark:border-white/10 dark:hover:bg-white/10",
72
85
  onClick: () => onCursorChange(new Date(year, month - 1, 1)),
73
86
  children: "\u25C0"
74
87
  }
75
88
  ),
76
89
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
77
- "button",
90
+ import_Button.default,
78
91
  {
92
+ unstyled: true,
93
+ type: "button",
79
94
  className: "rounded-lg border border-slate-200 px-2 py-1 text-sm hover:bg-slate-50 dark:border-white/10 dark:hover:bg-white/10",
80
95
  onClick: () => onCursorChange(new Date(year, month + 1, 1)),
81
96
  children: "\u25B6"
@@ -91,8 +106,10 @@ function CalendarPanel({
91
106
  const disabled = !withinBounds(d);
92
107
  const key = d.toISOString().slice(0, 10);
93
108
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
94
- "button",
109
+ import_Button.default,
95
110
  {
111
+ unstyled: true,
112
+ type: "button",
96
113
  disabled,
97
114
  onClick: () => !disabled && onPick(d),
98
115
  className: [
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import Button from "./Button";
3
4
  const pad2 = (n) => n < 10 ? `0${n}` : String(n);
4
5
  const fmtISODate = (d) => `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;
5
6
  const dow = ["D", "L", "M", "M", "J", "V", "S"];
@@ -43,16 +44,20 @@ function CalendarPanel({
43
44
  /* @__PURE__ */ jsx("div", { className: "text-sm font-semibold", children: cursor.toLocaleDateString("es-MX", { month: "long", year: "numeric" }) }),
44
45
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
45
46
  /* @__PURE__ */ jsx(
46
- "button",
47
+ Button,
47
48
  {
49
+ unstyled: true,
50
+ type: "button",
48
51
  className: "rounded-lg border border-slate-200 px-2 py-1 text-sm hover:bg-slate-50 dark:border-white/10 dark:hover:bg-white/10",
49
52
  onClick: () => onCursorChange(new Date(year, month - 1, 1)),
50
53
  children: "\u25C0"
51
54
  }
52
55
  ),
53
56
  /* @__PURE__ */ jsx(
54
- "button",
57
+ Button,
55
58
  {
59
+ unstyled: true,
60
+ type: "button",
56
61
  className: "rounded-lg border border-slate-200 px-2 py-1 text-sm hover:bg-slate-50 dark:border-white/10 dark:hover:bg-white/10",
57
62
  onClick: () => onCursorChange(new Date(year, month + 1, 1)),
58
63
  children: "\u25B6"
@@ -68,8 +73,10 @@ function CalendarPanel({
68
73
  const disabled = !withinBounds(d);
69
74
  const key = d.toISOString().slice(0, 10);
70
75
  return /* @__PURE__ */ jsx(
71
- "button",
76
+ Button,
72
77
  {
78
+ unstyled: true,
79
+ type: "button",
73
80
  disabled,
74
81
  onClick: () => !disabled && onPick(d),
75
82
  className: [
@@ -0,0 +1,6 @@
1
+ import React__default from 'react';
2
+
3
+ type Props = React__default.HTMLAttributes<HTMLDivElement>;
4
+ declare const Card: React__default.ForwardRefExoticComponent<Props & React__default.RefAttributes<HTMLDivElement>>;
5
+
6
+ export { Card as default };
package/dist/Card.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import React__default from 'react';
2
+
3
+ type Props = React__default.HTMLAttributes<HTMLDivElement>;
4
+ declare const Card: React__default.ForwardRefExoticComponent<Props & React__default.RefAttributes<HTMLDivElement>>;
5
+
6
+ export { Card as default };