@me1a/ui 2.2.1 → 2.2.3

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 (230) hide show
  1. package/dist/accordion/index.d.mts +94 -0
  2. package/dist/accordion/index.mjs +2 -0
  3. package/dist/accordion/index.mjs.map +1 -0
  4. package/dist/avatar/index.d.mts +34 -0
  5. package/dist/avatar/index.mjs +2 -0
  6. package/dist/avatar/index.mjs.map +1 -0
  7. package/dist/badge/index.d.mts +41 -0
  8. package/dist/badge/index.mjs +2 -0
  9. package/dist/badge/index.mjs.map +1 -0
  10. package/dist/box/index.d.mts +50 -0
  11. package/dist/box/index.mjs +2 -0
  12. package/dist/box/index.mjs.map +1 -0
  13. package/dist/breadcrumb/index.d.mts +35 -0
  14. package/dist/breadcrumb/index.mjs +2 -0
  15. package/dist/breadcrumb/index.mjs.map +1 -0
  16. package/dist/{tooltip-B4jzaurK.d.mts → button/index.d.mts} +3 -25
  17. package/dist/button/index.mjs +2 -0
  18. package/dist/button/index.mjs.map +1 -0
  19. package/dist/card/index.d.mts +127 -0
  20. package/dist/card/index.mjs +2 -0
  21. package/dist/card/index.mjs.map +1 -0
  22. package/dist/checkbox/index.d.mts +21 -0
  23. package/dist/checkbox/index.mjs +2 -0
  24. package/dist/checkbox/index.mjs.map +1 -0
  25. package/dist/collapsible/index.d.mts +26 -0
  26. package/dist/collapsible/index.mjs +2 -0
  27. package/dist/collapsible/index.mjs.map +1 -0
  28. package/dist/command/index.d.mts +122 -0
  29. package/dist/command/index.mjs +2 -0
  30. package/dist/command/index.mjs.map +1 -0
  31. package/dist/container/index.d.mts +33 -0
  32. package/dist/container/index.mjs +2 -0
  33. package/dist/container/index.mjs.map +1 -0
  34. package/dist/dialog/index.d.mts +35 -0
  35. package/dist/dialog/index.mjs +2 -0
  36. package/dist/dialog/index.mjs.map +1 -0
  37. package/dist/drawer/index.d.mts +63 -0
  38. package/dist/drawer/index.mjs +2 -0
  39. package/dist/drawer/index.mjs.map +1 -0
  40. package/dist/dropdown-menu/index.d.mts +335 -0
  41. package/dist/dropdown-menu/index.mjs +2 -0
  42. package/dist/dropdown-menu/index.mjs.map +1 -0
  43. package/dist/form/index.d.mts +96 -0
  44. package/dist/form/index.mjs +2 -0
  45. package/dist/form/index.mjs.map +1 -0
  46. package/dist/{hooks.d.mts → hooks/index.d.mts} +10 -4
  47. package/dist/hooks/index.mjs +2 -0
  48. package/dist/hooks/index.mjs.map +1 -0
  49. package/dist/index.d.mts +2739 -30
  50. package/dist/index.mjs +47 -0
  51. package/dist/{index.esm.js.map → index.mjs.map} +1 -1
  52. package/dist/input/index.d.mts +12 -0
  53. package/dist/input/index.mjs +2 -0
  54. package/dist/input/index.mjs.map +1 -0
  55. package/dist/label/index.d.mts +18 -0
  56. package/dist/label/index.mjs +2 -0
  57. package/dist/label/index.mjs.map +1 -0
  58. package/dist/navigation-menu/index.d.mts +104 -0
  59. package/dist/navigation-menu/index.mjs +2 -0
  60. package/dist/navigation-menu/index.mjs.map +1 -0
  61. package/dist/page-loader/index.d.mts +29 -0
  62. package/dist/page-loader/index.mjs +2 -0
  63. package/dist/page-loader/index.mjs.map +1 -0
  64. package/dist/pagination/index.d.mts +105 -0
  65. package/dist/pagination/index.mjs +2 -0
  66. package/dist/pagination/index.mjs.map +1 -0
  67. package/dist/popover/index.d.mts +30 -0
  68. package/dist/popover/index.mjs +2 -0
  69. package/dist/popover/index.mjs.map +1 -0
  70. package/dist/{checkbox-DxgDKaHx.d.mts → radio-group/index.d.mts} +5 -51
  71. package/dist/radio-group/index.mjs +2 -0
  72. package/dist/radio-group/index.mjs.map +1 -0
  73. package/dist/resizable/index.d.mts +53 -0
  74. package/dist/resizable/index.mjs +2 -0
  75. package/dist/resizable/index.mjs.map +1 -0
  76. package/dist/rhf-checkbox/index.d.mts +57 -0
  77. package/dist/rhf-checkbox/index.mjs +2 -0
  78. package/dist/rhf-checkbox/index.mjs.map +1 -0
  79. package/dist/rhf-multi-select/index.d.mts +84 -0
  80. package/dist/rhf-multi-select/index.mjs +2 -0
  81. package/dist/rhf-multi-select/index.mjs.map +1 -0
  82. package/dist/rhf-radio-button-group/index.d.mts +73 -0
  83. package/dist/rhf-radio-button-group/index.mjs +2 -0
  84. package/dist/rhf-radio-button-group/index.mjs.map +1 -0
  85. package/dist/rhf-radio-group/index.d.mts +103 -0
  86. package/dist/rhf-radio-group/index.mjs +2 -0
  87. package/dist/rhf-radio-group/index.mjs.map +1 -0
  88. package/dist/rhf-select/index.d.mts +80 -0
  89. package/dist/rhf-select/index.mjs +2 -0
  90. package/dist/rhf-select/index.mjs.map +1 -0
  91. package/dist/rhf-switch/index.d.mts +57 -0
  92. package/dist/rhf-switch/index.mjs +2 -0
  93. package/dist/rhf-switch/index.mjs.map +1 -0
  94. package/dist/rhf-textarea/index.d.mts +66 -0
  95. package/dist/rhf-textarea/index.mjs +2 -0
  96. package/dist/rhf-textarea/index.mjs.map +1 -0
  97. package/dist/separator/index.d.mts +13 -0
  98. package/dist/separator/index.mjs +2 -0
  99. package/dist/separator/index.mjs.map +1 -0
  100. package/dist/sheet/index.d.mts +42 -0
  101. package/dist/sheet/index.mjs +2 -0
  102. package/dist/sheet/index.mjs.map +1 -0
  103. package/dist/sidebar/index.d.mts +328 -0
  104. package/dist/sidebar/index.mjs +2 -0
  105. package/dist/sidebar/index.mjs.map +1 -0
  106. package/dist/skeleton/index.d.mts +17 -0
  107. package/dist/skeleton/index.mjs +2 -0
  108. package/dist/skeleton/index.mjs.map +1 -0
  109. package/dist/stack/index.d.mts +121 -0
  110. package/dist/stack/index.mjs +2 -0
  111. package/dist/stack/index.mjs.map +1 -0
  112. package/dist/switch/index.d.mts +21 -0
  113. package/dist/switch/index.mjs +2 -0
  114. package/dist/switch/index.mjs.map +1 -0
  115. package/dist/table/index.d.mts +53 -0
  116. package/dist/table/index.mjs +2 -0
  117. package/dist/table/index.mjs.map +1 -0
  118. package/dist/tabs/index.d.mts +97 -0
  119. package/dist/tabs/index.mjs +2 -0
  120. package/dist/tabs/index.mjs.map +1 -0
  121. package/dist/text-field/index.d.mts +65 -0
  122. package/dist/text-field/index.mjs +2 -0
  123. package/dist/text-field/index.mjs.map +1 -0
  124. package/dist/textarea/index.d.mts +24 -0
  125. package/dist/textarea/index.mjs +2 -0
  126. package/dist/textarea/index.mjs.map +1 -0
  127. package/dist/{toast-2xT7L1tJ.d.mts → toast/index.d.mts} +3 -3
  128. package/dist/toast/index.mjs +2 -0
  129. package/dist/toast/index.mjs.map +1 -0
  130. package/dist/toaster/index.d.mts +26 -0
  131. package/dist/toaster/index.mjs +2 -0
  132. package/dist/toaster/index.mjs.map +1 -0
  133. package/dist/tooltip/index.d.mts +25 -0
  134. package/dist/tooltip/index.mjs +2 -0
  135. package/dist/tooltip/index.mjs.map +1 -0
  136. package/dist/types/index.mjs +2 -0
  137. package/dist/{index.cjs.js.map → types/index.mjs.map} +1 -1
  138. package/dist/typography/index.d.mts +24 -0
  139. package/dist/typography/index.mjs +2 -0
  140. package/dist/typography/index.mjs.map +1 -0
  141. package/dist/utils/index.mjs +2 -0
  142. package/dist/utils/index.mjs.map +1 -0
  143. package/package.json +199 -34
  144. package/dist/atoms.cjs.js +0 -2
  145. package/dist/atoms.cjs.js.map +0 -1
  146. package/dist/atoms.d.mts +0 -1051
  147. package/dist/atoms.d.ts +0 -1051
  148. package/dist/atoms.esm.js +0 -2
  149. package/dist/atoms.esm.js.map +0 -1
  150. package/dist/checkbox-DxgDKaHx.d.ts +0 -108
  151. package/dist/chunk-23T2PH5G.esm.js +0 -2
  152. package/dist/chunk-23T2PH5G.esm.js.map +0 -1
  153. package/dist/chunk-2QG3QTSW.cjs.js +0 -2
  154. package/dist/chunk-2QG3QTSW.cjs.js.map +0 -1
  155. package/dist/chunk-C26U3FL4.esm.js +0 -2
  156. package/dist/chunk-C26U3FL4.esm.js.map +0 -1
  157. package/dist/chunk-DTM5LZHM.cjs.js +0 -2
  158. package/dist/chunk-DTM5LZHM.cjs.js.map +0 -1
  159. package/dist/chunk-HW32JE75.cjs.js +0 -2
  160. package/dist/chunk-HW32JE75.cjs.js.map +0 -1
  161. package/dist/chunk-JIRS6MWF.cjs.js +0 -2
  162. package/dist/chunk-JIRS6MWF.cjs.js.map +0 -1
  163. package/dist/chunk-JKTYFZ5M.esm.js +0 -2
  164. package/dist/chunk-JKTYFZ5M.esm.js.map +0 -1
  165. package/dist/chunk-JUZG25DH.esm.js +0 -2
  166. package/dist/chunk-JUZG25DH.esm.js.map +0 -1
  167. package/dist/chunk-KOYJODOP.cjs.js +0 -2
  168. package/dist/chunk-KOYJODOP.cjs.js.map +0 -1
  169. package/dist/chunk-M4S5YZ56.esm.js +0 -2
  170. package/dist/chunk-M4S5YZ56.esm.js.map +0 -1
  171. package/dist/chunk-MOYOCJW6.esm.js +0 -2
  172. package/dist/chunk-MOYOCJW6.esm.js.map +0 -1
  173. package/dist/chunk-MVWMLXLL.cjs.js +0 -2
  174. package/dist/chunk-MVWMLXLL.cjs.js.map +0 -1
  175. package/dist/chunk-SL2ZUI4G.cjs.js +0 -2
  176. package/dist/chunk-SL2ZUI4G.cjs.js.map +0 -1
  177. package/dist/chunk-STRDPP3B.esm.js +0 -2
  178. package/dist/chunk-STRDPP3B.esm.js.map +0 -1
  179. package/dist/chunk-U4NMIMU7.esm.js +0 -2
  180. package/dist/chunk-U4NMIMU7.esm.js.map +0 -1
  181. package/dist/chunk-UK47BFA3.cjs.js +0 -2
  182. package/dist/chunk-UK47BFA3.cjs.js.map +0 -1
  183. package/dist/chunk-UTVXFZLD.esm.js +0 -2
  184. package/dist/chunk-UTVXFZLD.esm.js.map +0 -1
  185. package/dist/chunk-WJNYKJP6.cjs.js +0 -2
  186. package/dist/chunk-WJNYKJP6.cjs.js.map +0 -1
  187. package/dist/chunk-YEZB7AOJ.esm.js +0 -2
  188. package/dist/chunk-YEZB7AOJ.esm.js.map +0 -1
  189. package/dist/chunk-YGLYFSF6.cjs.js +0 -2
  190. package/dist/chunk-YGLYFSF6.cjs.js.map +0 -1
  191. package/dist/hooks.cjs.js +0 -2
  192. package/dist/hooks.cjs.js.map +0 -1
  193. package/dist/hooks.d.ts +0 -51
  194. package/dist/hooks.esm.js +0 -2
  195. package/dist/hooks.esm.js.map +0 -1
  196. package/dist/index.cjs.js +0 -2
  197. package/dist/index.d.ts +0 -30
  198. package/dist/index.esm.js +0 -2
  199. package/dist/molecules.cjs.js +0 -2
  200. package/dist/molecules.cjs.js.map +0 -1
  201. package/dist/molecules.d.mts +0 -201
  202. package/dist/molecules.d.ts +0 -201
  203. package/dist/molecules.esm.js +0 -2
  204. package/dist/molecules.esm.js.map +0 -1
  205. package/dist/organisms.cjs.js +0 -2
  206. package/dist/organisms.cjs.js.map +0 -1
  207. package/dist/organisms.d.mts +0 -673
  208. package/dist/organisms.d.ts +0 -673
  209. package/dist/organisms.esm.js +0 -2
  210. package/dist/organisms.esm.js.map +0 -1
  211. package/dist/rhf.cjs.js +0 -2
  212. package/dist/rhf.cjs.js.map +0 -1
  213. package/dist/rhf.d.mts +0 -408
  214. package/dist/rhf.d.ts +0 -408
  215. package/dist/rhf.esm.js +0 -2
  216. package/dist/rhf.esm.js.map +0 -1
  217. package/dist/toast-2xT7L1tJ.d.ts +0 -18
  218. package/dist/tooltip-B4jzaurK.d.ts +0 -104
  219. package/dist/types.cjs.js +0 -2
  220. package/dist/types.cjs.js.map +0 -1
  221. package/dist/types.d.ts +0 -2
  222. package/dist/types.esm.js +0 -2
  223. package/dist/types.esm.js.map +0 -1
  224. package/dist/utils.cjs.js +0 -2
  225. package/dist/utils.cjs.js.map +0 -1
  226. package/dist/utils.d.ts +0 -5
  227. package/dist/utils.esm.js +0 -2
  228. package/dist/utils.esm.js.map +0 -1
  229. /package/dist/{types.d.mts → types/index.d.mts} +0 -0
  230. /package/dist/{utils.d.mts → utils/index.d.mts} +0 -0
@@ -0,0 +1,94 @@
1
+ import * as React from 'react';
2
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
+
4
+ /**
5
+ * Props for a single-item accordion
6
+ */
7
+ type AccordionSingleProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root> & {
8
+ /** The type of accordion - must be "single" for this variant */
9
+ type: "single";
10
+ /** The default value of the accordion item */
11
+ defaultValue?: string;
12
+ /** The controlled value of the accordion item */
13
+ value?: string;
14
+ /** Callback fired when the value changes */
15
+ onValueChange?: (_value: string) => void;
16
+ /** Whether the accordion item can be collapsed */
17
+ collapsible?: boolean;
18
+ };
19
+ /**
20
+ * Props for a multiple-item accordion
21
+ */
22
+ type AccordionMultipleProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root> & {
23
+ /** The type of accordion - must be "multiple" for this variant */
24
+ type: "multiple";
25
+ /** The default values of the accordion items */
26
+ defaultValue?: string[];
27
+ /** The controlled values of the accordion items */
28
+ value?: string[];
29
+ /** Callback fired when the values change */
30
+ onValueChange?: (_value: string[]) => void;
31
+ };
32
+ /**
33
+ * Props for the Accordion component
34
+ */
35
+ type AccordionProps = AccordionSingleProps | AccordionMultipleProps;
36
+ /**
37
+ * Props for an individual accordion item
38
+ */
39
+ interface AccordionItemProps extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> {
40
+ /** The value of the accordion item */
41
+ value: string;
42
+ }
43
+ /**
44
+ * Props for the accordion trigger button
45
+ */
46
+ interface AccordionTriggerProps extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> {
47
+ /** The content of the accordion trigger */
48
+ children: React.ReactNode;
49
+ }
50
+ /**
51
+ * Props for the accordion content panel
52
+ */
53
+ interface AccordionContentProps extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> {
54
+ /** The content of the accordion panel */
55
+ children: React.ReactNode;
56
+ }
57
+
58
+ /**
59
+ * Accordion component that displays a list of expandable/collapsible sections.
60
+ * Built on top of Radix UI's Accordion primitive.
61
+ *
62
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-accordion--docs
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * <Accordion type="single" collapsible>
67
+ * <AccordionItem value="item-1">
68
+ * <AccordionTrigger>Section 1</AccordionTrigger>
69
+ * <AccordionContent>Content 1</AccordionContent>
70
+ * </AccordionItem>
71
+ * <AccordionItem value="item-2">
72
+ * <AccordionTrigger>Section 2</AccordionTrigger>
73
+ * <AccordionContent>Content 2</AccordionContent>
74
+ * </AccordionItem>
75
+ * </Accordion>
76
+ * ```
77
+ */
78
+ declare const Accordion: React.ForwardRefExoticComponent<((Omit<AccordionPrimitive.AccordionSingleProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
79
+ type: "single";
80
+ defaultValue?: string;
81
+ value?: string;
82
+ onValueChange?: (_value: string) => void;
83
+ collapsible?: boolean;
84
+ }) | (Omit<AccordionPrimitive.AccordionMultipleProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
85
+ type: "multiple";
86
+ defaultValue?: string[];
87
+ value?: string[];
88
+ onValueChange?: (_value: string[]) => void;
89
+ })) & React.RefAttributes<HTMLDivElement>>;
90
+ declare const AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps & React.RefAttributes<HTMLDivElement>>;
91
+ declare const AccordionTrigger: React.ForwardRefExoticComponent<AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>>;
92
+ declare const AccordionContent: React.ForwardRefExoticComponent<AccordionContentProps & React.RefAttributes<HTMLDivElement>>;
93
+
94
+ export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps };
@@ -0,0 +1,2 @@
1
+ import*as n from'react';import*as o from'@radix-ui/react-accordion';import {ChevronDown}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function t(...e){return twMerge(clsx(e))}var f=n.forwardRef(({className:e,...r},i)=>jsx(o.Root,{ref:i,className:t("w-full",e),...r}));f.displayName="Accordion";var p=n.forwardRef(({className:e,...r},i)=>jsx(o.Item,{ref:i,className:t("border-b",e),...r}));p.displayName="AccordionItem";var l=n.forwardRef(({className:e,children:r,...i},a)=>jsx(o.Header,{className:"flex",children:jsxs(o.Trigger,{ref:a,className:t("flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",e),...i,children:[r,jsx(ChevronDown,{className:"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200"})]})}));l.displayName=o.Trigger.displayName;var A=n.forwardRef(({className:e,children:r,...i},a)=>jsx(o.Content,{ref:a,className:t("overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",e),...i,children:jsx("div",{className:t("pb-4 pt-0",e),children:r})}));A.displayName=o.Content.displayName;export{f as Accordion,A as AccordionContent,p as AccordionItem,l as AccordionTrigger};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/atoms/accordion/accordion.tsx"],"names":["cn","inputs","twMerge","clsx","Accordion","className","props","ref","jsx","AccordionItem","AccordionTrigger","children","jsxs","ChevronDown","AccordionContent"],"mappings":"iNAGO,SAASA,CAAMC,CAAAA,GAAAA,CAAAA,CAAsB,CAC1C,OAAOC,QAAQC,IAAKF,CAAAA,CAAM,CAAC,CAC7B,KC2BMG,CAAkB,CAAA,CAAA,CAAA,UAAA,CAGtB,CAAC,CAAE,SAAA,CAAAC,EAAW,GAAGC,CAAM,CAAGC,CAAAA,CAAAA,GAC1BC,IAAoB,CAAnB,CAAA,IAAA,CAAA,CAAwB,IAAKD,CAAK,CAAA,SAAA,CAAWP,EAAG,QAAUK,CAAAA,CAAS,CAAI,CAAA,GAAGC,EAAO,CACnF,EACDF,EAAU,WAAc,CAAA,WAAA,KAElBK,CAAsB,CAAA,CAAA,CAAA,UAAA,CAG1B,CAAC,CAAE,UAAAJ,CAAW,CAAA,GAAGC,CAAM,CAAGC,CAAAA,CAAAA,GAC1BC,IAAoB,CAAnB,CAAA,IAAA,CAAA,CAAwB,IAAKD,CAAK,CAAA,SAAA,CAAWP,EAAG,UAAYK,CAAAA,CAAS,EAAI,GAAGC,CAAAA,CAAO,CACrF,EACDG,CAAAA,CAAc,WAAc,CAAA,eAAA,KAEtBC,CAAyB,CAAA,CAAA,CAAA,UAAA,CAG7B,CAAC,CAAE,SAAA,CAAAL,EAAW,QAAAM,CAAAA,CAAAA,CAAU,GAAGL,CAAM,EAAGC,CACpCC,GAAAA,GAAAA,CAAoB,SAAnB,CAA0B,SAAA,CAAU,OACnC,QAAAI,CAAAA,IAAAA,CAAoB,CAAnB,CAAA,OAAA,CAAA,CACC,IAAKL,CACL,CAAA,SAAA,CAAWP,EACT,gJACAK,CAAAA,CACF,EACC,GAAGC,CAAAA,CAEH,UAAAK,CACDH,CAAAA,GAAAA,CAACK,YAAA,CAAY,SAAA,CAAU,2EAA2E,CACpG,CAAA,CAAA,CAAA,CACF,CACD,EACDH,CAAAA,CAAiB,WAAiC,CAAA,CAAA,CAAA,OAAA,CAAQ,YAEpDI,IAAAA,CAAAA,CAAyB,aAG7B,CAAC,CAAE,UAAAT,CAAW,CAAA,QAAA,CAAAM,CAAU,CAAA,GAAGL,CAAM,CAAGC,CAAAA,CAAAA,GACpCC,IAAoB,CAAnB,CAAA,OAAA,CAAA,CACC,IAAKD,CACL,CAAA,SAAA,CAAWP,CACT,CAAA,2GAAA,CACAK,CACF,CACC,CAAA,GAAGC,EAEJ,QAAAE,CAAAA,GAAAA,CAAC,OAAI,SAAWR,CAAAA,CAAAA,CAAG,YAAaK,CAAS,CAAA,CAAI,SAAAM,CAAS,CAAA,CAAA,CACxD,CACD,EACDG,CAAAA,CAAiB,YAAiC,CAAQ,CAAA,OAAA,CAAA,WAAA","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"@/utils/index\"\nimport type {\n AccordionProps,\n AccordionItemProps,\n AccordionTriggerProps,\n AccordionContentProps\n} from \"./accordion.types\"\n\n/**\n * Accordion component that displays a list of expandable/collapsible sections.\n * Built on top of Radix UI's Accordion primitive.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-accordion--docs\n *\n * @example\n * ```tsx\n * <Accordion type=\"single\" collapsible>\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger>Section 1</AccordionTrigger>\n * <AccordionContent>Content 1</AccordionContent>\n * </AccordionItem>\n * <AccordionItem value=\"item-2\">\n * <AccordionTrigger>Section 2</AccordionTrigger>\n * <AccordionContent>Content 2</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n * ```\n */\nconst Accordion = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n AccordionProps\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Root ref={ref} className={cn(\"w-full\", className)} {...props} />\n))\nAccordion.displayName = \"Accordion\"\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n AccordionItemProps\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item ref={ref} className={cn(\"border-b\", className)} {...props} />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n AccordionTriggerProps\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n AccordionContentProps\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\",\n className\n )}\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"]}
@@ -0,0 +1,34 @@
1
+ import * as React$1 from 'react';
2
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
3
+
4
+ /**
5
+ * Avatar component that displays a user's profile picture or fallback.
6
+ * Built on top of Radix UI's Avatar primitive.
7
+ *
8
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-avatar--docs
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <Avatar>
13
+ * <AvatarImage src="/path/to/image.jpg" alt="User avatar" />
14
+ * <AvatarFallback>JD</AvatarFallback>
15
+ * </Avatar>
16
+ * ```
17
+ */
18
+ declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
19
+ /**
20
+ * AvatarImage component that displays the user's profile picture.
21
+ * Falls back to AvatarFallback if the image fails to load.
22
+ */
23
+ declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
24
+ /**
25
+ * AvatarFallback component that displays when the image fails to load.
26
+ * Typically shows the user's initials or a placeholder icon.
27
+ */
28
+ declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
29
+
30
+ type AvatarProps = React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>;
31
+ type AvatarImageProps = React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>;
32
+ type AvatarFallbackProps = React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>;
33
+
34
+ export { Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarImageProps, type AvatarProps };
@@ -0,0 +1,2 @@
1
+ import*as o from'react';import*as a from'@radix-ui/react-avatar';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function l(...r){return twMerge(clsx(r))}var m=o.forwardRef(({className:r,...e},t)=>jsx(a.Root,{ref:t,className:l("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",r),...e}));m.displayName=a.Root.displayName;var v=o.forwardRef(({className:r,...e},t)=>jsx(a.Image,{ref:t,className:l("aspect-square h-full w-full",r),...e}));v.displayName=a.Image.displayName;var s=o.forwardRef(({className:r,...e},t)=>jsx(a.Fallback,{ref:t,className:l("flex h-full w-full items-center justify-center rounded-full bg-muted",r),...e}));s.displayName=a.Fallback.displayName;export{m as Avatar,s as AvatarFallback,v as AvatarImage};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/atoms/avatar/avatar.tsx"],"names":["cn","inputs","twMerge","clsx","Avatar","className","props","ref","jsx","AvatarImage","AvatarFallback"],"mappings":"kKAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAsB,CAAA,CAC1C,OAAOC,OAAAA,CAAQC,IAAKF,CAAAA,CAAM,CAAC,CAC7B,KCcMG,CAAe,CAAA,CAAA,CAAA,UAAA,CACnB,CAAC,CAAE,SAAAC,CAAAA,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,CACxBC,GAAAA,GAAAA,CAAiB,CAAhB,CAAA,IAAA,CAAA,CACC,IAAKD,CACL,CAAA,SAAA,CAAWP,CAAG,CAAA,+DAAA,CAAiEK,CAAS,CAAA,CACvF,GAAGC,CAAAA,CACN,CAEJ,EACAF,CAAO,CAAA,WAAA,CAA8B,CAAK,CAAA,IAAA,CAAA,WAAA,KAMpCK,CAAoB,CAAA,CAAA,CAAA,UAAA,CAGxB,CAAC,CAAE,SAAAJ,CAAAA,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,CAC1BC,GAAAA,GAAAA,CAAiB,CAAhB,CAAA,KAAA,CAAA,CACC,IAAKD,CACL,CAAA,SAAA,CAAWP,CAAG,CAAA,6BAAA,CAA+BK,CAAS,CAAA,CACrD,GAAGC,CAAAA,CACN,CACD,EACDG,CAAY,CAAA,WAAA,CAA8B,CAAM,CAAA,KAAA,CAAA,WAAA,KAM1CC,CAAuB,CAAA,CAAA,CAAA,UAAA,CAG3B,CAAC,CAAE,SAAAL,CAAAA,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,CAC1BC,GAAAA,GAAAA,CAAiB,CAAhB,CAAA,QAAA,CAAA,CACC,IAAKD,CACL,CAAA,SAAA,CAAWP,CACT,CAAA,sEAAA,CACAK,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CACD,EACDI,CAAe,CAAA,WAAA,CAA8B,CAAS,CAAA,QAAA,CAAA,WAAA","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\nimport { cn } from \"@/utils/index\"\nimport type { AvatarProps, AvatarImageProps, AvatarFallbackProps } from \"./avatar.types\"\n\n/**\n * Avatar component that displays a user's profile picture or fallback.\n * Built on top of Radix UI's Avatar primitive.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-avatar--docs\n *\n * @example\n * ```tsx\n * <Avatar>\n * <AvatarImage src=\"/path/to/image.jpg\" alt=\"User avatar\" />\n * <AvatarFallback>JD</AvatarFallback>\n * </Avatar>\n * ```\n */\nconst Avatar = React.forwardRef<React.ElementRef<typeof AvatarPrimitive.Root>, AvatarProps>(\n ({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\", className)}\n {...props}\n />\n )\n)\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\n/**\n * AvatarImage component that displays the user's profile picture.\n * Falls back to AvatarFallback if the image fails to load.\n */\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n AvatarImageProps\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\n/**\n * AvatarFallback component that displays when the image fails to load.\n * Typically shows the user's initials or a placeholder icon.\n */\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n AvatarFallbackProps\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n"]}
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+ import React__default from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import * as class_variance_authority_dist_types from 'class-variance-authority/dist/types';
5
+
6
+ declare const badgeVariants: (props?: ({
7
+ variant?: "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "info" | null | undefined;
8
+ size?: "default" | "sm" | "lg" | null | undefined;
9
+ } & class_variance_authority_dist_types.ClassProp) | undefined) => string;
10
+
11
+ interface BadgeProps extends React__default.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
12
+ /**
13
+ * The content to display inside the badge
14
+ */
15
+ children: React__default.ReactNode;
16
+ /**
17
+ * Optional icon to display before the badge content
18
+ */
19
+ icon?: React__default.ReactNode;
20
+ /**
21
+ * Optional icon to display after the badge content
22
+ */
23
+ iconAfter?: React__default.ReactNode;
24
+ }
25
+
26
+ /**
27
+ * Badge component for displaying status, counts, or labels.
28
+ * Supports various variants, sizes, and optional icons.
29
+ *
30
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-badge--docs
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * <Badge variant="success">Active</Badge>
35
+ * <Badge variant="warning" icon={<AlertIcon />}>Warning</Badge>
36
+ * <Badge variant="info" size="lg" iconAfter={<ArrowIcon />}>New</Badge>
37
+ * ```
38
+ */
39
+ declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLDivElement>>;
40
+
41
+ export { Badge, type BadgeProps, badgeVariants };
@@ -0,0 +1,2 @@
1
+ import*as s from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsxs,jsx}from'react/jsx-runtime';function r(...e){return twMerge(clsx(e))}var t=cva("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground",success:"border-transparent bg-green-500 text-white hover:bg-green-500/80",warning:"border-transparent bg-yellow-500 text-white hover:bg-yellow-500/80",info:"border-transparent bg-blue-500 text-white hover:bg-blue-500/80"},size:{default:"h-5",sm:"h-4 text-[10px]",lg:"h-6 text-sm"}},defaultVariants:{variant:"default",size:"default"}});var i=s.forwardRef(({className:e,variant:d,size:p,icon:a,iconAfter:o,children:g,...f},l)=>jsxs("div",{ref:l,className:r(t({variant:d,size:p}),e),...f,children:[a&&jsx("span",{className:"mr-1",children:a}),g,o&&jsx("span",{className:"ml-1",children:o})]}));i.displayName="Badge";export{i as Badge,t as badgeVariants};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/atoms/badge/badge.variants.ts","../../src/components/atoms/badge/badge.tsx"],"names":["cn","inputs","twMerge","clsx","badgeVariants","cva","Badge","className","variant","size","icon","iconAfter","children","props","ref","jsxs","jsx"],"mappings":"yKAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAQC,CAAAA,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCHaG,IAAAA,CAAAA,CAAgBC,GAC3B,CAAA,wKAAA,CACA,CACE,QAAU,CAAA,CACR,OAAS,CAAA,CACP,OAAS,CAAA,2EAAA,CACT,SACE,CAAA,iFAAA,CACF,WACE,CAAA,uFAAA,CACF,OAAS,CAAA,iBAAA,CACT,OAAS,CAAA,kEAAA,CACT,OAAS,CAAA,oEAAA,CACT,KAAM,gEACR,CAAA,CACA,IAAM,CAAA,CACJ,OAAS,CAAA,KAAA,CACT,EAAI,CAAA,iBAAA,CACJ,GAAI,aACN,CACF,CACA,CAAA,eAAA,CAAiB,CACf,OAAA,CAAS,SACT,CAAA,IAAA,CAAM,SACR,CACF,CACF,ECVA,IAAMC,CAAc,CAAA,CAAA,CAAA,UAAA,CAClB,CAAC,CAAE,SAAAC,CAAAA,CAAAA,CAAW,QAAAC,CAAS,CAAA,IAAA,CAAAC,CAAM,CAAA,IAAA,CAAAC,CAAM,CAAA,SAAA,CAAAC,CAAW,CAAA,QAAA,CAAAC,CAAU,CAAA,GAAGC,CAAM,CAAA,CAAGC,CAEhEC,GAAAA,IAAAA,CAAC,KAAI,CAAA,CAAA,GAAA,CAAKD,EAAK,SAAWd,CAAAA,CAAAA,CAAGI,CAAc,CAAA,CAAE,OAAAI,CAAAA,CAAAA,CAAS,IAAAC,CAAAA,CAAK,CAAC,CAAA,CAAGF,CAAS,CAAA,CAAI,GAAGM,CAAAA,CAC5E,QAAAH,CAAAA,CAAAA,CAAAA,EAAQM,IAAC,MAAK,CAAA,CAAA,SAAA,CAAU,MAAQ,CAAA,QAAA,CAAAN,CAAK,CAAA,CAAA,CACrCE,CACAD,CAAAA,CAAAA,EAAaK,IAAC,MAAK,CAAA,CAAA,SAAA,CAAU,MAAQ,CAAA,QAAA,CAAAL,CAAU,CAAA,CAAA,CAAA,CAClD,CAGN,EAEAL,EAAM,WAAc,CAAA,OAAA","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { cva } from \"class-variance-authority\"\n\nexport const badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n success: \"border-transparent bg-green-500 text-white hover:bg-green-500/80\",\n warning: \"border-transparent bg-yellow-500 text-white hover:bg-yellow-500/80\",\n info: \"border-transparent bg-blue-500 text-white hover:bg-blue-500/80\"\n },\n size: {\n default: \"h-5\",\n sm: \"h-4 text-[10px]\",\n lg: \"h-6 text-sm\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n)\n","import * as React from \"react\"\nimport { cn } from \"@/utils/index\"\nimport { badgeVariants } from \"./badge.variants\"\nimport type { BadgeProps } from \"./badge.types\"\n\n/**\n * Badge component for displaying status, counts, or labels.\n * Supports various variants, sizes, and optional icons.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-badge--docs\n *\n * @example\n * ```tsx\n * <Badge variant=\"success\">Active</Badge>\n * <Badge variant=\"warning\" icon={<AlertIcon />}>Warning</Badge>\n * <Badge variant=\"info\" size=\"lg\" iconAfter={<ArrowIcon />}>New</Badge>\n * ```\n */\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n ({ className, variant, size, icon, iconAfter, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(badgeVariants({ variant, size }), className)} {...props}>\n {icon && <span className=\"mr-1\">{icon}</span>}\n {children}\n {iconAfter && <span className=\"ml-1\">{iconAfter}</span>}\n </div>\n )\n }\n)\n\nBadge.displayName = \"Badge\"\n\nexport { Badge, badgeVariants }\n"]}
@@ -0,0 +1,50 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * Box is a fundamental layout component that serves as a building block for other components.
5
+ * It's a polymorphic component that can render as different HTML elements while maintaining
6
+ * consistent styling and behavior.
7
+ *
8
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-box--docs
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * // Basic usage
13
+ * <Box>Content</Box>
14
+ *
15
+ * // As a different element
16
+ * <Box as="section">Section content</Box>
17
+ *
18
+ * // With custom className
19
+ * <Box className="bg-primary text-white p-4">Styled content</Box>
20
+ *
21
+ * // With custom dimensions
22
+ * <Box width="100px" height="200px">Fixed size content</Box>
23
+ * <Box width="50%" height="auto">Responsive content</Box>
24
+ * ```
25
+ */
26
+
27
+ type BoxComponent = "div" | "span" | "section" | "article" | "main" | "aside" | "header" | "footer" | "nav";
28
+ type DimensionValue = string | number;
29
+ interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {
30
+ /**
31
+ * The HTML element to render the Box as.
32
+ * This allows for semantic HTML while maintaining consistent styling.
33
+ *
34
+ * @default "div"
35
+ */
36
+ as?: BoxComponent;
37
+ /**
38
+ * The width of the Box component.
39
+ * Can be a number (interpreted as pixels) or a string (e.g., "100%", "50px", "10rem").
40
+ */
41
+ width?: DimensionValue;
42
+ /**
43
+ * The height of the Box component.
44
+ * Can be a number (interpreted as pixels) or a string (e.g., "100%", "50px", "10rem").
45
+ */
46
+ height?: DimensionValue;
47
+ }
48
+ declare const Box: React.ForwardRefExoticComponent<BoxProps & React.RefAttributes<HTMLDivElement>>;
49
+
50
+ export { Box, type BoxProps };
@@ -0,0 +1,2 @@
1
+ import*as r from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function n(...e){return twMerge(clsx(e))}var x=r.forwardRef(({as:e="div",className:s,width:o,height:t,style:a,...i},m)=>{let p={width:typeof o=="number"?`${o}px`:o,height:typeof t=="number"?`${t}px`:t,...a};return jsx(e,{ref:m,className:n(s),style:p,...i})});x.displayName="Box";export{x as Box};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/atoms/box/box.tsx"],"names":["cn","inputs","twMerge","clsx","Box","Component","className","width","height","style","props","ref","dimensionStyles","jsx"],"mappings":"yHAGO,SAASA,KAAMC,CAAsB,CAAA,CAC1C,OAAOC,OAAQC,CAAAA,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCwDA,IAAMG,EAAY,CAChB,CAAA,UAAA,CAAA,CAAC,CAAE,EAAIC,CAAAA,CAAAA,CAAY,KAAO,CAAA,SAAA,CAAAC,EAAW,KAAAC,CAAAA,CAAAA,CAAO,OAAAC,CAAQ,CAAA,KAAA,CAAAC,EAAO,GAAGC,CAAM,CAAGC,CAAAA,CAAAA,GAAQ,CAC7E,IAAMC,CAAAA,CAAkB,CACtB,KAAO,CAAA,OAAOL,GAAU,QAAW,CAAA,CAAA,EAAGA,CAAK,CAAA,EAAA,CAAA,CAAOA,EAClD,MAAQ,CAAA,OAAOC,GAAW,QAAW,CAAA,CAAA,EAAGA,CAAM,CAAOA,EAAAA,CAAAA,CAAAA,CAAAA,CACrD,GAAGC,CACL,EAEA,OAAOI,GAAAA,CAACR,EAAA,CAAU,GAAA,CAAKM,EAAK,SAAWX,CAAAA,CAAAA,CAAGM,CAAS,CAAG,CAAA,KAAA,CAAOM,EAAkB,GAAGF,CAAAA,CAAO,CAC3F,CACF,EAEAN,EAAI,WAAc,CAAA,KAAA","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","/**\n * Box is a fundamental layout component that serves as a building block for other components.\n * It's a polymorphic component that can render as different HTML elements while maintaining\n * consistent styling and behavior.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-box--docs\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Box>Content</Box>\n *\n * // As a different element\n * <Box as=\"section\">Section content</Box>\n *\n * // With custom className\n * <Box className=\"bg-primary text-white p-4\">Styled content</Box>\n *\n * // With custom dimensions\n * <Box width=\"100px\" height=\"200px\">Fixed size content</Box>\n * <Box width=\"50%\" height=\"auto\">Responsive content</Box>\n * ```\n */\nimport * as React from \"react\"\nimport { cn } from \"@/utils\"\n\ntype BoxComponent =\n | \"div\"\n | \"span\"\n | \"section\"\n | \"article\"\n | \"main\"\n | \"aside\"\n | \"header\"\n | \"footer\"\n | \"nav\"\n\ntype DimensionValue = string | number\n\nexport interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * The HTML element to render the Box as.\n * This allows for semantic HTML while maintaining consistent styling.\n *\n * @default \"div\"\n */\n as?: BoxComponent\n\n /**\n * The width of the Box component.\n * Can be a number (interpreted as pixels) or a string (e.g., \"100%\", \"50px\", \"10rem\").\n */\n width?: DimensionValue\n\n /**\n * The height of the Box component.\n * Can be a number (interpreted as pixels) or a string (e.g., \"100%\", \"50px\", \"10rem\").\n */\n height?: DimensionValue\n}\n\nconst Box = React.forwardRef<HTMLDivElement, BoxProps>(\n ({ as: Component = \"div\", className, width, height, style, ...props }, ref) => {\n const dimensionStyles = {\n width: typeof width === \"number\" ? `${width}px` : width,\n height: typeof height === \"number\" ? `${height}px` : height,\n ...style\n }\n\n return <Component ref={ref} className={cn(className)} style={dimensionStyles} {...props} />\n }\n)\n\nBox.displayName = \"Box\"\n\nexport { Box }\n"]}
@@ -0,0 +1,35 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ interface BreadcrumbProps extends React.ComponentPropsWithoutRef<"nav"> {
5
+ separator?: React.ReactNode;
6
+ }
7
+ interface BreadcrumbListProps extends React.ComponentPropsWithoutRef<"ol"> {
8
+ }
9
+ interface BreadcrumbItemProps extends React.ComponentPropsWithoutRef<"li"> {
10
+ }
11
+ interface BreadcrumbLinkProps extends React.ComponentPropsWithoutRef<"a"> {
12
+ asChild?: boolean;
13
+ }
14
+ interface BreadcrumbPageProps extends React.ComponentPropsWithoutRef<"span"> {
15
+ }
16
+ interface BreadcrumbSeparatorProps extends React.ComponentProps<"li"> {
17
+ }
18
+ interface BreadcrumbEllipsisProps extends React.ComponentProps<"span"> {
19
+ }
20
+
21
+ declare const Breadcrumb: React.ForwardRefExoticComponent<BreadcrumbProps & React.RefAttributes<HTMLElement>>;
22
+ declare const BreadcrumbList: React.ForwardRefExoticComponent<BreadcrumbListProps & React.RefAttributes<HTMLOListElement>>;
23
+ declare const BreadcrumbItem: React.ForwardRefExoticComponent<BreadcrumbItemProps & React.RefAttributes<HTMLLIElement>>;
24
+ declare const BreadcrumbLink: React.ForwardRefExoticComponent<BreadcrumbLinkProps & React.RefAttributes<HTMLAnchorElement>>;
25
+ declare const BreadcrumbPage: React.ForwardRefExoticComponent<BreadcrumbPageProps & React.RefAttributes<HTMLSpanElement>>;
26
+ declare const BreadcrumbSeparator: {
27
+ ({ children, className, ...props }: BreadcrumbSeparatorProps): react_jsx_runtime.JSX.Element;
28
+ displayName: string;
29
+ };
30
+ declare const BreadcrumbEllipsis: {
31
+ ({ className, ...props }: BreadcrumbEllipsisProps): react_jsx_runtime.JSX.Element;
32
+ displayName: string;
33
+ };
34
+
35
+ export { Breadcrumb, BreadcrumbEllipsis, type BreadcrumbEllipsisProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, type BreadcrumbListProps, BreadcrumbPage, type BreadcrumbPageProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps };
@@ -0,0 +1,2 @@
1
+ import*as o from'react';import {Slot}from'@radix-ui/react-slot';import {ChevronRight,MoreHorizontal}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function m(...r){return twMerge(clsx(r))}var t=o.forwardRef(({...r},e)=>jsx("nav",{ref:e,"aria-label":"breadcrumb",...r}));t.displayName="Breadcrumb";var c=o.forwardRef(({className:r,...e},a)=>jsx("ol",{ref:a,className:m("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",r),...e}));c.displayName="BreadcrumbList";var p=o.forwardRef(({className:r,...e},a)=>jsx("li",{ref:a,className:m("inline-flex items-center gap-1.5",r),...e}));p.displayName="BreadcrumbItem";var d=o.forwardRef(({asChild:r,className:e,...a},u)=>jsx(r?Slot:"a",{ref:u,className:m("transition-colors hover:text-foreground",e),...a}));d.displayName="BreadcrumbLink";var i=o.forwardRef(({className:r,...e},a)=>jsx("span",{ref:a,role:"link","aria-disabled":"true","aria-current":"page",className:m("font-normal text-foreground",r),...e}));i.displayName="BreadcrumbPage";var l=({children:r,className:e,...a})=>jsx("li",{role:"presentation","aria-hidden":"true",className:m("[&>svg]:w-3.5 [&>svg]:h-3.5",e),...a,children:r??jsx(ChevronRight,{})});l.displayName="BreadcrumbSeparator";var n=({className:r,...e})=>jsxs("span",{role:"presentation","aria-hidden":"true",className:m("flex h-9 w-9 items-center justify-center",r),...e,children:[jsx(MoreHorizontal,{className:"h-4 w-4"}),jsx("span",{className:"sr-only",children:"More"})]});n.displayName="BreadcrumbEllipsis";export{t as Breadcrumb,n as BreadcrumbEllipsis,p as BreadcrumbItem,d as BreadcrumbLink,c as BreadcrumbList,i as BreadcrumbPage,l as BreadcrumbSeparator};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/atoms/breadcrumb/breadcrumb.tsx"],"names":["cn","inputs","twMerge","clsx","Breadcrumb","props","ref","jsx","BreadcrumbList","className","BreadcrumbItem","BreadcrumbLink","asChild","Slot","BreadcrumbPage","BreadcrumbSeparator","children","ChevronRight","BreadcrumbEllipsis","jsxs","MoreHorizontal"],"mappings":"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","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","/**\n * Breadcrumb component that displays the current page's location within a navigational hierarchy.\n * Built on top of Radix UI's Slot primitive.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-breadcrumb--docs\n *\n * @example\n * ```tsx\n * <Breadcrumb>\n * <BreadcrumbList>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbPage>Current Page</BreadcrumbPage>\n * </BreadcrumbItem>\n * </BreadcrumbList>\n * </Breadcrumb>\n * ```\n */\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/utils/index\"\nimport {\n BreadcrumbProps,\n BreadcrumbListProps,\n BreadcrumbItemProps,\n BreadcrumbLinkProps,\n BreadcrumbPageProps,\n BreadcrumbSeparatorProps,\n BreadcrumbEllipsisProps\n} from \"./breadcrumb.types\"\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(({ ...props }, ref) => (\n <nav ref={ref} aria-label=\"breadcrumb\" {...props} />\n))\nBreadcrumb.displayName = \"Breadcrumb\"\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, BreadcrumbListProps>(\n ({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n)\nBreadcrumbList.displayName = \"BreadcrumbList\"\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"inline-flex items-center gap-1.5\", className)} {...props} />\n )\n)\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n ({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n )\n }\n)\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n )\n)\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n\nconst BreadcrumbSeparator = ({ children, className, ...props }: BreadcrumbSeparatorProps) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:w-3.5 [&>svg]:h-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n\nconst BreadcrumbEllipsis = ({ className, ...props }: BreadcrumbEllipsisProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\"\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis\n}\n"]}
@@ -1,7 +1,6 @@
1
- import * as class_variance_authority_types from 'class-variance-authority/types';
1
+ import * as class_variance_authority_dist_types from 'class-variance-authority/dist/types';
2
2
  import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
- import * as TooltipPrimitive from '@radix-ui/react-tooltip';
5
4
 
6
5
  /**
7
6
  * Props interface for the Button component.
@@ -44,7 +43,7 @@ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, Var
44
43
  declare const buttonVariants: (props?: ({
45
44
  variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
46
45
  size?: "default" | "sm" | "lg" | "icon" | null | undefined;
47
- } & class_variance_authority_types.ClassProp) | undefined) => string;
46
+ } & class_variance_authority_dist_types.ClassProp) | undefined) => string;
48
47
  /**
49
48
  * A versatile button component that supports multiple variants, sizes, and can be rendered as a child component.
50
49
  * Built on top of Radix UI's Slot primitive for maximum flexibility.
@@ -80,25 +79,4 @@ declare const buttonVariants: (props?: ({
80
79
  */
81
80
  declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
82
81
 
83
- /**
84
- * TooltipProvider component for creating accessible tooltips.
85
- * Built on top of Radix UI's Tooltip primitive.
86
- *
87
- * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-tooltip--docs
88
- *
89
- * @example
90
- * ```tsx
91
- * <TooltipProvider>
92
- * <Tooltip>
93
- * <TooltipTrigger>Hover me</TooltipTrigger>
94
- * <TooltipContent>Tooltip content</TooltipContent>
95
- * </Tooltip>
96
- * </TooltipProvider>
97
- * ```
98
- */
99
- declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
100
- declare const Tooltip: React.FC<TooltipPrimitive.TooltipProps>;
101
- declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
102
- declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
103
-
104
- export { Button as B, Tooltip as T, type ButtonProps as a, buttonVariants as b, TooltipTrigger as c, TooltipContent as d, TooltipProvider as e };
82
+ export { Button, type ButtonProps, buttonVariants };
@@ -0,0 +1,2 @@
1
+ import*as y from'react';import {Slot}from'@radix-ui/react-slot';import {cva}from'class-variance-authority';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {Loader2}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function i(...t){return twMerge(clsx(t))}var v=cva("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),N=y.forwardRef(({className:t,variant:d,size:u,asChild:l=false,startIcon:m,endIcon:c,loading:r=false,disabled:h,children:o,type:f="button","aria-label":x,...a},b)=>{let p=l?Slot:"button",e=h||r,g=x||(typeof o=="string"?o:void 0),w=n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),!e&&a.onClick&&a.onClick(n));};return l?jsx(p,{className:i(v({variant:d,size:u,className:t})),ref:b,disabled:e,type:f,"aria-label":g,"aria-disabled":e,...a,children:o}):jsxs(p,{className:i(v({variant:d,size:u,className:t})),ref:b,disabled:e,type:f,"aria-label":g,"aria-disabled":e,onKeyDown:w,...a,children:[r&&jsx(Loader2,{className:"mr-2 h-4 w-4 animate-spin",role:"status","aria-label":"Loading","aria-hidden":"true"}),!r&&m&&jsx("span",{className:"mr-2","aria-hidden":"true",children:m}),o,!r&&c&&jsx("span",{className:"ml-2","aria-hidden":"true",children:c})]})});N.displayName="Button";export{N as Button,v as buttonVariants};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/atoms/button/button.tsx"],"names":["cn","inputs","twMerge","clsx","buttonVariants","cva","Button","className","variant","size","asChild","startIcon","endIcon","loading","disabled","children","type","ariaLabel","props","ref","Comp","Slot","isDisabled","buttonAriaLabel","handleKeyDown","event","jsx","jsxs","Loader2"],"mappings":"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","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { cn } from \"@/utils/cn\"\nimport { Loader2 } from \"lucide-react\"\nimport { ButtonProps } from \"./button.types\"\n\n/**\n * Button variant styles using class-variance-authority.\n * Defines the visual styles for different button variants and sizes.\n * Follows WCAG 2.1 Level AA guidelines for accessibility.\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"lg\">Click me</Button>\n * ```\n */\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\"\n } as const,\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\"\n } as const\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n)\n\n/**\n * A versatile button component that supports multiple variants, sizes, and can be rendered as a child component.\n * Built on top of Radix UI's Slot primitive for maximum flexibility.\n * Implements proper accessibility features and follows WCAG 2.1 Level AA guidelines.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-button--docs\n *\n * @component\n * @example\n * ```tsx\n * // Default button\n * <Button>Click me</Button>\n *\n * // Destructive button with small size\n * <Button variant=\"destructive\" size=\"sm\">Delete</Button>\n *\n * // As a link\n * <Button variant=\"link\" asChild>\n * <a href=\"/about\">About</a>\n * </Button>\n *\n * // With icons\n * <Button startIcon={<Icon />}>With Start Icon</Button>\n * <Button endIcon={<Icon />}>With End Icon</Button>\n *\n * // Loading state\n * <Button loading>Loading</Button>\n * ```\n *\n * @param {ButtonProps} props - The component props\n * @param {React.Ref<HTMLButtonElement>} ref - Forwarded ref\n * @returns {JSX.Element} A button element\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n startIcon,\n endIcon,\n loading = false,\n disabled,\n children,\n type = \"button\",\n \"aria-label\": ariaLabel,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const isDisabled = disabled || loading\n const buttonAriaLabel = ariaLabel || (typeof children === \"string\" ? children : undefined)\n\n // Handle keyboard interaction\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n if (!isDisabled && props.onClick) {\n props.onClick(event as unknown as React.MouseEvent<HTMLButtonElement>)\n }\n }\n }\n\n if (asChild) {\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={isDisabled}\n type={type}\n aria-label={buttonAriaLabel}\n aria-disabled={isDisabled}\n {...props}\n >\n {children}\n </Comp>\n )\n }\n\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={isDisabled}\n type={type}\n aria-label={buttonAriaLabel}\n aria-disabled={isDisabled}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {loading && (\n <Loader2\n className=\"mr-2 h-4 w-4 animate-spin\"\n role=\"status\"\n aria-label=\"Loading\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && startIcon && (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {startIcon}\n </span>\n )}\n {children}\n {!loading && endIcon && (\n <span className=\"ml-2\" aria-hidden=\"true\">\n {endIcon}\n </span>\n )}\n </Comp>\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"]}
@@ -0,0 +1,127 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * Props interface for the Card component.
5
+ * Extends the native div HTML attributes and adds support for custom styling.
6
+ *
7
+ * @interface CardProps
8
+ * @extends {React.HTMLAttributes<HTMLDivElement>}
9
+ */
10
+ interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
11
+ }
12
+ /**
13
+ * Props interface for the CardHeader component.
14
+ * Extends the native div HTML attributes and adds support for custom styling.
15
+ *
16
+ * @interface CardHeaderProps
17
+ * @extends {React.HTMLAttributes<HTMLDivElement>}
18
+ */
19
+ interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
20
+ }
21
+ /**
22
+ * Props interface for the CardTitle component.
23
+ * Extends the native heading HTML attributes and adds support for custom styling.
24
+ *
25
+ * @interface CardTitleProps
26
+ * @extends {React.HTMLAttributes<HTMLHeadingElement>}
27
+ */
28
+ interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
29
+ }
30
+ /**
31
+ * Props interface for the CardDescription component.
32
+ * Extends the native paragraph HTML attributes and adds support for custom styling.
33
+ *
34
+ * @interface CardDescriptionProps
35
+ * @extends {React.HTMLAttributes<HTMLParagraphElement>}
36
+ */
37
+ interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {
38
+ }
39
+ /**
40
+ * Props interface for the CardContent component.
41
+ * Extends the native div HTML attributes and adds support for custom styling.
42
+ *
43
+ * @interface CardContentProps
44
+ * @extends {React.HTMLAttributes<HTMLDivElement>}
45
+ */
46
+ interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {
47
+ }
48
+ /**
49
+ * Props interface for the CardFooter component.
50
+ * Extends the native div HTML attributes and adds support for custom styling.
51
+ *
52
+ * @interface CardFooterProps
53
+ * @extends {React.HTMLAttributes<HTMLDivElement>}
54
+ */
55
+ interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {
56
+ }
57
+
58
+ /**
59
+ * Card is a flexible container component that can be used to group related content and actions.
60
+ * It provides a consistent visual style with a subtle border, shadow, and rounded corners.
61
+ *
62
+ */
63
+
64
+ /**
65
+ * The main card container component.
66
+ * Provides the base styling for the card including border, shadow, and rounded corners.
67
+ * * @url https://sergii-melnykov.github.io/ui/?path=/docs/molecules-card--docs
68
+ *
69
+ * @example
70
+ * ```tsx
71
+ * // Basic card
72
+ * <Card>
73
+ * <CardHeader>
74
+ * <CardTitle>Card Title</CardTitle>
75
+ * <CardDescription>Card Description</CardDescription>
76
+ * </CardHeader>
77
+ * <CardContent>
78
+ * <p>Card content goes here.</p>
79
+ * </CardContent>
80
+ * <CardFooter>
81
+ * <Button>Action</Button>
82
+ * </CardFooter>
83
+ * </Card>
84
+ *
85
+ * // Card with custom styling
86
+ * <Card className="bg-primary text-primary-foreground">
87
+ * <CardHeader>
88
+ * <CardTitle>Custom Styled Card</CardTitle>
89
+ * </CardHeader>
90
+ * <CardContent>
91
+ * <p>This card has custom background and text colors.</p>
92
+ * </CardContent>
93
+ * </Card>
94
+ * ```
95
+ */
96
+ declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
97
+ /**
98
+ * Header section of the card.
99
+ * Typically contains the card title and description.
100
+ * Includes padding and spacing for consistent layout.
101
+ */
102
+ declare const CardHeader: React.ForwardRefExoticComponent<CardHeaderProps & React.RefAttributes<HTMLDivElement>>;
103
+ /**
104
+ * Title component for the card.
105
+ * Should be used within CardHeader.
106
+ * Provides consistent typography styling for card titles.
107
+ */
108
+ declare const CardTitle: React.ForwardRefExoticComponent<CardTitleProps & React.RefAttributes<HTMLParagraphElement>>;
109
+ /**
110
+ * Description component for the card.
111
+ * Should be used within CardHeader.
112
+ * Provides consistent typography styling for card descriptions.
113
+ */
114
+ declare const CardDescription: React.ForwardRefExoticComponent<CardDescriptionProps & React.RefAttributes<HTMLParagraphElement>>;
115
+ /**
116
+ * Main content section of the card.
117
+ * Includes padding and removes top padding to maintain consistent spacing with the header.
118
+ */
119
+ declare const CardContent: React.ForwardRefExoticComponent<CardContentProps & React.RefAttributes<HTMLDivElement>>;
120
+ /**
121
+ * Footer section of the card.
122
+ * Typically contains action buttons or additional information.
123
+ * Includes padding and removes top padding to maintain consistent spacing with the content.
124
+ */
125
+ declare const CardFooter: React.ForwardRefExoticComponent<CardFooterProps & React.RefAttributes<HTMLDivElement>>;
126
+
127
+ export { Card, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, CardTitle, type CardTitleProps };
@@ -0,0 +1,2 @@
1
+ import*as t from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function o(...r){return twMerge(clsx(r))}var i=t.forwardRef(({className:r,...e},a)=>jsx("div",{ref:a,className:o("rounded-lg border bg-card text-card-foreground shadow-sm",r),...e}));i.displayName="Card";var l=t.forwardRef(({className:r,...e},a)=>jsx("div",{ref:a,className:o("flex flex-col space-y-1.5 p-6",r),...e}));l.displayName="CardHeader";var m=t.forwardRef(({className:r,children:e,...a},s)=>jsx("h3",{ref:s,className:o("text-2xl font-semibold leading-none tracking-tight",r),...a,children:e}));m.displayName="CardTitle";var c=t.forwardRef(({className:r,...e},a)=>jsx("p",{ref:a,className:o("text-sm text-muted-foreground",r),...e}));c.displayName="CardDescription";var f=t.forwardRef(({className:r,...e},a)=>jsx("div",{ref:a,className:o("p-6 pt-0",r),...e}));f.displayName="CardContent";var C=t.forwardRef(({className:r,...e},a)=>jsx("div",{ref:a,className:o("flex items-center p-6 pt-0",r),...e}));C.displayName="CardFooter";export{i as Card,f as CardContent,c as CardDescription,C as CardFooter,l as CardHeader,m as CardTitle};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/molecules/card/card.tsx"],"names":["cn","inputs","twMerge","clsx","Card","className","props","ref","jsx","CardHeader","CardTitle","children","CardDescription","CardContent","CardFooter"],"mappings":"yHAGO,SAASA,CAAMC,CAAAA,GAAAA,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CC2CA,IAAMG,EAAa,CAAsC,CAAA,UAAA,CAAA,CAAC,CAAE,SAAAC,CAAAA,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,IACjFC,GAAC,CAAA,KAAA,CAAA,CACC,IAAKD,CACL,CAAA,SAAA,CAAWP,EAAG,0DAA4DK,CAAAA,CAAS,EAClF,GAAGC,CAAAA,CACN,CACD,EACDF,CAAAA,CAAK,YAAc,MAOnB,CAAA,IAAMK,EAAmB,CACvB,CAAA,UAAA,CAAA,CAAC,CAAE,SAAAJ,CAAAA,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,IACxBC,GAAC,CAAA,KAAA,CAAA,CAAI,IAAKD,CAAK,CAAA,SAAA,CAAWP,EAAG,+BAAiCK,CAAAA,CAAS,EAAI,GAAGC,CAAAA,CAAO,CAEzF,EACAG,CAAAA,CAAW,YAAc,YAOzB,CAAA,IAAMC,EAAkB,CACtB,CAAA,UAAA,CAAA,CAAC,CAAE,SAAAL,CAAAA,CAAAA,CAAW,SAAAM,CAAU,CAAA,GAAGL,CAAM,CAAGC,CAAAA,CAAAA,GAClCC,IAAC,IACC,CAAA,CAAA,GAAA,CAAKD,EACL,SAAWP,CAAAA,CAAAA,CAAG,qDAAsDK,CAAS,CAAA,CAC5E,GAAGC,CAEH,CAAA,QAAA,CAAAK,EACH,CAEJ,EACAD,EAAU,WAAc,CAAA,WAAA,KAOlBE,CAAwB,CAAA,CAAA,CAAA,UAAA,CAC5B,CAAC,CAAE,SAAA,CAAAP,EAAW,GAAGC,CAAM,EAAGC,CACxBC,GAAAA,GAAAA,CAAC,KAAE,GAAKD,CAAAA,CAAAA,CAAK,UAAWP,CAAG,CAAA,+BAAA,CAAiCK,CAAS,CAAI,CAAA,GAAGC,EAAO,CAEvF,EACAM,EAAgB,WAAc,CAAA,iBAAA,KAMxBC,CAAoB,CAAA,CAAA,CAAA,UAAA,CACxB,CAAC,CAAE,SAAA,CAAAR,EAAW,GAAGC,CAAM,EAAGC,CACxBC,GAAAA,GAAAA,CAAC,OAAI,GAAKD,CAAAA,CAAAA,CAAK,UAAWP,CAAG,CAAA,UAAA,CAAYK,CAAS,CAAI,CAAA,GAAGC,EAAO,CAEpE,EACAO,EAAY,WAAc,CAAA,aAAA,KAOpBC,CAAmB,CAAA,CAAA,CAAA,UAAA,CACvB,CAAC,CAAE,SAAA,CAAAT,EAAW,GAAGC,CAAM,EAAGC,CACxBC,GAAAA,GAAAA,CAAC,OAAI,GAAKD,CAAAA,CAAAA,CAAK,UAAWP,CAAG,CAAA,4BAAA,CAA8BK,CAAS,CAAI,CAAA,GAAGC,EAAO,CAEtF,EACAQ,EAAW,WAAc,CAAA,YAAA","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","/**\n * Card is a flexible container component that can be used to group related content and actions.\n * It provides a consistent visual style with a subtle border, shadow, and rounded corners.\n *\n */\nimport * as React from \"react\"\nimport { cn } from \"@/utils\"\nimport {\n CardProps,\n CardHeaderProps,\n CardTitleProps,\n CardDescriptionProps,\n CardContentProps,\n CardFooterProps\n} from \"./card.types\"\n\n/**\n * The main card container component.\n * Provides the base styling for the card including border, shadow, and rounded corners.\n * * @url https://sergii-melnykov.github.io/ui/?path=/docs/molecules-card--docs\n *\n * @example\n * ```tsx\n * // Basic card\n * <Card>\n * <CardHeader>\n * <CardTitle>Card Title</CardTitle>\n * <CardDescription>Card Description</CardDescription>\n * </CardHeader>\n * <CardContent>\n * <p>Card content goes here.</p>\n * </CardContent>\n * <CardFooter>\n * <Button>Action</Button>\n * </CardFooter>\n * </Card>\n *\n * // Card with custom styling\n * <Card className=\"bg-primary text-primary-foreground\">\n * <CardHeader>\n * <CardTitle>Custom Styled Card</CardTitle>\n * </CardHeader>\n * <CardContent>\n * <p>This card has custom background and text colors.</p>\n * </CardContent>\n * </Card>\n * ```\n */\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"rounded-lg border bg-card text-card-foreground shadow-sm\", className)}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\n/**\n * Header section of the card.\n * Typically contains the card title and description.\n * Includes padding and spacing for consistent layout.\n */\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col space-y-1.5 p-6\", className)} {...props} />\n )\n)\nCardHeader.displayName = \"CardHeader\"\n\n/**\n * Title component for the card.\n * Should be used within CardHeader.\n * Provides consistent typography styling for card titles.\n */\nconst CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(\n ({ className, children, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-2xl font-semibold leading-none tracking-tight\", className)}\n {...props}\n >\n {children}\n </h3>\n )\n)\nCardTitle.displayName = \"CardTitle\"\n\n/**\n * Description component for the card.\n * Should be used within CardHeader.\n * Provides consistent typography styling for card descriptions.\n */\nconst CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n )\n)\nCardDescription.displayName = \"CardDescription\"\n\n/**\n * Main content section of the card.\n * Includes padding and removes top padding to maintain consistent spacing with the header.\n */\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n )\n)\nCardContent.displayName = \"CardContent\"\n\n/**\n * Footer section of the card.\n * Typically contains action buttons or additional information.\n * Includes padding and removes top padding to maintain consistent spacing with the content.\n */\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center p-6 pt-0\", className)} {...props} />\n )\n)\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"]}
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
3
+
4
+ /**
5
+ * Checkbox component built on top of Radix UI's Checkbox primitive.
6
+ * Provides a customizable checkbox input with proper accessibility and keyboard navigation.
7
+ *
8
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-checkbox--docs
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <Checkbox id="terms" name="terms" />
13
+ * <label htmlFor="terms">Accept terms and conditions</label>
14
+ * ```
15
+ */
16
+
17
+ declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
18
+
19
+ type CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;
20
+
21
+ export { Checkbox, type CheckboxProps };
@@ -0,0 +1,2 @@
1
+ import*as i from'react';import*as e from'@radix-ui/react-checkbox';import {Check}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function o(...r){return twMerge(clsx(r))}var c=i.forwardRef(({className:r,...a},s)=>jsx(e.Root,{ref:s,className:o("peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",r),...a,children:jsx(e.Indicator,{className:o("flex items-center justify-center text-current"),"aria-hidden":"true",children:jsx(Check,{className:"h-4 w-4"})})}));c.displayName=e.Root.displayName;export{c as Checkbox};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/atoms/checkbox/checkbox.tsx"],"names":["cn","inputs","twMerge","clsx","Checkbox","className","props","ref","jsx","Check"],"mappings":"qMAGO,SAASA,CAAMC,CAAAA,GAAAA,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAKF,CAAAA,CAAM,CAAC,CAC7B,CCcMG,IAAAA,CAAAA,CAAiB,CACrB,CAAA,UAAA,CAAA,CAAC,CAAE,SAAAC,CAAAA,CAAAA,CAAW,GAAGC,CAAM,EAAGC,CACxBC,GAAAA,GAAAA,CAAmB,CAAlB,CAAA,IAAA,CAAA,CACC,IAAKD,CACL,CAAA,SAAA,CAAWP,CACT,CAAA,oQAAA,CACAK,CACF,CACC,CAAA,GAAGC,CAEJ,CAAA,QAAA,CAAAE,IAAmB,CAAlB,CAAA,SAAA,CAAA,CACC,SAAWR,CAAAA,CAAAA,CAAG,+CAA+C,CAC7D,CAAA,aAAA,CAAY,MAEZ,CAAA,QAAA,CAAAQ,IAACC,KAAA,CAAA,CAAM,SAAU,CAAA,SAAA,CAAU,EAC7B,CACF,CAAA,CAEJ,EACAL,CAAAA,CAAS,YAAgC,CAAK,CAAA,IAAA,CAAA,WAAA","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","/**\n * Checkbox component built on top of Radix UI's Checkbox primitive.\n * Provides a customizable checkbox input with proper accessibility and keyboard navigation.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-checkbox--docs\n *\n * @example\n * ```tsx\n * <Checkbox id=\"terms\" name=\"terms\" />\n * <label htmlFor=\"terms\">Accept terms and conditions</label>\n * ```\n */\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"@/utils/index\"\nimport type { CheckboxProps } from \"./checkbox.types\"\n\nconst Checkbox = React.forwardRef<React.ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(\n ({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n aria-hidden=\"true\"\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n)\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n"]}