@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.
Files changed (104) hide show
  1. package/README.md +4 -4
  2. package/dist/components/AlertDialog/AlertDialog.cjs +1 -1
  3. package/dist/components/AlertDialog/AlertDialog.const.cjs +1 -1
  4. package/dist/components/AlertDialog/AlertDialog.const.d.ts +2 -2
  5. package/dist/components/AlertDialog/AlertDialog.const.js +4 -4
  6. package/dist/components/AlertDialog/AlertDialog.js +76 -62
  7. package/dist/components/BearLogo/BearLogo.d.ts +2 -7
  8. package/dist/components/BearLogo/BearLogo.types.d.ts +15 -0
  9. package/dist/components/BearLogo/EmberLogo.d.ts +1 -8
  10. package/dist/components/BearLogo/index.d.ts +1 -2
  11. package/dist/components/Biometric/Biometric.cjs +1 -0
  12. package/dist/components/Biometric/Biometric.d.ts +3 -0
  13. package/dist/components/Biometric/Biometric.js +123 -0
  14. package/dist/components/Biometric/Biometric.types.d.ts +35 -0
  15. package/dist/components/Biometric/BiometricIcon.cjs +1 -0
  16. package/dist/components/Biometric/BiometricIcon.d.ts +3 -0
  17. package/dist/components/Biometric/BiometricIcon.js +45 -0
  18. package/dist/components/Biometric/index.d.ts +3 -0
  19. package/dist/components/Biometric/useBiometric.cjs +1 -0
  20. package/dist/components/Biometric/useBiometric.d.ts +2 -0
  21. package/dist/components/Biometric/useBiometric.js +21 -0
  22. package/dist/components/Calendar/Calendar.cjs +1 -1
  23. package/dist/components/Calendar/Calendar.js +3 -2
  24. package/dist/components/CloseButton/CloseButton.cjs +1 -0
  25. package/dist/components/CloseButton/CloseButton.d.ts +4 -0
  26. package/dist/components/CloseButton/CloseButton.js +60 -0
  27. package/dist/components/CloseButton/CloseButton.types.d.ts +15 -0
  28. package/dist/components/CloseButton/index.d.ts +2 -0
  29. package/dist/components/DatePicker/DatePicker.cjs +1 -1
  30. package/dist/components/DatePicker/DatePicker.js +12 -11
  31. package/dist/components/DateRangePicker/DateRangePicker.cjs +1 -1
  32. package/dist/components/DateRangePicker/DateRangePicker.const.cjs +1 -1
  33. package/dist/components/DateRangePicker/DateRangePicker.const.js +12 -13
  34. package/dist/components/DateRangePicker/DateRangePicker.js +107 -81
  35. package/dist/components/Dropdown/Dropdown.cjs +1 -1
  36. package/dist/components/Dropdown/Dropdown.js +48 -44
  37. package/dist/components/Icon/icons/commerce.cjs +1 -0
  38. package/dist/components/Icon/icons/commerce.d.ts +25 -0
  39. package/dist/components/Icon/icons/commerce.js +124 -0
  40. package/dist/components/Icon/icons/device.cjs +1 -0
  41. package/dist/components/Icon/icons/device.d.ts +27 -0
  42. package/dist/components/Icon/icons/device.js +122 -0
  43. package/dist/components/Icon/icons/file.cjs +1 -0
  44. package/dist/components/Icon/icons/file.d.ts +25 -0
  45. package/dist/components/Icon/icons/file.js +120 -0
  46. package/dist/components/Icon/icons/social.cjs +1 -0
  47. package/dist/components/Icon/icons/social.d.ts +24 -0
  48. package/dist/components/Icon/icons/social.js +89 -0
  49. package/dist/components/Icon/index.cjs +1 -1
  50. package/dist/components/Icon/index.d.ts +93 -56
  51. package/dist/components/Icon/index.js +38 -26
  52. package/dist/components/Input/Input.cjs +1 -1
  53. package/dist/components/Input/Input.js +153 -101
  54. package/dist/components/Input/Input.types.d.ts +8 -2
  55. package/dist/components/Input/index.d.ts +1 -1
  56. package/dist/components/Overlay/Overlay.cjs +1 -0
  57. package/dist/components/Overlay/Overlay.d.ts +4 -0
  58. package/dist/components/Overlay/Overlay.js +38 -0
  59. package/dist/components/Overlay/Overlay.types.d.ts +23 -0
  60. package/dist/components/Overlay/index.d.ts +2 -0
  61. package/dist/components/Popover/Popover.cjs +1 -1
  62. package/dist/components/Popover/Popover.js +76 -76
  63. package/dist/components/Portal/Portal.cjs +1 -0
  64. package/dist/components/Portal/Portal.d.ts +11 -0
  65. package/dist/components/Portal/Portal.js +12 -0
  66. package/dist/components/Portal/index.d.ts +2 -0
  67. package/dist/components/Select/Select.cjs +1 -1
  68. package/dist/components/Select/Select.js +41 -38
  69. package/dist/components/Tabs/TabList.cjs +1 -0
  70. package/dist/components/Tabs/TabList.d.ts +3 -0
  71. package/dist/components/Tabs/TabList.js +69 -0
  72. package/dist/components/Tabs/TabPanel.cjs +1 -0
  73. package/dist/components/Tabs/TabPanel.d.ts +3 -0
  74. package/dist/components/Tabs/TabPanel.js +13 -0
  75. package/dist/components/Tabs/Tabs.cjs +1 -1
  76. package/dist/components/Tabs/Tabs.d.ts +2 -27
  77. package/dist/components/Tabs/Tabs.js +42 -61
  78. package/dist/components/Tabs/Tabs.types.d.ts +4 -0
  79. package/dist/components/Tabs/index.d.ts +3 -1
  80. package/dist/components/ThemeIcon/ThemeIcon.cjs +1 -0
  81. package/dist/components/ThemeIcon/ThemeIcon.d.ts +4 -0
  82. package/dist/components/ThemeIcon/ThemeIcon.js +54 -0
  83. package/dist/components/ThemeIcon/ThemeIcon.types.d.ts +22 -0
  84. package/dist/components/ThemeIcon/index.d.ts +2 -0
  85. package/dist/components/VisuallyHidden/VisuallyHidden.cjs +1 -0
  86. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +6 -0
  87. package/dist/components/VisuallyHidden/VisuallyHidden.js +22 -0
  88. package/dist/components/VisuallyHidden/index.d.ts +2 -0
  89. package/dist/components/index.cjs +1 -1
  90. package/dist/components/index.d.ts +15 -2
  91. package/dist/components/index.js +329 -312
  92. package/dist/hooks/bearStyled.cjs +1 -1
  93. package/dist/hooks/bearStyled.d.ts +31 -9
  94. package/dist/hooks/bearStyled.js +17 -12
  95. package/dist/hooks/useMediaQuery/useMediaQuery.d.ts +9 -1
  96. package/dist/hooks/useResponsive.cjs +1 -1
  97. package/dist/hooks/useResponsive.d.ts +2 -17
  98. package/dist/hooks/useResponsive.js +47 -41
  99. package/dist/index.cjs +1 -1
  100. package/dist/index.js +408 -391
  101. package/dist/styles/_effects.css +9 -0
  102. package/dist/styles.css +1 -1
  103. package/dist/types/theme.types.d.ts +1 -0
  104. package/package.json +1 -1
@@ -1,93 +1,93 @@
1
- import { jsxs as c, jsx as m } from "react/jsx-runtime";
2
- import { useState as I, useRef as p, useCallback as T, useEffect as h } from "react";
3
- import { cn as s } from "../../utils/cn.js";
4
- const P = ({
5
- children: v,
6
- content: y,
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: o = "click",
9
- open: i,
10
- onOpenChange: b,
11
- className: x,
12
- contentClassName: k,
13
- arrow: g = !0,
14
- closeOnClickOutside: f = !0,
15
- closeOnEscape: d = !0,
16
- offset: u = 8
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 [w, E] = I(!1), l = p(null), z = p(null), t = i !== void 0 ? i : w, r = T((e) => {
19
- E(e), b == null || b(e);
20
- }, [b]);
21
- h(() => {
22
- if (!f) return;
23
- const e = (n) => {
24
- l.current && !l.current.contains(n.target) && r(!1);
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 t && document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
27
- }, [t, f, r]), h(() => {
28
- if (!d) return;
29
- const e = (n) => {
30
- n.key === "Escape" && r(!1);
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 t && document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
33
- }, [t, d, r]);
34
- const L = () => {
35
- o === "click" && r(!t);
36
- }, M = () => {
37
- o === "hover" && r(!0);
38
- }, N = () => {
39
- o === "hover" && r(!1);
40
- }, R = {
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
- }, j = a.split("-")[0];
59
- return /* @__PURE__ */ c(
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: l,
63
- className: s("bear-relative bear-inline-block", x),
64
- onMouseEnter: M,
65
- onMouseLeave: N,
80
+ ref: f,
81
+ className: c("bear-relative bear-inline-block", o),
82
+ onMouseEnter: H,
83
+ onMouseLeave: X,
66
84
  children: [
67
- /* @__PURE__ */ m("div", { onClick: L, className: "bear-cursor-pointer", children: v }),
68
- t && /* @__PURE__ */ c(
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
- P as Popover
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
+ };
@@ -0,0 +1,2 @@
1
+ export { Portal, default } from './Portal';
2
+ export type { PortalProps } from './Portal';
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),n=require("react"),a=require("../../utils/cn.cjs"),j=require("../../hooks/useClickOutside.cjs");require("../../context/BearProvider.cjs");require("../../hooks/useBearComponent/useBearComponent.cjs");const f=require("../Icon/index.cjs"),N={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"},p=({options:i,value:t,onChange:s,placeholder:g="Select an option",label:u,error:l,disabled:c=!1,size:y="md",fullWidth:h=!1,className:m})=>{const[o,d]=n.useState(!1),x=n.useRef(null),k=!!l,b=i.find(e=>e.value===t),w=n.useCallback(()=>d(!1),[]);j.useClickOutside(x,w);const v=e=>{s==null||s(e),d(!1)};return r.jsxs("div",{ref:x,className:a.cn("bear-relative bear-flex bear-flex-col bear-gap-1.5",h&&"bear-w-full"),children:[u&&r.jsx("label",{className:"bear-text-sm bear-font-medium bear-text-gray-700 dark:bear-text-gray-300",children:u}),r.jsxs("button",{type:"button",disabled:c,onClick:()=>!c&&d(!o),className:a.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","bear-bg-white bear-text-gray-900 bear-border-gray-300","focus:bear-ring-2 focus:bear-ring-offset-2 focus:bear-ring-offset-white","dark:bear-bg-gray-800 dark:bear-text-white dark:bear-border-gray-600 dark:focus:bear-ring-offset-gray-900",k?"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",c&&"bear-opacity-50 bear-cursor-not-allowed",N[y],m),children:[r.jsx("span",{className:b?"bear-text-gray-900 dark:bear-text-white":"bear-text-gray-500 dark:bear-text-gray-500",children:(b==null?void 0:b.label)||g}),r.jsx(f.ChevronDownIcon,{className:a.cn("bear-w-4 bear-h-4 bear-text-gray-500 dark:bear-text-gray-400 bear-transition-transform",o&&"bear-rotate-180")})]}),o&&r.jsx("div",{className:a.cn("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","bear-bg-white bear-border-gray-200 dark:bear-bg-gray-800 dark:bear-border-gray-600"),children:r.jsx("div",{className:"bear-max-h-60 bear-overflow-y-auto",children:i.map(e=>r.jsxs("button",{type:"button",disabled:e.disabled,onClick:()=>!e.disabled&&v(e.value),className:a.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-text-gray-500 bear-cursor-not-allowed":"bear-text-gray-700 dark:bear-text-gray-300 hover:bear-bg-gray-100 hover:bear-text-gray-900 dark:hover:bear-bg-gray-700 dark:hover:bear-text-white",e.value===t&&"bear-bg-bear-100 bear-text-bear-700 dark:bear-bg-bear-600/20 dark:bear-text-bear-300"),children:[e.label,e.value===t&&r.jsx(f.CheckIcon,{className:"bear-w-4 bear-h-4 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=p;
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 p, useRef as v, useCallback as N } from "react";
3
- import { cn as a } from "../../utils/cn.js";
4
- import { useClickOutside as j } from "../../hooks/useClickOutside.js";
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 S, CheckIcon as C } from "../Icon/index.js";
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: t,
15
- onChange: s,
14
+ value: a,
15
+ onChange: l,
16
16
  placeholder: x = "Select an option",
17
17
  label: f,
18
- error: l,
18
+ error: s,
19
19
  disabled: o = !1,
20
- size: g = "md",
21
- fullWidth: m = !1,
20
+ size: v = "md",
21
+ fullWidth: h = !1,
22
22
  className: y
23
23
  }) => {
24
- const [d, c] = p(!1), u = v(null), h = !!l, b = i.find((e) => e.value === t), k = N(() => c(!1), []);
25
- j(u, k);
26
- const w = (e) => {
27
- s == null || s(e), c(!1);
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: a("bear-relative bear-flex bear-flex-col bear-gap-1.5", m && "bear-w-full"),
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 bear-text-gray-700 dark:bear-text-gray-300", children: f }),
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: a(
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-bg-white bear-text-gray-900 bear-border-gray-300",
46
- "focus:bear-ring-2 focus:bear-ring-offset-2 focus:bear-ring-offset-white",
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[g],
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", { className: b ? "bear-text-gray-900 dark:bear-text-white" : "bear-text-gray-500 dark:bear-text-gray-500", children: (b == null ? void 0 : b.label) || x }),
57
+ /* @__PURE__ */ r("span", { children: (b == null ? void 0 : b.label) || x }),
55
58
  /* @__PURE__ */ r(
56
- S,
59
+ j,
57
60
  {
58
- className: a(
59
- "bear-w-4 bear-h-4 bear-text-gray-500 dark:bear-text-gray-400 bear-transition-transform",
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: a(
71
- "bear-absolute bear-z-50 bear-w-full bear-mt-1",
72
- "bear-rounded-lg bear-border bear-shadow-lg bear-overflow-hidden bear-top-full",
73
- "bear-bg-white bear-border-gray-200 dark:bear-bg-gray-800 dark:bear-border-gray-600"
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 && w(e.value),
81
- className: a(
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 ? "bear-text-gray-500 bear-cursor-not-allowed" : "bear-text-gray-700 dark:bear-text-gray-300 hover:bear-bg-gray-100 hover:bear-text-gray-900 dark:hover:bear-bg-gray-700 dark:hover:bear-text-white",
85
- e.value === t && "bear-bg-bear-100 bear-text-bear-700 dark:bear-bg-bear-600/20 dark:bear-text-bear-300"
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 === t && /* @__PURE__ */ r(C, { className: "bear-w-4 bear-h-4 bear-text-bear-600 dark:bear-text-bear-400" })
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
- l && /* @__PURE__ */ r("p", { className: "bear-text-sm bear-text-red-500", children: l })
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,3 @@
1
+ import { FC } from 'react';
2
+ import { TabListProps } from './Tabs.types';
3
+ export declare const TabList: FC<TabListProps>;
@@ -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,3 @@
1
+ import { FC } from 'react';
2
+ import { TabPanelProps } from './Tabs.types';
3
+ export declare const TabPanel: FC<TabPanelProps>;
@@ -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 o=require("react/jsx-runtime"),i=require("react"),n=require("../../utils/cn.cjs"),d=i.createContext(null),v=({children:a,value:t,defaultTab:r,variant:e="line",onChange:b,className:l,testId:x})=>{const[T,s]=i.useState(r),c=t!==void 0,g=c?t:T,y=u=>{c||s(u),b==null||b(u)};return o.jsx(d.Provider,{value:{activeTab:g,setActiveTab:y,variant:e},children:o.jsx("div",{className:n.cn("Bear-Tabs",l),"data-testid":x,children:a})})},h=({children:a,className:t})=>{const r=i.useContext(d);if(!r)throw new Error("TabList must be used within Tabs");const{variant:e}=r;return o.jsx("div",{role:"tablist",className:n.cn("Bear-Tabs__list",`Bear-Tabs__list--${e}`,"bear-flex bear-gap-1",e==="line"&&"bear-border-b bear-border-gray-200 dark:bear-border-gray-700",e==="pills"&&"bear-bg-gray-100 dark:bear-bg-gray-800 bear-p-1 bear-rounded-lg",e==="enclosed"&&"bear-border-b bear-border-gray-200 dark:bear-border-gray-700",t),children:a})},p=({id:a,children:t,disabled:r=!1,icon:e})=>{const b=i.useContext(d);if(!b)throw new Error("Tab must be used within Tabs");const{activeTab:l,setActiveTab:x,variant:T}=b,s=l===a,c="bear-flex bear-items-center bear-gap-2 bear-px-4 bear-py-2 bear-text-sm bear-font-medium bear-transition-colors",g={line:n.cn("bear-border-b-2 bear--mb-px",s?"bear-border-pink-500 bear-text-pink-600 dark:bear-text-pink-400":"bear-border-transparent bear-text-gray-600 dark:bear-text-gray-400 hover:bear-text-gray-900 dark:hover:bear-text-white hover:bear-border-gray-300"),pills:n.cn("bear-rounded-md",s?"bear-bg-white dark:bear-bg-gray-700 bear-text-gray-900 dark:bear-text-white bear-shadow-sm":"bear-text-gray-600 dark:bear-text-gray-400 hover:bear-text-gray-900 dark:hover:bear-text-white"),enclosed:n.cn("bear-rounded-t-lg bear-border bear-border-transparent",s?"bear-bg-white dark:bear-bg-gray-900 bear-border-gray-200 dark:bear-border-gray-700 bear-border-b-white dark:bear-border-b-gray-900 bear--mb-px bear-text-gray-900 dark:bear-text-white":"bear-text-gray-600 dark:bear-text-gray-400 hover:bear-text-gray-900 dark:hover:bear-text-white")};return o.jsxs("button",{role:"tab","aria-selected":s,disabled:r,onClick:()=>!r&&x(a),className:n.cn("Bear-Tabs__tab",s&&"Bear-Tabs__tab--active",c,g[T],r&&"Bear-Tabs__tab--disabled bear-opacity-50 bear-cursor-not-allowed"),children:[e&&o.jsx("span",{className:"Bear-Tabs__tab-icon",children:e}),o.jsx("span",{className:"Bear-Tabs__tab-label",children:t})]})},k=({tabId:a,children:t,className:r})=>{const e=i.useContext(d);if(!e)throw new Error("TabPanel must be used within Tabs");const{activeTab:b}=e;return b!==a?null:o.jsx("div",{role:"tabpanel",className:n.cn("Bear-Tabs__panel bear-py-4",r),children:t})};exports.Tab=p;exports.TabList=h;exports.TabPanel=k;exports.Tabs=v;
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 { TabsProps, TabListProps, TabProps, TabPanelProps } from './Tabs.types';
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>;