@forgedevstack/bear 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/components/Alert/Alert.cjs +1 -1
  2. package/dist/components/Alert/Alert.const.cjs +1 -1
  3. package/dist/components/Alert/Alert.const.d.ts +4 -0
  4. package/dist/components/Alert/Alert.const.js +9 -15
  5. package/dist/components/Alert/Alert.js +43 -38
  6. package/dist/components/AppBar/AppBar.cjs +1 -1
  7. package/dist/components/AppBar/AppBar.js +20 -16
  8. package/dist/components/BackTop/BackTop.cjs +1 -0
  9. package/dist/components/BackTop/BackTop.const.cjs +1 -0
  10. package/dist/components/BackTop/BackTop.const.d.ts +34 -0
  11. package/dist/components/BackTop/BackTop.const.js +29 -0
  12. package/dist/components/BackTop/BackTop.d.ts +21 -0
  13. package/dist/components/BackTop/BackTop.js +87 -0
  14. package/dist/components/BackTop/BackTop.types.d.ts +28 -0
  15. package/dist/components/BackTop/index.d.ts +3 -0
  16. package/dist/components/Badge/Badge.constants.d.ts +4 -4
  17. package/dist/components/Badge/Badge.types.d.ts +3 -3
  18. package/dist/components/BottomSheet/BottomSheet.cjs +1 -1
  19. package/dist/components/BottomSheet/BottomSheet.js +39 -38
  20. package/dist/components/Button/Button.cjs +1 -1
  21. package/dist/components/Button/Button.constants.cjs +38 -48
  22. package/dist/components/Button/Button.constants.d.ts +22 -3
  23. package/dist/components/Button/Button.constants.js +51 -50
  24. package/dist/components/Button/Button.d.ts +14 -7
  25. package/dist/components/Button/Button.js +123 -45
  26. package/dist/components/Button/Button.types.d.ts +22 -4
  27. package/dist/components/Calendar/Calendar.cjs +1 -1
  28. package/dist/components/Calendar/Calendar.js +3 -2
  29. package/dist/components/Card/Card.const.d.ts +2 -2
  30. package/dist/components/Card/Card.types.d.ts +2 -2
  31. package/dist/components/Chat/Chat.cjs +1 -0
  32. package/dist/components/Chat/Chat.const.cjs +1 -0
  33. package/dist/components/Chat/Chat.const.d.ts +26 -0
  34. package/dist/components/Chat/Chat.const.js +29 -0
  35. package/dist/components/Chat/Chat.d.ts +21 -0
  36. package/dist/components/Chat/Chat.js +179 -0
  37. package/dist/components/Chat/Chat.types.d.ts +55 -0
  38. package/dist/components/Chat/index.d.ts +2 -0
  39. package/dist/components/Confetti/Confetti.cjs +1 -0
  40. package/dist/components/Confetti/Confetti.const.cjs +1 -0
  41. package/dist/components/Confetti/Confetti.const.d.ts +16 -0
  42. package/dist/components/Confetti/Confetti.const.js +36 -0
  43. package/dist/components/Confetti/Confetti.d.ts +23 -0
  44. package/dist/components/Confetti/Confetti.js +94 -0
  45. package/dist/components/Confetti/Confetti.types.d.ts +50 -0
  46. package/dist/components/Confetti/index.d.ts +4 -0
  47. package/dist/components/Confetti/useConfetti.cjs +1 -0
  48. package/dist/components/Confetti/useConfetti.d.ts +13 -0
  49. package/dist/components/Confetti/useConfetti.js +12 -0
  50. package/dist/components/DatePicker/DatePicker.cjs +1 -1
  51. package/dist/components/DatePicker/DatePicker.js +3 -2
  52. package/dist/components/DiffViewer/DiffViewer.cjs +1 -0
  53. package/dist/components/DiffViewer/DiffViewer.const.cjs +1 -0
  54. package/dist/components/DiffViewer/DiffViewer.const.d.ts +18 -0
  55. package/dist/components/DiffViewer/DiffViewer.const.js +21 -0
  56. package/dist/components/DiffViewer/DiffViewer.d.ts +18 -0
  57. package/dist/components/DiffViewer/DiffViewer.js +127 -0
  58. package/dist/components/DiffViewer/DiffViewer.types.d.ts +40 -0
  59. package/dist/components/DiffViewer/DiffViewer.utils.cjs +3 -0
  60. package/dist/components/DiffViewer/DiffViewer.utils.d.ts +9 -0
  61. package/dist/components/DiffViewer/DiffViewer.utils.js +39 -0
  62. package/dist/components/DiffViewer/index.d.ts +2 -0
  63. package/dist/components/Drawer/Drawer.cjs +1 -1
  64. package/dist/components/Drawer/Drawer.js +35 -35
  65. package/dist/components/FloatingChat/FloatingChat.cjs +1 -0
  66. package/dist/components/FloatingChat/FloatingChat.const.cjs +1 -0
  67. package/dist/components/FloatingChat/FloatingChat.const.d.ts +12 -0
  68. package/dist/components/FloatingChat/FloatingChat.const.js +15 -0
  69. package/dist/components/FloatingChat/FloatingChat.d.ts +19 -0
  70. package/dist/components/FloatingChat/FloatingChat.js +144 -0
  71. package/dist/components/FloatingChat/FloatingChat.types.d.ts +44 -0
  72. package/dist/components/FloatingChat/index.d.ts +2 -0
  73. package/dist/components/JsonViewer/JsonViewer.cjs +1 -0
  74. package/dist/components/JsonViewer/JsonViewer.const.cjs +1 -0
  75. package/dist/components/JsonViewer/JsonViewer.const.d.ts +4 -0
  76. package/dist/components/JsonViewer/JsonViewer.const.js +24 -0
  77. package/dist/components/JsonViewer/JsonViewer.d.ts +17 -0
  78. package/dist/components/JsonViewer/JsonViewer.js +195 -0
  79. package/dist/components/JsonViewer/JsonViewer.types.d.ts +54 -0
  80. package/dist/components/JsonViewer/index.d.ts +2 -0
  81. package/dist/components/Kanban/Kanban.cjs +1 -1
  82. package/dist/components/Kanban/Kanban.js +18 -17
  83. package/dist/components/QRCode/QRCode.cjs +1 -0
  84. package/dist/components/QRCode/QRCode.const.cjs +1 -0
  85. package/dist/components/QRCode/QRCode.const.d.ts +21 -0
  86. package/dist/components/QRCode/QRCode.const.js +11 -0
  87. package/dist/components/QRCode/QRCode.d.ts +29 -0
  88. package/dist/components/QRCode/QRCode.js +68 -0
  89. package/dist/components/QRCode/QRCode.types.d.ts +32 -0
  90. package/dist/components/QRCode/QRCode.utils.cjs +1 -0
  91. package/dist/components/QRCode/QRCode.utils.d.ts +12 -0
  92. package/dist/components/QRCode/QRCode.utils.js +74 -0
  93. package/dist/components/QRCode/index.d.ts +3 -0
  94. package/dist/components/Spinner/Spinner.types.d.ts +2 -2
  95. package/dist/components/Terminal/Terminal.cjs +1 -0
  96. package/dist/components/Terminal/Terminal.const.cjs +1 -0
  97. package/dist/components/Terminal/Terminal.const.d.ts +32 -0
  98. package/dist/components/Terminal/Terminal.const.js +42 -0
  99. package/dist/components/Terminal/Terminal.d.ts +27 -0
  100. package/dist/components/Terminal/Terminal.js +155 -0
  101. package/dist/components/Terminal/Terminal.types.d.ts +49 -0
  102. package/dist/components/Terminal/index.d.ts +2 -0
  103. package/dist/components/Tour/Tour.cjs +1 -0
  104. package/dist/components/Tour/Tour.const.cjs +1 -0
  105. package/dist/components/Tour/Tour.const.d.ts +25 -0
  106. package/dist/components/Tour/Tour.const.js +38 -0
  107. package/dist/components/Tour/Tour.d.ts +17 -0
  108. package/dist/components/Tour/Tour.js +179 -0
  109. package/dist/components/Tour/Tour.types.d.ts +80 -0
  110. package/dist/components/Tour/index.d.ts +4 -0
  111. package/dist/components/Tour/useTour.cjs +1 -0
  112. package/dist/components/Tour/useTour.d.ts +14 -0
  113. package/dist/components/Tour/useTour.js +27 -0
  114. package/dist/components/Typography/Typography.cjs +1 -1
  115. package/dist/components/Typography/Typography.d.ts +5 -1
  116. package/dist/components/Typography/Typography.js +93 -57
  117. package/dist/components/Typography/Typography.types.d.ts +29 -2
  118. package/dist/components/index.cjs +1 -1
  119. package/dist/components/index.d.ts +19 -1
  120. package/dist/components/index.js +242 -218
  121. package/dist/context/BearProvider.cjs +1 -1
  122. package/dist/context/BearProvider.d.ts +110 -5
  123. package/dist/context/BearProvider.js +198 -53
  124. package/dist/context/defaultTheme.cjs +1 -1
  125. package/dist/context/defaultTheme.js +11 -11
  126. package/dist/hooks/index.cjs +1 -1
  127. package/dist/hooks/index.d.ts +14 -0
  128. package/dist/hooks/index.js +56 -39
  129. package/dist/hooks/useBearComponent/index.d.ts +2 -0
  130. package/dist/hooks/useBearComponent/useBearComponent.cjs +1 -0
  131. package/dist/hooks/useBearComponent/useBearComponent.d.ts +71 -0
  132. package/dist/hooks/useBearComponent/useBearComponent.js +54 -0
  133. package/dist/hooks/useBearComponent/useBearComponent.types.d.ts +40 -0
  134. package/dist/hooks/useIdle/index.d.ts +2 -0
  135. package/dist/hooks/useIdle/useIdle.cjs +1 -0
  136. package/dist/hooks/useIdle/useIdle.d.ts +22 -0
  137. package/dist/hooks/useIdle/useIdle.js +66 -0
  138. package/dist/hooks/useIdle/useIdle.types.d.ts +29 -0
  139. package/dist/hooks/useLongPress/index.d.ts +2 -0
  140. package/dist/hooks/useLongPress/useLongPress.cjs +1 -0
  141. package/dist/hooks/useLongPress/useLongPress.d.ts +17 -0
  142. package/dist/hooks/useLongPress/useLongPress.js +44 -0
  143. package/dist/hooks/useLongPress/useLongPress.types.d.ts +26 -0
  144. package/dist/hooks/useOnline/index.d.ts +2 -0
  145. package/dist/hooks/useOnline/useOnline.cjs +1 -0
  146. package/dist/hooks/useOnline/useOnline.d.ts +16 -0
  147. package/dist/hooks/useOnline/useOnline.js +25 -0
  148. package/dist/hooks/useOnline/useOnline.types.d.ts +15 -0
  149. package/dist/hooks/usePageVisibility/index.d.ts +2 -0
  150. package/dist/hooks/usePageVisibility/usePageVisibility.cjs +1 -0
  151. package/dist/hooks/usePageVisibility/usePageVisibility.d.ts +19 -0
  152. package/dist/hooks/usePageVisibility/usePageVisibility.js +26 -0
  153. package/dist/hooks/usePageVisibility/usePageVisibility.types.d.ts +15 -0
  154. package/dist/hooks/useSpotlight/index.d.ts +2 -0
  155. package/dist/hooks/useSpotlight/useSpotlight.cjs +1 -0
  156. package/dist/hooks/useSpotlight/useSpotlight.d.ts +24 -0
  157. package/dist/hooks/useSpotlight/useSpotlight.js +49 -0
  158. package/dist/hooks/useSpotlight/useSpotlight.types.d.ts +23 -0
  159. package/dist/hooks/useWebSocket/index.d.ts +2 -0
  160. package/dist/hooks/useWebSocket/useWebSocket.cjs +1 -0
  161. package/dist/hooks/useWebSocket/useWebSocket.d.ts +22 -0
  162. package/dist/hooks/useWebSocket/useWebSocket.js +75 -0
  163. package/dist/hooks/useWebSocket/useWebSocket.types.d.ts +44 -0
  164. package/dist/index.cjs +1 -1
  165. package/dist/index.js +324 -283
  166. package/dist/styles.css +1 -1
  167. package/dist/types/component.types.d.ts +125 -42
  168. package/dist/types/theme.types.d.ts +82 -0
  169. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
- import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
- import { useState as l, useEffect as h, useCallback as j } from "react";
3
- import { createPortal as I } from "react-dom";
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
+ import { useState as i, useEffect as h, useCallback as I } from "react";
3
+ import { createPortal as A } from "react-dom";
4
4
  import { cn as x } from "../../utils/cn.js";
5
- import { XIcon as A } from "../Icon/index.js";
6
- const y = 300, E = {
5
+ import { XIcon as E } from "../Icon/index.js";
6
+ const v = 300, M = {
7
7
  sm: "bear-max-h-[40%]",
8
8
  md: "bear-max-h-[60%]",
9
9
  lg: "bear-max-h-[80%]",
@@ -12,71 +12,72 @@ const y = 300, E = {
12
12
  isOpen: o,
13
13
  onClose: t,
14
14
  title: b,
15
- children: v,
16
- size: p = "md",
15
+ children: y,
16
+ size: k = "md",
17
17
  showCloseButton: d = !0,
18
- closeOnBackdrop: w = !0,
19
- closeOnEscape: c = !0,
20
- showHandle: N = !0,
21
- className: g
18
+ closeOnBackdrop: p = !0,
19
+ closeOnEscape: u = !0,
20
+ showHandle: g = !0,
21
+ className: w
22
22
  }) => {
23
- const [r, m] = l(o), [u, s] = l(!1), [z, f] = l(!1);
23
+ const [r, c] = i(o), [m, n] = i(!1), [N, f] = i(!1);
24
24
  h(() => {
25
25
  if (o) {
26
- m(!0), s(!1);
26
+ c(!0), n(!1);
27
27
  const a = requestAnimationFrame(() => f(!0));
28
28
  return () => cancelAnimationFrame(a);
29
29
  }
30
30
  if (r) {
31
- f(!1), s(!0);
31
+ f(!1), n(!0);
32
32
  const a = setTimeout(() => {
33
- m(!1), s(!1);
34
- }, y);
33
+ c(!1), n(!1);
34
+ }, v);
35
35
  return () => clearTimeout(a);
36
36
  }
37
37
  }, [o, r]);
38
- const i = j(
38
+ const l = I(
39
39
  (a) => {
40
- c && a.key === "Escape" && t();
40
+ u && a.key === "Escape" && t();
41
41
  },
42
- [c, t]
42
+ [u, t]
43
43
  );
44
- if (h(() => (r && (document.addEventListener("keydown", i), document.body.style.overflow = "hidden"), () => {
45
- document.removeEventListener("keydown", i), document.body.style.overflow = "";
46
- }), [r, i]), !r) return null;
47
- const k = /* @__PURE__ */ n("div", { className: "bear-fixed bear-inset-0 bear-z-50 bear-flex bear-items-end bear-justify-center", children: [
44
+ if (h(() => (r && (document.addEventListener("keydown", l), document.body.style.overflow = "hidden"), () => {
45
+ document.removeEventListener("keydown", l), document.body.style.overflow = "";
46
+ }), [r, l]), !r) return null;
47
+ const j = /* @__PURE__ */ s("div", { className: "bear-fixed bear-inset-0 bear-z-50 bear-flex bear-items-end bear-justify-center", children: [
48
48
  /* @__PURE__ */ e(
49
49
  "div",
50
50
  {
51
51
  className: x(
52
52
  "bear-absolute bear-inset-0 bear-bg-black/60 bear-backdrop-blur-sm bear-transition-opacity",
53
- u ? "bear-opacity-0" : "bear-opacity-100"
53
+ m ? "bear-opacity-0" : "bear-opacity-100"
54
54
  ),
55
- style: { transitionDuration: `${y}ms` },
56
- onClick: w ? t : void 0,
55
+ style: { transitionDuration: `${v}ms` },
56
+ onClick: p ? t : void 0,
57
57
  "aria-hidden": "true"
58
58
  }
59
59
  ),
60
- /* @__PURE__ */ n(
60
+ /* @__PURE__ */ s(
61
61
  "div",
62
62
  {
63
63
  role: "dialog",
64
64
  "aria-modal": "true",
65
65
  "aria-labelledby": b ? "bottom-sheet-title" : void 0,
66
66
  className: x(
67
- "Bear-BottomSheet bear-relative bear-w-full bear-rounded-t-2xl bear-bg-zinc-900 bear-border-t bear-border-zinc-700 bear-shadow-2xl bear-overflow-hidden bear-transition-transform bear-duration-300",
68
- E[p],
69
- z && !u ? "bear-translate-y-0" : "bear-translate-y-full",
70
- g
67
+ "Bear-BottomSheet bear-relative bear-w-full bear-rounded-t-2xl bear-shadow-2xl bear-overflow-hidden bear-transition-transform bear-duration-300",
68
+ "bear-bg-white dark:bear-bg-neutral-900 bear-border-t bear-border-neutral-200 dark:bear-border-neutral-700",
69
+ M[k],
70
+ N && !m ? "bear-translate-y-0" : "bear-translate-y-full",
71
+ w
71
72
  ),
72
73
  children: [
73
- N && /* @__PURE__ */ e("div", { className: "bear-flex bear-justify-center bear-pt-2 bear-pb-1", children: /* @__PURE__ */ e("div", { className: "bear-w-12 bear-h-1 bear-rounded-full bear-bg-zinc-600", "aria-hidden": !0 }) }),
74
- (b || d) && /* @__PURE__ */ n("div", { className: "bear-flex bear-items-center bear-justify-between bear-px-4 bear-py-3 bear-border-b bear-border-zinc-700", children: [
74
+ g && /* @__PURE__ */ e("div", { className: "bear-flex bear-justify-center bear-pt-2 bear-pb-1", children: /* @__PURE__ */ e("div", { className: "bear-w-12 bear-h-1 bear-rounded-full bear-bg-neutral-300 dark:bear-bg-neutral-600", "aria-hidden": !0 }) }),
75
+ (b || d) && /* @__PURE__ */ s("div", { className: "bear-flex bear-items-center bear-justify-between bear-px-4 bear-py-3 bear-border-b bear-border-neutral-200 dark:bear-border-neutral-700", children: [
75
76
  b && /* @__PURE__ */ e(
76
77
  "h2",
77
78
  {
78
79
  id: "bottom-sheet-title",
79
- className: "bear-text-lg bear-font-semibold bear-text-white",
80
+ className: "bear-text-lg bear-font-semibold bear-text-neutral-900 dark:bear-text-white",
80
81
  children: b
81
82
  }
82
83
  ),
@@ -84,18 +85,18 @@ const y = 300, E = {
84
85
  "button",
85
86
  {
86
87
  onClick: t,
87
- className: "bear-p-1 bear-rounded-lg bear-text-zinc-400 hover:bear-text-white hover:bear-bg-zinc-700 bear-transition-colors",
88
+ className: "bear-p-1 bear-rounded-lg bear-text-neutral-500 dark:bear-text-neutral-400 hover:bear-text-neutral-900 dark:hover:bear-text-white hover:bear-bg-neutral-100 dark:hover:bear-bg-neutral-700 bear-transition-colors",
88
89
  "aria-label": "Close",
89
- children: /* @__PURE__ */ e(A, { className: "bear-w-5 bear-h-5" })
90
+ children: /* @__PURE__ */ e(E, { className: "bear-w-5 bear-h-5" })
90
91
  }
91
92
  )
92
93
  ] }),
93
- /* @__PURE__ */ e("div", { className: "bear-flex-1 bear-overflow-y-auto bear-p-4 bear-text-zinc-300", children: v })
94
+ /* @__PURE__ */ e("div", { className: "bear-flex-1 bear-overflow-y-auto bear-p-4 bear-text-neutral-700 dark:bear-text-neutral-300", children: y })
94
95
  ]
95
96
  }
96
97
  )
97
98
  ] });
98
- return I(k, document.body);
99
+ return A(j, document.body);
99
100
  };
100
101
  export {
101
102
  F as BottomSheet
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),S=require("react"),l=require("../../utils/cn.cjs"),q=require("../Spinner/Spinner.cjs"),v=require("../../hooks/useBearStyles.cjs"),c=require("./Button.constants.cjs"),u=S.forwardRef((b,d)=>{const{variant:B="primary",size:r="md",loading:t=!1,fullWidth:f=!1,icon:n,iconPosition:s="left",leftIcon:m,rightIcon:_,disabled:h,className:x,children:p,testId:g,bis:y,style:N,...j}=b,I=h||t,a=v.useBearStyles(y,N),i=m??(n&&s==="left"?n:void 0),o=_??(n&&s==="right"?n:void 0);return e.jsxs("button",{ref:d,disabled:I,style:Object.keys(a).length?a:void 0,className:l.cn("Bear-Button","bear-inline-flex bear-items-center bear-justify-center bear-font-medium bear-rounded-lg bear-transition-all bear-duration-200 bear-outline-none",c.BUTTON_SIZE[r],c.BUTTON_VARIANT[B],f&&"bear-w-full",t&&"bear-cursor-wait",x),"data-testid":g,...j,children:[t&&e.jsx(q.Spinner,{size:r==="xs"?"xs":"sm",className:"Bear-Button__spinner bear-absolute"}),e.jsxs("span",{className:l.cn("Bear-Button__content bear-inline-flex bear-items-center bear-gap-inherit",t&&"bear-invisible"),children:[i&&e.jsx("span",{className:"Bear-Button__icon Bear-Button__icon--left bear-inline-flex bear-shrink-0",children:i}),e.jsx("span",{className:"Bear-Button__text",children:p}),o&&e.jsx("span",{className:"Bear-Button__icon Bear-Button__icon--right bear-inline-flex bear-shrink-0",children:o})]})]})});u.displayName="Button";exports.Button=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),r=require("react"),k=require("../../utils/cn.cjs"),te=require("../Spinner/Spinner.cjs"),re=require("../Typography/Typography.cjs"),ne=require("../../hooks/useBearStyles.cjs");require("../../hooks/useBearComponent/useBearComponent.cjs");const oe=require("../../context/BearProvider.cjs"),b=require("./Button.constants.cjs"),q=m=>m in b.BUTTON_VARIANT,V=r.forwardRef((m,i)=>{var j,A;const{variant:e="primary",size:C="md",loading:d=!1,fullWidth:w=!1,icon:f,iconPosition:N="left",leftIcon:M,rightIcon:P,spotlight:l=!1,spotlightColor:z="rgba(255, 255, 255, 0.35)",spotlightSize:g=150,disabled:E,className:U,children:O,testId:D,bis:L,style:F,onMouseMove:h,onMouseEnter:p,onMouseLeave:B,...H}=m,X=E||d,y=ne.useBearStyles(L,F),S=M??(f&&N==="left"?f:void 0),I=P??(f&&N==="right"?f:void 0),s=r.useContext(oe.BearContext),x=((A=(j=s==null?void 0:s.components)==null?void 0:j.Button)==null?void 0:A.root)||{},T=(s==null?void 0:s.customVariants)||{},v=!q(e)&&e in T,n=v?T[e]:null,c=r.useRef(null),[R,_]=r.useState({x:-1e3,y:-1e3}),[Y,$]=r.useState(!1),W=r.useCallback(t=>{if(l&&c.current){const u=c.current.getBoundingClientRect(),Q=t.clientX-u.left,ee=t.clientY-u.top;_({x:Q,y:ee})}h==null||h(t)},[l,h]),Z=r.useCallback(t=>{if(l&&($(!0),c.current)){const u=c.current.getBoundingClientRect();_({x:t.clientX-u.left,y:t.clientY-u.top})}p==null||p(t)},[l,p]),G=r.useCallback(t=>{$(!1),_({x:-1e3,y:-1e3}),B==null||B(t)},[B]),a=b.VARIANT_DEFAULTS[e]||b.VARIANT_DEFAULTS.primary,J=r.useMemo(()=>v&&n?{backgroundColor:`var(--bear-${e}-bg, ${n.bg})`,color:n.text||"#ffffff",borderColor:n.border,"--bear-ring-color":n.ring||n.bg,...x,...y}:{backgroundColor:`var(--bear-btn-${e}-bg, ${a.bg})`,color:e==="outline"||e==="ghost"?`var(--bear-btn-${e}-text, ${a.text||"inherit"})`:"white",borderColor:e==="outline"?`var(--bear-btn-${e}-border, ${a.border||a.bg})`:void 0,"--bear-ring-color":`var(--bear-btn-${e}-ring, ${a.ring})`,...x,...y},[e,a,x,y,v,n]),K=r.useCallback(t=>{c.current=t,typeof i=="function"?i(t):i&&(i.current=t)},[i]);return o.jsxs("button",{ref:K,disabled:X,style:J,className:k.cn("Bear-Button","bear-inline-flex bear-items-center bear-justify-center bear-font-medium bear-rounded-lg bear-transition-all bear-duration-200 bear-outline-none bear-relative bear-overflow-hidden",b.BUTTON_SIZE[C],q(e)?b.BUTTON_VARIANT[e]:"bear-btn-custom bear-text-white focus:bear-ring-2 focus:bear-ring-offset-2 disabled:bear-opacity-50 disabled:bear-cursor-not-allowed hover:bear-brightness-110 active:bear-brightness-95",w&&"bear-w-full",d&&"bear-cursor-wait",U),"data-testid":D,onMouseMove:W,onMouseEnter:Z,onMouseLeave:G,...H,children:[l&&o.jsx("span",{className:"Bear-Button__spotlight","aria-hidden":"true",style:{position:"absolute",pointerEvents:"none",left:0,top:0,width:g,height:g,borderRadius:"50%",background:`radial-gradient(circle at center, ${z} 0%, transparent 70%)`,opacity:Y?1:0,transform:`translate(${R.x-g/2}px, ${R.y-g/2}px)`,transition:"opacity 0.15s ease-out",zIndex:1,mixBlendMode:"overlay"}}),d&&o.jsx(te.Spinner,{size:C==="xs"?"xs":"sm",className:"Bear-Button__spinner bear-absolute"}),o.jsxs("span",{className:k.cn("Bear-Button__content bear-inline-flex bear-items-center bear-gap-inherit bear-relative bear-z-10",d&&"bear-invisible"),children:[S&&o.jsx("span",{className:"Bear-Button__icon Bear-Button__icon--left bear-inline-flex bear-shrink-0",children:S}),o.jsx(re.Typography,{variant:"inherit",className:"Bear-Button__text",children:O}),I&&o.jsx("span",{className:"Bear-Button__icon Bear-Button__icon--right bear-inline-flex bear-shrink-0",children:I})]})]})});V.displayName="Button";exports.Button=V;
@@ -1,57 +1,47 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={xs:"bear-px-2 bear-py-1 bear-text-xs bear-gap-1",sm:"bear-px-3 bear-py-1.5 bear-text-sm bear-gap-1.5",md:"bear-px-4 bear-py-2 bear-text-sm bear-gap-2",lg:"bear-px-5 bear-py-2.5 bear-text-base bear-gap-2",xl:"bear-px-6 bear-py-3 bear-text-lg bear-gap-2.5"},r={primary:`
2
- bear-bg-bear-500 bear-text-white
3
- hover:bear-bg-bear-600
4
- focus:bear-ring-2 focus:bear-ring-bear-500/50 focus:bear-ring-offset-2
5
- active:bear-bg-bear-700
6
- disabled:bear-bg-bear-300 disabled:bear-cursor-not-allowed
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r={xs:"bear-px-2 bear-py-1 bear-text-xs bear-gap-1",sm:"bear-px-3 bear-py-1.5 bear-text-sm bear-gap-1.5",md:"bear-px-4 bear-py-2 bear-text-sm bear-gap-2",lg:"bear-px-5 bear-py-2.5 bear-text-base bear-gap-2",xl:"bear-px-6 bear-py-3 bear-text-lg bear-gap-2.5"},e={primary:`
2
+ bear-btn-primary
3
+ bear-text-white bear-relative bear-overflow-hidden
4
+ focus:bear-ring-2 focus:bear-ring-offset-2
5
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
7
6
  `,secondary:`
8
- bear-bg-forge-500 bear-text-white
9
- hover:bear-bg-forge-600
10
- focus:bear-ring-2 focus:bear-ring-forge-500/50 focus:bear-ring-offset-2
11
- active:bear-bg-forge-700
12
- disabled:bear-bg-forge-300 disabled:bear-cursor-not-allowed
7
+ bear-btn-secondary
8
+ bear-text-white bear-relative bear-overflow-hidden
9
+ focus:bear-ring-2 focus:bear-ring-offset-2
10
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
13
11
  `,success:`
14
- bear-bg-green-500 bear-text-white
15
- hover:bear-bg-green-600
16
- focus:bear-ring-2 focus:bear-ring-green-500/50 focus:bear-ring-offset-2
17
- active:bear-bg-green-700
18
- disabled:bear-bg-green-300 disabled:bear-cursor-not-allowed
12
+ bear-btn-success
13
+ bear-text-white bear-relative bear-overflow-hidden
14
+ focus:bear-ring-2 focus:bear-ring-offset-2
15
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
19
16
  `,warning:`
20
- bear-bg-yellow-500 bear-text-white
21
- hover:bear-bg-yellow-600
22
- focus:bear-ring-2 focus:bear-ring-yellow-500/50 focus:bear-ring-offset-2
23
- active:bear-bg-yellow-700
24
- disabled:bear-bg-yellow-300 disabled:bear-cursor-not-allowed
17
+ bear-btn-warning
18
+ bear-text-white bear-relative bear-overflow-hidden
19
+ focus:bear-ring-2 focus:bear-ring-offset-2
20
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
25
21
  `,danger:`
26
- bear-bg-red-500 bear-text-white
27
- hover:bear-bg-red-600
28
- focus:bear-ring-2 focus:bear-ring-red-500/50 focus:bear-ring-offset-2
29
- active:bear-bg-red-700
30
- disabled:bear-bg-red-300 disabled:bear-cursor-not-allowed
22
+ bear-btn-danger
23
+ bear-text-white bear-relative bear-overflow-hidden
24
+ focus:bear-ring-2 focus:bear-ring-offset-2
25
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
31
26
  `,info:`
32
- bear-bg-blue-500 bear-text-white
33
- hover:bear-bg-blue-600
34
- focus:bear-ring-2 focus:bear-ring-blue-500/50 focus:bear-ring-offset-2
35
- active:bear-bg-blue-700
36
- disabled:bear-bg-blue-300 disabled:bear-cursor-not-allowed
27
+ bear-btn-info
28
+ bear-text-white bear-relative bear-overflow-hidden
29
+ focus:bear-ring-2 focus:bear-ring-offset-2
30
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
37
31
  `,ghost:`
38
- bear-bg-transparent bear-text-gray-700
39
- hover:bear-bg-gray-100
40
- focus:bear-ring-2 focus:bear-ring-gray-500/50
41
- active:bear-bg-gray-200
42
- disabled:bear-text-gray-400 disabled:bear-cursor-not-allowed
32
+ bear-btn-ghost
33
+ bear-bg-transparent bear-relative bear-overflow-hidden
34
+ focus:bear-ring-2
35
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
43
36
  dark:bear-text-gray-300 dark:hover:bear-bg-gray-800 dark:active:bear-bg-gray-700
44
37
  `,outline:`
45
- bear-bg-transparent bear-text-bear-500 bear-border bear-border-bear-500
46
- hover:bear-bg-bear-50
47
- focus:bear-ring-2 focus:bear-ring-bear-500/50
48
- active:bear-bg-bear-100
49
- disabled:bear-text-bear-300 disabled:bear-border-bear-300 disabled:bear-cursor-not-allowed
50
- dark:bear-text-bear-400 dark:bear-border-bear-400 dark:hover:bear-bg-bear-950 dark:active:bear-bg-bear-900 dark:disabled:bear-border-bear-700 dark:disabled:bear-text-bear-700
38
+ bear-btn-outline
39
+ bear-bg-transparent bear-border bear-relative bear-overflow-hidden
40
+ focus:bear-ring-2
41
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
51
42
  `,error:`
52
- bear-bg-red-500 bear-text-white
53
- hover:bear-bg-red-600
54
- focus:bear-ring-2 focus:bear-ring-red-500/50 focus:bear-ring-offset-2
55
- active:bear-bg-red-700
56
- disabled:bear-bg-red-300 disabled:bear-cursor-not-allowed
57
- `};exports.BUTTON_SIZE=e;exports.BUTTON_VARIANT=r;
43
+ bear-btn-error
44
+ bear-text-white bear-relative bear-overflow-hidden
45
+ focus:bear-ring-2 focus:bear-ring-offset-2
46
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
47
+ `},a={primary:{bg:"var(--bear-primary-500)",hover:"var(--bear-primary-600)",active:"var(--bear-primary-700)",ring:"var(--bear-primary-500)"},secondary:{bg:"var(--bear-secondary-500)",hover:"var(--bear-secondary-600)",active:"var(--bear-secondary-700)",ring:"var(--bear-secondary-500)"},success:{bg:"var(--bear-success-500)",hover:"var(--bear-success-600)",active:"var(--bear-success-700)",ring:"var(--bear-success-500)"},warning:{bg:"var(--bear-warning-500)",hover:"var(--bear-warning-600)",active:"var(--bear-warning-700)",ring:"var(--bear-warning-500)"},danger:{bg:"var(--bear-danger-500)",hover:"var(--bear-danger-600)",active:"var(--bear-danger-700)",ring:"var(--bear-danger-500)"},info:{bg:"var(--bear-info-500)",hover:"var(--bear-info-600)",active:"var(--bear-info-700)",ring:"var(--bear-info-500)"},error:{bg:"var(--bear-danger-500)",hover:"var(--bear-danger-600)",active:"var(--bear-danger-700)",ring:"var(--bear-danger-500)"},ghost:{bg:"transparent",hover:"var(--bear-neutral-100)",active:"var(--bear-neutral-200)",text:"var(--bear-text-primary)",ring:"var(--bear-neutral-500)"},outline:{bg:"transparent",hover:"var(--bear-primary-50)",active:"var(--bear-primary-100)",border:"var(--bear-primary-500)",text:"var(--bear-primary-500)",ring:"var(--bear-primary-500)"}};exports.BUTTON_SIZE=r;exports.BUTTON_VARIANT=e;exports.VARIANT_DEFAULTS=a;
@@ -1,3 +1,22 @@
1
- import { EmberSize, EmberVariant } from '../../types';
2
- export declare const BUTTON_SIZE: Record<EmberSize, string>;
3
- export declare const BUTTON_VARIANT: Record<EmberVariant, string>;
1
+ import { BearSize, BearVariant } from '../../types';
2
+ export declare const BUTTON_SIZE: Record<BearSize, string>;
3
+ /**
4
+ * Button variants using CSS variables for full customization
5
+ * Colors can be overridden via:
6
+ * 1. BearProvider theme prop: theme={{ colors: { primary: { 500: '#...' } } }}
7
+ * 2. BearProvider variants prop: variants={{ Button: { primary: { bg: '#...' } } }}
8
+ * 3. CSS variables: --bear-btn-primary-bg, --bear-primary-500, etc.
9
+ */
10
+ export declare const BUTTON_VARIANT: Record<BearVariant, string>;
11
+ /**
12
+ * Default variant colors (used when CSS variables are not set)
13
+ */
14
+ export interface VariantDefault {
15
+ bg: string;
16
+ hover: string;
17
+ active: string;
18
+ ring: string;
19
+ text?: string;
20
+ border?: string;
21
+ }
22
+ export declare const VARIANT_DEFAULTS: Record<string, VariantDefault>;
@@ -1,77 +1,78 @@
1
- const e = {
1
+ const r = {
2
2
  xs: "bear-px-2 bear-py-1 bear-text-xs bear-gap-1",
3
3
  sm: "bear-px-3 bear-py-1.5 bear-text-sm bear-gap-1.5",
4
4
  md: "bear-px-4 bear-py-2 bear-text-sm bear-gap-2",
5
5
  lg: "bear-px-5 bear-py-2.5 bear-text-base bear-gap-2",
6
6
  xl: "bear-px-6 bear-py-3 bear-text-lg bear-gap-2.5"
7
- }, r = {
7
+ }, e = {
8
8
  primary: `
9
- bear-bg-bear-500 bear-text-white
10
- hover:bear-bg-bear-600
11
- focus:bear-ring-2 focus:bear-ring-bear-500/50 focus:bear-ring-offset-2
12
- active:bear-bg-bear-700
13
- disabled:bear-bg-bear-300 disabled:bear-cursor-not-allowed
9
+ bear-btn-primary
10
+ bear-text-white bear-relative bear-overflow-hidden
11
+ focus:bear-ring-2 focus:bear-ring-offset-2
12
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
14
13
  `,
15
14
  secondary: `
16
- bear-bg-forge-500 bear-text-white
17
- hover:bear-bg-forge-600
18
- focus:bear-ring-2 focus:bear-ring-forge-500/50 focus:bear-ring-offset-2
19
- active:bear-bg-forge-700
20
- disabled:bear-bg-forge-300 disabled:bear-cursor-not-allowed
15
+ bear-btn-secondary
16
+ bear-text-white bear-relative bear-overflow-hidden
17
+ focus:bear-ring-2 focus:bear-ring-offset-2
18
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
21
19
  `,
22
20
  success: `
23
- bear-bg-green-500 bear-text-white
24
- hover:bear-bg-green-600
25
- focus:bear-ring-2 focus:bear-ring-green-500/50 focus:bear-ring-offset-2
26
- active:bear-bg-green-700
27
- disabled:bear-bg-green-300 disabled:bear-cursor-not-allowed
21
+ bear-btn-success
22
+ bear-text-white bear-relative bear-overflow-hidden
23
+ focus:bear-ring-2 focus:bear-ring-offset-2
24
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
28
25
  `,
29
26
  warning: `
30
- bear-bg-yellow-500 bear-text-white
31
- hover:bear-bg-yellow-600
32
- focus:bear-ring-2 focus:bear-ring-yellow-500/50 focus:bear-ring-offset-2
33
- active:bear-bg-yellow-700
34
- disabled:bear-bg-yellow-300 disabled:bear-cursor-not-allowed
27
+ bear-btn-warning
28
+ bear-text-white bear-relative bear-overflow-hidden
29
+ focus:bear-ring-2 focus:bear-ring-offset-2
30
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
35
31
  `,
36
32
  danger: `
37
- bear-bg-red-500 bear-text-white
38
- hover:bear-bg-red-600
39
- focus:bear-ring-2 focus:bear-ring-red-500/50 focus:bear-ring-offset-2
40
- active:bear-bg-red-700
41
- disabled:bear-bg-red-300 disabled:bear-cursor-not-allowed
33
+ bear-btn-danger
34
+ bear-text-white bear-relative bear-overflow-hidden
35
+ focus:bear-ring-2 focus:bear-ring-offset-2
36
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
42
37
  `,
43
38
  info: `
44
- bear-bg-blue-500 bear-text-white
45
- hover:bear-bg-blue-600
46
- focus:bear-ring-2 focus:bear-ring-blue-500/50 focus:bear-ring-offset-2
47
- active:bear-bg-blue-700
48
- disabled:bear-bg-blue-300 disabled:bear-cursor-not-allowed
39
+ bear-btn-info
40
+ bear-text-white bear-relative bear-overflow-hidden
41
+ focus:bear-ring-2 focus:bear-ring-offset-2
42
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
49
43
  `,
50
44
  ghost: `
51
- bear-bg-transparent bear-text-gray-700
52
- hover:bear-bg-gray-100
53
- focus:bear-ring-2 focus:bear-ring-gray-500/50
54
- active:bear-bg-gray-200
55
- disabled:bear-text-gray-400 disabled:bear-cursor-not-allowed
45
+ bear-btn-ghost
46
+ bear-bg-transparent bear-relative bear-overflow-hidden
47
+ focus:bear-ring-2
48
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
56
49
  dark:bear-text-gray-300 dark:hover:bear-bg-gray-800 dark:active:bear-bg-gray-700
57
50
  `,
58
51
  outline: `
59
- bear-bg-transparent bear-text-bear-500 bear-border bear-border-bear-500
60
- hover:bear-bg-bear-50
61
- focus:bear-ring-2 focus:bear-ring-bear-500/50
62
- active:bear-bg-bear-100
63
- disabled:bear-text-bear-300 disabled:bear-border-bear-300 disabled:bear-cursor-not-allowed
64
- dark:bear-text-bear-400 dark:bear-border-bear-400 dark:hover:bear-bg-bear-950 dark:active:bear-bg-bear-900 dark:disabled:bear-border-bear-700 dark:disabled:bear-text-bear-700
52
+ bear-btn-outline
53
+ bear-bg-transparent bear-border bear-relative bear-overflow-hidden
54
+ focus:bear-ring-2
55
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
65
56
  `,
66
57
  error: `
67
- bear-bg-red-500 bear-text-white
68
- hover:bear-bg-red-600
69
- focus:bear-ring-2 focus:bear-ring-red-500/50 focus:bear-ring-offset-2
70
- active:bear-bg-red-700
71
- disabled:bear-bg-red-300 disabled:bear-cursor-not-allowed
58
+ bear-btn-error
59
+ bear-text-white bear-relative bear-overflow-hidden
60
+ focus:bear-ring-2 focus:bear-ring-offset-2
61
+ disabled:bear-opacity-50 disabled:bear-cursor-not-allowed
72
62
  `
63
+ }, a = {
64
+ primary: { bg: "var(--bear-primary-500)", hover: "var(--bear-primary-600)", active: "var(--bear-primary-700)", ring: "var(--bear-primary-500)" },
65
+ secondary: { bg: "var(--bear-secondary-500)", hover: "var(--bear-secondary-600)", active: "var(--bear-secondary-700)", ring: "var(--bear-secondary-500)" },
66
+ success: { bg: "var(--bear-success-500)", hover: "var(--bear-success-600)", active: "var(--bear-success-700)", ring: "var(--bear-success-500)" },
67
+ warning: { bg: "var(--bear-warning-500)", hover: "var(--bear-warning-600)", active: "var(--bear-warning-700)", ring: "var(--bear-warning-500)" },
68
+ danger: { bg: "var(--bear-danger-500)", hover: "var(--bear-danger-600)", active: "var(--bear-danger-700)", ring: "var(--bear-danger-500)" },
69
+ info: { bg: "var(--bear-info-500)", hover: "var(--bear-info-600)", active: "var(--bear-info-700)", ring: "var(--bear-info-500)" },
70
+ error: { bg: "var(--bear-danger-500)", hover: "var(--bear-danger-600)", active: "var(--bear-danger-700)", ring: "var(--bear-danger-500)" },
71
+ ghost: { bg: "transparent", hover: "var(--bear-neutral-100)", active: "var(--bear-neutral-200)", text: "var(--bear-text-primary)", ring: "var(--bear-neutral-500)" },
72
+ outline: { bg: "transparent", hover: "var(--bear-primary-50)", active: "var(--bear-primary-100)", border: "var(--bear-primary-500)", text: "var(--bear-primary-500)", ring: "var(--bear-primary-500)" }
73
73
  };
74
74
  export {
75
- e as BUTTON_SIZE,
76
- r as BUTTON_VARIANT
75
+ r as BUTTON_SIZE,
76
+ e as BUTTON_VARIANT,
77
+ a as VARIANT_DEFAULTS
77
78
  };
@@ -1,21 +1,28 @@
1
1
  import { ButtonProps } from './Button.types';
2
2
  /**
3
- * Button component with multiple variants, sizes, and states.
4
- * Light and dark mode supported; outline variant has theme-aware borders.
5
- * Override borders from outside via className (e.g. className="border-2 border-blue-500 dark:border-blue-400").
3
+ * Button component with multiple variants, sizes, states, and effects.
4
+ *
5
+ * Features:
6
+ * - Fully themeable via BearProvider
7
+ * - Mouse-follow spotlight hover effect
8
+ * - CSS variable-based colors for easy customization
9
+ * - Component overrides via useBearComponent
6
10
  *
7
11
  * @example
8
12
  * ```tsx
13
+ * // Basic usage
9
14
  * <Button variant="primary" size="md">
10
15
  * Click me
11
16
  * </Button>
12
17
  *
13
- * <Button variant="outline" loading>
14
- * Loading...
18
+ * // With spotlight hover effect
19
+ * <Button variant="primary" spotlight>
20
+ * Hover me
15
21
  * </Button>
16
22
  *
17
- * <Button variant="outline" className="border-2 border-pink-500">
18
- * Custom border
23
+ * // With icons
24
+ * <Button variant="outline" leftIcon={<Icon />}>
25
+ * With Icon
19
26
  * </Button>
20
27
  * ```
21
28
  */
@@ -1,58 +1,136 @@
1
- import { jsxs as l, jsx as r } from "react/jsx-runtime";
2
- import { forwardRef as v } from "react";
3
- import { cn as c } from "../../utils/cn.js";
4
- import { Spinner as T } from "../Spinner/Spinner.js";
5
- import { useBearStyles as j } from "../../hooks/useBearStyles.js";
6
- import { BUTTON_VARIANT as S, BUTTON_SIZE as k } from "./Button.constants.js";
7
- const w = v(
8
- (m, b) => {
1
+ import { jsxs as V, jsx as c } from "react/jsx-runtime";
2
+ import { forwardRef as ne, useContext as oe, useRef as ae, useState as k, useCallback as g, useMemo as ie } from "react";
3
+ import { cn as M } from "../../utils/cn.js";
4
+ import { Spinner as se } from "../Spinner/Spinner.js";
5
+ import { Typography as le } from "../Typography/Typography.js";
6
+ import { useBearStyles as ce } from "../../hooks/useBearStyles.js";
7
+ import "../../hooks/useBearComponent/useBearComponent.js";
8
+ import { BearContext as be } from "../../context/BearProvider.js";
9
+ import { VARIANT_DEFAULTS as z, BUTTON_VARIANT as P, BUTTON_SIZE as ue } from "./Button.constants.js";
10
+ const A = (h) => h in P, de = ne(
11
+ (h, a) => {
12
+ var w, T;
9
13
  const {
10
- variant: d = "primary",
11
- size: n = "md",
12
- loading: e = !1,
13
- fullWidth: f = !1,
14
- icon: t,
15
- iconPosition: a = "left",
16
- leftIcon: u,
17
- rightIcon: B,
18
- disabled: p,
19
- className: _,
20
- children: h,
21
- testId: N,
22
- bis: g,
23
- style: x,
24
- ...I
25
- } = m, y = p || e, i = j(g, x), o = u ?? (t && a === "left" ? t : void 0), s = B ?? (t && a === "right" ? t : void 0);
26
- return /* @__PURE__ */ l(
14
+ variant: e = "primary",
15
+ size: _ = "md",
16
+ loading: b = !1,
17
+ fullWidth: E = !1,
18
+ icon: u,
19
+ iconPosition: C = "left",
20
+ leftIcon: j,
21
+ rightIcon: U,
22
+ spotlight: i = !1,
23
+ spotlightColor: D = "rgba(255, 255, 255, 0.35)",
24
+ spotlightSize: d = 150,
25
+ disabled: H,
26
+ className: L,
27
+ children: O,
28
+ testId: X,
29
+ bis: Y,
30
+ style: F,
31
+ onMouseMove: f,
32
+ onMouseEnter: m,
33
+ onMouseLeave: p,
34
+ ...W
35
+ } = h, Z = H || b, B = ce(Y, F), I = j ?? (u && C === "left" ? u : void 0), N = U ?? (u && C === "right" ? u : void 0), n = oe(be), y = ((T = (w = n == null ? void 0 : n.components) == null ? void 0 : w.Button) == null ? void 0 : T.root) || {}, $ = (n == null ? void 0 : n.customVariants) || {}, v = !A(e) && e in $, r = v ? $[e] : null, s = ae(null), [S, x] = k({ x: -1e3, y: -1e3 }), [q, R] = k(!1), G = g((t) => {
36
+ if (i && s.current) {
37
+ const l = s.current.getBoundingClientRect(), te = t.clientX - l.left, re = t.clientY - l.top;
38
+ x({ x: te, y: re });
39
+ }
40
+ f == null || f(t);
41
+ }, [i, f]), J = g((t) => {
42
+ if (i && (R(!0), s.current)) {
43
+ const l = s.current.getBoundingClientRect();
44
+ x({
45
+ x: t.clientX - l.left,
46
+ y: t.clientY - l.top
47
+ });
48
+ }
49
+ m == null || m(t);
50
+ }, [i, m]), K = g((t) => {
51
+ R(!1), x({ x: -1e3, y: -1e3 }), p == null || p(t);
52
+ }, [p]), o = z[e] || z.primary, Q = ie(() => v && r ? {
53
+ backgroundColor: `var(--bear-${e}-bg, ${r.bg})`,
54
+ color: r.text || "#ffffff",
55
+ borderColor: r.border,
56
+ "--bear-ring-color": r.ring || r.bg,
57
+ ...y,
58
+ ...B
59
+ } : {
60
+ backgroundColor: `var(--bear-btn-${e}-bg, ${o.bg})`,
61
+ color: e === "outline" || e === "ghost" ? `var(--bear-btn-${e}-text, ${o.text || "inherit"})` : "white",
62
+ borderColor: e === "outline" ? `var(--bear-btn-${e}-border, ${o.border || o.bg})` : void 0,
63
+ "--bear-ring-color": `var(--bear-btn-${e}-ring, ${o.ring})`,
64
+ ...y,
65
+ ...B
66
+ }, [e, o, y, B, v, r]), ee = g((t) => {
67
+ s.current = t, typeof a == "function" ? a(t) : a && (a.current = t);
68
+ }, [a]);
69
+ return /* @__PURE__ */ V(
27
70
  "button",
28
71
  {
29
- ref: b,
30
- disabled: y,
31
- style: Object.keys(i).length ? i : void 0,
32
- className: c(
72
+ ref: ee,
73
+ disabled: Z,
74
+ style: Q,
75
+ className: M(
33
76
  "Bear-Button",
34
- "bear-inline-flex bear-items-center bear-justify-center bear-font-medium bear-rounded-lg bear-transition-all bear-duration-200 bear-outline-none",
35
- k[n],
36
- S[d],
37
- f && "bear-w-full",
38
- e && "bear-cursor-wait",
39
- _
77
+ "bear-inline-flex bear-items-center bear-justify-center bear-font-medium bear-rounded-lg bear-transition-all bear-duration-200 bear-outline-none bear-relative bear-overflow-hidden",
78
+ ue[_],
79
+ // Use built-in variant classes or custom variant base classes
80
+ A(e) ? P[e] : "bear-btn-custom bear-text-white focus:bear-ring-2 focus:bear-ring-offset-2 disabled:bear-opacity-50 disabled:bear-cursor-not-allowed hover:bear-brightness-110 active:bear-brightness-95",
81
+ E && "bear-w-full",
82
+ b && "bear-cursor-wait",
83
+ L
40
84
  ),
41
- "data-testid": N,
42
- ...I,
85
+ "data-testid": X,
86
+ onMouseMove: G,
87
+ onMouseEnter: J,
88
+ onMouseLeave: K,
89
+ ...W,
43
90
  children: [
44
- e && /* @__PURE__ */ r(T, { size: n === "xs" ? "xs" : "sm", className: "Bear-Button__spinner bear-absolute" }),
45
- /* @__PURE__ */ l("span", { className: c("Bear-Button__content bear-inline-flex bear-items-center bear-gap-inherit", e && "bear-invisible"), children: [
46
- o && /* @__PURE__ */ r("span", { className: "Bear-Button__icon Bear-Button__icon--left bear-inline-flex bear-shrink-0", children: o }),
47
- /* @__PURE__ */ r("span", { className: "Bear-Button__text", children: h }),
48
- s && /* @__PURE__ */ r("span", { className: "Bear-Button__icon Bear-Button__icon--right bear-inline-flex bear-shrink-0", children: s })
49
- ] })
91
+ i && /* @__PURE__ */ c(
92
+ "span",
93
+ {
94
+ className: "Bear-Button__spotlight",
95
+ "aria-hidden": "true",
96
+ style: {
97
+ position: "absolute",
98
+ pointerEvents: "none",
99
+ left: 0,
100
+ top: 0,
101
+ width: d,
102
+ height: d,
103
+ borderRadius: "50%",
104
+ background: `radial-gradient(circle at center, ${D} 0%, transparent 70%)`,
105
+ opacity: q ? 1 : 0,
106
+ transform: `translate(${S.x - d / 2}px, ${S.y - d / 2}px)`,
107
+ transition: "opacity 0.15s ease-out",
108
+ zIndex: 1,
109
+ mixBlendMode: "overlay"
110
+ }
111
+ }
112
+ ),
113
+ b && /* @__PURE__ */ c(se, { size: _ === "xs" ? "xs" : "sm", className: "Bear-Button__spinner bear-absolute" }),
114
+ /* @__PURE__ */ V(
115
+ "span",
116
+ {
117
+ className: M(
118
+ "Bear-Button__content bear-inline-flex bear-items-center bear-gap-inherit bear-relative bear-z-10",
119
+ b && "bear-invisible"
120
+ ),
121
+ children: [
122
+ I && /* @__PURE__ */ c("span", { className: "Bear-Button__icon Bear-Button__icon--left bear-inline-flex bear-shrink-0", children: I }),
123
+ /* @__PURE__ */ c(le, { variant: "inherit", className: "Bear-Button__text", children: O }),
124
+ N && /* @__PURE__ */ c("span", { className: "Bear-Button__icon Bear-Button__icon--right bear-inline-flex bear-shrink-0", children: N })
125
+ ]
126
+ }
127
+ )
50
128
  ]
51
129
  }
52
130
  );
53
131
  }
54
132
  );
55
- w.displayName = "Button";
133
+ de.displayName = "Button";
56
134
  export {
57
- w as Button
135
+ de as Button
58
136
  };