@forgedevstack/bear 1.1.8 → 1.2.0
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/README.md +4 -4
- package/dist/components/AlertDialog/AlertDialog.cjs +1 -1
- package/dist/components/AlertDialog/AlertDialog.const.cjs +1 -1
- package/dist/components/AlertDialog/AlertDialog.const.d.ts +2 -2
- package/dist/components/AlertDialog/AlertDialog.const.js +4 -4
- package/dist/components/AlertDialog/AlertDialog.js +76 -62
- package/dist/components/BearLogo/BearLogo.d.ts +2 -7
- package/dist/components/BearLogo/BearLogo.types.d.ts +15 -0
- package/dist/components/BearLogo/EmberLogo.d.ts +1 -8
- package/dist/components/BearLogo/index.d.ts +1 -2
- package/dist/components/Biometric/Biometric.cjs +1 -0
- package/dist/components/Biometric/Biometric.d.ts +3 -0
- package/dist/components/Biometric/Biometric.js +123 -0
- package/dist/components/Biometric/Biometric.types.d.ts +35 -0
- package/dist/components/Biometric/BiometricIcon.cjs +1 -0
- package/dist/components/Biometric/BiometricIcon.d.ts +3 -0
- package/dist/components/Biometric/BiometricIcon.js +45 -0
- package/dist/components/Biometric/index.d.ts +3 -0
- package/dist/components/Biometric/useBiometric.cjs +1 -0
- package/dist/components/Biometric/useBiometric.d.ts +2 -0
- package/dist/components/Biometric/useBiometric.js +21 -0
- package/dist/components/Calendar/Calendar.cjs +1 -1
- package/dist/components/Calendar/Calendar.js +3 -2
- package/dist/components/CloseButton/CloseButton.cjs +1 -0
- package/dist/components/CloseButton/CloseButton.d.ts +4 -0
- package/dist/components/CloseButton/CloseButton.js +60 -0
- package/dist/components/CloseButton/CloseButton.types.d.ts +15 -0
- package/dist/components/CloseButton/index.d.ts +2 -0
- package/dist/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.js +12 -11
- package/dist/components/DateRangePicker/DateRangePicker.cjs +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.const.cjs +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.const.js +12 -13
- package/dist/components/DateRangePicker/DateRangePicker.js +107 -81
- package/dist/components/Dropdown/Dropdown.cjs +1 -1
- package/dist/components/Dropdown/Dropdown.js +48 -44
- package/dist/components/Icon/icons/commerce.cjs +1 -0
- package/dist/components/Icon/icons/commerce.d.ts +25 -0
- package/dist/components/Icon/icons/commerce.js +124 -0
- package/dist/components/Icon/icons/device.cjs +1 -0
- package/dist/components/Icon/icons/device.d.ts +27 -0
- package/dist/components/Icon/icons/device.js +122 -0
- package/dist/components/Icon/icons/file.cjs +1 -0
- package/dist/components/Icon/icons/file.d.ts +25 -0
- package/dist/components/Icon/icons/file.js +120 -0
- package/dist/components/Icon/icons/social.cjs +1 -0
- package/dist/components/Icon/icons/social.d.ts +24 -0
- package/dist/components/Icon/icons/social.js +89 -0
- package/dist/components/Icon/index.cjs +1 -1
- package/dist/components/Icon/index.d.ts +93 -56
- package/dist/components/Icon/index.js +38 -26
- package/dist/components/Input/Input.cjs +1 -1
- package/dist/components/Input/Input.js +153 -101
- package/dist/components/Input/Input.types.d.ts +8 -2
- package/dist/components/Input/index.d.ts +1 -1
- package/dist/components/Overlay/Overlay.cjs +1 -0
- package/dist/components/Overlay/Overlay.d.ts +4 -0
- package/dist/components/Overlay/Overlay.js +38 -0
- package/dist/components/Overlay/Overlay.types.d.ts +23 -0
- package/dist/components/Overlay/index.d.ts +2 -0
- package/dist/components/Popover/Popover.cjs +1 -1
- package/dist/components/Popover/Popover.js +76 -76
- package/dist/components/Portal/Portal.cjs +1 -0
- package/dist/components/Portal/Portal.d.ts +11 -0
- package/dist/components/Portal/Portal.js +12 -0
- package/dist/components/Portal/index.d.ts +2 -0
- package/dist/components/Select/Select.cjs +1 -1
- package/dist/components/Select/Select.js +41 -38
- package/dist/components/Tabs/TabList.cjs +1 -0
- package/dist/components/Tabs/TabList.d.ts +3 -0
- package/dist/components/Tabs/TabList.js +69 -0
- package/dist/components/Tabs/TabPanel.cjs +1 -0
- package/dist/components/Tabs/TabPanel.d.ts +3 -0
- package/dist/components/Tabs/TabPanel.js +13 -0
- package/dist/components/Tabs/Tabs.cjs +1 -1
- package/dist/components/Tabs/Tabs.d.ts +2 -27
- package/dist/components/Tabs/Tabs.js +42 -61
- package/dist/components/Tabs/Tabs.types.d.ts +4 -0
- package/dist/components/Tabs/index.d.ts +3 -1
- package/dist/components/ThemeIcon/ThemeIcon.cjs +1 -0
- package/dist/components/ThemeIcon/ThemeIcon.d.ts +4 -0
- package/dist/components/ThemeIcon/ThemeIcon.js +54 -0
- package/dist/components/ThemeIcon/ThemeIcon.types.d.ts +22 -0
- package/dist/components/ThemeIcon/index.d.ts +2 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.cjs +1 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +6 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.js +22 -0
- package/dist/components/VisuallyHidden/index.d.ts +2 -0
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.d.ts +15 -2
- package/dist/components/index.js +329 -312
- package/dist/hooks/bearStyled.cjs +1 -1
- package/dist/hooks/bearStyled.d.ts +31 -9
- package/dist/hooks/bearStyled.js +17 -12
- package/dist/hooks/useMediaQuery/useMediaQuery.d.ts +9 -1
- package/dist/hooks/useResponsive.cjs +1 -1
- package/dist/hooks/useResponsive.d.ts +2 -17
- package/dist/hooks/useResponsive.js +47 -41
- package/dist/index.cjs +1 -1
- package/dist/index.js +408 -391
- package/dist/styles/_effects.css +9 -0
- package/dist/styles.css +1 -1
- package/dist/types/theme.types.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { jsxs as x, jsx as E } from "react/jsx-runtime";
|
|
2
|
+
import { useState as k, useRef as z, useCallback as B, useEffect as u } from "react";
|
|
3
|
+
import { createPortal as T } from "react-dom";
|
|
4
|
+
import { cn as c } from "../../utils/cn.js";
|
|
5
|
+
const W = 1e4;
|
|
6
|
+
function Z(b, t, a) {
|
|
7
|
+
const e = { position: "fixed", zIndex: W }, s = b.split("-")[0], r = b.includes("start"), o = b.includes("end");
|
|
8
|
+
return s === "bottom" ? (e.top = t.bottom + a, r ? e.left = t.left : o ? e.left = t.right : e.left = t.left + t.width / 2) : s === "top" ? (e.bottom = window.innerHeight - t.top + a, r ? e.left = t.left : o ? e.left = t.right : e.left = t.left + t.width / 2) : s === "left" ? (e.right = window.innerWidth - t.left + a, r ? e.top = t.top : o ? e.bottom = window.innerHeight - t.bottom : e.top = t.top + t.height / 2) : (e.left = t.right + a, r ? e.top = t.top : o ? e.bottom = window.innerHeight - t.bottom : e.top = t.top + t.height / 2), s === "bottom" || s === "top" ? !r && !o ? e.transform = "translateX(-50%)" : o && (e.transform = "translateX(-100%)") : !r && !o ? e.transform = "translateY(-50%)" : o && (e.transform = "translateY(-100%)"), e;
|
|
9
|
+
}
|
|
10
|
+
const F = ({
|
|
11
|
+
children: b,
|
|
12
|
+
content: t,
|
|
7
13
|
placement: a = "bottom",
|
|
8
|
-
trigger:
|
|
9
|
-
open:
|
|
10
|
-
onOpenChange:
|
|
11
|
-
className:
|
|
12
|
-
contentClassName:
|
|
13
|
-
arrow:
|
|
14
|
-
closeOnClickOutside:
|
|
15
|
-
closeOnEscape:
|
|
16
|
-
offset:
|
|
14
|
+
trigger: e = "click",
|
|
15
|
+
open: s,
|
|
16
|
+
onOpenChange: r,
|
|
17
|
+
className: o,
|
|
18
|
+
contentClassName: L,
|
|
19
|
+
arrow: N = !0,
|
|
20
|
+
closeOnClickOutside: p = !0,
|
|
21
|
+
closeOnEscape: m = !0,
|
|
22
|
+
offset: h = 8
|
|
17
23
|
}) => {
|
|
18
|
-
const [
|
|
19
|
-
|
|
20
|
-
}, [
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
const [I, M] = k(!1), [P, R] = k({}), f = z(null), v = z(null), i = s !== void 0 ? s : I, l = B((n) => {
|
|
25
|
+
M(n), r == null || r(n);
|
|
26
|
+
}, [r]);
|
|
27
|
+
u(() => {
|
|
28
|
+
if (i && f.current) {
|
|
29
|
+
const n = f.current.getBoundingClientRect();
|
|
30
|
+
R(Z(a, n, h));
|
|
31
|
+
}
|
|
32
|
+
}, [i, a, h]), u(() => {
|
|
33
|
+
if (!p) return;
|
|
34
|
+
const n = (d) => {
|
|
35
|
+
var y, g;
|
|
36
|
+
const w = d.target;
|
|
37
|
+
(y = f.current) != null && y.contains(w) || (g = v.current) != null && g.contains(w) || l(!1);
|
|
25
38
|
};
|
|
26
|
-
return
|
|
27
|
-
}, [
|
|
28
|
-
if (!
|
|
29
|
-
const
|
|
30
|
-
|
|
39
|
+
return i && document.addEventListener("mousedown", n), () => document.removeEventListener("mousedown", n);
|
|
40
|
+
}, [i, p, l]), u(() => {
|
|
41
|
+
if (!m) return;
|
|
42
|
+
const n = (d) => {
|
|
43
|
+
d.key === "Escape" && l(!1);
|
|
31
44
|
};
|
|
32
|
-
return
|
|
33
|
-
}, [
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
},
|
|
41
|
-
top: "bear-bottom-full bear-left-1/2 -bear-translate-x-1/2 bear-mb-2",
|
|
42
|
-
"top-start": "bear-bottom-full bear-left-0 bear-mb-2",
|
|
43
|
-
"top-end": "bear-bottom-full bear-right-0 bear-mb-2",
|
|
44
|
-
bottom: "bear-top-full bear-left-1/2 -bear-translate-x-1/2 bear-mt-2",
|
|
45
|
-
"bottom-start": "bear-top-full bear-left-0 bear-mt-2",
|
|
46
|
-
"bottom-end": "bear-top-full bear-right-0 bear-mt-2",
|
|
47
|
-
left: "bear-right-full bear-top-1/2 -bear-translate-y-1/2 bear-mr-2",
|
|
48
|
-
"left-start": "bear-right-full bear-top-0 bear-mr-2",
|
|
49
|
-
"left-end": "bear-right-full bear-bottom-0 bear-mr-2",
|
|
50
|
-
right: "bear-left-full bear-top-1/2 -bear-translate-y-1/2 bear-ml-2",
|
|
51
|
-
"right-start": "bear-left-full bear-top-0 bear-ml-2",
|
|
52
|
-
"right-end": "bear-left-full bear-bottom-0 bear-ml-2"
|
|
53
|
-
}, S = {
|
|
45
|
+
return i && document.addEventListener("keydown", n), () => document.removeEventListener("keydown", n);
|
|
46
|
+
}, [i, m, l]);
|
|
47
|
+
const S = () => {
|
|
48
|
+
e === "click" && l(!i);
|
|
49
|
+
}, H = () => {
|
|
50
|
+
e === "hover" && l(!0);
|
|
51
|
+
}, X = () => {
|
|
52
|
+
e === "hover" && l(!1);
|
|
53
|
+
}, j = {
|
|
54
54
|
top: "bear-top-full bear-left-1/2 -bear-translate-x-1/2 bear-border-t-zinc-700 bear-border-x-transparent bear-border-b-transparent",
|
|
55
55
|
bottom: "bear-bottom-full bear-left-1/2 -bear-translate-x-1/2 bear-border-b-zinc-700 bear-border-x-transparent bear-border-t-transparent",
|
|
56
56
|
left: "bear-left-full bear-top-1/2 -bear-translate-y-1/2 bear-border-l-zinc-700 bear-border-y-transparent bear-border-r-transparent",
|
|
57
57
|
right: "bear-right-full bear-top-1/2 -bear-translate-y-1/2 bear-border-r-zinc-700 bear-border-y-transparent bear-border-l-transparent"
|
|
58
|
-
},
|
|
59
|
-
|
|
58
|
+
}, D = a.split("-")[0], Y = i && typeof document < "u" && T(
|
|
59
|
+
/* @__PURE__ */ x(
|
|
60
|
+
"div",
|
|
61
|
+
{
|
|
62
|
+
ref: v,
|
|
63
|
+
"data-bear-popover": !0,
|
|
64
|
+
className: c(
|
|
65
|
+
"bear-bg-zinc-800 bear-border bear-border-zinc-700 bear-rounded-lg bear-shadow-xl bear-p-3",
|
|
66
|
+
L
|
|
67
|
+
),
|
|
68
|
+
style: P,
|
|
69
|
+
children: [
|
|
70
|
+
t,
|
|
71
|
+
N && /* @__PURE__ */ E("div", { className: c("bear-absolute bear-w-0 bear-h-0 bear-border-8", j[D]) })
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
document.body
|
|
76
|
+
);
|
|
77
|
+
return /* @__PURE__ */ x(
|
|
60
78
|
"div",
|
|
61
79
|
{
|
|
62
|
-
ref:
|
|
63
|
-
className:
|
|
64
|
-
onMouseEnter:
|
|
65
|
-
onMouseLeave:
|
|
80
|
+
ref: f,
|
|
81
|
+
className: c("bear-relative bear-inline-block", o),
|
|
82
|
+
onMouseEnter: H,
|
|
83
|
+
onMouseLeave: X,
|
|
66
84
|
children: [
|
|
67
|
-
/* @__PURE__ */
|
|
68
|
-
|
|
69
|
-
"div",
|
|
70
|
-
{
|
|
71
|
-
ref: z,
|
|
72
|
-
className: s(
|
|
73
|
-
"bear-absolute bear-z-50 bear-bg-zinc-800 bear-border bear-border-zinc-700 bear-rounded-lg bear-shadow-xl bear-p-3",
|
|
74
|
-
R[a],
|
|
75
|
-
k
|
|
76
|
-
),
|
|
77
|
-
style: { marginTop: a.startsWith("bottom") ? u : void 0, marginBottom: a.startsWith("top") ? u : void 0 },
|
|
78
|
-
children: [
|
|
79
|
-
y,
|
|
80
|
-
g && /* @__PURE__ */ m("div", { className: s(
|
|
81
|
-
"bear-absolute bear-w-0 bear-h-0 bear-border-8",
|
|
82
|
-
S[j]
|
|
83
|
-
) })
|
|
84
|
-
]
|
|
85
|
-
}
|
|
86
|
-
)
|
|
85
|
+
/* @__PURE__ */ E("div", { onClick: S, className: "bear-cursor-pointer", children: b }),
|
|
86
|
+
Y
|
|
87
87
|
]
|
|
88
88
|
}
|
|
89
89
|
);
|
|
90
90
|
};
|
|
91
91
|
export {
|
|
92
|
-
|
|
92
|
+
F as Popover
|
|
93
93
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),r=require("react"),a=require("react-dom"),c=({children:e,target:o,disabled:u=!1})=>{const[s,n]=r.useState(!1);return r.useEffect(()=>{n(!0)},[]),u||!s?t.jsx(t.Fragment,{children:e}):a.createPortal(e,o??document.body)};exports.Portal=c;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
export interface PortalProps {
|
|
3
|
+
/** Content to render in the portal */
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
/** Target DOM element (defaults to document.body) */
|
|
6
|
+
target?: HTMLElement | null;
|
|
7
|
+
/** Disable portalling — render inline instead */
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const Portal: FC<PortalProps>;
|
|
11
|
+
export default Portal;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as f, Fragment as s } from "react/jsx-runtime";
|
|
2
|
+
import { useState as u, useEffect as a } from "react";
|
|
3
|
+
import { createPortal as n } from "react-dom";
|
|
4
|
+
const i = ({ children: t, target: e, disabled: o = !1 }) => {
|
|
5
|
+
const [r, m] = u(!1);
|
|
6
|
+
return a(() => {
|
|
7
|
+
m(!0);
|
|
8
|
+
}, []), o || !r ? /* @__PURE__ */ f(s, { children: t }) : n(t, e ?? document.body);
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
i as Portal
|
|
12
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),n=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),n=require("react"),s=require("../../utils/cn.cjs"),j=require("../../hooks/useClickOutside.cjs");require("../../context/BearProvider.cjs");require("../../hooks/useBearComponent/useBearComponent.cjs");const m=require("../Icon/index.cjs"),p={sm:"bear-h-8 bear-text-sm bear-px-3",md:"bear-h-10 bear-text-base bear-px-4",lg:"bear-h-12 bear-text-lg bear-px-5"},N=({options:u,value:a,onChange:t,placeholder:v="Select an option",label:i,error:l,disabled:o=!1,size:y="md",fullWidth:g=!1,className:h})=>{const[c,d]=n.useState(!1),f=n.useRef(null),x=!!l,b=u.find(e=>e.value===a),k=n.useCallback(()=>d(!1),[]);j.useClickOutside(f,k);const w=e=>{t==null||t(e),d(!1)};return r.jsxs("div",{ref:f,className:s.cn("bear-relative bear-flex bear-flex-col bear-gap-1.5",g&&"bear-w-full"),children:[i&&r.jsx("label",{className:"bear-text-sm bear-font-medium",style:{color:"var(--bear-text-secondary)"},children:i}),r.jsxs("button",{type:"button",disabled:o,onClick:()=>!o&&d(!c),className:s.cn("bear-flex bear-items-center bear-justify-between bear-w-full","bear-rounded-lg bear-border bear-text-left bear-outline-none bear-transition-all bear-duration-200","focus:bear-ring-2 focus:bear-ring-offset-2 focus:bear-ring-offset-[var(--bear-bg-primary)]",x?"bear-border-red-500 focus:bear-ring-red-500":"focus:bear-border-bear-500 focus:bear-ring-bear-500 dark:focus:bear-border-bear-500 dark:focus:bear-ring-bear-500",o&&"bear-opacity-50 bear-cursor-not-allowed",p[y],h),style:{backgroundColor:"var(--bear-bg-primary)",borderColor:x?void 0:"var(--bear-border-default)",color:b?"var(--bear-text-primary)":"var(--bear-text-muted)"},children:[r.jsx("span",{children:(b==null?void 0:b.label)||v}),r.jsx(m.ChevronDownIcon,{className:s.cn("bear-w-4 bear-h-4 bear-shrink-0 bear-transition-transform",c&&"bear-rotate-180"),style:{color:"var(--bear-text-muted)"}})]}),c&&r.jsx("div",{className:"bear-absolute bear-z-50 bear-w-full bear-mt-1 bear-rounded-lg bear-border bear-shadow-lg bear-overflow-hidden bear-top-full",style:{backgroundColor:"var(--bear-bg-primary)",borderColor:"var(--bear-border-default)"},children:r.jsx("div",{className:"bear-max-h-60 bear-overflow-y-auto",children:u.map(e=>r.jsxs("button",{type:"button",disabled:e.disabled,onClick:()=>!e.disabled&&w(e.value),className:s.cn("bear-flex bear-items-center bear-justify-between bear-w-full bear-px-4 bear-py-2","bear-text-left bear-transition-colors",e.disabled&&"bear-cursor-not-allowed",e.value===a&&"bear-bg-bear-100 bear-text-bear-700 dark:bear-bg-bear-600/20 dark:bear-text-bear-300",!e.disabled&&e.value!==a&&"hover:bear-bg-[var(--bear-bg-tertiary)]"),style:e.disabled?{color:"var(--bear-text-muted)"}:e.value===a?void 0:{color:"var(--bear-text-secondary)"},children:[e.label,e.value===a&&r.jsx(m.CheckIcon,{className:"bear-w-4 bear-h-4 bear-shrink-0 bear-text-bear-600 dark:bear-text-bear-400"})]},e.value))})}),l&&r.jsx("p",{className:"bear-text-sm bear-text-red-500",children:l})]})};exports.Select=N;
|
|
@@ -1,64 +1,65 @@
|
|
|
1
1
|
import { jsxs as n, jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import { useState as
|
|
3
|
-
import { cn as
|
|
4
|
-
import { useClickOutside as
|
|
2
|
+
import { useState as w, useRef as k, useCallback as N } from "react";
|
|
3
|
+
import { cn as t } from "../../utils/cn.js";
|
|
4
|
+
import { useClickOutside as C } from "../../hooks/useClickOutside.js";
|
|
5
5
|
import "../../context/BearProvider.js";
|
|
6
6
|
import "../../hooks/useBearComponent/useBearComponent.js";
|
|
7
|
-
import { ChevronDownIcon as
|
|
7
|
+
import { ChevronDownIcon as j, CheckIcon as S } from "../Icon/index.js";
|
|
8
8
|
const I = {
|
|
9
9
|
sm: "bear-h-8 bear-text-sm bear-px-3",
|
|
10
10
|
md: "bear-h-10 bear-text-base bear-px-4",
|
|
11
11
|
lg: "bear-h-12 bear-text-lg bear-px-5"
|
|
12
12
|
}, A = ({
|
|
13
13
|
options: i,
|
|
14
|
-
value:
|
|
15
|
-
onChange:
|
|
14
|
+
value: a,
|
|
15
|
+
onChange: l,
|
|
16
16
|
placeholder: x = "Select an option",
|
|
17
17
|
label: f,
|
|
18
|
-
error:
|
|
18
|
+
error: s,
|
|
19
19
|
disabled: o = !1,
|
|
20
|
-
size:
|
|
21
|
-
fullWidth:
|
|
20
|
+
size: v = "md",
|
|
21
|
+
fullWidth: h = !1,
|
|
22
22
|
className: y
|
|
23
23
|
}) => {
|
|
24
|
-
const [d, c] =
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
24
|
+
const [d, c] = w(!1), u = k(null), m = !!s, b = i.find((e) => e.value === a), g = N(() => c(!1), []);
|
|
25
|
+
C(u, g);
|
|
26
|
+
const p = (e) => {
|
|
27
|
+
l == null || l(e), c(!1);
|
|
28
28
|
};
|
|
29
29
|
return /* @__PURE__ */ n(
|
|
30
30
|
"div",
|
|
31
31
|
{
|
|
32
32
|
ref: u,
|
|
33
|
-
className:
|
|
33
|
+
className: t("bear-relative bear-flex bear-flex-col bear-gap-1.5", h && "bear-w-full"),
|
|
34
34
|
children: [
|
|
35
|
-
f && /* @__PURE__ */ r("label", { className: "bear-text-sm bear-font-medium
|
|
35
|
+
f && /* @__PURE__ */ r("label", { className: "bear-text-sm bear-font-medium", style: { color: "var(--bear-text-secondary)" }, children: f }),
|
|
36
36
|
/* @__PURE__ */ n(
|
|
37
37
|
"button",
|
|
38
38
|
{
|
|
39
39
|
type: "button",
|
|
40
40
|
disabled: o,
|
|
41
41
|
onClick: () => !o && c(!d),
|
|
42
|
-
className:
|
|
42
|
+
className: t(
|
|
43
43
|
"bear-flex bear-items-center bear-justify-between bear-w-full",
|
|
44
44
|
"bear-rounded-lg bear-border bear-text-left bear-outline-none bear-transition-all bear-duration-200",
|
|
45
|
-
"bear-
|
|
46
|
-
"focus:bear-ring-
|
|
47
|
-
"dark:bear-bg-gray-800 dark:bear-text-white dark:bear-border-gray-600 dark:focus:bear-ring-offset-gray-900",
|
|
48
|
-
h ? "bear-border-red-500 focus:bear-ring-red-500" : "focus:bear-border-bear-500 focus:bear-ring-bear-500 dark:focus:bear-border-bear-500 dark:focus:bear-ring-bear-500",
|
|
45
|
+
"focus:bear-ring-2 focus:bear-ring-offset-2 focus:bear-ring-offset-[var(--bear-bg-primary)]",
|
|
46
|
+
m ? "bear-border-red-500 focus:bear-ring-red-500" : "focus:bear-border-bear-500 focus:bear-ring-bear-500 dark:focus:bear-border-bear-500 dark:focus:bear-ring-bear-500",
|
|
49
47
|
o && "bear-opacity-50 bear-cursor-not-allowed",
|
|
50
|
-
I[
|
|
48
|
+
I[v],
|
|
51
49
|
y
|
|
52
50
|
),
|
|
51
|
+
style: {
|
|
52
|
+
backgroundColor: "var(--bear-bg-primary)",
|
|
53
|
+
borderColor: m ? void 0 : "var(--bear-border-default)",
|
|
54
|
+
color: b ? "var(--bear-text-primary)" : "var(--bear-text-muted)"
|
|
55
|
+
},
|
|
53
56
|
children: [
|
|
54
|
-
/* @__PURE__ */ r("span", {
|
|
57
|
+
/* @__PURE__ */ r("span", { children: (b == null ? void 0 : b.label) || x }),
|
|
55
58
|
/* @__PURE__ */ r(
|
|
56
|
-
|
|
59
|
+
j,
|
|
57
60
|
{
|
|
58
|
-
className:
|
|
59
|
-
|
|
60
|
-
d && "bear-rotate-180"
|
|
61
|
-
)
|
|
61
|
+
className: t("bear-w-4 bear-h-4 bear-shrink-0 bear-transition-transform", d && "bear-rotate-180"),
|
|
62
|
+
style: { color: "var(--bear-text-muted)" }
|
|
62
63
|
}
|
|
63
64
|
)
|
|
64
65
|
]
|
|
@@ -67,33 +68,35 @@ const I = {
|
|
|
67
68
|
d && /* @__PURE__ */ r(
|
|
68
69
|
"div",
|
|
69
70
|
{
|
|
70
|
-
className:
|
|
71
|
-
|
|
72
|
-
"bear-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
className: "bear-absolute bear-z-50 bear-w-full bear-mt-1 bear-rounded-lg bear-border bear-shadow-lg bear-overflow-hidden bear-top-full",
|
|
72
|
+
style: {
|
|
73
|
+
backgroundColor: "var(--bear-bg-primary)",
|
|
74
|
+
borderColor: "var(--bear-border-default)"
|
|
75
|
+
},
|
|
75
76
|
children: /* @__PURE__ */ r("div", { className: "bear-max-h-60 bear-overflow-y-auto", children: i.map((e) => /* @__PURE__ */ n(
|
|
76
77
|
"button",
|
|
77
78
|
{
|
|
78
79
|
type: "button",
|
|
79
80
|
disabled: e.disabled,
|
|
80
|
-
onClick: () => !e.disabled &&
|
|
81
|
-
className:
|
|
81
|
+
onClick: () => !e.disabled && p(e.value),
|
|
82
|
+
className: t(
|
|
82
83
|
"bear-flex bear-items-center bear-justify-between bear-w-full bear-px-4 bear-py-2",
|
|
83
84
|
"bear-text-left bear-transition-colors",
|
|
84
|
-
e.disabled
|
|
85
|
-
e.value ===
|
|
85
|
+
e.disabled && "bear-cursor-not-allowed",
|
|
86
|
+
e.value === a && "bear-bg-bear-100 bear-text-bear-700 dark:bear-bg-bear-600/20 dark:bear-text-bear-300",
|
|
87
|
+
!e.disabled && e.value !== a && "hover:bear-bg-[var(--bear-bg-tertiary)]"
|
|
86
88
|
),
|
|
89
|
+
style: e.disabled ? { color: "var(--bear-text-muted)" } : e.value === a ? void 0 : { color: "var(--bear-text-secondary)" },
|
|
87
90
|
children: [
|
|
88
91
|
e.label,
|
|
89
|
-
e.value ===
|
|
92
|
+
e.value === a && /* @__PURE__ */ r(S, { className: "bear-w-4 bear-h-4 bear-shrink-0 bear-text-bear-600 dark:bear-text-bear-400" })
|
|
90
93
|
]
|
|
91
94
|
},
|
|
92
95
|
e.value
|
|
93
96
|
)) })
|
|
94
97
|
}
|
|
95
98
|
),
|
|
96
|
-
|
|
99
|
+
s && /* @__PURE__ */ r("p", { className: "bear-text-sm bear-text-red-500", children: s })
|
|
97
100
|
]
|
|
98
101
|
}
|
|
99
102
|
);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),l=require("react"),x=require("../../utils/cn.cjs"),C=require("../Dropdown/Dropdown.cjs"),j=require("../Icon/index.cjs"),q=require("./Tabs.cjs");function k(a){var o;return l.isValidElement(a)&&typeof a.type!="string"&&((o=a.props)==null?void 0:o.id)!=null}const E=({children:a,maxVisibleTabs:o,wrap:y=!1,className:f})=>{const u=l.useContext(q.TabsContext);if(!u)throw new Error("TabList must be used within Tabs");const{activeTab:s,setActiveTab:g,variant:t}=u,m=l.Children.toArray(a).filter(k),i=m.map(e=>({id:e.props.id,label:e.props.children,disabled:e.props.disabled})),b=s?[s,...i.map(e=>e.id).filter(e=>e!==s)]:i.map(e=>e.id),v=o??b.length,T=b.slice(0,v),c=b.slice(v),d=c.includes(s),h=x.cn("Bear-Tabs__list",`Bear-Tabs__list--${t}`,"bear-flex bear-gap-1",y&&"bear-flex-wrap",t==="line"&&"bear-border-b",t==="pills"&&"bear-p-1 bear-rounded-lg",t==="enclosed"&&"bear-border-b",f),w={...t==="line"||t==="enclosed"?{borderColor:"var(--bear-border-default)"}:{},...t==="pills"?{backgroundColor:"var(--bear-bg-tertiary)"}:{}};return n.jsxs("div",{role:"tablist",className:h,style:w,children:[o!=null?T.map(e=>{const r=m.find(p=>p.props.id===e);return r?l.cloneElement(r,{key:r.props.id}):null}):a,o!=null&&c.length>0&&n.jsx(C.Dropdown,{placement:"bottom-start",closeOnSelect:!0,trigger:n.jsx("button",{type:"button",role:"tab","aria-haspopup":"listbox","aria-label":"More tabs",className:x.cn("bear-flex bear-items-center bear-gap-2 bear-px-4 bear-py-2 bear-text-sm bear-font-medium bear-transition-colors bear-border-0 bear-cursor-pointer",t==="pills"&&"bear-rounded-md",d&&"bear-shadow-sm",!d&&"hover:bear-bg-[var(--bear-bg-tertiary)] hover:bear-text-[var(--bear-text-primary)]"),style:d?{backgroundColor:"var(--bear-bg-primary)",color:"var(--bear-text-primary)"}:{color:"var(--bear-text-muted)"},children:n.jsx(j.BearIcons.MoreHorizIcon,{size:18})}),items:c.map(e=>{const r=i.find(p=>p.id===e);return{key:e,label:(r==null?void 0:r.label)??e,disabled:r==null?void 0:r.disabled,onClick:()=>g(e)}})})]})};exports.TabList=E;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsxs as w, jsx as d } from "react/jsx-runtime";
|
|
2
|
+
import { useContext as T, Children as k, cloneElement as E, isValidElement as I } from "react";
|
|
3
|
+
import { cn as f } from "../../utils/cn.js";
|
|
4
|
+
import { Dropdown as _ } from "../Dropdown/Dropdown.js";
|
|
5
|
+
import { BearIcons as A } from "../Icon/index.js";
|
|
6
|
+
import { TabsContext as B } from "./Tabs.js";
|
|
7
|
+
function M(o) {
|
|
8
|
+
var a;
|
|
9
|
+
return I(o) && typeof o.type != "string" && ((a = o.props) == null ? void 0 : a.id) != null;
|
|
10
|
+
}
|
|
11
|
+
const H = ({ children: o, maxVisibleTabs: a, wrap: v = !1, className: y }) => {
|
|
12
|
+
const c = T(B);
|
|
13
|
+
if (!c) throw new Error("TabList must be used within Tabs");
|
|
14
|
+
const { activeTab: s, setActiveTab: g, variant: t } = c, m = k.toArray(o).filter(M), l = m.map((e) => ({ id: e.props.id, label: e.props.children, disabled: e.props.disabled })), n = s ? [s, ...l.map((e) => e.id).filter((e) => e !== s)] : l.map((e) => e.id), u = a ?? n.length, x = n.slice(0, u), b = n.slice(u), i = b.includes(s), h = f(
|
|
15
|
+
"Bear-Tabs__list",
|
|
16
|
+
`Bear-Tabs__list--${t}`,
|
|
17
|
+
"bear-flex bear-gap-1",
|
|
18
|
+
v && "bear-flex-wrap",
|
|
19
|
+
t === "line" && "bear-border-b",
|
|
20
|
+
t === "pills" && "bear-p-1 bear-rounded-lg",
|
|
21
|
+
t === "enclosed" && "bear-border-b",
|
|
22
|
+
y
|
|
23
|
+
), C = {
|
|
24
|
+
...t === "line" || t === "enclosed" ? { borderColor: "var(--bear-border-default)" } : {},
|
|
25
|
+
...t === "pills" ? { backgroundColor: "var(--bear-bg-tertiary)" } : {}
|
|
26
|
+
};
|
|
27
|
+
return /* @__PURE__ */ w("div", { role: "tablist", className: h, style: C, children: [
|
|
28
|
+
a != null ? x.map((e) => {
|
|
29
|
+
const r = m.find((p) => p.props.id === e);
|
|
30
|
+
return r ? E(r, { key: r.props.id }) : null;
|
|
31
|
+
}) : o,
|
|
32
|
+
a != null && b.length > 0 && /* @__PURE__ */ d(
|
|
33
|
+
_,
|
|
34
|
+
{
|
|
35
|
+
placement: "bottom-start",
|
|
36
|
+
closeOnSelect: !0,
|
|
37
|
+
trigger: /* @__PURE__ */ d(
|
|
38
|
+
"button",
|
|
39
|
+
{
|
|
40
|
+
type: "button",
|
|
41
|
+
role: "tab",
|
|
42
|
+
"aria-haspopup": "listbox",
|
|
43
|
+
"aria-label": "More tabs",
|
|
44
|
+
className: f(
|
|
45
|
+
"bear-flex bear-items-center bear-gap-2 bear-px-4 bear-py-2 bear-text-sm bear-font-medium bear-transition-colors bear-border-0 bear-cursor-pointer",
|
|
46
|
+
t === "pills" && "bear-rounded-md",
|
|
47
|
+
i && "bear-shadow-sm",
|
|
48
|
+
!i && "hover:bear-bg-[var(--bear-bg-tertiary)] hover:bear-text-[var(--bear-text-primary)]"
|
|
49
|
+
),
|
|
50
|
+
style: i ? { backgroundColor: "var(--bear-bg-primary)", color: "var(--bear-text-primary)" } : { color: "var(--bear-text-muted)" },
|
|
51
|
+
children: /* @__PURE__ */ d(A.MoreHorizIcon, { size: 18 })
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
items: b.map((e) => {
|
|
55
|
+
const r = l.find((p) => p.id === e);
|
|
56
|
+
return {
|
|
57
|
+
key: e,
|
|
58
|
+
label: (r == null ? void 0 : r.label) ?? e,
|
|
59
|
+
disabled: r == null ? void 0 : r.disabled,
|
|
60
|
+
onClick: () => g(e)
|
|
61
|
+
};
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
] });
|
|
66
|
+
};
|
|
67
|
+
export {
|
|
68
|
+
H as TabList
|
|
69
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),o=require("react"),c=require("../../utils/cn.cjs"),i=require("./Tabs.cjs"),u=({tabId:t,children:n,className:r})=>{const e=o.useContext(i.TabsContext);if(!e)throw new Error("TabPanel must be used within Tabs");const{activeTab:a}=e;return a!==t?null:s.jsx("div",{role:"tabpanel",className:c.cn("Bear-Tabs__panel bear-py-4",r),children:n})};exports.TabPanel=u;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useContext as s } from "react";
|
|
3
|
+
import { cn as i } from "../../utils/cn.js";
|
|
4
|
+
import { TabsContext as m } from "./Tabs.js";
|
|
5
|
+
const f = ({ tabId: r, children: e, className: o }) => {
|
|
6
|
+
const t = s(m);
|
|
7
|
+
if (!t) throw new Error("TabPanel must be used within Tabs");
|
|
8
|
+
const { activeTab: a } = t;
|
|
9
|
+
return a !== r ? null : /* @__PURE__ */ n("div", { role: "tabpanel", className: i("Bear-Tabs__panel bear-py-4", o), children: e });
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
f as TabPanel
|
|
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 s=require("react/jsx-runtime"),m=require("react"),b=require("../../utils/cn.cjs"),x=m.createContext(null),T=({children:o,value:n,defaultTab:e,variant:c="line",onChange:a,className:l,testId:d})=>{const[t,r]=m.useState(e),i=n!==void 0,v=i?n:t,u=p=>{i||r(p),a==null||a(p)};return s.jsx(x.Provider,{value:{activeTab:v,setActiveTab:u,variant:c},children:s.jsx("div",{className:b.cn("Bear-Tabs",l),"data-testid":d,children:o})})},y=({id:o,children:n,disabled:e=!1,icon:c})=>{const a=m.useContext(x);if(!a)throw new Error("Tab must be used within Tabs");const{activeTab:l,setActiveTab:d,variant:t}=a,r=l===o,i="bear-flex bear-items-center bear-gap-2 bear-px-4 bear-py-2 bear-text-sm bear-font-medium bear-transition-colors",v={line:b.cn("bear-border-b-2 bear--mb-px",r?"bear-border-pink-500 bear-text-pink-600 dark:bear-text-pink-400":"bear-border-transparent hover:bear-border-[var(--bear-border-default)]"),pills:b.cn("bear-rounded-md",r&&"bear-shadow-sm"),enclosed:b.cn("bear-rounded-t-lg bear-border bear-border-transparent",r&&"bear--mb-px")},u=e?void 0:r?t==="pills"?{backgroundColor:"var(--bear-bg-primary)",color:"var(--bear-text-primary)"}:t==="enclosed"?{backgroundColor:"var(--bear-bg-primary)",borderColor:"var(--bear-border-default)",borderBottomColor:"var(--bear-bg-primary)",color:"var(--bear-text-primary)"}:void 0:{color:"var(--bear-text-muted)"};return s.jsxs("button",{role:"tab","aria-selected":r,disabled:e,onClick:()=>!e&&d(o),className:b.cn("Bear-Tabs__tab",r&&"Bear-Tabs__tab--active",i,v[t],!r&&"hover:bear-bg-[var(--bear-bg-tertiary)] hover:bear-text-[var(--bear-text-primary)]",e&&"Bear-Tabs__tab--disabled bear-opacity-50 bear-cursor-not-allowed"),style:u,children:[c&&s.jsx("span",{className:"Bear-Tabs__tab-icon",children:c}),s.jsx("span",{className:"Bear-Tabs__tab-label",children:n})]})};exports.Tab=y;exports.Tabs=T;exports.TabsContext=x;
|
|
@@ -1,30 +1,5 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
* Tabs - Tabbed interface for organizing content
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* ```tsx
|
|
8
|
-
* <Tabs defaultTab="tab1" variant="line">
|
|
9
|
-
* <TabList>
|
|
10
|
-
* <Tab id="tab1">Tab 1</Tab>
|
|
11
|
-
* <Tab id="tab2">Tab 2</Tab>
|
|
12
|
-
* </TabList>
|
|
13
|
-
* <TabPanel tabId="tab1">Content 1</TabPanel>
|
|
14
|
-
* <TabPanel tabId="tab2">Content 2</TabPanel>
|
|
15
|
-
* </Tabs>
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
2
|
+
import { TabsContextValue, TabsProps, TabProps } from './Tabs.types';
|
|
3
|
+
export declare const TabsContext: import('react').Context<TabsContextValue | null>;
|
|
18
4
|
export declare const Tabs: FC<TabsProps>;
|
|
19
|
-
/**
|
|
20
|
-
* TabList - Container for tab buttons
|
|
21
|
-
*/
|
|
22
|
-
export declare const TabList: FC<TabListProps>;
|
|
23
|
-
/**
|
|
24
|
-
* Tab - Individual tab button
|
|
25
|
-
*/
|
|
26
5
|
export declare const Tab: FC<TabProps>;
|
|
27
|
-
/**
|
|
28
|
-
* TabPanel - Content panel for a tab
|
|
29
|
-
*/
|
|
30
|
-
export declare const TabPanel: FC<TabPanelProps>;
|