@senitix/ui 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/dist/avatar-C0aVNCG9.cjs +2 -0
  2. package/dist/avatar-C0aVNCG9.cjs.map +1 -0
  3. package/dist/avatar-CN6wcrqY.js +288 -0
  4. package/dist/avatar-CN6wcrqY.js.map +1 -0
  5. package/dist/calendar-BFWc4IB7.js +1182 -0
  6. package/dist/calendar-BFWc4IB7.js.map +1 -0
  7. package/dist/calendar-BUm7YrNf.cjs +2 -0
  8. package/dist/calendar-BUm7YrNf.cjs.map +1 -0
  9. package/dist/calendar-ChJkFXXr.js +11 -0
  10. package/dist/calendar-ChJkFXXr.js.map +1 -0
  11. package/dist/calendar-SwL5isYC.cjs +2 -0
  12. package/dist/calendar-SwL5isYC.cjs.map +1 -0
  13. package/dist/card-K4fxyYwE.js +51 -0
  14. package/dist/card-K4fxyYwE.js.map +1 -0
  15. package/dist/card-tMkUxpmW.cjs +2 -0
  16. package/dist/card-tMkUxpmW.cjs.map +1 -0
  17. package/dist/checkbox-CpOq5hkT.js +289 -0
  18. package/dist/checkbox-CpOq5hkT.js.map +1 -0
  19. package/dist/checkbox-D7-LQyCl.cjs +2 -0
  20. package/dist/checkbox-D7-LQyCl.cjs.map +1 -0
  21. package/dist/chevron-down-DHdXqOqK.cjs +2 -0
  22. package/dist/chevron-down-DHdXqOqK.cjs.map +1 -0
  23. package/dist/chevron-down-DJ1_YIFu.js +8 -0
  24. package/dist/chevron-down-DJ1_YIFu.js.map +1 -0
  25. package/dist/chevron-right-B3bovvh0.js +8 -0
  26. package/dist/chevron-right-B3bovvh0.js.map +1 -0
  27. package/dist/chevron-right-Dvyd11q0.cjs +2 -0
  28. package/dist/chevron-right-Dvyd11q0.cjs.map +1 -0
  29. package/dist/chevron-up-B9fuiZhc.cjs +2 -0
  30. package/dist/chevron-up-B9fuiZhc.cjs.map +1 -0
  31. package/dist/chevron-up-CGtXOr51.js +6 -0
  32. package/dist/chevron-up-CGtXOr51.js.map +1 -0
  33. package/dist/components/charts/index.cjs.js +2 -0
  34. package/dist/components/charts/index.cjs.js.map +1 -0
  35. package/dist/components/charts/index.es.js +12 -0
  36. package/dist/components/charts/index.es.js.map +1 -0
  37. package/dist/components/data-display/index.cjs.js +2 -0
  38. package/dist/components/data-display/index.cjs.js.map +1 -0
  39. package/dist/components/data-display/index.es.js +25 -0
  40. package/dist/components/data-display/index.es.js.map +1 -0
  41. package/dist/components/dnd/index.cjs.js +2 -0
  42. package/dist/components/dnd/index.cjs.js.map +1 -0
  43. package/dist/components/dnd/index.es.js +9 -0
  44. package/dist/components/dnd/index.es.js.map +1 -0
  45. package/dist/components/feedback/index.cjs.js +2 -0
  46. package/dist/components/feedback/index.cjs.js.map +1 -0
  47. package/dist/components/feedback/index.es.js +16 -0
  48. package/dist/components/feedback/index.es.js.map +1 -0
  49. package/dist/components/forms/index.cjs.js +2 -0
  50. package/dist/components/forms/index.cjs.js.map +1 -0
  51. package/dist/components/forms/index.es.js +27 -0
  52. package/dist/components/forms/index.es.js.map +1 -0
  53. package/dist/components/layouts/index.cjs.js +2 -0
  54. package/dist/components/layouts/index.cjs.js.map +1 -0
  55. package/dist/components/layouts/index.es.js +25 -0
  56. package/dist/components/layouts/index.es.js.map +1 -0
  57. package/dist/components/navigation/index.cjs.js +2 -0
  58. package/dist/components/navigation/index.cjs.js.map +1 -0
  59. package/dist/components/navigation/index.es.js +42 -0
  60. package/dist/components/navigation/index.es.js.map +1 -0
  61. package/dist/components/ui/index.cjs.js +2 -0
  62. package/dist/components/ui/index.cjs.js.map +1 -0
  63. package/dist/components/ui/index.es.js +165 -0
  64. package/dist/components/ui/index.es.js.map +1 -0
  65. package/dist/createLucideIcon-BbeNo6vq.js +56 -0
  66. package/dist/createLucideIcon-BbeNo6vq.js.map +1 -0
  67. package/dist/createLucideIcon-i5GEhNMV.cjs +2 -0
  68. package/dist/createLucideIcon-i5GEhNMV.cjs.map +1 -0
  69. package/dist/ellipsis-BW2gWki8.cjs +2 -0
  70. package/dist/ellipsis-BW2gWki8.cjs.map +1 -0
  71. package/dist/ellipsis-CiKEaUNP.js +10 -0
  72. package/dist/ellipsis-CiKEaUNP.js.map +1 -0
  73. package/dist/file-V_hhCUhr.cjs +2 -0
  74. package/dist/file-V_hhCUhr.cjs.map +1 -0
  75. package/dist/file-wzTXnWqz.js +9 -0
  76. package/dist/file-wzTXnWqz.js.map +1 -0
  77. package/dist/filter-tags-DjUaNXHR.cjs +5 -0
  78. package/dist/filter-tags-DjUaNXHR.cjs.map +1 -0
  79. package/dist/filter-tags-i_I8qV1N.js +2658 -0
  80. package/dist/filter-tags-i_I8qV1N.js.map +1 -0
  81. package/dist/full-calendar-7ac2FFU6.js +3518 -0
  82. package/dist/full-calendar-7ac2FFU6.js.map +1 -0
  83. package/dist/full-calendar-Cpeh5xMP.cjs +8 -0
  84. package/dist/full-calendar-Cpeh5xMP.cjs.map +1 -0
  85. package/dist/global-search-UNXjoFlI.cjs +2 -0
  86. package/dist/global-search-UNXjoFlI.cjs.map +1 -0
  87. package/dist/global-search-h1rVbP2q.js +1188 -0
  88. package/dist/global-search-h1rVbP2q.js.map +1 -0
  89. package/dist/hooks/index.cjs.js +2 -0
  90. package/dist/hooks/index.cjs.js.map +1 -0
  91. package/dist/hooks/index.es.js +13 -0
  92. package/dist/hooks/index.es.js.map +1 -0
  93. package/dist/index-Co9o9StL.js +33 -0
  94. package/dist/index-Co9o9StL.js.map +1 -0
  95. package/dist/index-CwJPJKOE.js +2278 -0
  96. package/dist/index-CwJPJKOE.js.map +1 -0
  97. package/dist/index-CzVK9Zyb.cjs +6 -0
  98. package/dist/index-CzVK9Zyb.cjs.map +1 -0
  99. package/dist/index-l828OqQN.js +288 -0
  100. package/dist/index-l828OqQN.js.map +1 -0
  101. package/dist/index-lGzB9daF.cjs +2 -0
  102. package/dist/index-lGzB9daF.cjs.map +1 -0
  103. package/dist/index-lT9bLt9X.cjs +2 -0
  104. package/dist/index-lT9bLt9X.cjs.map +1 -0
  105. package/dist/index.cjs.js +2 -0
  106. package/dist/index.cjs.js.map +1 -0
  107. package/dist/index.es.js +332 -0
  108. package/dist/index.es.js.map +1 -0
  109. package/dist/input-CZrckPLk.cjs +42 -0
  110. package/dist/input-CZrckPLk.cjs.map +1 -0
  111. package/dist/input-D4AoiWxo.js +3629 -0
  112. package/dist/input-D4AoiWxo.js.map +1 -0
  113. package/dist/locale-provider-DHMwuneF.cjs +2 -0
  114. package/dist/locale-provider-DHMwuneF.cjs.map +1 -0
  115. package/dist/locale-provider-DanG6RRG.js +1012 -0
  116. package/dist/locale-provider-DanG6RRG.js.map +1 -0
  117. package/dist/locale-selector-Ppe0KTi-.cjs +2 -0
  118. package/dist/locale-selector-Ppe0KTi-.cjs.map +1 -0
  119. package/dist/locale-selector-xn2GpdP9.js +1745 -0
  120. package/dist/locale-selector-xn2GpdP9.js.map +1 -0
  121. package/dist/minus-BXBFZSZs.cjs +2 -0
  122. package/dist/minus-BXBFZSZs.cjs.map +1 -0
  123. package/dist/minus-DvlYtl96.js +6 -0
  124. package/dist/minus-DvlYtl96.js.map +1 -0
  125. package/dist/multi-container-C2UpSw5f.js +731 -0
  126. package/dist/multi-container-C2UpSw5f.js.map +1 -0
  127. package/dist/multi-container-DMKL8c9B.cjs +2 -0
  128. package/dist/multi-container-DMKL8c9B.cjs.map +1 -0
  129. package/dist/pipeline-By5_8AFg.cjs +2 -0
  130. package/dist/pipeline-By5_8AFg.cjs.map +1 -0
  131. package/dist/pipeline-D-QNSU0U.js +1036 -0
  132. package/dist/pipeline-D-QNSU0U.js.map +1 -0
  133. package/dist/plus-8wKRkVu-.cjs +2 -0
  134. package/dist/plus-8wKRkVu-.cjs.map +1 -0
  135. package/dist/plus-CJD68KQD.js +9 -0
  136. package/dist/plus-CJD68KQD.js.map +1 -0
  137. package/dist/popover-4V4sGe1U.js +765 -0
  138. package/dist/popover-4V4sGe1U.js.map +1 -0
  139. package/dist/popover-ivh-plLc.cjs +2 -0
  140. package/dist/popover-ivh-plLc.cjs.map +1 -0
  141. package/dist/progress-CFnuLqnS.cjs +7 -0
  142. package/dist/progress-CFnuLqnS.cjs.map +1 -0
  143. package/dist/progress-D5AsrWa6.js +222 -0
  144. package/dist/progress-D5AsrWa6.js.map +1 -0
  145. package/dist/providers/index.cjs.js +2 -0
  146. package/dist/providers/index.cjs.js.map +1 -0
  147. package/dist/providers/index.es.js +9 -0
  148. package/dist/providers/index.es.js.map +1 -0
  149. package/dist/scroll-area-DQeqDp3Y.js +952 -0
  150. package/dist/scroll-area-DQeqDp3Y.js.map +1 -0
  151. package/dist/scroll-area-DYOiJMXh.cjs +2 -0
  152. package/dist/scroll-area-DYOiJMXh.cjs.map +1 -0
  153. package/dist/select-C1rNBi6c.js +974 -0
  154. package/dist/select-C1rNBi6c.js.map +1 -0
  155. package/dist/select-m-Mqwxu3.cjs +2 -0
  156. package/dist/select-m-Mqwxu3.cjs.map +1 -0
  157. package/dist/separator-DBUivkHq.cjs +2 -0
  158. package/dist/separator-DBUivkHq.cjs.map +1 -0
  159. package/dist/separator-DsfoJx-2.js +395 -0
  160. package/dist/separator-DsfoJx-2.js.map +1 -0
  161. package/dist/sheet-BVWCpq7E.js +84 -0
  162. package/dist/sheet-BVWCpq7E.js.map +1 -0
  163. package/dist/sheet-mKiFLVnK.cjs +2 -0
  164. package/dist/sheet-mKiFLVnK.cjs.map +1 -0
  165. package/dist/skeleton-BSwwYaQU.cjs +2 -0
  166. package/dist/skeleton-BSwwYaQU.cjs.map +1 -0
  167. package/dist/skeleton-BmGbfJw3.js +9 -0
  168. package/dist/skeleton-BmGbfJw3.js.map +1 -0
  169. package/dist/sortable.esm-Blhf_jh1.js +3391 -0
  170. package/dist/sortable.esm-Blhf_jh1.js.map +1 -0
  171. package/dist/sortable.esm-DcQYlXi3.cjs +6 -0
  172. package/dist/sortable.esm-DcQYlXi3.cjs.map +1 -0
  173. package/dist/sparkline-chart-Da-ehDGv.js +21082 -0
  174. package/dist/sparkline-chart-Da-ehDGv.js.map +1 -0
  175. package/dist/sparkline-chart-ca3uTzVK.cjs +68 -0
  176. package/dist/sparkline-chart-ca3uTzVK.cjs.map +1 -0
  177. package/dist/trending-up-D3Nfrhi3.cjs +2 -0
  178. package/dist/trending-up-D3Nfrhi3.cjs.map +1 -0
  179. package/dist/trending-up-DPwlYzQb.js +9 -0
  180. package/dist/trending-up-DPwlYzQb.js.map +1 -0
  181. package/dist/ui.css +1 -0
  182. package/dist/use-formatters-d97RVcmg.cjs +2 -0
  183. package/dist/use-formatters-d97RVcmg.cjs.map +1 -0
  184. package/dist/use-formatters-l1_2c8z0.js +6682 -0
  185. package/dist/use-formatters-l1_2c8z0.js.map +1 -0
  186. package/dist/use-local-storage-BjlrKzE-.js +42 -0
  187. package/dist/use-local-storage-BjlrKzE-.js.map +1 -0
  188. package/dist/use-local-storage-q-1odzIu.cjs +2 -0
  189. package/dist/use-local-storage-q-1odzIu.cjs.map +1 -0
  190. package/dist/use-mobile-C-LMK4T8.js +15 -0
  191. package/dist/use-mobile-C-LMK4T8.js.map +1 -0
  192. package/dist/use-mobile-DY7TJ5lx.cjs +2 -0
  193. package/dist/use-mobile-DY7TJ5lx.cjs.map +1 -0
  194. package/dist/use-toast-DG2qdYhl.js +97 -0
  195. package/dist/use-toast-DG2qdYhl.js.map +1 -0
  196. package/dist/use-toast-DxZJ8uUm.cjs +2 -0
  197. package/dist/use-toast-DxZJ8uUm.cjs.map +1 -0
  198. package/dist/utils/index.cjs.js +2 -0
  199. package/dist/utils/index.cjs.js.map +1 -0
  200. package/dist/utils/index.es.js +5 -0
  201. package/dist/utils/index.es.js.map +1 -0
  202. package/dist/welcome-card-CPolYl1D.cjs +2 -0
  203. package/dist/welcome-card-CPolYl1D.cjs.map +1 -0
  204. package/dist/welcome-card-CxMJZ8bv.js +963 -0
  205. package/dist/welcome-card-CxMJZ8bv.js.map +1 -0
  206. package/package.json +179 -0
@@ -0,0 +1,42 @@
1
+ import { useState as a, useEffect as d, useCallback as u } from "react";
2
+ function l(e, o) {
3
+ const [r, n] = a(e);
4
+ return d(() => {
5
+ const c = setTimeout(() => {
6
+ n(e);
7
+ }, o);
8
+ return () => {
9
+ clearTimeout(c);
10
+ };
11
+ }, [e, o]), r;
12
+ }
13
+ function w(e, o) {
14
+ const r = u(() => {
15
+ if (typeof window > "u")
16
+ return o;
17
+ try {
18
+ const t = window.localStorage.getItem(e);
19
+ return t ? JSON.parse(t) : o;
20
+ } catch (t) {
21
+ return console.warn(`Error reading localStorage key "${e}":`, t), o;
22
+ }
23
+ }, [o, e]), [n, c] = a(r), f = u(
24
+ (t) => {
25
+ try {
26
+ const s = t instanceof Function ? t(n) : t;
27
+ c(s), typeof window < "u" && window.localStorage.setItem(e, JSON.stringify(s));
28
+ } catch (s) {
29
+ console.warn(`Error setting localStorage key "${e}":`, s);
30
+ }
31
+ },
32
+ [e, n]
33
+ );
34
+ return d(() => {
35
+ c(r());
36
+ }, [r]), [n, f];
37
+ }
38
+ export {
39
+ w as a,
40
+ l as u
41
+ };
42
+ //# sourceMappingURL=use-local-storage-BjlrKzE-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-local-storage-BjlrKzE-.js","sources":["../src/hooks/use-debounce.ts","../src/hooks/use-local-storage.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value)\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n return () => {\n clearTimeout(timer)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n","import { useState, useEffect, useCallback } from 'react'\n\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((val: T) => T)) => void] {\n const readValue = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n\n try {\n const item = window.localStorage.getItem(key)\n return item ? (JSON.parse(item) as T) : initialValue\n } catch (error) {\n console.warn(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n }, [initialValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(readValue)\n\n const setValue = useCallback(\n (value: T | ((val: T) => T)) => {\n try {\n const valueToStore = value instanceof Function ? value(storedValue) : value\n setStoredValue(valueToStore)\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n }\n } catch (error) {\n console.warn(`Error setting localStorage key \"${key}\":`, error)\n }\n },\n [key, storedValue]\n )\n\n useEffect(() => {\n setStoredValue(readValue())\n }, [readValue])\n\n return [storedValue, setValue]\n}\n"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","timer","useLocalStorage","key","initialValue","readValue","useCallback","item","error","storedValue","setStoredValue","setValue","valueToStore"],"mappings":";AAEO,SAASA,EAAeC,GAAUC,GAAkB;AACzD,QAAM,CAACC,GAAgBC,CAAiB,IAAIC,EAAYJ,CAAK;AAE7D,SAAAK,EAAU,MAAM;AACd,UAAMC,IAAQ,WAAW,MAAM;AAC7B,MAAAH,EAAkBH,CAAK;AAAA,IACzB,GAAGC,CAAK;AAER,WAAO,MAAM;AACX,mBAAaK,CAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAACN,GAAOC,CAAK,CAAC,GAEVC;AACT;ACdO,SAASK,EACdC,GACAC,GAC2C;AAC3C,QAAMC,IAAYC,EAAY,MAAS;AACrC,QAAI,OAAO,SAAW;AACpB,aAAOF;AAGT,QAAI;AACF,YAAMG,IAAO,OAAO,aAAa,QAAQJ,CAAG;AAC5C,aAAOI,IAAQ,KAAK,MAAMA,CAAI,IAAUH;AAAA,IAC1C,SAASI,GAAO;AACd,qBAAQ,KAAK,mCAAmCL,CAAG,MAAMK,CAAK,GACvDJ;AAAA,IACT;AAAA,EACF,GAAG,CAACA,GAAcD,CAAG,CAAC,GAEhB,CAACM,GAAaC,CAAc,IAAIX,EAAYM,CAAS,GAErDM,IAAWL;AAAA,IACf,CAACX,MAA+B;AAC9B,UAAI;AACF,cAAMiB,IAAejB,aAAiB,WAAWA,EAAMc,CAAW,IAAId;AACtE,QAAAe,EAAeE,CAAY,GACvB,OAAO,SAAW,OACpB,OAAO,aAAa,QAAQT,GAAK,KAAK,UAAUS,CAAY,CAAC;AAAA,MAEjE,SAASJ,GAAO;AACd,gBAAQ,KAAK,mCAAmCL,CAAG,MAAMK,CAAK;AAAA,MAChE;AAAA,IACF;AAAA,IACA,CAACL,GAAKM,CAAW;AAAA,EAAA;AAGnB,SAAAT,EAAU,MAAM;AACd,IAAAU,EAAeL,GAAW;AAAA,EAC5B,GAAG,CAACA,CAAS,CAAC,GAEP,CAACI,GAAaE,CAAQ;AAC/B;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const r=require("react");function d(e,o){const[n,c]=r.useState(e);return r.useEffect(()=>{const s=setTimeout(()=>{c(e)},o);return()=>{clearTimeout(s)}},[e,o]),n}function f(e,o){const n=r.useCallback(()=>{if(typeof window>"u")return o;try{const t=window.localStorage.getItem(e);return t?JSON.parse(t):o}catch(t){return console.warn(`Error reading localStorage key "${e}":`,t),o}},[o,e]),[c,s]=r.useState(n),a=r.useCallback(t=>{try{const u=t instanceof Function?t(c):t;s(u),typeof window<"u"&&window.localStorage.setItem(e,JSON.stringify(u))}catch(u){console.warn(`Error setting localStorage key "${e}":`,u)}},[e,c]);return r.useEffect(()=>{s(n())},[n]),[c,a]}exports.useDebounce=d;exports.useLocalStorage=f;
2
+ //# sourceMappingURL=use-local-storage-q-1odzIu.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-local-storage-q-1odzIu.cjs","sources":["../src/hooks/use-debounce.ts","../src/hooks/use-local-storage.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value)\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n return () => {\n clearTimeout(timer)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n","import { useState, useEffect, useCallback } from 'react'\n\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((val: T) => T)) => void] {\n const readValue = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n\n try {\n const item = window.localStorage.getItem(key)\n return item ? (JSON.parse(item) as T) : initialValue\n } catch (error) {\n console.warn(`Error reading localStorage key \"${key}\":`, error)\n return initialValue\n }\n }, [initialValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(readValue)\n\n const setValue = useCallback(\n (value: T | ((val: T) => T)) => {\n try {\n const valueToStore = value instanceof Function ? value(storedValue) : value\n setStoredValue(valueToStore)\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n }\n } catch (error) {\n console.warn(`Error setting localStorage key \"${key}\":`, error)\n }\n },\n [key, storedValue]\n )\n\n useEffect(() => {\n setStoredValue(readValue())\n }, [readValue])\n\n return [storedValue, setValue]\n}\n"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","timer","useLocalStorage","key","initialValue","readValue","useCallback","item","error","storedValue","setStoredValue","setValue","valueToStore"],"mappings":"sCAEO,SAASA,EAAeC,EAAUC,EAAkB,CACzD,KAAM,CAACC,EAAgBC,CAAiB,EAAIC,EAAAA,SAAYJ,CAAK,EAE7DK,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAQ,WAAW,IAAM,CAC7BH,EAAkBH,CAAK,CACzB,EAAGC,CAAK,EAER,MAAO,IAAM,CACX,aAAaK,CAAK,CACpB,CACF,EAAG,CAACN,EAAOC,CAAK,CAAC,EAEVC,CACT,CCdO,SAASK,EACdC,EACAC,EAC2C,CAC3C,MAAMC,EAAYC,EAAAA,YAAY,IAAS,CACrC,GAAI,OAAO,OAAW,IACpB,OAAOF,EAGT,GAAI,CACF,MAAMG,EAAO,OAAO,aAAa,QAAQJ,CAAG,EAC5C,OAAOI,EAAQ,KAAK,MAAMA,CAAI,EAAUH,CAC1C,OAASI,EAAO,CACd,eAAQ,KAAK,mCAAmCL,CAAG,KAAMK,CAAK,EACvDJ,CACT,CACF,EAAG,CAACA,EAAcD,CAAG,CAAC,EAEhB,CAACM,EAAaC,CAAc,EAAIX,EAAAA,SAAYM,CAAS,EAErDM,EAAWL,EAAAA,YACdX,GAA+B,CAC9B,GAAI,CACF,MAAMiB,EAAejB,aAAiB,SAAWA,EAAMc,CAAW,EAAId,EACtEe,EAAeE,CAAY,EACvB,OAAO,OAAW,KACpB,OAAO,aAAa,QAAQT,EAAK,KAAK,UAAUS,CAAY,CAAC,CAEjE,OAASJ,EAAO,CACd,QAAQ,KAAK,mCAAmCL,CAAG,KAAMK,CAAK,CAChE,CACF,EACA,CAACL,EAAKM,CAAW,CAAA,EAGnBT,OAAAA,EAAAA,UAAU,IAAM,CACdU,EAAeL,GAAW,CAC5B,EAAG,CAACA,CAAS,CAAC,EAEP,CAACI,EAAaE,CAAQ,CAC/B"}
@@ -0,0 +1,15 @@
1
+ import * as o from "react";
2
+ const e = 768;
3
+ function r() {
4
+ const [s, n] = o.useState(void 0);
5
+ return o.useEffect(() => {
6
+ const t = window.matchMedia(`(max-width: ${e - 1}px)`), i = () => {
7
+ n(window.innerWidth < e);
8
+ };
9
+ return t.addEventListener("change", i), n(window.innerWidth < e), () => t.removeEventListener("change", i);
10
+ }, []), !!s;
11
+ }
12
+ export {
13
+ r as u
14
+ };
15
+ //# sourceMappingURL=use-mobile-C-LMK4T8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile-C-LMK4T8.js","sources":["../src/hooks/use-mobile.tsx"],"sourcesContent":["import * as React from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n"],"names":["MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","React","mql","onChange"],"mappings":";AAEA,MAAMA,IAAoB;AAEnB,SAASC,IAAc;AAC5B,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAM,SAA8B,MAAS;AAE7E,SAAAA,EAAM,UAAU,MAAM;AACpB,UAAMC,IAAM,OAAO,WAAW,eAAeL,IAAoB,CAAC,KAAK,GACjEM,IAAW,MAAM;AACrB,MAAAH,EAAY,OAAO,aAAaH,CAAiB;AAAA,IACnD;AACA,WAAAK,EAAI,iBAAiB,UAAUC,CAAQ,GACvCH,EAAY,OAAO,aAAaH,CAAiB,GAC1C,MAAMK,EAAI,oBAAoB,UAAUC,CAAQ;AAAA,EACzD,GAAG,CAAA,CAAE,GAEE,CAAC,CAACJ;AACX;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const c=require("react");function s(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const r=s(c),i=768;function a(){const[e,n]=r.useState(void 0);return r.useEffect(()=>{const t=window.matchMedia(`(max-width: ${i-1}px)`),o=()=>{n(window.innerWidth<i)};return t.addEventListener("change",o),n(window.innerWidth<i),()=>t.removeEventListener("change",o)},[]),!!e}exports.useIsMobile=a;
2
+ //# sourceMappingURL=use-mobile-DY7TJ5lx.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile-DY7TJ5lx.cjs","sources":["../src/hooks/use-mobile.tsx"],"sourcesContent":["import * as React from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n"],"names":["MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","React","mql","onChange"],"mappings":"gUAEMA,EAAoB,IAEnB,SAASC,GAAc,CAC5B,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAM,SAA8B,MAAS,EAE7EA,OAAAA,EAAM,UAAU,IAAM,CACpB,MAAMC,EAAM,OAAO,WAAW,eAAeL,EAAoB,CAAC,KAAK,EACjEM,EAAW,IAAM,CACrBH,EAAY,OAAO,WAAaH,CAAiB,CACnD,EACA,OAAAK,EAAI,iBAAiB,SAAUC,CAAQ,EACvCH,EAAY,OAAO,WAAaH,CAAiB,EAC1C,IAAMK,EAAI,oBAAoB,SAAUC,CAAQ,CACzD,EAAG,CAAA,CAAE,EAEE,CAAC,CAACJ,CACX"}
@@ -0,0 +1,97 @@
1
+ import * as c from "react";
2
+ const d = 1, p = 1e6;
3
+ let a = 0;
4
+ function A() {
5
+ return a = (a + 1) % Number.MAX_SAFE_INTEGER, a.toString();
6
+ }
7
+ const i = /* @__PURE__ */ new Map(), S = (t) => {
8
+ if (i.has(t))
9
+ return;
10
+ const s = setTimeout(() => {
11
+ i.delete(t), n({
12
+ type: "REMOVE_TOAST",
13
+ toastId: t
14
+ });
15
+ }, p);
16
+ i.set(t, s);
17
+ }, f = (t, s) => {
18
+ switch (s.type) {
19
+ case "ADD_TOAST":
20
+ return {
21
+ ...t,
22
+ toasts: [s.toast, ...t.toasts].slice(0, d)
23
+ };
24
+ case "UPDATE_TOAST":
25
+ return {
26
+ ...t,
27
+ toasts: t.toasts.map(
28
+ (e) => e.id === s.toast.id ? { ...e, ...s.toast } : e
29
+ )
30
+ };
31
+ case "DISMISS_TOAST": {
32
+ const { toastId: e } = s;
33
+ return e ? S(e) : t.toasts.forEach((o) => {
34
+ S(o.id);
35
+ }), {
36
+ ...t,
37
+ toasts: t.toasts.map(
38
+ (o) => o.id === e || e === void 0 ? {
39
+ ...o,
40
+ open: !1
41
+ } : o
42
+ )
43
+ };
44
+ }
45
+ case "REMOVE_TOAST":
46
+ return s.toastId === void 0 ? {
47
+ ...t,
48
+ toasts: []
49
+ } : {
50
+ ...t,
51
+ toasts: t.toasts.filter((e) => e.id !== s.toastId)
52
+ };
53
+ }
54
+ }, r = [];
55
+ let T = { toasts: [] };
56
+ function n(t) {
57
+ T = f(T, t), r.forEach((s) => {
58
+ s(T);
59
+ });
60
+ }
61
+ function O({ ...t }) {
62
+ const s = A(), e = (u) => n({
63
+ type: "UPDATE_TOAST",
64
+ toast: { ...u, id: s }
65
+ }), o = () => n({ type: "DISMISS_TOAST", toastId: s });
66
+ return n({
67
+ type: "ADD_TOAST",
68
+ toast: {
69
+ ...t,
70
+ id: s,
71
+ open: !0,
72
+ onOpenChange: (u) => {
73
+ u || o();
74
+ }
75
+ }
76
+ }), {
77
+ id: s,
78
+ dismiss: o,
79
+ update: e
80
+ };
81
+ }
82
+ function E() {
83
+ const [t, s] = c.useState(T);
84
+ return c.useEffect(() => (r.push(s), () => {
85
+ const e = r.indexOf(s);
86
+ e > -1 && r.splice(e, 1);
87
+ }), [t]), {
88
+ ...t,
89
+ toast: O,
90
+ dismiss: (e) => n({ type: "DISMISS_TOAST", toastId: e })
91
+ };
92
+ }
93
+ export {
94
+ O as t,
95
+ E as u
96
+ };
97
+ //# sourceMappingURL=use-toast-DG2qdYhl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast-DG2qdYhl.js","sources":["../src/hooks/use-toast.ts"],"sourcesContent":["import * as React from 'react'\n\nimport type { ToastActionElement, ToastProps } from '@/components/ui/toast'\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST']\n toast: ToasterToast\n }\n | {\n type: ActionType['UPDATE_TOAST']\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType['DISMISS_TOAST']\n toastId?: ToasterToast['id']\n }\n | {\n type: ActionType['REMOVE_TOAST']\n toastId?: ToasterToast['id']\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'ADD_TOAST':\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case 'DISMISS_TOAST': {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, 'id'>\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id })\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n }\n}\n\nexport { useToast, toast }\n"],"names":["TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","state","action","t","toast","listeners","memoryState","listener","props","id","update","dismiss","open","useToast","setState","React","index"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const f=require("react");function p(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const T=p(f),O=1,l=1e6;let a=0;function A(){return a=(a+1)%Number.MAX_SAFE_INTEGER,a.toString()}const i=new Map,S=t=>{if(i.has(t))return;const e=setTimeout(()=>{i.delete(t),n({type:"REMOVE_TOAST",toastId:t})},l);i.set(t,e)},_=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,O)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(s=>s.id===e.toast.id?{...s,...e.toast}:s)};case"DISMISS_TOAST":{const{toastId:s}=e;return s?S(s):t.toasts.forEach(o=>{S(o.id)}),{...t,toasts:t.toasts.map(o=>o.id===s||s===void 0?{...o,open:!1}:o)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(s=>s.id!==e.toastId)}}},r=[];let c={toasts:[]};function n(t){c=_(c,t),r.forEach(e=>{e(c)})}function d({...t}){const e=A(),s=u=>n({type:"UPDATE_TOAST",toast:{...u,id:e}}),o=()=>n({type:"DISMISS_TOAST",toastId:e});return n({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:u=>{u||o()}}}),{id:e,dismiss:o,update:s}}function m(){const[t,e]=T.useState(c);return T.useEffect(()=>(r.push(e),()=>{const s=r.indexOf(e);s>-1&&r.splice(s,1)}),[t]),{...t,toast:d,dismiss:s=>n({type:"DISMISS_TOAST",toastId:s})}}exports.toast=d;exports.useToast=m;
2
+ //# sourceMappingURL=use-toast-DxZJ8uUm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast-DxZJ8uUm.cjs","sources":["../src/hooks/use-toast.ts"],"sourcesContent":["import * as React from 'react'\n\nimport type { ToastActionElement, ToastProps } from '@/components/ui/toast'\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST']\n toast: ToasterToast\n }\n | {\n type: ActionType['UPDATE_TOAST']\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType['DISMISS_TOAST']\n toastId?: ToasterToast['id']\n }\n | {\n type: ActionType['REMOVE_TOAST']\n toastId?: ToasterToast['id']\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'ADD_TOAST':\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case 'DISMISS_TOAST': {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, 'id'>\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id })\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n }\n}\n\nexport { useToast, toast }\n"],"names":["TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","state","action","t","toast","listeners","memoryState","listener","props","id","update","dismiss","open","useToast","setState","React","index"],"mappings":"gUAIMA,EAAc,EACdC,EAAqB,IAgB3B,IAAIC,EAAQ,EAEZ,SAASC,GAAQ,CACf,OAAAD,GAASA,EAAQ,GAAK,OAAO,iBACtBA,EAAM,SAAA,CACf,CA0BA,MAAME,MAAoB,IAEpBC,EAAoBC,GAAoB,CAC5C,GAAIF,EAAc,IAAIE,CAAO,EAC3B,OAGF,MAAMC,EAAU,WAAW,IAAM,CAC/BH,EAAc,OAAOE,CAAO,EAC5BE,EAAS,CACP,KAAM,eACN,QAAAF,CAAA,CACD,CACH,EAAGL,CAAkB,EAErBG,EAAc,IAAIE,EAASC,CAAO,CACpC,EAEaE,EAAU,CAACC,EAAcC,IAA0B,CAC9D,OAAQA,EAAO,KAAA,CACb,IAAK,YACH,MAAO,CACL,GAAGD,EACH,OAAQ,CAACC,EAAO,MAAO,GAAGD,EAAM,MAAM,EAAE,MAAM,EAAGV,CAAW,CAAA,EAGhE,IAAK,eACH,MAAO,CACL,GAAGU,EACH,OAAQA,EAAM,OAAO,IAAKE,GACxBA,EAAE,KAAOD,EAAO,MAAM,GAAK,CAAE,GAAGC,EAAG,GAAGD,EAAO,OAAUC,CAAA,CACzD,EAGJ,IAAK,gBAAiB,CACpB,KAAM,CAAE,QAAAN,GAAYK,EAEpB,OAAIL,EACFD,EAAiBC,CAAO,EAExBI,EAAM,OAAO,QAASG,GAAU,CAC9BR,EAAiBQ,EAAM,EAAE,CAC3B,CAAC,EAGI,CACL,GAAGH,EACH,OAAQA,EAAM,OAAO,IAAKE,GACxBA,EAAE,KAAON,GAAWA,IAAY,OAC5B,CACE,GAAGM,EACH,KAAM,EAAA,EAERA,CAAA,CACN,CAEJ,CACA,IAAK,eACH,OAAID,EAAO,UAAY,OACd,CACL,GAAGD,EACH,OAAQ,CAAA,CAAC,EAGN,CACL,GAAGA,EACH,OAAQA,EAAM,OAAO,OAAQE,GAAMA,EAAE,KAAOD,EAAO,OAAO,CAAA,CAC5D,CAEN,EAEMG,EAA2C,CAAA,EAEjD,IAAIC,EAAqB,CAAE,OAAQ,EAAC,EAEpC,SAASP,EAASG,EAAgB,CAChCI,EAAcN,EAAQM,EAAaJ,CAAM,EACzCG,EAAU,QAASE,GAAa,CAC9BA,EAASD,CAAW,CACtB,CAAC,CACH,CAIA,SAASF,EAAM,CAAE,GAAGI,GAAgB,CAClC,MAAMC,EAAKf,EAAA,EAELgB,EAAUF,GACdT,EAAS,CACP,KAAM,eACN,MAAO,CAAE,GAAGS,EAAO,GAAAC,CAAA,CAAG,CACvB,EACGE,EAAU,IAAMZ,EAAS,CAAE,KAAM,gBAAiB,QAASU,EAAI,EAErE,OAAAV,EAAS,CACP,KAAM,YACN,MAAO,CACL,GAAGS,EACH,GAAAC,EACA,KAAM,GACN,aAAeG,GAAS,CACjBA,GAAMD,EAAA,CACb,CAAA,CACF,CACD,EAEM,CACL,GAAAF,EACA,QAAAE,EACA,OAAAD,CAAA,CAEJ,CAEA,SAASG,GAAW,CAClB,KAAM,CAACZ,EAAOa,CAAQ,EAAIC,EAAM,SAAgBT,CAAW,EAE3DS,OAAAA,EAAM,UAAU,KACdV,EAAU,KAAKS,CAAQ,EAChB,IAAM,CACX,MAAME,EAAQX,EAAU,QAAQS,CAAQ,EACpCE,EAAQ,IACVX,EAAU,OAAOW,EAAO,CAAC,CAE7B,GACC,CAACf,CAAK,CAAC,EAEH,CACL,GAAGA,EACH,MAAAG,EACA,QAAUP,GAAqBE,EAAS,CAAE,KAAM,gBAAiB,QAAAF,EAAS,CAAA,CAE9E"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../index-lGzB9daF.cjs");exports.cn=e.cn;
2
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { c as r } from "../index-CwJPJKOE.js";
2
+ export {
3
+ r as cn
4
+ };
5
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("react/jsx-runtime"),K=require("react"),o=require("./index-lGzB9daF.cjs"),p=require("./card-tMkUxpmW.cjs"),w=require("./avatar-C0aVNCG9.cjs"),m=require("./scroll-area-DYOiJMXh.cjs"),N=require("./createLucideIcon-i5GEhNMV.cjs"),y=require("./progress-CFnuLqnS.cjs"),G=require("./use-formatters-d97RVcmg.cjs"),D=require("./calendar-SwL5isYC.cjs"),J=require("./plus-8wKRkVu-.cjs"),A=require("./skeleton-BSwwYaQU.cjs");function Q(i){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const s in i)if(s!=="default"){const a=Object.getOwnPropertyDescriptor(i,s);Object.defineProperty(t,s,a.get?a:{enumerable:!0,get:()=>i[s]})}}return t.default=i,Object.freeze(t)}const v=Q(K);const B=N.createLucideIcon("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);const Y=N.createLucideIcon("Building2",[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);const ee=N.createLucideIcon("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);const se=N.createLucideIcon("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);const T=N.createLucideIcon("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);const te=N.createLucideIcon("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);const H=N.createLucideIcon("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);const ae=N.createLucideIcon("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);const I=N.createLucideIcon("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);const re=N.createLucideIcon("SquarePen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);const ce=N.createLucideIcon("ThumbsDown",[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]]);const ne=N.createLucideIcon("ThumbsUp",[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]]);const le=N.createLucideIcon("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]),ie={active:"bg-success text-success-foreground",inactive:"bg-muted text-muted-foreground",lead:"bg-warning text-warning-foreground",customer:"bg-primary text-primary-foreground"},R=v.forwardRef(({className:i,name:t,email:s,phone:a,company:c,position:d,location:l,avatar:n,initials:r,status:h,tags:g,onClick:f,...j},b)=>e.jsxs(p.Card,{ref:b,className:o.cn("transition-shadow hover:shadow-md",f&&"cursor-pointer",i),onClick:f,...j,children:[e.jsx(p.CardHeader,{className:"pb-3",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsxs(w.Avatar,{className:"h-12 w-12",children:[n&&e.jsx(w.AvatarImage,{src:n,alt:t}),e.jsx(w.AvatarFallback,{children:r||t.charAt(0).toUpperCase()})]}),e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold leading-none",children:t}),h&&e.jsx(m.Badge,{className:o.cn("text-xs",ie[h]),children:h.charAt(0).toUpperCase()+h.slice(1)})]}),d&&e.jsx("p",{className:"text-sm text-muted-foreground",children:d})]})]})}),e.jsxs(p.CardContent,{className:"space-y-2 text-sm",children:[s&&e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(T,{className:"h-4 w-4"}),e.jsx("span",{children:s})]}),a&&e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(H,{className:"h-4 w-4"}),e.jsx("span",{children:a})]}),c&&e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(Y,{className:"h-4 w-4"}),e.jsx("span",{children:c})]}),l&&e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(y.MapPin,{className:"h-4 w-4"}),e.jsx("span",{children:l})]}),g&&g.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1 pt-2",children:g.map((x,u)=>e.jsx(m.Badge,{variant:"secondary",className:"text-xs",children:x},u))})]})]}));R.displayName="ContactCard";const de={low:"bg-muted text-muted-foreground",medium:"bg-warning text-warning-foreground",high:"bg-destructive text-destructive-foreground"},F=v.forwardRef(({className:i,title:t,value:s,company:a,stage:c,probability:d,closeDate:l,closeDateFormat:n,currency:r,showCurrencyCode:h=!1,probabilityLabel:g,owner:f,priority:j,onClick:b,onDragStart:x,draggable:u=!1,valueFormatted:k=!1,...z},M)=>{const{formatCurrency:C,formatDate:L,t:Z}=G.useFormatters(),$=v.useMemo(()=>{if(k||typeof s=="string")return s;if(r){const S=new Intl.NumberFormat(void 0,{style:"currency",currency:r,minimumFractionDigits:0,maximumFractionDigits:0}).format(s);return h?`${r} ${S.replace(/[^0-9.,\s]/g,"").trim()}`:S}return C(s,{minimumFractionDigits:0,maximumFractionDigits:0})},[s,k,C,r,h]),q=v.useMemo(()=>l?L(l,n):null,[l,n,L]);return e.jsxs(p.Card,{ref:M,className:o.cn("transition-all hover:shadow-md",b&&"cursor-pointer",u&&"cursor-grab active:cursor-grabbing",i),onClick:b,onDragStart:x,draggable:u,...z,children:[e.jsx(p.CardHeader,{className:"pb-2",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(p.CardTitle,{className:"text-base",children:t}),a&&e.jsx("p",{className:"text-sm text-muted-foreground",children:a})]}),j&&e.jsx(m.Badge,{className:o.cn("text-xs",de[j]),children:j.charAt(0).toUpperCase()+j.slice(1)})]})}),e.jsxs(p.CardContent,{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-lg font-bold",children:$}),c&&e.jsx(m.Badge,{variant:"outline",className:"text-xs",children:c})]}),d!==void 0&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:g||Z("deal.probability")}),e.jsxs("span",{className:"font-medium",children:[d,"%"]})]}),e.jsx(y.Progress,{value:d,className:"h-2"})]}),e.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[q&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(D.Calendar,{className:"h-3 w-3"}),e.jsx("span",{children:q})]}),f&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(w.Avatar,{className:"h-5 w-5",children:[f.avatar&&e.jsx(w.AvatarImage,{src:f.avatar}),e.jsx(w.AvatarFallback,{className:"text-[10px]",children:f.name.charAt(0).toUpperCase()})]}),e.jsx("span",{children:f.name})]})]})]})]})});F.displayName="DealCard";function oe({className:i,columns:t,renderItem:s,onItemMove:a,onAddItem:c,showAddButton:d=!0,columnWidth:l=300,getItemId:n}){const[r,h]=v.useState(null),g=(x,u)=>{h({id:x,columnId:u})},f=x=>{x.preventDefault()},j=x=>{r&&r.columnId!==x&&a?.(r.id,r.columnId,x),h(null)},b=()=>{h(null)};return e.jsxs(m.ScrollArea,{className:o.cn("w-full",i),children:[e.jsx("div",{className:"flex gap-4 p-4",children:t.map(x=>e.jsxs("div",{className:"flex shrink-0 flex-col rounded-lg bg-muted/50",style:{width:l},onDragOver:f,onDrop:()=>j(x.id),children:[e.jsxs("div",{className:"flex items-center justify-between p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[x.color&&e.jsx("div",{className:"h-3 w-3 rounded-full",style:{backgroundColor:x.color}}),e.jsx("h3",{className:"text-sm font-semibold",children:x.title}),e.jsx("span",{className:"rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground",children:x.items.length})]}),d&&c&&e.jsx(m.Button,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>c(x.id),children:e.jsx(J.Plus,{className:"h-4 w-4"})})]}),e.jsx("div",{className:"flex flex-1 flex-col gap-2 p-2",children:x.items.map(u=>{const k=n(u);return e.jsx("div",{draggable:!0,onDragStart:()=>g(k,x.id),onDragEnd:b,className:o.cn("transition-opacity",r?.id===k&&"opacity-50"),children:s(u,x.id)},k)})})]},x.id))}),e.jsx(m.ScrollBar,{orientation:"horizontal"})]})}const me=(i,t)=>{const s=i/t*100;return s>=80?"bg-success text-success-foreground":s>=60?"bg-primary text-primary-foreground":s>=40?"bg-warning text-warning-foreground":"bg-destructive text-destructive-foreground"},xe=(i,t)=>{const s=i/t*100;return s>=80?"Hot":s>=60?"Warm":s>=40?"Cold":"Very Cold"},he={sm:"h-6 w-6 text-xs",md:"h-8 w-8 text-sm",lg:"h-10 w-10 text-base"},P=v.forwardRef(({className:i,score:t,maxScore:s=100,showLabel:a=!1,size:c="md",...d},l)=>{const n=me(t,s),r=xe(t,s);return e.jsxs("div",{ref:l,className:o.cn("flex items-center gap-2",i),...d,children:[e.jsx("div",{className:o.cn("flex items-center justify-center rounded-full font-semibold",he[c],n),children:t}),a&&e.jsx("span",{className:o.cn("text-sm font-medium",n.split(" ")[0].replace("bg-","text-")),children:r})]})});P.displayName="LeadScoreIndicator";const ue={active:"bg-success/15 text-success border-success/30",inactive:"bg-muted text-muted-foreground border-muted",pending:"bg-warning/15 text-warning border-warning/30",completed:"bg-success/15 text-success border-success/30",cancelled:"bg-destructive/15 text-destructive border-destructive/30",draft:"bg-muted text-muted-foreground border-muted",published:"bg-success/15 text-success border-success/30",archived:"bg-muted text-muted-foreground border-muted",open:"bg-info/15 text-info border-info/30",closed:"bg-muted text-muted-foreground border-muted",won:"bg-success/15 text-success border-success/30",lost:"bg-destructive/15 text-destructive border-destructive/30",qualified:"bg-primary/15 text-primary border-primary/30",unqualified:"bg-muted text-muted-foreground border-muted"},ge={active:"bg-success",inactive:"bg-muted-foreground",pending:"bg-warning",completed:"bg-success",cancelled:"bg-destructive",draft:"bg-muted-foreground",published:"bg-success",archived:"bg-muted-foreground",open:"bg-info",closed:"bg-muted-foreground",won:"bg-success",lost:"bg-destructive",qualified:"bg-primary",unqualified:"bg-muted-foreground"};function fe({className:i,status:t,customColors:s,showDot:a=!0}){const c=t.toLowerCase(),d=s?.[t]||ue[c]||"bg-muted text-muted-foreground",l=ge[c]||"bg-muted-foreground",n=t.charAt(0).toUpperCase()+t.slice(1).toLowerCase();return e.jsxs(m.Badge,{variant:"outline",className:o.cn("gap-1.5 font-medium",d,i),children:[a&&e.jsx("span",{className:o.cn("h-2 w-2 rounded-full",l)}),n]})}const V=v.forwardRef(({className:i,steps:t,currentStep:s,orientation:a="horizontal",onStepClick:c,...d},l)=>e.jsx("div",{ref:l,className:o.cn("flex",a==="horizontal"?"flex-row items-start":"flex-col",i),...d,children:t.map((n,r)=>{const h=r<s,g=r===s,f=c!==void 0;return e.jsxs("div",{className:o.cn("flex",a==="horizontal"?"flex-1 flex-col items-center":"flex-row items-start gap-4 pb-8 last:pb-0"),children:[e.jsxs("div",{className:o.cn("flex items-center",a==="horizontal"?"w-full":"flex-col"),children:[a==="horizontal"&&r>0&&e.jsx("div",{className:o.cn("h-0.5 flex-1",r<=s?"bg-primary":"bg-border")}),e.jsx("button",{type:"button",onClick:()=>f&&c(r),disabled:!f,className:o.cn("relative z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full border-2 text-sm font-medium transition-colors",h?"border-primary bg-primary text-primary-foreground":g?"border-primary bg-background text-primary":"border-border bg-background text-muted-foreground",f&&"cursor-pointer hover:border-primary/50"),children:h?e.jsx(m.Check,{className:"h-5 w-5"}):r+1}),a==="horizontal"&&r<t.length-1&&e.jsx("div",{className:o.cn("h-0.5 flex-1",r<s?"bg-primary":"bg-border")}),a==="vertical"&&r<t.length-1&&e.jsx("div",{className:o.cn("my-2 w-0.5 flex-1",r<s?"bg-primary":"bg-border"),style:{minHeight:"2rem"}})]}),e.jsxs("div",{className:o.cn("text-center",a==="horizontal"?"mt-2 px-2":"pt-1"),children:[e.jsx("p",{className:o.cn("text-sm font-medium",g||h?"text-foreground":"text-muted-foreground"),children:n.title}),n.description&&e.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:n.description})]})]},n.id)})}));V.displayName="ProgressTracker";const O=v.forwardRef(({className:i,title:t="AI Summary",summary:s,loading:a=!1,error:c,onRefresh:d,onCopy:l,onFeedback:n,model:r,generatedAt:h,confidence:g,...f},j)=>{const[b,x]=v.useState(!1),[u,k]=v.useState(null),z=async()=>{s&&l&&(await navigator.clipboard.writeText(s),x(!0),l(),setTimeout(()=>x(!1),2e3))},M=C=>{k(C),n?.(C)};return e.jsxs(p.Card,{ref:j,className:o.cn("relative overflow-hidden",i),...f,children:[e.jsx("div",{className:"absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-primary/50 via-primary to-primary/50"}),e.jsxs(p.CardHeader,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(I,{className:"h-4 w-4 text-primary"}),e.jsx(p.CardTitle,{className:"text-base font-medium",children:t}),r&&e.jsx(m.Badge,{variant:"outline",className:"text-xs",children:r})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[d&&e.jsx(m.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:d,disabled:a,children:e.jsx(ae,{className:o.cn("h-4 w-4",a&&"animate-spin")})}),s&&l&&e.jsx(m.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:z,children:b?e.jsx(m.Check,{className:"h-4 w-4 text-success"}):e.jsx(ee,{className:"h-4 w-4"})})]})]}),e.jsx(p.CardContent,{className:"space-y-3",children:a?e.jsxs("div",{className:"space-y-2",children:[e.jsx(A.Skeleton,{className:"h-4 w-full"}),e.jsx(A.Skeleton,{className:"h-4 w-full"}),e.jsx(A.Skeleton,{className:"h-4 w-3/4"})]}):c?e.jsx("div",{className:"rounded-md bg-destructive/10 p-3 text-sm text-destructive",children:c}):s?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:s}),e.jsxs("div",{className:"flex items-center justify-between pt-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[g!==void 0&&e.jsxs("span",{children:["Confidence: ",Math.round(g*100),"%"]}),h&&e.jsx("span",{children:h})]}),n&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground mr-1",children:"Was this helpful?"}),e.jsx(m.Button,{variant:u==="positive"?"default":"ghost",size:"icon",className:"h-7 w-7",onClick:()=>M("positive"),children:e.jsx(ne,{className:"h-3.5 w-3.5"})}),e.jsx(m.Button,{variant:u==="negative"?"destructive":"ghost",size:"icon",className:"h-7 w-7",onClick:()=>M("negative"),children:e.jsx(ce,{className:"h-3.5 w-3.5"})})]})]})]}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"No summary available"})})]})});O.displayName="AISummaryCard";const U=v.forwardRef(({className:i,title:t,description:s,badge:a,icon:c,image:d,actionLabel:l="Try it now",onAction:n,learnMoreUrl:r,dismissible:h=!0,onDismiss:g,variant:f="default",...j},b)=>{const x={default:"bg-card",gradient:"bg-gradient-to-br from-primary/10 via-primary/5 to-transparent",bordered:"border-2 border-primary/20"};return e.jsxs(p.Card,{ref:b,className:o.cn("relative overflow-hidden",x[f],i),...j,children:[h&&g&&e.jsx(m.Button,{variant:"ghost",size:"icon",className:"absolute right-2 top-2 h-6 w-6",onClick:g,children:e.jsx(m.X,{className:"h-4 w-4"})}),e.jsx(p.CardContent,{className:"p-6",children:e.jsxs("div",{className:"flex gap-4",children:[(c||d)&&e.jsx("div",{className:"flex-shrink-0",children:c?e.jsx("div",{className:"flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10 text-primary",children:c}):d?e.jsx("img",{src:d,alt:"",className:"h-12 w-12 rounded-lg object-cover"}):null}),e.jsxs("div",{className:"flex-1 space-y-3",children:[e.jsx("div",{className:"flex items-start justify-between gap-2",children:e.jsxs("div",{children:[a&&e.jsxs(m.Badge,{variant:"secondary",className:"mb-2",children:[e.jsx(I,{className:"mr-1 h-3 w-3"}),a]}),e.jsx("h3",{className:"font-semibold",children:t})]})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[n&&e.jsxs(m.Button,{size:"sm",onClick:n,children:[l,e.jsx(B,{className:"ml-1 h-4 w-4"})]}),r&&e.jsx(m.Button,{variant:"ghost",size:"sm",asChild:!0,children:e.jsxs("a",{href:r,target:"_blank",rel:"noopener noreferrer",children:["Learn more",e.jsx(se,{className:"ml-1 h-3 w-3"})]})})]})]})]})})]})});U.displayName="FeatureHighlightCard";const W=m.cva("relative flex items-center gap-3 px-4 py-3 text-sm",{variants:{variant:{default:"bg-muted text-foreground",info:"bg-info/10 text-info-foreground border-info/20",success:"bg-success/10 text-success-foreground border-success/20",warning:"bg-warning/10 text-warning-foreground border-warning/20",destructive:"bg-destructive/10 text-destructive-foreground border-destructive/20"},position:{top:"fixed top-0 left-0 right-0 z-50 border-b",bottom:"fixed bottom-0 left-0 right-0 z-50 border-t",inline:"rounded-lg border"}},defaultVariants:{variant:"default",position:"inline"}}),pe={default:y.Info,info:y.Info,success:y.CircleCheckBig,warning:y.TriangleAlert,destructive:y.CircleAlert},E=v.forwardRef(({className:i,variant:t="default",position:s="inline",title:a,message:c,dismissible:d=!0,onDismiss:l,action:n,showIcon:r=!0,...h},g)=>{const f=pe[t||"default"];return e.jsxs("div",{ref:g,role:"alert",className:o.cn(W({variant:t,position:s}),i),...h,children:[r&&e.jsx(f,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex flex-1 flex-col gap-0.5",children:[a&&e.jsx("p",{className:"font-medium",children:a}),e.jsx("p",{className:o.cn(!a&&"font-normal",a&&"text-muted-foreground"),children:c})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[n&&e.jsx(m.Button,{variant:t==="destructive"?"destructive":"outline",size:"sm",onClick:n.onClick,children:n.label}),d&&l&&e.jsx(m.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 flex-shrink-0",onClick:l,children:e.jsx(m.X,{className:"h-4 w-4"})})]})]})});E.displayName="AlertBanner";const je={email:e.jsx(T,{className:"h-4 w-4"}),call:e.jsx(H,{className:"h-4 w-4"}),meeting:e.jsx(D.Calendar,{className:"h-4 w-4"}),note:e.jsx(y.FileText,{className:"h-4 w-4"}),task:e.jsx(y.FileText,{className:"h-4 w-4"}),message:e.jsx(te,{className:"h-4 w-4"})},ve={email:"bg-blue-100 text-blue-600 dark:bg-blue-900/30 dark:text-blue-400",call:"bg-green-100 text-green-600 dark:bg-green-900/30 dark:text-green-400",meeting:"bg-purple-100 text-purple-600 dark:bg-purple-900/30 dark:text-purple-400",note:"bg-yellow-100 text-yellow-600 dark:bg-yellow-900/30 dark:text-yellow-400",task:"bg-orange-100 text-orange-600 dark:bg-orange-900/30 dark:text-orange-400",message:"bg-pink-100 text-pink-600 dark:bg-pink-900/30 dark:text-pink-400"},_=v.forwardRef(({className:i,type:t,title:s,description:a,timestamp:c,user:d,actions:l,metadata:n,...r},h)=>e.jsxs("div",{ref:h,className:o.cn("group flex gap-4 rounded-lg p-3 hover:bg-muted/50",i),...r,children:[e.jsx("div",{className:o.cn("flex h-10 w-10 items-center justify-center rounded-lg",ve[t]),children:je[t]}),e.jsxs("div",{className:"flex flex-1 flex-col gap-1",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium",children:s}),a&&e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:a})]}),l&&e.jsxs("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100",children:[l.onEdit&&e.jsx(m.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:l.onEdit,children:e.jsx(re,{className:"h-3.5 w-3.5"})}),l.onDelete&&e.jsx(m.Button,{variant:"ghost",size:"icon",className:"h-7 w-7 text-destructive hover:text-destructive",onClick:l.onDelete,children:e.jsx(le,{className:"h-3.5 w-3.5"})})]})]}),n&&Object.keys(n).length>0&&e.jsx("div",{className:"flex flex-wrap gap-2 text-xs text-muted-foreground",children:Object.entries(n).map(([g,f])=>e.jsxs("span",{children:[e.jsxs("span",{className:"font-medium",children:[g,":"]})," ",f]},g))}),e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[d&&e.jsxs(e.Fragment,{children:[e.jsxs(w.Avatar,{className:"h-5 w-5",children:[d.avatar&&e.jsx(w.AvatarImage,{src:d.avatar}),e.jsx(w.AvatarFallback,{className:"text-[10px]",children:d.name.charAt(0).toUpperCase()})]}),e.jsx("span",{children:d.name}),e.jsx("span",{children:"•"})]}),e.jsx("span",{children:c})]})]})]}));_.displayName="CRMActivityItem";const X=v.forwardRef(({className:i,title:t,subtitle:s,userName:a,steps:c=[],dismissible:d=!0,onDismiss:l,showProgress:n=!0,image:r,ctaLabel:h,ctaOnClick:g,...f},j)=>{const b=c.filter(u=>u.completed).length,x=c.length>0?b/c.length*100:0;return e.jsxs(p.Card,{ref:j,className:o.cn("relative overflow-hidden",i),...f,children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-primary/5 via-primary/10 to-transparent"}),d&&l&&e.jsx(m.Button,{variant:"ghost",size:"icon",className:"absolute right-2 top-2 h-6 w-6 z-10",onClick:l,children:e.jsx(m.X,{className:"h-4 w-4"})}),e.jsx(p.CardContent,{className:"relative p-6",children:e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(I,{className:"h-5 w-5 text-primary"}),e.jsx("span",{className:"text-sm font-medium text-primary",children:"Welcome"})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:a?`${t}, ${a}!`:t}),s&&e.jsx("p",{className:"mt-1 text-muted-foreground",children:s})]}),n&&c.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:"Setup progress"}),e.jsxs("span",{className:"font-medium",children:[b,"/",c.length," completed"]})]}),e.jsx(y.Progress,{value:x,className:"h-2"})]}),c.length>0&&e.jsx("div",{className:"space-y-2",children:c.slice(0,3).map(u=>e.jsxs("button",{onClick:u.onClick,className:o.cn("flex w-full items-center gap-3 rounded-lg p-3 text-left transition-colors hover:bg-muted",u.completed&&"opacity-50"),children:[e.jsx("div",{className:o.cn("flex h-6 w-6 items-center justify-center rounded-full border-2",u.completed?"border-primary bg-primary text-primary-foreground":"border-muted-foreground/30"),children:u.completed&&e.jsx("svg",{className:"h-3.5 w-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:3,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:o.cn("font-medium",u.completed&&"line-through"),children:u.title}),u.description&&e.jsx("p",{className:"text-xs text-muted-foreground",children:u.description})]}),!u.completed&&e.jsx(B,{className:"h-4 w-4 text-muted-foreground"})]},u.id))}),h&&g&&e.jsxs(m.Button,{onClick:g,className:"gap-2",children:[h,e.jsx(B,{className:"h-4 w-4"})]})]}),r&&e.jsx("div",{className:"hidden lg:block",children:e.jsx("img",{src:r,alt:"",className:"h-48 w-48 object-contain"})})]})})]})});X.displayName="WelcomeCard";exports.AISummaryCard=O;exports.AlertBanner=E;exports.CRMActivityItem=_;exports.ContactCard=R;exports.DealCard=F;exports.FeatureHighlightCard=U;exports.LeadScoreIndicator=P;exports.PipelineBoard=oe;exports.ProgressTracker=V;exports.StatusBadge=fe;exports.WelcomeCard=X;exports.alertBannerVariants=W;
2
+ //# sourceMappingURL=welcome-card-CPolYl1D.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome-card-CPolYl1D.cjs","sources":["../node_modules/lucide-react/dist/esm/icons/arrow-right.js","../node_modules/lucide-react/dist/esm/icons/building-2.js","../node_modules/lucide-react/dist/esm/icons/copy.js","../node_modules/lucide-react/dist/esm/icons/external-link.js","../node_modules/lucide-react/dist/esm/icons/mail.js","../node_modules/lucide-react/dist/esm/icons/message-square.js","../node_modules/lucide-react/dist/esm/icons/phone.js","../node_modules/lucide-react/dist/esm/icons/refresh-cw.js","../node_modules/lucide-react/dist/esm/icons/sparkles.js","../node_modules/lucide-react/dist/esm/icons/square-pen.js","../node_modules/lucide-react/dist/esm/icons/thumbs-down.js","../node_modules/lucide-react/dist/esm/icons/thumbs-up.js","../node_modules/lucide-react/dist/esm/icons/trash-2.js","../src/components/feedback/contact-card.tsx","../src/components/feedback/deal-card.tsx","../src/components/feedback/pipeline-board.tsx","../src/components/feedback/lead-score-indicator.tsx","../src/components/feedback/status-badge.tsx","../src/components/feedback/progress-tracker.tsx","../src/components/feedback/ai-summary-card.tsx","../src/components/feedback/feature-highlight-card.tsx","../src/components/feedback/alert-banner.tsx","../src/components/feedback/activity-item.tsx","../src/components/feedback/welcome-card.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowRight = createLucideIcon(\"ArrowRight\", [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"m12 5 7 7-7 7\", key: \"xquz4c\" }]\n]);\n\nexport { ArrowRight as default };\n//# sourceMappingURL=arrow-right.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Building2 = createLucideIcon(\"Building2\", [\n [\"path\", { d: \"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z\", key: \"1b4qmf\" }],\n [\"path\", { d: \"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2\", key: \"i71pzd\" }],\n [\"path\", { d: \"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2\", key: \"10jefs\" }],\n [\"path\", { d: \"M10 6h4\", key: \"1itunk\" }],\n [\"path\", { d: \"M10 10h4\", key: \"tcdvrf\" }],\n [\"path\", { d: \"M10 14h4\", key: \"kelpxr\" }],\n [\"path\", { d: \"M10 18h4\", key: \"1ulq68\" }]\n]);\n\nexport { Building2 as default };\n//# sourceMappingURL=building-2.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Copy = createLucideIcon(\"Copy\", [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n]);\n\nexport { Copy as default };\n//# sourceMappingURL=copy.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ExternalLink = createLucideIcon(\"ExternalLink\", [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"M10 14 21 3\", key: \"gplh6r\" }],\n [\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\", key: \"a6xqqp\" }]\n]);\n\nexport { ExternalLink as default };\n//# sourceMappingURL=external-link.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Mail = createLucideIcon(\"Mail\", [\n [\"rect\", { width: \"20\", height: \"16\", x: \"2\", y: \"4\", rx: \"2\", key: \"18n3k1\" }],\n [\"path\", { d: \"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\", key: \"1ocrg3\" }]\n]);\n\nexport { Mail as default };\n//# sourceMappingURL=mail.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MessageSquare = createLucideIcon(\"MessageSquare\", [\n [\"path\", { d: \"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\", key: \"1lielz\" }]\n]);\n\nexport { MessageSquare as default };\n//# sourceMappingURL=message-square.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Phone = createLucideIcon(\"Phone\", [\n [\n \"path\",\n {\n d: \"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\",\n key: \"foiqr5\"\n }\n ]\n]);\n\nexport { Phone as default };\n//# sourceMappingURL=phone.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst RefreshCw = createLucideIcon(\"RefreshCw\", [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n]);\n\nexport { RefreshCw as default };\n//# sourceMappingURL=refresh-cw.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Sparkles = createLucideIcon(\"Sparkles\", [\n [\n \"path\",\n {\n d: \"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\",\n key: \"4pj2yx\"\n }\n ],\n [\"path\", { d: \"M20 3v4\", key: \"1olli1\" }],\n [\"path\", { d: \"M22 5h-4\", key: \"1gvqau\" }],\n [\"path\", { d: \"M4 17v2\", key: \"vumght\" }],\n [\"path\", { d: \"M5 18H3\", key: \"zchphs\" }]\n]);\n\nexport { Sparkles as default };\n//# sourceMappingURL=sparkles.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst SquarePen = createLucideIcon(\"SquarePen\", [\n [\"path\", { d: \"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\", key: \"1m0v6g\" }],\n [\n \"path\",\n {\n d: \"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\",\n key: \"ohrbg2\"\n }\n ]\n]);\n\nexport { SquarePen as default };\n//# sourceMappingURL=square-pen.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ThumbsDown = createLucideIcon(\"ThumbsDown\", [\n [\"path\", { d: \"M17 14V2\", key: \"8ymqnk\" }],\n [\n \"path\",\n {\n d: \"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\",\n key: \"m61m77\"\n }\n ]\n]);\n\nexport { ThumbsDown as default };\n//# sourceMappingURL=thumbs-down.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ThumbsUp = createLucideIcon(\"ThumbsUp\", [\n [\"path\", { d: \"M7 10v12\", key: \"1qc93n\" }],\n [\n \"path\",\n {\n d: \"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\",\n key: \"emmmcr\"\n }\n ]\n]);\n\nexport { ThumbsUp as default };\n//# sourceMappingURL=thumbs-up.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Trash2 = createLucideIcon(\"Trash2\", [\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\", key: \"4alrt4\" }],\n [\"path\", { d: \"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\", key: \"v07s0e\" }],\n [\"line\", { x1: \"10\", x2: \"10\", y1: \"11\", y2: \"17\", key: \"1uufr5\" }],\n [\"line\", { x1: \"14\", x2: \"14\", y1: \"11\", y2: \"17\", key: \"xtxkd\" }]\n]);\n\nexport { Trash2 as default };\n//# sourceMappingURL=trash-2.js.map\n","import * as React from 'react'\nimport { Mail, Phone, Building2, MapPin } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { Card, CardContent, CardHeader } from '@/components/ui/card'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { Badge } from '@/components/ui/badge'\n\nexport interface ContactCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string\n email?: string\n phone?: string\n company?: string\n position?: string\n location?: string\n avatar?: string\n initials?: string\n status?: 'active' | 'inactive' | 'lead' | 'customer'\n tags?: string[]\n onClick?: () => void\n}\n\nconst statusColors = {\n active: 'bg-success text-success-foreground',\n inactive: 'bg-muted text-muted-foreground',\n lead: 'bg-warning text-warning-foreground',\n customer: 'bg-primary text-primary-foreground',\n}\n\nconst ContactCard = React.forwardRef<HTMLDivElement, ContactCardProps>(\n (\n {\n className,\n name,\n email,\n phone,\n company,\n position,\n location,\n avatar,\n initials,\n status,\n tags,\n onClick,\n ...props\n },\n ref\n ) => {\n return (\n <Card\n ref={ref}\n className={cn('transition-shadow hover:shadow-md', onClick && 'cursor-pointer', className)}\n onClick={onClick}\n {...props}\n >\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start gap-4\">\n <Avatar className=\"h-12 w-12\">\n {avatar && <AvatarImage src={avatar} alt={name} />}\n <AvatarFallback>{initials || name.charAt(0).toUpperCase()}</AvatarFallback>\n </Avatar>\n <div className=\"flex-1 space-y-1\">\n <div className=\"flex items-center gap-2\">\n <h3 className=\"font-semibold leading-none\">{name}</h3>\n {status && (\n <Badge className={cn('text-xs', statusColors[status])}>\n {status.charAt(0).toUpperCase() + status.slice(1)}\n </Badge>\n )}\n </div>\n {position && <p className=\"text-sm text-muted-foreground\">{position}</p>}\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-2 text-sm\">\n {email && (\n <div className=\"flex items-center gap-2 text-muted-foreground\">\n <Mail className=\"h-4 w-4\" />\n <span>{email}</span>\n </div>\n )}\n {phone && (\n <div className=\"flex items-center gap-2 text-muted-foreground\">\n <Phone className=\"h-4 w-4\" />\n <span>{phone}</span>\n </div>\n )}\n {company && (\n <div className=\"flex items-center gap-2 text-muted-foreground\">\n <Building2 className=\"h-4 w-4\" />\n <span>{company}</span>\n </div>\n )}\n {location && (\n <div className=\"flex items-center gap-2 text-muted-foreground\">\n <MapPin className=\"h-4 w-4\" />\n <span>{location}</span>\n </div>\n )}\n {tags && tags.length > 0 && (\n <div className=\"flex flex-wrap gap-1 pt-2\">\n {tags.map((tag, index) => (\n <Badge key={index} variant=\"secondary\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n </div>\n )}\n </CardContent>\n </Card>\n )\n }\n)\nContactCard.displayName = 'ContactCard'\n\nexport { ContactCard }\n","import * as React from 'react'\nimport { Calendar } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { Progress } from '@/components/ui/progress'\nimport { useFormatters } from '@/hooks/use-formatters'\nimport { type CurrencyCode } from '@/lib/currencies'\n\nexport interface DealCardProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string\n value: number | string\n company?: string\n stage?: string\n probability?: number\n closeDate?: Date | string\n closeDateFormat?: string\n currency?: CurrencyCode\n showCurrencyCode?: boolean\n probabilityLabel?: string\n owner?: {\n name: string\n avatar?: string\n }\n priority?: 'low' | 'medium' | 'high'\n onClick?: () => void\n onDragStart?: (e: React.DragEvent) => void\n draggable?: boolean\n /** If true, the value is already formatted and won't be processed */\n valueFormatted?: boolean\n}\n\nconst priorityColors = {\n low: 'bg-muted text-muted-foreground',\n medium: 'bg-warning text-warning-foreground',\n high: 'bg-destructive text-destructive-foreground',\n}\n\nconst DealCard = React.forwardRef<HTMLDivElement, DealCardProps>(\n (\n {\n className,\n title,\n value,\n company,\n stage,\n probability,\n closeDate,\n closeDateFormat,\n currency,\n showCurrencyCode = false,\n probabilityLabel,\n owner,\n priority,\n onClick,\n onDragStart,\n draggable = false,\n valueFormatted = false,\n ...props\n },\n ref\n ) => {\n const { formatCurrency, formatDate, t } = useFormatters()\n\n const displayValue = React.useMemo(() => {\n if (valueFormatted || typeof value === 'string') {\n return value\n }\n // Use provided currency or fall back to locale default\n if (currency) {\n const formatted = new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency: currency,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n }).format(value)\n return showCurrencyCode ? `${currency} ${formatted.replace(/[^0-9.,\\s]/g, '').trim()}` : formatted\n }\n return formatCurrency(value, { minimumFractionDigits: 0, maximumFractionDigits: 0 })\n }, [value, valueFormatted, formatCurrency, currency, showCurrencyCode])\n\n const displayDate = React.useMemo(() => {\n if (!closeDate) return null\n return formatDate(closeDate, closeDateFormat)\n }, [closeDate, closeDateFormat, formatDate])\n\n return (\n <Card\n ref={ref}\n className={cn(\n 'transition-all hover:shadow-md',\n onClick && 'cursor-pointer',\n draggable && 'cursor-grab active:cursor-grabbing',\n className\n )}\n onClick={onClick}\n onDragStart={onDragStart}\n draggable={draggable}\n {...props}\n >\n <CardHeader className=\"pb-2\">\n <div className=\"flex items-start justify-between\">\n <div className=\"space-y-1\">\n <CardTitle className=\"text-base\">{title}</CardTitle>\n {company && <p className=\"text-sm text-muted-foreground\">{company}</p>}\n </div>\n {priority && (\n <Badge className={cn('text-xs', priorityColors[priority])}>\n {priority.charAt(0).toUpperCase() + priority.slice(1)}\n </Badge>\n )}\n </div>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-lg font-bold\">\n {displayValue}\n </div>\n {stage && (\n <Badge variant=\"outline\" className=\"text-xs\">\n {stage}\n </Badge>\n )}\n </div>\n\n {probability !== undefined && (\n <div className=\"space-y-1\">\n <div className=\"flex justify-between text-xs\">\n <span className=\"text-muted-foreground\">{probabilityLabel || t('deal.probability')}</span>\n <span className=\"font-medium\">{probability}%</span>\n </div>\n <Progress value={probability} className=\"h-2\" />\n </div>\n )}\n\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n {displayDate && (\n <div className=\"flex items-center gap-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>{displayDate}</span>\n </div>\n )}\n {owner && (\n <div className=\"flex items-center gap-1\">\n <Avatar className=\"h-5 w-5\">\n {owner.avatar && <AvatarImage src={owner.avatar} />}\n <AvatarFallback className=\"text-[10px]\">\n {owner.name.charAt(0).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n <span>{owner.name}</span>\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n )\n }\n)\nDealCard.displayName = 'DealCard'\n\nexport { DealCard }\n","import * as React from 'react'\nimport { Plus } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { Button } from '@/components/ui/button'\nimport { ScrollArea, ScrollBar } from '@/components/ui/scroll-area'\n\nexport interface PipelineColumn<T> {\n id: string\n title: string\n items: T[]\n color?: string\n}\n\nexport interface PipelineBoardProps<T> extends React.HTMLAttributes<HTMLDivElement> {\n columns: PipelineColumn<T>[]\n renderItem: (item: T, columnId: string) => React.ReactNode\n onItemMove?: (itemId: string, fromColumnId: string, toColumnId: string) => void\n onAddItem?: (columnId: string) => void\n showAddButton?: boolean\n columnWidth?: number\n getItemId: (item: T) => string\n}\n\nfunction PipelineBoard<T>({\n className,\n columns,\n renderItem,\n onItemMove,\n onAddItem,\n showAddButton = true,\n columnWidth = 300,\n getItemId,\n}: PipelineBoardProps<T>) {\n const [draggedItem, setDraggedItem] = React.useState<{\n id: string\n columnId: string\n } | null>(null)\n\n const handleDragStart = (itemId: string, columnId: string) => {\n setDraggedItem({ id: itemId, columnId })\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n }\n\n const handleDrop = (targetColumnId: string) => {\n if (draggedItem && draggedItem.columnId !== targetColumnId) {\n onItemMove?.(draggedItem.id, draggedItem.columnId, targetColumnId)\n }\n setDraggedItem(null)\n }\n\n const handleDragEnd = () => {\n setDraggedItem(null)\n }\n\n return (\n <ScrollArea className={cn('w-full', className)}>\n <div className=\"flex gap-4 p-4\">\n {columns.map((column) => (\n <div\n key={column.id}\n className=\"flex shrink-0 flex-col rounded-lg bg-muted/50\"\n style={{ width: columnWidth }}\n onDragOver={handleDragOver}\n onDrop={() => handleDrop(column.id)}\n >\n <div className=\"flex items-center justify-between p-3\">\n <div className=\"flex items-center gap-2\">\n {column.color && (\n <div\n className=\"h-3 w-3 rounded-full\"\n style={{ backgroundColor: column.color }}\n />\n )}\n <h3 className=\"text-sm font-semibold\">{column.title}</h3>\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground\">\n {column.items.length}\n </span>\n </div>\n {showAddButton && onAddItem && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6\"\n onClick={() => onAddItem(column.id)}\n >\n <Plus className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n <div className=\"flex flex-1 flex-col gap-2 p-2\">\n {column.items.map((item) => {\n const itemId = getItemId(item)\n return (\n <div\n key={itemId}\n draggable\n onDragStart={() => handleDragStart(itemId, column.id)}\n onDragEnd={handleDragEnd}\n className={cn(\n 'transition-opacity',\n draggedItem?.id === itemId && 'opacity-50'\n )}\n >\n {renderItem(item, column.id)}\n </div>\n )\n })}\n </div>\n </div>\n ))}\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n )\n}\n\nexport { PipelineBoard }\n","import * as React from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface LeadScoreIndicatorProps extends React.HTMLAttributes<HTMLDivElement> {\n score: number\n maxScore?: number\n showLabel?: boolean\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst getScoreColor = (score: number, maxScore: number) => {\n const percentage = (score / maxScore) * 100\n if (percentage >= 80) return 'bg-success text-success-foreground'\n if (percentage >= 60) return 'bg-primary text-primary-foreground'\n if (percentage >= 40) return 'bg-warning text-warning-foreground'\n return 'bg-destructive text-destructive-foreground'\n}\n\nconst getScoreLabel = (score: number, maxScore: number) => {\n const percentage = (score / maxScore) * 100\n if (percentage >= 80) return 'Hot'\n if (percentage >= 60) return 'Warm'\n if (percentage >= 40) return 'Cold'\n return 'Very Cold'\n}\n\nconst sizeClasses = {\n sm: 'h-6 w-6 text-xs',\n md: 'h-8 w-8 text-sm',\n lg: 'h-10 w-10 text-base',\n}\n\nconst LeadScoreIndicator = React.forwardRef<HTMLDivElement, LeadScoreIndicatorProps>(\n ({ className, score, maxScore = 100, showLabel = false, size = 'md', ...props }, ref) => {\n const colorClass = getScoreColor(score, maxScore)\n const label = getScoreLabel(score, maxScore)\n\n return (\n <div ref={ref} className={cn('flex items-center gap-2', className)} {...props}>\n <div\n className={cn(\n 'flex items-center justify-center rounded-full font-semibold',\n sizeClasses[size],\n colorClass\n )}\n >\n {score}\n </div>\n {showLabel && (\n <span className={cn('text-sm font-medium', colorClass.split(' ')[0].replace('bg-', 'text-'))}>\n {label}\n </span>\n )}\n </div>\n )\n }\n)\nLeadScoreIndicator.displayName = 'LeadScoreIndicator'\n\nexport { LeadScoreIndicator }\n","import { cn } from '@/utils/cn'\nimport { Badge } from '@/components/ui/badge'\n\nexport type StatusType =\n | 'active'\n | 'inactive'\n | 'pending'\n | 'completed'\n | 'cancelled'\n | 'draft'\n | 'published'\n | 'archived'\n | 'open'\n | 'closed'\n | 'won'\n | 'lost'\n | 'qualified'\n | 'unqualified'\n\nexport interface StatusBadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n status: StatusType | string\n customColors?: Record<string, string>\n showDot?: boolean\n}\n\nconst defaultStatusColors: Record<StatusType, string> = {\n active: 'bg-success/15 text-success border-success/30',\n inactive: 'bg-muted text-muted-foreground border-muted',\n pending: 'bg-warning/15 text-warning border-warning/30',\n completed: 'bg-success/15 text-success border-success/30',\n cancelled: 'bg-destructive/15 text-destructive border-destructive/30',\n draft: 'bg-muted text-muted-foreground border-muted',\n published: 'bg-success/15 text-success border-success/30',\n archived: 'bg-muted text-muted-foreground border-muted',\n open: 'bg-info/15 text-info border-info/30',\n closed: 'bg-muted text-muted-foreground border-muted',\n won: 'bg-success/15 text-success border-success/30',\n lost: 'bg-destructive/15 text-destructive border-destructive/30',\n qualified: 'bg-primary/15 text-primary border-primary/30',\n unqualified: 'bg-muted text-muted-foreground border-muted',\n}\n\nconst defaultDotColors: Record<StatusType, string> = {\n active: 'bg-success',\n inactive: 'bg-muted-foreground',\n pending: 'bg-warning',\n completed: 'bg-success',\n cancelled: 'bg-destructive',\n draft: 'bg-muted-foreground',\n published: 'bg-success',\n archived: 'bg-muted-foreground',\n open: 'bg-info',\n closed: 'bg-muted-foreground',\n won: 'bg-success',\n lost: 'bg-destructive',\n qualified: 'bg-primary',\n unqualified: 'bg-muted-foreground',\n}\n\nfunction StatusBadge({ className, status, customColors, showDot = true }: StatusBadgeProps) {\n const statusKey = status.toLowerCase() as StatusType\n const colorClass = customColors?.[status] || defaultStatusColors[statusKey] || 'bg-muted text-muted-foreground'\n const dotColor = defaultDotColors[statusKey] || 'bg-muted-foreground'\n\n const displayText = status.charAt(0).toUpperCase() + status.slice(1).toLowerCase()\n\n return (\n <Badge variant=\"outline\" className={cn('gap-1.5 font-medium', colorClass, className)}>\n {showDot && <span className={cn('h-2 w-2 rounded-full', dotColor)} />}\n {displayText}\n </Badge>\n )\n}\n\nexport { StatusBadge }\n","import * as React from 'react'\nimport { Check } from 'lucide-react'\nimport { cn } from '@/utils/cn'\n\nexport interface ProgressStep {\n id: string | number\n title: string\n description?: string\n}\n\nexport interface ProgressTrackerProps extends React.HTMLAttributes<HTMLDivElement> {\n steps: ProgressStep[]\n currentStep: number\n orientation?: 'horizontal' | 'vertical'\n onStepClick?: (stepIndex: number) => void\n}\n\nconst ProgressTracker = React.forwardRef<HTMLDivElement, ProgressTrackerProps>(\n ({ className, steps, currentStep, orientation = 'horizontal', onStepClick, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-row items-start' : 'flex-col',\n className\n )}\n {...props}\n >\n {steps.map((step, index) => {\n const isCompleted = index < currentStep\n const isCurrent = index === currentStep\n const isClickable = onStepClick !== undefined\n\n return (\n <div\n key={step.id}\n className={cn(\n 'flex',\n orientation === 'horizontal'\n ? 'flex-1 flex-col items-center'\n : 'flex-row items-start gap-4 pb-8 last:pb-0'\n )}\n >\n <div\n className={cn(\n 'flex items-center',\n orientation === 'horizontal' ? 'w-full' : 'flex-col'\n )}\n >\n {orientation === 'horizontal' && index > 0 && (\n <div\n className={cn(\n 'h-0.5 flex-1',\n index <= currentStep ? 'bg-primary' : 'bg-border'\n )}\n />\n )}\n <button\n type=\"button\"\n onClick={() => isClickable && onStepClick(index)}\n disabled={!isClickable}\n className={cn(\n 'relative z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full border-2 text-sm font-medium transition-colors',\n isCompleted\n ? 'border-primary bg-primary text-primary-foreground'\n : isCurrent\n ? 'border-primary bg-background text-primary'\n : 'border-border bg-background text-muted-foreground',\n isClickable && 'cursor-pointer hover:border-primary/50'\n )}\n >\n {isCompleted ? <Check className=\"h-5 w-5\" /> : index + 1}\n </button>\n {orientation === 'horizontal' && index < steps.length - 1 && (\n <div\n className={cn(\n 'h-0.5 flex-1',\n index < currentStep ? 'bg-primary' : 'bg-border'\n )}\n />\n )}\n {orientation === 'vertical' && index < steps.length - 1 && (\n <div\n className={cn(\n 'my-2 w-0.5 flex-1',\n index < currentStep ? 'bg-primary' : 'bg-border'\n )}\n style={{ minHeight: '2rem' }}\n />\n )}\n </div>\n <div\n className={cn(\n 'text-center',\n orientation === 'horizontal' ? 'mt-2 px-2' : 'pt-1'\n )}\n >\n <p\n className={cn(\n 'text-sm font-medium',\n isCurrent || isCompleted ? 'text-foreground' : 'text-muted-foreground'\n )}\n >\n {step.title}\n </p>\n {step.description && (\n <p className=\"mt-0.5 text-xs text-muted-foreground\">{step.description}</p>\n )}\n </div>\n </div>\n )\n })}\n </div>\n )\n }\n)\nProgressTracker.displayName = 'ProgressTracker'\n\nexport { ProgressTracker }\n","import * as React from 'react'\nimport { Sparkles, RefreshCw, Copy, Check, ThumbsUp, ThumbsDown } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Button } from '@/components/ui/button'\nimport { Badge } from '@/components/ui/badge'\nimport { Skeleton } from '@/components/ui/skeleton'\n\nexport interface AISummaryCardProps extends React.HTMLAttributes<HTMLDivElement> {\n title?: string\n summary?: string\n loading?: boolean\n error?: string\n onRefresh?: () => void\n onCopy?: () => void\n onFeedback?: (feedback: 'positive' | 'negative') => void\n model?: string\n generatedAt?: string\n confidence?: number\n}\n\nconst AISummaryCard = React.forwardRef<HTMLDivElement, AISummaryCardProps>(\n (\n {\n className,\n title = 'AI Summary',\n summary,\n loading = false,\n error,\n onRefresh,\n onCopy,\n onFeedback,\n model,\n generatedAt,\n confidence,\n ...props\n },\n ref\n ) => {\n const [copied, setCopied] = React.useState(false)\n const [feedback, setFeedback] = React.useState<'positive' | 'negative' | null>(null)\n\n const handleCopy = async () => {\n if (summary && onCopy) {\n await navigator.clipboard.writeText(summary)\n setCopied(true)\n onCopy()\n setTimeout(() => setCopied(false), 2000)\n }\n }\n\n const handleFeedback = (type: 'positive' | 'negative') => {\n setFeedback(type)\n onFeedback?.(type)\n }\n\n return (\n <Card ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <div className=\"absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-primary/50 via-primary to-primary/50\" />\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <div className=\"flex items-center gap-2\">\n <Sparkles className=\"h-4 w-4 text-primary\" />\n <CardTitle className=\"text-base font-medium\">{title}</CardTitle>\n {model && (\n <Badge variant=\"outline\" className=\"text-xs\">\n {model}\n </Badge>\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n {onRefresh && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={onRefresh}\n disabled={loading}\n >\n <RefreshCw className={cn('h-4 w-4', loading && 'animate-spin')} />\n </Button>\n )}\n {summary && onCopy && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={handleCopy}\n >\n {copied ? (\n <Check className=\"h-4 w-4 text-success\" />\n ) : (\n <Copy className=\"h-4 w-4\" />\n )}\n </Button>\n )}\n </div>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {loading ? (\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n </div>\n ) : error ? (\n <div className=\"rounded-md bg-destructive/10 p-3 text-sm text-destructive\">\n {error}\n </div>\n ) : summary ? (\n <>\n <p className=\"text-sm text-muted-foreground leading-relaxed\">{summary}</p>\n <div className=\"flex items-center justify-between pt-2\">\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n {confidence !== undefined && (\n <span>Confidence: {Math.round(confidence * 100)}%</span>\n )}\n {generatedAt && <span>{generatedAt}</span>}\n </div>\n {onFeedback && (\n <div className=\"flex items-center gap-1\">\n <span className=\"text-xs text-muted-foreground mr-1\">Was this helpful?</span>\n <Button\n variant={feedback === 'positive' ? 'default' : 'ghost'}\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={() => handleFeedback('positive')}\n >\n <ThumbsUp className=\"h-3.5 w-3.5\" />\n </Button>\n <Button\n variant={feedback === 'negative' ? 'destructive' : 'ghost'}\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={() => handleFeedback('negative')}\n >\n <ThumbsDown className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n )}\n </div>\n </>\n ) : (\n <p className=\"text-sm text-muted-foreground\">No summary available</p>\n )}\n </CardContent>\n </Card>\n )\n }\n)\nAISummaryCard.displayName = 'AISummaryCard'\n\nexport { AISummaryCard }\n","import * as React from 'react'\nimport { X, Sparkles, ArrowRight, ExternalLink } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { Card, CardContent } from '@/components/ui/card'\nimport { Button } from '@/components/ui/button'\nimport { Badge } from '@/components/ui/badge'\n\nexport interface FeatureHighlightCardProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string\n description: string\n badge?: string\n icon?: React.ReactNode\n image?: string\n actionLabel?: string\n onAction?: () => void\n learnMoreUrl?: string\n dismissible?: boolean\n onDismiss?: () => void\n variant?: 'default' | 'gradient' | 'bordered'\n}\n\nconst FeatureHighlightCard = React.forwardRef<HTMLDivElement, FeatureHighlightCardProps>(\n (\n {\n className,\n title,\n description,\n badge,\n icon,\n image,\n actionLabel = 'Try it now',\n onAction,\n learnMoreUrl,\n dismissible = true,\n onDismiss,\n variant = 'default',\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: 'bg-card',\n gradient: 'bg-gradient-to-br from-primary/10 via-primary/5 to-transparent',\n bordered: 'border-2 border-primary/20',\n }\n\n return (\n <Card\n ref={ref}\n className={cn('relative overflow-hidden', variantClasses[variant], className)}\n {...props}\n >\n {dismissible && onDismiss && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute right-2 top-2 h-6 w-6\"\n onClick={onDismiss}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n <CardContent className=\"p-6\">\n <div className=\"flex gap-4\">\n {(icon || image) && (\n <div className=\"flex-shrink-0\">\n {icon ? (\n <div className=\"flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10 text-primary\">\n {icon}\n </div>\n ) : image ? (\n <img\n src={image}\n alt=\"\"\n className=\"h-12 w-12 rounded-lg object-cover\"\n />\n ) : null}\n </div>\n )}\n <div className=\"flex-1 space-y-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div>\n {badge && (\n <Badge variant=\"secondary\" className=\"mb-2\">\n <Sparkles className=\"mr-1 h-3 w-3\" />\n {badge}\n </Badge>\n )}\n <h3 className=\"font-semibold\">{title}</h3>\n </div>\n </div>\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n <div className=\"flex items-center gap-2 pt-2\">\n {onAction && (\n <Button size=\"sm\" onClick={onAction}>\n {actionLabel}\n <ArrowRight className=\"ml-1 h-4 w-4\" />\n </Button>\n )}\n {learnMoreUrl && (\n <Button variant=\"ghost\" size=\"sm\" asChild>\n <a href={learnMoreUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n Learn more\n <ExternalLink className=\"ml-1 h-3 w-3\" />\n </a>\n </Button>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n )\n }\n)\nFeatureHighlightCard.displayName = 'FeatureHighlightCard'\n\nexport { FeatureHighlightCard }\n","import * as React from 'react'\nimport { X, AlertTriangle, Info, AlertCircle, CheckCircle } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@/utils/cn'\nimport { Button } from '@/components/ui/button'\n\nconst alertBannerVariants = cva(\n 'relative flex items-center gap-3 px-4 py-3 text-sm',\n {\n variants: {\n variant: {\n default: 'bg-muted text-foreground',\n info: 'bg-info/10 text-info-foreground border-info/20',\n success: 'bg-success/10 text-success-foreground border-success/20',\n warning: 'bg-warning/10 text-warning-foreground border-warning/20',\n destructive: 'bg-destructive/10 text-destructive-foreground border-destructive/20',\n },\n position: {\n top: 'fixed top-0 left-0 right-0 z-50 border-b',\n bottom: 'fixed bottom-0 left-0 right-0 z-50 border-t',\n inline: 'rounded-lg border',\n },\n },\n defaultVariants: {\n variant: 'default',\n position: 'inline',\n },\n }\n)\n\nconst iconMap = {\n default: Info,\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n destructive: AlertCircle,\n}\n\nexport interface AlertBannerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertBannerVariants> {\n title?: string\n message: string\n dismissible?: boolean\n onDismiss?: () => void\n action?: {\n label: string\n onClick: () => void\n }\n showIcon?: boolean\n}\n\nconst AlertBanner = React.forwardRef<HTMLDivElement, AlertBannerProps>(\n (\n {\n className,\n variant = 'default',\n position = 'inline',\n title,\n message,\n dismissible = true,\n onDismiss,\n action,\n showIcon = true,\n ...props\n },\n ref\n ) => {\n const Icon = iconMap[variant || 'default']\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertBannerVariants({ variant, position }), className)}\n {...props}\n >\n {showIcon && <Icon className=\"h-5 w-5 flex-shrink-0\" />}\n <div className=\"flex flex-1 flex-col gap-0.5\">\n {title && <p className=\"font-medium\">{title}</p>}\n <p className={cn(!title && 'font-normal', title && 'text-muted-foreground')}>{message}</p>\n </div>\n <div className=\"flex items-center gap-2\">\n {action && (\n <Button\n variant={variant === 'destructive' ? 'destructive' : 'outline'}\n size=\"sm\"\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n )}\n {dismissible && onDismiss && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6 flex-shrink-0\"\n onClick={onDismiss}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n </div>\n )\n }\n)\nAlertBanner.displayName = 'AlertBanner'\n\nexport { AlertBanner, alertBannerVariants }\n","import * as React from 'react'\nimport { Mail, Phone, Calendar, FileText, MessageSquare, Edit, Trash2 } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { Button } from '@/components/ui/button'\n\nexport type CRMActivityType = 'email' | 'call' | 'meeting' | 'note' | 'task' | 'message'\n\nexport interface CRMActivityItemProps extends React.HTMLAttributes<HTMLDivElement> {\n type: CRMActivityType\n title: string\n description?: string\n timestamp: string\n user?: {\n name: string\n avatar?: string\n }\n actions?: {\n onEdit?: () => void\n onDelete?: () => void\n }\n metadata?: Record<string, string>\n}\n\nconst activityIcons: Record<CRMActivityType, React.ReactNode> = {\n email: <Mail className=\"h-4 w-4\" />,\n call: <Phone className=\"h-4 w-4\" />,\n meeting: <Calendar className=\"h-4 w-4\" />,\n note: <FileText className=\"h-4 w-4\" />,\n task: <FileText className=\"h-4 w-4\" />,\n message: <MessageSquare className=\"h-4 w-4\" />,\n}\n\nconst activityColors: Record<CRMActivityType, string> = {\n email: 'bg-blue-100 text-blue-600 dark:bg-blue-900/30 dark:text-blue-400',\n call: 'bg-green-100 text-green-600 dark:bg-green-900/30 dark:text-green-400',\n meeting: 'bg-purple-100 text-purple-600 dark:bg-purple-900/30 dark:text-purple-400',\n note: 'bg-yellow-100 text-yellow-600 dark:bg-yellow-900/30 dark:text-yellow-400',\n task: 'bg-orange-100 text-orange-600 dark:bg-orange-900/30 dark:text-orange-400',\n message: 'bg-pink-100 text-pink-600 dark:bg-pink-900/30 dark:text-pink-400',\n}\n\nconst CRMActivityItem = React.forwardRef<HTMLDivElement, CRMActivityItemProps>(\n (\n {\n className,\n type,\n title,\n description,\n timestamp,\n user,\n actions,\n metadata,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn('group flex gap-4 rounded-lg p-3 hover:bg-muted/50', className)}\n {...props}\n >\n <div className={cn('flex h-10 w-10 items-center justify-center rounded-lg', activityColors[type])}>\n {activityIcons[type]}\n </div>\n\n <div className=\"flex flex-1 flex-col gap-1\">\n <div className=\"flex items-start justify-between\">\n <div>\n <h4 className=\"font-medium\">{title}</h4>\n {description && (\n <p className=\"text-sm text-muted-foreground line-clamp-2\">{description}</p>\n )}\n </div>\n {actions && (\n <div className=\"flex items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100\">\n {actions.onEdit && (\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={actions.onEdit}>\n <Edit className=\"h-3.5 w-3.5\" />\n </Button>\n )}\n {actions.onDelete && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-destructive hover:text-destructive\"\n onClick={actions.onDelete}\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </Button>\n )}\n </div>\n )}\n </div>\n\n {metadata && Object.keys(metadata).length > 0 && (\n <div className=\"flex flex-wrap gap-2 text-xs text-muted-foreground\">\n {Object.entries(metadata).map(([key, value]) => (\n <span key={key}>\n <span className=\"font-medium\">{key}:</span> {value}\n </span>\n ))}\n </div>\n )}\n\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n {user && (\n <>\n <Avatar className=\"h-5 w-5\">\n {user.avatar && <AvatarImage src={user.avatar} />}\n <AvatarFallback className=\"text-[10px]\">\n {user.name.charAt(0).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n <span>{user.name}</span>\n <span>•</span>\n </>\n )}\n <span>{timestamp}</span>\n </div>\n </div>\n </div>\n )\n }\n)\nCRMActivityItem.displayName = 'CRMActivityItem'\n\nexport { CRMActivityItem }\n","import * as React from 'react'\nimport { X, ArrowRight, Sparkles } from 'lucide-react'\nimport { cn } from '@/utils/cn'\nimport { Card, CardContent } from '@/components/ui/card'\nimport { Button } from '@/components/ui/button'\nimport { Progress } from '@/components/ui/progress'\n\nexport interface WelcomeStep {\n id: string\n title: string\n description?: string\n completed: boolean\n href?: string\n onClick?: () => void\n}\n\nexport interface WelcomeCardProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string\n subtitle?: string\n userName?: string\n steps?: WelcomeStep[]\n dismissible?: boolean\n onDismiss?: () => void\n showProgress?: boolean\n image?: string\n ctaLabel?: string\n ctaOnClick?: () => void\n}\n\nconst WelcomeCard = React.forwardRef<HTMLDivElement, WelcomeCardProps>(\n (\n {\n className,\n title,\n subtitle,\n userName,\n steps = [],\n dismissible = true,\n onDismiss,\n showProgress = true,\n image,\n ctaLabel,\n ctaOnClick,\n ...props\n },\n ref\n ) => {\n const completedCount = steps.filter((s) => s.completed).length\n const progressPercent = steps.length > 0 ? (completedCount / steps.length) * 100 : 0\n\n return (\n <Card\n ref={ref}\n className={cn('relative overflow-hidden', className)}\n {...props}\n >\n <div className=\"absolute inset-0 bg-gradient-to-r from-primary/5 via-primary/10 to-transparent\" />\n {dismissible && onDismiss && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute right-2 top-2 h-6 w-6 z-10\"\n onClick={onDismiss}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n <CardContent className=\"relative p-6\">\n <div className=\"flex gap-6\">\n <div className=\"flex-1 space-y-4\">\n <div className=\"flex items-center gap-2\">\n <Sparkles className=\"h-5 w-5 text-primary\" />\n <span className=\"text-sm font-medium text-primary\">Welcome</span>\n </div>\n\n <div>\n <h2 className=\"text-2xl font-bold\">\n {userName ? `${title}, ${userName}!` : title}\n </h2>\n {subtitle && <p className=\"mt-1 text-muted-foreground\">{subtitle}</p>}\n </div>\n\n {showProgress && steps.length > 0 && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"text-muted-foreground\">Setup progress</span>\n <span className=\"font-medium\">{completedCount}/{steps.length} completed</span>\n </div>\n <Progress value={progressPercent} className=\"h-2\" />\n </div>\n )}\n\n {steps.length > 0 && (\n <div className=\"space-y-2\">\n {steps.slice(0, 3).map((step) => (\n <button\n key={step.id}\n onClick={step.onClick}\n className={cn(\n 'flex w-full items-center gap-3 rounded-lg p-3 text-left transition-colors hover:bg-muted',\n step.completed && 'opacity-50'\n )}\n >\n <div\n className={cn(\n 'flex h-6 w-6 items-center justify-center rounded-full border-2',\n step.completed\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-muted-foreground/30'\n )}\n >\n {step.completed && (\n <svg\n className=\"h-3.5 w-3.5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={3}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )}\n </div>\n <div className=\"flex-1\">\n <p className={cn('font-medium', step.completed && 'line-through')}>\n {step.title}\n </p>\n {step.description && (\n <p className=\"text-xs text-muted-foreground\">{step.description}</p>\n )}\n </div>\n {!step.completed && <ArrowRight className=\"h-4 w-4 text-muted-foreground\" />}\n </button>\n ))}\n </div>\n )}\n\n {ctaLabel && ctaOnClick && (\n <Button onClick={ctaOnClick} className=\"gap-2\">\n {ctaLabel}\n <ArrowRight className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n\n {image && (\n <div className=\"hidden lg:block\">\n <img src={image} alt=\"\" className=\"h-48 w-48 object-contain\" />\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n )\n }\n)\nWelcomeCard.displayName = 'WelcomeCard'\n\nexport { WelcomeCard }\n"],"names":["ArrowRight","createLucideIcon","Building2","Copy","ExternalLink","Mail","MessageSquare","Phone","RefreshCw","Sparkles","SquarePen","ThumbsDown","ThumbsUp","Trash2","statusColors","ContactCard","React","className","name","email","phone","company","position","location","avatar","initials","status","tags","onClick","props","ref","jsxs","Card","cn","jsx","CardHeader","Avatar","AvatarImage","AvatarFallback","Badge","CardContent","MapPin","tag","index","priorityColors","DealCard","title","value","stage","probability","closeDate","closeDateFormat","currency","showCurrencyCode","probabilityLabel","owner","priority","onDragStart","draggable","valueFormatted","formatCurrency","formatDate","t","useFormatters","displayValue","formatted","displayDate","CardTitle","Progress","Calendar","PipelineBoard","columns","renderItem","onItemMove","onAddItem","showAddButton","columnWidth","getItemId","draggedItem","setDraggedItem","handleDragStart","itemId","columnId","handleDragOver","e","handleDrop","targetColumnId","handleDragEnd","ScrollArea","column","Button","Plus","item","ScrollBar","getScoreColor","score","maxScore","percentage","getScoreLabel","sizeClasses","LeadScoreIndicator","showLabel","size","colorClass","label","defaultStatusColors","defaultDotColors","StatusBadge","customColors","showDot","statusKey","dotColor","displayText","ProgressTracker","steps","currentStep","orientation","onStepClick","step","isCompleted","isCurrent","isClickable","Check","AISummaryCard","summary","loading","error","onRefresh","onCopy","onFeedback","model","generatedAt","confidence","copied","setCopied","feedback","setFeedback","handleCopy","handleFeedback","type","Skeleton","Fragment","FeatureHighlightCard","description","badge","icon","image","actionLabel","onAction","learnMoreUrl","dismissible","onDismiss","variant","variantClasses","X","alertBannerVariants","cva","iconMap","Info","CheckCircle","AlertTriangle","AlertCircle","AlertBanner","message","action","showIcon","Icon","activityIcons","FileText","activityColors","CRMActivityItem","timestamp","user","actions","metadata","Edit","key","WelcomeCard","subtitle","userName","showProgress","ctaLabel","ctaOnClick","completedCount","s","progressPercent"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]}