@forgedevstack/bear 1.0.5 โ†’ 1.0.7

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 (183) hide show
  1. package/dist/components/BottomSheet/BottomSheet.cjs +1 -0
  2. package/dist/components/BottomSheet/BottomSheet.d.ts +3 -0
  3. package/dist/components/BottomSheet/BottomSheet.js +102 -0
  4. package/dist/components/BottomSheet/BottomSheet.types.d.ts +13 -0
  5. package/dist/components/BottomSheet/index.d.ts +2 -0
  6. package/dist/components/Button/Button.cjs +1 -1
  7. package/dist/components/Button/Button.js +40 -38
  8. package/dist/components/Button/Button.types.d.ts +4 -0
  9. package/dist/components/Calendar/Calendar.cjs +1 -1
  10. package/dist/components/Calendar/Calendar.const.cjs +1 -1
  11. package/dist/components/Calendar/Calendar.const.d.ts +1 -0
  12. package/dist/components/Calendar/Calendar.const.js +6 -5
  13. package/dist/components/Calendar/Calendar.helpers.cjs +1 -1
  14. package/dist/components/Calendar/Calendar.helpers.js +4 -4
  15. package/dist/components/Calendar/Calendar.js +128 -128
  16. package/dist/components/Cascader/Cascader.cjs +1 -0
  17. package/dist/components/Cascader/Cascader.const.cjs +1 -0
  18. package/dist/components/Cascader/Cascader.const.d.ts +33 -0
  19. package/dist/components/Cascader/Cascader.const.js +21 -0
  20. package/dist/components/Cascader/Cascader.d.ts +17 -0
  21. package/dist/components/Cascader/Cascader.js +227 -0
  22. package/dist/components/Cascader/Cascader.types.d.ts +94 -0
  23. package/dist/components/Cascader/index.d.ts +2 -0
  24. package/dist/components/CommandPalette/CommandPalette.cjs +1 -0
  25. package/dist/components/CommandPalette/CommandPalette.const.cjs +1 -0
  26. package/dist/components/CommandPalette/CommandPalette.const.d.ts +25 -0
  27. package/dist/components/CommandPalette/CommandPalette.const.js +13 -0
  28. package/dist/components/CommandPalette/CommandPalette.d.ts +18 -0
  29. package/dist/components/CommandPalette/CommandPalette.js +190 -0
  30. package/dist/components/CommandPalette/CommandPalette.types.d.ts +90 -0
  31. package/dist/components/CommandPalette/CommandPalette.utils.cjs +1 -0
  32. package/dist/components/CommandPalette/CommandPalette.utils.d.ts +17 -0
  33. package/dist/components/CommandPalette/CommandPalette.utils.js +63 -0
  34. package/dist/components/CommandPalette/index.d.ts +2 -0
  35. package/dist/components/CreditInput/CreditInput.cjs +1 -0
  36. package/dist/components/CreditInput/CreditInput.const.cjs +1 -0
  37. package/dist/components/CreditInput/CreditInput.const.d.ts +37 -0
  38. package/dist/components/CreditInput/CreditInput.const.js +66 -0
  39. package/dist/components/CreditInput/CreditInput.d.ts +15 -0
  40. package/dist/components/CreditInput/CreditInput.js +214 -0
  41. package/dist/components/CreditInput/CreditInput.types.d.ts +93 -0
  42. package/dist/components/CreditInput/CreditInput.utils.cjs +1 -0
  43. package/dist/components/CreditInput/CreditInput.utils.d.ts +48 -0
  44. package/dist/components/CreditInput/CreditInput.utils.js +79 -0
  45. package/dist/components/CreditInput/index.d.ts +2 -0
  46. package/dist/components/DatePicker/DatePicker.cjs +1 -1
  47. package/dist/components/DatePicker/DatePicker.js +108 -84
  48. package/dist/components/DatePicker/DatePicker.types.d.ts +2 -1
  49. package/dist/components/Drawer/Drawer.cjs +1 -1
  50. package/dist/components/Drawer/Drawer.js +75 -44
  51. package/dist/components/EmojiPicker/EmojiPicker.cjs +1 -0
  52. package/dist/components/EmojiPicker/EmojiPicker.const.cjs +1 -0
  53. package/dist/components/EmojiPicker/EmojiPicker.const.d.ts +5 -0
  54. package/dist/components/EmojiPicker/EmojiPicker.const.js +10 -0
  55. package/dist/components/EmojiPicker/EmojiPicker.d.ts +3 -0
  56. package/dist/components/EmojiPicker/EmojiPicker.js +63 -0
  57. package/dist/components/EmojiPicker/EmojiPicker.types.d.ts +6 -0
  58. package/dist/components/EmojiPicker/index.d.ts +3 -0
  59. package/dist/components/Form/Form.cjs +1 -0
  60. package/dist/components/Form/Form.const.cjs +1 -0
  61. package/dist/components/Form/Form.const.d.ts +33 -0
  62. package/dist/components/Form/Form.const.js +27 -0
  63. package/dist/components/Form/Form.context.cjs +1 -0
  64. package/dist/components/Form/Form.context.d.ts +13 -0
  65. package/dist/components/Form/Form.context.js +12 -0
  66. package/dist/components/Form/Form.d.ts +18 -0
  67. package/dist/components/Form/Form.js +230 -0
  68. package/dist/components/Form/Form.types.d.ts +166 -0
  69. package/dist/components/Form/Form.utils.cjs +1 -0
  70. package/dist/components/Form/Form.utils.d.ts +17 -0
  71. package/dist/components/Form/Form.utils.js +31 -0
  72. package/dist/components/Form/index.d.ts +3 -0
  73. package/dist/components/Kanban/Kanban.cjs +1 -0
  74. package/dist/components/Kanban/Kanban.d.ts +3 -0
  75. package/dist/components/Kanban/Kanban.js +90 -0
  76. package/dist/components/Kanban/Kanban.types.d.ts +21 -0
  77. package/dist/components/Kanban/index.d.ts +2 -0
  78. package/dist/components/MentionsInput/MentionsInput.cjs +1 -0
  79. package/dist/components/MentionsInput/MentionsInput.d.ts +3 -0
  80. package/dist/components/MentionsInput/MentionsInput.js +140 -0
  81. package/dist/components/MentionsInput/MentionsInput.types.d.ts +21 -0
  82. package/dist/components/MentionsInput/index.d.ts +2 -0
  83. package/dist/components/NotificationCenter/NotificationCenter.cjs +1 -0
  84. package/dist/components/NotificationCenter/NotificationCenter.const.cjs +1 -0
  85. package/dist/components/NotificationCenter/NotificationCenter.const.d.ts +25 -0
  86. package/dist/components/NotificationCenter/NotificationCenter.const.js +28 -0
  87. package/dist/components/NotificationCenter/NotificationCenter.d.ts +15 -0
  88. package/dist/components/NotificationCenter/NotificationCenter.js +223 -0
  89. package/dist/components/NotificationCenter/NotificationCenter.types.d.ts +117 -0
  90. package/dist/components/NotificationCenter/NotificationCenter.utils.cjs +1 -0
  91. package/dist/components/NotificationCenter/NotificationCenter.utils.d.ts +11 -0
  92. package/dist/components/NotificationCenter/NotificationCenter.utils.js +19 -0
  93. package/dist/components/NotificationCenter/index.d.ts +2 -0
  94. package/dist/components/PhoneInput/PhoneInput.cjs +1 -0
  95. package/dist/components/PhoneInput/PhoneInput.const.cjs +1 -0
  96. package/dist/components/PhoneInput/PhoneInput.const.d.ts +33 -0
  97. package/dist/components/PhoneInput/PhoneInput.const.js +82 -0
  98. package/dist/components/PhoneInput/PhoneInput.d.ts +16 -0
  99. package/dist/components/PhoneInput/PhoneInput.js +194 -0
  100. package/dist/components/PhoneInput/PhoneInput.types.d.ts +108 -0
  101. package/dist/components/PhoneInput/PhoneInput.utils.cjs +1 -0
  102. package/dist/components/PhoneInput/PhoneInput.utils.d.ts +25 -0
  103. package/dist/components/PhoneInput/PhoneInput.utils.js +39 -0
  104. package/dist/components/PhoneInput/index.d.ts +2 -0
  105. package/dist/components/RichEditor/RichEditor.cjs +1 -1
  106. package/dist/components/RichEditor/RichEditor.const.cjs +2 -2
  107. package/dist/components/RichEditor/RichEditor.const.d.ts +4 -1
  108. package/dist/components/RichEditor/RichEditor.const.js +51 -18
  109. package/dist/components/RichEditor/RichEditor.js +106 -105
  110. package/dist/components/RichEditor/components/ToolbarColorPicker/ToolbarColorPicker.cjs +1 -1
  111. package/dist/components/RichEditor/components/ToolbarColorPicker/ToolbarColorPicker.js +105 -95
  112. package/dist/components/RichEditor/components/ToolbarMore/ToolbarMore.cjs +1 -1
  113. package/dist/components/RichEditor/components/ToolbarMore/ToolbarMore.d.ts +2 -0
  114. package/dist/components/RichEditor/components/ToolbarMore/ToolbarMore.js +47 -29
  115. package/dist/components/SegmentedControl/SegmentedControl.cjs +1 -0
  116. package/dist/components/SegmentedControl/SegmentedControl.d.ts +3 -0
  117. package/dist/components/SegmentedControl/SegmentedControl.js +58 -0
  118. package/dist/components/SegmentedControl/SegmentedControl.types.d.ts +16 -0
  119. package/dist/components/SegmentedControl/index.d.ts +2 -0
  120. package/dist/components/SignPad/SignPad.cjs +1 -1
  121. package/dist/components/SignPad/SignPad.js +94 -86
  122. package/dist/components/SliderRange/SliderRange.cjs +1 -0
  123. package/dist/components/SliderRange/SliderRange.d.ts +3 -0
  124. package/dist/components/SliderRange/SliderRange.js +142 -0
  125. package/dist/components/SliderRange/SliderRange.types.d.ts +17 -0
  126. package/dist/components/SliderRange/index.d.ts +2 -0
  127. package/dist/components/TagsInput/TagsInput.cjs +1 -0
  128. package/dist/components/TagsInput/TagsInput.d.ts +3 -0
  129. package/dist/components/TagsInput/TagsInput.js +100 -0
  130. package/dist/components/TagsInput/TagsInput.types.d.ts +16 -0
  131. package/dist/components/TagsInput/index.d.ts +2 -0
  132. package/dist/components/TimePicker/TimePicker.cjs +1 -1
  133. package/dist/components/TimePicker/TimePicker.constants.cjs +1 -1
  134. package/dist/components/TimePicker/TimePicker.constants.d.ts +22 -1
  135. package/dist/components/TimePicker/TimePicker.constants.js +36 -19
  136. package/dist/components/TimePicker/TimePicker.js +97 -131
  137. package/dist/components/TimePicker/TimePicker.types.d.ts +47 -6
  138. package/dist/components/TimePicker/components/TimePickerColumnsDropdown/TimePickerColumnsDropdown.cjs +1 -0
  139. package/dist/components/TimePicker/components/TimePickerColumnsDropdown/TimePickerColumnsDropdown.d.ts +3 -0
  140. package/dist/components/TimePicker/components/TimePickerColumnsDropdown/TimePickerColumnsDropdown.js +81 -0
  141. package/dist/components/TimePicker/components/TimePickerColumnsDropdown/index.d.ts +1 -0
  142. package/dist/components/TimePicker/components/TimePickerDialDropdown/TimePickerDialDropdown.cjs +1 -0
  143. package/dist/components/TimePicker/components/TimePickerDialDropdown/TimePickerDialDropdown.d.ts +3 -0
  144. package/dist/components/TimePicker/components/TimePickerDialDropdown/TimePickerDialDropdown.js +84 -0
  145. package/dist/components/TimePicker/components/TimePickerDialDropdown/index.d.ts +1 -0
  146. package/dist/components/TimePicker/helpers/ClockFaceSvg.cjs +1 -0
  147. package/dist/components/TimePicker/helpers/ClockFaceSvg.d.ts +18 -0
  148. package/dist/components/TimePicker/helpers/ClockFaceSvg.js +67 -0
  149. package/dist/components/TimePicker/helpers/index.d.ts +2 -0
  150. package/dist/components/TimePicker/index.d.ts +1 -1
  151. package/dist/components/VirtualList/VirtualList.cjs +1 -0
  152. package/dist/components/VirtualList/VirtualList.d.ts +3 -0
  153. package/dist/components/VirtualList/VirtualList.js +68 -0
  154. package/dist/components/VirtualList/VirtualList.types.d.ts +10 -0
  155. package/dist/components/VirtualList/index.d.ts +2 -0
  156. package/dist/components/index.cjs +1 -1
  157. package/dist/components/index.d.ts +28 -2
  158. package/dist/components/index.js +177 -146
  159. package/dist/hooks/index.cjs +1 -1
  160. package/dist/hooks/index.d.ts +4 -0
  161. package/dist/hooks/index.js +36 -32
  162. package/dist/hooks/useDragDrop/index.d.ts +2 -0
  163. package/dist/hooks/useDragDrop/useDragDrop.cjs +1 -0
  164. package/dist/hooks/useDragDrop/useDragDrop.d.ts +22 -0
  165. package/dist/hooks/useDragDrop/useDragDrop.js +56 -0
  166. package/dist/hooks/useDragDrop/useDragDrop.types.d.ts +55 -0
  167. package/dist/hooks/useLazyLoad/index.d.ts +2 -0
  168. package/dist/hooks/useLazyLoad/useLazyLoad.cjs +1 -0
  169. package/dist/hooks/useLazyLoad/useLazyLoad.d.ts +26 -0
  170. package/dist/hooks/useLazyLoad/useLazyLoad.js +27 -0
  171. package/dist/hooks/useLazyLoad/useLazyLoad.types.d.ts +25 -0
  172. package/dist/index.cjs +1 -1
  173. package/dist/index.js +290 -255
  174. package/dist/styles.css +1 -1
  175. package/package.json +1 -1
  176. package/dist/components/DateTimePicker/DateTimePicker.cjs +0 -1
  177. package/dist/components/DateTimePicker/DateTimePicker.d.ts +0 -3
  178. package/dist/components/DateTimePicker/DateTimePicker.js +0 -178
  179. package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +0 -26
  180. package/dist/components/DateTimePicker/DateTimePicker.utils.cjs +0 -1
  181. package/dist/components/DateTimePicker/DateTimePicker.utils.d.ts +0 -2
  182. package/dist/components/DateTimePicker/DateTimePicker.utils.js +0 -16
  183. package/dist/components/DateTimePicker/index.d.ts +0 -2
@@ -0,0 +1,48 @@
1
+ import { CardType, CreditCardValue } from './CreditInput.types';
2
+ /**
3
+ * Detect card type from card number
4
+ */
5
+ export declare const detectCardType: (number: string) => CardType;
6
+ /**
7
+ * Format card number with spaces
8
+ */
9
+ export declare const formatCardNumber: (number: string, cardType: CardType) => string;
10
+ /**
11
+ * Format expiry date as MM/YY
12
+ */
13
+ export declare const formatExpiry: (value: string) => string;
14
+ /**
15
+ * Parse expiry date to month and year
16
+ */
17
+ export declare const parseExpiry: (value: string) => {
18
+ month: string;
19
+ year: string;
20
+ };
21
+ /**
22
+ * Validate card number using Luhn algorithm
23
+ */
24
+ export declare const validateLuhn: (number: string) => boolean;
25
+ /**
26
+ * Validate card number length
27
+ */
28
+ export declare const validateCardLength: (number: string, cardType: CardType) => boolean;
29
+ /**
30
+ * Validate CVV length
31
+ */
32
+ export declare const validateCvvLength: (cvv: string, cardType: CardType) => boolean;
33
+ /**
34
+ * Validate expiry date
35
+ */
36
+ export declare const validateExpiry: (month: string, year: string) => boolean;
37
+ /**
38
+ * Create credit card value object
39
+ */
40
+ export declare const createCreditCardValue: (number: string, expiry: string, cvv: string, name?: string) => CreditCardValue;
41
+ /**
42
+ * Get max CVV length for card type
43
+ */
44
+ export declare const getMaxCvvLength: (cardType: CardType) => number;
45
+ /**
46
+ * Get max card number length for card type
47
+ */
48
+ export declare const getMaxCardLength: (cardType: CardType) => number;
@@ -0,0 +1,79 @@
1
+ import { CARD_PATTERNS as f, CARD_NUMBER_LENGTHS as i, CARD_FORMATS as u, CVV_LENGTHS as c } from "./CreditInput.const.js";
2
+ const h = (e) => {
3
+ const t = e.replace(/\D/g, ""), n = ["amex", "diners", "discover", "jcb", "unionpay", "mastercard", "visa"];
4
+ for (const r of n)
5
+ if (f[r].test(t))
6
+ return r;
7
+ return "unknown";
8
+ }, m = (e, t) => {
9
+ const n = e.replace(/\D/g, ""), r = u[t] || u.unknown;
10
+ let s = "", o = 0;
11
+ for (const a of r) {
12
+ if (o >= n.length) break;
13
+ s && (s += " "), s += n.slice(o, o + a), o += a;
14
+ }
15
+ return s;
16
+ }, L = (e) => {
17
+ const t = e.replace(/\D/g, "");
18
+ if (t.length === 0) return "";
19
+ if (t.length === 1)
20
+ return parseInt(t) > 1 ? `0${t}/` : t;
21
+ if (t.length === 2)
22
+ return parseInt(t) > 12 ? `0${t[0]}/${t[1]}` : `${t}/`;
23
+ const n = t.slice(0, 2), r = t.slice(2, 4);
24
+ return `${n}/${r}`;
25
+ }, v = (e) => {
26
+ const t = e.split("/");
27
+ return {
28
+ month: t[0] || "",
29
+ year: t[1] || ""
30
+ };
31
+ }, y = (e) => {
32
+ const t = e.replace(/\D/g, "");
33
+ if (t.length === 0) return !1;
34
+ let n = 0, r = !1;
35
+ for (let s = t.length - 1; s >= 0; s--) {
36
+ let o = parseInt(t[s], 10);
37
+ r && (o *= 2, o > 9 && (o -= 9)), n += o, r = !r;
38
+ }
39
+ return n % 10 === 0;
40
+ }, x = (e, t) => {
41
+ const n = e.replace(/\D/g, "");
42
+ return (i[t] || i.unknown).includes(n.length);
43
+ }, C = (e, t) => {
44
+ const n = e.replace(/\D/g, ""), r = c[t] || c.unknown;
45
+ return n.length === r;
46
+ }, N = (e, t) => {
47
+ const n = parseInt(e, 10), r = parseInt(t, 10);
48
+ if (isNaN(n) || isNaN(r) || n < 1 || n > 12) return !1;
49
+ const s = /* @__PURE__ */ new Date(), o = s.getFullYear() % 100, a = s.getMonth() + 1;
50
+ return !(r < o || r === o && n < a);
51
+ }, w = (e, t, n, r) => {
52
+ const s = e.replace(/\D/g, ""), o = h(s), { month: a, year: l } = v(t), g = y(s) && x(s, o), d = N(a, l), p = C(n, o);
53
+ return {
54
+ number: m(s, o),
55
+ rawNumber: s,
56
+ expiryMonth: a,
57
+ expiryYear: l,
58
+ cvv: n.replace(/\D/g, ""),
59
+ name: r,
60
+ cardType: o,
61
+ isValid: g && d && p
62
+ };
63
+ }, E = (e) => c[e] || c.unknown, M = (e) => {
64
+ const t = i[e] || i.unknown;
65
+ return Math.max(...t);
66
+ };
67
+ export {
68
+ w as createCreditCardValue,
69
+ h as detectCardType,
70
+ m as formatCardNumber,
71
+ L as formatExpiry,
72
+ M as getMaxCardLength,
73
+ E as getMaxCvvLength,
74
+ v as parseExpiry,
75
+ x as validateCardLength,
76
+ C as validateCvvLength,
77
+ N as validateExpiry,
78
+ y as validateLuhn
79
+ };
@@ -0,0 +1,2 @@
1
+ export { CreditInput } from './CreditInput';
2
+ export type { CreditInputProps, CreditCardValue, CardType, CreditInputSize, CreditInputVariant, CreditInputMode, CreditInputTranslations, } from './CreditInput.types';
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),r=require("react"),H=require("../Calendar/Calendar.cjs"),m=require("../../utils/cn.cjs"),I=require("../../hooks/useBearStyles.cjs"),W=require("./DatePicker.utils.cjs"),_=({value:s,onChange:e,minDate:x,maxDate:f,disabled:n=!1,placeholder:p="Select date",label:i,error:l,helperText:o,format:k="MM/DD/YYYY",clearable:w=!0,className:y,style:j,bis:z,showWeekNumbers:D=!1,disabledDates:S=[],highlightedDates:v=[],slots:q,weekdayLabels:N,firstDayOfWeek:V=0,size:h="md",variant:M="default"})=>{const[u,c]=r.useState(!1),[O,B]=r.useState(s??new Date),b=r.useRef(null),d=I.useBearStyles(z,j);r.useEffect(()=>{const a=T=>{b.current&&!b.current.contains(T.target)&&c(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[]);const L=r.useCallback(a=>{e==null||e(a),c(!1)},[e]),P=r.useCallback(()=>{e==null||e(null),c(!1)},[e]),R=r.useCallback(a=>{B(a)},[]),Y={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"},E={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"};return t.jsxs("div",{ref:b,className:m.cn("bear-relative",y),style:Object.keys(d).length?d:void 0,children:[i&&t.jsx("label",{className:"bear-block bear-text-sm bear-font-medium bear-text-zinc-300 bear-mb-1.5",children:i}),t.jsxs("button",{type:"button",onClick:()=>!n&&c(!u),disabled:n,className:m.cn("bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-text-left bear-transition-colors",Y[h],E[M],l?"bear-border-red-500":"focus:bear-border-pink-500",n&&"bear-opacity-50 bear-cursor-not-allowed",s?"bear-text-white":"bear-text-zinc-500"),children:[t.jsx("span",{children:s?W.formatDate(s,k):p}),t.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:t.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"})})]}),l&&t.jsx("p",{className:"bear-mt-1 bear-text-xs bear-text-red-400",children:l}),o&&!l&&t.jsx("p",{className:"bear-mt-1 bear-text-xs bear-text-zinc-500",children:o}),u&&t.jsx(H.Calendar,{viewDate:O,onViewChange:R,value:s??null,onSelect:L,minDate:x,maxDate:f,disabledDates:S,highlightedDates:v,slots:q,weekdayLabels:N,firstDayOfWeek:V,showWeekNumbers:D,clearable:w,onClear:P,showTodayButton:!0,onToday:()=>{e==null||e(new Date),c(!1)}})]})};exports.DatePicker=_;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),a=require("react"),J=require("react-dom"),K=require("../Calendar/Calendar.cjs"),D=require("../../utils/cn.cjs"),Q=require("../../hooks/useBearStyles.cjs"),U=require("./DatePicker.utils.cjs"),X=({value:c,onChange:t,minDate:y,maxDate:j,disabled:b=!1,placeholder:z="Select date",label:p,error:o,helperText:m,format:B="MM/DD/YYYY",clearable:P=!0,className:_,style:h,bis:v,showWeekNumbers:S=!1,disabledDates:N=[],highlightedDates:g=[],slots:q,weekdayLabels:R,firstDayOfWeek:V=0,size:H="md",variant:M="default",icon:O})=>{const[i,n]=a.useState(!1),[E,L]=a.useState(c??new Date),[x,Y]=a.useState({top:0,left:0}),k=a.useRef(null),d=a.useRef(null),w=Q.useBearStyles(v,h);a.useEffect(()=>{if(i&&d.current){const e=d.current.getBoundingClientRect(),l=8,s=360,G=window.innerHeight-e.bottom<s&&e.top>s;Y({top:G?e.top-s-l:e.bottom+l,left:e.left})}},[i]),a.useEffect(()=>{const e=l=>{var u,f;const s=l.target;(u=k.current)!=null&&u.contains(s)||(f=s.closest)!=null&&f.call(s,"[data-bear-datepicker-calendar]")||n(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);const T=a.useCallback(e=>{t==null||t(e),n(!1)},[t]),A=a.useCallback(()=>{t==null||t(null),n(!1)},[t]),I=a.useCallback(e=>{L(e)},[]),W={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-white dark:bear-bg-zinc-800 bear-border-zinc-300 dark:bear-border-zinc-600",filled:"bear-bg-zinc-100 dark:bear-bg-zinc-700 bear-border-transparent",outline:"bear-bg-transparent bear-border-zinc-400 dark:bear-border-zinc-500"};return r.jsxs("div",{ref:k,className:D.cn("Bear-DatePicker bear-relative",_),style:Object.keys(w).length?w:void 0,children:[p&&r.jsx("label",{className:"Bear-DatePicker__label bear-block bear-text-sm bear-font-medium bear-text-zinc-700 dark:bear-text-zinc-300 bear-mb-1.5",children:p}),r.jsxs("button",{ref:d,type:"button",onClick:()=>!b&&n(!i),disabled:b,className:D.cn("Bear-DatePicker__trigger bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-text-left bear-transition-colors",W[H],F[M],o?"bear-border-red-500":"focus:bear-border-pink-500",b&&"bear-opacity-50 bear-cursor-not-allowed",c?"bear-text-zinc-900 dark:bear-text-white":"bear-text-zinc-500"),children:[r.jsx("span",{className:"Bear-DatePicker__value",children:c?U.formatDate(c,B):z}),r.jsx("span",{className:"Bear-DatePicker__icon",children:O??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"})})})]}),o&&r.jsx("p",{className:"Bear-DatePicker__error bear-mt-1 bear-text-xs bear-text-red-400",children:o}),m&&!o&&r.jsx("p",{className:"Bear-DatePicker__helper bear-mt-1 bear-text-xs bear-text-zinc-500",children:m}),i&&typeof document<"u"&&J.createPortal(r.jsx("div",{"data-bear-datepicker-calendar":!0,className:"Bear-DatePicker__dropdown bear-fixed bear-z-[9999]",style:{top:x.top,left:x.left},children:r.jsx(K.Calendar,{viewDate:E,onViewChange:I,value:c??null,onSelect:T,minDate:y,maxDate:j,disabledDates:N,highlightedDates:g,slots:q,weekdayLabels:R,firstDayOfWeek:V,showWeekNumbers:S,clearable:P,onClear:A,showTodayButton:!0,onToday:()=>{t==null||t(new Date),n(!1)}})}),document.body)]})};exports.DatePicker=X;
@@ -1,103 +1,127 @@
1
- import { jsxs as u, jsx as t } from "react/jsx-runtime";
2
- import { useState as f, useRef as q, useEffect as A, useCallback as c } from "react";
3
- import { Calendar as F } from "../Calendar/Calendar.js";
4
- import { cn as p } from "../../utils/cn.js";
5
- import { useBearStyles as G } from "../../hooks/useBearStyles.js";
6
- import { formatDate as J } from "./DatePicker.utils.js";
7
- const $ = ({
8
- value: a,
9
- onChange: e,
10
- minDate: x,
11
- maxDate: w,
12
- disabled: b = !1,
13
- placeholder: k = "Select date",
14
- label: o,
15
- error: l,
16
- helperText: i,
17
- format: y = "MM/DD/YYYY",
18
- clearable: z = !0,
19
- className: v,
20
- style: D,
21
- bis: N,
22
- showWeekNumbers: S = !1,
23
- disabledDates: V = [],
24
- highlightedDates: h = [],
25
- slots: j,
26
- weekdayLabels: L,
27
- firstDayOfWeek: M = 0,
28
- size: O = "md",
29
- variant: Y = "default"
1
+ import { jsxs as z, jsx as r } from "react/jsx-runtime";
2
+ import { useState as p, useRef as y, useEffect as h, useCallback as f } from "react";
3
+ import { createPortal as X } from "react-dom";
4
+ import { Calendar as Z } from "../Calendar/Calendar.js";
5
+ import { cn as B } from "../../utils/cn.js";
6
+ import { useBearStyles as $ } from "../../hooks/useBearStyles.js";
7
+ import { formatDate as C } from "./DatePicker.utils.js";
8
+ const ce = ({
9
+ value: o,
10
+ onChange: t,
11
+ minDate: _,
12
+ maxDate: v,
13
+ disabled: l = !1,
14
+ placeholder: P = "Select date",
15
+ label: u,
16
+ error: n,
17
+ helperText: k,
18
+ format: N = "MM/DD/YYYY",
19
+ clearable: g = !0,
20
+ className: S,
21
+ style: V,
22
+ bis: j,
23
+ showWeekNumbers: H = !1,
24
+ disabledDates: L = [],
25
+ highlightedDates: M = [],
26
+ slots: O,
27
+ weekdayLabels: R,
28
+ firstDayOfWeek: Y = 0,
29
+ size: E = "md",
30
+ variant: A = "default",
31
+ icon: I
30
32
  }) => {
31
- const [d, s] = f(!1), [B, E] = f(a ?? /* @__PURE__ */ new Date()), n = q(null), m = G(N, D);
32
- A(() => {
33
- const r = (W) => {
34
- n.current && !n.current.contains(W.target) && s(!1);
33
+ const [c, s] = p(!1), [T, W] = p(o ?? /* @__PURE__ */ new Date()), [w, q] = p({ top: 0, left: 0 }), x = y(null), b = y(null), D = $(j, V);
34
+ h(() => {
35
+ if (c && b.current) {
36
+ const e = b.current.getBoundingClientRect(), i = 8, a = 360, U = window.innerHeight - e.bottom < a && e.top > a;
37
+ q({
38
+ top: U ? e.top - a - i : e.bottom + i,
39
+ left: e.left
40
+ });
41
+ }
42
+ }, [c]), h(() => {
43
+ const e = (i) => {
44
+ var d, m;
45
+ const a = i.target;
46
+ (d = x.current) != null && d.contains(a) || (m = a.closest) != null && m.call(a, "[data-bear-datepicker-calendar]") || s(!1);
35
47
  };
36
- return document.addEventListener("mousedown", r), () => document.removeEventListener("mousedown", r);
48
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
37
49
  }, []);
38
- const R = c(
39
- (r) => {
40
- e == null || e(r), s(!1);
50
+ const F = f(
51
+ (e) => {
52
+ t == null || t(e), s(!1);
41
53
  },
42
- [e]
43
- ), H = c(() => {
44
- e == null || e(null), s(!1);
45
- }, [e]), I = c((r) => {
46
- E(r);
47
- }, []), P = { 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" }, T = {
48
- default: "bear-bg-zinc-800 bear-border-zinc-600",
49
- filled: "bear-bg-zinc-700 bear-border-transparent",
50
- outline: "bear-bg-transparent bear-border-zinc-500"
54
+ [t]
55
+ ), G = f(() => {
56
+ t == null || t(null), s(!1);
57
+ }, [t]), J = f((e) => {
58
+ W(e);
59
+ }, []), K = { 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" }, Q = {
60
+ default: "bear-bg-white dark:bear-bg-zinc-800 bear-border-zinc-300 dark:bear-border-zinc-600",
61
+ filled: "bear-bg-zinc-100 dark:bear-bg-zinc-700 bear-border-transparent",
62
+ outline: "bear-bg-transparent bear-border-zinc-400 dark:bear-border-zinc-500"
51
63
  };
52
- return /* @__PURE__ */ u("div", { ref: n, className: p("bear-relative", v), style: Object.keys(m).length ? m : void 0, children: [
53
- o && /* @__PURE__ */ t("label", { className: "bear-block bear-text-sm bear-font-medium bear-text-zinc-300 bear-mb-1.5", children: o }),
54
- /* @__PURE__ */ u(
64
+ return /* @__PURE__ */ z("div", { ref: x, className: B("Bear-DatePicker bear-relative", S), style: Object.keys(D).length ? D : void 0, children: [
65
+ u && /* @__PURE__ */ r("label", { className: "Bear-DatePicker__label bear-block bear-text-sm bear-font-medium bear-text-zinc-700 dark:bear-text-zinc-300 bear-mb-1.5", children: u }),
66
+ /* @__PURE__ */ z(
55
67
  "button",
56
68
  {
69
+ ref: b,
57
70
  type: "button",
58
- onClick: () => !b && s(!d),
59
- disabled: b,
60
- className: p(
61
- "bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-text-left bear-transition-colors",
62
- P[O],
63
- T[Y],
64
- l ? "bear-border-red-500" : "focus:bear-border-pink-500",
65
- b && "bear-opacity-50 bear-cursor-not-allowed",
66
- a ? "bear-text-white" : "bear-text-zinc-500"
71
+ onClick: () => !l && s(!c),
72
+ disabled: l,
73
+ className: B(
74
+ "Bear-DatePicker__trigger bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-text-left bear-transition-colors",
75
+ K[E],
76
+ Q[A],
77
+ n ? "bear-border-red-500" : "focus:bear-border-pink-500",
78
+ l && "bear-opacity-50 bear-cursor-not-allowed",
79
+ o ? "bear-text-zinc-900 dark:bear-text-white" : "bear-text-zinc-500"
67
80
  ),
68
81
  children: [
69
- /* @__PURE__ */ t("span", { children: a ? J(a, y) : k }),
70
- /* @__PURE__ */ t("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__ */ t("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" }) })
82
+ /* @__PURE__ */ r("span", { className: "Bear-DatePicker__value", children: o ? C(o, N) : P }),
83
+ /* @__PURE__ */ r("span", { className: "Bear-DatePicker__icon", children: I ?? /* @__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" }) }) })
71
84
  ]
72
85
  }
73
86
  ),
74
- l && /* @__PURE__ */ t("p", { className: "bear-mt-1 bear-text-xs bear-text-red-400", children: l }),
75
- i && !l && /* @__PURE__ */ t("p", { className: "bear-mt-1 bear-text-xs bear-text-zinc-500", children: i }),
76
- d && /* @__PURE__ */ t(
77
- F,
78
- {
79
- viewDate: B,
80
- onViewChange: I,
81
- value: a ?? null,
82
- onSelect: R,
83
- minDate: x,
84
- maxDate: w,
85
- disabledDates: V,
86
- highlightedDates: h,
87
- slots: j,
88
- weekdayLabels: L,
89
- firstDayOfWeek: M,
90
- showWeekNumbers: S,
91
- clearable: z,
92
- onClear: H,
93
- showTodayButton: !0,
94
- onToday: () => {
95
- e == null || e(/* @__PURE__ */ new Date()), s(!1);
87
+ n && /* @__PURE__ */ r("p", { className: "Bear-DatePicker__error bear-mt-1 bear-text-xs bear-text-red-400", children: n }),
88
+ k && !n && /* @__PURE__ */ r("p", { className: "Bear-DatePicker__helper bear-mt-1 bear-text-xs bear-text-zinc-500", children: k }),
89
+ c && typeof document < "u" && X(
90
+ /* @__PURE__ */ r(
91
+ "div",
92
+ {
93
+ "data-bear-datepicker-calendar": !0,
94
+ className: "Bear-DatePicker__dropdown bear-fixed bear-z-[9999]",
95
+ style: { top: w.top, left: w.left },
96
+ children: /* @__PURE__ */ r(
97
+ Z,
98
+ {
99
+ viewDate: T,
100
+ onViewChange: J,
101
+ value: o ?? null,
102
+ onSelect: F,
103
+ minDate: _,
104
+ maxDate: v,
105
+ disabledDates: L,
106
+ highlightedDates: M,
107
+ slots: O,
108
+ weekdayLabels: R,
109
+ firstDayOfWeek: Y,
110
+ showWeekNumbers: H,
111
+ clearable: g,
112
+ onClear: G,
113
+ showTodayButton: !0,
114
+ onToday: () => {
115
+ t == null || t(/* @__PURE__ */ new Date()), s(!1);
116
+ }
117
+ }
118
+ )
96
119
  }
97
- }
120
+ ),
121
+ document.body
98
122
  )
99
123
  ] });
100
124
  };
101
125
  export {
102
- $ as DatePicker
126
+ ce as DatePicker
103
127
  };
@@ -30,5 +30,6 @@ export interface DatePickerProps {
30
30
  firstDayOfWeek?: number;
31
31
  size?: 'sm' | 'md' | 'lg';
32
32
  variant?: 'default' | 'filled' | 'outline';
33
- leftIcon?: ReactNode;
33
+ /** Custom icon to replace the default calendar icon (ReactNode). */
34
+ icon?: ReactNode;
34
35
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("react"),f=require("react-dom"),w=require("../../utils/cn.cjs"),x=require("../Icon/index.cjs"),g={left:{sm:"bear-w-64",md:"bear-w-80",lg:"bear-w-96",xl:"bear-w-[32rem]"},right:{sm:"bear-w-64",md:"bear-w-80",lg:"bear-w-96",xl:"bear-w-[32rem]"},top:{sm:"bear-h-32",md:"bear-h-48",lg:"bear-h-64",xl:"bear-h-96"},bottom:{sm:"bear-h-32",md:"bear-h-48",lg:"bear-h-64",xl:"bear-h-96"}},y={left:"bear-left-0 bear-top-0 bear-h-full",right:"bear-right-0 bear-top-0 bear-h-full",top:"bear-top-0 bear-left-0 bear-w-full",bottom:"bear-bottom-0 bear-left-0 bear-w-full"},v=({isOpen:t,onClose:a,title:b,children:n,side:r="right",size:i="md",showCloseButton:l=!0,closeOnBackdrop:c=!0,closeOnEscape:s=!0,className:m})=>{const o=d.useCallback(h=>{s&&h.key==="Escape"&&a()},[s,a]);if(d.useEffect(()=>(t&&(document.addEventListener("keydown",o),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",o),document.body.style.overflow=""}),[t,o]),!t)return null;const u=e.jsxs("div",{className:"bear-fixed bear-inset-0 bear-z-50",children:[e.jsx("div",{className:"bear-absolute bear-inset-0 bear-bg-black/60 bear-backdrop-blur-sm",onClick:c?a:void 0,"aria-hidden":"true"}),e.jsxs("div",{role:"dialog","aria-modal":"true","aria-labelledby":b?"drawer-title":void 0,className:w.cn("bear-absolute bear-bg-gray-900 bear-shadow-2xl","bear-border-gray-700 bear-overflow-hidden","bear-transform bear-transition-transform bear-duration-300",r==="left"&&"bear-border-r",r==="right"&&"bear-border-l",r==="top"&&"bear-border-b",r==="bottom"&&"bear-border-t",y[r],g[r][i],m),children:[(b||l)&&e.jsxs("div",{className:"bear-flex bear-items-center bear-justify-between bear-px-4 bear-py-3 bear-border-b bear-border-gray-700",children:[b&&e.jsx("h2",{id:"drawer-title",className:"bear-text-lg bear-font-semibold bear-text-white",children:b}),l&&e.jsx("button",{onClick:a,className:"bear-p-1 bear-rounded-lg bear-text-gray-400 hover:bear-text-white hover:bear-bg-gray-700 bear-transition-colors","aria-label":"Close drawer",children:e.jsx(x.XIcon,{className:"bear-w-5 bear-h-5"})})]}),e.jsx("div",{className:"bear-flex-1 bear-overflow-y-auto bear-p-4 bear-text-gray-300",children:n})]})]});return f.createPortal(u,document.body)};exports.Drawer=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),a=require("react"),N=require("react-dom"),y=require("../../utils/cn.cjs"),k=require("../Icon/index.cjs"),c=300,q={left:{sm:"bear-w-64",md:"bear-w-80",lg:"bear-w-96",xl:"bear-w-[32rem]"},right:{sm:"bear-w-64",md:"bear-w-80",lg:"bear-w-96",xl:"bear-w-[32rem]"},top:{sm:"bear-h-32",md:"bear-h-48",lg:"bear-h-64",xl:"bear-h-96"},bottom:{sm:"bear-h-32",md:"bear-h-48",lg:"bear-h-64",xl:"bear-h-96"}},C={left:"bear-left-0 bear-top-0 bear-h-full",right:"bear-right-0 bear-top-0 bear-h-full",top:"bear-top-0 bear-left-0 bear-w-full",bottom:"bear-bottom-0 bear-left-0 bear-w-full"},D={left:"bear-translate-x-0",right:"bear-translate-x-0",top:"bear-translate-y-0",bottom:"bear-translate-y-0"},E={left:"-bear-translate-x-full",right:"bear-translate-x-full",top:"-bear-translate-y-full",bottom:"bear-translate-y-full"},S=({isOpen:l,onClose:o,title:s,children:x,side:e="right",size:g="md",showCloseButton:d=!0,closeOnBackdrop:w=!0,closeOnEscape:u=!0,className:p})=>{const[t,m]=a.useState(l),[f,n]=a.useState(!1),[v,h]=a.useState(!1);a.useEffect(()=>{if(l){m(!0),n(!1);const b=requestAnimationFrame(()=>h(!0));return()=>cancelAnimationFrame(b)}if(t){h(!1),n(!0);const b=setTimeout(()=>{m(!1),n(!1)},c);return()=>clearTimeout(b)}},[l,t]);const i=a.useCallback(b=>{u&&b.key==="Escape"&&o()},[u,o]);if(a.useEffect(()=>(t&&(document.addEventListener("keydown",i),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",i),document.body.style.overflow=""}),[t,i]),!t)return null;const j=r.jsxs("div",{className:"bear-fixed bear-inset-0 bear-z-50",children:[r.jsx("div",{className:y.cn("bear-absolute bear-inset-0 bear-bg-black/60 bear-backdrop-blur-sm bear-transition-opacity",f?"bear-opacity-0":"bear-opacity-100"),style:{transitionDuration:`${c}ms`},onClick:w?o:void 0,"aria-hidden":"true"}),r.jsxs("div",{role:"dialog","aria-modal":"true","aria-labelledby":s?"drawer-title":void 0,className:y.cn("bear-absolute bear-bg-gray-900 bear-shadow-2xl","bear-border-gray-700 bear-overflow-hidden","bear-transform bear-transition-transform",e==="left"&&"bear-border-r",e==="right"&&"bear-border-l",e==="top"&&"bear-border-b",e==="bottom"&&"bear-border-t",C[e],q[e][g],v&&!f?D[e]:E[e],p),style:{transitionDuration:`${c}ms`},children:[(s||d)&&r.jsxs("div",{className:"bear-flex bear-items-center bear-justify-between bear-px-4 bear-py-3 bear-border-b bear-border-gray-700",children:[s&&r.jsx("h2",{id:"drawer-title",className:"bear-text-lg bear-font-semibold bear-text-white",children:s}),d&&r.jsx("button",{onClick:o,className:"bear-p-1 bear-rounded-lg bear-text-gray-400 hover:bear-text-white hover:bear-bg-gray-700 bear-transition-colors","aria-label":"Close drawer",children:r.jsx(k.XIcon,{className:"bear-w-5 bear-h-5"})})]}),r.jsx("div",{className:"bear-flex-1 bear-overflow-y-auto bear-p-4 bear-text-gray-300",children:x})]})]});return N.createPortal(j,document.body)};exports.Drawer=S;
@@ -1,9 +1,9 @@
1
- import { jsxs as l, jsx as r } from "react/jsx-runtime";
2
- import { useCallback as u, useEffect as w } from "react";
3
- import { createPortal as g } from "react-dom";
4
- import { cn as y } from "../../utils/cn.js";
5
- import { XIcon as p } from "../Icon/index.js";
6
- const x = {
1
+ import { jsxs as i, jsx as t } from "react/jsx-runtime";
2
+ import { useState as m, useEffect as g, useCallback as A } from "react";
3
+ import { createPortal as E } from "react-dom";
4
+ import { cn as p } from "../../utils/cn.js";
5
+ import { XIcon as I } from "../Icon/index.js";
6
+ const d = 300, D = {
7
7
  left: {
8
8
  sm: "bear-w-64",
9
9
  md: "bear-w-80",
@@ -28,86 +28,117 @@ const x = {
28
28
  lg: "bear-h-64",
29
29
  xl: "bear-h-96"
30
30
  }
31
- }, v = {
31
+ }, M = {
32
32
  left: "bear-left-0 bear-top-0 bear-h-full",
33
33
  right: "bear-right-0 bear-top-0 bear-h-full",
34
34
  top: "bear-top-0 bear-left-0 bear-w-full",
35
35
  bottom: "bear-bottom-0 bear-left-0 bear-w-full"
36
- }, z = ({
37
- isOpen: t,
38
- onClose: a,
39
- title: b,
40
- children: m,
36
+ }, j = {
37
+ left: "bear-translate-x-0",
38
+ right: "bear-translate-x-0",
39
+ top: "bear-translate-y-0",
40
+ bottom: "bear-translate-y-0"
41
+ }, T = {
42
+ left: "-bear-translate-x-full",
43
+ right: "bear-translate-x-full",
44
+ top: "-bear-translate-y-full",
45
+ bottom: "bear-translate-y-full"
46
+ }, _ = ({
47
+ isOpen: l,
48
+ onClose: b,
49
+ title: o,
50
+ children: w,
41
51
  side: e = "right",
42
- size: s = "md",
43
- showCloseButton: d = !0,
44
- closeOnBackdrop: n = !0,
45
- closeOnEscape: i = !0,
46
- className: c
52
+ size: x = "md",
53
+ showCloseButton: c = !0,
54
+ closeOnBackdrop: v = !0,
55
+ closeOnEscape: f = !0,
56
+ className: N
47
57
  }) => {
48
- const o = u(
49
- (h) => {
50
- i && h.key === "Escape" && a();
58
+ const [r, u] = m(l), [h, s] = m(!1), [k, y] = m(!1);
59
+ g(() => {
60
+ if (l) {
61
+ u(!0), s(!1);
62
+ const a = requestAnimationFrame(() => y(!0));
63
+ return () => cancelAnimationFrame(a);
64
+ }
65
+ if (r) {
66
+ y(!1), s(!0);
67
+ const a = setTimeout(() => {
68
+ u(!1), s(!1);
69
+ }, d);
70
+ return () => clearTimeout(a);
71
+ }
72
+ }, [l, r]);
73
+ const n = A(
74
+ (a) => {
75
+ f && a.key === "Escape" && b();
51
76
  },
52
- [i, a]
77
+ [f, b]
53
78
  );
54
- if (w(() => (t && (document.addEventListener("keydown", o), document.body.style.overflow = "hidden"), () => {
55
- document.removeEventListener("keydown", o), document.body.style.overflow = "";
56
- }), [t, o]), !t) return null;
57
- const f = /* @__PURE__ */ l("div", { className: "bear-fixed bear-inset-0 bear-z-50", children: [
58
- /* @__PURE__ */ r(
79
+ if (g(() => (r && (document.addEventListener("keydown", n), document.body.style.overflow = "hidden"), () => {
80
+ document.removeEventListener("keydown", n), document.body.style.overflow = "";
81
+ }), [r, n]), !r) return null;
82
+ const C = /* @__PURE__ */ i("div", { className: "bear-fixed bear-inset-0 bear-z-50", children: [
83
+ /* @__PURE__ */ t(
59
84
  "div",
60
85
  {
61
- className: "bear-absolute bear-inset-0 bear-bg-black/60 bear-backdrop-blur-sm",
62
- onClick: n ? a : void 0,
86
+ className: p(
87
+ "bear-absolute bear-inset-0 bear-bg-black/60 bear-backdrop-blur-sm bear-transition-opacity",
88
+ h ? "bear-opacity-0" : "bear-opacity-100"
89
+ ),
90
+ style: { transitionDuration: `${d}ms` },
91
+ onClick: v ? b : void 0,
63
92
  "aria-hidden": "true"
64
93
  }
65
94
  ),
66
- /* @__PURE__ */ l(
95
+ /* @__PURE__ */ i(
67
96
  "div",
68
97
  {
69
98
  role: "dialog",
70
99
  "aria-modal": "true",
71
- "aria-labelledby": b ? "drawer-title" : void 0,
72
- className: y(
100
+ "aria-labelledby": o ? "drawer-title" : void 0,
101
+ className: p(
73
102
  "bear-absolute bear-bg-gray-900 bear-shadow-2xl",
74
103
  "bear-border-gray-700 bear-overflow-hidden",
75
- "bear-transform bear-transition-transform bear-duration-300",
104
+ "bear-transform bear-transition-transform",
76
105
  e === "left" && "bear-border-r",
77
106
  e === "right" && "bear-border-l",
78
107
  e === "top" && "bear-border-b",
79
108
  e === "bottom" && "bear-border-t",
80
- v[e],
81
- x[e][s],
82
- c
109
+ M[e],
110
+ D[e][x],
111
+ k && !h ? j[e] : T[e],
112
+ N
83
113
  ),
114
+ style: { transitionDuration: `${d}ms` },
84
115
  children: [
85
- (b || d) && /* @__PURE__ */ l("div", { className: "bear-flex bear-items-center bear-justify-between bear-px-4 bear-py-3 bear-border-b bear-border-gray-700", children: [
86
- b && /* @__PURE__ */ r(
116
+ (o || c) && /* @__PURE__ */ i("div", { className: "bear-flex bear-items-center bear-justify-between bear-px-4 bear-py-3 bear-border-b bear-border-gray-700", children: [
117
+ o && /* @__PURE__ */ t(
87
118
  "h2",
88
119
  {
89
120
  id: "drawer-title",
90
121
  className: "bear-text-lg bear-font-semibold bear-text-white",
91
- children: b
122
+ children: o
92
123
  }
93
124
  ),
94
- d && /* @__PURE__ */ r(
125
+ c && /* @__PURE__ */ t(
95
126
  "button",
96
127
  {
97
- onClick: a,
128
+ onClick: b,
98
129
  className: "bear-p-1 bear-rounded-lg bear-text-gray-400 hover:bear-text-white hover:bear-bg-gray-700 bear-transition-colors",
99
130
  "aria-label": "Close drawer",
100
- children: /* @__PURE__ */ r(p, { className: "bear-w-5 bear-h-5" })
131
+ children: /* @__PURE__ */ t(I, { className: "bear-w-5 bear-h-5" })
101
132
  }
102
133
  )
103
134
  ] }),
104
- /* @__PURE__ */ r("div", { className: "bear-flex-1 bear-overflow-y-auto bear-p-4 bear-text-gray-300", children: m })
135
+ /* @__PURE__ */ t("div", { className: "bear-flex-1 bear-overflow-y-auto bear-p-4 bear-text-gray-300", children: w })
105
136
  ]
106
137
  }
107
138
  )
108
139
  ] });
109
- return g(f, document.body);
140
+ return E(C, document.body);
110
141
  };
111
142
  export {
112
- z as Drawer
143
+ _ as Drawer
113
144
  };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),x=require("react"),t=require("../../utils/cn.cjs"),s=require("./EmojiPicker.const.cjs"),u={sm:"bear-w-8 bear-h-8 bear-text-lg",md:"bear-w-10 bear-h-10 bear-text-xl",lg:"bear-w-12 bear-h-12 bear-text-2xl"},i=Object.keys(s.BEAR_EMOJIS),y=({onSelect:a,size:n="md",maxHeight:b=280,className:c})=>{const[o,d]=x.useState(i[0]),g=s.BEAR_EMOJIS[o]??[];return r.jsxs("div",{className:t.cn("Bear-EmojiPicker bear-flex bear-flex-col bear-rounded-lg bear-bg-white dark:bear-bg-zinc-800 bear-border bear-border-gray-200 dark:bear-border-zinc-700 bear-shadow-lg bear-overflow-hidden",c),children:[r.jsx("div",{className:"bear-flex bear-gap-1 bear-p-2 bear-border-b bear-border-gray-200 dark:bear-border-zinc-700 bear-overflow-x-auto",children:i.map(e=>r.jsx("button",{type:"button",onClick:()=>d(e),className:t.cn("bear-px-3 bear-py-1.5 bear-rounded-md bear-text-sm bear-font-medium bear-transition-colors bear-shrink-0",o===e?"bear-bg-gray-200 dark:bear-bg-zinc-700 bear-text-gray-900 dark:bear-text-white":"bear-text-gray-600 dark:bear-text-zinc-400 hover:bear-text-gray-900 dark:hover:bear-text-white hover:bear-bg-gray-100 dark:hover:bear-bg-zinc-700/50"),children:e},e))}),r.jsx("div",{className:"bear-p-2 bear-overflow-y-auto bear-grid bear-grid-cols-8 bear-gap-1 bear-bg-gray-50 dark:bear-bg-zinc-900/50",style:{maxHeight:typeof b=="number"?`${b}px`:b},children:g.map((e,l)=>r.jsx("button",{type:"button",onClick:()=>a==null?void 0:a(e),className:t.cn("bear-flex bear-items-center bear-justify-center bear-rounded-lg bear-transition-colors hover:bear-bg-gray-200 dark:hover:bear-bg-zinc-700",u[n]),children:e},`${e}-${l}`))})]})};exports.EmojiPicker=y;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={Smileys:["๐Ÿ˜€","๐Ÿ˜ƒ","๐Ÿ˜„","๐Ÿ˜","๐Ÿ˜Š","๐Ÿ™‚","๐Ÿ˜‰","๐Ÿ˜","๐Ÿฅฐ","๐Ÿ˜˜","๐Ÿ˜—","๐Ÿ˜™","๐Ÿ˜š","๐Ÿ˜‹","๐Ÿ˜›","๐Ÿ˜œ","๐Ÿคช","๐Ÿ˜","๐Ÿค‘","๐Ÿค—","๐Ÿคญ","๐Ÿคซ","๐Ÿค”","๐Ÿค","๐Ÿคจ","๐Ÿ˜","๐Ÿ˜‘","๐Ÿ˜ถ","๐Ÿ˜","๐Ÿ˜’"],Gestures:["๐Ÿ‘","๐Ÿ‘Ž","๐Ÿ‘Œ","โœŒ๏ธ","๐Ÿคž","๐ŸคŸ","๐Ÿค˜","๐Ÿค™","๐Ÿ‘ˆ","๐Ÿ‘‰","๐Ÿ‘†","๐Ÿ‘‡","โ˜๏ธ","โœ‹","๐Ÿคš","๐Ÿ–๏ธ","๐Ÿ––","๐Ÿ‘‹","๐Ÿค","๐Ÿ™Œ","๐Ÿ‘","๐Ÿ™"],Symbols:["โค๏ธ","๐Ÿงก","๐Ÿ’›","๐Ÿ’š","๐Ÿ’™","๐Ÿ’œ","๐Ÿ–ค","๐Ÿค","๐ŸคŽ","๐Ÿ’”","โฃ๏ธ","๐Ÿ’•","๐Ÿ’ž","๐Ÿ’“","๐Ÿ’—","๐Ÿ’–","๐Ÿ’˜","๐Ÿ’","โœจ","โญ","๐ŸŒŸ","๐Ÿ’ซ","๐Ÿ”ฅ","๐Ÿ’ฏ","โœ…","โŒ","โš ๏ธ","๐Ÿ“Œ"],Objects:["๐Ÿ“","๐Ÿ“‹","๐Ÿ“","๐Ÿ“‚","๐Ÿ“…","๐Ÿ“†","๐Ÿ“Ž","๐Ÿ–‡๏ธ","๐Ÿ“Œ","โœ๏ธ","๐Ÿ–Š๏ธ","๐Ÿ–๏ธ","๐Ÿ“ง","๐Ÿ“ฌ","๐Ÿ“ญ","๐Ÿ’ก","๐Ÿ””","๐Ÿ”•"],Nature:["๐ŸŒธ","๐ŸŒบ","๐ŸŒป","๐ŸŒผ","๐ŸŒท","๐ŸŒน","๐Ÿฅ€","๐Ÿชท","๐ŸŒฑ","๐Ÿชด","๐ŸŒฒ","๐ŸŒณ","๐Ÿ€","๐Ÿ","๐Ÿ‚","๐Ÿƒ","โ˜€๏ธ","๐ŸŒค๏ธ","โ›…","๐ŸŒฅ๏ธ","๐ŸŒˆ","โญ","๐ŸŒ™"]};exports.BEAR_EMOJIS=e;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Curated Bear emoji set - commonly used emojis for chat, comments, reactions.
3
+ * Unicode emoji characters.
4
+ */
5
+ export declare const BEAR_EMOJIS: Record<string, string[]>;
@@ -0,0 +1,10 @@
1
+ const e = {
2
+ Smileys: ["๐Ÿ˜€", "๐Ÿ˜ƒ", "๐Ÿ˜„", "๐Ÿ˜", "๐Ÿ˜Š", "๐Ÿ™‚", "๐Ÿ˜‰", "๐Ÿ˜", "๐Ÿฅฐ", "๐Ÿ˜˜", "๐Ÿ˜—", "๐Ÿ˜™", "๐Ÿ˜š", "๐Ÿ˜‹", "๐Ÿ˜›", "๐Ÿ˜œ", "๐Ÿคช", "๐Ÿ˜", "๐Ÿค‘", "๐Ÿค—", "๐Ÿคญ", "๐Ÿคซ", "๐Ÿค”", "๐Ÿค", "๐Ÿคจ", "๐Ÿ˜", "๐Ÿ˜‘", "๐Ÿ˜ถ", "๐Ÿ˜", "๐Ÿ˜’"],
3
+ Gestures: ["๐Ÿ‘", "๐Ÿ‘Ž", "๐Ÿ‘Œ", "โœŒ๏ธ", "๐Ÿคž", "๐ŸคŸ", "๐Ÿค˜", "๐Ÿค™", "๐Ÿ‘ˆ", "๐Ÿ‘‰", "๐Ÿ‘†", "๐Ÿ‘‡", "โ˜๏ธ", "โœ‹", "๐Ÿคš", "๐Ÿ–๏ธ", "๐Ÿ––", "๐Ÿ‘‹", "๐Ÿค", "๐Ÿ™Œ", "๐Ÿ‘", "๐Ÿ™"],
4
+ Symbols: ["โค๏ธ", "๐Ÿงก", "๐Ÿ’›", "๐Ÿ’š", "๐Ÿ’™", "๐Ÿ’œ", "๐Ÿ–ค", "๐Ÿค", "๐ŸคŽ", "๐Ÿ’”", "โฃ๏ธ", "๐Ÿ’•", "๐Ÿ’ž", "๐Ÿ’“", "๐Ÿ’—", "๐Ÿ’–", "๐Ÿ’˜", "๐Ÿ’", "โœจ", "โญ", "๐ŸŒŸ", "๐Ÿ’ซ", "๐Ÿ”ฅ", "๐Ÿ’ฏ", "โœ…", "โŒ", "โš ๏ธ", "๐Ÿ“Œ"],
5
+ Objects: ["๐Ÿ“", "๐Ÿ“‹", "๐Ÿ“", "๐Ÿ“‚", "๐Ÿ“…", "๐Ÿ“†", "๐Ÿ“Ž", "๐Ÿ–‡๏ธ", "๐Ÿ“Œ", "โœ๏ธ", "๐Ÿ–Š๏ธ", "๐Ÿ–๏ธ", "๐Ÿ“ง", "๐Ÿ“ฌ", "๐Ÿ“ญ", "๐Ÿ’ก", "๐Ÿ””", "๐Ÿ”•"],
6
+ Nature: ["๐ŸŒธ", "๐ŸŒบ", "๐ŸŒป", "๐ŸŒผ", "๐ŸŒท", "๐ŸŒน", "๐Ÿฅ€", "๐Ÿชท", "๐ŸŒฑ", "๐Ÿชด", "๐ŸŒฒ", "๐ŸŒณ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "โ˜€๏ธ", "๐ŸŒค๏ธ", "โ›…", "๐ŸŒฅ๏ธ", "๐ŸŒˆ", "โญ", "๐ŸŒ™"]
7
+ };
8
+ export {
9
+ e as BEAR_EMOJIS
10
+ };
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ import { EmojiPickerProps } from './EmojiPicker.types';
3
+ export declare const EmojiPicker: FC<EmojiPickerProps>;