@axtec/components 0.1.8 → 0.1.10

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 (157) hide show
  1. package/README.md +1 -0
  2. package/dist/components/AgentChat/AgentChat.d.ts +32 -0
  3. package/dist/components/AgentChat/index.d.ts +1 -0
  4. package/dist/components/AgentPanel/AgentPanel.d.ts +44 -0
  5. package/dist/components/AgentPanel/index.d.ts +1 -0
  6. package/dist/components/index.d.ts +2 -0
  7. package/dist/index.css +1 -1
  8. package/dist/index.js +161 -157
  9. package/dist/index.js.map +1 -1
  10. package/dist/index10.js +77 -99
  11. package/dist/index10.js.map +1 -1
  12. package/dist/index11.js +91 -36
  13. package/dist/index11.js.map +1 -1
  14. package/dist/index12.js +97 -75
  15. package/dist/index12.js.map +1 -1
  16. package/dist/index13.js +38 -24
  17. package/dist/index13.js.map +1 -1
  18. package/dist/index14.js +76 -16
  19. package/dist/index14.js.map +1 -1
  20. package/dist/index15.js +24 -38
  21. package/dist/index15.js.map +1 -1
  22. package/dist/index16.js +18 -72
  23. package/dist/index16.js.map +1 -1
  24. package/dist/index17.js +36 -47
  25. package/dist/index17.js.map +1 -1
  26. package/dist/index18.js +73 -13
  27. package/dist/index18.js.map +1 -1
  28. package/dist/index19.js +47 -151
  29. package/dist/index19.js.map +1 -1
  30. package/dist/index20.js +12 -17
  31. package/dist/index20.js.map +1 -1
  32. package/dist/index21.js +148 -40
  33. package/dist/index21.js.map +1 -1
  34. package/dist/index22.js +18 -50
  35. package/dist/index22.js.map +1 -1
  36. package/dist/index23.js +41 -74
  37. package/dist/index23.js.map +1 -1
  38. package/dist/index24.js +46 -216
  39. package/dist/index24.js.map +1 -1
  40. package/dist/index25.js +73 -46
  41. package/dist/index25.js.map +1 -1
  42. package/dist/index26.js +212 -70
  43. package/dist/index26.js.map +1 -1
  44. package/dist/index27.js +51 -23
  45. package/dist/index27.js.map +1 -1
  46. package/dist/index28.js +74 -74
  47. package/dist/index28.js.map +1 -1
  48. package/dist/index29.js +19 -28
  49. package/dist/index29.js.map +1 -1
  50. package/dist/index3.js +2 -2
  51. package/dist/index30.js +62 -76
  52. package/dist/index30.js.map +1 -1
  53. package/dist/index31.js +28 -55
  54. package/dist/index31.js.map +1 -1
  55. package/dist/index32.js +87 -40
  56. package/dist/index32.js.map +1 -1
  57. package/dist/index33.js +57 -45
  58. package/dist/index33.js.map +1 -1
  59. package/dist/index34.js +40 -47
  60. package/dist/index34.js.map +1 -1
  61. package/dist/index35.js +47 -27
  62. package/dist/index35.js.map +1 -1
  63. package/dist/index36.js +52 -54
  64. package/dist/index36.js.map +1 -1
  65. package/dist/index37.js +28 -49
  66. package/dist/index37.js.map +1 -1
  67. package/dist/index38.js +54 -13
  68. package/dist/index38.js.map +1 -1
  69. package/dist/index39.js +46 -79
  70. package/dist/index39.js.map +1 -1
  71. package/dist/index40.js +13 -49
  72. package/dist/index40.js.map +1 -1
  73. package/dist/index41.js +80 -17
  74. package/dist/index41.js.map +1 -1
  75. package/dist/index42.js +48 -33
  76. package/dist/index42.js.map +1 -1
  77. package/dist/index43.js +18 -17
  78. package/dist/index43.js.map +1 -1
  79. package/dist/index44.js +34 -15
  80. package/dist/index44.js.map +1 -1
  81. package/dist/index45.js +16 -89
  82. package/dist/index45.js.map +1 -1
  83. package/dist/index46.js +15 -69
  84. package/dist/index46.js.map +1 -1
  85. package/dist/index47.js +85 -116
  86. package/dist/index47.js.map +1 -1
  87. package/dist/index48.js +69 -40
  88. package/dist/index48.js.map +1 -1
  89. package/dist/index49.js +120 -42
  90. package/dist/index49.js.map +1 -1
  91. package/dist/index5.js +1 -1
  92. package/dist/index50.js +39 -55
  93. package/dist/index50.js.map +1 -1
  94. package/dist/index51.js +39 -11
  95. package/dist/index51.js.map +1 -1
  96. package/dist/index52.js +53 -62
  97. package/dist/index52.js.map +1 -1
  98. package/dist/index53.js +16 -54
  99. package/dist/index53.js.map +1 -1
  100. package/dist/index54.js +64 -36
  101. package/dist/index54.js.map +1 -1
  102. package/dist/index55.js +54 -66
  103. package/dist/index55.js.map +1 -1
  104. package/dist/index56.js +37 -22
  105. package/dist/index56.js.map +1 -1
  106. package/dist/index57.js +63 -101
  107. package/dist/index57.js.map +1 -1
  108. package/dist/index58.js +16 -67
  109. package/dist/index58.js.map +1 -1
  110. package/dist/index59.js +99 -213
  111. package/dist/index59.js.map +1 -1
  112. package/dist/index6.js +1 -1
  113. package/dist/index60.js +67 -62
  114. package/dist/index60.js.map +1 -1
  115. package/dist/index61.js +206 -224
  116. package/dist/index61.js.map +1 -1
  117. package/dist/index62.js +62 -96
  118. package/dist/index62.js.map +1 -1
  119. package/dist/index63.js +233 -33
  120. package/dist/index63.js.map +1 -1
  121. package/dist/index64.js +98 -14
  122. package/dist/index64.js.map +1 -1
  123. package/dist/index65.js +35 -59
  124. package/dist/index65.js.map +1 -1
  125. package/dist/index66.js +16 -59
  126. package/dist/index66.js.map +1 -1
  127. package/dist/index67.js +57 -72
  128. package/dist/index67.js.map +1 -1
  129. package/dist/index68.js +58 -106
  130. package/dist/index68.js.map +1 -1
  131. package/dist/index69.js +70 -43
  132. package/dist/index69.js.map +1 -1
  133. package/dist/index7.js +157 -69
  134. package/dist/index7.js.map +1 -1
  135. package/dist/index70.js +101 -40
  136. package/dist/index70.js.map +1 -1
  137. package/dist/index71.js +44 -72
  138. package/dist/index71.js.map +1 -1
  139. package/dist/index72.js +47 -53
  140. package/dist/index72.js.map +1 -1
  141. package/dist/index73.js +70 -62
  142. package/dist/index73.js.map +1 -1
  143. package/dist/index74.js +46 -28
  144. package/dist/index74.js.map +1 -1
  145. package/dist/index75.js +67 -13
  146. package/dist/index75.js.map +1 -1
  147. package/dist/index76.js +35 -2263
  148. package/dist/index76.js.map +1 -1
  149. package/dist/index77.js +17 -0
  150. package/dist/index77.js.map +1 -0
  151. package/dist/index78.js +2267 -0
  152. package/dist/index78.js.map +1 -0
  153. package/dist/index8.js +377 -70
  154. package/dist/index8.js.map +1 -1
  155. package/dist/index9.js +60 -77
  156. package/dist/index9.js.map +1 -1
  157. package/package.json +1 -1
package/dist/index23.js CHANGED
@@ -1,82 +1,49 @@
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,
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",
23
10
  {
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" })
11
+ className: "w-5 h-2.5 rounded-full",
12
+ style: { backgroundColor: e.color }
32
13
  }
33
14
  ),
34
- /* @__PURE__ */ e("div", { className: "fixed inset-0 flex items-center justify-center p-4", children: /* @__PURE__ */ e(
35
- o,
15
+ /* @__PURE__ */ l(
16
+ "span",
36
17
  {
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
- )
18
+ className: "text-sm font-medium",
19
+ style: { color: e.color },
20
+ children: e.label
75
21
  }
76
- ) })
77
- ] }) });
78
- }
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)) });
79
45
  export {
80
- D as ConfirmModal
46
+ x as ChartLegend,
47
+ o as StatisticsLegend
81
48
  };
82
49
  //# sourceMappingURL=index23.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index23.js","sources":["../src/components/ConfirmModal/ConfirmModal.tsx"],"sourcesContent":["import { Fragment, type ReactNode } from 'react'\nimport {\n Dialog,\n DialogPanel,\n DialogTitle,\n Transition,\n TransitionChild,\n} from '@headlessui/react'\nimport { ExclamationTriangleIcon } from '@heroicons/react/24/outline'\nimport { cn } from '@/lib/utils'\nimport { Button } from '../Button/Button'\n\nexport interface ConfirmModalProps {\n open: boolean\n onClose: () => void\n onConfirm: () => void\n title: string\n message?: string | ReactNode\n confirmText?: string\n cancelText?: string\n /** Show warning icon */\n showIcon?: boolean\n /** Destructive action styling (red confirm button) */\n destructive?: boolean\n /** Loading state for confirm button */\n isLoading?: boolean\n className?: string\n}\n\nexport function ConfirmModal({\n open,\n onClose,\n onConfirm,\n title,\n message,\n confirmText = 'Confirm',\n cancelText = 'Cancel',\n showIcon = false,\n destructive = false,\n isLoading = false,\n className,\n}: ConfirmModalProps) {\n return (\n <Transition show={open} as={Fragment}>\n <Dialog onClose={onClose} className=\"relative z-50\">\n {/* Backdrop */}\n <TransitionChild\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 bg-black/50\" aria-hidden=\"true\" />\n </TransitionChild>\n\n {/* Modal */}\n <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n <TransitionChild\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 scale-95\"\n enterTo=\"opacity-100 scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 scale-100\"\n leaveTo=\"opacity-0 scale-95\"\n >\n <DialogPanel\n className={cn(\n 'w-full max-w-md bg-white rounded-2xl shadow-xl p-6',\n 'transform transition-all',\n className\n )}\n >\n <div className={cn(showIcon && 'flex gap-4')}>\n {/* Icon */}\n {showIcon && (\n <div className=\"flex-shrink-0\">\n <div className=\"rounded-full bg-amber-100 p-2\">\n <ExclamationTriangleIcon className=\"h-6 w-6 text-amber-600\" />\n </div>\n </div>\n )}\n\n <div className=\"flex-1\">\n {/* Title */}\n <DialogTitle className=\"text-lg font-semibold text-slate-900 mb-2\">\n {title}\n </DialogTitle>\n\n {/* Message */}\n {message && (\n <div className=\"text-sm text-slate-600 mb-6\">{message}</div>\n )}\n </div>\n </div>\n\n {/* Buttons */}\n <div className=\"flex justify-end gap-3 mt-6\">\n <Button variant=\"outline\" onClick={onClose} disabled={isLoading}>\n {cancelText}\n </Button>\n <Button\n variant={destructive ? 'danger' : 'primary'}\n onClick={onConfirm}\n isLoading={isLoading}\n >\n {confirmText}\n </Button>\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </Transition>\n )\n}\n"],"names":["ConfirmModal","open","onClose","onConfirm","title","message","confirmText","cancelText","showIcon","destructive","isLoading","className","jsx","Transition","Fragment","jsxs","Dialog","TransitionChild","DialogPanel","cn","ExclamationTriangleIcon","DialogTitle","Button"],"mappings":";;;;;;AA6BO,SAASA,EAAa;AAAA,EAC3B,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,UAAAC,IAAW;AAAA,EACX,aAAAC,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,WAAAC;AACF,GAAsB;AACpB,SACE,gBAAAC,EAACC,GAAA,EAAW,MAAMZ,GAAM,IAAIa,GAC1B,UAAA,gBAAAC,EAACC,GAAA,EAAO,SAAAd,GAAkB,WAAU,iBAElC,UAAA;AAAA,IAAA,gBAAAU;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,IAAIH;AAAA,QACJ,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QAER,UAAA,gBAAAF,EAAC,OAAA,EAAI,WAAU,6BAA4B,eAAY,OAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,IAIhE,gBAAAA,EAAC,OAAA,EAAI,WAAU,sDACb,UAAA,gBAAAA;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,IAAIH;AAAA,QACJ,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QAER,UAAA,gBAAAC;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,WAAWC;AAAA,cACT;AAAA,cACA;AAAA,cACAR;AAAA,YAAA;AAAA,YAGF,UAAA;AAAA,cAAA,gBAAAI,EAAC,OAAA,EAAI,WAAWI,EAAGX,KAAY,YAAY,GAExC,UAAA;AAAA,gBAAAA,KACC,gBAAAI,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,iCACb,UAAA,gBAAAA,EAACQ,GAAA,EAAwB,WAAU,yBAAA,CAAyB,GAC9D,GACF;AAAA,gBAGF,gBAAAL,EAAC,OAAA,EAAI,WAAU,UAEb,UAAA;AAAA,kBAAA,gBAAAH,EAACS,GAAA,EAAY,WAAU,6CACpB,UAAAjB,GACH;AAAA,kBAGCC,KACC,gBAAAO,EAAC,OAAA,EAAI,WAAU,+BAA+B,UAAAP,EAAA,CAAQ;AAAA,gBAAA,EAAA,CAE1D;AAAA,cAAA,GACF;AAAA,cAGA,gBAAAU,EAAC,OAAA,EAAI,WAAU,+BACb,UAAA;AAAA,gBAAA,gBAAAH,EAACU,KAAO,SAAQ,WAAU,SAASpB,GAAS,UAAUQ,GACnD,UAAAH,EAAA,CACH;AAAA,gBACA,gBAAAK;AAAA,kBAACU;AAAA,kBAAA;AAAA,oBACC,SAASb,IAAc,WAAW;AAAA,oBAClC,SAASN;AAAA,oBACT,WAAAO;AAAA,oBAEC,UAAAJ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACH,EAAA,CACF;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,EACF,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"index23.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;"}
package/dist/index24.js CHANGED
@@ -1,223 +1,53 @@
1
- import { jsxs as f, jsx as n, Fragment as q } from "react/jsx-runtime";
2
- import { useState as D, useRef as B, useEffect as G } from "react";
3
- import { cn as w } from "./index3.js";
4
- import { CalendarIcon as Q, ChevronLeftIcon as U, ChevronRightIcon as V } from "@heroicons/react/24/outline";
5
- const F = [
6
- "January",
7
- "February",
8
- "March",
9
- "April",
10
- "May",
11
- "June",
12
- "July",
13
- "August",
14
- "September",
15
- "October",
16
- "November",
17
- "December"
18
- ], X = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], Z = (s, l) => new Date(s, l + 1, 0).getDate(), _ = (s, l) => new Date(s, l, 1).getDay(), ee = (s, l) => {
19
- const i = String(s.getDate()).padStart(2, "0"), r = String(s.getMonth() + 1).padStart(2, "0"), g = s.getFullYear();
20
- switch (l) {
21
- case "MM/DD/YYYY":
22
- return `${r}/${i}/${g}`;
23
- case "YYYY-MM-DD":
24
- return `${g}-${r}-${i}`;
25
- default:
26
- return `${i}/${r}/${g}`;
27
- }
28
- }, te = (s) => {
29
- if (!s) return null;
30
- const l = [
31
- /^(\d{2})\/(\d{2})\/(\d{4})$/,
32
- // DD/MM/YYYY
33
- /^(\d{4})-(\d{2})-(\d{2})$/
34
- // YYYY-MM-DD
35
- ];
36
- for (const i of l) {
37
- const r = s.match(i);
38
- if (r)
39
- return i.source.includes("^(\\d{4})") ? new Date(parseInt(r[1]), parseInt(r[2]) - 1, parseInt(r[3])) : new Date(parseInt(r[3]), parseInt(r[2]) - 1, parseInt(r[1]));
40
- }
41
- return null;
42
- }, ae = ({
43
- value: s,
44
- onChange: l,
45
- label: i,
46
- placeholder: r = "DD/MM/YYYY",
47
- disabled: g = !1,
48
- error: Y,
49
- disableFutureDates: I = !1,
50
- disablePastDates: $ = !1,
51
- format: k = "DD/MM/YYYY",
52
- className: j
53
- }) => {
54
- const u = /* @__PURE__ */ new Date(), h = s ? te(s) : null, [S, M] = D(!1), [m, p] = D("days"), [o, y] = D((h == null ? void 0 : h.getFullYear()) ?? u.getFullYear()), [a, b] = D((h == null ? void 0 : h.getMonth()) ?? u.getMonth()), [x, O] = D(h), v = B(null);
55
- G(() => {
56
- const t = (e) => {
57
- v.current && !v.current.contains(e.target) && (M(!1), p("days"));
58
- };
59
- return document.addEventListener("mousedown", t), () => document.removeEventListener("mousedown", t);
60
- }, []);
61
- const E = (t) => {
62
- const e = new Date(o, a, t);
63
- O(e), l(ee(e, k)), M(!1);
64
- }, T = (t) => {
65
- b(t), p("days");
66
- }, A = (t) => {
67
- y(t), p("months");
68
- }, J = () => {
69
- m === "days" ? a === 0 ? (b(11), y(o - 1)) : b(a - 1) : m === "years" && y(o - 12);
70
- }, L = () => {
71
- m === "days" ? a === 11 ? (b(0), y(o + 1)) : b(a + 1) : m === "years" && y(o + 12);
72
- }, R = (t) => {
73
- const e = new Date(u.getFullYear(), u.getMonth(), u.getDate());
74
- return !!(I && t > e || $ && t < e);
75
- }, P = Z(o, a), W = _(o, a), z = () => {
76
- const t = [];
77
- for (let e = 0; e < W; e++)
78
- t.push(/* @__PURE__ */ n("div", { className: "w-8 h-8" }, `empty-${e}`));
79
- for (let e = 1; e <= P; e++) {
80
- const c = new Date(o, a, e), d = x && c.getDate() === x.getDate() && c.getMonth() === x.getMonth() && c.getFullYear() === x.getFullYear(), C = c.getDate() === u.getDate() && c.getMonth() === u.getMonth() && c.getFullYear() === u.getFullYear(), N = R(c);
81
- t.push(
82
- /* @__PURE__ */ n(
83
- "button",
84
- {
85
- type: "button",
86
- disabled: N,
87
- onClick: () => E(e),
88
- className: w(
89
- "w-8 h-8 rounded-full text-sm flex items-center justify-center",
90
- "transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500",
91
- d && "bg-primary-500 text-white",
92
- !d && C && "border border-primary-500 text-primary-500",
93
- !d && !C && !N && "hover:bg-slate-100",
94
- N && "text-slate-300 cursor-not-allowed"
95
- ),
96
- children: e
97
- },
98
- e
99
- )
100
- );
101
- }
102
- return t;
103
- }, H = () => F.map((t, e) => /* @__PURE__ */ n(
104
- "button",
105
- {
106
- type: "button",
107
- onClick: () => T(e),
108
- className: w(
109
- "px-3 py-2 rounded text-sm",
110
- "transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500",
111
- a === e && "bg-primary-500 text-white",
112
- a !== e && "hover:bg-slate-100"
113
- ),
114
- children: t.slice(0, 3)
115
- },
116
- t
117
- )), K = () => {
118
- const t = o - 6, e = [];
119
- for (let c = 0; c < 12; c++) {
120
- const d = t + c;
121
- e.push(
122
- /* @__PURE__ */ n(
123
- "button",
124
- {
125
- type: "button",
126
- onClick: () => A(d),
127
- className: w(
128
- "px-3 py-2 rounded text-sm",
129
- "transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500",
130
- o === d && "bg-primary-500 text-white",
131
- o !== d && "hover:bg-slate-100"
132
- ),
133
- children: d
134
- },
135
- d
136
- )
137
- );
138
- }
139
- return e;
140
- };
141
- return /* @__PURE__ */ f("div", { ref: v, className: w("relative", j), children: [
142
- i && /* @__PURE__ */ n("label", { className: "block text-sm font-semibold text-slate-700 mb-1.5", children: i }),
143
- /* @__PURE__ */ f(
144
- "button",
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",
145
10
  {
146
- type: "button",
147
- disabled: g,
148
- onClick: () => M(!S),
149
- className: w(
150
- "w-full flex items-center justify-between px-4 py-2.5",
151
- "bg-white border rounded-lg text-left",
152
- "transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500",
153
- Y ? "border-red-500" : "border-slate-300",
154
- g && "bg-slate-100 cursor-not-allowed opacity-60"
155
- ),
11
+ htmlFor: a,
12
+ className: i("flex items-start gap-3 cursor-pointer group", c),
156
13
  children: [
157
- /* @__PURE__ */ n("span", { className: s ? "text-slate-900" : "text-slate-400", children: s || r }),
158
- /* @__PURE__ */ n(Q, { className: "w-5 h-5 text-slate-400" })
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
+ ] })
159
44
  ]
160
45
  }
161
- ),
162
- Y && /* @__PURE__ */ n("p", { className: "text-sm text-red-500 mt-1", children: Y }),
163
- S && /* @__PURE__ */ f("div", { className: "absolute z-50 mt-2 p-4 bg-white border border-slate-200 rounded-lg shadow-lg", children: [
164
- /* @__PURE__ */ f("div", { className: "flex items-center justify-between mb-4", children: [
165
- /* @__PURE__ */ n(
166
- "button",
167
- {
168
- type: "button",
169
- onClick: J,
170
- className: "p-1 rounded hover:bg-slate-100",
171
- children: /* @__PURE__ */ n(U, { className: "w-5 h-5" })
172
- }
173
- ),
174
- /* @__PURE__ */ f("div", { className: "flex gap-1", children: [
175
- m !== "months" && /* @__PURE__ */ n(
176
- "button",
177
- {
178
- type: "button",
179
- onClick: () => p("months"),
180
- className: "px-2 py-1 text-sm font-medium hover:bg-slate-100 rounded",
181
- children: F[a]
182
- }
183
- ),
184
- /* @__PURE__ */ n(
185
- "button",
186
- {
187
- type: "button",
188
- onClick: () => p("years"),
189
- className: "px-2 py-1 text-sm font-medium hover:bg-slate-100 rounded",
190
- children: o
191
- }
192
- )
193
- ] }),
194
- /* @__PURE__ */ n(
195
- "button",
196
- {
197
- type: "button",
198
- onClick: L,
199
- className: "p-1 rounded hover:bg-slate-100",
200
- children: /* @__PURE__ */ n(V, { className: "w-5 h-5" })
201
- }
202
- )
203
- ] }),
204
- m === "days" && /* @__PURE__ */ f(q, { children: [
205
- /* @__PURE__ */ n("div", { className: "grid grid-cols-7 gap-1 mb-2", children: X.map((t) => /* @__PURE__ */ n(
206
- "div",
207
- {
208
- className: "w-8 h-8 flex items-center justify-center text-xs font-medium text-slate-500",
209
- children: t
210
- },
211
- t
212
- )) }),
213
- /* @__PURE__ */ n("div", { className: "grid grid-cols-7 gap-1", children: z() })
214
- ] }),
215
- m === "months" && /* @__PURE__ */ n("div", { className: "grid grid-cols-3 gap-2", children: H() }),
216
- m === "years" && /* @__PURE__ */ n("div", { className: "grid grid-cols-3 gap-2", children: K() })
217
- ] })
218
- ] });
219
- };
46
+ );
47
+ }
48
+ );
49
+ f.displayName = "Checkbox";
220
50
  export {
221
- ae as DatePicker
51
+ f as Checkbox
222
52
  };
223
53
  //# sourceMappingURL=index24.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index24.js","sources":["../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState, useRef, useEffect } from 'react'\nimport { cn } from '@/lib/utils'\nimport { CalendarIcon, ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/outline'\n\nexport interface DatePickerProps {\n value?: string\n onChange: (date: string) => void\n label?: string\n placeholder?: string\n disabled?: boolean\n error?: string\n disableFutureDates?: boolean\n disablePastDates?: boolean\n format?: 'DD/MM/YYYY' | 'MM/DD/YYYY' | 'YYYY-MM-DD'\n className?: string\n}\n\nconst MONTHS = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n]\n\nconst WEEKDAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\n\nconst getDaysInMonth = (year: number, month: number) => {\n return new Date(year, month + 1, 0).getDate()\n}\n\nconst getFirstDayOfMonth = (year: number, month: number) => {\n return new Date(year, month, 1).getDay()\n}\n\nconst formatDate = (date: Date, format: string) => {\n const day = String(date.getDate()).padStart(2, '0')\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const year = date.getFullYear()\n\n switch (format) {\n case 'MM/DD/YYYY':\n return `${month}/${day}/${year}`\n case 'YYYY-MM-DD':\n return `${year}-${month}-${day}`\n default:\n return `${day}/${month}/${year}`\n }\n}\n\nconst parseDate = (dateString: string): Date | null => {\n if (!dateString) return null\n\n // Try different formats\n const formats = [\n /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/, // DD/MM/YYYY\n /^(\\d{4})-(\\d{2})-(\\d{2})$/, // YYYY-MM-DD\n ]\n\n for (const regex of formats) {\n const match = dateString.match(regex)\n if (match) {\n if (regex.source.includes('^(\\\\d{4})')) {\n // YYYY-MM-DD\n return new Date(parseInt(match[1]), parseInt(match[2]) - 1, parseInt(match[3]))\n } else {\n // DD/MM/YYYY\n return new Date(parseInt(match[3]), parseInt(match[2]) - 1, parseInt(match[1]))\n }\n }\n }\n return null\n}\n\nexport const DatePicker = ({\n value,\n onChange,\n label,\n placeholder = 'DD/MM/YYYY',\n disabled = false,\n error,\n disableFutureDates = false,\n disablePastDates = false,\n format = 'DD/MM/YYYY',\n className,\n}: DatePickerProps) => {\n const today = new Date()\n const parsedValue = value ? parseDate(value) : null\n\n const [isOpen, setIsOpen] = useState(false)\n const [viewMode, setViewMode] = useState<'days' | 'months' | 'years'>('days')\n const [viewYear, setViewYear] = useState(parsedValue?.getFullYear() ?? today.getFullYear())\n const [viewMonth, setViewMonth] = useState(parsedValue?.getMonth() ?? today.getMonth())\n const [selectedDate, setSelectedDate] = useState<Date | null>(parsedValue)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n setViewMode('days')\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n const handleDateSelect = (day: number) => {\n const newDate = new Date(viewYear, viewMonth, day)\n setSelectedDate(newDate)\n onChange(formatDate(newDate, format))\n setIsOpen(false)\n }\n\n const handleMonthSelect = (monthIndex: number) => {\n setViewMonth(monthIndex)\n setViewMode('days')\n }\n\n const handleYearSelect = (year: number) => {\n setViewYear(year)\n setViewMode('months')\n }\n\n const navigatePrevious = () => {\n if (viewMode === 'days') {\n if (viewMonth === 0) {\n setViewMonth(11)\n setViewYear(viewYear - 1)\n } else {\n setViewMonth(viewMonth - 1)\n }\n } else if (viewMode === 'years') {\n setViewYear(viewYear - 12)\n }\n }\n\n const navigateNext = () => {\n if (viewMode === 'days') {\n if (viewMonth === 11) {\n setViewMonth(0)\n setViewYear(viewYear + 1)\n } else {\n setViewMonth(viewMonth + 1)\n }\n } else if (viewMode === 'years') {\n setViewYear(viewYear + 12)\n }\n }\n\n const isDateDisabled = (date: Date) => {\n const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate())\n if (disableFutureDates && date > todayStart) return true\n if (disablePastDates && date < todayStart) return true\n return false\n }\n\n const daysInMonth = getDaysInMonth(viewYear, viewMonth)\n const firstDay = getFirstDayOfMonth(viewYear, viewMonth)\n\n const renderDays = () => {\n const days = []\n\n // Empty cells before first day\n for (let i = 0; i < firstDay; i++) {\n days.push(<div key={`empty-${i}`} className=\"w-8 h-8\" />)\n }\n\n // Days of month\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(viewYear, viewMonth, day)\n const isSelected = selectedDate &&\n date.getDate() === selectedDate.getDate() &&\n date.getMonth() === selectedDate.getMonth() &&\n date.getFullYear() === selectedDate.getFullYear()\n const isToday =\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n const isDisabled = isDateDisabled(date)\n\n days.push(\n <button\n key={day}\n type=\"button\"\n disabled={isDisabled}\n onClick={() => handleDateSelect(day)}\n className={cn(\n 'w-8 h-8 rounded-full text-sm flex items-center justify-center',\n 'transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500',\n isSelected && 'bg-primary-500 text-white',\n !isSelected && isToday && 'border border-primary-500 text-primary-500',\n !isSelected && !isToday && !isDisabled && 'hover:bg-slate-100',\n isDisabled && 'text-slate-300 cursor-not-allowed'\n )}\n >\n {day}\n </button>\n )\n }\n\n return days\n }\n\n const renderMonths = () => {\n return MONTHS.map((month, index) => (\n <button\n key={month}\n type=\"button\"\n onClick={() => handleMonthSelect(index)}\n className={cn(\n 'px-3 py-2 rounded text-sm',\n 'transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500',\n viewMonth === index && 'bg-primary-500 text-white',\n viewMonth !== index && 'hover:bg-slate-100'\n )}\n >\n {month.slice(0, 3)}\n </button>\n ))\n }\n\n const renderYears = () => {\n const startYear = viewYear - 6\n const years = []\n for (let i = 0; i < 12; i++) {\n const year = startYear + i\n years.push(\n <button\n key={year}\n type=\"button\"\n onClick={() => handleYearSelect(year)}\n className={cn(\n 'px-3 py-2 rounded text-sm',\n 'transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500',\n viewYear === year && 'bg-primary-500 text-white',\n viewYear !== year && 'hover:bg-slate-100'\n )}\n >\n {year}\n </button>\n )\n }\n return years\n }\n\n return (\n <div ref={containerRef} className={cn('relative', className)}>\n {label && (\n <label className=\"block text-sm font-semibold text-slate-700 mb-1.5\">\n {label}\n </label>\n )}\n\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n className={cn(\n 'w-full flex items-center justify-between px-4 py-2.5',\n 'bg-white border rounded-lg text-left',\n 'transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500',\n error ? 'border-red-500' : 'border-slate-300',\n disabled && 'bg-slate-100 cursor-not-allowed opacity-60'\n )}\n >\n <span className={value ? 'text-slate-900' : 'text-slate-400'}>\n {value || placeholder}\n </span>\n <CalendarIcon className=\"w-5 h-5 text-slate-400\" />\n </button>\n\n {error && (\n <p className=\"text-sm text-red-500 mt-1\">{error}</p>\n )}\n\n {isOpen && (\n <div className=\"absolute z-50 mt-2 p-4 bg-white border border-slate-200 rounded-lg shadow-lg\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={navigatePrevious}\n className=\"p-1 rounded hover:bg-slate-100\"\n >\n <ChevronLeftIcon className=\"w-5 h-5\" />\n </button>\n\n <div className=\"flex gap-1\">\n {viewMode !== 'months' && (\n <button\n type=\"button\"\n onClick={() => setViewMode('months')}\n className=\"px-2 py-1 text-sm font-medium hover:bg-slate-100 rounded\"\n >\n {MONTHS[viewMonth]}\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => setViewMode('years')}\n className=\"px-2 py-1 text-sm font-medium hover:bg-slate-100 rounded\"\n >\n {viewYear}\n </button>\n </div>\n\n <button\n type=\"button\"\n onClick={navigateNext}\n className=\"p-1 rounded hover:bg-slate-100\"\n >\n <ChevronRightIcon className=\"w-5 h-5\" />\n </button>\n </div>\n\n {/* Calendar content */}\n {viewMode === 'days' && (\n <>\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {WEEKDAYS.map((day) => (\n <div\n key={day}\n className=\"w-8 h-8 flex items-center justify-center text-xs font-medium text-slate-500\"\n >\n {day}\n </div>\n ))}\n </div>\n <div className=\"grid grid-cols-7 gap-1\">\n {renderDays()}\n </div>\n </>\n )}\n\n {viewMode === 'months' && (\n <div className=\"grid grid-cols-3 gap-2\">\n {renderMonths()}\n </div>\n )}\n\n {viewMode === 'years' && (\n <div className=\"grid grid-cols-3 gap-2\">\n {renderYears()}\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n"],"names":["MONTHS","WEEKDAYS","getDaysInMonth","year","month","getFirstDayOfMonth","formatDate","date","format","day","parseDate","dateString","formats","regex","match","DatePicker","value","onChange","label","placeholder","disabled","error","disableFutureDates","disablePastDates","className","today","parsedValue","isOpen","setIsOpen","useState","viewMode","setViewMode","viewYear","setViewYear","viewMonth","setViewMonth","selectedDate","setSelectedDate","containerRef","useRef","useEffect","handleClickOutside","event","handleDateSelect","newDate","handleMonthSelect","monthIndex","handleYearSelect","navigatePrevious","navigateNext","isDateDisabled","todayStart","daysInMonth","firstDay","renderDays","days","i","isSelected","isToday","isDisabled","jsx","cn","renderMonths","index","renderYears","startYear","years","jsxs","CalendarIcon","ChevronLeftIcon","ChevronRightIcon","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"index24.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;"}
package/dist/index25.js CHANGED
@@ -1,55 +1,82 @@
1
- import { jsxs as s, Fragment as h, jsx as t } from "react/jsx-runtime";
2
- import { cn as i } from "./index3.js";
3
- import { XMarkIcon as f } from "@heroicons/react/24/outline";
4
- const u = ({
5
- isOpen: a,
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 "./index19.js";
7
+ function D({
8
+ open: d,
6
9
  onClose: l,
7
- children: n,
8
- width: e = 680,
9
- position: r = "right",
10
- className: o
11
- }) => {
12
- const c = typeof e == "number" ? `${e}px` : e;
13
- return /* @__PURE__ */ s(h, { children: [
14
- a && /* @__PURE__ */ t(
15
- "div",
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,
16
23
  {
17
- className: "fixed inset-0 z-40 bg-black/55 transition-opacity",
18
- onClick: l
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" })
19
32
  }
20
33
  ),
21
- /* @__PURE__ */ s(
22
- "div",
34
+ /* @__PURE__ */ e("div", { className: "fixed inset-0 flex items-center justify-center p-4", children: /* @__PURE__ */ e(
35
+ o,
23
36
  {
24
- className: i(
25
- "fixed top-0 z-50 h-screen bg-white shadow-2xl",
26
- "transition-transform duration-300 ease-in-out",
27
- r === "right" ? "right-0" : "left-0",
28
- a ? "translate-x-0" : r === "right" ? "translate-x-full" : "-translate-x-full",
29
- o
30
- ),
31
- style: { width: c },
32
- children: [
33
- /* @__PURE__ */ t(
34
- "button",
35
- {
36
- onClick: l,
37
- className: i(
38
- "absolute top-8 z-50 border-0 bg-transparent cursor-pointer",
39
- "flex items-center justify-center",
40
- r === "right" ? "right-9" : "left-9"
41
- ),
42
- "aria-label": "Close drawer",
43
- children: /* @__PURE__ */ t(f, { className: "w-6 h-6 text-slate-500 hover:text-slate-700" })
44
- }
45
- ),
46
- /* @__PURE__ */ t("div", { className: "h-screen overflow-y-auto overflow-x-hidden", children: n })
47
- ]
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
+ )
48
75
  }
49
- )
50
- ] });
51
- };
76
+ ) })
77
+ ] }) });
78
+ }
52
79
  export {
53
- u as Drawer
80
+ D as ConfirmModal
54
81
  };
55
82
  //# sourceMappingURL=index25.js.map