@forgedevstack/bear 1.0.6 → 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.
- package/dist/components/Alert/Alert.cjs +1 -1
- package/dist/components/Alert/Alert.const.cjs +1 -1
- package/dist/components/Alert/Alert.const.d.ts +4 -0
- package/dist/components/Alert/Alert.const.js +9 -15
- package/dist/components/Alert/Alert.js +43 -38
- package/dist/components/AppBar/AppBar.cjs +1 -1
- package/dist/components/AppBar/AppBar.js +20 -16
- package/dist/components/BackTop/BackTop.cjs +1 -0
- package/dist/components/BackTop/BackTop.const.cjs +1 -0
- package/dist/components/BackTop/BackTop.const.d.ts +34 -0
- package/dist/components/BackTop/BackTop.const.js +29 -0
- package/dist/components/BackTop/BackTop.d.ts +21 -0
- package/dist/components/BackTop/BackTop.js +87 -0
- package/dist/components/BackTop/BackTop.types.d.ts +28 -0
- package/dist/components/BackTop/index.d.ts +3 -0
- package/dist/components/Badge/Badge.constants.d.ts +4 -4
- package/dist/components/Badge/Badge.types.d.ts +3 -3
- package/dist/components/BottomSheet/BottomSheet.cjs +1 -0
- package/dist/components/BottomSheet/BottomSheet.d.ts +3 -0
- package/dist/components/BottomSheet/BottomSheet.js +103 -0
- package/dist/components/BottomSheet/BottomSheet.types.d.ts +13 -0
- package/dist/components/BottomSheet/index.d.ts +2 -0
- package/dist/components/Button/Button.cjs +1 -1
- package/dist/components/Button/Button.constants.cjs +38 -48
- package/dist/components/Button/Button.constants.d.ts +22 -3
- package/dist/components/Button/Button.constants.js +51 -50
- package/dist/components/Button/Button.d.ts +14 -7
- package/dist/components/Button/Button.js +123 -43
- package/dist/components/Button/Button.types.d.ts +26 -4
- package/dist/components/Calendar/Calendar.cjs +1 -1
- package/dist/components/Calendar/Calendar.js +3 -2
- package/dist/components/Card/Card.const.d.ts +2 -2
- package/dist/components/Card/Card.types.d.ts +2 -2
- package/dist/components/Chat/Chat.cjs +1 -0
- package/dist/components/Chat/Chat.const.cjs +1 -0
- package/dist/components/Chat/Chat.const.d.ts +26 -0
- package/dist/components/Chat/Chat.const.js +29 -0
- package/dist/components/Chat/Chat.d.ts +21 -0
- package/dist/components/Chat/Chat.js +179 -0
- package/dist/components/Chat/Chat.types.d.ts +55 -0
- package/dist/components/Chat/index.d.ts +2 -0
- package/dist/components/Confetti/Confetti.cjs +1 -0
- package/dist/components/Confetti/Confetti.const.cjs +1 -0
- package/dist/components/Confetti/Confetti.const.d.ts +16 -0
- package/dist/components/Confetti/Confetti.const.js +36 -0
- package/dist/components/Confetti/Confetti.d.ts +23 -0
- package/dist/components/Confetti/Confetti.js +94 -0
- package/dist/components/Confetti/Confetti.types.d.ts +50 -0
- package/dist/components/Confetti/index.d.ts +4 -0
- package/dist/components/Confetti/useConfetti.cjs +1 -0
- package/dist/components/Confetti/useConfetti.d.ts +13 -0
- package/dist/components/Confetti/useConfetti.js +12 -0
- package/dist/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.js +3 -2
- package/dist/components/DiffViewer/DiffViewer.cjs +1 -0
- package/dist/components/DiffViewer/DiffViewer.const.cjs +1 -0
- package/dist/components/DiffViewer/DiffViewer.const.d.ts +18 -0
- package/dist/components/DiffViewer/DiffViewer.const.js +21 -0
- package/dist/components/DiffViewer/DiffViewer.d.ts +18 -0
- package/dist/components/DiffViewer/DiffViewer.js +127 -0
- package/dist/components/DiffViewer/DiffViewer.types.d.ts +40 -0
- package/dist/components/DiffViewer/DiffViewer.utils.cjs +3 -0
- package/dist/components/DiffViewer/DiffViewer.utils.d.ts +9 -0
- package/dist/components/DiffViewer/DiffViewer.utils.js +39 -0
- package/dist/components/DiffViewer/index.d.ts +2 -0
- package/dist/components/Drawer/Drawer.cjs +1 -1
- package/dist/components/Drawer/Drawer.js +35 -35
- package/dist/components/EmojiPicker/EmojiPicker.cjs +1 -0
- package/dist/components/EmojiPicker/EmojiPicker.const.cjs +1 -0
- package/dist/components/EmojiPicker/EmojiPicker.const.d.ts +5 -0
- package/dist/components/EmojiPicker/EmojiPicker.const.js +10 -0
- package/dist/components/EmojiPicker/EmojiPicker.d.ts +3 -0
- package/dist/components/EmojiPicker/EmojiPicker.js +63 -0
- package/dist/components/EmojiPicker/EmojiPicker.types.d.ts +6 -0
- package/dist/components/EmojiPicker/index.d.ts +3 -0
- package/dist/components/FloatingChat/FloatingChat.cjs +1 -0
- package/dist/components/FloatingChat/FloatingChat.const.cjs +1 -0
- package/dist/components/FloatingChat/FloatingChat.const.d.ts +12 -0
- package/dist/components/FloatingChat/FloatingChat.const.js +15 -0
- package/dist/components/FloatingChat/FloatingChat.d.ts +19 -0
- package/dist/components/FloatingChat/FloatingChat.js +144 -0
- package/dist/components/FloatingChat/FloatingChat.types.d.ts +44 -0
- package/dist/components/FloatingChat/index.d.ts +2 -0
- package/dist/components/JsonViewer/JsonViewer.cjs +1 -0
- package/dist/components/JsonViewer/JsonViewer.const.cjs +1 -0
- package/dist/components/JsonViewer/JsonViewer.const.d.ts +4 -0
- package/dist/components/JsonViewer/JsonViewer.const.js +24 -0
- package/dist/components/JsonViewer/JsonViewer.d.ts +17 -0
- package/dist/components/JsonViewer/JsonViewer.js +195 -0
- package/dist/components/JsonViewer/JsonViewer.types.d.ts +54 -0
- package/dist/components/JsonViewer/index.d.ts +2 -0
- package/dist/components/Kanban/Kanban.cjs +1 -0
- package/dist/components/Kanban/Kanban.d.ts +3 -0
- package/dist/components/Kanban/Kanban.js +91 -0
- package/dist/components/Kanban/Kanban.types.d.ts +21 -0
- package/dist/components/Kanban/index.d.ts +2 -0
- package/dist/components/MentionsInput/MentionsInput.cjs +1 -0
- package/dist/components/MentionsInput/MentionsInput.d.ts +3 -0
- package/dist/components/MentionsInput/MentionsInput.js +140 -0
- package/dist/components/MentionsInput/MentionsInput.types.d.ts +21 -0
- package/dist/components/MentionsInput/index.d.ts +2 -0
- package/dist/components/QRCode/QRCode.cjs +1 -0
- package/dist/components/QRCode/QRCode.const.cjs +1 -0
- package/dist/components/QRCode/QRCode.const.d.ts +21 -0
- package/dist/components/QRCode/QRCode.const.js +11 -0
- package/dist/components/QRCode/QRCode.d.ts +29 -0
- package/dist/components/QRCode/QRCode.js +68 -0
- package/dist/components/QRCode/QRCode.types.d.ts +32 -0
- package/dist/components/QRCode/QRCode.utils.cjs +1 -0
- package/dist/components/QRCode/QRCode.utils.d.ts +12 -0
- package/dist/components/QRCode/QRCode.utils.js +74 -0
- package/dist/components/QRCode/index.d.ts +3 -0
- package/dist/components/RichEditor/RichEditor.cjs +1 -1
- package/dist/components/RichEditor/RichEditor.const.cjs +2 -2
- package/dist/components/RichEditor/RichEditor.const.d.ts +4 -1
- package/dist/components/RichEditor/RichEditor.const.js +51 -18
- package/dist/components/RichEditor/RichEditor.js +106 -105
- package/dist/components/RichEditor/components/ToolbarColorPicker/ToolbarColorPicker.cjs +1 -1
- package/dist/components/RichEditor/components/ToolbarColorPicker/ToolbarColorPicker.js +105 -95
- package/dist/components/RichEditor/components/ToolbarMore/ToolbarMore.cjs +1 -1
- package/dist/components/RichEditor/components/ToolbarMore/ToolbarMore.d.ts +2 -0
- package/dist/components/RichEditor/components/ToolbarMore/ToolbarMore.js +47 -29
- package/dist/components/SegmentedControl/SegmentedControl.cjs +1 -0
- package/dist/components/SegmentedControl/SegmentedControl.d.ts +3 -0
- package/dist/components/SegmentedControl/SegmentedControl.js +58 -0
- package/dist/components/SegmentedControl/SegmentedControl.types.d.ts +16 -0
- package/dist/components/SegmentedControl/index.d.ts +2 -0
- package/dist/components/SignPad/SignPad.cjs +1 -1
- package/dist/components/SignPad/SignPad.js +98 -90
- package/dist/components/SliderRange/SliderRange.cjs +1 -0
- package/dist/components/SliderRange/SliderRange.d.ts +3 -0
- package/dist/components/SliderRange/SliderRange.js +142 -0
- package/dist/components/SliderRange/SliderRange.types.d.ts +17 -0
- package/dist/components/SliderRange/index.d.ts +2 -0
- package/dist/components/Spinner/Spinner.types.d.ts +2 -2
- package/dist/components/TagsInput/TagsInput.cjs +1 -0
- package/dist/components/TagsInput/TagsInput.d.ts +3 -0
- package/dist/components/TagsInput/TagsInput.js +100 -0
- package/dist/components/TagsInput/TagsInput.types.d.ts +16 -0
- package/dist/components/TagsInput/index.d.ts +2 -0
- package/dist/components/Terminal/Terminal.cjs +1 -0
- package/dist/components/Terminal/Terminal.const.cjs +1 -0
- package/dist/components/Terminal/Terminal.const.d.ts +32 -0
- package/dist/components/Terminal/Terminal.const.js +42 -0
- package/dist/components/Terminal/Terminal.d.ts +27 -0
- package/dist/components/Terminal/Terminal.js +155 -0
- package/dist/components/Terminal/Terminal.types.d.ts +49 -0
- package/dist/components/Terminal/index.d.ts +2 -0
- package/dist/components/Tour/Tour.cjs +1 -0
- package/dist/components/Tour/Tour.const.cjs +1 -0
- package/dist/components/Tour/Tour.const.d.ts +25 -0
- package/dist/components/Tour/Tour.const.js +38 -0
- package/dist/components/Tour/Tour.d.ts +17 -0
- package/dist/components/Tour/Tour.js +179 -0
- package/dist/components/Tour/Tour.types.d.ts +80 -0
- package/dist/components/Tour/index.d.ts +4 -0
- package/dist/components/Tour/useTour.cjs +1 -0
- package/dist/components/Tour/useTour.d.ts +14 -0
- package/dist/components/Tour/useTour.js +27 -0
- package/dist/components/Typography/Typography.cjs +1 -1
- package/dist/components/Typography/Typography.d.ts +5 -1
- package/dist/components/Typography/Typography.js +93 -57
- package/dist/components/Typography/Typography.types.d.ts +29 -2
- package/dist/components/VirtualList/VirtualList.cjs +1 -0
- package/dist/components/VirtualList/VirtualList.d.ts +3 -0
- package/dist/components/VirtualList/VirtualList.js +68 -0
- package/dist/components/VirtualList/VirtualList.types.d.ts +10 -0
- package/dist/components/VirtualList/index.d.ts +2 -0
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.d.ts +35 -1
- package/dist/components/index.js +240 -198
- package/dist/context/BearProvider.cjs +1 -1
- package/dist/context/BearProvider.d.ts +110 -5
- package/dist/context/BearProvider.js +198 -53
- package/dist/context/defaultTheme.cjs +1 -1
- package/dist/context/defaultTheme.js +11 -11
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.d.ts +18 -0
- package/dist/hooks/index.js +56 -35
- package/dist/hooks/useBearComponent/index.d.ts +2 -0
- package/dist/hooks/useBearComponent/useBearComponent.cjs +1 -0
- package/dist/hooks/useBearComponent/useBearComponent.d.ts +71 -0
- package/dist/hooks/useBearComponent/useBearComponent.js +54 -0
- package/dist/hooks/useBearComponent/useBearComponent.types.d.ts +40 -0
- package/dist/hooks/useDragDrop/index.d.ts +2 -0
- package/dist/hooks/useDragDrop/useDragDrop.cjs +1 -0
- package/dist/hooks/useDragDrop/useDragDrop.d.ts +22 -0
- package/dist/hooks/useDragDrop/useDragDrop.js +56 -0
- package/dist/hooks/useDragDrop/useDragDrop.types.d.ts +55 -0
- package/dist/hooks/useIdle/index.d.ts +2 -0
- package/dist/hooks/useIdle/useIdle.cjs +1 -0
- package/dist/hooks/useIdle/useIdle.d.ts +22 -0
- package/dist/hooks/useIdle/useIdle.js +66 -0
- package/dist/hooks/useIdle/useIdle.types.d.ts +29 -0
- package/dist/hooks/useLazyLoad/index.d.ts +2 -0
- package/dist/hooks/useLazyLoad/useLazyLoad.cjs +1 -0
- package/dist/hooks/useLazyLoad/useLazyLoad.d.ts +26 -0
- package/dist/hooks/useLazyLoad/useLazyLoad.js +27 -0
- package/dist/hooks/useLazyLoad/useLazyLoad.types.d.ts +25 -0
- package/dist/hooks/useLongPress/index.d.ts +2 -0
- package/dist/hooks/useLongPress/useLongPress.cjs +1 -0
- package/dist/hooks/useLongPress/useLongPress.d.ts +17 -0
- package/dist/hooks/useLongPress/useLongPress.js +44 -0
- package/dist/hooks/useLongPress/useLongPress.types.d.ts +26 -0
- package/dist/hooks/useOnline/index.d.ts +2 -0
- package/dist/hooks/useOnline/useOnline.cjs +1 -0
- package/dist/hooks/useOnline/useOnline.d.ts +16 -0
- package/dist/hooks/useOnline/useOnline.js +25 -0
- package/dist/hooks/useOnline/useOnline.types.d.ts +15 -0
- package/dist/hooks/usePageVisibility/index.d.ts +2 -0
- package/dist/hooks/usePageVisibility/usePageVisibility.cjs +1 -0
- package/dist/hooks/usePageVisibility/usePageVisibility.d.ts +19 -0
- package/dist/hooks/usePageVisibility/usePageVisibility.js +26 -0
- package/dist/hooks/usePageVisibility/usePageVisibility.types.d.ts +15 -0
- package/dist/hooks/useSpotlight/index.d.ts +2 -0
- package/dist/hooks/useSpotlight/useSpotlight.cjs +1 -0
- package/dist/hooks/useSpotlight/useSpotlight.d.ts +24 -0
- package/dist/hooks/useSpotlight/useSpotlight.js +49 -0
- package/dist/hooks/useSpotlight/useSpotlight.types.d.ts +23 -0
- package/dist/hooks/useWebSocket/index.d.ts +2 -0
- package/dist/hooks/useWebSocket/useWebSocket.cjs +1 -0
- package/dist/hooks/useWebSocket/useWebSocket.d.ts +22 -0
- package/dist/hooks/useWebSocket/useWebSocket.js +75 -0
- package/dist/hooks/useWebSocket/useWebSocket.types.d.ts +44 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +327 -264
- package/dist/styles.css +1 -1
- package/dist/types/component.types.d.ts +125 -42
- package/dist/types/theme.types.d.ts +82 -0
- package/package.json +1 -1
|
@@ -0,0 +1,103 @@
|
|
|
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
|
+
import { cn as x } from "../../utils/cn.js";
|
|
5
|
+
import { XIcon as E } from "../Icon/index.js";
|
|
6
|
+
const v = 300, M = {
|
|
7
|
+
sm: "bear-max-h-[40%]",
|
|
8
|
+
md: "bear-max-h-[60%]",
|
|
9
|
+
lg: "bear-max-h-[80%]",
|
|
10
|
+
full: "bear-max-h-[95%]"
|
|
11
|
+
}, F = ({
|
|
12
|
+
isOpen: o,
|
|
13
|
+
onClose: t,
|
|
14
|
+
title: b,
|
|
15
|
+
children: y,
|
|
16
|
+
size: k = "md",
|
|
17
|
+
showCloseButton: d = !0,
|
|
18
|
+
closeOnBackdrop: p = !0,
|
|
19
|
+
closeOnEscape: u = !0,
|
|
20
|
+
showHandle: g = !0,
|
|
21
|
+
className: w
|
|
22
|
+
}) => {
|
|
23
|
+
const [r, c] = i(o), [m, n] = i(!1), [N, f] = i(!1);
|
|
24
|
+
h(() => {
|
|
25
|
+
if (o) {
|
|
26
|
+
c(!0), n(!1);
|
|
27
|
+
const a = requestAnimationFrame(() => f(!0));
|
|
28
|
+
return () => cancelAnimationFrame(a);
|
|
29
|
+
}
|
|
30
|
+
if (r) {
|
|
31
|
+
f(!1), n(!0);
|
|
32
|
+
const a = setTimeout(() => {
|
|
33
|
+
c(!1), n(!1);
|
|
34
|
+
}, v);
|
|
35
|
+
return () => clearTimeout(a);
|
|
36
|
+
}
|
|
37
|
+
}, [o, r]);
|
|
38
|
+
const l = I(
|
|
39
|
+
(a) => {
|
|
40
|
+
u && a.key === "Escape" && t();
|
|
41
|
+
},
|
|
42
|
+
[u, t]
|
|
43
|
+
);
|
|
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
|
+
/* @__PURE__ */ e(
|
|
49
|
+
"div",
|
|
50
|
+
{
|
|
51
|
+
className: x(
|
|
52
|
+
"bear-absolute bear-inset-0 bear-bg-black/60 bear-backdrop-blur-sm bear-transition-opacity",
|
|
53
|
+
m ? "bear-opacity-0" : "bear-opacity-100"
|
|
54
|
+
),
|
|
55
|
+
style: { transitionDuration: `${v}ms` },
|
|
56
|
+
onClick: p ? t : void 0,
|
|
57
|
+
"aria-hidden": "true"
|
|
58
|
+
}
|
|
59
|
+
),
|
|
60
|
+
/* @__PURE__ */ s(
|
|
61
|
+
"div",
|
|
62
|
+
{
|
|
63
|
+
role: "dialog",
|
|
64
|
+
"aria-modal": "true",
|
|
65
|
+
"aria-labelledby": b ? "bottom-sheet-title" : void 0,
|
|
66
|
+
className: x(
|
|
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
|
|
72
|
+
),
|
|
73
|
+
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: [
|
|
76
|
+
b && /* @__PURE__ */ e(
|
|
77
|
+
"h2",
|
|
78
|
+
{
|
|
79
|
+
id: "bottom-sheet-title",
|
|
80
|
+
className: "bear-text-lg bear-font-semibold bear-text-neutral-900 dark:bear-text-white",
|
|
81
|
+
children: b
|
|
82
|
+
}
|
|
83
|
+
),
|
|
84
|
+
d && /* @__PURE__ */ e(
|
|
85
|
+
"button",
|
|
86
|
+
{
|
|
87
|
+
onClick: t,
|
|
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",
|
|
89
|
+
"aria-label": "Close",
|
|
90
|
+
children: /* @__PURE__ */ e(E, { className: "bear-w-5 bear-h-5" })
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
] }),
|
|
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 })
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
] });
|
|
99
|
+
return A(j, document.body);
|
|
100
|
+
};
|
|
101
|
+
export {
|
|
102
|
+
F as BottomSheet
|
|
103
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface BottomSheetProps {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
title?: ReactNode;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
size?: 'sm' | 'md' | 'lg' | 'full';
|
|
8
|
+
showCloseButton?: boolean;
|
|
9
|
+
closeOnBackdrop?: boolean;
|
|
10
|
+
closeOnEscape?: boolean;
|
|
11
|
+
showHandle?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
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
|
|
2
|
-
bear-
|
|
3
|
-
|
|
4
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
5
|
-
|
|
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-
|
|
9
|
-
|
|
10
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
11
|
-
|
|
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-
|
|
15
|
-
|
|
16
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
17
|
-
|
|
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-
|
|
21
|
-
|
|
22
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
23
|
-
|
|
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-
|
|
27
|
-
|
|
28
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
29
|
-
|
|
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-
|
|
33
|
-
|
|
34
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
35
|
-
|
|
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-
|
|
39
|
-
|
|
40
|
-
focus:bear-ring-2
|
|
41
|
-
|
|
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-
|
|
46
|
-
|
|
47
|
-
focus:bear-ring-2
|
|
48
|
-
|
|
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-
|
|
53
|
-
|
|
54
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
55
|
-
|
|
56
|
-
|
|
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 {
|
|
2
|
-
export declare const BUTTON_SIZE: Record<
|
|
3
|
-
|
|
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
|
|
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
|
-
},
|
|
7
|
+
}, e = {
|
|
8
8
|
primary: `
|
|
9
|
-
bear-
|
|
10
|
-
|
|
11
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
12
|
-
|
|
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-
|
|
17
|
-
|
|
18
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
19
|
-
|
|
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-
|
|
24
|
-
|
|
25
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
26
|
-
|
|
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-
|
|
31
|
-
|
|
32
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
33
|
-
|
|
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-
|
|
38
|
-
|
|
39
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
40
|
-
|
|
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-
|
|
45
|
-
|
|
46
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
47
|
-
|
|
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-
|
|
52
|
-
|
|
53
|
-
focus:bear-ring-2
|
|
54
|
-
|
|
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-
|
|
60
|
-
|
|
61
|
-
focus:bear-ring-2
|
|
62
|
-
|
|
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-
|
|
68
|
-
|
|
69
|
-
focus:bear-ring-2 focus:bear-ring-
|
|
70
|
-
|
|
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
|
-
|
|
76
|
-
|
|
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
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
*
|
|
14
|
-
*
|
|
18
|
+
* // With spotlight hover effect
|
|
19
|
+
* <Button variant="primary" spotlight>
|
|
20
|
+
* Hover me
|
|
15
21
|
* </Button>
|
|
16
22
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
23
|
+
* // With icons
|
|
24
|
+
* <Button variant="outline" leftIcon={<Icon />}>
|
|
25
|
+
* With Icon
|
|
19
26
|
* </Button>
|
|
20
27
|
* ```
|
|
21
28
|
*/
|
|
@@ -1,56 +1,136 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { cn as
|
|
4
|
-
import { Spinner as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
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:
|
|
11
|
-
size:
|
|
12
|
-
loading:
|
|
13
|
-
fullWidth:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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(
|
|
25
70
|
"button",
|
|
26
71
|
{
|
|
27
|
-
ref:
|
|
28
|
-
disabled:
|
|
29
|
-
style:
|
|
30
|
-
className:
|
|
72
|
+
ref: ee,
|
|
73
|
+
disabled: Z,
|
|
74
|
+
style: Q,
|
|
75
|
+
className: M(
|
|
31
76
|
"Bear-Button",
|
|
32
|
-
"bear-inline-flex bear-items-center bear-justify-center bear-font-medium bear-rounded-lg bear-transition-all bear-duration-200 bear-outline-none",
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
|
38
84
|
),
|
|
39
|
-
"data-testid":
|
|
40
|
-
|
|
85
|
+
"data-testid": X,
|
|
86
|
+
onMouseMove: G,
|
|
87
|
+
onMouseEnter: J,
|
|
88
|
+
onMouseLeave: K,
|
|
89
|
+
...W,
|
|
41
90
|
children: [
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
+
)
|
|
48
128
|
]
|
|
49
129
|
}
|
|
50
130
|
);
|
|
51
131
|
}
|
|
52
132
|
);
|
|
53
|
-
|
|
133
|
+
de.displayName = "Button";
|
|
54
134
|
export {
|
|
55
|
-
|
|
135
|
+
de as Button
|
|
56
136
|
};
|