@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/index32.js CHANGED
@@ -1,48 +1,95 @@
1
- import { jsxs as e, jsx as t, Fragment as o } from "react/jsx-runtime";
2
- import { cn as r } from "./index3.js";
3
- const h = ({
4
- image: i,
5
- progress: a,
6
- url: l,
7
- className: s
1
+ import { jsxs as r, Fragment as b, jsx as e } from "react/jsx-runtime";
2
+ import { useState as c } from "react";
3
+ import { cn as i } from "./index3.js";
4
+ import { Dialog as w, DialogPanel as j } from "@headlessui/react";
5
+ import { XMarkIcon as C } from "@heroicons/react/24/outline";
6
+ const k = {
7
+ auto: "",
8
+ square: "aspect-square",
9
+ video: "aspect-video",
10
+ "4/3": "aspect-[4/3]",
11
+ "3/2": "aspect-[3/2]"
12
+ }, O = ({
13
+ src: m,
14
+ alt: o = "",
15
+ fallbackSrc: f = "/png/No_Img.png",
16
+ enablePreview: t = !0,
17
+ aspectRatio: u = "auto",
18
+ objectFit: s = "cover",
19
+ className: d,
20
+ imageClassName: p,
21
+ children: h
8
22
  }) => {
9
- const n = l || i, d = a >= 100 || !!l;
10
- return /* @__PURE__ */ e(
11
- "div",
12
- {
13
- className: r(
14
- "relative aspect-square rounded-lg overflow-hidden bg-slate-200",
15
- s
16
- ),
17
- children: [
18
- /* @__PURE__ */ t(
19
- "div",
20
- {
21
- className: "absolute inset-0 bg-cover bg-center",
22
- style: { backgroundImage: `url(${n})` }
23
- }
23
+ const [a, v] = c(!1), [g, l] = c(!1), n = a ? f : m, x = () => {
24
+ v(!0);
25
+ }, N = () => {
26
+ t && !a && l(!0);
27
+ };
28
+ return /* @__PURE__ */ r(b, { children: [
29
+ /* @__PURE__ */ r(
30
+ "div",
31
+ {
32
+ className: i(
33
+ "relative overflow-hidden",
34
+ k[u],
35
+ t && !a && "cursor-pointer",
36
+ d
24
37
  ),
25
- !d && /* @__PURE__ */ e(o, { children: [
26
- /* @__PURE__ */ t("div", { className: "absolute inset-0 bg-black/50" }),
27
- /* @__PURE__ */ e("div", { className: "absolute inset-x-4 top-1/2 -translate-y-1/2", children: [
28
- /* @__PURE__ */ t("div", { className: "h-1.5 bg-white/30 rounded-full overflow-hidden", children: /* @__PURE__ */ t(
29
- "div",
38
+ onClick: N,
39
+ children: [
40
+ /* @__PURE__ */ e(
41
+ "img",
42
+ {
43
+ src: n,
44
+ alt: o,
45
+ onError: x,
46
+ className: i(
47
+ "w-full h-full",
48
+ s === "cover" && "object-cover",
49
+ s === "contain" && "object-contain",
50
+ s === "fill" && "object-fill",
51
+ s === "none" && "object-none",
52
+ p
53
+ )
54
+ }
55
+ ),
56
+ h
57
+ ]
58
+ }
59
+ ),
60
+ /* @__PURE__ */ r(
61
+ w,
62
+ {
63
+ open: g,
64
+ onClose: () => l(!1),
65
+ className: "relative z-50",
66
+ children: [
67
+ /* @__PURE__ */ e("div", { className: "fixed inset-0 bg-black", "aria-hidden": "true" }),
68
+ /* @__PURE__ */ e("div", { className: "fixed inset-0 flex items-center justify-center", children: /* @__PURE__ */ r(j, { className: "relative w-full h-full flex items-center justify-center", children: [
69
+ /* @__PURE__ */ e(
70
+ "button",
30
71
  {
31
- className: "h-full bg-white rounded-full transition-all duration-300",
32
- style: { width: `${Math.min(a, 100)}%` }
72
+ onClick: () => l(!1),
73
+ className: "absolute top-8 left-8 p-2 rounded-full bg-white hover:bg-slate-100 transition-colors",
74
+ "aria-label": "Close preview",
75
+ children: /* @__PURE__ */ e(C, { className: "w-6 h-6 text-slate-700" })
33
76
  }
34
- ) }),
35
- /* @__PURE__ */ e("div", { className: "text-center text-white text-xs mt-2 font-medium", children: [
36
- Math.round(a),
37
- "%"
38
- ] })
39
- ] })
40
- ] })
41
- ]
42
- }
43
- );
77
+ ),
78
+ /* @__PURE__ */ e(
79
+ "img",
80
+ {
81
+ src: n,
82
+ alt: o,
83
+ className: "max-w-full max-h-full object-contain"
84
+ }
85
+ )
86
+ ] }) })
87
+ ]
88
+ }
89
+ )
90
+ ] });
44
91
  };
45
92
  export {
46
- h as ImageUploading
93
+ O as Image
47
94
  };
48
95
  //# sourceMappingURL=index32.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index32.js","sources":["../src/components/ImageUploading/ImageUploading.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface ImageUploadingProps {\n image: string\n progress: number\n url?: string\n className?: string\n}\n\nexport const ImageUploading = ({\n image,\n progress,\n url,\n className,\n}: ImageUploadingProps) => {\n const displayImage = url || image\n const isComplete = progress >= 100 || !!url\n\n return (\n <div\n className={cn(\n 'relative aspect-square rounded-lg overflow-hidden bg-slate-200',\n className\n )}\n >\n {/* Background Image */}\n <div\n className=\"absolute inset-0 bg-cover bg-center\"\n style={{ backgroundImage: `url(${displayImage})` }}\n />\n\n {/* Loading Overlay */}\n {!isComplete && (\n <>\n <div className=\"absolute inset-0 bg-black/50\" />\n\n {/* Progress Bar */}\n <div className=\"absolute inset-x-4 top-1/2 -translate-y-1/2\">\n <div className=\"h-1.5 bg-white/30 rounded-full overflow-hidden\">\n <div\n className=\"h-full bg-white rounded-full transition-all duration-300\"\n style={{ width: `${Math.min(progress, 100)}%` }}\n />\n </div>\n <div className=\"text-center text-white text-xs mt-2 font-medium\">\n {Math.round(progress)}%\n </div>\n </div>\n </>\n )}\n </div>\n )\n}\n"],"names":["ImageUploading","image","progress","url","className","displayImage","isComplete","jsxs","cn","jsx","Fragment"],"mappings":";;AASO,MAAMA,IAAiB,CAAC;AAAA,EAC7B,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,KAAAC;AAAA,EACA,WAAAC;AACF,MAA2B;AACzB,QAAMC,IAAeF,KAAOF,GACtBK,IAAaJ,KAAY,OAAO,CAAC,CAACC;AAExC,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAIF,UAAA;AAAA,QAAA,gBAAAK;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,EAAE,iBAAiB,OAAOJ,CAAY,IAAA;AAAA,UAAI;AAAA,QAAA;AAAA,QAIlD,CAACC,KACA,gBAAAC,EAAAG,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,+BAAA,CAA+B;AAAA,UAG9C,gBAAAF,EAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,YAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO,EAAE,OAAO,GAAG,KAAK,IAAIP,GAAU,GAAG,CAAC,IAAA;AAAA,cAAI;AAAA,YAAA,GAElD;AAAA,YACA,gBAAAK,EAAC,OAAA,EAAI,WAAU,mDACZ,UAAA;AAAA,cAAA,KAAK,MAAML,CAAQ;AAAA,cAAE;AAAA,YAAA,EAAA,CACxB;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"index32.js","sources":["../src/components/Image/Image.tsx"],"sourcesContent":["import { useState, type ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\nimport { Dialog, DialogPanel } from '@headlessui/react'\nimport { XMarkIcon } from '@heroicons/react/24/outline'\n\nexport interface ImageProps {\n src: string\n alt?: string\n fallbackSrc?: string\n enablePreview?: boolean\n aspectRatio?: 'auto' | 'square' | 'video' | '4/3' | '3/2'\n objectFit?: 'cover' | 'contain' | 'fill' | 'none'\n className?: string\n imageClassName?: string\n children?: ReactNode\n}\n\nconst aspectRatioClasses = {\n auto: '',\n square: 'aspect-square',\n video: 'aspect-video',\n '4/3': 'aspect-[4/3]',\n '3/2': 'aspect-[3/2]',\n}\n\nexport const Image = ({\n src,\n alt = '',\n fallbackSrc = '/png/No_Img.png',\n enablePreview = true,\n aspectRatio = 'auto',\n objectFit = 'cover',\n className,\n imageClassName,\n children,\n}: ImageProps) => {\n const [hasError, setHasError] = useState(false)\n const [isPreviewOpen, setIsPreviewOpen] = useState(false)\n\n const imageSrc = hasError ? fallbackSrc : src\n\n const handleError = () => {\n setHasError(true)\n }\n\n const handleClick = () => {\n if (enablePreview && !hasError) {\n setIsPreviewOpen(true)\n }\n }\n\n return (\n <>\n <div\n className={cn(\n 'relative overflow-hidden',\n aspectRatioClasses[aspectRatio],\n enablePreview && !hasError && 'cursor-pointer',\n className\n )}\n onClick={handleClick}\n >\n <img\n src={imageSrc}\n alt={alt}\n onError={handleError}\n className={cn(\n 'w-full h-full',\n objectFit === 'cover' && 'object-cover',\n objectFit === 'contain' && 'object-contain',\n objectFit === 'fill' && 'object-fill',\n objectFit === 'none' && 'object-none',\n imageClassName\n )}\n />\n {children}\n </div>\n\n {/* Preview Modal */}\n <Dialog\n open={isPreviewOpen}\n onClose={() => setIsPreviewOpen(false)}\n className=\"relative z-50\"\n >\n <div className=\"fixed inset-0 bg-black\" aria-hidden=\"true\" />\n\n <div className=\"fixed inset-0 flex items-center justify-center\">\n <DialogPanel className=\"relative w-full h-full flex items-center justify-center\">\n <button\n onClick={() => setIsPreviewOpen(false)}\n className=\"absolute top-8 left-8 p-2 rounded-full bg-white hover:bg-slate-100 transition-colors\"\n aria-label=\"Close preview\"\n >\n <XMarkIcon className=\"w-6 h-6 text-slate-700\" />\n </button>\n\n <img\n src={imageSrc}\n alt={alt}\n className=\"max-w-full max-h-full object-contain\"\n />\n </DialogPanel>\n </div>\n </Dialog>\n </>\n )\n}\n"],"names":["aspectRatioClasses","Image","src","alt","fallbackSrc","enablePreview","aspectRatio","objectFit","className","imageClassName","children","hasError","setHasError","useState","isPreviewOpen","setIsPreviewOpen","imageSrc","handleError","handleClick","jsxs","Fragment","cn","jsx","Dialog","DialogPanel","XMarkIcon"],"mappings":";;;;;AAiBA,MAAMA,IAAqB;AAAA,EACzB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT,GAEaC,IAAQ,CAAC;AAAA,EACpB,KAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,aAAAC,IAAc;AAAA,EACd,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AACF,MAAkB;AAChB,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxC,CAACC,GAAeC,CAAgB,IAAIF,EAAS,EAAK,GAElDG,IAAWL,IAAWP,IAAcF,GAEpCe,IAAc,MAAM;AACxB,IAAAL,EAAY,EAAI;AAAA,EAClB,GAEMM,IAAc,MAAM;AACxB,IAAIb,KAAiB,CAACM,KACpBI,EAAiB,EAAI;AAAA,EAEzB;AAEA,SACE,gBAAAI,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWE;AAAA,UACT;AAAA,UACArB,EAAmBM,CAAW;AAAA,UAC9BD,KAAiB,CAACM,KAAY;AAAA,UAC9BH;AAAA,QAAA;AAAA,QAEF,SAASU;AAAA,QAET,UAAA;AAAA,UAAA,gBAAAI;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKN;AAAA,cACL,KAAAb;AAAA,cACA,SAASc;AAAA,cACT,WAAWI;AAAA,gBACT;AAAA,gBACAd,MAAc,WAAW;AAAA,gBACzBA,MAAc,aAAa;AAAA,gBAC3BA,MAAc,UAAU;AAAA,gBACxBA,MAAc,UAAU;AAAA,gBACxBE;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,UAEDC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAIH,gBAAAS;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,MAAMT;AAAA,QACN,SAAS,MAAMC,EAAiB,EAAK;AAAA,QACrC,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA,gBAAAO,EAAC,OAAA,EAAI,WAAU,0BAAyB,eAAY,QAAO;AAAA,4BAE1D,OAAA,EAAI,WAAU,kDACb,UAAA,gBAAAH,EAACK,GAAA,EAAY,WAAU,2DACrB,UAAA;AAAA,YAAA,gBAAAF;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAS,MAAMP,EAAiB,EAAK;AAAA,gBACrC,WAAU;AAAA,gBACV,cAAW;AAAA,gBAEX,UAAA,gBAAAO,EAACG,GAAA,EAAU,WAAU,yBAAA,CAAyB;AAAA,cAAA;AAAA,YAAA;AAAA,YAGhD,gBAAAH;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAKN;AAAA,gBACL,KAAAb;AAAA,gBACA,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ,EAAA,CACF,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
package/dist/index33.js CHANGED
@@ -1,51 +1,63 @@
1
- import { jsxs as l, jsx as s } from "react/jsx-runtime";
2
- import { forwardRef as m } from "react";
3
- import { cn as d } from "./index3.js";
4
- const u = m(
5
- ({ className: i, label: t, error: e, helperText: o, id: a, ...n }, c) => {
6
- const r = a || (t == null ? void 0 : t.toLowerCase().replace(/\s+/g, "-"));
7
- return /* @__PURE__ */ l("div", { className: "w-full", children: [
8
- t && /* @__PURE__ */ s(
9
- "label",
10
- {
11
- htmlFor: r,
12
- className: "block text-sm font-medium text-slate-700 mb-1.5",
13
- children: t
14
- }
1
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
2
+ import { cn as i } from "./index3.js";
3
+ import { PlusIcon as m } from "@heroicons/react/24/outline";
4
+ const d = {
5
+ 2: "grid-cols-2",
6
+ 3: "grid-cols-3",
7
+ 4: "grid-cols-4",
8
+ 5: "grid-cols-5",
9
+ 6: "grid-cols-6"
10
+ }, p = ({ item: a, onClick: n }) => {
11
+ const { name: r, image: l, url: t, isTemplate: e } = a, o = /* @__PURE__ */ s(
12
+ "div",
13
+ {
14
+ className: i(
15
+ "aspect-video rounded overflow-hidden mb-1.5 cursor-pointer",
16
+ "bg-cover bg-center bg-no-repeat",
17
+ "flex items-center justify-center",
18
+ e ? "bg-primary-50" : "bg-slate-200"
15
19
  ),
16
- /* @__PURE__ */ s(
17
- "input",
18
- {
19
- ref: c,
20
- id: r,
21
- className: d(
22
- "w-full px-4 py-2.5 text-base",
23
- "bg-white border rounded-lg",
24
- "transition-colors duration-200",
25
- "placeholder:text-slate-400",
26
- "focus:outline-none focus:ring-2 focus:ring-offset-0",
27
- e ? "border-red-500 focus:border-red-500 focus:ring-red-500" : "border-slate-300 focus:border-primary-500 focus:ring-primary-500",
28
- "disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed",
29
- i
30
- ),
31
- ...n
32
- }
33
- ),
34
- (e || o) && /* @__PURE__ */ s(
35
- "p",
36
- {
37
- className: d(
38
- "mt-1.5 text-sm",
39
- e ? "text-red-600" : "text-slate-500"
40
- ),
41
- children: e || o
42
- }
43
- )
44
- ] });
20
+ style: l && !e ? { backgroundImage: `url(${l})` } : void 0,
21
+ onClick: n,
22
+ children: e && /* @__PURE__ */ c("div", { className: "flex flex-col items-center gap-2", children: [
23
+ /* @__PURE__ */ s(m, { className: "w-8 h-8 text-primary-500" }),
24
+ /* @__PURE__ */ s("span", { className: "text-sm font-semibold text-slate-900", children: r })
25
+ ] })
26
+ }
27
+ );
28
+ return t && !e ? /* @__PURE__ */ s("li", { className: "flex flex-col", children: /* @__PURE__ */ c("a", { href: t, className: "no-underline", children: [
29
+ o,
30
+ /* @__PURE__ */ s("span", { className: "text-sm font-semibold text-slate-900 truncate", children: r })
31
+ ] }) }) : /* @__PURE__ */ c("li", { className: "flex flex-col", children: [
32
+ o,
33
+ !e && /* @__PURE__ */ s("span", { className: "text-sm font-semibold text-slate-900 truncate", children: r })
34
+ ] });
35
+ }, u = ({
36
+ items: a,
37
+ columns: n = 4,
38
+ gap: r = 36,
39
+ onItemClick: l,
40
+ className: t
41
+ }) => /* @__PURE__ */ s(
42
+ "ul",
43
+ {
44
+ className: i(
45
+ "list-none m-0 p-0 grid",
46
+ d[n],
47
+ t
48
+ ),
49
+ style: { gap: `14px ${r}px` },
50
+ children: a.map((e) => /* @__PURE__ */ s(
51
+ p,
52
+ {
53
+ item: e,
54
+ onClick: () => l == null ? void 0 : l(e)
55
+ },
56
+ e.id || e.name
57
+ ))
45
58
  }
46
59
  );
47
- u.displayName = "Input";
48
60
  export {
49
- u as Input
61
+ u as ImageGrid
50
62
  };
51
63
  //# sourceMappingURL=index33.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index33.js","sources":["../src/components/Input/Input.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string\n error?: string\n helperText?: string\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, label, error, helperText, id, ...props }, ref) => {\n const inputId = id || label?.toLowerCase().replace(/\\s+/g, '-')\n\n return (\n <div className=\"w-full\">\n {label && (\n <label\n htmlFor={inputId}\n className=\"block text-sm font-medium text-slate-700 mb-1.5\"\n >\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className={cn(\n 'w-full px-4 py-2.5 text-base',\n 'bg-white border rounded-lg',\n 'transition-colors duration-200',\n 'placeholder:text-slate-400',\n 'focus:outline-none focus:ring-2 focus:ring-offset-0',\n error\n ? 'border-red-500 focus:border-red-500 focus:ring-red-500'\n : 'border-slate-300 focus:border-primary-500 focus:ring-primary-500',\n 'disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed',\n className\n )}\n {...props}\n />\n {(error || helperText) && (\n <p\n className={cn(\n 'mt-1.5 text-sm',\n error ? 'text-red-600' : 'text-slate-500'\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\n"],"names":["Input","forwardRef","className","label","error","helperText","id","props","ref","inputId","jsxs","jsx","cn"],"mappings":";;;AASO,MAAMA,IAAQC;AAAA,EACnB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,OAAAC,GAAO,YAAAC,GAAY,IAAAC,GAAI,GAAGC,EAAA,GAASC,MAAQ;AAC9D,UAAMC,IAAUH,MAAMH,KAAA,gBAAAA,EAAO,cAAc,QAAQ,QAAQ;AAE3D,WACE,gBAAAO,EAAC,OAAA,EAAI,WAAU,UACZ,UAAA;AAAA,MAAAP,KACC,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASF;AAAA,UACT,WAAU;AAAA,UAET,UAAAN;AAAA,QAAA;AAAA,MAAA;AAAA,MAGL,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAH;AAAA,UACA,IAAIC;AAAA,UACJ,WAAWG;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACAR,IACI,2DACA;AAAA,YACJ;AAAA,YACAF;AAAA,UAAA;AAAA,UAED,GAAGK;AAAA,QAAA;AAAA,MAAA;AAAA,OAEJH,KAASC,MACT,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWC;AAAA,YACT;AAAA,YACAR,IAAQ,iBAAiB;AAAA,UAAA;AAAA,UAG1B,UAAAA,KAASC;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ,GAEJ;AAAA,EAEJ;AACF;AAEAL,EAAM,cAAc;"}
1
+ {"version":3,"file":"index33.js","sources":["../src/components/ImageGrid/ImageGrid.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport { PlusIcon } from '@heroicons/react/24/outline'\n\nexport interface ImageGridItem {\n id?: string\n name: string\n image?: string\n url?: string\n isTemplate?: boolean\n}\n\nexport interface ImageGridProps {\n items: ImageGridItem[]\n columns?: 2 | 3 | 4 | 5 | 6\n gap?: number\n onItemClick?: (item: ImageGridItem) => void\n className?: string\n}\n\nconst columnStyles = {\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n}\n\nexport interface ImageGridItemProps {\n item: ImageGridItem\n onClick?: () => void\n}\n\nconst ImageGridItemComponent = ({ item, onClick }: ImageGridItemProps) => {\n const { name, image, url, isTemplate } = item\n\n const imageContent = (\n <div\n className={cn(\n 'aspect-video rounded overflow-hidden mb-1.5 cursor-pointer',\n 'bg-cover bg-center bg-no-repeat',\n 'flex items-center justify-center',\n isTemplate ? 'bg-primary-50' : 'bg-slate-200'\n )}\n style={image && !isTemplate ? { backgroundImage: `url(${image})` } : undefined}\n onClick={onClick}\n >\n {isTemplate && (\n <div className=\"flex flex-col items-center gap-2\">\n <PlusIcon className=\"w-8 h-8 text-primary-500\" />\n <span className=\"text-sm font-semibold text-slate-900\">{name}</span>\n </div>\n )}\n </div>\n )\n\n if (url && !isTemplate) {\n return (\n <li className=\"flex flex-col\">\n <a href={url} className=\"no-underline\">\n {imageContent}\n <span className=\"text-sm font-semibold text-slate-900 truncate\">\n {name}\n </span>\n </a>\n </li>\n )\n }\n\n return (\n <li className=\"flex flex-col\">\n {imageContent}\n {!isTemplate && (\n <span className=\"text-sm font-semibold text-slate-900 truncate\">\n {name}\n </span>\n )}\n </li>\n )\n}\n\nexport const ImageGrid = ({\n items,\n columns = 4,\n gap = 36,\n onItemClick,\n className,\n}: ImageGridProps) => {\n return (\n <ul\n className={cn(\n 'list-none m-0 p-0 grid',\n columnStyles[columns],\n className\n )}\n style={{ gap: `14px ${gap}px` }}\n >\n {items.map((item) => (\n <ImageGridItemComponent\n key={item.id || item.name}\n item={item}\n onClick={() => onItemClick?.(item)}\n />\n ))}\n </ul>\n )\n}\n"],"names":["columnStyles","ImageGridItemComponent","item","onClick","name","image","url","isTemplate","imageContent","jsx","cn","jsxs","PlusIcon","ImageGrid","items","columns","gap","onItemClick","className"],"mappings":";;;AAmBA,MAAMA,IAAe;AAAA,EACnB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL,GAOMC,IAAyB,CAAC,EAAE,MAAAC,GAAM,SAAAC,QAAkC;AACxE,QAAM,EAAE,MAAAC,GAAM,OAAAC,GAAO,KAAAC,GAAK,YAAAC,MAAeL,GAEnCM,IACJ,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACAH,IAAa,kBAAkB;AAAA,MAAA;AAAA,MAEjC,OAAOF,KAAS,CAACE,IAAa,EAAE,iBAAiB,OAAOF,CAAK,IAAA,IAAQ;AAAA,MACrE,SAAAF;AAAA,MAEC,UAAAI,KACC,gBAAAI,EAAC,OAAA,EAAI,WAAU,oCACb,UAAA;AAAA,QAAA,gBAAAF,EAACG,GAAA,EAAS,WAAU,2BAAA,CAA2B;AAAA,QAC/C,gBAAAH,EAAC,QAAA,EAAK,WAAU,wCAAwC,UAAAL,EAAA,CAAK;AAAA,MAAA,EAAA,CAC/D;AAAA,IAAA;AAAA,EAAA;AAKN,SAAIE,KAAO,CAACC,IAER,gBAAAE,EAAC,QAAG,WAAU,iBACZ,4BAAC,KAAA,EAAE,MAAMH,GAAK,WAAU,gBACrB,UAAA;AAAA,IAAAE;AAAA,IACD,gBAAAC,EAAC,QAAA,EAAK,WAAU,iDACb,UAAAL,EAAA,CACH;AAAA,EAAA,EAAA,CACF,EAAA,CACF,IAKF,gBAAAO,EAAC,MAAA,EAAG,WAAU,iBACX,UAAA;AAAA,IAAAH;AAAA,IACA,CAACD,KACA,gBAAAE,EAAC,QAAA,EAAK,WAAU,iDACb,UAAAL,EAAA,CACH;AAAA,EAAA,GAEJ;AAEJ,GAEaS,IAAY,CAAC;AAAA,EACxB,OAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,KAAAC,IAAM;AAAA,EACN,aAAAC;AAAA,EACA,WAAAC;AACF,MAEI,gBAAAT;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAV,EAAae,CAAO;AAAA,MACpBG;AAAA,IAAA;AAAA,IAEF,OAAO,EAAE,KAAK,QAAQF,CAAG,KAAA;AAAA,IAExB,UAAAF,EAAM,IAAI,CAACZ,MACV,gBAAAO;AAAA,MAACR;AAAA,MAAA;AAAA,QAEC,MAAAC;AAAA,QACA,SAAS,MAAMe,KAAA,gBAAAA,EAAcf;AAAA,MAAI;AAAA,MAF5BA,EAAK,MAAMA,EAAK;AAAA,IAAA,CAIxB;AAAA,EAAA;AAAA;"}
package/dist/index34.js CHANGED
@@ -1,55 +1,48 @@
1
- import { jsx as e, jsxs as h, Fragment as f } from "react/jsx-runtime";
2
- import { cn as n } from "./index3.js";
3
- const v = {
4
- default: "text-slate-700 hover:text-slate-900",
5
- primary: "text-primary-500 hover:text-primary-600",
6
- muted: "text-slate-500 hover:text-slate-600"
7
- }, b = ({
8
- label: i,
9
- href: r,
10
- onClick: o,
11
- leftIcon: l,
12
- rightIcon: c,
13
- variant: m = "default",
14
- underline: p = !0,
15
- disabled: t = !1,
16
- target: u,
17
- rel: x,
18
- className: d
1
+ import { jsxs as e, jsx as t, Fragment as o } from "react/jsx-runtime";
2
+ import { cn as r } from "./index3.js";
3
+ const h = ({
4
+ image: i,
5
+ progress: a,
6
+ url: l,
7
+ className: s
19
8
  }) => {
20
- const s = n(
21
- "inline-flex items-center gap-2 transition-colors",
22
- v[m],
23
- p && "hover:underline",
24
- t && "opacity-50 cursor-not-allowed pointer-events-none",
25
- d
26
- ), a = /* @__PURE__ */ h(f, { children: [
27
- l,
28
- /* @__PURE__ */ e("span", { children: i }),
29
- c
30
- ] });
31
- return r && !t ? /* @__PURE__ */ e(
32
- "a",
9
+ const n = l || i, d = a >= 100 || !!l;
10
+ return /* @__PURE__ */ e(
11
+ "div",
33
12
  {
34
- href: r,
35
- target: u,
36
- rel: x,
37
- className: n(s, "no-underline"),
38
- onClick: o,
39
- children: a
40
- }
41
- ) : /* @__PURE__ */ e(
42
- "button",
43
- {
44
- type: "button",
45
- onClick: o,
46
- disabled: t,
47
- className: n(s, "bg-transparent border-none cursor-pointer p-0"),
48
- children: a
13
+ className: r(
14
+ "relative aspect-square rounded-lg overflow-hidden bg-slate-200",
15
+ s
16
+ ),
17
+ children: [
18
+ /* @__PURE__ */ t(
19
+ "div",
20
+ {
21
+ className: "absolute inset-0 bg-cover bg-center",
22
+ style: { backgroundImage: `url(${n})` }
23
+ }
24
+ ),
25
+ !d && /* @__PURE__ */ e(o, { children: [
26
+ /* @__PURE__ */ t("div", { className: "absolute inset-0 bg-black/50" }),
27
+ /* @__PURE__ */ e("div", { className: "absolute inset-x-4 top-1/2 -translate-y-1/2", children: [
28
+ /* @__PURE__ */ t("div", { className: "h-1.5 bg-white/30 rounded-full overflow-hidden", children: /* @__PURE__ */ t(
29
+ "div",
30
+ {
31
+ className: "h-full bg-white rounded-full transition-all duration-300",
32
+ style: { width: `${Math.min(a, 100)}%` }
33
+ }
34
+ ) }),
35
+ /* @__PURE__ */ e("div", { className: "text-center text-white text-xs mt-2 font-medium", children: [
36
+ Math.round(a),
37
+ "%"
38
+ ] })
39
+ ] })
40
+ ] })
41
+ ]
49
42
  }
50
43
  );
51
44
  };
52
45
  export {
53
- b as LinkButton
46
+ h as ImageUploading
54
47
  };
55
48
  //# sourceMappingURL=index34.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index34.js","sources":["../src/components/LinkButton/LinkButton.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface LinkButtonProps {\n label: string\n href?: string\n onClick?: () => void\n leftIcon?: ReactNode\n rightIcon?: ReactNode\n variant?: 'default' | 'primary' | 'muted'\n underline?: boolean\n disabled?: boolean\n target?: string\n rel?: string\n className?: string\n}\n\nconst variantStyles = {\n default: 'text-slate-700 hover:text-slate-900',\n primary: 'text-primary-500 hover:text-primary-600',\n muted: 'text-slate-500 hover:text-slate-600',\n}\n\nexport const LinkButton = ({\n label,\n href,\n onClick,\n leftIcon,\n rightIcon,\n variant = 'default',\n underline = true,\n disabled = false,\n target,\n rel,\n className,\n}: LinkButtonProps) => {\n const commonClasses = cn(\n 'inline-flex items-center gap-2 transition-colors',\n variantStyles[variant],\n underline && 'hover:underline',\n disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\n className\n )\n\n const content = (\n <>\n {leftIcon}\n <span>{label}</span>\n {rightIcon}\n </>\n )\n\n if (href && !disabled) {\n return (\n <a\n href={href}\n target={target}\n rel={rel}\n className={cn(commonClasses, 'no-underline')}\n onClick={onClick}\n >\n {content}\n </a>\n )\n }\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n className={cn(commonClasses, 'bg-transparent border-none cursor-pointer p-0')}\n >\n {content}\n </button>\n )\n}\n"],"names":["variantStyles","LinkButton","label","href","onClick","leftIcon","rightIcon","variant","underline","disabled","target","rel","className","commonClasses","cn","content","jsxs","Fragment","jsx"],"mappings":";;AAiBA,MAAMA,IAAgB;AAAA,EACpB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT,GAEaC,IAAa,CAAC;AAAA,EACzB,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,QAAAC;AAAA,EACA,KAAAC;AAAA,EACA,WAAAC;AACF,MAAuB;AACrB,QAAMC,IAAgBC;AAAA,IACpB;AAAA,IACAd,EAAcO,CAAO;AAAA,IACrBC,KAAa;AAAA,IACbC,KAAY;AAAA,IACZG;AAAA,EAAA,GAGIG,IACJ,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAZ;AAAA,IACD,gBAAAa,EAAC,UAAM,UAAAhB,EAAA,CAAM;AAAA,IACZI;AAAA,EAAA,GACH;AAGF,SAAIH,KAAQ,CAACM,IAET,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAf;AAAA,MACA,QAAAO;AAAA,MACA,KAAAC;AAAA,MACA,WAAWG,EAAGD,GAAe,cAAc;AAAA,MAC3C,SAAAT;AAAA,MAEC,UAAAW;AAAA,IAAA;AAAA,EAAA,IAML,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAAd;AAAA,MACA,UAAAK;AAAA,MACA,WAAWK,EAAGD,GAAe,+CAA+C;AAAA,MAE3E,UAAAE;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"index34.js","sources":["../src/components/ImageUploading/ImageUploading.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface ImageUploadingProps {\n image: string\n progress: number\n url?: string\n className?: string\n}\n\nexport const ImageUploading = ({\n image,\n progress,\n url,\n className,\n}: ImageUploadingProps) => {\n const displayImage = url || image\n const isComplete = progress >= 100 || !!url\n\n return (\n <div\n className={cn(\n 'relative aspect-square rounded-lg overflow-hidden bg-slate-200',\n className\n )}\n >\n {/* Background Image */}\n <div\n className=\"absolute inset-0 bg-cover bg-center\"\n style={{ backgroundImage: `url(${displayImage})` }}\n />\n\n {/* Loading Overlay */}\n {!isComplete && (\n <>\n <div className=\"absolute inset-0 bg-black/50\" />\n\n {/* Progress Bar */}\n <div className=\"absolute inset-x-4 top-1/2 -translate-y-1/2\">\n <div className=\"h-1.5 bg-white/30 rounded-full overflow-hidden\">\n <div\n className=\"h-full bg-white rounded-full transition-all duration-300\"\n style={{ width: `${Math.min(progress, 100)}%` }}\n />\n </div>\n <div className=\"text-center text-white text-xs mt-2 font-medium\">\n {Math.round(progress)}%\n </div>\n </div>\n </>\n )}\n </div>\n )\n}\n"],"names":["ImageUploading","image","progress","url","className","displayImage","isComplete","jsxs","cn","jsx","Fragment"],"mappings":";;AASO,MAAMA,IAAiB,CAAC;AAAA,EAC7B,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,KAAAC;AAAA,EACA,WAAAC;AACF,MAA2B;AACzB,QAAMC,IAAeF,KAAOF,GACtBK,IAAaJ,KAAY,OAAO,CAAC,CAACC;AAExC,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAIF,UAAA;AAAA,QAAA,gBAAAK;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,EAAE,iBAAiB,OAAOJ,CAAY,IAAA;AAAA,UAAI;AAAA,QAAA;AAAA,QAIlD,CAACC,KACA,gBAAAC,EAAAG,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,+BAAA,CAA+B;AAAA,UAG9C,gBAAAF,EAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,YAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO,EAAE,OAAO,GAAG,KAAK,IAAIP,GAAU,GAAG,CAAC,IAAA;AAAA,cAAI;AAAA,YAAA,GAElD;AAAA,YACA,gBAAAK,EAAC,OAAA,EAAI,WAAU,mDACZ,UAAA;AAAA,cAAA,KAAK,MAAML,CAAQ;AAAA,cAAE;AAAA,YAAA,EAAA,CACxB;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
package/dist/index35.js CHANGED
@@ -1,31 +1,51 @@
1
- import { jsx as r } from "react/jsx-runtime";
2
- import { cn as a } from "./index3.js";
3
- const n = {
4
- sm: "h-4 w-4 border-2",
5
- md: "h-6 w-6 border-2",
6
- lg: "h-8 w-8 border-3"
7
- }, d = {
8
- primary: "border-primary-500 border-t-transparent",
9
- white: "border-white border-t-transparent",
10
- current: "border-current border-t-transparent"
11
- };
12
- function l({ size: e = "md", color: o = "primary", className: t }) {
13
- return /* @__PURE__ */ r(
14
- "div",
15
- {
16
- className: a(
17
- "animate-spin rounded-full",
18
- n[e],
19
- d[o],
20
- t
1
+ import { jsxs as l, jsx as s } from "react/jsx-runtime";
2
+ import { forwardRef as m } from "react";
3
+ import { cn as d } from "./index3.js";
4
+ const u = m(
5
+ ({ className: i, label: t, error: e, helperText: o, id: a, ...n }, c) => {
6
+ const r = a || (t == null ? void 0 : t.toLowerCase().replace(/\s+/g, "-"));
7
+ return /* @__PURE__ */ l("div", { className: "w-full", children: [
8
+ t && /* @__PURE__ */ s(
9
+ "label",
10
+ {
11
+ htmlFor: r,
12
+ className: "block text-sm font-medium text-slate-700 mb-1.5",
13
+ children: t
14
+ }
15
+ ),
16
+ /* @__PURE__ */ s(
17
+ "input",
18
+ {
19
+ ref: c,
20
+ id: r,
21
+ className: d(
22
+ "w-full px-4 py-2.5 text-base",
23
+ "bg-white border rounded-lg",
24
+ "transition-colors duration-200",
25
+ "placeholder:text-slate-400",
26
+ "focus:outline-none focus:ring-2 focus:ring-offset-0",
27
+ e ? "border-red-500 focus:border-red-500 focus:ring-red-500" : "border-slate-300 focus:border-primary-500 focus:ring-primary-500",
28
+ "disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed",
29
+ i
30
+ ),
31
+ ...n
32
+ }
21
33
  ),
22
- role: "status",
23
- "aria-label": "Loading",
24
- children: /* @__PURE__ */ r("span", { className: "sr-only", children: "Loading..." })
25
- }
26
- );
27
- }
34
+ (e || o) && /* @__PURE__ */ s(
35
+ "p",
36
+ {
37
+ className: d(
38
+ "mt-1.5 text-sm",
39
+ e ? "text-red-600" : "text-slate-500"
40
+ ),
41
+ children: e || o
42
+ }
43
+ )
44
+ ] });
45
+ }
46
+ );
47
+ u.displayName = "Input";
28
48
  export {
29
- l as Loader
49
+ u as Input
30
50
  };
31
51
  //# sourceMappingURL=index35.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index35.js","sources":["../src/components/Loader/Loader.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface LoaderProps {\n size?: 'sm' | 'md' | 'lg'\n color?: 'primary' | 'white' | 'current'\n className?: string\n}\n\nconst sizeStyles = {\n sm: 'h-4 w-4 border-2',\n md: 'h-6 w-6 border-2',\n lg: 'h-8 w-8 border-3',\n}\n\nconst colorStyles = {\n primary: 'border-primary-500 border-t-transparent',\n white: 'border-white border-t-transparent',\n current: 'border-current border-t-transparent',\n}\n\nexport function Loader({ size = 'md', color = 'primary', className }: LoaderProps) {\n return (\n <div\n className={cn(\n 'animate-spin rounded-full',\n sizeStyles[size],\n colorStyles[color],\n className\n )}\n role=\"status\"\n aria-label=\"Loading\"\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n )\n}\n"],"names":["sizeStyles","colorStyles","Loader","size","color","className","jsx","cn"],"mappings":";;AAQA,MAAMA,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAAc;AAAA,EAClB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AACX;AAEO,SAASC,EAAO,EAAE,MAAAC,IAAO,MAAM,OAAAC,IAAQ,WAAW,WAAAC,KAA0B;AACjF,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAP,EAAWG,CAAI;AAAA,QACfF,EAAYG,CAAK;AAAA,QACjBC;AAAA,MAAA;AAAA,MAEF,MAAK;AAAA,MACL,cAAW;AAAA,MAEX,UAAA,gBAAAC,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,aAAA,CAAU;AAAA,IAAA;AAAA,EAAA;AAG1C;"}
1
+ {"version":3,"file":"index35.js","sources":["../src/components/Input/Input.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string\n error?: string\n helperText?: string\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, label, error, helperText, id, ...props }, ref) => {\n const inputId = id || label?.toLowerCase().replace(/\\s+/g, '-')\n\n return (\n <div className=\"w-full\">\n {label && (\n <label\n htmlFor={inputId}\n className=\"block text-sm font-medium text-slate-700 mb-1.5\"\n >\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className={cn(\n 'w-full px-4 py-2.5 text-base',\n 'bg-white border rounded-lg',\n 'transition-colors duration-200',\n 'placeholder:text-slate-400',\n 'focus:outline-none focus:ring-2 focus:ring-offset-0',\n error\n ? 'border-red-500 focus:border-red-500 focus:ring-red-500'\n : 'border-slate-300 focus:border-primary-500 focus:ring-primary-500',\n 'disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed',\n className\n )}\n {...props}\n />\n {(error || helperText) && (\n <p\n className={cn(\n 'mt-1.5 text-sm',\n error ? 'text-red-600' : 'text-slate-500'\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\n"],"names":["Input","forwardRef","className","label","error","helperText","id","props","ref","inputId","jsxs","jsx","cn"],"mappings":";;;AASO,MAAMA,IAAQC;AAAA,EACnB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,OAAAC,GAAO,YAAAC,GAAY,IAAAC,GAAI,GAAGC,EAAA,GAASC,MAAQ;AAC9D,UAAMC,IAAUH,MAAMH,KAAA,gBAAAA,EAAO,cAAc,QAAQ,QAAQ;AAE3D,WACE,gBAAAO,EAAC,OAAA,EAAI,WAAU,UACZ,UAAA;AAAA,MAAAP,KACC,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASF;AAAA,UACT,WAAU;AAAA,UAET,UAAAN;AAAA,QAAA;AAAA,MAAA;AAAA,MAGL,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAH;AAAA,UACA,IAAIC;AAAA,UACJ,WAAWG;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACAR,IACI,2DACA;AAAA,YACJ;AAAA,YACAF;AAAA,UAAA;AAAA,UAED,GAAGK;AAAA,QAAA;AAAA,MAAA;AAAA,OAEJH,KAASC,MACT,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWC;AAAA,YACT;AAAA,YACAR,IAAQ,iBAAiB;AAAA,UAAA;AAAA,UAG1B,UAAAA,KAASC;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ,GAEJ;AAAA,EAEJ;AACF;AAEAL,EAAM,cAAc;"}