@forgedevstack/bear 1.0.1 → 1.0.3

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 (190) hide show
  1. package/dist/components/ActiveBar/ActiveBar.cjs +8 -0
  2. package/dist/components/ActiveBar/ActiveBar.d.ts +2 -0
  3. package/dist/components/ActiveBar/ActiveBar.js +90 -0
  4. package/dist/components/ActiveBar/ActiveBar.types.d.ts +16 -0
  5. package/dist/components/ActiveBar/index.d.ts +2 -0
  6. package/dist/components/Alert/Alert.cjs +1 -1
  7. package/dist/components/Alert/Alert.js +38 -38
  8. package/dist/components/AppBar/AppBar.cjs +1 -1
  9. package/dist/components/AppBar/AppBar.js +15 -15
  10. package/dist/components/Badge/Badge.cjs +1 -1
  11. package/dist/components/Badge/Badge.constants.cjs +1 -0
  12. package/dist/components/Badge/Badge.constants.d.ts +6 -0
  13. package/dist/components/Badge/Badge.constants.js +34 -0
  14. package/dist/components/Badge/Badge.js +27 -52
  15. package/dist/components/Box/Box.cjs +1 -0
  16. package/dist/components/Box/Box.d.ts +2 -0
  17. package/dist/components/Box/Box.js +64 -0
  18. package/dist/components/Box/Box.types.d.ts +24 -0
  19. package/dist/components/Box/Box.utils.cjs +1 -0
  20. package/dist/components/Box/Box.utils.d.ts +3 -0
  21. package/dist/components/Box/Box.utils.js +21 -0
  22. package/dist/components/Box/index.d.ts +2 -0
  23. package/dist/components/Button/Button.cjs +1 -57
  24. package/dist/components/Button/Button.constants.cjs +57 -0
  25. package/dist/components/Button/Button.constants.d.ts +3 -0
  26. package/dist/components/Button/Button.constants.js +77 -0
  27. package/dist/components/Button/Button.js +55 -119
  28. package/dist/components/Button/Button.types.d.ts +6 -1
  29. package/dist/components/ButtonGroup/ButtonGroup.cjs +1 -1
  30. package/dist/components/ButtonGroup/ButtonGroup.js +17 -17
  31. package/dist/components/Calendar/Calendar.cjs +1 -0
  32. package/dist/components/Calendar/Calendar.const.cjs +1 -0
  33. package/dist/components/Calendar/Calendar.const.d.ts +18 -0
  34. package/dist/components/Calendar/Calendar.const.js +27 -0
  35. package/dist/components/Calendar/Calendar.d.ts +3 -0
  36. package/dist/components/Calendar/Calendar.js +189 -0
  37. package/dist/components/Calendar/Calendar.types.d.ts +128 -0
  38. package/dist/components/Calendar/Calendar.utils.cjs +1 -0
  39. package/dist/components/Calendar/Calendar.utils.d.ts +41 -0
  40. package/dist/components/Calendar/Calendar.utils.js +33 -0
  41. package/dist/components/Calendar/index.d.ts +4 -0
  42. package/dist/components/Card/Card.cjs +1 -1
  43. package/dist/components/Card/Card.js +65 -65
  44. package/dist/components/Checkbox/Checkbox.cjs +1 -1
  45. package/dist/components/Checkbox/Checkbox.js +48 -48
  46. package/dist/components/CodeBlock/CodeBlock.cjs +2 -0
  47. package/dist/components/CodeBlock/CodeBlock.d.ts +2 -0
  48. package/dist/components/CodeBlock/CodeBlock.js +55 -0
  49. package/dist/components/CodeBlock/CodeBlock.types.d.ts +10 -0
  50. package/dist/components/CodeBlock/index.d.ts +2 -0
  51. package/dist/components/Columns/Columns.cjs +1 -0
  52. package/dist/components/Columns/Columns.d.ts +5 -0
  53. package/dist/components/Columns/Columns.js +54 -0
  54. package/dist/components/Columns/Columns.types.d.ts +17 -0
  55. package/dist/components/Columns/index.d.ts +2 -0
  56. package/dist/components/Container/Container.cjs +1 -1
  57. package/dist/components/Container/Container.js +15 -15
  58. package/dist/components/DatePicker/DatePicker.cjs +1 -1
  59. package/dist/components/DatePicker/DatePicker.js +77 -85
  60. package/dist/components/DatePicker/DatePicker.types.d.ts +9 -0
  61. package/dist/components/DatePicker/DatePicker.utils.cjs +1 -0
  62. package/dist/components/DatePicker/DatePicker.utils.d.ts +1 -0
  63. package/dist/components/DatePicker/DatePicker.utils.js +9 -0
  64. package/dist/components/DateTimePicker/DateTimePicker.cjs +1 -0
  65. package/dist/components/DateTimePicker/DateTimePicker.d.ts +3 -0
  66. package/dist/components/DateTimePicker/DateTimePicker.js +178 -0
  67. package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +26 -0
  68. package/dist/components/DateTimePicker/DateTimePicker.utils.cjs +1 -0
  69. package/dist/components/DateTimePicker/DateTimePicker.utils.d.ts +2 -0
  70. package/dist/components/DateTimePicker/DateTimePicker.utils.js +16 -0
  71. package/dist/components/DateTimePicker/index.d.ts +2 -0
  72. package/dist/components/Divider/Divider.cjs +1 -1
  73. package/dist/components/Divider/Divider.js +29 -29
  74. package/dist/components/Dropdown/Dropdown.cjs +1 -1
  75. package/dist/components/Dropdown/Dropdown.js +70 -70
  76. package/dist/components/Editable/Editable.cjs +1 -0
  77. package/dist/components/Editable/Editable.d.ts +10 -0
  78. package/dist/components/Editable/Editable.js +194 -0
  79. package/dist/components/Editable/Editable.types.d.ts +39 -0
  80. package/dist/components/Editable/index.d.ts +2 -0
  81. package/dist/components/Em/Em.cjs +1 -0
  82. package/dist/components/Em/Em.d.ts +2 -0
  83. package/dist/components/Em/Em.js +24 -0
  84. package/dist/components/Em/Em.types.d.ts +5 -0
  85. package/dist/components/Em/index.d.ts +2 -0
  86. package/dist/components/Fab/Fab.cjs +1 -1
  87. package/dist/components/Fab/Fab.js +43 -43
  88. package/dist/components/FileUpload/FileUpload.cjs +1 -1
  89. package/dist/components/FileUpload/FileUpload.js +46 -49
  90. package/dist/components/FileUpload/FileUpload.utils.cjs +1 -0
  91. package/dist/components/FileUpload/FileUpload.utils.d.ts +1 -0
  92. package/dist/components/FileUpload/FileUpload.utils.js +9 -0
  93. package/dist/components/Flex/Flex.cjs +1 -1
  94. package/dist/components/Flex/Flex.js +58 -58
  95. package/dist/components/Grid/Grid.cjs +1 -1
  96. package/dist/components/Grid/Grid.js +60 -60
  97. package/dist/components/Highlight/Highlight.cjs +1 -0
  98. package/dist/components/Highlight/Highlight.d.ts +2 -0
  99. package/dist/components/Highlight/Highlight.js +28 -0
  100. package/dist/components/Highlight/Highlight.types.d.ts +6 -0
  101. package/dist/components/Highlight/index.d.ts +2 -0
  102. package/dist/components/HoverCard/HoverCard.cjs +6 -0
  103. package/dist/components/HoverCard/HoverCard.d.ts +2 -0
  104. package/dist/components/HoverCard/HoverCard.js +68 -0
  105. package/dist/components/HoverCard/HoverCard.types.d.ts +13 -0
  106. package/dist/components/HoverCard/HoverCard.utils.cjs +1 -0
  107. package/dist/components/HoverCard/HoverCard.utils.d.ts +2 -0
  108. package/dist/components/HoverCard/HoverCard.utils.js +23 -0
  109. package/dist/components/HoverCard/index.d.ts +2 -0
  110. package/dist/components/Icon/icons/status.js +1 -1
  111. package/dist/components/Icon/index.cjs +1 -1
  112. package/dist/components/Icon/index.d.ts +5 -0
  113. package/dist/components/Icon/index.js +28 -21
  114. package/dist/components/Link/Link.cjs +1 -1
  115. package/dist/components/Link/Link.js +47 -47
  116. package/dist/components/List/List.cjs +1 -1
  117. package/dist/components/List/List.js +117 -117
  118. package/dist/components/Mark/Mark.cjs +1 -0
  119. package/dist/components/Mark/Mark.d.ts +2 -0
  120. package/dist/components/Mark/Mark.js +26 -0
  121. package/dist/components/Mark/Mark.types.d.ts +5 -0
  122. package/dist/components/Mark/index.d.ts +2 -0
  123. package/dist/components/Menu/Menu.cjs +1 -1
  124. package/dist/components/Menu/Menu.js +58 -58
  125. package/dist/components/Paper/Paper.cjs +1 -1
  126. package/dist/components/Paper/Paper.js +36 -36
  127. package/dist/components/Radio/Radio.cjs +1 -1
  128. package/dist/components/Radio/Radio.js +79 -79
  129. package/dist/components/Rating/Rating.cjs +1 -1
  130. package/dist/components/Rating/Rating.js +37 -37
  131. package/dist/components/RichEditor/RichEditor.cjs +10 -0
  132. package/dist/components/RichEditor/RichEditor.d.ts +4 -0
  133. package/dist/components/RichEditor/RichEditor.icons.cjs +1 -0
  134. package/dist/components/RichEditor/RichEditor.icons.d.ts +16 -0
  135. package/dist/components/RichEditor/RichEditor.icons.js +62 -0
  136. package/dist/components/RichEditor/RichEditor.js +151 -0
  137. package/dist/components/RichEditor/RichEditor.types.d.ts +20 -0
  138. package/dist/components/RichEditor/RichEditor.utils.cjs +1 -0
  139. package/dist/components/RichEditor/RichEditor.utils.d.ts +3 -0
  140. package/dist/components/RichEditor/RichEditor.utils.js +22 -0
  141. package/dist/components/RichEditor/index.d.ts +2 -0
  142. package/dist/components/Sidebar/Sidebar.cjs +1 -0
  143. package/dist/components/Sidebar/Sidebar.d.ts +5 -0
  144. package/dist/components/Sidebar/Sidebar.js +158 -0
  145. package/dist/components/Sidebar/Sidebar.types.d.ts +40 -0
  146. package/dist/components/Sidebar/index.d.ts +2 -0
  147. package/dist/components/Slider/Slider.cjs +1 -1
  148. package/dist/components/Slider/Slider.js +8 -8
  149. package/dist/components/SpeedDial/SpeedDial.cjs +1 -1
  150. package/dist/components/SpeedDial/SpeedDial.js +40 -40
  151. package/dist/components/Spinner/Spinner.cjs +1 -1
  152. package/dist/components/Spinner/Spinner.js +24 -24
  153. package/dist/components/TimePicker/TimePicker.cjs +1 -1
  154. package/dist/components/TimePicker/TimePicker.constants.cjs +1 -0
  155. package/dist/components/TimePicker/TimePicker.constants.d.ts +5 -0
  156. package/dist/components/TimePicker/TimePicker.constants.js +16 -0
  157. package/dist/components/TimePicker/TimePicker.js +91 -70
  158. package/dist/components/TimePicker/TimePicker.types.d.ts +5 -2
  159. package/dist/components/TimePicker/TimePicker.utils.cjs +1 -0
  160. package/dist/components/TimePicker/TimePicker.utils.d.ts +1 -0
  161. package/dist/components/TimePicker/TimePicker.utils.js +7 -0
  162. package/dist/components/TransferList/TransferList.cjs +1 -1
  163. package/dist/components/TransferList/TransferList.js +74 -74
  164. package/dist/components/Typography/Typography.cjs +1 -1
  165. package/dist/components/Typography/Typography.js +52 -52
  166. package/dist/components/index.cjs +1 -1
  167. package/dist/components/index.d.ts +26 -0
  168. package/dist/components/index.js +119 -91
  169. package/dist/context/BearProvider.cjs +1 -1
  170. package/dist/context/BearProvider.d.ts +6 -1
  171. package/dist/context/BearProvider.js +42 -38
  172. package/dist/context/index.cjs +1 -1
  173. package/dist/context/index.d.ts +1 -1
  174. package/dist/context/index.js +6 -5
  175. package/dist/hooks/bearStyled.cjs +1 -0
  176. package/dist/hooks/bearStyled.d.ts +17 -0
  177. package/dist/hooks/bearStyled.js +17 -0
  178. package/dist/hooks/index.cjs +1 -1
  179. package/dist/hooks/index.d.ts +2 -0
  180. package/dist/hooks/index.js +14 -10
  181. package/dist/hooks/useBearStyles.cjs +1 -0
  182. package/dist/hooks/useBearStyles.d.ts +11 -0
  183. package/dist/hooks/useBearStyles.js +14 -0
  184. package/dist/index.cjs +1 -1
  185. package/dist/index.js +146 -113
  186. package/dist/styles.css +1 -1
  187. package/dist/types/bis.types.d.ts +9 -0
  188. package/dist/types/component.types.d.ts +3 -0
  189. package/dist/types/index.d.ts +1 -0
  190. package/package.json +2 -2
@@ -1,4 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
+ import { CalendarSlots } from '../Calendar/Calendar.types';
3
+ import { BisProp } from '../../types/bis.types';
2
4
  export interface DatePickerProps {
3
5
  value?: Date | null;
4
6
  onChange?: (date: Date | null) => void;
@@ -16,9 +18,16 @@ export interface DatePickerProps {
16
18
  rangeValue?: [Date | null, Date | null];
17
19
  clearable?: boolean;
18
20
  className?: string;
21
+ style?: React.CSSProperties;
22
+ /** Bear Inner Style - sx-like overrides */
23
+ bis?: BisProp;
19
24
  showWeekNumbers?: boolean;
20
25
  disabledDates?: Date[];
21
26
  highlightedDates?: Date[];
27
+ /** Customize calendar via slots (header, day, nav, etc.) */
28
+ slots?: CalendarSlots;
29
+ weekdayLabels?: string[];
30
+ firstDayOfWeek?: number;
22
31
  size?: 'sm' | 'md' | 'lg';
23
32
  variant?: 'default' | 'filled' | 'outline';
24
33
  leftIcon?: ReactNode;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a="MM/DD/YYYY";function c(t,e=a){if(!t)return"";const r=t.getDate().toString().padStart(2,"0"),o=(t.getMonth()+1).toString().padStart(2,"0"),n=t.getFullYear().toString();return e.replace("DD",r).replace("MM",o).replace("YYYY",n)}exports.formatDate=c;
@@ -0,0 +1 @@
1
+ export declare function formatDate(date: Date | null, format?: string): string;
@@ -0,0 +1,9 @@
1
+ const Y = "MM/DD/YYYY";
2
+ function a(t, r = Y) {
3
+ if (!t) return "";
4
+ const e = t.getDate().toString().padStart(2, "0"), n = (t.getMonth() + 1).toString().padStart(2, "0"), o = t.getFullYear().toString();
5
+ return r.replace("DD", e).replace("MM", n).replace("YYYY", o);
6
+ }
7
+ export {
8
+ a as formatDate
9
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),s=require("react"),re=require("../Calendar/Calendar.cjs"),d=require("../../utils/cn.cjs"),te=require("../../hooks/useBearStyles.cjs"),D=require("./DateTimePicker.utils.cjs"),ae=({value:n,onChange:b,minDate:M,maxDate:S,disabled:m=!1,placeholder:C="Select date and time",label:y,error:u,helperText:j,dateFormat:H="MM/DD/YYYY",timeFormat:l="12h",minuteStep:g=5,clearable:P=!0,className:T,style:q,bis:A,slots:V,weekdayLabels:O,firstDayOfWeek:B=0,size:E="md",variant:L="default"})=>{const[f,x]=s.useState(!1),[R,k]=s.useState(n??new Date),[o,c]=s.useState(()=>n??new Date),h=s.useRef(null),N=te.useBearStyles(A,q);s.useEffect(()=>{const e=t=>{h.current&&!h.current.contains(t.target)&&x(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),s.useEffect(()=>{c(n?new Date(n):new Date)},[n,f]);const Y=s.useCallback(e=>{c(t=>{const a=new Date(e);return a.setHours(t.getHours(),t.getMinutes(),0,0),a})},[]),_=s.useCallback(()=>{b==null||b(o),x(!1)},[o,b]),$=s.useCallback(()=>{b==null||b(null),x(!1)},[b]),I=s.useCallback(()=>{const e=new Date;c(e),k(e)},[]),W=s.useCallback(e=>k(e),[]),G=l==="12h"?Array.from({length:12},(e,t)=>t+1):Array.from({length:24},(e,t)=>t),p=Array.from({length:60/g},(e,t)=>t*g),w=o.getHours(),v=o.getMinutes(),J=l==="12h"?w%12||12:w,K=p.includes(v)?v:p[0]??0,z=w>=12?"PM":"AM",Q=e=>{const t=l==="12h"?z==="PM"?e===12?12:e+12:e===12?0:e:e;c(a=>{const i=new Date(a);return i.setHours(t,a.getMinutes(),0,0),i})},U=e=>{c(t=>{const a=new Date(t);return a.setMinutes(e,0,0),a})},X=e=>{c(t=>{const a=new Date(t),i=a.getHours();return e==="PM"&&i<12?a.setHours(i+12):e==="AM"&&i>=12&&a.setHours(i-12),a})},Z={sm:"bear-py-1.5 bear-px-3 bear-text-sm",md:"bear-py-2 bear-px-4",lg:"bear-py-2.5 bear-px-5 bear-text-lg"},F={default:"bear-bg-zinc-800 bear-border-zinc-600",filled:"bear-bg-zinc-700 bear-border-transparent",outline:"bear-bg-transparent bear-border-zinc-500"},ee=n?`${D.formatDate(n,H)} ${D.formatTime(n,l)}`:"";return r.jsxs("div",{ref:h,className:d.cn("bear-relative",T),style:Object.keys(N).length?N:void 0,children:[y&&r.jsx("label",{className:"bear-block bear-text-sm bear-font-medium bear-text-zinc-300 bear-mb-1.5",children:y}),r.jsxs("button",{type:"button",onClick:()=>!m&&x(!f),disabled:m,className:d.cn("bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-text-left bear-transition-colors",Z[E],F[L],u?"bear-border-red-500":"focus:bear-border-pink-500",m&&"bear-opacity-50 bear-cursor-not-allowed",n?"bear-text-white":"bear-text-zinc-500"),children:[r.jsx("span",{children:ee||C}),r.jsx("svg",{className:"bear-w-5 bear-h-5 bear-text-zinc-400 bear-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})})]}),u&&r.jsx("p",{className:"bear-mt-1 bear-text-xs bear-text-red-400",children:u}),j&&!u&&r.jsx("p",{className:"bear-mt-1 bear-text-xs bear-text-zinc-500",children:j}),f&&r.jsxs("div",{className:"bear-absolute bear-z-50 bear-mt-2 bear-left-0 bear-right-0 bear-bg-white dark:bear-bg-gray-900 bear-rounded-xl bear-shadow-xl bear-border bear-border-zinc-200 dark:bear-border-zinc-700 bear-overflow-hidden bear-w-full bear-max-w-sm",children:[r.jsx(re.Calendar,{inline:!0,viewDate:R,onViewChange:W,value:o,onSelect:Y,minDate:M,maxDate:S,slots:V,weekdayLabels:O,firstDayOfWeek:B,clearable:!1,showTodayButton:!1}),r.jsxs("div",{className:"bear-px-4 bear-pb-3 bear-pt-2 bear-border-t bear-border-zinc-200",children:[r.jsxs("div",{className:"bear-flex bear-gap-2 bear-mb-3",children:[r.jsxs("div",{className:"bear-flex-1",children:[r.jsx("div",{className:"bear-text-xs bear-text-zinc-500 bear-mb-1 bear-text-center",children:"Hour"}),r.jsx("div",{className:"bear-h-24 bear-overflow-y-auto bear-space-y-0.5 bear-scrollbar-thin",children:G.map(e=>r.jsx("button",{type:"button",onClick:()=>Q(e),className:d.cn("bear-w-full bear-py-1 bear-rounded bear-text-sm bear-transition-colors",J===e?"bear-bg-bear-500 bear-text-white":"bear-text-zinc-700 hover:bear-bg-zinc-100"),children:e.toString().padStart(2,"0")},e))})]}),r.jsxs("div",{className:"bear-flex-1",children:[r.jsx("div",{className:"bear-text-xs bear-text-zinc-500 bear-mb-1 bear-text-center",children:"Minute"}),r.jsx("div",{className:"bear-h-24 bear-overflow-y-auto bear-space-y-0.5 bear-scrollbar-thin",children:p.map(e=>r.jsx("button",{type:"button",onClick:()=>U(e),className:d.cn("bear-w-full bear-py-1 bear-rounded bear-text-sm bear-transition-colors",K===e?"bear-bg-bear-500 bear-text-white":"bear-text-zinc-700 hover:bear-bg-zinc-100"),children:e.toString().padStart(2,"0")},e))})]}),l==="12h"&&r.jsxs("div",{className:"bear-flex-1",children:[r.jsx("div",{className:"bear-text-xs bear-text-zinc-500 bear-mb-1 bear-text-center",children:"Period"}),r.jsx("div",{className:"bear-space-y-0.5",children:["AM","PM"].map(e=>r.jsx("button",{type:"button",onClick:()=>X(e),className:d.cn("bear-w-full bear-py-2 bear-rounded bear-text-sm bear-transition-colors",z===e?"bear-bg-bear-500 bear-text-white":"bear-text-zinc-700 hover:bear-bg-zinc-100"),children:e},e))})]})]}),r.jsxs("div",{className:"bear-flex bear-gap-2 bear-justify-between",children:[P&&n?r.jsx("button",{type:"button",onClick:$,className:"bear-text-sm bear-text-zinc-500 hover:bear-text-zinc-700",children:"Clear"}):r.jsx("span",{}),r.jsxs("div",{className:"bear-flex bear-gap-2",children:[r.jsx("button",{type:"button",onClick:I,className:"bear-text-sm bear-text-bear-600 hover:bear-text-bear-700 bear-font-medium",children:"Today"}),r.jsx("button",{type:"button",onClick:_,className:"bear-text-sm bear-bg-bear-500 bear-text-white bear-px-3 bear-py-1 bear-rounded bear-font-medium hover:bear-bg-bear-600",children:"Confirm"})]})]})]})]})]})};exports.DateTimePicker=ae;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ import { DateTimePickerProps } from './DateTimePicker.types';
3
+ export declare const DateTimePicker: FC<DateTimePickerProps>;
@@ -0,0 +1,178 @@
1
+ import { jsxs as n, jsx as r } from "react/jsx-runtime";
2
+ import { useState as g, useRef as ae, useEffect as S, useCallback as d } from "react";
3
+ import { Calendar as be } from "../Calendar/Calendar.js";
4
+ import { cn as u } from "../../utils/cn.js";
5
+ import { useBearStyles as ne } from "../../hooks/useBearStyles.js";
6
+ import { formatDate as se, formatTime as oe } from "./DateTimePicker.utils.js";
7
+ const xe = ({
8
+ value: b,
9
+ onChange: s,
10
+ minDate: C,
11
+ maxDate: P,
12
+ disabled: f = !1,
13
+ placeholder: j = "Select date and time",
14
+ label: N,
15
+ error: m,
16
+ helperText: z,
17
+ dateFormat: A = "MM/DD/YYYY",
18
+ timeFormat: i = "12h",
19
+ minuteStep: v = 5,
20
+ clearable: V = !0,
21
+ className: L,
22
+ style: O,
23
+ bis: T,
24
+ slots: Y,
25
+ weekdayLabels: B,
26
+ firstDayOfWeek: E = 0,
27
+ size: _ = "md",
28
+ variant: R = "default"
29
+ }) => {
30
+ const [h, x] = g(!1), [$, k] = g(b ?? /* @__PURE__ */ new Date()), [l, o] = g(() => b ?? /* @__PURE__ */ new Date()), p = ae(null), M = ne(T, O);
31
+ S(() => {
32
+ const e = (t) => {
33
+ p.current && !p.current.contains(t.target) && x(!1);
34
+ };
35
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
36
+ }, []), S(() => {
37
+ o(b ? new Date(b) : /* @__PURE__ */ new Date());
38
+ }, [b, h]);
39
+ const I = d((e) => {
40
+ o((t) => {
41
+ const a = new Date(e);
42
+ return a.setHours(t.getHours(), t.getMinutes(), 0, 0), a;
43
+ });
44
+ }, []), W = d(() => {
45
+ s == null || s(l), x(!1);
46
+ }, [l, s]), q = d(() => {
47
+ s == null || s(null), x(!1);
48
+ }, [s]), G = d(() => {
49
+ const e = /* @__PURE__ */ new Date();
50
+ o(e), k(e);
51
+ }, []), J = d((e) => k(e), []), K = i === "12h" ? Array.from({ length: 12 }, (e, t) => t + 1) : Array.from({ length: 24 }, (e, t) => t), w = Array.from({ length: 60 / v }, (e, t) => t * v), y = l.getHours(), D = l.getMinutes(), Q = i === "12h" ? y % 12 || 12 : y, U = w.includes(D) ? D : w[0] ?? 0, H = y >= 12 ? "PM" : "AM", X = (e) => {
52
+ const t = i === "12h" ? H === "PM" ? e === 12 ? 12 : e + 12 : e === 12 ? 0 : e : e;
53
+ o((a) => {
54
+ const c = new Date(a);
55
+ return c.setHours(t, a.getMinutes(), 0, 0), c;
56
+ });
57
+ }, Z = (e) => {
58
+ o((t) => {
59
+ const a = new Date(t);
60
+ return a.setMinutes(e, 0, 0), a;
61
+ });
62
+ }, F = (e) => {
63
+ o((t) => {
64
+ const a = new Date(t), c = a.getHours();
65
+ return e === "PM" && c < 12 ? a.setHours(c + 12) : e === "AM" && c >= 12 && a.setHours(c - 12), a;
66
+ });
67
+ }, ee = { sm: "bear-py-1.5 bear-px-3 bear-text-sm", md: "bear-py-2 bear-px-4", lg: "bear-py-2.5 bear-px-5 bear-text-lg" }, re = {
68
+ default: "bear-bg-zinc-800 bear-border-zinc-600",
69
+ filled: "bear-bg-zinc-700 bear-border-transparent",
70
+ outline: "bear-bg-transparent bear-border-zinc-500"
71
+ }, te = b ? `${se(b, A)} ${oe(b, i)}` : "";
72
+ return /* @__PURE__ */ n("div", { ref: p, className: u("bear-relative", L), style: Object.keys(M).length ? M : void 0, children: [
73
+ N && /* @__PURE__ */ r("label", { className: "bear-block bear-text-sm bear-font-medium bear-text-zinc-300 bear-mb-1.5", children: N }),
74
+ /* @__PURE__ */ n(
75
+ "button",
76
+ {
77
+ type: "button",
78
+ onClick: () => !f && x(!h),
79
+ disabled: f,
80
+ className: u(
81
+ "bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-text-left bear-transition-colors",
82
+ ee[_],
83
+ re[R],
84
+ m ? "bear-border-red-500" : "focus:bear-border-pink-500",
85
+ f && "bear-opacity-50 bear-cursor-not-allowed",
86
+ b ? "bear-text-white" : "bear-text-zinc-500"
87
+ ),
88
+ children: [
89
+ /* @__PURE__ */ r("span", { children: te || j }),
90
+ /* @__PURE__ */ r("svg", { className: "bear-w-5 bear-h-5 bear-text-zinc-400 bear-shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ r("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" }) })
91
+ ]
92
+ }
93
+ ),
94
+ m && /* @__PURE__ */ r("p", { className: "bear-mt-1 bear-text-xs bear-text-red-400", children: m }),
95
+ z && !m && /* @__PURE__ */ r("p", { className: "bear-mt-1 bear-text-xs bear-text-zinc-500", children: z }),
96
+ h && /* @__PURE__ */ n("div", { className: "bear-absolute bear-z-50 bear-mt-2 bear-left-0 bear-right-0 bear-bg-white dark:bear-bg-gray-900 bear-rounded-xl bear-shadow-xl bear-border bear-border-zinc-200 dark:bear-border-zinc-700 bear-overflow-hidden bear-w-full bear-max-w-sm", children: [
97
+ /* @__PURE__ */ r(
98
+ be,
99
+ {
100
+ inline: !0,
101
+ viewDate: $,
102
+ onViewChange: J,
103
+ value: l,
104
+ onSelect: I,
105
+ minDate: C,
106
+ maxDate: P,
107
+ slots: Y,
108
+ weekdayLabels: B,
109
+ firstDayOfWeek: E,
110
+ clearable: !1,
111
+ showTodayButton: !1
112
+ }
113
+ ),
114
+ /* @__PURE__ */ n("div", { className: "bear-px-4 bear-pb-3 bear-pt-2 bear-border-t bear-border-zinc-200", children: [
115
+ /* @__PURE__ */ n("div", { className: "bear-flex bear-gap-2 bear-mb-3", children: [
116
+ /* @__PURE__ */ n("div", { className: "bear-flex-1", children: [
117
+ /* @__PURE__ */ r("div", { className: "bear-text-xs bear-text-zinc-500 bear-mb-1 bear-text-center", children: "Hour" }),
118
+ /* @__PURE__ */ r("div", { className: "bear-h-24 bear-overflow-y-auto bear-space-y-0.5 bear-scrollbar-thin", children: K.map((e) => /* @__PURE__ */ r(
119
+ "button",
120
+ {
121
+ type: "button",
122
+ onClick: () => X(e),
123
+ className: u(
124
+ "bear-w-full bear-py-1 bear-rounded bear-text-sm bear-transition-colors",
125
+ Q === e ? "bear-bg-bear-500 bear-text-white" : "bear-text-zinc-700 hover:bear-bg-zinc-100"
126
+ ),
127
+ children: e.toString().padStart(2, "0")
128
+ },
129
+ e
130
+ )) })
131
+ ] }),
132
+ /* @__PURE__ */ n("div", { className: "bear-flex-1", children: [
133
+ /* @__PURE__ */ r("div", { className: "bear-text-xs bear-text-zinc-500 bear-mb-1 bear-text-center", children: "Minute" }),
134
+ /* @__PURE__ */ r("div", { className: "bear-h-24 bear-overflow-y-auto bear-space-y-0.5 bear-scrollbar-thin", children: w.map((e) => /* @__PURE__ */ r(
135
+ "button",
136
+ {
137
+ type: "button",
138
+ onClick: () => Z(e),
139
+ className: u(
140
+ "bear-w-full bear-py-1 bear-rounded bear-text-sm bear-transition-colors",
141
+ U === e ? "bear-bg-bear-500 bear-text-white" : "bear-text-zinc-700 hover:bear-bg-zinc-100"
142
+ ),
143
+ children: e.toString().padStart(2, "0")
144
+ },
145
+ e
146
+ )) })
147
+ ] }),
148
+ i === "12h" && /* @__PURE__ */ n("div", { className: "bear-flex-1", children: [
149
+ /* @__PURE__ */ r("div", { className: "bear-text-xs bear-text-zinc-500 bear-mb-1 bear-text-center", children: "Period" }),
150
+ /* @__PURE__ */ r("div", { className: "bear-space-y-0.5", children: ["AM", "PM"].map((e) => /* @__PURE__ */ r(
151
+ "button",
152
+ {
153
+ type: "button",
154
+ onClick: () => F(e),
155
+ className: u(
156
+ "bear-w-full bear-py-2 bear-rounded bear-text-sm bear-transition-colors",
157
+ H === e ? "bear-bg-bear-500 bear-text-white" : "bear-text-zinc-700 hover:bear-bg-zinc-100"
158
+ ),
159
+ children: e
160
+ },
161
+ e
162
+ )) })
163
+ ] })
164
+ ] }),
165
+ /* @__PURE__ */ n("div", { className: "bear-flex bear-gap-2 bear-justify-between", children: [
166
+ V && b ? /* @__PURE__ */ r("button", { type: "button", onClick: q, className: "bear-text-sm bear-text-zinc-500 hover:bear-text-zinc-700", children: "Clear" }) : /* @__PURE__ */ r("span", {}),
167
+ /* @__PURE__ */ n("div", { className: "bear-flex bear-gap-2", children: [
168
+ /* @__PURE__ */ r("button", { type: "button", onClick: G, className: "bear-text-sm bear-text-bear-600 hover:bear-text-bear-700 bear-font-medium", children: "Today" }),
169
+ /* @__PURE__ */ r("button", { type: "button", onClick: W, className: "bear-text-sm bear-bg-bear-500 bear-text-white bear-px-3 bear-py-1 bear-rounded bear-font-medium hover:bear-bg-bear-600", children: "Confirm" })
170
+ ] })
171
+ ] })
172
+ ] })
173
+ ] })
174
+ ] });
175
+ };
176
+ export {
177
+ xe as DateTimePicker
178
+ };
@@ -0,0 +1,26 @@
1
+ import { CalendarSlots } from '../Calendar/Calendar.types';
2
+ import { BisProp } from '../../types/bis.types';
3
+ export interface DateTimePickerProps {
4
+ value?: Date | null;
5
+ onChange?: (date: Date | null) => void;
6
+ minDate?: Date;
7
+ maxDate?: Date;
8
+ disabled?: boolean;
9
+ placeholder?: string;
10
+ label?: string;
11
+ error?: string;
12
+ helperText?: string;
13
+ dateFormat?: string;
14
+ timeFormat?: '12h' | '24h';
15
+ minuteStep?: number;
16
+ clearable?: boolean;
17
+ className?: string;
18
+ style?: React.CSSProperties;
19
+ bis?: BisProp;
20
+ /** Calendar slot overrides */
21
+ slots?: CalendarSlots;
22
+ weekdayLabels?: string[];
23
+ firstDayOfWeek?: number;
24
+ size?: 'sm' | 'md' | 'lg';
25
+ variant?: 'default' | 'filled' | 'outline';
26
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a="MM/DD/YYYY";function i(t,n=a){if(!t)return"";const r=t.getDate().toString().padStart(2,"0"),e=(t.getMonth()+1).toString().padStart(2,"0"),o=t.getFullYear().toString();return n.replace("DD",r).replace("MM",e).replace("YYYY",o)}function c(t,n){const r=t.getHours(),e=t.getMinutes();if(n==="24h")return`${r.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`;const o=r>=12?"PM":"AM";return`${(r%12||12).toString().padStart(2,"0")}:${e.toString().padStart(2,"0")} ${o}`}exports.formatDate=i;exports.formatTime=c;
@@ -0,0 +1,2 @@
1
+ export declare function formatDate(d: Date | null, format?: string): string;
2
+ export declare function formatTime(d: Date, fmt: '12h' | '24h'): string;
@@ -0,0 +1,16 @@
1
+ const e = "MM/DD/YYYY";
2
+ function i(t, o = e) {
3
+ if (!t) return "";
4
+ const r = t.getDate().toString().padStart(2, "0"), n = (t.getMonth() + 1).toString().padStart(2, "0"), a = t.getFullYear().toString();
5
+ return o.replace("DD", r).replace("MM", n).replace("YYYY", a);
6
+ }
7
+ function S(t, o) {
8
+ const r = t.getHours(), n = t.getMinutes();
9
+ if (o === "24h") return `${r.toString().padStart(2, "0")}:${n.toString().padStart(2, "0")}`;
10
+ const a = r >= 12 ? "PM" : "AM";
11
+ return `${(r % 12 || 12).toString().padStart(2, "0")}:${n.toString().padStart(2, "0")} ${a}`;
12
+ }
13
+ export {
14
+ i as formatDate,
15
+ S as formatTime
16
+ };
@@ -0,0 +1,2 @@
1
+ export { DateTimePicker } from './DateTimePicker';
2
+ export type { DateTimePickerProps } from './DateTimePicker.types';
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),m=require("../../utils/cn.cjs"),l={solid:"ember-border-solid",dashed:"ember-border-dashed",dotted:"ember-border-dotted"},u={left:"before:ember-w-4 after:ember-flex-1",center:"before:ember-flex-1 after:ember-flex-1",right:"before:ember-flex-1 after:ember-w-4"},c=({children:a,orientation:n="horizontal",variant:b="solid",color:d,textAlign:x="center",thickness:r=1,spacing:o=4,className:i,testId:s,style:f,...h})=>{const e=n==="horizontal";return a?t.jsxs("div",{className:m.cn("ember-flex ember-items-center ember-gap-4",e?"ember-w-full":"ember-flex-col ember-h-full",u[x],i),role:"separator",style:{marginTop:e?`${o*.25}rem`:0,marginBottom:e?`${o*.25}rem`:0,...f},"data-testid":s,children:[t.jsx("span",{className:m.cn("ember-flex-shrink-0",l[b]),style:{borderTopWidth:e?r:0,borderLeftWidth:e?0:r,borderColor:d||"#e5e7eb"}}),t.jsx("span",{className:"ember-text-sm ember-text-gray-500 ember-whitespace-nowrap ember-px-2",children:a}),t.jsx("span",{className:m.cn("ember-flex-shrink-0",l[b]),style:{borderTopWidth:e?r:0,borderLeftWidth:e?0:r,borderColor:d||"#e5e7eb"}})]}):t.jsx("hr",{className:m.cn("ember-border-0",e?"ember-w-full":"ember-h-full ember-w-px",l[b],i),style:{borderTopWidth:e?r:0,borderLeftWidth:e?0:r,borderColor:d||"#e5e7eb",marginTop:e?`${o*.25}rem`:0,marginBottom:e?`${o*.25}rem`:0,marginLeft:e?0:`${o*.25}rem`,marginRight:e?0:`${o*.25}rem`,...f},"data-testid":s,...h})};exports.Divider=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),t=require("../../utils/cn.cjs"),l={solid:"bear-border-solid",dashed:"bear-border-dashed",dotted:"bear-border-dotted"},u={left:"before:bear-w-4 after:bear-flex-1",center:"before:bear-flex-1 after:bear-flex-1",right:"before:bear-flex-1 after:bear-w-4"},c=({children:i,orientation:n="horizontal",variant:b="solid",color:d,textAlign:x="center",thickness:r=1,spacing:a=4,className:s,testId:f,style:m,...h})=>{const e=n==="horizontal";return i?o.jsxs("div",{className:t.cn("bear-flex bear-items-center bear-gap-4",e?"bear-w-full":"bear-flex-col bear-h-full",u[x],s),role:"separator",style:{marginTop:e?`${a*.25}rem`:0,marginBottom:e?`${a*.25}rem`:0,...m},"data-testid":f,children:[o.jsx("span",{className:t.cn("bear-flex-shrink-0",l[b]),style:{borderTopWidth:e?r:0,borderLeftWidth:e?0:r,borderColor:d||"#e5e7eb"}}),o.jsx("span",{className:"bear-text-sm bear-text-gray-500 bear-whitespace-nowrap bear-px-2",children:i}),o.jsx("span",{className:t.cn("bear-flex-shrink-0",l[b]),style:{borderTopWidth:e?r:0,borderLeftWidth:e?0:r,borderColor:d||"#e5e7eb"}})]}):o.jsx("hr",{className:t.cn("bear-border-0",e?"bear-w-full":"bear-h-full bear-w-px",l[b],s),style:{borderTopWidth:e?r:0,borderLeftWidth:e?0:r,borderColor:d||"#e5e7eb",marginTop:e?`${a*.25}rem`:0,marginBottom:e?`${a*.25}rem`:0,marginLeft:e?0:`${a*.25}rem`,marginRight:e?0:`${a*.25}rem`,...m},"data-testid":f,...h})};exports.Divider=c;
@@ -1,49 +1,49 @@
1
- import { jsx as m, jsxs as p } from "react/jsx-runtime";
1
+ import { jsx as o, jsxs as p } from "react/jsx-runtime";
2
2
  import { cn as t } from "../../utils/cn.js";
3
3
  const l = {
4
- solid: "ember-border-solid",
5
- dashed: "ember-border-dashed",
6
- dotted: "ember-border-dotted"
4
+ solid: "bear-border-solid",
5
+ dashed: "bear-border-dashed",
6
+ dotted: "bear-border-dotted"
7
7
  }, T = {
8
- left: "before:ember-w-4 after:ember-flex-1",
9
- center: "before:ember-flex-1 after:ember-flex-1",
10
- right: "before:ember-flex-1 after:ember-w-4"
8
+ left: "before:bear-w-4 after:bear-flex-1",
9
+ center: "before:bear-flex-1 after:bear-flex-1",
10
+ right: "before:bear-flex-1 after:bear-w-4"
11
11
  }, u = ({
12
- children: a,
12
+ children: f,
13
13
  orientation: x = "horizontal",
14
14
  variant: b = "solid",
15
15
  color: d,
16
16
  textAlign: h = "center",
17
17
  thickness: r = 1,
18
- spacing: o = 4,
19
- className: f,
18
+ spacing: a = 4,
19
+ className: m,
20
20
  testId: i,
21
21
  style: s,
22
22
  ...n
23
23
  }) => {
24
24
  const e = x === "horizontal";
25
- return a ? /* @__PURE__ */ p(
25
+ return f ? /* @__PURE__ */ p(
26
26
  "div",
27
27
  {
28
28
  className: t(
29
- "ember-flex ember-items-center ember-gap-4",
30
- e ? "ember-w-full" : "ember-flex-col ember-h-full",
29
+ "bear-flex bear-items-center bear-gap-4",
30
+ e ? "bear-w-full" : "bear-flex-col bear-h-full",
31
31
  T[h],
32
- f
32
+ m
33
33
  ),
34
34
  role: "separator",
35
35
  style: {
36
- marginTop: e ? `${o * 0.25}rem` : 0,
37
- marginBottom: e ? `${o * 0.25}rem` : 0,
36
+ marginTop: e ? `${a * 0.25}rem` : 0,
37
+ marginBottom: e ? `${a * 0.25}rem` : 0,
38
38
  ...s
39
39
  },
40
40
  "data-testid": i,
41
41
  children: [
42
- /* @__PURE__ */ m(
42
+ /* @__PURE__ */ o(
43
43
  "span",
44
44
  {
45
45
  className: t(
46
- "ember-flex-shrink-0",
46
+ "bear-flex-shrink-0",
47
47
  l[b]
48
48
  ),
49
49
  style: {
@@ -53,12 +53,12 @@ const l = {
53
53
  }
54
54
  }
55
55
  ),
56
- /* @__PURE__ */ m("span", { className: "ember-text-sm ember-text-gray-500 ember-whitespace-nowrap ember-px-2", children: a }),
57
- /* @__PURE__ */ m(
56
+ /* @__PURE__ */ o("span", { className: "bear-text-sm bear-text-gray-500 bear-whitespace-nowrap bear-px-2", children: f }),
57
+ /* @__PURE__ */ o(
58
58
  "span",
59
59
  {
60
60
  className: t(
61
- "ember-flex-shrink-0",
61
+ "bear-flex-shrink-0",
62
62
  l[b]
63
63
  ),
64
64
  style: {
@@ -70,23 +70,23 @@ const l = {
70
70
  )
71
71
  ]
72
72
  }
73
- ) : /* @__PURE__ */ m(
73
+ ) : /* @__PURE__ */ o(
74
74
  "hr",
75
75
  {
76
76
  className: t(
77
- "ember-border-0",
78
- e ? "ember-w-full" : "ember-h-full ember-w-px",
77
+ "bear-border-0",
78
+ e ? "bear-w-full" : "bear-h-full bear-w-px",
79
79
  l[b],
80
- f
80
+ m
81
81
  ),
82
82
  style: {
83
83
  borderTopWidth: e ? r : 0,
84
84
  borderLeftWidth: e ? 0 : r,
85
85
  borderColor: d || "#e5e7eb",
86
- marginTop: e ? `${o * 0.25}rem` : 0,
87
- marginBottom: e ? `${o * 0.25}rem` : 0,
88
- marginLeft: e ? 0 : `${o * 0.25}rem`,
89
- marginRight: e ? 0 : `${o * 0.25}rem`,
86
+ marginTop: e ? `${a * 0.25}rem` : 0,
87
+ marginBottom: e ? `${a * 0.25}rem` : 0,
88
+ marginLeft: e ? 0 : `${a * 0.25}rem`,
89
+ marginRight: e ? 0 : `${a * 0.25}rem`,
90
90
  ...s
91
91
  },
92
92
  "data-testid": i,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),r=require("react"),y=require("../../utils/cn.cjs"),_={xs:"ember-text-xs ember-py-1 ember-px-2",sm:"ember-text-sm ember-py-1.5 ember-px-3",md:"ember-text-sm ember-py-2 ember-px-3",lg:"ember-text-base ember-py-2.5 ember-px-4",xl:"ember-text-lg ember-py-3 ember-px-5"},B={"bottom-start":"ember-top-full ember-left-0 ember-mt-1","bottom-end":"ember-top-full ember-right-0 ember-mt-1",bottom:"ember-top-full ember-left-1/2 -ember-translate-x-1/2 ember-mt-1","top-start":"ember-bottom-full ember-left-0 ember-mb-1","top-end":"ember-bottom-full ember-right-0 ember-mb-1",top:"ember-bottom-full ember-left-1/2 -ember-translate-x-1/2 ember-mb-1",left:"ember-right-full ember-top-0 ember-mr-1",right:"ember-left-full ember-top-0 ember-ml-1"},K=({trigger:f,items:c,open:h,defaultOpen:N=!1,placement:S="bottom-start",offset:U=4,matchWidth:C=!1,minWidth:D=150,maxHeight:I=300,size:R="md",closeOnSelect:k=!0,closeOnClickOutside:v=!0,disabled:w=!1,onOpenChange:i,className:L,testId:A,...q})=>{var j;const[M,W]=r.useState(N),[l,o]=r.useState(-1),x=r.useRef(null),z=r.useRef(null),E=r.useRef(null),p=h!==void 0,n=p?h:M,u=r.useCallback(e=>{p||W(e),i==null||i(e)},[p,i]),F=r.useCallback(()=>{w||u(!n)},[w,n,u]),a=r.useCallback(()=>{u(!1),o(-1)},[u]),g=r.useCallback(e=>{var b;e.disabled||e.divider||e.header||((b=e.onClick)==null||b.call(e),k&&!e.items&&a())},[k,a]);r.useEffect(()=>{if(!v||!n)return;const e=b=>{x.current&&!x.current.contains(b.target)&&a()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[n,v,a]),r.useEffect(()=>{if(!n)return;const e=c.filter(t=>!t.disabled&&!t.divider&&!t.header),b=t=>{switch(t.key){case"Escape":t.preventDefault(),a();break;case"ArrowDown":t.preventDefault(),o(d=>{const m=d+1;return m>=e.length?0:m});break;case"ArrowUp":t.preventDefault(),o(d=>{const m=d-1;return m<0?e.length-1:m});break;case"Enter":case" ":t.preventDefault(),l>=0&&l<e.length&&g(e[l]);break}};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[n,c,l,a,g]),r.useEffect(()=>{n||o(-1)},[n]);const P=(e,b)=>{if(e.divider)return s.jsx("div",{className:"ember-my-1 ember-mx-2 ember-h-px ember-bg-gray-200 dark:ember-bg-gray-700",role:"separator"},e.key);if(e.header)return s.jsx("div",{className:"ember-px-3 ember-py-1.5 ember-text-xs ember-font-semibold ember-uppercase ember-tracking-wider ember-text-gray-500 dark:ember-text-gray-400",children:e.label},e.key);const t=c.slice(0,b).filter(m=>!m.disabled&&!m.divider&&!m.header).length,d=l===t;return s.jsxs("button",{type:"button",role:"menuitem",disabled:e.disabled,onClick:()=>g(e),onMouseEnter:()=>o(t),className:y.cn("ember-w-full ember-flex ember-items-center ember-gap-2 ember-text-left ember-border-none ember-bg-transparent",_[R],"ember-transition-colors ember-cursor-pointer",d&&"ember-bg-gray-100 dark:ember-bg-gray-800",e.danger?"ember-text-red-600 dark:ember-text-red-400 hover:ember-bg-red-50 dark:hover:ember-bg-red-900/20":"ember-text-gray-700 dark:ember-text-gray-200 hover:ember-bg-gray-100 dark:hover:ember-bg-gray-800",e.disabled&&"ember-opacity-50 ember-cursor-not-allowed ember-pointer-events-none"),children:[e.icon&&s.jsx("span",{className:"ember-flex-shrink-0 ember-w-5 ember-h-5 ember-flex ember-items-center ember-justify-center",children:e.icon}),s.jsx("span",{className:"ember-flex-1",children:e.label}),e.trailing&&s.jsx("span",{className:"ember-flex-shrink-0 ember-text-gray-400",children:e.trailing}),e.items&&s.jsx("svg",{className:"ember-w-4 ember-h-4 ember-text-gray-400",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:s.jsx("polyline",{points:"9 18 15 12 9 6"})})]},e.key)},T=r.isValidElement(f)?r.cloneElement(f,{onClick:F,ref:E,"aria-expanded":n,"aria-haspopup":!0}):f;return s.jsxs("div",{ref:x,className:y.cn("ember-relative ember-inline-block",L),"data-testid":A,...q,children:[T,n&&s.jsx("div",{ref:z,role:"menu",className:y.cn("ember-absolute ember-z-50","ember-bg-white dark:ember-bg-gray-900","ember-border ember-border-gray-200 dark:ember-border-gray-700","ember-rounded-lg ember-shadow-lg","ember-py-1 ember-overflow-y-auto","ember-animate-in ember-fade-in-0 ember-zoom-in-95 ember-duration-100",B[S]),style:{minWidth:C?(j=E.current)==null?void 0:j.offsetWidth:D,maxHeight:I},children:c.map((e,b)=>P(e,b))})]})};exports.Dropdown=K;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),r=require("react"),h=require("../../utils/cn.cjs"),_={xs:"bear-text-xs bear-py-1 bear-px-2",sm:"bear-text-sm bear-py-1.5 bear-px-3",md:"bear-text-sm bear-py-2 bear-px-3",lg:"bear-text-base bear-py-2.5 bear-px-4",xl:"bear-text-lg bear-py-3 bear-px-5"},B={"bottom-start":"bear-top-full bear-left-0 bear-mt-1","bottom-end":"bear-top-full bear-right-0 bear-mt-1",bottom:"bear-top-full bear-left-1/2 -bear-translate-x-1/2 bear-mt-1","top-start":"bear-bottom-full bear-left-0 bear-mb-1","top-end":"bear-bottom-full bear-right-0 bear-mb-1",top:"bear-bottom-full bear-left-1/2 -bear-translate-x-1/2 bear-mb-1",left:"bear-right-full bear-top-0 bear-mr-1",right:"bear-left-full bear-top-0 bear-ml-1"},K=({trigger:x,items:i,open:k,defaultOpen:N=!1,placement:S="bottom-start",offset:U=4,matchWidth:C=!1,minWidth:D=150,maxHeight:I=300,size:R="md",closeOnSelect:m=!0,closeOnClickOutside:v=!0,disabled:w=!1,onOpenChange:u,className:L,testId:A,...q})=>{var j;const[M,W]=r.useState(N),[o,d]=r.useState(-1),p=r.useRef(null),z=r.useRef(null),E=r.useRef(null),g=k!==void 0,b=g?k:M,f=r.useCallback(e=>{g||W(e),u==null||u(e)},[g,u]),F=r.useCallback(()=>{w||f(!b)},[w,b,f]),l=r.useCallback(()=>{f(!1),d(-1)},[f]),y=r.useCallback(e=>{var t;e.disabled||e.divider||e.header||((t=e.onClick)==null||t.call(e),m&&!e.items&&l())},[m,l]);r.useEffect(()=>{if(!v||!b)return;const e=t=>{p.current&&!p.current.contains(t.target)&&l()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[b,v,l]),r.useEffect(()=>{if(!b)return;const e=i.filter(a=>!a.disabled&&!a.divider&&!a.header),t=a=>{switch(a.key){case"Escape":a.preventDefault(),l();break;case"ArrowDown":a.preventDefault(),d(c=>{const s=c+1;return s>=e.length?0:s});break;case"ArrowUp":a.preventDefault(),d(c=>{const s=c-1;return s<0?e.length-1:s});break;case"Enter":case" ":a.preventDefault(),o>=0&&o<e.length&&y(e[o]);break}};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[b,i,o,l,y]),r.useEffect(()=>{b||d(-1)},[b]);const P=(e,t)=>{if(e.divider)return n.jsx("div",{className:"bear-my-1 bear-mx-2 bear-h-px bear-bg-gray-200 dark:bear-bg-gray-700",role:"separator"},e.key);if(e.header)return n.jsx("div",{className:"bear-px-3 bear-py-1.5 bear-text-xs bear-font-semibold bear-uppercase bear-tracking-wider bear-text-gray-500 dark:bear-text-gray-400",children:e.label},e.key);const a=i.slice(0,t).filter(s=>!s.disabled&&!s.divider&&!s.header).length,c=o===a;return n.jsxs("button",{type:"button",role:"menuitem",disabled:e.disabled,onClick:()=>y(e),onMouseEnter:()=>d(a),className:h.cn("bear-w-full bear-flex bear-items-center bear-gap-2 bear-text-left bear-border-none bear-bg-transparent",_[R],"bear-transition-colors bear-cursor-pointer",c&&"bear-bg-gray-100 dark:bear-bg-gray-800",e.danger?"bear-text-red-600 dark:bear-text-red-400 hover:bear-bg-red-50 dark:hover:bear-bg-red-900/20":"bear-text-gray-700 dark:bear-text-gray-200 hover:bear-bg-gray-100 dark:hover:bear-bg-gray-800",e.disabled&&"bear-opacity-50 bear-cursor-not-allowed bear-pointer-events-none"),children:[e.icon&&n.jsx("span",{className:"bear-flex-shrink-0 bear-w-5 bear-h-5 bear-flex bear-items-center bear-justify-center",children:e.icon}),n.jsx("span",{className:"bear-flex-1",children:e.label}),e.trailing&&n.jsx("span",{className:"bear-flex-shrink-0 bear-text-gray-400",children:e.trailing}),e.items&&n.jsx("svg",{className:"bear-w-4 bear-h-4 bear-text-gray-400",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:n.jsx("polyline",{points:"9 18 15 12 9 6"})})]},e.key)},T=r.isValidElement(x)?r.cloneElement(x,{onClick:F,ref:E,"aria-expanded":b,"aria-haspopup":!0}):x;return n.jsxs("div",{ref:p,className:h.cn("bear-relative bear-inline-block",L),"data-testid":A,...q,children:[T,b&&n.jsx("div",{ref:z,role:"menu",className:h.cn("bear-absolute bear-z-50","bear-bg-white dark:bear-bg-gray-900","bear-border bear-border-gray-200 dark:bear-border-gray-700","bear-rounded-lg bear-shadow-lg","bear-py-1 bear-overflow-y-auto","bear-animate-in bear-fade-in-0 bear-zoom-in-95 bear-duration-100",B[S]),style:{minWidth:C?(j=E.current)==null?void 0:j.offsetWidth:D,maxHeight:I},children:i.map((e,t)=>P(e,t))})]})};exports.Dropdown=K;