@mdigital_ui/ui 0.2.4 → 0.2.6

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 (228) hide show
  1. package/dist/accordion/index.js +3 -3
  2. package/dist/badge/index.js +3 -3
  3. package/dist/breadcrumbs/index.js +5 -5
  4. package/dist/button/index.js +4 -4
  5. package/dist/button-group/index.js +2 -2
  6. package/dist/card/index.js +2 -2
  7. package/dist/carousel/index.js +2 -1
  8. package/dist/cascader/index.js +2 -2
  9. package/dist/chart/index.js +2 -2
  10. package/dist/checkbox/index.js +3 -3
  11. package/dist/checkbox-group/index.js +2 -2
  12. package/dist/chunk-22FIGRGO.js +312 -0
  13. package/dist/chunk-22FIGRGO.js.map +1 -0
  14. package/dist/{chunk-GEWR5ROK.js → chunk-23BPDLT4.js} +9 -16
  15. package/dist/chunk-23BPDLT4.js.map +1 -0
  16. package/dist/{chunk-YNNAOXU5.js → chunk-2OGZENFC.js} +3 -4
  17. package/dist/chunk-2OGZENFC.js.map +1 -0
  18. package/dist/{chunk-SOV4PE3P.js → chunk-35K7N4JT.js} +11 -4
  19. package/dist/chunk-35K7N4JT.js.map +1 -0
  20. package/dist/chunk-3QKPSJTV.js +120 -0
  21. package/dist/chunk-3QKPSJTV.js.map +1 -0
  22. package/dist/chunk-3WVJE5MF.js +735 -0
  23. package/dist/chunk-3WVJE5MF.js.map +1 -0
  24. package/dist/chunk-555KXZRK.js +73 -0
  25. package/dist/chunk-555KXZRK.js.map +1 -0
  26. package/dist/{chunk-FYHQDFKE.js → chunk-6IPISGTP.js} +31 -9
  27. package/dist/chunk-6IPISGTP.js.map +1 -0
  28. package/dist/chunk-6MYKJE6A.js +312 -0
  29. package/dist/chunk-6MYKJE6A.js.map +1 -0
  30. package/dist/{chunk-6V5I5HJ2.js → chunk-6PFBSVLK.js} +4 -4
  31. package/dist/{chunk-6V5I5HJ2.js.map → chunk-6PFBSVLK.js.map} +1 -1
  32. package/dist/{chunk-267WNY3E.js → chunk-77YTCM7G.js} +53 -60
  33. package/dist/chunk-77YTCM7G.js.map +1 -0
  34. package/dist/{chunk-XMAH5PDW.js → chunk-7BUNJYZO.js} +11 -10
  35. package/dist/chunk-7BUNJYZO.js.map +1 -0
  36. package/dist/chunk-7ODPSHIQ.js +78 -0
  37. package/dist/chunk-7ODPSHIQ.js.map +1 -0
  38. package/dist/{chunk-ZNJ7M5QK.js → chunk-7TN4PGYF.js} +29 -22
  39. package/dist/chunk-7TN4PGYF.js.map +1 -0
  40. package/dist/{chunk-RPAQAZTI.js → chunk-7YPX6NJK.js} +3 -3
  41. package/dist/{chunk-RPAQAZTI.js.map → chunk-7YPX6NJK.js.map} +1 -1
  42. package/dist/{chunk-LEKLQR4I.js → chunk-ARK3EROZ.js} +55 -38
  43. package/dist/chunk-ARK3EROZ.js.map +1 -0
  44. package/dist/chunk-AVPPV5OM.js +203 -0
  45. package/dist/chunk-AVPPV5OM.js.map +1 -0
  46. package/dist/{chunk-NNSS366W.js → chunk-BYWYC7RC.js} +38 -5
  47. package/dist/chunk-BYWYC7RC.js.map +1 -0
  48. package/dist/{chunk-R225A5II.js → chunk-C2MZL644.js} +3 -3
  49. package/dist/{chunk-R225A5II.js.map → chunk-C2MZL644.js.map} +1 -1
  50. package/dist/{chunk-7PKVBUGL.js → chunk-CPPFXCNB.js} +3 -3
  51. package/dist/{chunk-7PKVBUGL.js.map → chunk-CPPFXCNB.js.map} +1 -1
  52. package/dist/chunk-DP6AWUH5.js +93 -0
  53. package/dist/chunk-DP6AWUH5.js.map +1 -0
  54. package/dist/{chunk-D3JWPGCA.js → chunk-DV5J5NLI.js} +6 -55
  55. package/dist/chunk-DV5J5NLI.js.map +1 -0
  56. package/dist/chunk-EFMKUCGX.js +104 -0
  57. package/dist/chunk-EFMKUCGX.js.map +1 -0
  58. package/dist/chunk-GFQXGLFD.js +256 -0
  59. package/dist/chunk-GFQXGLFD.js.map +1 -0
  60. package/dist/{chunk-SK5ECBBK.js → chunk-GGREAJO5.js} +8 -4
  61. package/dist/chunk-GGREAJO5.js.map +1 -0
  62. package/dist/{chunk-S5XJXU52.js → chunk-GH3CNX5N.js} +3 -3
  63. package/dist/{chunk-S5XJXU52.js.map → chunk-GH3CNX5N.js.map} +1 -1
  64. package/dist/{chunk-FCMVKFVV.js → chunk-HBEJ4S2Y.js} +11 -11
  65. package/dist/chunk-HBEJ4S2Y.js.map +1 -0
  66. package/dist/{chunk-SAVE5ACL.js → chunk-HWSLJGT7.js} +3 -3
  67. package/dist/{chunk-SAVE5ACL.js.map → chunk-HWSLJGT7.js.map} +1 -1
  68. package/dist/{chunk-BNILRB4T.js → chunk-IHKPZOE5.js} +10 -7
  69. package/dist/chunk-IHKPZOE5.js.map +1 -0
  70. package/dist/{chunk-I5ANSIDK.js → chunk-INH7KYCK.js} +17 -17
  71. package/dist/chunk-INH7KYCK.js.map +1 -0
  72. package/dist/{chunk-Y5A26EGR.js → chunk-IRNJZ754.js} +9 -9
  73. package/dist/{chunk-Y5A26EGR.js.map → chunk-IRNJZ754.js.map} +1 -1
  74. package/dist/{chunk-MLDX3Z67.js → chunk-IUUEYOMN.js} +3 -3
  75. package/dist/{chunk-MLDX3Z67.js.map → chunk-IUUEYOMN.js.map} +1 -1
  76. package/dist/chunk-JFGLDCAK.js +225 -0
  77. package/dist/chunk-JFGLDCAK.js.map +1 -0
  78. package/dist/{chunk-C7SXY3ZV.js → chunk-JGQOEAWL.js} +3 -3
  79. package/dist/{chunk-C7SXY3ZV.js.map → chunk-JGQOEAWL.js.map} +1 -1
  80. package/dist/{chunk-75XESYGN.js → chunk-L6EVOPWH.js} +5 -13
  81. package/dist/chunk-L6EVOPWH.js.map +1 -0
  82. package/dist/{chunk-XMKNYG7I.js → chunk-LSQLUYTD.js} +35 -24
  83. package/dist/chunk-LSQLUYTD.js.map +1 -0
  84. package/dist/{chunk-QPJL66S7.js → chunk-MDY3HCRC.js} +80 -41
  85. package/dist/chunk-MDY3HCRC.js.map +1 -0
  86. package/dist/chunk-MLNIKNLI.js +150 -0
  87. package/dist/chunk-MLNIKNLI.js.map +1 -0
  88. package/dist/{chunk-J3G5WWGR.js → chunk-NQB4V5P7.js} +6 -14
  89. package/dist/chunk-NQB4V5P7.js.map +1 -0
  90. package/dist/chunk-NZA526GC.js +106 -0
  91. package/dist/chunk-NZA526GC.js.map +1 -0
  92. package/dist/{chunk-FGWSUPVW.js → chunk-O2VJ6KP4.js} +8 -3
  93. package/dist/chunk-O2VJ6KP4.js.map +1 -0
  94. package/dist/{chunk-OALOWWO7.js → chunk-PQZB43VJ.js} +32 -36
  95. package/dist/chunk-PQZB43VJ.js.map +1 -0
  96. package/dist/{chunk-UAMFKX6L.js → chunk-QVCGNOBE.js} +34 -20
  97. package/dist/chunk-QVCGNOBE.js.map +1 -0
  98. package/dist/{chunk-ASW7TEAN.js → chunk-R2FZO7AM.js} +14 -14
  99. package/dist/chunk-R2FZO7AM.js.map +1 -0
  100. package/dist/{chunk-HUVXKOJC.js → chunk-SGMIDNPI.js} +13 -9
  101. package/dist/chunk-SGMIDNPI.js.map +1 -0
  102. package/dist/{chunk-DOKTHDG3.js → chunk-SMVVCZNM.js} +3 -3
  103. package/dist/{chunk-DOKTHDG3.js.map → chunk-SMVVCZNM.js.map} +1 -1
  104. package/dist/{chunk-FPOXTCYV.js → chunk-SOIF4SHB.js} +8 -8
  105. package/dist/chunk-SOIF4SHB.js.map +1 -0
  106. package/dist/{chunk-RMGIO27V.js → chunk-SYDNDYZJ.js} +20 -4
  107. package/dist/chunk-SYDNDYZJ.js.map +1 -0
  108. package/dist/chunk-TG2AECIN.js +446 -0
  109. package/dist/chunk-TG2AECIN.js.map +1 -0
  110. package/dist/{chunk-JLTDJ3VZ.js → chunk-TIMRHEKH.js} +4 -4
  111. package/dist/{chunk-JLTDJ3VZ.js.map → chunk-TIMRHEKH.js.map} +1 -1
  112. package/dist/chunk-TUTOU4X6.js +574 -0
  113. package/dist/chunk-TUTOU4X6.js.map +1 -0
  114. package/dist/chunk-TWZ5LXLL.js +254 -0
  115. package/dist/chunk-TWZ5LXLL.js.map +1 -0
  116. package/dist/{chunk-DPOSWW22.js → chunk-XG3KLPPS.js} +5 -3
  117. package/dist/chunk-XG3KLPPS.js.map +1 -0
  118. package/dist/{chunk-BP434VYV.js → chunk-Y2CXG3PT.js} +12 -12
  119. package/dist/chunk-Y2CXG3PT.js.map +1 -0
  120. package/dist/{chunk-ROR4E6IE.js → chunk-YII4K64U.js} +5 -5
  121. package/dist/{chunk-ROR4E6IE.js.map → chunk-YII4K64U.js.map} +1 -1
  122. package/dist/clipboard/index.js +2 -2
  123. package/dist/collapse/index.js +2 -2
  124. package/dist/command/index.js +3 -3
  125. package/dist/date-picker/index.js +4 -3
  126. package/dist/descriptions/index.js +2 -2
  127. package/dist/drawer/index.js +2 -2
  128. package/dist/dropdown/index.js +4 -3
  129. package/dist/empty/index.js +2 -2
  130. package/dist/fetching-overlay/index.js +4 -3
  131. package/dist/grid/index.js +2 -2
  132. package/dist/image/index.js +2 -2
  133. package/dist/index.d.ts +1358 -156
  134. package/dist/index.js +762 -65
  135. package/dist/index.js.map +1 -1
  136. package/dist/input/index.js +4 -3
  137. package/dist/input-group/index.js +2 -2
  138. package/dist/input-otp/index.js +2 -2
  139. package/dist/input-password/index.js +5 -4
  140. package/dist/kbd/index.js +3 -2
  141. package/dist/modal/index.js +2 -2
  142. package/dist/multi-select/index.js +4 -3
  143. package/dist/notification/index.js +3 -2
  144. package/dist/pagination/index.js +2 -2
  145. package/dist/popover/index.js +3 -2
  146. package/dist/progress/index.js +2 -2
  147. package/dist/radio/index.js +3 -2
  148. package/dist/radio-group/index.js +2 -2
  149. package/dist/rating/index.js +2 -2
  150. package/dist/ribbon/index.js +2 -2
  151. package/dist/select/index.js +5 -4
  152. package/dist/skeleton/index.js +3 -2
  153. package/dist/slider/index.js +2 -2
  154. package/dist/spinner/index.js +3 -2
  155. package/dist/stepper/index.js +2 -2
  156. package/dist/styles/base.css +2033 -1313
  157. package/dist/styles/global.css +1242 -459
  158. package/dist/switch/index.js +3 -2
  159. package/dist/table/index.js +10 -10
  160. package/dist/tabs/index.js +3 -3
  161. package/dist/textarea/index.js +2 -2
  162. package/dist/toggle/index.js +2 -2
  163. package/dist/toggle-group/index.js +2 -2
  164. package/dist/tooltip/index.js +3 -2
  165. package/dist/transfer/index.js +4 -4
  166. package/dist/tree/index.js +2 -2
  167. package/dist/tree-select/index.js +5 -4
  168. package/dist/upload/index.js +2 -2
  169. package/package.json +4 -1
  170. package/dist/chunk-267WNY3E.js.map +0 -1
  171. package/dist/chunk-2EKAF6EJ.js +0 -128
  172. package/dist/chunk-2EKAF6EJ.js.map +0 -1
  173. package/dist/chunk-3PFA3YG6.js +0 -228
  174. package/dist/chunk-3PFA3YG6.js.map +0 -1
  175. package/dist/chunk-56IXGP5C.js +0 -56
  176. package/dist/chunk-56IXGP5C.js.map +0 -1
  177. package/dist/chunk-5UEWVFF6.js +0 -212
  178. package/dist/chunk-5UEWVFF6.js.map +0 -1
  179. package/dist/chunk-75XESYGN.js.map +0 -1
  180. package/dist/chunk-ASW7TEAN.js.map +0 -1
  181. package/dist/chunk-AWPKZYHT.js +0 -152
  182. package/dist/chunk-AWPKZYHT.js.map +0 -1
  183. package/dist/chunk-BFO3ARVJ.js +0 -104
  184. package/dist/chunk-BFO3ARVJ.js.map +0 -1
  185. package/dist/chunk-BNILRB4T.js.map +0 -1
  186. package/dist/chunk-BP434VYV.js.map +0 -1
  187. package/dist/chunk-C3MX5EXL.js +0 -95
  188. package/dist/chunk-C3MX5EXL.js.map +0 -1
  189. package/dist/chunk-D3JWPGCA.js.map +0 -1
  190. package/dist/chunk-DPOSWW22.js.map +0 -1
  191. package/dist/chunk-FCMVKFVV.js.map +0 -1
  192. package/dist/chunk-FGWSUPVW.js.map +0 -1
  193. package/dist/chunk-FPOXTCYV.js.map +0 -1
  194. package/dist/chunk-FYHQDFKE.js.map +0 -1
  195. package/dist/chunk-G6TAVRTJ.js +0 -640
  196. package/dist/chunk-G6TAVRTJ.js.map +0 -1
  197. package/dist/chunk-GEWR5ROK.js.map +0 -1
  198. package/dist/chunk-HUVXKOJC.js.map +0 -1
  199. package/dist/chunk-I5ANSIDK.js.map +0 -1
  200. package/dist/chunk-J3G5WWGR.js.map +0 -1
  201. package/dist/chunk-KBCBVH7B.js +0 -51
  202. package/dist/chunk-KBCBVH7B.js.map +0 -1
  203. package/dist/chunk-KNQ7UQ2W.js +0 -143
  204. package/dist/chunk-KNQ7UQ2W.js.map +0 -1
  205. package/dist/chunk-KTAIRCOL.js +0 -100
  206. package/dist/chunk-KTAIRCOL.js.map +0 -1
  207. package/dist/chunk-LEKLQR4I.js.map +0 -1
  208. package/dist/chunk-NNSS366W.js.map +0 -1
  209. package/dist/chunk-OALOWWO7.js.map +0 -1
  210. package/dist/chunk-OOS3B7YZ.js +0 -94
  211. package/dist/chunk-OOS3B7YZ.js.map +0 -1
  212. package/dist/chunk-OQANRZPV.js +0 -197
  213. package/dist/chunk-OQANRZPV.js.map +0 -1
  214. package/dist/chunk-OW5A5IIF.js +0 -175
  215. package/dist/chunk-OW5A5IIF.js.map +0 -1
  216. package/dist/chunk-QPJL66S7.js.map +0 -1
  217. package/dist/chunk-RMGIO27V.js.map +0 -1
  218. package/dist/chunk-SK5ECBBK.js.map +0 -1
  219. package/dist/chunk-SOV4PE3P.js.map +0 -1
  220. package/dist/chunk-UAMFKX6L.js.map +0 -1
  221. package/dist/chunk-XMAH5PDW.js.map +0 -1
  222. package/dist/chunk-XMKNYG7I.js.map +0 -1
  223. package/dist/chunk-YNNAOXU5.js.map +0 -1
  224. package/dist/chunk-YZ6V6BQ7.js +0 -134
  225. package/dist/chunk-YZ6V6BQ7.js.map +0 -1
  226. package/dist/chunk-YZVSDRJD.js +0 -253
  227. package/dist/chunk-YZVSDRJD.js.map +0 -1
  228. package/dist/chunk-ZNJ7M5QK.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-YNNAOXU5.js';
1
+ import { cn } from './chunk-2OGZENFC.js';
2
2
  import React from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -51,5 +51,5 @@ RadioGroup.displayName = "RadioGroup";
51
51
  var radio_group_default = RadioGroup;
52
52
 
53
53
  export { RadioGroup, radio_group_default };
54
- //# sourceMappingURL=chunk-DOKTHDG3.js.map
55
- //# sourceMappingURL=chunk-DOKTHDG3.js.map
54
+ //# sourceMappingURL=chunk-SMVVCZNM.js.map
55
+ //# sourceMappingURL=chunk-SMVVCZNM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/radio-group/index.tsx"],"names":[],"mappings":";;;;AAKO,IAAM,aAAa,KAAA,CAAM,IAAA;AAAA,EAC9B,CAAC;AAAA,IACC,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA,GAAc,UAAA;AAAA,IACd,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,QACjC,IAAA,EAAK,YAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,KAAA,oBACC,GAAA,CAAC,SAAI,SAAA,EAAU,MAAA,EACb,8BAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA,KAAA,EACH,CAAA,EACF,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,MAAA;AAAA,gBACA,WAAA,KAAgB,aACZ,gBAAA,GACA;AAAA,eACN;AAAA,cAEC;AAAA;AAAA,WACH;AAAA,UAAA,CACE,cAAc,KAAA,qBACd,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,cAAA;AAAA,gBACA,QAAQ,YAAA,GAAe;AAAA,eACzB;AAAA,cAEC,QAAA,EAAA,KAAA,IAAS;AAAA;AAAA;AACZ;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AAGzB,IAAO,mBAAA,GAAQ","file":"chunk-DOKTHDG3.js","sourcesContent":["import React from 'react'\n\nimport { cn } from '../utils'\nimport type { RadioGroupProps } from './types'\n\nexport const RadioGroup = React.memo<RadioGroupProps>(\n ({\n label,\n helperText,\n error,\n orientation = 'vertical',\n className,\n children,\n ref,\n ...props\n }) => {\n return (\n <div\n ref={ref}\n className={cn('w-full', className)}\n role=\"radiogroup\"\n {...props}\n >\n {label && (\n <div className=\"mb-2\">\n <span className=\"text-sm font-medium text-text-secondary\">\n {label}\n </span>\n </div>\n )}\n <div\n className={cn(\n 'flex',\n orientation === 'vertical'\n ? 'flex-col gap-2'\n : 'flex-row flex-wrap gap-4',\n )}\n >\n {children}\n </div>\n {(helperText || error) && (\n <p\n className={cn(\n 'mt-2 text-xs',\n error ? 'text-error' : 'text-text-secondary',\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n },\n)\n\nRadioGroup.displayName = 'RadioGroup'\n\nexport type * from './types'\nexport default RadioGroup\n"]}
1
+ {"version":3,"sources":["../src/radio-group/index.tsx"],"names":[],"mappings":";;;;AAKO,IAAM,aAAa,KAAA,CAAM,IAAA;AAAA,EAC9B,CAAC;AAAA,IACC,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA,GAAc,UAAA;AAAA,IACd,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,QACjC,IAAA,EAAK,YAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,KAAA,oBACC,GAAA,CAAC,SAAI,SAAA,EAAU,MAAA,EACb,8BAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA,KAAA,EACH,CAAA,EACF,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,MAAA;AAAA,gBACA,WAAA,KAAgB,aACZ,gBAAA,GACA;AAAA,eACN;AAAA,cAEC;AAAA;AAAA,WACH;AAAA,UAAA,CACE,cAAc,KAAA,qBACd,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,cAAA;AAAA,gBACA,QAAQ,YAAA,GAAe;AAAA,eACzB;AAAA,cAEC,QAAA,EAAA,KAAA,IAAS;AAAA;AAAA;AACZ;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AAGzB,IAAO,mBAAA,GAAQ","file":"chunk-SMVVCZNM.js","sourcesContent":["import React from 'react'\n\nimport { cn } from '../utils'\nimport type { RadioGroupProps } from './types'\n\nexport const RadioGroup = React.memo<RadioGroupProps>(\n ({\n label,\n helperText,\n error,\n orientation = 'vertical',\n className,\n children,\n ref,\n ...props\n }) => {\n return (\n <div\n ref={ref}\n className={cn('w-full', className)}\n role=\"radiogroup\"\n {...props}\n >\n {label && (\n <div className=\"mb-2\">\n <span className=\"text-sm font-medium text-text-secondary\">\n {label}\n </span>\n </div>\n )}\n <div\n className={cn(\n 'flex',\n orientation === 'vertical'\n ? 'flex-col gap-2'\n : 'flex-row flex-wrap gap-4',\n )}\n >\n {children}\n </div>\n {(helperText || error) && (\n <p\n className={cn(\n 'mt-2 text-xs',\n error ? 'text-error' : 'text-text-secondary',\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n },\n)\n\nRadioGroup.displayName = 'RadioGroup'\n\nexport type * from './types'\nexport default RadioGroup\n"]}
@@ -1,10 +1,10 @@
1
- import { getValidationStatus, cn, statusMessageVariants } from './chunk-YNNAOXU5.js';
1
+ import { getValidationStatus, cn, statusMessageVariants } from './chunk-2OGZENFC.js';
2
2
  import { cva } from 'class-variance-authority';
3
3
  import React from 'react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
6
6
  var textareaVariants = cva(
7
- "w-full rounded-md focus:border-primary transition-colors text-text-primary placeholder:text-text-muted disabled:opacity-50 disabled:cursor-not-allowed read-only:bg-surface read-only:cursor-default outline-none",
7
+ "w-full rounded-md focus:border-primary transition-colors text-text-primary placeholder:text-text-secondary/50 disabled:opacity-50 disabled:cursor-not-allowed read-only:bg-surface read-only:cursor-default outline-none",
8
8
  {
9
9
  variants: {
10
10
  variant: {
@@ -19,10 +19,10 @@ var textareaVariants = cva(
19
19
  success: "!border-success focus:!border-success"
20
20
  },
21
21
  size: {
22
- xs: "min-h-20 p-2 text-xs",
23
- sm: "min-h-[var(--textarea-min-height)] p-[var(--textarea-padding-sm)] text-sm",
24
- md: "min-h-[var(--textarea-min-height)] p-[var(--textarea-padding-md)] text-base",
25
- lg: "min-h-[var(--textarea-min-height)] p-[var(--textarea-padding-lg)] text-lg"
22
+ xs: "min-h-(--textarea-min-height-xs) p-(--textarea-padding-xs) text-xs",
23
+ sm: "min-h-(--textarea-min-height-sm) p-(--textarea-padding-sm) text-sm",
24
+ md: "min-h-(--textarea-min-height-md) p-(--textarea-padding-md) text-base",
25
+ lg: "min-h-(--textarea-min-height-lg) p-(--textarea-padding-lg) text-lg"
26
26
  },
27
27
  resize: {
28
28
  none: "resize-none",
@@ -162,5 +162,5 @@ Textarea.displayName = "Textarea";
162
162
  var textarea_default = Textarea;
163
163
 
164
164
  export { textarea_default };
165
- //# sourceMappingURL=chunk-FPOXTCYV.js.map
166
- //# sourceMappingURL=chunk-FPOXTCYV.js.map
165
+ //# sourceMappingURL=chunk-SOIF4SHB.js.map
166
+ //# sourceMappingURL=chunk-SOIF4SHB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/textarea/index.tsx"],"names":[],"mappings":"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","file":"chunk-SOIF4SHB.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn, getValidationStatus, statusMessageVariants } from '../utils'\nimport type { TextareaProps } from './types'\n\nconst textareaVariants = cva(\n 'w-full rounded-md focus:border-primary transition-colors text-text-primary placeholder:text-text-secondary/50 disabled:opacity-50 disabled:cursor-not-allowed read-only:bg-surface read-only:cursor-default outline-none',\n {\n variants: {\n variant: {\n outline: 'bg-background border border-border',\n filled: 'bg-surface border border-transparent',\n },\n status: {\n default: '',\n error: '!border-error focus:!border-error',\n warning: '!border-warning focus:!border-warning',\n info: '!border-info focus:!border-info',\n success: '!border-success focus:!border-success',\n },\n size: {\n xs: 'min-h-(--textarea-min-height-xs) p-(--textarea-padding-xs) text-xs',\n sm: 'min-h-(--textarea-min-height-sm) p-(--textarea-padding-sm) text-sm',\n md: 'min-h-(--textarea-min-height-md) p-(--textarea-padding-md) text-base',\n lg: 'min-h-(--textarea-min-height-lg) p-(--textarea-padding-lg) text-lg',\n },\n resize: {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n },\n fullWidth: {\n true: 'w-full',\n false: 'max-w-full',\n },\n },\n defaultVariants: {\n variant: 'outline',\n status: 'default',\n size: 'md',\n resize: 'vertical',\n fullWidth: true,\n },\n },\n)\n\nconst Textarea = React.memo<TextareaProps>(\n ({\n variant = 'outline',\n size = 'md',\n label,\n helperText,\n messagePosition = 'bottom',\n error,\n warning,\n info,\n success,\n resize = 'vertical',\n showCount = false,\n maxLength,\n autoResize = false,\n fullWidth = true,\n className,\n value,\n onChange,\n ref,\n ...props\n }) => {\n const internalRef = React.useRef<HTMLTextAreaElement>(null)\n const textareaRef =\n (ref as React.RefObject<HTMLTextAreaElement>) || internalRef\n const [internalValue, setInternalValue] = React.useState(value || '')\n const currentValue = value !== undefined ? value : internalValue\n const currentLength = String(currentValue).length\n\n // Use shared validation status utility\n const { status, message: helperMessage } = getValidationStatus({\n error,\n warning,\n info,\n success,\n helperText,\n })\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value)\n }\n onChange?.(e)\n },\n [value, onChange],\n )\n\n React.useEffect(() => {\n if (autoResize && textareaRef.current) {\n textareaRef.current.style.height = 'auto'\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`\n }\n }, [currentValue, autoResize, textareaRef])\n\n const textareaElement = (\n <textarea\n ref={textareaRef}\n className={cn(\n textareaVariants({\n variant,\n status,\n size,\n resize: autoResize ? 'none' : resize,\n fullWidth,\n }),\n autoResize && 'overflow-hidden',\n className,\n )}\n maxLength={maxLength}\n value={currentValue}\n onChange={handleChange}\n aria-invalid={status === 'error'}\n aria-describedby={\n helperMessage ? `textarea-helper-${status}` : undefined\n }\n {...props}\n />\n )\n\n if (!label && !helperMessage && !showCount) return textareaElement\n\n return (\n <div\n className={cn(\n 'w-full flex flex-col relative',\n !fullWidth && 'inline-block',\n )}\n >\n <div className=\"flex gap-2 items-center relative mb-0.5\">\n {label && (\n <p className=\"text-sm font-medium text-text-secondary\">\n {label}\n {props.required && <span className=\"text-error ml-1\">*</span>}\n </p>\n )}\n {helperMessage && messagePosition === 'top' && (\n <p\n id={`textarea-helper-${status}`}\n className={statusMessageVariants({ status })}\n >\n {helperMessage}\n </p>\n )}\n {showCount && maxLength && (\n <span className=\"text-xs text-text-secondary absolute right-0\">\n {currentLength}/{maxLength}\n </span>\n )}\n </div>\n {textareaElement}\n {helperMessage && messagePosition === 'bottom' && (\n <p\n id={`textarea-helper-${status}`}\n className={cn(statusMessageVariants({ status }), 'mt-0.5')}\n >\n {helperMessage}\n </p>\n )}\n </div>\n )\n },\n)\n\nTextarea.displayName = 'Textarea'\n\nexport type * from './types'\nexport default Textarea\n"]}
@@ -1,4 +1,4 @@
1
- import { cn, iconSizes } from './chunk-YNNAOXU5.js';
1
+ import { cn, iconSizes } from './chunk-2OGZENFC.js';
2
2
  import { cva } from 'class-variance-authority';
3
3
  import { Check, Copy } from 'lucide-react';
4
4
  import React, { useState } from 'react';
@@ -70,11 +70,14 @@ var Clipboard = React.memo(
70
70
  variant = "default",
71
71
  showValue = true,
72
72
  successDuration = 2e3,
73
+ disabled = false,
73
74
  onCopy,
74
- className
75
+ className,
76
+ ref
75
77
  }) => {
76
78
  const [copied, setCopied] = useState(false);
77
79
  const handleCopy = async () => {
80
+ if (disabled) return;
78
81
  try {
79
82
  await navigator.clipboard.writeText(value);
80
83
  setCopied(true);
@@ -86,13 +89,26 @@ var Clipboard = React.memo(
86
89
  console.error("Failed to copy:", err);
87
90
  }
88
91
  };
92
+ const handleKeyDown = (e) => {
93
+ if (e.key === "Enter" || e.key === " ") {
94
+ e.preventDefault();
95
+ handleCopy();
96
+ }
97
+ };
89
98
  return /* @__PURE__ */ jsxs(
90
99
  "div",
91
100
  {
101
+ ref,
102
+ role: "button",
103
+ tabIndex: disabled ? -1 : 0,
92
104
  onClick: handleCopy,
105
+ onKeyDown: handleKeyDown,
106
+ "aria-label": copied ? "Copied to clipboard" : `Copy ${showValue ? value : "to clipboard"}`,
107
+ "aria-disabled": disabled,
93
108
  className: cn(
94
109
  clipboardVariants({ size }),
95
110
  colorStyles[color][variant],
111
+ disabled && "opacity-50 cursor-not-allowed",
96
112
  className
97
113
  ),
98
114
  children: [
@@ -107,5 +123,5 @@ Clipboard.displayName = "Clipboard";
107
123
  var clipboard_default = Clipboard;
108
124
 
109
125
  export { clipboard_default };
110
- //# sourceMappingURL=chunk-RMGIO27V.js.map
111
- //# sourceMappingURL=chunk-RMGIO27V.js.map
126
+ //# sourceMappingURL=chunk-SYDNDYZJ.js.map
127
+ //# sourceMappingURL=chunk-SYDNDYZJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clipboard/index.tsx"],"names":[],"mappings":"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","file":"chunk-SYDNDYZJ.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport { Check, Copy } from 'lucide-react'\nimport React, { useState } from 'react'\n\nimport { cn, iconSizes } from '../utils'\nimport type { ClipboardProps } from './types'\n\nconst clipboardVariants = cva(\n 'inline-flex items-center justify-between gap-2 rounded-md font-medium transition-all cursor-pointer border',\n {\n variants: {\n size: {\n xs: 'px-2 py-1 text-xs',\n sm: 'px-3 py-1.5 text-xs',\n md: 'px-4 py-2 text-sm',\n lg: 'px-5 py-2.5 text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\nconst colorStyles = {\n default: {\n default: 'bg-background border-border text-text-primary hover:bg-surface',\n solid: 'bg-surface border-border text-text-primary hover:bg-surface/80',\n soft: 'bg-surface/50 border-border text-text-primary hover:bg-surface',\n },\n primary: {\n default: 'bg-background border-primary text-primary hover:bg-primary/10',\n solid: 'bg-primary border-primary text-background hover:bg-primary/90',\n soft: 'bg-primary/10 border-primary/30 text-primary hover:bg-primary/20',\n },\n secondary: {\n default:\n 'bg-background border-secondary text-secondary hover:bg-secondary/10',\n solid:\n 'bg-secondary border-secondary text-background hover:bg-secondary/90',\n soft: 'bg-secondary/10 border-secondary/30 text-secondary hover:bg-secondary/20',\n },\n accent: {\n default: 'bg-background border-accent text-accent hover:bg-accent/10',\n solid: 'bg-accent border-accent text-background hover:bg-accent/90',\n soft: 'bg-accent/10 border-accent/30 text-accent hover:bg-accent/20',\n },\n success: {\n default: 'bg-background border-success text-success hover:bg-success/10',\n solid: 'bg-success border-success text-background hover:bg-success/90',\n soft: 'bg-success/10 border-success/30 text-success hover:bg-success/20',\n },\n error: {\n default: 'bg-background border-error text-error hover:bg-error/10',\n solid: 'bg-error border-error text-background hover:bg-error/90',\n soft: 'bg-error/10 border-error/30 text-error hover:bg-error/20',\n },\n warning: {\n default: 'bg-background border-warning text-warning hover:bg-warning/10',\n solid: 'bg-warning border-warning text-background hover:bg-warning/90',\n soft: 'bg-warning/10 border-warning/30 text-warning hover:bg-warning/20',\n },\n info: {\n default: 'bg-background border-info text-info hover:bg-info/10',\n solid: 'bg-info border-info text-background hover:bg-info/90',\n soft: 'bg-info/10 border-info/30 text-info hover:bg-info/20',\n },\n}\n\nconst Clipboard = React.memo<ClipboardProps>(\n ({\n value,\n color = 'default',\n size = 'md',\n variant = 'default',\n showValue = true,\n successDuration = 2000,\n disabled = false,\n onCopy,\n className,\n ref,\n }) => {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = async () => {\n if (disabled) return\n\n try {\n await navigator.clipboard.writeText(value)\n setCopied(true)\n onCopy?.()\n\n setTimeout(() => {\n setCopied(false)\n }, successDuration)\n } catch (err) {\n console.error('Failed to copy:', err)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleCopy()\n }\n }\n\n return (\n <div\n ref={ref}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={handleCopy}\n onKeyDown={handleKeyDown}\n aria-label={copied ? 'Copied to clipboard' : `Copy ${showValue ? value : 'to clipboard'}`}\n aria-disabled={disabled}\n className={cn(\n clipboardVariants({ size }),\n colorStyles[color][variant],\n disabled && 'opacity-50 cursor-not-allowed',\n className,\n )}\n >\n {showValue && <span className=\"font-mono truncate\">{value}</span>}\n {copied ? (\n <Check className={cn(iconSizes[size], 'flex-shrink-0')} />\n ) : (\n <Copy className={cn(iconSizes[size], 'flex-shrink-0')} />\n )}\n </div>\n )\n },\n)\n\nClipboard.displayName = 'Clipboard'\n\nexport type * from './types'\nexport default Clipboard\n"]}
@@ -0,0 +1,446 @@
1
+ import { cn } from './chunk-2OGZENFC.js';
2
+ import { cva } from 'class-variance-authority';
3
+ import React from 'react';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ var cardVariants = cva("rounded-lg transition-all", {
7
+ variants: {
8
+ variant: {
9
+ default: "bg-card text-card-foreground border",
10
+ solid: "border",
11
+ outline: "bg-transparent border",
12
+ soft: "border-transparent",
13
+ ghost: "border-transparent bg-transparent",
14
+ elevated: "bg-card text-card-foreground border-transparent shadow-md"
15
+ },
16
+ color: {
17
+ default: "border-border",
18
+ primary: "border-primary",
19
+ secondary: "border-secondary",
20
+ accent: "border-accent",
21
+ success: "border-success",
22
+ error: "border-error",
23
+ warning: "border-warning",
24
+ info: "border-info"
25
+ },
26
+ shadow: {
27
+ none: "",
28
+ sm: "shadow-sm",
29
+ md: "shadow-md",
30
+ lg: "shadow-lg"
31
+ },
32
+ hoverable: {
33
+ true: "hover:shadow-lg hover:-translate-y-0.5 cursor-pointer",
34
+ false: ""
35
+ },
36
+ clickable: {
37
+ true: "cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",
38
+ false: ""
39
+ },
40
+ bordered: {
41
+ true: "",
42
+ false: "border-transparent"
43
+ }
44
+ },
45
+ compoundVariants: [
46
+ // Default variant with colors - just border color
47
+ {
48
+ variant: "default",
49
+ color: "default",
50
+ class: "bg-card text-card-foreground border-border"
51
+ },
52
+ {
53
+ variant: "default",
54
+ color: "primary",
55
+ class: "bg-card text-card-foreground border-primary"
56
+ },
57
+ {
58
+ variant: "default",
59
+ color: "secondary",
60
+ class: "bg-card text-card-foreground border-secondary"
61
+ },
62
+ {
63
+ variant: "default",
64
+ color: "accent",
65
+ class: "bg-card text-card-foreground border-accent"
66
+ },
67
+ {
68
+ variant: "default",
69
+ color: "success",
70
+ class: "bg-card text-card-foreground border-success"
71
+ },
72
+ {
73
+ variant: "default",
74
+ color: "error",
75
+ class: "bg-card text-card-foreground border-error"
76
+ },
77
+ {
78
+ variant: "default",
79
+ color: "warning",
80
+ class: "bg-card text-card-foreground border-warning"
81
+ },
82
+ {
83
+ variant: "default",
84
+ color: "info",
85
+ class: "bg-card text-card-foreground border-info"
86
+ },
87
+ // Solid variant - full background color
88
+ {
89
+ variant: "solid",
90
+ color: "default",
91
+ class: "bg-surface border-border text-text-primary"
92
+ },
93
+ {
94
+ variant: "solid",
95
+ color: "primary",
96
+ class: "bg-primary border-primary text-background"
97
+ },
98
+ {
99
+ variant: "solid",
100
+ color: "secondary",
101
+ class: "bg-secondary border-secondary text-background"
102
+ },
103
+ {
104
+ variant: "solid",
105
+ color: "accent",
106
+ class: "bg-accent border-accent text-background"
107
+ },
108
+ {
109
+ variant: "solid",
110
+ color: "success",
111
+ class: "bg-success border-success text-background"
112
+ },
113
+ {
114
+ variant: "solid",
115
+ color: "error",
116
+ class: "bg-error border-error text-background"
117
+ },
118
+ {
119
+ variant: "solid",
120
+ color: "warning",
121
+ class: "bg-warning border-warning text-background"
122
+ },
123
+ {
124
+ variant: "solid",
125
+ color: "info",
126
+ class: "bg-info border-info text-background"
127
+ },
128
+ // Outline variant - colored border, transparent bg
129
+ {
130
+ variant: "outline",
131
+ color: "default",
132
+ class: "border-border text-text-primary"
133
+ },
134
+ {
135
+ variant: "outline",
136
+ color: "primary",
137
+ class: "border-primary text-text-primary"
138
+ },
139
+ {
140
+ variant: "outline",
141
+ color: "secondary",
142
+ class: "border-secondary text-text-primary"
143
+ },
144
+ {
145
+ variant: "outline",
146
+ color: "accent",
147
+ class: "border-accent text-text-primary"
148
+ },
149
+ {
150
+ variant: "outline",
151
+ color: "success",
152
+ class: "border-success text-text-primary"
153
+ },
154
+ {
155
+ variant: "outline",
156
+ color: "error",
157
+ class: "border-error text-text-primary"
158
+ },
159
+ {
160
+ variant: "outline",
161
+ color: "warning",
162
+ class: "border-warning text-text-primary"
163
+ },
164
+ {
165
+ variant: "outline",
166
+ color: "info",
167
+ class: "border-info text-text-primary"
168
+ },
169
+ // Soft variant - subtle background color (like button soft)
170
+ {
171
+ variant: "soft",
172
+ color: "default",
173
+ class: "bg-surface text-text-primary"
174
+ },
175
+ { variant: "soft", color: "primary", class: "bg-primary/10 text-primary" },
176
+ {
177
+ variant: "soft",
178
+ color: "secondary",
179
+ class: "bg-secondary/10 text-secondary"
180
+ },
181
+ { variant: "soft", color: "accent", class: "bg-accent/10 text-accent" },
182
+ { variant: "soft", color: "success", class: "bg-success/10 text-success" },
183
+ { variant: "soft", color: "error", class: "bg-error/10 text-error" },
184
+ { variant: "soft", color: "warning", class: "bg-warning/10 text-warning" },
185
+ { variant: "soft", color: "info", class: "bg-info/10 text-info" },
186
+ // Ghost variant - no bg, no border
187
+ { variant: "ghost", color: "default", class: "text-text-primary" },
188
+ { variant: "ghost", color: "primary", class: "text-primary" },
189
+ { variant: "ghost", color: "secondary", class: "text-secondary" },
190
+ { variant: "ghost", color: "accent", class: "text-accent" },
191
+ { variant: "ghost", color: "success", class: "text-success" },
192
+ { variant: "ghost", color: "error", class: "text-error" },
193
+ { variant: "ghost", color: "warning", class: "text-warning" },
194
+ { variant: "ghost", color: "info", class: "text-info" },
195
+ // Elevated - shadow, no border
196
+ {
197
+ variant: "elevated",
198
+ color: "default",
199
+ class: "bg-card text-card-foreground"
200
+ },
201
+ {
202
+ variant: "elevated",
203
+ color: "primary",
204
+ class: "bg-card text-card-foreground ring-1 ring-primary/20"
205
+ },
206
+ {
207
+ variant: "elevated",
208
+ color: "secondary",
209
+ class: "bg-card text-card-foreground ring-1 ring-secondary/20"
210
+ },
211
+ {
212
+ variant: "elevated",
213
+ color: "accent",
214
+ class: "bg-card text-card-foreground ring-1 ring-accent/20"
215
+ },
216
+ {
217
+ variant: "elevated",
218
+ color: "success",
219
+ class: "bg-card text-card-foreground ring-1 ring-success/20"
220
+ },
221
+ {
222
+ variant: "elevated",
223
+ color: "error",
224
+ class: "bg-card text-card-foreground ring-1 ring-error/20"
225
+ },
226
+ {
227
+ variant: "elevated",
228
+ color: "warning",
229
+ class: "bg-card text-card-foreground ring-1 ring-warning/20"
230
+ },
231
+ {
232
+ variant: "elevated",
233
+ color: "info",
234
+ class: "bg-card text-card-foreground ring-1 ring-info/20"
235
+ }
236
+ ],
237
+ defaultVariants: {
238
+ variant: "default",
239
+ color: "default",
240
+ shadow: "none",
241
+ hoverable: false,
242
+ clickable: false,
243
+ bordered: true
244
+ }
245
+ });
246
+ var sizeClasses = {
247
+ xs: "[--card-padding:0.5rem] [--card-content-padding:0.5rem] [--card-footer-padding:0.5rem]",
248
+ sm: "[--card-padding:1rem] [--card-content-padding:1rem] [--card-footer-padding:1rem]",
249
+ md: "[--card-padding:1.5rem] [--card-content-padding:1.5rem] [--card-footer-padding:1.5rem]",
250
+ lg: "[--card-padding:2rem] [--card-content-padding:2rem] [--card-footer-padding:2rem]"
251
+ };
252
+ var Card = React.memo(
253
+ ({
254
+ className,
255
+ variant = "default",
256
+ color = "default",
257
+ size = "md",
258
+ shadow = "none",
259
+ hoverable = false,
260
+ clickable = false,
261
+ bordered = true,
262
+ loading = false,
263
+ onClick,
264
+ ref,
265
+ children,
266
+ ...props
267
+ }) => {
268
+ const cardContent = loading ? /* @__PURE__ */ jsxs("div", { className: "animate-pulse", children: [
269
+ /* @__PURE__ */ jsxs("div", { className: "p-(--card-padding)", children: [
270
+ /* @__PURE__ */ jsx("div", { className: "h-4 bg-surface rounded w-3/4 mb-2" }),
271
+ /* @__PURE__ */ jsx("div", { className: "h-3 bg-surface rounded w-1/2" })
272
+ ] }),
273
+ /* @__PURE__ */ jsxs("div", { className: "p-(--card-content-padding) pt-0", children: [
274
+ /* @__PURE__ */ jsx("div", { className: "h-3 bg-surface rounded w-full mb-2" }),
275
+ /* @__PURE__ */ jsx("div", { className: "h-3 bg-surface rounded w-full mb-2" }),
276
+ /* @__PURE__ */ jsx("div", { className: "h-3 bg-surface rounded w-2/3" })
277
+ ] })
278
+ ] }) : children;
279
+ const cardClassName = cn(
280
+ cardVariants({
281
+ variant,
282
+ color,
283
+ shadow,
284
+ hoverable,
285
+ clickable,
286
+ bordered
287
+ }),
288
+ sizeClasses[size],
289
+ className
290
+ );
291
+ if (clickable) {
292
+ return /* @__PURE__ */ jsx(
293
+ "div",
294
+ {
295
+ ref,
296
+ role: "button",
297
+ tabIndex: 0,
298
+ className: cardClassName,
299
+ onClick,
300
+ onKeyDown: (e) => {
301
+ if (e.key === "Enter" || e.key === " ") {
302
+ e.preventDefault();
303
+ onClick?.(e);
304
+ }
305
+ },
306
+ ...props,
307
+ children: cardContent
308
+ }
309
+ );
310
+ }
311
+ return /* @__PURE__ */ jsx("div", { ref, className: cardClassName, onClick, ...props, children: cardContent });
312
+ }
313
+ );
314
+ Card.displayName = "Card";
315
+ var CardHeader = React.memo(
316
+ ({ className, ref, ...props }) => /* @__PURE__ */ jsx(
317
+ "div",
318
+ {
319
+ ref,
320
+ className: cn("flex flex-col gap-1.5 p-(--card-padding)", className),
321
+ ...props
322
+ }
323
+ )
324
+ );
325
+ CardHeader.displayName = "CardHeader";
326
+ var CardTitle = React.memo(
327
+ ({ className, as: Tag = "h3", ref, ...props }) => /* @__PURE__ */ jsx(
328
+ Tag,
329
+ {
330
+ ref,
331
+ className: cn(
332
+ "text-lg font-semibold leading-none tracking-tight",
333
+ className
334
+ ),
335
+ ...props
336
+ }
337
+ )
338
+ );
339
+ CardTitle.displayName = "CardTitle";
340
+ var CardDescription = React.memo(
341
+ ({ className, ref, ...props }) => /* @__PURE__ */ jsx(
342
+ "p",
343
+ {
344
+ ref,
345
+ className: cn("text-sm text-text-secondary", className),
346
+ ...props
347
+ }
348
+ )
349
+ );
350
+ CardDescription.displayName = "CardDescription";
351
+ var CardContent = React.memo(
352
+ ({ className, ref, ...props }) => /* @__PURE__ */ jsx(
353
+ "div",
354
+ {
355
+ ref,
356
+ className: cn("p-(--card-content-padding) pt-0", className),
357
+ ...props
358
+ }
359
+ )
360
+ );
361
+ CardContent.displayName = "CardContent";
362
+ var CardFooter = React.memo(
363
+ ({ className, ref, ...props }) => /* @__PURE__ */ jsx(
364
+ "div",
365
+ {
366
+ ref,
367
+ className: cn(
368
+ "flex items-center p-(--card-footer-padding) pt-0",
369
+ className
370
+ ),
371
+ ...props
372
+ }
373
+ )
374
+ );
375
+ CardFooter.displayName = "CardFooter";
376
+ var CardAction = React.memo(
377
+ ({ className, ref, ...props }) => /* @__PURE__ */ jsx(
378
+ "div",
379
+ {
380
+ ref,
381
+ className: cn("ml-auto flex items-center gap-2", className),
382
+ ...props
383
+ }
384
+ )
385
+ );
386
+ CardAction.displayName = "CardAction";
387
+ var aspectRatioClasses = {
388
+ square: "aspect-square",
389
+ video: "aspect-video",
390
+ wide: "aspect-[21/9]",
391
+ auto: ""
392
+ };
393
+ var objectFitClasses = {
394
+ cover: "object-cover",
395
+ contain: "object-contain",
396
+ fill: "object-fill",
397
+ none: "object-none"
398
+ };
399
+ var CardImage = React.memo(
400
+ ({
401
+ src,
402
+ alt,
403
+ position = "top",
404
+ aspectRatio = "video",
405
+ objectFit = "cover",
406
+ className,
407
+ ref,
408
+ ...props
409
+ }) => /* @__PURE__ */ jsx(
410
+ "div",
411
+ {
412
+ className: cn(
413
+ "overflow-hidden",
414
+ position === "top" && "rounded-t-lg",
415
+ position === "bottom" && "rounded-b-lg",
416
+ aspectRatio !== "auto" && aspectRatioClasses[aspectRatio]
417
+ ),
418
+ children: /* @__PURE__ */ jsx(
419
+ "img",
420
+ {
421
+ ref,
422
+ src,
423
+ alt,
424
+ className: cn("w-full h-full", objectFitClasses[objectFit], className),
425
+ loading: "lazy",
426
+ ...props
427
+ }
428
+ )
429
+ }
430
+ )
431
+ );
432
+ CardImage.displayName = "CardImage";
433
+ var CardWithSubComponents = Object.assign(Card, {
434
+ Header: CardHeader,
435
+ Footer: CardFooter,
436
+ Title: CardTitle,
437
+ Description: CardDescription,
438
+ Content: CardContent,
439
+ Action: CardAction,
440
+ Image: CardImage
441
+ });
442
+ var card_default = CardWithSubComponents;
443
+
444
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardImage, CardTitle, cardVariants, card_default };
445
+ //# sourceMappingURL=chunk-TG2AECIN.js.map
446
+ //# sourceMappingURL=chunk-TG2AECIN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/card/index.tsx"],"names":[],"mappings":"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","file":"chunk-TG2AECIN.js","sourcesContent":["import { cva } from \"class-variance-authority\";\nimport React from \"react\";\n\nimport { cn } from \"../utils\";\nimport type {\n CardActionProps,\n CardContentProps,\n CardDescriptionProps,\n CardFooterProps,\n CardHeaderProps,\n CardImageProps,\n CardProps,\n CardSize,\n CardTitleProps,\n} from \"./types\";\n\nconst cardVariants = cva(\"rounded-lg transition-all\", {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground border\",\n solid: \"border\",\n outline: \"bg-transparent border\",\n soft: \"border-transparent\",\n ghost: \"border-transparent bg-transparent\",\n elevated: \"bg-card text-card-foreground border-transparent shadow-md\",\n },\n color: {\n default: \"border-border\",\n primary: \"border-primary\",\n secondary: \"border-secondary\",\n accent: \"border-accent\",\n success: \"border-success\",\n error: \"border-error\",\n warning: \"border-warning\",\n info: \"border-info\",\n },\n shadow: {\n none: \"\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n },\n hoverable: {\n true: \"hover:shadow-lg hover:-translate-y-0.5 cursor-pointer\",\n false: \"\",\n },\n clickable: {\n true: \"cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2\",\n false: \"\",\n },\n bordered: {\n true: \"\",\n false: \"border-transparent\",\n },\n },\n compoundVariants: [\n // Default variant with colors - just border color\n {\n variant: \"default\",\n color: \"default\",\n class: \"bg-card text-card-foreground border-border\",\n },\n {\n variant: \"default\",\n color: \"primary\",\n class: \"bg-card text-card-foreground border-primary\",\n },\n {\n variant: \"default\",\n color: \"secondary\",\n class: \"bg-card text-card-foreground border-secondary\",\n },\n {\n variant: \"default\",\n color: \"accent\",\n class: \"bg-card text-card-foreground border-accent\",\n },\n {\n variant: \"default\",\n color: \"success\",\n class: \"bg-card text-card-foreground border-success\",\n },\n {\n variant: \"default\",\n color: \"error\",\n class: \"bg-card text-card-foreground border-error\",\n },\n {\n variant: \"default\",\n color: \"warning\",\n class: \"bg-card text-card-foreground border-warning\",\n },\n {\n variant: \"default\",\n color: \"info\",\n class: \"bg-card text-card-foreground border-info\",\n },\n // Solid variant - full background color\n {\n variant: \"solid\",\n color: \"default\",\n class: \"bg-surface border-border text-text-primary\",\n },\n {\n variant: \"solid\",\n color: \"primary\",\n class: \"bg-primary border-primary text-background\",\n },\n {\n variant: \"solid\",\n color: \"secondary\",\n class: \"bg-secondary border-secondary text-background\",\n },\n {\n variant: \"solid\",\n color: \"accent\",\n class: \"bg-accent border-accent text-background\",\n },\n {\n variant: \"solid\",\n color: \"success\",\n class: \"bg-success border-success text-background\",\n },\n {\n variant: \"solid\",\n color: \"error\",\n class: \"bg-error border-error text-background\",\n },\n {\n variant: \"solid\",\n color: \"warning\",\n class: \"bg-warning border-warning text-background\",\n },\n {\n variant: \"solid\",\n color: \"info\",\n class: \"bg-info border-info text-background\",\n },\n // Outline variant - colored border, transparent bg\n {\n variant: \"outline\",\n color: \"default\",\n class: \"border-border text-text-primary\",\n },\n {\n variant: \"outline\",\n color: \"primary\",\n class: \"border-primary text-text-primary\",\n },\n {\n variant: \"outline\",\n color: \"secondary\",\n class: \"border-secondary text-text-primary\",\n },\n {\n variant: \"outline\",\n color: \"accent\",\n class: \"border-accent text-text-primary\",\n },\n {\n variant: \"outline\",\n color: \"success\",\n class: \"border-success text-text-primary\",\n },\n {\n variant: \"outline\",\n color: \"error\",\n class: \"border-error text-text-primary\",\n },\n {\n variant: \"outline\",\n color: \"warning\",\n class: \"border-warning text-text-primary\",\n },\n {\n variant: \"outline\",\n color: \"info\",\n class: \"border-info text-text-primary\",\n },\n // Soft variant - subtle background color (like button soft)\n {\n variant: \"soft\",\n color: \"default\",\n class: \"bg-surface text-text-primary\",\n },\n { variant: \"soft\", color: \"primary\", class: \"bg-primary/10 text-primary\" },\n {\n variant: \"soft\",\n color: \"secondary\",\n class: \"bg-secondary/10 text-secondary\",\n },\n { variant: \"soft\", color: \"accent\", class: \"bg-accent/10 text-accent\" },\n { variant: \"soft\", color: \"success\", class: \"bg-success/10 text-success\" },\n { variant: \"soft\", color: \"error\", class: \"bg-error/10 text-error\" },\n { variant: \"soft\", color: \"warning\", class: \"bg-warning/10 text-warning\" },\n { variant: \"soft\", color: \"info\", class: \"bg-info/10 text-info\" },\n // Ghost variant - no bg, no border\n { variant: \"ghost\", color: \"default\", class: \"text-text-primary\" },\n { variant: \"ghost\", color: \"primary\", class: \"text-primary\" },\n { variant: \"ghost\", color: \"secondary\", class: \"text-secondary\" },\n { variant: \"ghost\", color: \"accent\", class: \"text-accent\" },\n { variant: \"ghost\", color: \"success\", class: \"text-success\" },\n { variant: \"ghost\", color: \"error\", class: \"text-error\" },\n { variant: \"ghost\", color: \"warning\", class: \"text-warning\" },\n { variant: \"ghost\", color: \"info\", class: \"text-info\" },\n // Elevated - shadow, no border\n {\n variant: \"elevated\",\n color: \"default\",\n class: \"bg-card text-card-foreground\",\n },\n {\n variant: \"elevated\",\n color: \"primary\",\n class: \"bg-card text-card-foreground ring-1 ring-primary/20\",\n },\n {\n variant: \"elevated\",\n color: \"secondary\",\n class: \"bg-card text-card-foreground ring-1 ring-secondary/20\",\n },\n {\n variant: \"elevated\",\n color: \"accent\",\n class: \"bg-card text-card-foreground ring-1 ring-accent/20\",\n },\n {\n variant: \"elevated\",\n color: \"success\",\n class: \"bg-card text-card-foreground ring-1 ring-success/20\",\n },\n {\n variant: \"elevated\",\n color: \"error\",\n class: \"bg-card text-card-foreground ring-1 ring-error/20\",\n },\n {\n variant: \"elevated\",\n color: \"warning\",\n class: \"bg-card text-card-foreground ring-1 ring-warning/20\",\n },\n {\n variant: \"elevated\",\n color: \"info\",\n class: \"bg-card text-card-foreground ring-1 ring-info/20\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n color: \"default\",\n shadow: \"none\",\n hoverable: false,\n clickable: false,\n bordered: true,\n },\n});\n\n/**\n * Size-based padding classes\n */\nconst sizeClasses: Record<CardSize, string> = {\n xs: \"[--card-padding:0.5rem] [--card-content-padding:0.5rem] [--card-footer-padding:0.5rem]\",\n sm: \"[--card-padding:1rem] [--card-content-padding:1rem] [--card-footer-padding:1rem]\",\n md: \"[--card-padding:1.5rem] [--card-content-padding:1.5rem] [--card-footer-padding:1.5rem]\",\n lg: \"[--card-padding:2rem] [--card-content-padding:2rem] [--card-footer-padding:2rem]\",\n};\n\n/**\n * Card Component\n *\n * A versatile container component for grouping related content and actions.\n *\n * @example\n * <Card>\n * <CardHeader>\n * <CardTitle>Title</CardTitle>\n * <CardDescription>Description</CardDescription>\n * </CardHeader>\n * <CardContent>Content here</CardContent>\n * <CardFooter>\n * <Button>Action</Button>\n * </CardFooter>\n * </Card>\n */\nconst Card = React.memo<CardProps>(\n ({\n className,\n variant = \"default\",\n color = \"default\",\n size = \"md\",\n shadow = \"none\",\n hoverable = false,\n clickable = false,\n bordered = true,\n loading = false,\n onClick,\n ref,\n children,\n ...props\n }) => {\n const cardContent = loading ? (\n <div className=\"animate-pulse\">\n <div className=\"p-(--card-padding)\">\n <div className=\"h-4 bg-surface rounded w-3/4 mb-2\" />\n <div className=\"h-3 bg-surface rounded w-1/2\" />\n </div>\n <div className=\"p-(--card-content-padding) pt-0\">\n <div className=\"h-3 bg-surface rounded w-full mb-2\" />\n <div className=\"h-3 bg-surface rounded w-full mb-2\" />\n <div className=\"h-3 bg-surface rounded w-2/3\" />\n </div>\n </div>\n ) : (\n children\n );\n\n const cardClassName = cn(\n cardVariants({\n variant,\n color,\n shadow,\n hoverable,\n clickable,\n bordered,\n }),\n sizeClasses[size],\n className,\n );\n\n if (clickable) {\n return (\n <div\n ref={ref}\n role=\"button\"\n tabIndex={0}\n className={cardClassName}\n onClick={onClick}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.(e as unknown as React.MouseEvent<HTMLDivElement>);\n }\n }}\n {...props}\n >\n {cardContent}\n </div>\n );\n }\n\n return (\n <div ref={ref} className={cardClassName} onClick={onClick} {...props}>\n {cardContent}\n </div>\n );\n },\n);\nCard.displayName = \"Card\";\n\n/**\n * CardHeader Component\n */\nconst CardHeader = React.memo<CardHeaderProps>(\n ({ className, ref, ...props }) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-1.5 p-(--card-padding)\", className)}\n {...props}\n />\n ),\n);\nCardHeader.displayName = \"CardHeader\";\n\n/**\n * CardTitle Component\n */\nconst CardTitle = React.memo<CardTitleProps>(\n ({ className, as: Tag = \"h3\", ref, ...props }) => (\n <Tag\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n ),\n);\nCardTitle.displayName = \"CardTitle\";\n\n/**\n * CardDescription Component\n */\nconst CardDescription = React.memo<CardDescriptionProps>(\n ({ className, ref, ...props }) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-text-secondary\", className)}\n {...props}\n />\n ),\n);\nCardDescription.displayName = \"CardDescription\";\n\n/**\n * CardContent Component\n */\nconst CardContent = React.memo<CardContentProps>(\n ({ className, ref, ...props }) => (\n <div\n ref={ref}\n className={cn(\"p-(--card-content-padding) pt-0\", className)}\n {...props}\n />\n ),\n);\nCardContent.displayName = \"CardContent\";\n\n/**\n * CardFooter Component\n */\nconst CardFooter = React.memo<CardFooterProps>(\n ({ className, ref, ...props }) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center p-(--card-footer-padding) pt-0\",\n className,\n )}\n {...props}\n />\n ),\n);\nCardFooter.displayName = \"CardFooter\";\n\n/**\n * CardAction Component - for buttons/actions in the header\n */\nconst CardAction = React.memo<CardActionProps>(\n ({ className, ref, ...props }) => (\n <div\n ref={ref}\n className={cn(\"ml-auto flex items-center gap-2\", className)}\n {...props}\n />\n ),\n);\nCardAction.displayName = \"CardAction\";\n\n/**\n * Aspect ratio classes for CardImage\n */\nconst aspectRatioClasses = {\n square: \"aspect-square\",\n video: \"aspect-video\",\n wide: \"aspect-[21/9]\",\n auto: \"\",\n};\n\n/**\n * Object fit classes for CardImage\n */\nconst objectFitClasses = {\n cover: \"object-cover\",\n contain: \"object-contain\",\n fill: \"object-fill\",\n none: \"object-none\",\n};\n\n/**\n * CardImage Component - for displaying images in cards\n */\nconst CardImage = React.memo<CardImageProps>(\n ({\n src,\n alt,\n position = \"top\",\n aspectRatio = \"video\",\n objectFit = \"cover\",\n className,\n ref,\n ...props\n }) => (\n <div\n className={cn(\n \"overflow-hidden\",\n position === \"top\" && \"rounded-t-lg\",\n position === \"bottom\" && \"rounded-b-lg\",\n aspectRatio !== \"auto\" && aspectRatioClasses[aspectRatio],\n )}\n >\n <img\n ref={ref}\n src={src}\n alt={alt}\n className={cn(\"w-full h-full\", objectFitClasses[objectFit], className)}\n loading=\"lazy\"\n {...props}\n />\n </div>\n ),\n);\nCardImage.displayName = \"CardImage\";\n\n// Attach sub-components to Card\nconst CardWithSubComponents = Object.assign(Card, {\n Header: CardHeader,\n Footer: CardFooter,\n Title: CardTitle,\n Description: CardDescription,\n Content: CardContent,\n Action: CardAction,\n Image: CardImage,\n});\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n CardAction,\n CardImage,\n cardVariants,\n};\n\nexport type * from \"./types\";\nexport default CardWithSubComponents;\n"]}