@axtec/components 0.1.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 (258) hide show
  1. package/dist/components/Accordion/Accordion.d.ts +12 -0
  2. package/dist/components/ActionBar/ActionBar.d.ts +10 -0
  3. package/dist/components/ActionBar/index.d.ts +1 -0
  4. package/dist/components/ActionLayout/ActionLayout.d.ts +15 -0
  5. package/dist/components/ActionLayout/index.d.ts +1 -0
  6. package/dist/components/Alert/Alert.d.ts +9 -0
  7. package/dist/components/AlertBox/AlertBox.d.ts +15 -0
  8. package/dist/components/AlertBox/index.d.ts +1 -0
  9. package/dist/components/AlertModal/AlertModal.d.ts +14 -0
  10. package/dist/components/AlertModal/index.d.ts +1 -0
  11. package/dist/components/AutoComplete/AutoComplete.d.ts +17 -0
  12. package/dist/components/AutoComplete/index.d.ts +1 -0
  13. package/dist/components/Avatar/Avatar.d.ts +8 -0
  14. package/dist/components/AvatarCard/AvatarCard.d.ts +27 -0
  15. package/dist/components/AvatarCard/index.d.ts +1 -0
  16. package/dist/components/AverageRating/AverageRating.d.ts +8 -0
  17. package/dist/components/AverageRating/index.d.ts +1 -0
  18. package/dist/components/Badge/Badge.d.ts +9 -0
  19. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +15 -0
  20. package/dist/components/Button/Button.d.ts +9 -0
  21. package/dist/components/ButtonGroup/ButtonGroup.d.ts +11 -0
  22. package/dist/components/ButtonGroup/index.d.ts +1 -0
  23. package/dist/components/Card/Card.d.ts +56 -0
  24. package/dist/components/Checkbox/Checkbox.d.ts +6 -0
  25. package/dist/components/ConfirmModal/ConfirmModal.d.ts +18 -0
  26. package/dist/components/ConfirmModal/index.d.ts +1 -0
  27. package/dist/components/DatePicker/DatePicker.d.ts +13 -0
  28. package/dist/components/DatePicker/index.d.ts +1 -0
  29. package/dist/components/Drawer/Drawer.d.ts +10 -0
  30. package/dist/components/Drawer/index.d.ts +1 -0
  31. package/dist/components/Dropdown/Dropdown.d.ts +21 -0
  32. package/dist/components/EmptyData/EmptyData.d.ts +9 -0
  33. package/dist/components/EmptyData/index.d.ts +1 -0
  34. package/dist/components/FileUploader/FileUploader.d.ts +10 -0
  35. package/dist/components/FileUploader/index.d.ts +1 -0
  36. package/dist/components/IconButton/IconButton.d.ts +7 -0
  37. package/dist/components/IconButton/index.d.ts +1 -0
  38. package/dist/components/Image/Image.d.ts +13 -0
  39. package/dist/components/Image/index.d.ts +1 -0
  40. package/dist/components/ImageGrid/ImageGrid.d.ts +19 -0
  41. package/dist/components/ImageGrid/index.d.ts +1 -0
  42. package/dist/components/ImageUploading/ImageUploading.d.ts +7 -0
  43. package/dist/components/ImageUploading/index.d.ts +1 -0
  44. package/dist/components/Input/Input.d.ts +7 -0
  45. package/dist/components/LinkButton/LinkButton.d.ts +15 -0
  46. package/dist/components/LinkButton/index.d.ts +1 -0
  47. package/dist/components/Loader/Loader.d.ts +6 -0
  48. package/dist/components/LoadingModal/LoadingModal.d.ts +6 -0
  49. package/dist/components/LoadingModal/index.d.ts +1 -0
  50. package/dist/components/Logo/AxtecLogo.d.ts +5 -0
  51. package/dist/components/Logo/MyHomeVaultLogo.d.ts +5 -0
  52. package/dist/components/Logo/index.d.ts +2 -0
  53. package/dist/components/LogoLoader/LogoLoader.d.ts +5 -0
  54. package/dist/components/LogoLoader/index.d.ts +1 -0
  55. package/dist/components/MenuText/MenuText.d.ts +7 -0
  56. package/dist/components/MenuText/index.d.ts +1 -0
  57. package/dist/components/Modal/Modal.d.ts +10 -0
  58. package/dist/components/MultiItemSelect/MultiItemSelect.d.ts +13 -0
  59. package/dist/components/MultiItemSelect/index.d.ts +1 -0
  60. package/dist/components/Notification/Notification.d.ts +11 -0
  61. package/dist/components/Notification/index.d.ts +1 -0
  62. package/dist/components/Pagination/Pagination.d.ts +8 -0
  63. package/dist/components/Panel/Panel.d.ts +40 -0
  64. package/dist/components/Panel/index.d.ts +1 -0
  65. package/dist/components/PhotoLibrary/PhotoLibrary.d.ts +14 -0
  66. package/dist/components/PhotoLibrary/index.d.ts +1 -0
  67. package/dist/components/Pill/Pill.d.ts +11 -0
  68. package/dist/components/Pill/index.d.ts +1 -0
  69. package/dist/components/Progress/Progress.d.ts +10 -0
  70. package/dist/components/QuickActions/QuickActions.d.ts +8 -0
  71. package/dist/components/QuickActions/index.d.ts +1 -0
  72. package/dist/components/RadioGroup/RadioGroup.d.ts +15 -0
  73. package/dist/components/Rating/Rating.d.ts +11 -0
  74. package/dist/components/Rating/index.d.ts +1 -0
  75. package/dist/components/Row/Row.d.ts +10 -0
  76. package/dist/components/Row/index.d.ts +1 -0
  77. package/dist/components/ScrollableModal/ScrollableModal.d.ts +17 -0
  78. package/dist/components/ScrollableModal/index.d.ts +1 -0
  79. package/dist/components/Select/Select.d.ts +16 -0
  80. package/dist/components/Skeleton/Skeleton.d.ts +18 -0
  81. package/dist/components/StatisticsChart/StatisticsChart.d.ts +43 -0
  82. package/dist/components/StatisticsChart/index.d.ts +1 -0
  83. package/dist/components/StatisticsLegend/StatisticsLegend.d.ts +22 -0
  84. package/dist/components/StatisticsLegend/index.d.ts +1 -0
  85. package/dist/components/StatusIndicator/StatusIndicator.d.ts +21 -0
  86. package/dist/components/StatusIndicator/index.d.ts +1 -0
  87. package/dist/components/StepList/StepList.d.ts +8 -0
  88. package/dist/components/StepList/index.d.ts +1 -0
  89. package/dist/components/TabView/TabView.d.ts +17 -0
  90. package/dist/components/TabView/index.d.ts +1 -0
  91. package/dist/components/Table/Table.d.ts +19 -0
  92. package/dist/components/Tabs/Tabs.d.ts +16 -0
  93. package/dist/components/TaskList/TaskList.d.ts +20 -0
  94. package/dist/components/TaskList/index.d.ts +1 -0
  95. package/dist/components/Textarea/Textarea.d.ts +7 -0
  96. package/dist/components/Toggle/Toggle.d.ts +10 -0
  97. package/dist/components/ToggleButton/ToggleButton.d.ts +8 -0
  98. package/dist/components/ToggleButton/index.d.ts +1 -0
  99. package/dist/components/Tooltip/Tooltip.d.ts +9 -0
  100. package/dist/components/TrendIndicator/TrendIndicator.d.ts +8 -0
  101. package/dist/components/TrendIndicator/index.d.ts +1 -0
  102. package/dist/components/Typography/CardHeading.d.ts +6 -0
  103. package/dist/components/Typography/PageHeading.d.ts +6 -0
  104. package/dist/components/Typography/SectionHeading.d.ts +10 -0
  105. package/dist/components/Typography/SubsectionHeading.d.ts +6 -0
  106. package/dist/components/Typography/Text.d.ts +10 -0
  107. package/dist/components/Typography/index.d.ts +5 -0
  108. package/dist/components/index.d.ts +62 -0
  109. package/dist/index.css +1 -0
  110. package/dist/index.d.ts +3 -0
  111. package/dist/index.js +153 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/index10.js +104 -0
  114. package/dist/index10.js.map +1 -0
  115. package/dist/index11.js +42 -0
  116. package/dist/index11.js.map +1 -0
  117. package/dist/index12.js +82 -0
  118. package/dist/index12.js.map +1 -0
  119. package/dist/index13.js +28 -0
  120. package/dist/index13.js.map +1 -0
  121. package/dist/index14.js +22 -0
  122. package/dist/index14.js.map +1 -0
  123. package/dist/index15.js +42 -0
  124. package/dist/index15.js.map +1 -0
  125. package/dist/index16.js +76 -0
  126. package/dist/index16.js.map +1 -0
  127. package/dist/index17.js +53 -0
  128. package/dist/index17.js.map +1 -0
  129. package/dist/index18.js +16 -0
  130. package/dist/index18.js.map +1 -0
  131. package/dist/index19.js +157 -0
  132. package/dist/index19.js.map +1 -0
  133. package/dist/index20.js +21 -0
  134. package/dist/index20.js.map +1 -0
  135. package/dist/index21.js +49 -0
  136. package/dist/index21.js.map +1 -0
  137. package/dist/index22.js +53 -0
  138. package/dist/index22.js.map +1 -0
  139. package/dist/index23.js +82 -0
  140. package/dist/index23.js.map +1 -0
  141. package/dist/index24.js +223 -0
  142. package/dist/index24.js.map +1 -0
  143. package/dist/index25.js +55 -0
  144. package/dist/index25.js.map +1 -0
  145. package/dist/index26.js +81 -0
  146. package/dist/index26.js.map +1 -0
  147. package/dist/index27.js +27 -0
  148. package/dist/index27.js.map +1 -0
  149. package/dist/index28.js +81 -0
  150. package/dist/index28.js.map +1 -0
  151. package/dist/index29.js +36 -0
  152. package/dist/index29.js.map +1 -0
  153. package/dist/index3.js +9 -0
  154. package/dist/index3.js.map +1 -0
  155. package/dist/index30.js +95 -0
  156. package/dist/index30.js.map +1 -0
  157. package/dist/index31.js +63 -0
  158. package/dist/index31.js.map +1 -0
  159. package/dist/index32.js +48 -0
  160. package/dist/index32.js.map +1 -0
  161. package/dist/index33.js +51 -0
  162. package/dist/index33.js.map +1 -0
  163. package/dist/index34.js +55 -0
  164. package/dist/index34.js.map +1 -0
  165. package/dist/index35.js +31 -0
  166. package/dist/index35.js.map +1 -0
  167. package/dist/index36.js +57 -0
  168. package/dist/index36.js.map +1 -0
  169. package/dist/index37.js +52 -0
  170. package/dist/index37.js.map +1 -0
  171. package/dist/index38.js +16 -0
  172. package/dist/index38.js.map +1 -0
  173. package/dist/index39.js +85 -0
  174. package/dist/index39.js.map +1 -0
  175. package/dist/index4.js +36 -0
  176. package/dist/index4.js.map +1 -0
  177. package/dist/index40.js +52 -0
  178. package/dist/index40.js.map +1 -0
  179. package/dist/index41.js +22 -0
  180. package/dist/index41.js.map +1 -0
  181. package/dist/index42.js +37 -0
  182. package/dist/index42.js.map +1 -0
  183. package/dist/index43.js +18 -0
  184. package/dist/index43.js.map +1 -0
  185. package/dist/index44.js +94 -0
  186. package/dist/index44.js.map +1 -0
  187. package/dist/index45.js +72 -0
  188. package/dist/index45.js.map +1 -0
  189. package/dist/index46.js +125 -0
  190. package/dist/index46.js.map +1 -0
  191. package/dist/index47.js +43 -0
  192. package/dist/index47.js.map +1 -0
  193. package/dist/index48.js +59 -0
  194. package/dist/index48.js.map +1 -0
  195. package/dist/index49.js +19 -0
  196. package/dist/index49.js.map +1 -0
  197. package/dist/index5.js +24 -0
  198. package/dist/index5.js.map +1 -0
  199. package/dist/index50.js +68 -0
  200. package/dist/index50.js.map +1 -0
  201. package/dist/index51.js +57 -0
  202. package/dist/index51.js.map +1 -0
  203. package/dist/index52.js +40 -0
  204. package/dist/index52.js.map +1 -0
  205. package/dist/index53.js +69 -0
  206. package/dist/index53.js.map +1 -0
  207. package/dist/index54.js +25 -0
  208. package/dist/index54.js.map +1 -0
  209. package/dist/index55.js +107 -0
  210. package/dist/index55.js.map +1 -0
  211. package/dist/index56.js +71 -0
  212. package/dist/index56.js.map +1 -0
  213. package/dist/index57.js +239 -0
  214. package/dist/index57.js.map +1 -0
  215. package/dist/index58.js +105 -0
  216. package/dist/index58.js.map +1 -0
  217. package/dist/index59.js +39 -0
  218. package/dist/index59.js.map +1 -0
  219. package/dist/index6.js +47 -0
  220. package/dist/index6.js.map +1 -0
  221. package/dist/index60.js +21 -0
  222. package/dist/index60.js.map +1 -0
  223. package/dist/index61.js +63 -0
  224. package/dist/index61.js.map +1 -0
  225. package/dist/index62.js +64 -0
  226. package/dist/index62.js.map +1 -0
  227. package/dist/index63.js +78 -0
  228. package/dist/index63.js.map +1 -0
  229. package/dist/index64.js +112 -0
  230. package/dist/index64.js.map +1 -0
  231. package/dist/index65.js +43 -0
  232. package/dist/index65.js.map +1 -0
  233. package/dist/index66.js +51 -0
  234. package/dist/index66.js.map +1 -0
  235. package/dist/index67.js +79 -0
  236. package/dist/index67.js.map +1 -0
  237. package/dist/index68.js +57 -0
  238. package/dist/index68.js.map +1 -0
  239. package/dist/index69.js +71 -0
  240. package/dist/index69.js.map +1 -0
  241. package/dist/index7.js +80 -0
  242. package/dist/index7.js.map +1 -0
  243. package/dist/index70.js +39 -0
  244. package/dist/index70.js.map +1 -0
  245. package/dist/index71.js +17 -0
  246. package/dist/index71.js.map +1 -0
  247. package/dist/index72.js +2267 -0
  248. package/dist/index72.js.map +1 -0
  249. package/dist/index8.js +82 -0
  250. package/dist/index8.js.map +1 -0
  251. package/dist/index9.js +97 -0
  252. package/dist/index9.js.map +1 -0
  253. package/dist/lib/utils.d.ts +2 -0
  254. package/dist/logos/axtec-logo.png +0 -0
  255. package/dist/logos/mhv-icon.svg +5 -0
  256. package/dist/logos/mhv-logo.png +0 -0
  257. package/dist/logos/mhv-logo.svg +23 -0
  258. package/package.json +63 -0
@@ -0,0 +1,42 @@
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import { cn as d } from "./index3.js";
3
+ const m = {
4
+ default: "bg-slate-100 text-slate-700",
5
+ primary: "bg-primary-100 text-primary-700",
6
+ success: "bg-green-100 text-green-700",
7
+ warning: "bg-yellow-100 text-yellow-700",
8
+ danger: "bg-red-100 text-red-700",
9
+ info: "bg-blue-100 text-blue-700"
10
+ }, a = {
11
+ sm: "px-2 py-0.5 text-xs",
12
+ md: "px-2.5 py-1 text-sm",
13
+ lg: "px-3 py-1.5 text-base"
14
+ }, o = {
15
+ md: "rounded-md",
16
+ full: "rounded-full"
17
+ };
18
+ function u({
19
+ children: e,
20
+ variant: t = "default",
21
+ size: r = "md",
22
+ rounded: l = "full",
23
+ className: n
24
+ }) {
25
+ return /* @__PURE__ */ s(
26
+ "span",
27
+ {
28
+ className: d(
29
+ "inline-flex items-center font-medium",
30
+ m[t],
31
+ a[r],
32
+ o[l],
33
+ n
34
+ ),
35
+ children: e
36
+ }
37
+ );
38
+ }
39
+ export {
40
+ u as Badge
41
+ };
42
+ //# sourceMappingURL=index15.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index15.js","sources":["../src/components/Badge/Badge.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport type { ReactNode } from 'react'\n\nexport interface BadgeProps {\n children: ReactNode\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info'\n size?: 'sm' | 'md' | 'lg'\n rounded?: 'md' | 'full'\n className?: string\n}\n\nconst variantStyles = {\n default: 'bg-slate-100 text-slate-700',\n primary: 'bg-primary-100 text-primary-700',\n success: 'bg-green-100 text-green-700',\n warning: 'bg-yellow-100 text-yellow-700',\n danger: 'bg-red-100 text-red-700',\n info: 'bg-blue-100 text-blue-700',\n}\n\nconst sizeStyles = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n}\n\nconst roundedStyles = {\n md: 'rounded-md',\n full: 'rounded-full',\n}\n\nexport function Badge({\n children,\n variant = 'default',\n size = 'md',\n rounded = 'full',\n className,\n}: BadgeProps) {\n return (\n <span\n className={cn(\n 'inline-flex items-center font-medium',\n variantStyles[variant],\n sizeStyles[size],\n roundedStyles[rounded],\n className\n )}\n >\n {children}\n </span>\n )\n}\n"],"names":["variantStyles","sizeStyles","roundedStyles","Badge","children","variant","size","rounded","className","jsx","cn"],"mappings":";;AAWA,MAAMA,IAAgB;AAAA,EACpB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AACR,GAEMC,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAAgB;AAAA,EACpB,IAAI;AAAA,EACJ,MAAM;AACR;AAEO,SAASC,EAAM;AAAA,EACpB,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,WAAAC;AACF,GAAe;AACb,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAV,EAAcK,CAAO;AAAA,QACrBJ,EAAWK,CAAI;AAAA,QACfJ,EAAcK,CAAO;AAAA,QACrBC;AAAA,MAAA;AAAA,MAGD,UAAAJ;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,76 @@
1
+ import { jsx as e, jsxs as n, Fragment as f } from "react/jsx-runtime";
2
+ import { HomeIcon as c, ChevronRightIcon as x } from "@heroicons/react/20/solid";
3
+ import { cn as N } from "./index3.js";
4
+ function g({
5
+ items: a,
6
+ showHome: i = !0,
7
+ homeHref: h = "/",
8
+ onHomeClick: s,
9
+ separator: m,
10
+ className: d
11
+ }) {
12
+ const o = () => /* @__PURE__ */ e("span", { className: "mx-2 text-slate-400", children: m || /* @__PURE__ */ e(x, { className: "h-4 w-4" }) }), u = (t, r) => {
13
+ const l = /* @__PURE__ */ e(
14
+ "span",
15
+ {
16
+ className: N(
17
+ "text-sm",
18
+ r ? "font-medium text-slate-900" : "text-slate-500 hover:text-slate-700"
19
+ ),
20
+ children: t.label
21
+ }
22
+ );
23
+ return r ? l : t.href ? /* @__PURE__ */ e(
24
+ "a",
25
+ {
26
+ href: t.href,
27
+ className: "transition-colors duration-150",
28
+ onClick: t.onClick,
29
+ children: l
30
+ }
31
+ ) : t.onClick ? /* @__PURE__ */ e(
32
+ "button",
33
+ {
34
+ type: "button",
35
+ onClick: t.onClick,
36
+ className: "transition-colors duration-150",
37
+ children: l
38
+ }
39
+ ) : l;
40
+ };
41
+ return /* @__PURE__ */ e("nav", { "aria-label": "Breadcrumb", className: d, children: /* @__PURE__ */ n("ol", { className: "flex items-center", children: [
42
+ i && /* @__PURE__ */ n(f, { children: [
43
+ /* @__PURE__ */ e("li", { children: s ? /* @__PURE__ */ n(
44
+ "button",
45
+ {
46
+ type: "button",
47
+ onClick: s,
48
+ className: "text-slate-400 hover:text-slate-600 transition-colors duration-150",
49
+ children: [
50
+ /* @__PURE__ */ e(c, { className: "h-5 w-5" }),
51
+ /* @__PURE__ */ e("span", { className: "sr-only", children: "Home" })
52
+ ]
53
+ }
54
+ ) : /* @__PURE__ */ n(
55
+ "a",
56
+ {
57
+ href: h,
58
+ className: "text-slate-400 hover:text-slate-600 transition-colors duration-150",
59
+ children: [
60
+ /* @__PURE__ */ e(c, { className: "h-5 w-5" }),
61
+ /* @__PURE__ */ e("span", { className: "sr-only", children: "Home" })
62
+ ]
63
+ }
64
+ ) }),
65
+ a.length > 0 && /* @__PURE__ */ e(o, {})
66
+ ] }),
67
+ a.map((t, r) => /* @__PURE__ */ n("li", { className: "flex items-center", children: [
68
+ u(t, r === a.length - 1),
69
+ r < a.length - 1 && /* @__PURE__ */ e(o, {})
70
+ ] }, r))
71
+ ] }) });
72
+ }
73
+ export {
74
+ g as Breadcrumbs
75
+ };
76
+ //# sourceMappingURL=index16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index16.js","sources":["../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { ChevronRightIcon, HomeIcon } from '@heroicons/react/20/solid'\nimport { cn } from '@/lib/utils'\nimport type { ReactNode } from 'react'\n\nexport interface BreadcrumbItem {\n label: ReactNode\n href?: string\n onClick?: () => void\n}\n\nexport interface BreadcrumbsProps {\n items: BreadcrumbItem[]\n showHome?: boolean\n homeHref?: string\n onHomeClick?: () => void\n separator?: ReactNode\n className?: string\n}\n\nexport function Breadcrumbs({\n items,\n showHome = true,\n homeHref = '/',\n onHomeClick,\n separator,\n className,\n}: BreadcrumbsProps) {\n const Separator = () => (\n <span className=\"mx-2 text-slate-400\">\n {separator || <ChevronRightIcon className=\"h-4 w-4\" />}\n </span>\n )\n\n const renderItem = (item: BreadcrumbItem, isLast: boolean) => {\n const content = (\n <span\n className={cn(\n 'text-sm',\n isLast\n ? 'font-medium text-slate-900'\n : 'text-slate-500 hover:text-slate-700'\n )}\n >\n {item.label}\n </span>\n )\n\n if (isLast) {\n return content\n }\n\n if (item.href) {\n return (\n <a\n href={item.href}\n className=\"transition-colors duration-150\"\n onClick={item.onClick}\n >\n {content}\n </a>\n )\n }\n\n if (item.onClick) {\n return (\n <button\n type=\"button\"\n onClick={item.onClick}\n className=\"transition-colors duration-150\"\n >\n {content}\n </button>\n )\n }\n\n return content\n }\n\n return (\n <nav aria-label=\"Breadcrumb\" className={className}>\n <ol className=\"flex items-center\">\n {showHome && (\n <>\n <li>\n {onHomeClick ? (\n <button\n type=\"button\"\n onClick={onHomeClick}\n className=\"text-slate-400 hover:text-slate-600 transition-colors duration-150\"\n >\n <HomeIcon className=\"h-5 w-5\" />\n <span className=\"sr-only\">Home</span>\n </button>\n ) : (\n <a\n href={homeHref}\n className=\"text-slate-400 hover:text-slate-600 transition-colors duration-150\"\n >\n <HomeIcon className=\"h-5 w-5\" />\n <span className=\"sr-only\">Home</span>\n </a>\n )}\n </li>\n {items.length > 0 && <Separator />}\n </>\n )}\n {items.map((item, index) => (\n <li key={index} className=\"flex items-center\">\n {renderItem(item, index === items.length - 1)}\n {index < items.length - 1 && <Separator />}\n </li>\n ))}\n </ol>\n </nav>\n )\n}\n"],"names":["Breadcrumbs","items","showHome","homeHref","onHomeClick","separator","className","Separator","jsx","ChevronRightIcon","renderItem","item","isLast","content","cn","jsxs","Fragment","HomeIcon","index"],"mappings":";;;AAmBO,SAASA,EAAY;AAAA,EAC1B,OAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAAC,IAAW;AAAA,EACX,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AACF,GAAqB;AACnB,QAAMC,IAAY,MAChB,gBAAAC,EAAC,QAAA,EAAK,WAAU,uBACb,UAAAH,KAAa,gBAAAG,EAACC,GAAA,EAAiB,WAAU,UAAA,CAAU,EAAA,CACtD,GAGIC,IAAa,CAACC,GAAsBC,MAAoB;AAC5D,UAAMC,IACJ,gBAAAL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWM;AAAA,UACT;AAAA,UACAF,IACI,+BACA;AAAA,QAAA;AAAA,QAGL,UAAAD,EAAK;AAAA,MAAA;AAAA,IAAA;AAIV,WAAIC,IACKC,IAGLF,EAAK,OAEL,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAMG,EAAK;AAAA,QACX,WAAU;AAAA,QACV,SAASA,EAAK;AAAA,QAEb,UAAAE;AAAA,MAAA;AAAA,IAAA,IAKHF,EAAK,UAEL,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAASG,EAAK;AAAA,QACd,WAAU;AAAA,QAET,UAAAE;AAAA,MAAA;AAAA,IAAA,IAKAA;AAAA,EACT;AAEA,SACE,gBAAAL,EAAC,SAAI,cAAW,cAAa,WAAAF,GAC3B,UAAA,gBAAAS,EAAC,MAAA,EAAG,WAAU,qBACX,UAAA;AAAA,IAAAb,KACC,gBAAAa,EAAAC,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAR,EAAC,QACE,UAAAJ,IACC,gBAAAW;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAASX;AAAA,UACT,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAI,EAACS,GAAA,EAAS,WAAU,UAAA,CAAU;AAAA,YAC9B,gBAAAT,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,OAAA,CAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,IAGhC,gBAAAO;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAMZ;AAAA,UACN,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAK,EAACS,GAAA,EAAS,WAAU,UAAA,CAAU;AAAA,YAC9B,gBAAAT,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,OAAA,CAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,GAGpC;AAAA,MACCP,EAAM,SAAS,KAAK,gBAAAO,EAACD,GAAA,CAAA,CAAU;AAAA,IAAA,GAClC;AAAA,IAEDN,EAAM,IAAI,CAACU,GAAMO,MAChB,gBAAAH,EAAC,MAAA,EAAe,WAAU,qBACvB,UAAA;AAAA,MAAAL,EAAWC,GAAMO,MAAUjB,EAAM,SAAS,CAAC;AAAA,MAC3CiB,IAAQjB,EAAM,SAAS,uBAAMM,GAAA,CAAA,CAAU;AAAA,IAAA,EAAA,GAFjCW,CAGT,CACD;AAAA,EAAA,EAAA,CACH,EAAA,CACF;AAEJ;"}
@@ -0,0 +1,53 @@
1
+ import { jsx as e, jsxs as d, Fragment as m } from "react/jsx-runtime";
2
+ import { forwardRef as p } from "react";
3
+ import { cn as b } from "./index3.js";
4
+ import { Loader as f } from "./index35.js";
5
+ const u = {
6
+ primary: "bg-primary-500 text-white hover:bg-primary-600 active:bg-primary-700 focus:ring-primary-500",
7
+ secondary: "bg-slate-100 text-slate-900 hover:bg-slate-200 active:bg-slate-300 focus:ring-slate-500",
8
+ outline: "border border-slate-300 bg-transparent text-slate-700 hover:bg-slate-50 active:bg-slate-100 focus:ring-slate-500",
9
+ ghost: "bg-transparent text-slate-700 hover:bg-slate-100 active:bg-slate-200 focus:ring-slate-500",
10
+ danger: "bg-red-500 text-white hover:bg-red-600 active:bg-red-700 focus:ring-red-500"
11
+ }, x = {
12
+ sm: "px-3 py-1.5 text-sm gap-1.5",
13
+ md: "px-4 py-2 text-base gap-2",
14
+ lg: "px-6 py-3 text-lg gap-2.5"
15
+ }, y = p(
16
+ ({
17
+ className: o,
18
+ variant: i = "primary",
19
+ size: t = "md",
20
+ isLoading: r = !1,
21
+ leftIcon: s,
22
+ rightIcon: a,
23
+ disabled: n,
24
+ children: l,
25
+ ...c
26
+ }, g) => /* @__PURE__ */ e(
27
+ "button",
28
+ {
29
+ ref: g,
30
+ className: b(
31
+ "inline-flex items-center justify-center font-semibold rounded-lg",
32
+ "transition-colors duration-200",
33
+ "focus:outline-none focus:ring-2 focus:ring-offset-2",
34
+ "disabled:opacity-50 disabled:cursor-not-allowed",
35
+ u[i],
36
+ x[t],
37
+ o
38
+ ),
39
+ disabled: n || r,
40
+ ...c,
41
+ children: r ? /* @__PURE__ */ e(f, { size: t === "lg" ? "md" : "sm", color: "current" }) : /* @__PURE__ */ d(m, { children: [
42
+ s && /* @__PURE__ */ e("span", { className: "flex-shrink-0", children: s }),
43
+ l,
44
+ a && /* @__PURE__ */ e("span", { className: "flex-shrink-0", children: a })
45
+ ] })
46
+ }
47
+ )
48
+ );
49
+ y.displayName = "Button";
50
+ export {
51
+ y as Button
52
+ };
53
+ //# sourceMappingURL=index17.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index17.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\nimport { Loader } from '../Loader/Loader'\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger'\n size?: 'sm' | 'md' | 'lg'\n isLoading?: boolean\n leftIcon?: ReactNode\n rightIcon?: ReactNode\n}\n\nconst variantStyles = {\n primary:\n 'bg-primary-500 text-white hover:bg-primary-600 active:bg-primary-700 focus:ring-primary-500',\n secondary:\n 'bg-slate-100 text-slate-900 hover:bg-slate-200 active:bg-slate-300 focus:ring-slate-500',\n outline:\n 'border border-slate-300 bg-transparent text-slate-700 hover:bg-slate-50 active:bg-slate-100 focus:ring-slate-500',\n ghost:\n 'bg-transparent text-slate-700 hover:bg-slate-100 active:bg-slate-200 focus:ring-slate-500',\n danger:\n 'bg-red-500 text-white hover:bg-red-600 active:bg-red-700 focus:ring-red-500',\n}\n\nconst sizeStyles = {\n sm: 'px-3 py-1.5 text-sm gap-1.5',\n md: 'px-4 py-2 text-base gap-2',\n lg: 'px-6 py-3 text-lg gap-2.5',\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = 'primary',\n size = 'md',\n isLoading = false,\n leftIcon,\n rightIcon,\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center font-semibold rounded-lg',\n 'transition-colors duration-200',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n variantStyles[variant],\n sizeStyles[size],\n className\n )}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading ? (\n <Loader size={size === 'lg' ? 'md' : 'sm'} color=\"current\" />\n ) : (\n <>\n {leftIcon && <span className=\"flex-shrink-0\">{leftIcon}</span>}\n {children}\n {rightIcon && <span className=\"flex-shrink-0\">{rightIcon}</span>}\n </>\n )}\n </button>\n )\n }\n)\n\nButton.displayName = 'Button'\n"],"names":["variantStyles","sizeStyles","Button","forwardRef","className","variant","size","isLoading","leftIcon","rightIcon","disabled","children","props","ref","jsx","cn","Loader","jsxs","Fragment"],"mappings":";;;;AAYA,MAAMA,IAAgB;AAAA,EACpB,SACE;AAAA,EACF,WACE;AAAA,EACF,SACE;AAAA,EACF,OACE;AAAA,EACF,QACE;AACJ,GAEMC,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEaC,IAASC;AAAA,EACpB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MAGE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAf,EAAcK,CAAO;AAAA,QACrBJ,EAAWK,CAAI;AAAA,QACfF;AAAA,MAAA;AAAA,MAEF,UAAUM,KAAYH;AAAA,MACrB,GAAGK;AAAA,MAEH,UAAAL,IACC,gBAAAO,EAACE,GAAA,EAAO,MAAMV,MAAS,OAAO,OAAO,MAAM,OAAM,UAAA,CAAU,IAE3D,gBAAAW,EAAAC,GAAA,EACG,UAAA;AAAA,QAAAV,KAAY,gBAAAM,EAAC,QAAA,EAAK,WAAU,iBAAiB,UAAAN,GAAS;AAAA,QACtDG;AAAA,QACAF,KAAa,gBAAAK,EAAC,QAAA,EAAK,WAAU,iBAAiB,UAAAL,EAAA,CAAU;AAAA,MAAA,EAAA,CAC3D;AAAA,IAAA;AAAA,EAAA;AAKV;AAEAP,EAAO,cAAc;"}
@@ -0,0 +1,16 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { cn as i } from "./index3.js";
3
+ const m = ({ buttons: o, className: e }) => /* @__PURE__ */ r("div", { className: i("flex flex-row items-center justify-end gap-1", e), children: o.map(({ icon: t, onClick: n, label: s }, a) => /* @__PURE__ */ r(
4
+ "button",
5
+ {
6
+ onClick: n,
7
+ "aria-label": s,
8
+ className: "cursor-pointer p-2 rounded-md hover:bg-slate-100 transition-colors",
9
+ children: t
10
+ },
11
+ `btnGroup_${a}`
12
+ )) });
13
+ export {
14
+ m as ButtonGroup
15
+ };
16
+ //# sourceMappingURL=index18.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index18.js","sources":["../src/components/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import { type ReactElement } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface ButtonGroupItem {\n icon: ReactElement\n onClick: () => void\n label?: string\n}\n\nexport interface ButtonGroupProps {\n buttons: ButtonGroupItem[]\n className?: string\n}\n\nexport const ButtonGroup = ({ buttons, className }: ButtonGroupProps) => {\n return (\n <div className={cn('flex flex-row items-center justify-end gap-1', className)}>\n {buttons.map(({ icon, onClick, label }, index) => (\n <button\n key={`btnGroup_${index}`}\n onClick={onClick}\n aria-label={label}\n className=\"cursor-pointer p-2 rounded-md hover:bg-slate-100 transition-colors\"\n >\n {icon}\n </button>\n ))}\n </div>\n )\n}\n"],"names":["ButtonGroup","buttons","className","jsx","cn","icon","onClick","label","index"],"mappings":";;AAcO,MAAMA,IAAc,CAAC,EAAE,SAAAC,GAAS,WAAAC,QAEnC,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAG,gDAAgDF,CAAS,GACzE,UAAAD,EAAQ,IAAI,CAAC,EAAE,MAAAI,GAAM,SAAAC,GAAS,OAAAC,EAAA,GAASC,MACtC,gBAAAL;AAAA,EAAC;AAAA,EAAA;AAAA,IAEC,SAAAG;AAAA,IACA,cAAYC;AAAA,IACZ,WAAU;AAAA,IAET,UAAAF;AAAA,EAAA;AAAA,EALI,YAAYG,CAAK;AAAA,CAOzB,GACH;"}
@@ -0,0 +1,157 @@
1
+ import { jsxs as t, jsx as l } from "react/jsx-runtime";
2
+ import { cn as r } from "./index3.js";
3
+ import { Badge as v } from "./index15.js";
4
+ import { Button as N } from "./index17.js";
5
+ const h = {
6
+ none: "",
7
+ sm: "p-3",
8
+ md: "p-4",
9
+ lg: "p-6"
10
+ }, f = {
11
+ none: "",
12
+ sm: "shadow-sm",
13
+ md: "shadow-md",
14
+ lg: "shadow-lg"
15
+ }, u = {
16
+ none: "",
17
+ md: "rounded-md",
18
+ lg: "rounded-lg",
19
+ xl: "rounded-xl",
20
+ "2xl": "rounded-2xl"
21
+ }, w = {
22
+ sm: "text-base",
23
+ md: "text-xl",
24
+ lg: "text-2xl"
25
+ };
26
+ function k({
27
+ children: a,
28
+ padding: i = "md",
29
+ shadow: n = "sm",
30
+ rounded: m = "xl",
31
+ border: c = !0,
32
+ hover: o = !1,
33
+ stat: s,
34
+ action: e,
35
+ className: x
36
+ }) {
37
+ var b, p;
38
+ if (s) {
39
+ const d = ((b = s.trend) == null ? void 0 : b.direction) === "up" ? "text-green-600" : ((p = s.trend) == null ? void 0 : p.direction) === "down" ? "text-red-500" : "text-slate-500";
40
+ return /* @__PURE__ */ t(
41
+ "div",
42
+ {
43
+ className: r(
44
+ "bg-white",
45
+ h[i],
46
+ f[n],
47
+ u[m],
48
+ c && "border border-slate-200",
49
+ o && "hover:shadow-md transition-shadow",
50
+ x
51
+ ),
52
+ children: [
53
+ /* @__PURE__ */ t("div", { className: "flex justify-between items-start", children: [
54
+ /* @__PURE__ */ t("div", { className: "flex flex-col", children: [
55
+ /* @__PURE__ */ l("span", { className: "text-sm text-slate-500 font-medium mb-1", children: s.label }),
56
+ /* @__PURE__ */ l(
57
+ "span",
58
+ {
59
+ className: r(
60
+ "font-semibold text-primary-500 leading-tight",
61
+ w[s.size || "md"]
62
+ ),
63
+ children: s.value
64
+ }
65
+ ),
66
+ s.subtext && /* @__PURE__ */ l("span", { className: "text-xs text-slate-500 mt-1", children: s.subtext })
67
+ ] }),
68
+ s.icon && /* @__PURE__ */ l("div", { className: "flex-shrink-0", children: s.icon })
69
+ ] }),
70
+ s.trend && /* @__PURE__ */ t("div", { className: r("flex items-center gap-1 mt-2 text-xs font-medium", d), children: [
71
+ s.trend.direction === "up" && "↑",
72
+ s.trend.direction === "down" && "↓",
73
+ s.trend.direction === "stable" && "→",
74
+ s.trend.value && /* @__PURE__ */ l("span", { children: s.trend.value })
75
+ ] }),
76
+ a
77
+ ]
78
+ }
79
+ );
80
+ }
81
+ return e ? /* @__PURE__ */ t(
82
+ "div",
83
+ {
84
+ className: r(
85
+ "bg-white flex flex-col",
86
+ h[i],
87
+ f[n],
88
+ u[m],
89
+ c && "border border-slate-200",
90
+ o && "hover:shadow-md transition-shadow",
91
+ x
92
+ ),
93
+ children: [
94
+ (e.title || e.status) && /* @__PURE__ */ t("div", { className: "flex items-start justify-between gap-3 mb-3", children: [
95
+ e.title && /* @__PURE__ */ l("h3", { className: "font-semibold text-base text-slate-900", children: e.title }),
96
+ e.status && /* @__PURE__ */ l(v, { variant: e.status.variant || "default", size: "sm", children: e.status.label })
97
+ ] }),
98
+ e.description && /* @__PURE__ */ l("p", { className: "text-sm text-slate-600 mb-4 line-clamp-2 leading-relaxed", children: e.description }),
99
+ e.metrics && e.metrics.length > 0 && /* @__PURE__ */ l("div", { className: "space-y-2 mb-4 flex-1", children: e.metrics.map((d, g) => /* @__PURE__ */ t("div", { className: "flex justify-between text-sm", children: [
100
+ /* @__PURE__ */ l("span", { className: "text-slate-500", children: d.label }),
101
+ /* @__PURE__ */ l(
102
+ "span",
103
+ {
104
+ className: r("font-semibold", d.highlight ? "text-red-600" : "text-slate-900"),
105
+ children: d.value
106
+ }
107
+ )
108
+ ] }, g)) }),
109
+ a && /* @__PURE__ */ l("div", { className: "flex-1", children: a }),
110
+ e.badges && e.badges.length > 0 && /* @__PURE__ */ l("div", { className: "flex flex-wrap gap-1.5 mb-4", children: e.badges.map((d, g) => /* @__PURE__ */ l(v, { variant: d.variant || "default", size: "sm", children: d.label }, g)) }),
111
+ e.ctaLabel && /* @__PURE__ */ l(
112
+ N,
113
+ {
114
+ onClick: e.onCtaClick,
115
+ disabled: e.ctaDisabled,
116
+ isLoading: e.ctaLoading,
117
+ leftIcon: e.ctaIcon,
118
+ className: "w-full mt-auto",
119
+ children: e.ctaLabel
120
+ }
121
+ )
122
+ ]
123
+ }
124
+ ) : /* @__PURE__ */ l(
125
+ "div",
126
+ {
127
+ className: r(
128
+ "bg-white",
129
+ h[i],
130
+ f[n],
131
+ u[m],
132
+ c && "border border-slate-200",
133
+ o && "hover:shadow-md transition-shadow",
134
+ x
135
+ ),
136
+ children: a
137
+ }
138
+ );
139
+ }
140
+ const y = {
141
+ 1: "grid-cols-1",
142
+ 2: "grid-cols-1 md:grid-cols-2",
143
+ 3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
144
+ 4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
145
+ }, S = {
146
+ sm: "gap-2",
147
+ md: "gap-3",
148
+ lg: "gap-4"
149
+ };
150
+ function B({ children: a, columns: i = 2, gap: n = "md", className: m }) {
151
+ return /* @__PURE__ */ l("div", { className: r("grid", y[i], S[n], m), children: a });
152
+ }
153
+ export {
154
+ k as Card,
155
+ B as CardGrid
156
+ };
157
+ //# sourceMappingURL=index19.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index19.js","sources":["../src/components/Card/Card.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\nimport { Badge } from '../Badge/Badge'\nimport { Button } from '../Button/Button'\n\n// Base card container props\nexport interface CardProps {\n children?: ReactNode\n padding?: 'none' | 'sm' | 'md' | 'lg'\n shadow?: 'none' | 'sm' | 'md' | 'lg'\n rounded?: 'none' | 'md' | 'lg' | 'xl' | '2xl'\n border?: boolean\n hover?: boolean\n className?: string\n}\n\n// Stat card props (for displaying a prominent value)\nexport interface CardStatProps {\n label: string\n value: string | number\n subtext?: string\n trend?: {\n direction: 'up' | 'down' | 'stable'\n value?: string\n }\n icon?: ReactNode\n size?: 'sm' | 'md' | 'lg'\n}\n\n// Metric row for action-style cards\nexport interface CardMetric {\n label: string\n value: string | number\n highlight?: boolean\n}\n\n// Action card props (for actionable items with CTAs)\nexport interface CardActionProps {\n title?: string\n status?: {\n label: string\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info'\n }\n description?: string\n metrics?: CardMetric[]\n badges?: Array<{\n label: string\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info'\n }>\n ctaLabel?: string\n onCtaClick?: () => void\n ctaLoading?: boolean\n ctaDisabled?: boolean\n ctaIcon?: ReactNode\n}\n\n// Combined card props\nexport type FullCardProps = CardProps & {\n stat?: CardStatProps\n action?: CardActionProps\n}\n\nconst paddingStyles = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n}\n\nconst shadowStyles = {\n none: '',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n}\n\nconst roundedStyles = {\n none: '',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n}\n\nconst valueSizeStyles = {\n sm: 'text-base',\n md: 'text-xl',\n lg: 'text-2xl',\n}\n\nexport function Card({\n children,\n padding = 'md',\n shadow = 'sm',\n rounded = 'xl',\n border = true,\n hover = false,\n stat,\n action,\n className,\n}: FullCardProps) {\n // Stat card mode\n if (stat) {\n const trendColor =\n stat.trend?.direction === 'up'\n ? 'text-green-600'\n : stat.trend?.direction === 'down'\n ? 'text-red-500'\n : 'text-slate-500'\n\n return (\n <div\n className={cn(\n 'bg-white',\n paddingStyles[padding],\n shadowStyles[shadow],\n roundedStyles[rounded],\n border && 'border border-slate-200',\n hover && 'hover:shadow-md transition-shadow',\n className\n )}\n >\n <div className=\"flex justify-between items-start\">\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-slate-500 font-medium mb-1\">{stat.label}</span>\n <span\n className={cn(\n 'font-semibold text-primary-500 leading-tight',\n valueSizeStyles[stat.size || 'md']\n )}\n >\n {stat.value}\n </span>\n {stat.subtext && <span className=\"text-xs text-slate-500 mt-1\">{stat.subtext}</span>}\n </div>\n {stat.icon && <div className=\"flex-shrink-0\">{stat.icon}</div>}\n </div>\n {stat.trend && (\n <div className={cn('flex items-center gap-1 mt-2 text-xs font-medium', trendColor)}>\n {stat.trend.direction === 'up' && '↑'}\n {stat.trend.direction === 'down' && '↓'}\n {stat.trend.direction === 'stable' && '→'}\n {stat.trend.value && <span>{stat.trend.value}</span>}\n </div>\n )}\n {children}\n </div>\n )\n }\n\n // Action card mode\n if (action) {\n return (\n <div\n className={cn(\n 'bg-white flex flex-col',\n paddingStyles[padding],\n shadowStyles[shadow],\n roundedStyles[rounded],\n border && 'border border-slate-200',\n hover && 'hover:shadow-md transition-shadow',\n className\n )}\n >\n {/* Header with title and status badge */}\n {(action.title || action.status) && (\n <div className=\"flex items-start justify-between gap-3 mb-3\">\n {action.title && (\n <h3 className=\"font-semibold text-base text-slate-900\">{action.title}</h3>\n )}\n {action.status && (\n <Badge variant={action.status.variant || 'default'} size=\"sm\">\n {action.status.label}\n </Badge>\n )}\n </div>\n )}\n\n {/* Description */}\n {action.description && (\n <p className=\"text-sm text-slate-600 mb-4 line-clamp-2 leading-relaxed\">\n {action.description}\n </p>\n )}\n\n {/* Metrics */}\n {action.metrics && action.metrics.length > 0 && (\n <div className=\"space-y-2 mb-4 flex-1\">\n {action.metrics.map((metric, idx) => (\n <div key={idx} className=\"flex justify-between text-sm\">\n <span className=\"text-slate-500\">{metric.label}</span>\n <span\n className={cn('font-semibold', metric.highlight ? 'text-red-600' : 'text-slate-900')}\n >\n {metric.value}\n </span>\n </div>\n ))}\n </div>\n )}\n\n {/* Custom content */}\n {children && <div className=\"flex-1\">{children}</div>}\n\n {/* Status badges */}\n {action.badges && action.badges.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5 mb-4\">\n {action.badges.map((badge, idx) => (\n <Badge key={idx} variant={badge.variant || 'default'} size=\"sm\">\n {badge.label}\n </Badge>\n ))}\n </div>\n )}\n\n {/* CTA Button */}\n {action.ctaLabel && (\n <Button\n onClick={action.onCtaClick}\n disabled={action.ctaDisabled}\n isLoading={action.ctaLoading}\n leftIcon={action.ctaIcon}\n className=\"w-full mt-auto\"\n >\n {action.ctaLabel}\n </Button>\n )}\n </div>\n )\n }\n\n // Basic card mode (original behavior)\n return (\n <div\n className={cn(\n 'bg-white',\n paddingStyles[padding],\n shadowStyles[shadow],\n roundedStyles[rounded],\n border && 'border border-slate-200',\n hover && 'hover:shadow-md transition-shadow',\n className\n )}\n >\n {children}\n </div>\n )\n}\n\n// Grid layout for cards\nexport interface CardGridProps {\n children: ReactNode\n columns?: 1 | 2 | 3 | 4\n gap?: 'sm' | 'md' | 'lg'\n className?: string\n}\n\nconst columnStyles = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',\n}\n\nconst gapStyles = {\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n}\n\nexport function CardGrid({ children, columns = 2, gap = 'md', className }: CardGridProps) {\n return (\n <div className={cn('grid', columnStyles[columns], gapStyles[gap], className)}>{children}</div>\n )\n}\n"],"names":["paddingStyles","shadowStyles","roundedStyles","valueSizeStyles","Card","children","padding","shadow","rounded","border","hover","stat","action","className","trendColor","_a","_b","jsxs","cn","jsx","Badge","metric","idx","badge","Button","columnStyles","gapStyles","CardGrid","columns","gap"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { cn as m } from "./index3.js";
3
+ function n({
4
+ children: t,
5
+ className: e
6
+ }) {
7
+ return /* @__PURE__ */ r(
8
+ "h4",
9
+ {
10
+ className: m(
11
+ "text-base font-medium text-slate-900",
12
+ e
13
+ ),
14
+ children: t
15
+ }
16
+ );
17
+ }
18
+ export {
19
+ n as CardHeading
20
+ };
21
+ //# sourceMappingURL=index20.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index20.js","sources":["../src/components/Typography/CardHeading.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport type { ReactNode } from 'react'\n\nexport interface CardHeadingProps {\n children: ReactNode\n className?: string\n}\n\nexport function CardHeading({\n children,\n className,\n}: CardHeadingProps) {\n return (\n <h4\n className={cn(\n 'text-base font-medium text-slate-900',\n className\n )}\n >\n {children}\n </h4>\n )\n}\n"],"names":["CardHeading","children","className","jsx","cn"],"mappings":";;AAQO,SAASA,EAAY;AAAA,EAC1B,UAAAC;AAAA,EACA,WAAAC;AACF,GAAqB;AACnB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAGD,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,49 @@
1
+ import { jsx as l, jsxs as s } from "react/jsx-runtime";
2
+ import { cn as n } from "./index3.js";
3
+ const o = ({
4
+ items: c,
5
+ className: t
6
+ }) => /* @__PURE__ */ l("div", { className: n("flex justify-center gap-8 p-5", t), children: c.map((e, r) => /* @__PURE__ */ s("div", { className: "flex flex-col flex-1", children: [
7
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-2 mb-3", children: [
8
+ /* @__PURE__ */ l(
9
+ "div",
10
+ {
11
+ className: "w-5 h-2.5 rounded-full",
12
+ style: { backgroundColor: e.color }
13
+ }
14
+ ),
15
+ /* @__PURE__ */ l(
16
+ "span",
17
+ {
18
+ className: "text-sm font-medium",
19
+ style: { color: e.color },
20
+ children: e.label
21
+ }
22
+ )
23
+ ] }),
24
+ e.data.map((a, d) => /* @__PURE__ */ s("div", { className: "mb-2", children: [
25
+ /* @__PURE__ */ l("div", { className: "text-sm font-semibold text-slate-900 mb-1", children: a.title }),
26
+ /* @__PURE__ */ s("div", { className: "text-sm text-slate-500", children: [
27
+ a.value,
28
+ a.percentage && /* @__PURE__ */ s("span", { className: "ml-1 text-slate-400", children: [
29
+ "(",
30
+ a.percentage,
31
+ ")"
32
+ ] })
33
+ ] })
34
+ ] }, d))
35
+ ] }, r)) }), x = ({ items: c, className: t }) => /* @__PURE__ */ l("div", { className: n("flex items-center justify-center gap-6", t), children: c.map((e, r) => /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
36
+ /* @__PURE__ */ l(
37
+ "div",
38
+ {
39
+ className: "w-3 h-3 rounded-full",
40
+ style: { backgroundColor: e.color }
41
+ }
42
+ ),
43
+ /* @__PURE__ */ l("span", { className: "text-sm text-slate-600", children: e.label })
44
+ ] }, r)) });
45
+ export {
46
+ x as ChartLegend,
47
+ o as StatisticsLegend
48
+ };
49
+ //# sourceMappingURL=index21.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index21.js","sources":["../src/components/StatisticsLegend/StatisticsLegend.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface StatisticsLegendItem {\n label: string\n color: string\n data: {\n title: string\n value: string | number\n percentage?: string\n }[]\n}\n\nexport interface StatisticsLegendProps {\n items: StatisticsLegendItem[]\n className?: string\n}\n\nexport const StatisticsLegend = ({\n items,\n className,\n}: StatisticsLegendProps) => {\n return (\n <div className={cn('flex justify-center gap-8 p-5', className)}>\n {items.map((item, index) => (\n <div key={index} className=\"flex flex-col flex-1\">\n {/* Legend label */}\n <div className=\"flex items-center gap-2 mb-3\">\n <div\n className=\"w-5 h-2.5 rounded-full\"\n style={{ backgroundColor: item.color }}\n />\n <span\n className=\"text-sm font-medium\"\n style={{ color: item.color }}\n >\n {item.label}\n </span>\n </div>\n\n {/* Data items */}\n {item.data.map((dataItem, dataIndex) => (\n <div key={dataIndex} className=\"mb-2\">\n <div className=\"text-sm font-semibold text-slate-900 mb-1\">\n {dataItem.title}\n </div>\n <div className=\"text-sm text-slate-500\">\n {dataItem.value}\n {dataItem.percentage && (\n <span className=\"ml-1 text-slate-400\">\n ({dataItem.percentage})\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n ))}\n </div>\n )\n}\n\n// Simple color dot legend for charts\nexport interface ChartLegendProps {\n items: {\n label: string\n color: string\n }[]\n className?: string\n}\n\nexport const ChartLegend = ({ items, className }: ChartLegendProps) => {\n return (\n <div className={cn('flex items-center justify-center gap-6', className)}>\n {items.map((item, index) => (\n <div key={index} className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full\"\n style={{ backgroundColor: item.color }}\n />\n <span className=\"text-sm text-slate-600\">{item.label}</span>\n </div>\n ))}\n </div>\n )\n}\n"],"names":["StatisticsLegend","items","className","jsx","cn","item","index","jsxs","dataItem","dataIndex","ChartLegend"],"mappings":";;AAiBO,MAAMA,IAAmB,CAAC;AAAA,EAC/B,OAAAC;AAAA,EACA,WAAAC;AACF,MAEI,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAG,iCAAiCF,CAAS,GAC1D,UAAAD,EAAM,IAAI,CAACI,GAAMC,MAChB,gBAAAC,EAAC,OAAA,EAAgB,WAAU,wBAEzB,UAAA;AAAA,EAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,IAAA,gBAAAJ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,iBAAiBE,EAAK,MAAA;AAAA,MAAM;AAAA,IAAA;AAAA,IAEvC,gBAAAF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,OAAOE,EAAK,MAAA;AAAA,QAEpB,UAAAA,EAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,GACF;AAAA,EAGCA,EAAK,KAAK,IAAI,CAACG,GAAUC,MACxB,gBAAAF,EAAC,OAAA,EAAoB,WAAU,QAC7B,UAAA;AAAA,IAAA,gBAAAJ,EAAC,OAAA,EAAI,WAAU,6CACZ,UAAAK,EAAS,OACZ;AAAA,IACA,gBAAAD,EAAC,OAAA,EAAI,WAAU,0BACZ,UAAA;AAAA,MAAAC,EAAS;AAAA,MACTA,EAAS,cACR,gBAAAD,EAAC,QAAA,EAAK,WAAU,uBAAsB,UAAA;AAAA,QAAA;AAAA,QAClCC,EAAS;AAAA,QAAW;AAAA,MAAA,EAAA,CACxB;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,EAAA,GAXQC,CAYV,CACD;AAAA,KA9BOH,CA+BV,CACD,GACH,GAaSI,IAAc,CAAC,EAAE,OAAAT,GAAO,WAAAC,QAEjC,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAG,0CAA0CF,CAAS,GACnE,UAAAD,EAAM,IAAI,CAACI,GAAMC,MAChB,gBAAAC,EAAC,OAAA,EAAgB,WAAU,2BACzB,UAAA;AAAA,EAAA,gBAAAJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,iBAAiBE,EAAK,MAAA;AAAA,IAAM;AAAA,EAAA;AAAA,EAEvC,gBAAAF,EAAC,QAAA,EAAK,WAAU,0BAA0B,YAAK,MAAA,CAAM;AAAA,KAL7CG,CAMV,CACD,GACH;"}
@@ -0,0 +1,53 @@
1
+ import { jsxs as t, jsx as r } from "react/jsx-runtime";
2
+ import { forwardRef as d } from "react";
3
+ import { cn as i } from "./index3.js";
4
+ import { CheckIcon as l } from "@heroicons/react/20/solid";
5
+ const f = d(
6
+ ({ className: c, label: e, description: s, id: m, checked: o, ...n }, p) => {
7
+ const a = m || (e == null ? void 0 : e.toLowerCase().replace(/\s+/g, "-"));
8
+ return /* @__PURE__ */ t(
9
+ "label",
10
+ {
11
+ htmlFor: a,
12
+ className: i("flex items-start gap-3 cursor-pointer group", c),
13
+ children: [
14
+ /* @__PURE__ */ t("div", { className: "relative flex-shrink-0 mt-0.5", children: [
15
+ /* @__PURE__ */ r(
16
+ "input",
17
+ {
18
+ ref: p,
19
+ type: "checkbox",
20
+ id: a,
21
+ checked: o,
22
+ className: "peer sr-only",
23
+ ...n
24
+ }
25
+ ),
26
+ /* @__PURE__ */ r(
27
+ "div",
28
+ {
29
+ className: i(
30
+ "h-5 w-5 rounded border-2 transition-colors duration-200",
31
+ "flex items-center justify-center",
32
+ "peer-focus:ring-2 peer-focus:ring-primary-500 peer-focus:ring-offset-2",
33
+ "peer-disabled:opacity-50 peer-disabled:cursor-not-allowed",
34
+ o ? "bg-primary-500 border-primary-500" : "bg-white border-slate-300 group-hover:border-slate-400"
35
+ ),
36
+ children: o && /* @__PURE__ */ r(l, { className: "h-3.5 w-3.5 text-white" })
37
+ }
38
+ )
39
+ ] }),
40
+ (e || s) && /* @__PURE__ */ t("div", { className: "flex flex-col", children: [
41
+ e && /* @__PURE__ */ r("span", { className: "text-sm font-medium text-slate-900", children: e }),
42
+ s && /* @__PURE__ */ r("span", { className: "text-sm text-slate-500", children: s })
43
+ ] })
44
+ ]
45
+ }
46
+ );
47
+ }
48
+ );
49
+ f.displayName = "Checkbox";
50
+ export {
51
+ f as Checkbox
52
+ };
53
+ //# sourceMappingURL=index22.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index22.js","sources":["../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from 'react'\nimport { cn } from '@/lib/utils'\nimport { CheckIcon } from '@heroicons/react/20/solid'\n\nexport interface CheckboxProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: string\n description?: string\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, description, id, checked, ...props }, ref) => {\n const checkboxId = id || label?.toLowerCase().replace(/\\s+/g, '-')\n\n return (\n <label\n htmlFor={checkboxId}\n className={cn('flex items-start gap-3 cursor-pointer group', className)}\n >\n <div className=\"relative flex-shrink-0 mt-0.5\">\n <input\n ref={ref}\n type=\"checkbox\"\n id={checkboxId}\n checked={checked}\n className=\"peer sr-only\"\n {...props}\n />\n <div\n className={cn(\n 'h-5 w-5 rounded border-2 transition-colors duration-200',\n 'flex items-center justify-center',\n 'peer-focus:ring-2 peer-focus:ring-primary-500 peer-focus:ring-offset-2',\n 'peer-disabled:opacity-50 peer-disabled:cursor-not-allowed',\n checked\n ? 'bg-primary-500 border-primary-500'\n : 'bg-white border-slate-300 group-hover:border-slate-400'\n )}\n >\n {checked && <CheckIcon className=\"h-3.5 w-3.5 text-white\" />}\n </div>\n </div>\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <span className=\"text-sm font-medium text-slate-900\">{label}</span>\n )}\n {description && (\n <span className=\"text-sm text-slate-500\">{description}</span>\n )}\n </div>\n )}\n </label>\n )\n }\n)\n\nCheckbox.displayName = 'Checkbox'\n"],"names":["Checkbox","forwardRef","className","label","description","id","checked","props","ref","checkboxId","jsxs","cn","jsx","CheckIcon"],"mappings":";;;;AAUO,MAAMA,IAAWC;AAAA,EACtB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,aAAAC,GAAa,IAAAC,GAAI,SAAAC,GAAS,GAAGC,EAAA,GAASC,MAAQ;AACjE,UAAMC,IAAaJ,MAAMF,KAAA,gBAAAA,EAAO,cAAc,QAAQ,QAAQ;AAE9D,WACE,gBAAAO;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAASD;AAAA,QACT,WAAWE,EAAG,+CAA+CT,CAAS;AAAA,QAEtE,UAAA;AAAA,UAAA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,iCACb,UAAA;AAAA,YAAA,gBAAAE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAAJ;AAAA,gBACA,MAAK;AAAA,gBACL,IAAIC;AAAA,gBACJ,SAAAH;AAAA,gBACA,WAAU;AAAA,gBACT,GAAGC;AAAA,cAAA;AAAA,YAAA;AAAA,YAEN,gBAAAK;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWD;AAAA,kBACT;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACAL,IACI,sCACA;AAAA,gBAAA;AAAA,gBAGL,UAAAA,KAAW,gBAAAM,EAACC,GAAA,EAAU,WAAU,yBAAA,CAAyB;AAAA,cAAA;AAAA,YAAA;AAAA,UAC5D,GACF;AAAA,WACEV,KAASC,MACT,gBAAAM,EAAC,OAAA,EAAI,WAAU,iBACZ,UAAA;AAAA,YAAAP,KACC,gBAAAS,EAAC,QAAA,EAAK,WAAU,sCAAsC,UAAAT,GAAM;AAAA,YAE7DC,KACC,gBAAAQ,EAAC,QAAA,EAAK,WAAU,0BAA0B,UAAAR,EAAA,CAAY;AAAA,UAAA,EAAA,CAE1D;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAJ,EAAS,cAAc;"}
@@ -0,0 +1,82 @@
1
+ import { jsx as e, jsxs as a } from "react/jsx-runtime";
2
+ import { Fragment as i } from "react";
3
+ import { Transition as v, Dialog as N, TransitionChild as o, DialogPanel as y, DialogTitle as b } from "@headlessui/react";
4
+ import { ExclamationTriangleIcon as g } from "@heroicons/react/24/outline";
5
+ import { cn as s } from "./index3.js";
6
+ import { Button as c } from "./index17.js";
7
+ function D({
8
+ open: d,
9
+ onClose: l,
10
+ onConfirm: m,
11
+ title: f,
12
+ message: r,
13
+ confirmText: h = "Confirm",
14
+ cancelText: p = "Cancel",
15
+ showIcon: t = !1,
16
+ destructive: x = !1,
17
+ isLoading: n = !1,
18
+ className: u
19
+ }) {
20
+ return /* @__PURE__ */ e(v, { show: d, as: i, children: /* @__PURE__ */ a(N, { onClose: l, className: "relative z-50", children: [
21
+ /* @__PURE__ */ e(
22
+ o,
23
+ {
24
+ as: i,
25
+ enter: "ease-out duration-300",
26
+ enterFrom: "opacity-0",
27
+ enterTo: "opacity-100",
28
+ leave: "ease-in duration-200",
29
+ leaveFrom: "opacity-100",
30
+ leaveTo: "opacity-0",
31
+ children: /* @__PURE__ */ e("div", { className: "fixed inset-0 bg-black/50", "aria-hidden": "true" })
32
+ }
33
+ ),
34
+ /* @__PURE__ */ e("div", { className: "fixed inset-0 flex items-center justify-center p-4", children: /* @__PURE__ */ e(
35
+ o,
36
+ {
37
+ as: i,
38
+ enter: "ease-out duration-300",
39
+ enterFrom: "opacity-0 scale-95",
40
+ enterTo: "opacity-100 scale-100",
41
+ leave: "ease-in duration-200",
42
+ leaveFrom: "opacity-100 scale-100",
43
+ leaveTo: "opacity-0 scale-95",
44
+ children: /* @__PURE__ */ a(
45
+ y,
46
+ {
47
+ className: s(
48
+ "w-full max-w-md bg-white rounded-2xl shadow-xl p-6",
49
+ "transform transition-all",
50
+ u
51
+ ),
52
+ children: [
53
+ /* @__PURE__ */ a("div", { className: s(t && "flex gap-4"), children: [
54
+ t && /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: /* @__PURE__ */ e("div", { className: "rounded-full bg-amber-100 p-2", children: /* @__PURE__ */ e(g, { className: "h-6 w-6 text-amber-600" }) }) }),
55
+ /* @__PURE__ */ a("div", { className: "flex-1", children: [
56
+ /* @__PURE__ */ e(b, { className: "text-lg font-semibold text-slate-900 mb-2", children: f }),
57
+ r && /* @__PURE__ */ e("div", { className: "text-sm text-slate-600 mb-6", children: r })
58
+ ] })
59
+ ] }),
60
+ /* @__PURE__ */ a("div", { className: "flex justify-end gap-3 mt-6", children: [
61
+ /* @__PURE__ */ e(c, { variant: "outline", onClick: l, disabled: n, children: p }),
62
+ /* @__PURE__ */ e(
63
+ c,
64
+ {
65
+ variant: x ? "danger" : "primary",
66
+ onClick: m,
67
+ isLoading: n,
68
+ children: h
69
+ }
70
+ )
71
+ ] })
72
+ ]
73
+ }
74
+ )
75
+ }
76
+ ) })
77
+ ] }) });
78
+ }
79
+ export {
80
+ D as ConfirmModal
81
+ };
82
+ //# sourceMappingURL=index23.js.map