@forgedevstack/bear 1.0.0 → 1.0.2

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 (111) hide show
  1. package/dist/components/Alert/Alert.cjs +1 -1
  2. package/dist/components/Alert/Alert.js +38 -38
  3. package/dist/components/AppBar/AppBar.cjs +1 -1
  4. package/dist/components/AppBar/AppBar.js +15 -15
  5. package/dist/components/Badge/Badge.cjs +1 -1
  6. package/dist/components/Badge/Badge.constants.cjs +1 -0
  7. package/dist/components/Badge/Badge.constants.d.ts +6 -0
  8. package/dist/components/Badge/Badge.constants.js +34 -0
  9. package/dist/components/Badge/Badge.js +27 -52
  10. package/dist/components/Button/Button.cjs +1 -57
  11. package/dist/components/Button/Button.constants.cjs +57 -0
  12. package/dist/components/Button/Button.constants.d.ts +3 -0
  13. package/dist/components/Button/Button.constants.js +77 -0
  14. package/dist/components/Button/Button.js +55 -119
  15. package/dist/components/Button/Button.types.d.ts +6 -1
  16. package/dist/components/ButtonGroup/ButtonGroup.cjs +1 -1
  17. package/dist/components/ButtonGroup/ButtonGroup.js +17 -17
  18. package/dist/components/Calendar/Calendar.cjs +1 -0
  19. package/dist/components/Calendar/Calendar.d.ts +3 -0
  20. package/dist/components/Calendar/Calendar.js +203 -0
  21. package/dist/components/Calendar/Calendar.types.d.ts +124 -0
  22. package/dist/components/Calendar/index.d.ts +2 -0
  23. package/dist/components/Card/Card.cjs +1 -1
  24. package/dist/components/Card/Card.js +65 -65
  25. package/dist/components/Checkbox/Checkbox.cjs +1 -1
  26. package/dist/components/Checkbox/Checkbox.js +48 -48
  27. package/dist/components/Container/Container.cjs +1 -1
  28. package/dist/components/Container/Container.js +15 -15
  29. package/dist/components/DatePicker/DatePicker.cjs +1 -1
  30. package/dist/components/DatePicker/DatePicker.js +77 -85
  31. package/dist/components/DatePicker/DatePicker.types.d.ts +9 -0
  32. package/dist/components/DatePicker/DatePicker.utils.cjs +1 -0
  33. package/dist/components/DatePicker/DatePicker.utils.d.ts +1 -0
  34. package/dist/components/DatePicker/DatePicker.utils.js +9 -0
  35. package/dist/components/DateTimePicker/DateTimePicker.cjs +1 -0
  36. package/dist/components/DateTimePicker/DateTimePicker.d.ts +3 -0
  37. package/dist/components/DateTimePicker/DateTimePicker.js +178 -0
  38. package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +26 -0
  39. package/dist/components/DateTimePicker/DateTimePicker.utils.cjs +1 -0
  40. package/dist/components/DateTimePicker/DateTimePicker.utils.d.ts +2 -0
  41. package/dist/components/DateTimePicker/DateTimePicker.utils.js +16 -0
  42. package/dist/components/DateTimePicker/index.d.ts +2 -0
  43. package/dist/components/Divider/Divider.cjs +1 -1
  44. package/dist/components/Divider/Divider.js +29 -29
  45. package/dist/components/Dropdown/Dropdown.cjs +1 -1
  46. package/dist/components/Dropdown/Dropdown.js +70 -70
  47. package/dist/components/Fab/Fab.cjs +1 -1
  48. package/dist/components/Fab/Fab.js +42 -42
  49. package/dist/components/FileUpload/FileUpload.cjs +1 -1
  50. package/dist/components/FileUpload/FileUpload.js +46 -49
  51. package/dist/components/FileUpload/FileUpload.utils.cjs +1 -0
  52. package/dist/components/FileUpload/FileUpload.utils.d.ts +1 -0
  53. package/dist/components/FileUpload/FileUpload.utils.js +9 -0
  54. package/dist/components/Flex/Flex.cjs +1 -1
  55. package/dist/components/Flex/Flex.js +58 -58
  56. package/dist/components/Grid/Grid.cjs +1 -1
  57. package/dist/components/Grid/Grid.js +60 -60
  58. package/dist/components/Link/Link.cjs +1 -1
  59. package/dist/components/Link/Link.js +47 -47
  60. package/dist/components/List/List.cjs +1 -1
  61. package/dist/components/List/List.js +117 -117
  62. package/dist/components/Menu/Menu.cjs +1 -1
  63. package/dist/components/Menu/Menu.js +58 -58
  64. package/dist/components/Paper/Paper.cjs +1 -1
  65. package/dist/components/Paper/Paper.js +36 -36
  66. package/dist/components/Radio/Radio.cjs +1 -1
  67. package/dist/components/Radio/Radio.js +79 -79
  68. package/dist/components/Rating/Rating.cjs +1 -1
  69. package/dist/components/Rating/Rating.js +37 -37
  70. package/dist/components/SpeedDial/SpeedDial.cjs +1 -1
  71. package/dist/components/SpeedDial/SpeedDial.js +40 -40
  72. package/dist/components/Spinner/Spinner.cjs +1 -1
  73. package/dist/components/Spinner/Spinner.js +24 -24
  74. package/dist/components/TimePicker/TimePicker.cjs +1 -1
  75. package/dist/components/TimePicker/TimePicker.constants.cjs +1 -0
  76. package/dist/components/TimePicker/TimePicker.constants.d.ts +5 -0
  77. package/dist/components/TimePicker/TimePicker.constants.js +16 -0
  78. package/dist/components/TimePicker/TimePicker.js +91 -70
  79. package/dist/components/TimePicker/TimePicker.types.d.ts +5 -2
  80. package/dist/components/TimePicker/TimePicker.utils.cjs +1 -0
  81. package/dist/components/TimePicker/TimePicker.utils.d.ts +1 -0
  82. package/dist/components/TimePicker/TimePicker.utils.js +7 -0
  83. package/dist/components/TransferList/TransferList.cjs +1 -1
  84. package/dist/components/TransferList/TransferList.js +74 -74
  85. package/dist/components/Typography/Typography.cjs +1 -1
  86. package/dist/components/Typography/Typography.js +52 -52
  87. package/dist/components/index.cjs +1 -1
  88. package/dist/components/index.d.ts +4 -0
  89. package/dist/components/index.js +67 -63
  90. package/dist/context/BearProvider.cjs +1 -1
  91. package/dist/context/BearProvider.d.ts +6 -1
  92. package/dist/context/BearProvider.js +42 -38
  93. package/dist/context/index.cjs +1 -1
  94. package/dist/context/index.d.ts +1 -1
  95. package/dist/context/index.js +6 -5
  96. package/dist/hooks/bearStyled.cjs +1 -0
  97. package/dist/hooks/bearStyled.d.ts +17 -0
  98. package/dist/hooks/bearStyled.js +17 -0
  99. package/dist/hooks/index.cjs +1 -1
  100. package/dist/hooks/index.d.ts +2 -0
  101. package/dist/hooks/index.js +14 -10
  102. package/dist/hooks/useBearStyles.cjs +1 -0
  103. package/dist/hooks/useBearStyles.d.ts +11 -0
  104. package/dist/hooks/useBearStyles.js +14 -0
  105. package/dist/index.cjs +1 -1
  106. package/dist/index.js +99 -90
  107. package/dist/styles.css +1 -0
  108. package/dist/types/bis.types.d.ts +9 -0
  109. package/dist/types/component.types.d.ts +3 -0
  110. package/dist/types/index.d.ts +1 -0
  111. package/package.json +2 -2
@@ -1,125 +1,61 @@
1
- import { jsxs as o, jsx as r } from "react/jsx-runtime";
2
- import { forwardRef as u } from "react";
3
- import { cn as t } from "../../utils/cn.js";
4
- import { Spinner as x } from "../Spinner/Spinner.js";
5
- const p = {
6
- xs: "ember-px-2 ember-py-1 ember-text-xs ember-gap-1",
7
- sm: "ember-px-3 ember-py-1.5 ember-text-sm ember-gap-1.5",
8
- md: "ember-px-4 ember-py-2 ember-text-sm ember-gap-2",
9
- lg: "ember-px-5 ember-py-2.5 ember-text-base ember-gap-2",
10
- xl: "ember-px-6 ember-py-3 ember-text-lg ember-gap-2.5"
11
- }, h = {
12
- primary: `
13
- ember-bg-ember-500 ember-text-white
14
- hover:ember-bg-ember-600
15
- focus:ember-ring-2 focus:ember-ring-ember-500/50 focus:ember-ring-offset-2
16
- active:ember-bg-ember-700
17
- disabled:ember-bg-ember-300 disabled:ember-cursor-not-allowed
18
- `,
19
- secondary: `
20
- ember-bg-forge-500 ember-text-white
21
- hover:ember-bg-forge-600
22
- focus:ember-ring-2 focus:ember-ring-forge-500/50 focus:ember-ring-offset-2
23
- active:ember-bg-forge-700
24
- disabled:ember-bg-forge-300 disabled:ember-cursor-not-allowed
25
- `,
26
- success: `
27
- ember-bg-green-500 ember-text-white
28
- hover:ember-bg-green-600
29
- focus:ember-ring-2 focus:ember-ring-green-500/50 focus:ember-ring-offset-2
30
- active:ember-bg-green-700
31
- disabled:ember-bg-green-300 disabled:ember-cursor-not-allowed
32
- `,
33
- warning: `
34
- ember-bg-yellow-500 ember-text-white
35
- hover:ember-bg-yellow-600
36
- focus:ember-ring-2 focus:ember-ring-yellow-500/50 focus:ember-ring-offset-2
37
- active:ember-bg-yellow-700
38
- disabled:ember-bg-yellow-300 disabled:ember-cursor-not-allowed
39
- `,
40
- danger: `
41
- ember-bg-red-500 ember-text-white
42
- hover:ember-bg-red-600
43
- focus:ember-ring-2 focus:ember-ring-red-500/50 focus:ember-ring-offset-2
44
- active:ember-bg-red-700
45
- disabled:ember-bg-red-300 disabled:ember-cursor-not-allowed
46
- `,
47
- info: `
48
- ember-bg-blue-500 ember-text-white
49
- hover:ember-bg-blue-600
50
- focus:ember-ring-2 focus:ember-ring-blue-500/50 focus:ember-ring-offset-2
51
- active:ember-bg-blue-700
52
- disabled:ember-bg-blue-300 disabled:ember-cursor-not-allowed
53
- `,
54
- ghost: `
55
- ember-bg-transparent ember-text-gray-700
56
- hover:ember-bg-gray-100
57
- focus:ember-ring-2 focus:ember-ring-gray-500/50
58
- active:ember-bg-gray-200
59
- disabled:ember-text-gray-400 disabled:ember-cursor-not-allowed
60
- dark:ember-text-gray-300 dark:hover:ember-bg-gray-800 dark:active:ember-bg-gray-700
61
- `,
62
- outline: `
63
- ember-bg-transparent ember-text-ember-500 ember-border ember-border-ember-500
64
- hover:ember-bg-ember-50
65
- focus:ember-ring-2 focus:ember-ring-ember-500/50
66
- active:ember-bg-ember-100
67
- disabled:ember-text-ember-300 disabled:ember-border-ember-300 disabled:ember-cursor-not-allowed
68
- dark:hover:ember-bg-ember-950 dark:active:ember-bg-ember-900
69
- `,
70
- error: `
71
- ember-bg-red-500 ember-text-white
72
- hover:ember-bg-red-600
73
- focus:ember-ring-2 focus:ember-ring-red-500/50 focus:ember-ring-offset-2
74
- active:ember-bg-red-700
75
- disabled:ember-bg-red-300 disabled:ember-cursor-not-allowed
76
- `
77
- }, w = u(
1
+ import { jsxs as n, jsx as r } from "react/jsx-runtime";
2
+ import { forwardRef as N } from "react";
3
+ import { cn as l } from "../../utils/cn.js";
4
+ import { Spinner as j } from "../Spinner/Spinner.js";
5
+ import { useBearStyles as k } from "../../hooks/useBearStyles.js";
6
+ import { variantClasses as v, sizeClasses as w } from "./Button.constants.js";
7
+ const B = N(
78
8
  ({
79
- variant: i = "primary",
80
- size: b = "md",
9
+ variant: m = "primary",
10
+ size: a = "md",
81
11
  loading: e = !1,
82
- fullWidth: a = !1,
83
- leftIcon: m,
84
- rightIcon: s,
85
- disabled: g,
86
- className: n,
87
- children: l,
12
+ fullWidth: b = !1,
13
+ leftIcon: s,
14
+ rightIcon: i,
15
+ disabled: o,
16
+ className: c,
17
+ children: f,
88
18
  testId: d,
89
- ...c
90
- }, f) => /* @__PURE__ */ o(
91
- "button",
92
- {
93
- ref: f,
94
- disabled: g || e,
95
- className: t(
96
- // Base styles
97
- "ember-inline-flex ember-items-center ember-justify-center ember-font-medium ember-rounded-lg ember-transition-all ember-duration-200 ember-outline-none",
98
- // Size
99
- p[b],
100
- // Variant
101
- h[i],
102
- // Full width
103
- a && "ember-w-full",
104
- // Loading
105
- e && "ember-cursor-wait",
106
- // Custom className
107
- n
108
- ),
109
- "data-testid": d,
110
- ...c,
111
- children: [
112
- e && /* @__PURE__ */ r(x, { size: b === "xs" ? "xs" : "sm", className: "ember-absolute" }),
113
- /* @__PURE__ */ o("span", { className: t("ember-inline-flex ember-items-center ember-gap-inherit", e && "ember-invisible"), children: [
114
- m && /* @__PURE__ */ r("span", { className: "ember-inline-flex ember-shrink-0", children: m }),
115
- l,
116
- s && /* @__PURE__ */ r("span", { className: "ember-inline-flex ember-shrink-0", children: s })
117
- ] })
118
- ]
119
- }
120
- )
19
+ bis: p,
20
+ style: u,
21
+ ...x
22
+ }, h) => {
23
+ const y = o || e, t = k(p, u);
24
+ return /* @__PURE__ */ n(
25
+ "button",
26
+ {
27
+ ref: h,
28
+ disabled: y,
29
+ style: Object.keys(t).length ? t : void 0,
30
+ className: l(
31
+ // Base styles
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
+ // Size
34
+ w[a],
35
+ // Variant
36
+ v[m],
37
+ // Full width
38
+ b && "bear-w-full",
39
+ // Loading
40
+ e && "bear-cursor-wait",
41
+ // Custom className
42
+ c
43
+ ),
44
+ "data-testid": d,
45
+ ...x,
46
+ children: [
47
+ e && /* @__PURE__ */ r(j, { size: a === "xs" ? "xs" : "sm", className: "bear-absolute" }),
48
+ /* @__PURE__ */ n("span", { className: l("bear-inline-flex bear-items-center bear-gap-inherit", e && "bear-invisible"), children: [
49
+ s && /* @__PURE__ */ r("span", { className: "bear-inline-flex bear-shrink-0", children: s }),
50
+ f,
51
+ i && /* @__PURE__ */ r("span", { className: "bear-inline-flex bear-shrink-0", children: i })
52
+ ] })
53
+ ]
54
+ }
55
+ );
56
+ }
121
57
  );
122
- w.displayName = "Button";
58
+ B.displayName = "Button";
123
59
  export {
124
- w as Button
60
+ B as Button
125
61
  };
@@ -1,6 +1,7 @@
1
1
  import { ButtonHTMLAttributes, ReactNode } from 'react';
2
2
  import { EmberSize, EmberVariant } from '../../types';
3
- export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
3
+ import { BisProp } from '../../types/bis.types';
4
+ export interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'style'> {
4
5
  /** Button variant style */
5
6
  variant?: EmberVariant;
6
7
  /** Button size */
@@ -15,4 +16,8 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
15
16
  rightIcon?: ReactNode;
16
17
  /** Test ID for testing */
17
18
  testId?: string;
19
+ /** Bear Inner Style - sx-like overrides */
20
+ bis?: BisProp;
21
+ /** Inline styles */
22
+ style?: React.CSSProperties;
18
23
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("react/jsx-runtime"),l=require("react"),u=require("../../utils/cn.cjs"),q=({children:c,size:b="md",variant:f="primary",orientation:p="horizontal",disabled:x=!1,fullWidth:i=!1,className:g,testId:y,...C})=>{const o=p==="horizontal",a=l.Children.toArray(c),h=a.map((r,d)=>{if(!l.isValidElement(r))return r;const n=d===0,s=d===a.length-1,m=!n&&!s;let e="";o?n?e="ember-rounded-r-none":s?e="ember-rounded-l-none":m&&(e="ember-rounded-none"):n?e="ember-rounded-b-none":s?e="ember-rounded-t-none":m&&(e="ember-rounded-none");let t="";return o&&!n?t="ember--ml-px":!o&&!n&&(t="ember--mt-px"),l.cloneElement(r,{size:b,variant:f,disabled:x||r.props.disabled,className:u.cn(e,t,i&&"ember-flex-1",r.props.className)})});return j.jsx("div",{role:"group",className:u.cn("ember-inline-flex",o?"ember-flex-row":"ember-flex-col",i&&"ember-w-full",g),"data-testid":y,...C,children:h})};exports.ButtonGroup=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("react/jsx-runtime"),t=require("react"),c=require("../../utils/cn.cjs"),q=({children:b,size:f="md",variant:m="primary",orientation:p="horizontal",disabled:x=!1,fullWidth:l=!1,className:g,testId:y,...C})=>{const o=p==="horizontal",i=t.Children.toArray(b),h=i.map((r,d)=>{if(!t.isValidElement(r))return r;const n=d===0,s=d===i.length-1,u=!n&&!s;let e="";o?n?e="bear-rounded-r-none":s?e="bear-rounded-l-none":u&&(e="bear-rounded-none"):n?e="bear-rounded-b-none":s?e="bear-rounded-t-none":u&&(e="bear-rounded-none");let a="";return o&&!n?a="bear--ml-px":!o&&!n&&(a="bear--mt-px"),t.cloneElement(r,{size:f,variant:m,disabled:x||r.props.disabled,className:c.cn(e,a,l&&"bear-flex-1",r.props.className)})});return j.jsx("div",{role:"group",className:c.cn("bear-inline-flex",o?"bear-flex-row":"bear-flex-col",l&&"bear-w-full",g),"data-testid":y,...C,children:h})};exports.ButtonGroup=q;
@@ -1,31 +1,31 @@
1
1
  import { jsx as y } from "react/jsx-runtime";
2
2
  import { Children as z, isValidElement as N, cloneElement as w } from "react";
3
- import { cn as d } from "../../utils/cn.js";
3
+ import { cn as f } from "../../utils/cn.js";
4
4
  const v = ({
5
- children: f,
6
- size: b = "md",
5
+ children: b,
6
+ size: m = "md",
7
7
  variant: p = "primary",
8
8
  orientation: u = "horizontal",
9
9
  disabled: c = !1,
10
- fullWidth: i = !1,
10
+ fullWidth: l = !1,
11
11
  className: x,
12
12
  testId: C,
13
13
  ...g
14
14
  }) => {
15
- const o = u === "horizontal", t = z.toArray(f), h = t.map((r, m) => {
15
+ const o = u === "horizontal", i = z.toArray(b), h = i.map((r, t) => {
16
16
  if (!N(r)) return r;
17
- const n = m === 0, s = m === t.length - 1, a = !n && !s;
17
+ const n = t === 0, a = t === i.length - 1, d = !n && !a;
18
18
  let e = "";
19
- o ? n ? e = "ember-rounded-r-none" : s ? e = "ember-rounded-l-none" : a && (e = "ember-rounded-none") : n ? e = "ember-rounded-b-none" : s ? e = "ember-rounded-t-none" : a && (e = "ember-rounded-none");
20
- let l = "";
21
- return o && !n ? l = "ember--ml-px" : !o && !n && (l = "ember--mt-px"), w(r, {
22
- size: b,
19
+ o ? n ? e = "bear-rounded-r-none" : a ? e = "bear-rounded-l-none" : d && (e = "bear-rounded-none") : n ? e = "bear-rounded-b-none" : a ? e = "bear-rounded-t-none" : d && (e = "bear-rounded-none");
20
+ let s = "";
21
+ return o && !n ? s = "bear--ml-px" : !o && !n && (s = "bear--mt-px"), w(r, {
22
+ size: m,
23
23
  variant: p,
24
24
  disabled: c || r.props.disabled,
25
- className: d(
25
+ className: f(
26
26
  e,
27
- l,
28
- i && "ember-flex-1",
27
+ s,
28
+ l && "bear-flex-1",
29
29
  r.props.className
30
30
  )
31
31
  });
@@ -34,10 +34,10 @@ const v = ({
34
34
  "div",
35
35
  {
36
36
  role: "group",
37
- className: d(
38
- "ember-inline-flex",
39
- o ? "ember-flex-row" : "ember-flex-col",
40
- i && "ember-w-full",
37
+ className: f(
38
+ "bear-inline-flex",
39
+ o ? "bear-flex-row" : "bear-flex-col",
40
+ l && "bear-w-full",
41
41
  x
42
42
  ),
43
43
  "data-testid": C,
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),u=require("react"),A=require("../../utils/cn.cjs"),le=require("../../hooks/useBearStyles.cjs"),de=["SUN","MON","TUE","WED","THU","FRI","SAT"],ue=["January","February","March","April","May","June","July","August","September","October","November","December"],_=(b,n)=>new Date(b,n+1,0).getDate(),xe=(b,n)=>new Date(b,n,1).getDay(),M=(b,n)=>!b||!n?!1:b.getDate()===n.getDate()&&b.getMonth()===n.getMonth()&&b.getFullYear()===n.getFullYear();function me(b,n,N){let d=(xe(b,n)-N+7)%7;const v=_(b,n),y=n===0?11:n-1,f=n===0?b-1:b,p=_(f,y),i=[],w=42;for(let e=0;e<w;e++)if(e<d){const m=p-d+e+1;i.push({date:new Date(f,y,m),isCurrentMonth:!1})}else if(e<d+v){const m=e-d+1;i.push({date:new Date(b,n,m),isCurrentMonth:!0})}else{const m=e-d-v+1,h=n===11?0:n+1,D=n===11?b+1:b;i.push({date:new Date(D,h,m),isCurrentMonth:!1})}return i}const he=({viewDate:b,value:n=null,onSelect:N,onViewChange:s,minDate:d,maxDate:v,disabledDates:y=[],highlightedDates:f=[],weekdayLabels:p=de,firstDayOfWeek:i=0,showWeekNumbers:w=!1,slots:e={},clearable:m=!0,onClear:h,showTodayButton:D=!0,onToday:g,bis:K,style:L,inline:O=!1,className:Q})=>{const o=b.getFullYear(),E=le.useBearStyles(K,L),l=b.getMonth(),X=u.useMemo(()=>new Date,[]),P=u.useCallback(()=>{s==null||s(new Date(o-1,l,1))},[o,l,s]),H=u.useCallback(()=>{s==null||s(new Date(o,l-1,1))},[o,l,s]),U=u.useCallback(()=>{s==null||s(new Date(o,l+1,1))},[o,l,s]),S=u.useCallback(()=>{s==null||s(new Date(o+1,l,1))},[o,l,s]),Y=H,C=U,Z={onPrevYear:P,onPrevMonth:H,onNextMonth:U,onNextYear:S},$=u.useCallback(a=>d&&a<d||v&&a>v?!0:y.some(r=>M(r,a)),[d,v,y]),V=u.useCallback(a=>f.some(r=>M(r,a)),[f]),ee=u.useMemo(()=>me(o,l,i),[o,l,i]),q=u.useMemo(()=>i>0?[...p.slice(i),...p.slice(0,i)]:p,[p,i]),F=ue[l],B=n!=null,re=O?"bear-block bear-w-full bear-bg-white bear-rounded-xl bear-shadow-none bear-border bear-border-zinc-200 bear-p-4 bear-text-zinc-900":"bear-absolute bear-z-50 bear-mt-2 bear-bg-white bear-rounded-xl bear-shadow-xl bear-border bear-border-zinc-200 bear-p-4 bear-w-80 bear-text-zinc-900",te=()=>{if(e.header)return e.header({month:F,year:o,onPrev:Y,onNext:C,nav:Z});const a=e.navPrevYear,r=e.navPrev,c=e.navNext,x=e.navNextYear,j=e.headerLabel;return t.jsxs("div",{className:"bear-flex bear-items-center bear-justify-between bear-gap-1 bear-mb-4",children:[t.jsxs("div",{className:"bear-flex bear-items-center bear-gap-0.5",children:[a?a({onClick:P}):t.jsx("button",{type:"button",onClick:P,className:"bear-p-1.5 bear-rounded bear-text-zinc-500 hover:bear-bg-zinc-100 bear-dark:hover:bear-bg-zinc-800 bear-transition-colors bear-font-medium","aria-label":"Previous year",children:"‹‹"}),r?r({onClick:Y}):t.jsx("button",{type:"button",onClick:Y,className:"bear-p-1.5 bear-rounded bear-text-zinc-500 hover:bear-bg-zinc-100 bear-dark:hover:bear-bg-zinc-800 bear-transition-colors","aria-label":"Previous month",children:"‹"})]}),j?j({month:F,year:o}):t.jsxs("span",{className:"bear-font-semibold bear-text-sm bear-select-none",children:[F," ",o]}),t.jsxs("div",{className:"bear-flex bear-items-center bear-gap-0.5",children:[c?c({onClick:C}):t.jsx("button",{type:"button",onClick:C,className:"bear-p-1.5 bear-rounded bear-text-zinc-500 hover:bear-bg-zinc-100 bear-dark:hover:bear-bg-zinc-800 bear-transition-colors","aria-label":"Next month",children:"›"}),x?x({onClick:S}):t.jsx("button",{type:"button",onClick:S,className:"bear-p-1.5 bear-rounded bear-text-zinc-500 hover:bear-bg-zinc-100 bear-dark:hover:bear-bg-zinc-800 bear-transition-colors bear-font-medium","aria-label":"Next year",children:"››"})]})]})},ae=()=>{if(e.weekdays)return e.weekdays({days:q});const a=e.weekday;return t.jsx("div",{className:"bear-grid bear-grid-cols-7 bear-gap-1 bear-mb-2",children:q.map(r=>a?t.jsx("div",{children:a({label:r})},r):t.jsx("div",{className:A.cn("bear-text-center bear-text-xs bear-font-medium bear-uppercase",(r==="SUN"||r==="SAT"||r==="Sun"||r==="Sat")&&"bear-text-red-500"),children:r},r))})},ne=(a,r)=>{const{date:c,isCurrentMonth:x}=a,j=c.getDate(),J=c.getDay(),oe=J===0||J===6,k=M(n,c),T=M(X,c),z=$(c),R=V(c),W=()=>{z||N==null||N(c)},ie={date:c,day:j,isCurrentMonth:x,isSelected:k,isToday:T,isDisabled:z,isHighlighted:R,onClick:W};return e.day?t.jsx("span",{children:e.day(ie)},r):t.jsx("button",{type:"button",onClick:W,disabled:z,className:A.cn("bear-w-8 bear-h-8 bear-rounded-full bear-text-sm bear-font-medium bear-transition-colors bear-flex bear-items-center bear-justify-center",k&&"bear-bg-bear-500 bear-text-white hover:bear-bg-bear-600",!k&&T&&"bear-ring-2 bear-ring-bear-500/50 bear-bg-transparent",!k&&!T&&(x?oe?"bear-text-red-500 hover:bear-bg-zinc-100":"bear-text-zinc-700 hover:bear-bg-zinc-100":"bear-text-zinc-400 hover:bear-bg-zinc-50"),R&&!k&&"bear-bg-bear-500/15",z&&"bear-opacity-40 bear-cursor-not-allowed"),children:j},r)},be=()=>{const a=ee.map((r,c)=>ne(r,c));return e.daysGrid?e.daysGrid({children:a,className:"bear-grid bear-grid-cols-7 bear-gap-1"}):t.jsx("div",{className:"bear-grid bear-grid-cols-7 bear-gap-1",children:a})},se=()=>{const a=m&&B&&h,r=D&&g;if(!a&&!r)return null;if(e.footer){const c=e.clearButton,x=e.todayButton;return e.footer({children:t.jsxs("div",{className:"bear-flex bear-justify-between bear-gap-2 bear-mt-4 bear-pt-3 bear-border-t bear-border-zinc-200",children:[a&&c?c({onClick:h,hasSelection:B}):a?t.jsx("button",{type:"button",onClick:h,className:"bear-text-sm bear-text-zinc-500 hover:bear-text-zinc-700",children:"Clear"}):t.jsx("span",{}),r&&x?x({onClick:g}):r?t.jsx("button",{type:"button",onClick:g,className:"bear-text-sm bear-text-bear-600 hover:bear-text-bear-700 bear-font-medium",children:"Today"}):null]})})}return e.clearButton&&e.todayButton?t.jsxs("div",{className:"bear-flex bear-justify-between bear-gap-2 bear-mt-4 bear-pt-3 bear-border-t bear-border-zinc-200",children:[a&&e.clearButton({onClick:h,hasSelection:B}),r&&e.todayButton({onClick:g})]}):t.jsxs("div",{className:"bear-flex bear-justify-between bear-gap-2 bear-mt-4 bear-pt-3 bear-border-t bear-border-zinc-200",children:[a?t.jsx("button",{type:"button",onClick:h,className:"bear-text-sm bear-text-zinc-500 hover:bear-text-zinc-700 bear-transition-colors",children:"Clear"}):t.jsx("span",{}),r?t.jsx("button",{type:"button",onClick:g,className:"bear-text-sm bear-text-bear-600 hover:bear-text-bear-700 bear-font-medium bear-transition-colors",children:"Today"}):null]})},I=t.jsxs(t.Fragment,{children:[te(),ae(),be(),se()]}),G=A.cn(re,Q),ce=Object.keys(E).length?E:void 0;return e.root?e.root({children:I,className:G}):t.jsx("div",{className:G,style:ce,children:I})};exports.Calendar=he;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ import { CalendarProps } from './Calendar.types';
3
+ export declare const Calendar: FC<CalendarProps>;
@@ -0,0 +1,203 @@
1
+ import { jsxs as m, Fragment as ue, jsx as c } from "react/jsx-runtime";
2
+ import { useMemo as w, useCallback as N } from "react";
3
+ import { cn as E } from "../../utils/cn.js";
4
+ import { useBearStyles as me } from "../../hooks/useBearStyles.js";
5
+ const he = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"], xe = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], q = (n, a) => new Date(n, a + 1, 0).getDate(), ve = (n, a) => new Date(n, a, 1).getDay(), P = (n, a) => !n || !a ? !1 : n.getDate() === a.getDate() && n.getMonth() === a.getMonth() && n.getFullYear() === a.getFullYear();
6
+ function pe(n, a, f) {
7
+ let l = (ve(n, a) - f + 7) % 7;
8
+ const v = q(n, a), y = a === 0 ? 11 : a - 1, g = a === 0 ? n - 1 : n, p = q(g, y), i = [], H = 42;
9
+ for (let e = 0; e < H; e++)
10
+ if (e < l) {
11
+ const h = p - l + e + 1;
12
+ i.push({ date: new Date(g, y, h), isCurrentMonth: !1 });
13
+ } else if (e < l + v) {
14
+ const h = e - l + 1;
15
+ i.push({ date: new Date(n, a, h), isCurrentMonth: !0 });
16
+ } else {
17
+ const h = e - l - v + 1, x = a === 11 ? 0 : a + 1, Y = a === 11 ? n + 1 : n;
18
+ i.push({ date: new Date(Y, x, h), isCurrentMonth: !1 });
19
+ }
20
+ return i;
21
+ }
22
+ const ke = ({
23
+ viewDate: n,
24
+ value: a = null,
25
+ onSelect: f,
26
+ onViewChange: b,
27
+ minDate: l,
28
+ maxDate: v,
29
+ disabledDates: y = [],
30
+ highlightedDates: g = [],
31
+ weekdayLabels: p = he,
32
+ firstDayOfWeek: i = 0,
33
+ showWeekNumbers: H = !1,
34
+ slots: e = {},
35
+ clearable: h = !0,
36
+ onClear: x,
37
+ showTodayButton: Y = !0,
38
+ onToday: z,
39
+ bis: O,
40
+ style: Q,
41
+ inline: X = !1,
42
+ className: Z
43
+ }) => {
44
+ const s = n.getFullYear(), U = me(O, Q), d = n.getMonth(), $ = w(() => /* @__PURE__ */ new Date(), []), S = N(() => {
45
+ b == null || b(new Date(s - 1, d, 1));
46
+ }, [s, d, b]), I = N(() => {
47
+ b == null || b(new Date(s, d - 1, 1));
48
+ }, [s, d, b]), G = N(() => {
49
+ b == null || b(new Date(s, d + 1, 1));
50
+ }, [s, d, b]), F = N(() => {
51
+ b == null || b(new Date(s + 1, d, 1));
52
+ }, [s, d, b]), j = I, B = G, V = {
53
+ onPrevYear: S,
54
+ onPrevMonth: I,
55
+ onNextMonth: G,
56
+ onNextYear: F
57
+ }, ee = N(
58
+ (t) => l && t < l || v && t > v ? !0 : y.some((r) => P(r, t)),
59
+ [l, v, y]
60
+ ), re = N(
61
+ (t) => g.some((r) => P(r, t)),
62
+ [g]
63
+ ), te = w(
64
+ () => pe(s, d, i),
65
+ [s, d, i]
66
+ ), J = w(
67
+ () => i > 0 ? [...p.slice(i), ...p.slice(0, i)] : p,
68
+ [p, i]
69
+ ), T = xe[d], A = a != null, ae = X ? "bear-block bear-w-full bear-bg-white bear-rounded-xl bear-shadow-none bear-border bear-border-zinc-200 bear-p-4 bear-text-zinc-900" : "bear-absolute bear-z-50 bear-mt-2 bear-bg-white bear-rounded-xl bear-shadow-xl bear-border bear-border-zinc-200 bear-p-4 bear-w-80 bear-text-zinc-900", ne = () => {
70
+ if (e.header)
71
+ return e.header({ month: T, year: s, onPrev: j, onNext: B, nav: V });
72
+ const t = e.navPrevYear, r = e.navPrev, o = e.navNext, u = e.navNextYear, k = e.headerLabel;
73
+ return /* @__PURE__ */ m("div", { className: "bear-flex bear-items-center bear-justify-between bear-gap-1 bear-mb-4", children: [
74
+ /* @__PURE__ */ m("div", { className: "bear-flex bear-items-center bear-gap-0.5", children: [
75
+ t ? t({ onClick: S }) : /* @__PURE__ */ c(
76
+ "button",
77
+ {
78
+ type: "button",
79
+ onClick: S,
80
+ className: "bear-p-1.5 bear-rounded bear-text-zinc-500 hover:bear-bg-zinc-100 bear-dark:hover:bear-bg-zinc-800 bear-transition-colors bear-font-medium",
81
+ "aria-label": "Previous year",
82
+ children: "‹‹"
83
+ }
84
+ ),
85
+ r ? r({ onClick: j }) : /* @__PURE__ */ c(
86
+ "button",
87
+ {
88
+ type: "button",
89
+ onClick: j,
90
+ className: "bear-p-1.5 bear-rounded bear-text-zinc-500 hover:bear-bg-zinc-100 bear-dark:hover:bear-bg-zinc-800 bear-transition-colors",
91
+ "aria-label": "Previous month",
92
+ children: "‹"
93
+ }
94
+ )
95
+ ] }),
96
+ k ? k({ month: T, year: s }) : /* @__PURE__ */ m("span", { className: "bear-font-semibold bear-text-sm bear-select-none", children: [
97
+ T,
98
+ " ",
99
+ s
100
+ ] }),
101
+ /* @__PURE__ */ m("div", { className: "bear-flex bear-items-center bear-gap-0.5", children: [
102
+ o ? o({ onClick: B }) : /* @__PURE__ */ c(
103
+ "button",
104
+ {
105
+ type: "button",
106
+ onClick: B,
107
+ className: "bear-p-1.5 bear-rounded bear-text-zinc-500 hover:bear-bg-zinc-100 bear-dark:hover:bear-bg-zinc-800 bear-transition-colors",
108
+ "aria-label": "Next month",
109
+ children: "›"
110
+ }
111
+ ),
112
+ u ? u({ onClick: F }) : /* @__PURE__ */ c(
113
+ "button",
114
+ {
115
+ type: "button",
116
+ onClick: F,
117
+ className: "bear-p-1.5 bear-rounded bear-text-zinc-500 hover:bear-bg-zinc-100 bear-dark:hover:bear-bg-zinc-800 bear-transition-colors bear-font-medium",
118
+ "aria-label": "Next year",
119
+ children: "››"
120
+ }
121
+ )
122
+ ] })
123
+ ] });
124
+ }, be = () => {
125
+ if (e.weekdays) return e.weekdays({ days: J });
126
+ const t = e.weekday;
127
+ return /* @__PURE__ */ c("div", { className: "bear-grid bear-grid-cols-7 bear-gap-1 bear-mb-2", children: J.map(
128
+ (r) => t ? /* @__PURE__ */ c("div", { children: t({ label: r }) }, r) : /* @__PURE__ */ c(
129
+ "div",
130
+ {
131
+ className: E(
132
+ "bear-text-center bear-text-xs bear-font-medium bear-uppercase",
133
+ (r === "SUN" || r === "SAT" || r === "Sun" || r === "Sat") && "bear-text-red-500"
134
+ ),
135
+ children: r
136
+ },
137
+ r
138
+ )
139
+ ) });
140
+ }, ce = (t, r) => {
141
+ const { date: o, isCurrentMonth: u } = t, k = o.getDate(), K = o.getDay(), de = K === 0 || K === 6, M = P(a, o), C = P($, o), D = ee(o), L = re(o), R = () => {
142
+ D || f == null || f(o);
143
+ }, le = {
144
+ date: o,
145
+ day: k,
146
+ isCurrentMonth: u,
147
+ isSelected: M,
148
+ isToday: C,
149
+ isDisabled: D,
150
+ isHighlighted: L,
151
+ onClick: R
152
+ };
153
+ return e.day ? /* @__PURE__ */ c("span", { children: e.day(le) }, r) : /* @__PURE__ */ c(
154
+ "button",
155
+ {
156
+ type: "button",
157
+ onClick: R,
158
+ disabled: D,
159
+ className: E(
160
+ "bear-w-8 bear-h-8 bear-rounded-full bear-text-sm bear-font-medium bear-transition-colors bear-flex bear-items-center bear-justify-center",
161
+ M && "bear-bg-bear-500 bear-text-white hover:bear-bg-bear-600",
162
+ !M && C && "bear-ring-2 bear-ring-bear-500/50 bear-bg-transparent",
163
+ !M && !C && (u ? de ? "bear-text-red-500 hover:bear-bg-zinc-100" : "bear-text-zinc-700 hover:bear-bg-zinc-100" : "bear-text-zinc-400 hover:bear-bg-zinc-50"),
164
+ L && !M && "bear-bg-bear-500/15",
165
+ D && "bear-opacity-40 bear-cursor-not-allowed"
166
+ ),
167
+ children: k
168
+ },
169
+ r
170
+ );
171
+ }, oe = () => {
172
+ const t = te.map((r, o) => ce(r, o));
173
+ return e.daysGrid ? e.daysGrid({ children: t, className: "bear-grid bear-grid-cols-7 bear-gap-1" }) : /* @__PURE__ */ c("div", { className: "bear-grid bear-grid-cols-7 bear-gap-1", children: t });
174
+ }, se = () => {
175
+ const t = h && A && x, r = Y && z;
176
+ if (!t && !r) return null;
177
+ if (e.footer) {
178
+ const o = e.clearButton, u = e.todayButton;
179
+ return e.footer({
180
+ children: /* @__PURE__ */ m("div", { className: "bear-flex bear-justify-between bear-gap-2 bear-mt-4 bear-pt-3 bear-border-t bear-border-zinc-200", children: [
181
+ t && o ? o({ onClick: x, hasSelection: A }) : t ? /* @__PURE__ */ c("button", { type: "button", onClick: x, className: "bear-text-sm bear-text-zinc-500 hover:bear-text-zinc-700", children: "Clear" }) : /* @__PURE__ */ c("span", {}),
182
+ r && u ? u({ onClick: z }) : r ? /* @__PURE__ */ c("button", { type: "button", onClick: z, className: "bear-text-sm bear-text-bear-600 hover:bear-text-bear-700 bear-font-medium", children: "Today" }) : null
183
+ ] })
184
+ });
185
+ }
186
+ return e.clearButton && e.todayButton ? /* @__PURE__ */ m("div", { className: "bear-flex bear-justify-between bear-gap-2 bear-mt-4 bear-pt-3 bear-border-t bear-border-zinc-200", children: [
187
+ t && e.clearButton({ onClick: x, hasSelection: A }),
188
+ r && e.todayButton({ onClick: z })
189
+ ] }) : /* @__PURE__ */ m("div", { className: "bear-flex bear-justify-between bear-gap-2 bear-mt-4 bear-pt-3 bear-border-t bear-border-zinc-200", children: [
190
+ t ? /* @__PURE__ */ c("button", { type: "button", onClick: x, className: "bear-text-sm bear-text-zinc-500 hover:bear-text-zinc-700 bear-transition-colors", children: "Clear" }) : /* @__PURE__ */ c("span", {}),
191
+ r ? /* @__PURE__ */ c("button", { type: "button", onClick: z, className: "bear-text-sm bear-text-bear-600 hover:bear-text-bear-700 bear-font-medium bear-transition-colors", children: "Today" }) : null
192
+ ] });
193
+ }, W = /* @__PURE__ */ m(ue, { children: [
194
+ ne(),
195
+ be(),
196
+ oe(),
197
+ se()
198
+ ] }), _ = E(ae, Z), ie = Object.keys(U).length ? U : void 0;
199
+ return e.root ? e.root({ children: W, className: _ }) : /* @__PURE__ */ c("div", { className: _, style: ie, children: W });
200
+ };
201
+ export {
202
+ ke as Calendar
203
+ };
@@ -0,0 +1,124 @@
1
+ import { ReactNode } from 'react';
2
+ export interface CalendarDayProps {
3
+ date: Date;
4
+ day: number;
5
+ isCurrentMonth: boolean;
6
+ isSelected: boolean;
7
+ isToday: boolean;
8
+ isDisabled: boolean;
9
+ isHighlighted?: boolean;
10
+ }
11
+ export interface CalendarNavActions {
12
+ onPrevYear: () => void;
13
+ onPrevMonth: () => void;
14
+ onNextMonth: () => void;
15
+ onNextYear: () => void;
16
+ }
17
+ export interface CalendarSlots {
18
+ /** Root calendar container */
19
+ root?: (props: {
20
+ children: ReactNode;
21
+ className?: string;
22
+ }) => ReactNode;
23
+ /** Header (month/year + nav) */
24
+ header?: (props: {
25
+ month: string;
26
+ year: number;
27
+ onPrev: () => void;
28
+ onNext: () => void;
29
+ nav?: CalendarNavActions;
30
+ }) => ReactNode;
31
+ /** Prev month button */
32
+ navPrev?: (props: {
33
+ onClick: () => void;
34
+ disabled?: boolean;
35
+ }) => ReactNode;
36
+ /** Next month button */
37
+ navNext?: (props: {
38
+ onClick: () => void;
39
+ disabled?: boolean;
40
+ }) => ReactNode;
41
+ /** Prev year button (e.g. «) */
42
+ navPrevYear?: (props: {
43
+ onClick: () => void;
44
+ disabled?: boolean;
45
+ }) => ReactNode;
46
+ /** Next year button (e.g. ») */
47
+ navNextYear?: (props: {
48
+ onClick: () => void;
49
+ disabled?: boolean;
50
+ }) => ReactNode;
51
+ /** Month/year label */
52
+ headerLabel?: (props: {
53
+ month: string;
54
+ year: number;
55
+ }) => ReactNode;
56
+ /** Weekday row (e.g. Su Mo Tu ...) */
57
+ weekdays?: (props: {
58
+ days: string[];
59
+ }) => ReactNode;
60
+ /** Weekday cell */
61
+ weekday?: (props: {
62
+ label: string;
63
+ }) => ReactNode;
64
+ /** Grid of days */
65
+ daysGrid?: (props: {
66
+ children: ReactNode;
67
+ className?: string;
68
+ }) => ReactNode;
69
+ /** Single day cell */
70
+ day?: (props: CalendarDayProps & {
71
+ onClick: () => void;
72
+ }) => ReactNode;
73
+ /** Empty cell (leading/trailing padding) */
74
+ emptyDay?: (props: {
75
+ key: string;
76
+ }) => ReactNode;
77
+ /** Footer (e.g. clear, today) */
78
+ footer?: (props: {
79
+ children?: ReactNode;
80
+ }) => ReactNode;
81
+ /** Clear button */
82
+ clearButton?: (props: {
83
+ onClick: () => void;
84
+ hasSelection: boolean;
85
+ }) => ReactNode;
86
+ /** Today button */
87
+ todayButton?: (props: {
88
+ onClick: () => void;
89
+ }) => ReactNode;
90
+ }
91
+ export interface CalendarProps {
92
+ /** Currently viewed month (controls calendar view) */
93
+ viewDate: Date;
94
+ /** Selected date */
95
+ value?: Date | null;
96
+ /** Callback when date is selected */
97
+ onSelect?: (date: Date) => void;
98
+ /** Callback when view month changes */
99
+ onViewChange?: (date: Date) => void;
100
+ minDate?: Date;
101
+ maxDate?: Date;
102
+ disabledDates?: Date[];
103
+ highlightedDates?: Date[];
104
+ /** Weekday labels, default Su–Sa */
105
+ weekdayLabels?: string[];
106
+ /** First day of week 0=Sun, 1=Mon, etc. */
107
+ firstDayOfWeek?: number;
108
+ showWeekNumbers?: boolean;
109
+ /** Slot overrides for full customization */
110
+ slots?: CalendarSlots;
111
+ /** Show clear button in footer */
112
+ clearable?: boolean;
113
+ onClear?: () => void;
114
+ /** Show Today button in footer */
115
+ showTodayButton?: boolean;
116
+ onToday?: () => void;
117
+ /** Bear Inner Style - sx-like overrides */
118
+ bis?: import('../../types/bis.types').BisProp;
119
+ /** Inline styles */
120
+ style?: React.CSSProperties;
121
+ /** When true, render as block (no absolute). Use when embedding in DateTimePicker etc. */
122
+ inline?: boolean;
123
+ className?: string;
124
+ }
@@ -0,0 +1,2 @@
1
+ export { Calendar } from './Calendar';
2
+ export type { CalendarProps, CalendarSlots, CalendarDayProps, CalendarNavActions } from './Calendar.types';
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),b=require("react"),o=require("../../utils/cn.cjs"),x={none:"",xs:"ember-p-2",sm:"ember-p-3",md:"ember-p-4",lg:"ember-p-6",xl:"ember-p-8"},p={none:"",sm:"ember-rounded-sm",md:"ember-rounded-md",lg:"ember-rounded-lg",xl:"ember-rounded-xl","2xl":"ember-rounded-2xl"},C={elevated:"ember-bg-white dark:ember-bg-gray-900 ember-shadow-md",outlined:"ember-bg-white dark:ember-bg-gray-900 ember-border ember-border-gray-200 dark:ember-border-gray-700",filled:"ember-bg-gray-100 dark:ember-bg-gray-800",ghost:"ember-bg-transparent"},l=b.forwardRef(({variant:e="elevated",padding:r="none",interactive:a=!1,radius:m="lg",className:s,children:t,testId:n,...u},y)=>d.jsx("div",{ref:y,className:o.cn("ember-overflow-hidden",C[e],x[r],p[m],a&&"ember-transition-all ember-duration-200 ember-cursor-pointer hover:ember-shadow-lg hover:ember-scale-[1.02]",s),"data-testid":n,...u,children:t}));l.displayName="Card";const i=b.forwardRef(({title:e,subtitle:r,action:a,className:m,children:s,...t},n)=>d.jsxs("div",{ref:n,className:o.cn("ember-flex ember-items-start ember-justify-between ember-p-4 ember-border-b ember-border-gray-200 dark:ember-border-gray-700",m),...t,children:[d.jsxs("div",{className:"ember-flex-1 ember-min-w-0",children:[e&&d.jsx("h3",{className:"ember-text-lg ember-font-semibold ember-text-gray-900 dark:ember-text-white ember-truncate",children:e}),r&&d.jsx("p",{className:"ember-text-sm ember-text-gray-500 dark:ember-text-gray-400 ember-mt-1",children:r}),s]}),a&&d.jsx("div",{className:"ember-ml-4 ember-shrink-0",children:a})]}));i.displayName="CardHeader";const c=b.forwardRef(({className:e,children:r,...a},m)=>d.jsx("div",{ref:m,className:o.cn("ember-p-4",e),...a,children:r}));c.displayName="CardBody";const g=b.forwardRef(({divider:e=!0,className:r,children:a,...m},s)=>d.jsx("div",{ref:s,className:o.cn("ember-p-4",e&&"ember-border-t ember-border-gray-200 dark:ember-border-gray-700",r),...m,children:a}));g.displayName="CardFooter";const f=Object.assign(l,{Header:i,Body:c,Footer:g});exports.Card=l;exports.CardBody=c;exports.CardCompound=f;exports.CardFooter=g;exports.CardHeader=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),o=require("react"),t=require("../../utils/cn.cjs"),x={none:"",xs:"bear-p-2",sm:"bear-p-3",md:"bear-p-4",lg:"bear-p-6",xl:"bear-p-8"},p={none:"",sm:"bear-rounded-sm",md:"bear-rounded-md",lg:"bear-rounded-lg",xl:"bear-rounded-xl","2xl":"bear-rounded-2xl"},C={elevated:"bear-bg-white dark:bear-bg-gray-900 bear-shadow-md",outlined:"bear-bg-white dark:bear-bg-gray-900 bear-border bear-border-gray-200 dark:bear-border-gray-700",filled:"bear-bg-gray-100 dark:bear-bg-gray-800",ghost:"bear-bg-transparent"},i=o.forwardRef(({variant:r="elevated",padding:e="none",interactive:a=!1,radius:s="lg",className:b,children:n,testId:l,...u},y)=>d.jsx("div",{ref:y,className:t.cn("bear-overflow-hidden",C[r],x[e],p[s],a&&"bear-transition-all bear-duration-200 bear-cursor-pointer hover:bear-shadow-lg hover:bear-scale-[1.02]",b),"data-testid":l,...u,children:n}));i.displayName="Card";const c=o.forwardRef(({title:r,subtitle:e,action:a,className:s,children:b,...n},l)=>d.jsxs("div",{ref:l,className:t.cn("bear-flex bear-items-start bear-justify-between bear-p-4 bear-border-b bear-border-gray-200 dark:bear-border-gray-700",s),...n,children:[d.jsxs("div",{className:"bear-flex-1 bear-min-w-0",children:[r&&d.jsx("h3",{className:"bear-text-lg bear-font-semibold bear-text-gray-900 dark:bear-text-white bear-truncate",children:r}),e&&d.jsx("p",{className:"bear-text-sm bear-text-gray-500 dark:bear-text-gray-400 bear-mt-1",children:e}),b]}),a&&d.jsx("div",{className:"bear-ml-4 bear-shrink-0",children:a})]}));c.displayName="CardHeader";const g=o.forwardRef(({className:r,children:e,...a},s)=>d.jsx("div",{ref:s,className:t.cn("bear-p-4",r),...a,children:e}));g.displayName="CardBody";const m=o.forwardRef(({divider:r=!0,className:e,children:a,...s},b)=>d.jsx("div",{ref:b,className:t.cn("bear-p-4",r&&"bear-border-t bear-border-gray-200 dark:bear-border-gray-700",e),...s,children:a}));m.displayName="CardFooter";const f=Object.assign(i,{Header:c,Body:g,Footer:m});exports.Card=i;exports.CardBody=g;exports.CardCompound=f;exports.CardFooter=m;exports.CardHeader=c;