@uselets/ui 1.2.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +96 -5
  2. package/dist/chart-DHS2QeM8.d.ts +80 -0
  3. package/dist/cli/uselets.mjs.map +1 -1
  4. package/dist/components/accordion.d.ts +4 -5
  5. package/dist/components/accordion.js.map +1 -1
  6. package/dist/components/alert-dialog.d.ts +12 -13
  7. package/dist/components/alert-dialog.js.map +1 -1
  8. package/dist/components/alert.d.ts +5 -7
  9. package/dist/components/alert.js.map +1 -1
  10. package/dist/components/anchor.d.ts +2 -4
  11. package/dist/components/anchor.js.map +1 -1
  12. package/dist/components/area-chart.d.ts +58 -0
  13. package/dist/components/area-chart.js +2 -0
  14. package/dist/components/area-chart.js.map +1 -0
  15. package/dist/components/avatar.d.ts +6 -7
  16. package/dist/components/avatar.js.map +1 -1
  17. package/dist/components/badge.d.ts +2 -4
  18. package/dist/components/badge.js.map +1 -1
  19. package/dist/components/bar-chart.d.ts +54 -0
  20. package/dist/components/bar-chart.js +2 -0
  21. package/dist/components/bar-chart.js.map +1 -0
  22. package/dist/components/breadcrumb.d.ts +7 -8
  23. package/dist/components/breadcrumb.js.map +1 -1
  24. package/dist/components/button-group.d.ts +4 -6
  25. package/dist/components/button-group.js.map +1 -1
  26. package/dist/components/button.d.ts +2 -4
  27. package/dist/components/button.js.map +1 -1
  28. package/dist/components/calendar.d.ts +2 -3
  29. package/dist/components/calendar.js.map +1 -1
  30. package/dist/components/card.d.ts +7 -8
  31. package/dist/components/card.js.map +1 -1
  32. package/dist/components/carousel.d.ts +17 -7
  33. package/dist/components/carousel.js +1 -1
  34. package/dist/components/carousel.js.map +1 -1
  35. package/dist/components/carousel.spec.d.ts +1 -0
  36. package/dist/components/carousel.spec.js +2 -0
  37. package/dist/components/carousel.spec.js.map +1 -0
  38. package/dist/components/center.d.ts +2 -4
  39. package/dist/components/center.js.map +1 -1
  40. package/dist/components/chart.d.ts +2 -263
  41. package/dist/components/chart.js +1 -1
  42. package/dist/components/chart.js.map +1 -1
  43. package/dist/components/checkbox.d.ts +2 -4
  44. package/dist/components/checkbox.js +1 -1
  45. package/dist/components/checkbox.js.map +1 -1
  46. package/dist/components/code.d.ts +1 -2
  47. package/dist/components/code.js.map +1 -1
  48. package/dist/components/collapsible.d.ts +3 -4
  49. package/dist/components/collapsible.js.map +1 -1
  50. package/dist/components/combobox.d.ts +15 -16
  51. package/dist/components/combobox.js.map +1 -1
  52. package/dist/components/command.d.ts +9 -10
  53. package/dist/components/command.js.map +1 -1
  54. package/dist/components/container.d.ts +2 -4
  55. package/dist/components/container.js.map +1 -1
  56. package/dist/components/data-table.d.ts +164 -0
  57. package/dist/components/data-table.js +2 -0
  58. package/dist/components/data-table.js.map +1 -0
  59. package/dist/components/date-range-picker.d.ts +11 -12
  60. package/dist/components/date-range-picker.js.map +1 -1
  61. package/dist/components/dialog.d.ts +11 -13
  62. package/dist/components/dialog.js.map +1 -1
  63. package/dist/components/donut-chart.d.ts +22 -0
  64. package/dist/components/donut-chart.js +2 -0
  65. package/dist/components/donut-chart.js.map +1 -0
  66. package/dist/components/drawer.d.ts +12 -14
  67. package/dist/components/drawer.js.map +1 -1
  68. package/dist/components/dropdown-menu.d.ts +15 -16
  69. package/dist/components/dropdown-menu.js.map +1 -1
  70. package/dist/components/dropzone.d.ts +1 -2
  71. package/dist/components/dropzone.js.map +1 -1
  72. package/dist/components/empty.d.ts +7 -9
  73. package/dist/components/empty.js.map +1 -1
  74. package/dist/components/field.d.ts +11 -13
  75. package/dist/components/field.js.map +1 -1
  76. package/dist/components/field.spec.js +1 -1
  77. package/dist/components/field.spec.js.map +1 -1
  78. package/dist/components/flex.d.ts +25 -0
  79. package/dist/components/flex.js +2 -0
  80. package/dist/components/flex.js.map +1 -0
  81. package/dist/components/grid.d.ts +2 -3
  82. package/dist/components/grid.js +1 -1
  83. package/dist/components/grid.js.map +1 -1
  84. package/dist/components/group.d.ts +6 -4
  85. package/dist/components/group.js +1 -1
  86. package/dist/components/group.js.map +1 -1
  87. package/dist/components/heading.d.ts +2 -4
  88. package/dist/components/heading.js.map +1 -1
  89. package/dist/components/hover-card.d.ts +3 -4
  90. package/dist/components/hover-card.js.map +1 -1
  91. package/dist/components/input-group.d.ts +8 -10
  92. package/dist/components/input-group.js.map +1 -1
  93. package/dist/components/input-otp.d.ts +4 -5
  94. package/dist/components/input-otp.js.map +1 -1
  95. package/dist/components/input.d.ts +1 -2
  96. package/dist/components/input.js.map +1 -1
  97. package/dist/components/kbd.d.ts +2 -3
  98. package/dist/components/kbd.js.map +1 -1
  99. package/dist/components/label.d.ts +1 -2
  100. package/dist/components/label.js.map +1 -1
  101. package/dist/components/list.d.ts +4 -6
  102. package/dist/components/list.js.map +1 -1
  103. package/dist/components/mask-input.d.ts +25 -0
  104. package/dist/components/mask-input.js +2 -0
  105. package/dist/components/mask-input.js.map +1 -0
  106. package/dist/components/native-select.d.ts +3 -4
  107. package/dist/components/native-select.js.map +1 -1
  108. package/dist/components/navigation-menu.d.ts +9 -11
  109. package/dist/components/navigation-menu.js.map +1 -1
  110. package/dist/components/pagination.d.ts +7 -8
  111. package/dist/components/pagination.js.map +1 -1
  112. package/dist/components/pie-chart.d.ts +58 -0
  113. package/dist/components/pie-chart.js +2 -0
  114. package/dist/components/pie-chart.js.map +1 -0
  115. package/dist/components/popover.d.ts +7 -8
  116. package/dist/components/popover.js.map +1 -1
  117. package/dist/components/progress.d.ts +1 -2
  118. package/dist/components/progress.js.map +1 -1
  119. package/dist/components/radio-group.d.ts +3 -5
  120. package/dist/components/radio-group.js.map +1 -1
  121. package/dist/components/resizable.d.ts +3 -4
  122. package/dist/components/resizable.js.map +1 -1
  123. package/dist/components/scroll-area.d.ts +2 -3
  124. package/dist/components/scroll-area.js.map +1 -1
  125. package/dist/components/select.d.ts +10 -11
  126. package/dist/components/select.js.map +1 -1
  127. package/dist/components/separator.d.ts +1 -2
  128. package/dist/components/separator.js.map +1 -1
  129. package/dist/components/sidebar.d.ts +24 -26
  130. package/dist/components/sidebar.js.map +1 -1
  131. package/dist/components/simple-grid.d.ts +1 -2
  132. package/dist/components/simple-grid.js +1 -1
  133. package/dist/components/simple-grid.js.map +1 -1
  134. package/dist/components/skeleton.d.ts +1 -2
  135. package/dist/components/skeleton.js.map +1 -1
  136. package/dist/components/skeleton.spec.js +1 -1
  137. package/dist/components/skeleton.spec.js.map +1 -1
  138. package/dist/components/slider.d.ts +1 -2
  139. package/dist/components/slider.js.map +1 -1
  140. package/dist/components/sonner.d.ts +1 -2
  141. package/dist/components/sonner.js.map +1 -1
  142. package/dist/components/spinner.d.ts +2 -4
  143. package/dist/components/spinner.js.map +1 -1
  144. package/dist/components/stack.d.ts +6 -4
  145. package/dist/components/stack.js +1 -1
  146. package/dist/components/stack.js.map +1 -1
  147. package/dist/components/switch.d.ts +1 -2
  148. package/dist/components/switch.js.map +1 -1
  149. package/dist/components/table.d.ts +29 -11
  150. package/dist/components/table.js +1 -1
  151. package/dist/components/table.js.map +1 -1
  152. package/dist/components/tabs.d.ts +5 -7
  153. package/dist/components/tabs.js.map +1 -1
  154. package/dist/components/text.d.ts +2 -4
  155. package/dist/components/text.js.map +1 -1
  156. package/dist/components/textarea.d.ts +1 -2
  157. package/dist/components/textarea.js.map +1 -1
  158. package/dist/components/theme.d.ts +2 -3
  159. package/dist/components/theme.js +1 -1
  160. package/dist/components/theme.js.map +1 -1
  161. package/dist/components/timeline.d.ts +3 -4
  162. package/dist/components/timeline.js.map +1 -1
  163. package/dist/components/toggle-group.d.ts +2 -3
  164. package/dist/components/toggle-group.js.map +1 -1
  165. package/dist/components/toggle.d.ts +2 -4
  166. package/dist/components/toggle.js.map +1 -1
  167. package/dist/components/tooltip.d.ts +5 -6
  168. package/dist/components/tooltip.js.map +1 -1
  169. package/dist/components/unstyled-button.d.ts +1 -2
  170. package/dist/components/unstyled-button.js.map +1 -1
  171. package/dist/components/visibility.d.ts +2 -3
  172. package/dist/components/visibility.js.map +1 -1
  173. package/dist/dist-C35vdEt2.js +129 -0
  174. package/dist/dist-C35vdEt2.js.map +1 -0
  175. package/dist/hooks/use-breakpoint-value.js.map +1 -1
  176. package/dist/hooks/use-breakpoint-value.spec.js +1 -14
  177. package/dist/hooks/use-breakpoint-value.spec.js.map +1 -1
  178. package/dist/hooks/use-breakpoint.js.map +1 -1
  179. package/dist/hooks/use-breakpoint.spec.js +1 -1
  180. package/dist/hooks/use-breakpoint.spec.js.map +1 -1
  181. package/dist/hooks/use-disclosure.js.map +1 -1
  182. package/dist/hooks/use-disclosure.spec.js +1 -1
  183. package/dist/hooks/use-disclosure.spec.js.map +1 -1
  184. package/dist/hooks/use-document-visibility.js.map +1 -1
  185. package/dist/hooks/use-document-visibility.spec.js +1 -1
  186. package/dist/hooks/use-document-visibility.spec.js.map +1 -1
  187. package/dist/hooks/use-idle.js.map +1 -1
  188. package/dist/hooks/use-idle.spec.js +1 -1
  189. package/dist/hooks/use-idle.spec.js.map +1 -1
  190. package/dist/hooks/use-interval.js.map +1 -1
  191. package/dist/hooks/use-interval.spec.js +1 -1
  192. package/dist/hooks/use-interval.spec.js.map +1 -1
  193. package/dist/hooks/use-local-storage.js.map +1 -1
  194. package/dist/hooks/use-local-storage.spec.js +1 -1
  195. package/dist/hooks/use-local-storage.spec.js.map +1 -1
  196. package/dist/hooks/use-mask.d.ts +9 -0
  197. package/dist/hooks/use-mask.js +2 -0
  198. package/dist/hooks/use-mask.js.map +1 -0
  199. package/dist/hooks/use-mobile.js.map +1 -1
  200. package/dist/hooks/use-mobile.spec.js +1 -1
  201. package/dist/hooks/use-mobile.spec.js.map +1 -1
  202. package/dist/index.d.ts +12 -4
  203. package/dist/index.js +1 -1
  204. package/dist/lib/button.js.map +1 -1
  205. package/dist/lib/color.js.map +1 -1
  206. package/dist/lib/utils.js.map +1 -1
  207. package/dist/magic-string.es-C-uSEkg2.js +15 -0
  208. package/dist/magic-string.es-C-uSEkg2.js.map +1 -0
  209. package/dist/postcss.config.js.map +1 -1
  210. package/dist/{react.esm-B3a5z6DL.js → react.esm-BagSCtI3.js} +12 -3
  211. package/dist/{react.esm-B3a5z6DL.js.map → react.esm-BagSCtI3.js.map} +1 -1
  212. package/dist/skills/uselets-ui/SKILL.md +1 -0
  213. package/dist/skills/uselets-ui/references/component-catalog.md +37 -7
  214. package/dist/skills/uselets-ui/references/package-guide.md +139 -2
  215. package/package.json +15 -13
  216. package/skills/uselets-ui/SKILL.md +1 -0
  217. package/skills/uselets-ui/references/component-catalog.md +37 -7
  218. package/skills/uselets-ui/references/package-guide.md +139 -2
@@ -1,6 +1,5 @@
1
1
  import { n as __name } from "../chunk-CHh1Zzun.js";
2
2
  import { Button } from "./button.js";
3
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
3
  import * as React from "react";
5
4
  import useEmblaCarousel, { UseEmblaCarouselType } from "embla-carousel-react";
6
5
 
@@ -19,13 +18,19 @@ type CarouselContentProps = React.ComponentProps<'div'>;
19
18
  type CarouselItemProps = React.ComponentProps<'div'>;
20
19
  type CarouselPreviousProps = React.ComponentProps<typeof Button>;
21
20
  type CarouselNextProps = React.ComponentProps<typeof Button>;
21
+ type CarouselIndicatorsProps = React.ComponentProps<'div'> & {
22
+ getIndicatorProps?: (index: number) => React.ComponentProps<'button'>;
23
+ };
22
24
  type CarouselContextProps = {
23
25
  carouselRef: ReturnType<typeof useEmblaCarousel>[0];
24
26
  api: ReturnType<typeof useEmblaCarousel>[1];
25
27
  scrollPrev: () => void;
26
28
  scrollNext: () => void;
29
+ scrollTo: (index: number) => void;
27
30
  canScrollPrev: boolean;
28
31
  canScrollNext: boolean;
32
+ selectedIndex: number;
33
+ scrollSnaps: number[];
29
34
  } & CarouselProps;
30
35
  declare function useCarousel(): CarouselContextProps;
31
36
  declare function Carousel({
@@ -36,29 +41,34 @@ declare function Carousel({
36
41
  className,
37
42
  children,
38
43
  ...props
39
- }: CarouselProps): _$react_jsx_runtime0.JSX.Element;
44
+ }: CarouselProps): import("react/jsx-runtime").JSX.Element;
40
45
  declare function CarouselContent({
41
46
  className,
42
47
  ...props
43
- }: CarouselContentProps): _$react_jsx_runtime0.JSX.Element;
48
+ }: CarouselContentProps): import("react/jsx-runtime").JSX.Element;
44
49
  declare function CarouselItem({
45
50
  className,
46
51
  ...props
47
- }: CarouselItemProps): _$react_jsx_runtime0.JSX.Element;
52
+ }: CarouselItemProps): import("react/jsx-runtime").JSX.Element;
48
53
  declare function CarouselPrevious({
49
54
  className,
50
55
  variant,
51
56
  size,
52
57
  color,
53
58
  ...props
54
- }: CarouselPreviousProps): _$react_jsx_runtime0.JSX.Element;
59
+ }: CarouselPreviousProps): import("react/jsx-runtime").JSX.Element;
55
60
  declare function CarouselNext({
56
61
  className,
57
62
  variant,
58
63
  size,
59
64
  color,
60
65
  ...props
61
- }: CarouselNextProps): _$react_jsx_runtime0.JSX.Element;
66
+ }: CarouselNextProps): import("react/jsx-runtime").JSX.Element;
67
+ declare function CarouselIndicators({
68
+ className,
69
+ getIndicatorProps,
70
+ ...props
71
+ }: CarouselIndicatorsProps): import("react/jsx-runtime").JSX.Element | null;
62
72
  //#endregion
63
- export { Carousel, CarouselApi, CarouselContent, CarouselContentProps, CarouselItem, CarouselItemProps, CarouselNext, CarouselNextProps, CarouselPrevious, CarouselPreviousProps, CarouselProps, useCarousel };
73
+ export { Carousel, CarouselApi, CarouselContent, CarouselContentProps, CarouselIndicators, CarouselIndicatorsProps, CarouselItem, CarouselItemProps, CarouselNext, CarouselNextProps, CarouselPrevious, CarouselPreviousProps, CarouselProps, useCarousel };
64
74
  //# sourceMappingURL=carousel.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{IconChevronLeft as n,IconChevronRight as r}from"@tabler/icons-react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import*as o from"react";import s from"embla-carousel-react";const c=o.createContext(null);function useCarousel(){let e=o.useContext(c);if(!e)throw Error(`useCarousel must be used within a <Carousel />`);return e}function Carousel({orientation:t=`horizontal`,opts:n,setApi:r,plugins:a,className:l,children:u,...d}){let[f,p]=s({...n,axis:t===`horizontal`?`x`:`y`},a),[m,h]=o.useState(!1),[g,_]=o.useState(!1),v=o.useCallback(e=>{e&&(h(e.canScrollPrev()),_(e.canScrollNext()))},[]),y=o.useCallback(()=>{p?.scrollPrev()},[p]),b=o.useCallback(()=>{p?.scrollNext()},[p]),x=o.useCallback(e=>{e.key===`ArrowLeft`?(e.preventDefault(),y()):e.key===`ArrowRight`&&(e.preventDefault(),b())},[y,b]);return o.useEffect(()=>{!p||!r||r(p)},[p,r]),o.useEffect(()=>{if(p)return v(p),p.on(`reInit`,v),p.on(`select`,v),()=>{p?.off(`select`,v)}},[p,v]),i(c.Provider,{value:{carouselRef:f,api:p,opts:n,orientation:t||(n?.axis===`y`?`vertical`:`horizontal`),scrollPrev:y,scrollNext:b,canScrollPrev:m,canScrollNext:g},children:i(`section`,{onKeyDownCapture:x,className:e(`relative`,l),"data-slot":`carousel`,...d,children:u})})}function CarouselContent({className:t,...n}){let{carouselRef:r,orientation:a}=useCarousel();return i(`div`,{ref:r,className:`overflow-hidden`,"data-slot":`carousel-content`,children:i(`div`,{className:e(`flex`,a===`horizontal`?`-ml-4`:`-mt-4 flex-col`,t),...n})})}function CarouselItem({className:t,...n}){let{orientation:r}=useCarousel();return i(`div`,{"data-slot":`carousel-item`,className:e(`min-w-0 shrink-0 grow-0 basis-full`,r===`horizontal`?`pl-4`:`pt-4`,t),...n})}function CarouselPrevious({className:r,variant:o=`outline`,size:s=`icon-sm`,color:c=`zinc`,...l}){let{orientation:u,scrollPrev:d,canScrollPrev:f}=useCarousel();return a(t,{"data-slot":`carousel-previous`,color:c,variant:o,size:s,className:e(`absolute touch-manipulation rounded-full`,u===`horizontal`?`top-1/2 -left-12 -translate-y-1/2`:`-top-12 left-1/2 -translate-x-1/2 rotate-90`,r),disabled:!f,onClick:d,...l,children:[i(n,{}),i(`span`,{className:`sr-only`,children:`Previous slide`})]})}function CarouselNext({className:n,variant:o=`outline`,size:s=`icon-sm`,color:c=`zinc`,...l}){let{orientation:u,scrollNext:d,canScrollNext:f}=useCarousel();return a(t,{"data-slot":`carousel-next`,color:c,variant:o,size:s,className:e(`absolute touch-manipulation rounded-full`,u===`horizontal`?`top-1/2 -right-12 -translate-y-1/2`:`-bottom-12 left-1/2 -translate-x-1/2 rotate-90`,n),disabled:!f,onClick:d,...l,children:[i(r,{}),i(`span`,{className:`sr-only`,children:`Next slide`})]})}export{Carousel,CarouselContent,CarouselItem,CarouselNext,CarouselPrevious,useCarousel};
1
+ import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{IconChevronLeft as n,IconChevronRight as r}from"@tabler/icons-react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import*as o from"react";import s from"embla-carousel-react";const c=o.createContext(null);function useCarousel(){let e=o.useContext(c);if(!e)throw Error(`useCarousel must be used within a <Carousel />`);return e}function Carousel({orientation:t=`horizontal`,opts:n,setApi:r,plugins:a,className:l,children:u,...d}){let[f,p]=s({...n,axis:t===`horizontal`?`x`:`y`},a),[m,h]=o.useState(!1),[g,_]=o.useState(!1),[v,y]=o.useState(0),[b,x]=o.useState([]),S=o.useCallback(e=>{e&&(h(e.canScrollPrev()),_(e.canScrollNext()),y(e.selectedScrollSnap()),x(e.scrollSnapList()))},[]),C=o.useCallback(()=>{p?.scrollPrev()},[p]),w=o.useCallback(()=>{p?.scrollNext()},[p]),T=o.useCallback(e=>{p?.scrollTo(e)},[p]),E=o.useCallback(e=>{e.key===`ArrowLeft`?(e.preventDefault(),C()):e.key===`ArrowRight`&&(e.preventDefault(),w())},[C,w]);return o.useEffect(()=>{!p||!r||r(p)},[p,r]),o.useEffect(()=>{if(p)return S(p),p.on(`reInit`,S),p.on(`select`,S),()=>{p?.off(`reInit`,S),p?.off(`select`,S)}},[p,S]),i(c.Provider,{value:{carouselRef:f,api:p,opts:n,orientation:t||(n?.axis===`y`?`vertical`:`horizontal`),scrollPrev:C,scrollNext:w,scrollTo:T,canScrollPrev:m,canScrollNext:g,selectedIndex:v,scrollSnaps:b},children:i(`section`,{onKeyDownCapture:E,className:e(`relative`,l),"data-slot":`carousel`,...d,children:u})})}function CarouselContent({className:t,...n}){let{carouselRef:r,orientation:a}=useCarousel();return i(`div`,{ref:r,className:`overflow-hidden`,"data-slot":`carousel-content`,children:i(`div`,{className:e(`flex`,a===`horizontal`?`-ml-4`:`-mt-4 flex-col`,t),...n})})}function CarouselItem({className:t,...n}){let{orientation:r}=useCarousel();return i(`div`,{"data-slot":`carousel-item`,className:e(`min-w-0 shrink-0 grow-0 basis-full`,r===`horizontal`?`pl-4`:`pt-4`,t),...n})}function CarouselPrevious({className:r,variant:o=`outline`,size:s=`icon-sm`,color:c=`zinc`,...l}){let{orientation:u,scrollPrev:d,canScrollPrev:f}=useCarousel();return a(t,{"data-slot":`carousel-previous`,color:c,variant:o,size:s,className:e(`absolute touch-manipulation rounded-full`,u===`horizontal`?`top-1/2 -left-12 -translate-y-1/2`:`-top-12 left-1/2 -translate-x-1/2 rotate-90`,r),disabled:!f,onClick:d,...l,children:[i(n,{}),i(`span`,{className:`sr-only`,children:`Previous slide`})]})}function CarouselNext({className:n,variant:o=`outline`,size:s=`icon-sm`,color:c=`zinc`,...l}){let{orientation:u,scrollNext:d,canScrollNext:f}=useCarousel();return a(t,{"data-slot":`carousel-next`,color:c,variant:o,size:s,className:e(`absolute touch-manipulation rounded-full`,u===`horizontal`?`top-1/2 -right-12 -translate-y-1/2`:`-bottom-12 left-1/2 -translate-x-1/2 rotate-90`,n),disabled:!f,onClick:d,...l,children:[i(r,{}),i(`span`,{className:`sr-only`,children:`Next slide`})]})}function CarouselIndicators({className:t,getIndicatorProps:n,...r}){let{orientation:a,scrollSnaps:o,selectedIndex:s,scrollTo:c}=useCarousel();return o.length===0?null:i(`div`,{"data-slot":`carousel-indicators`,className:e(`pointer-events-none absolute flex justify-center gap-2`,a===`horizontal`?`inset-x-0 bottom-4 flex-row`:`inset-y-0 right-4 flex-col items-center`,t),...r,children:o.map((t,r)=>{let{className:a,onClick:o,...l}=n?.(r)??{};return i(`button`,{...l,type:`button`,"data-slot":`carousel-indicator`,"data-active":s===r?!0:void 0,"aria-label":`Go to slide ${r+1}`,className:e(`pointer-events-auto cursor-pointer size-2.5 touch-manipulation rounded-full bg-background opacity-60 shadow-sm ring-1 ring-border transition-opacity hover:opacity-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3 focus-visible:outline-none data-[active=true]:opacity-100`,a),onClick:e=>{c(r),o?.(e)}},t)})})}export{Carousel,CarouselContent,CarouselIndicators,CarouselItem,CarouselNext,CarouselPrevious,useCarousel};
2
2
  //# sourceMappingURL=carousel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.js","names":[],"sources":["../../src/components/carousel.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { IconChevronLeft, IconChevronRight } from '@tabler/icons-react'\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'\n\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\n\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\nexport type CarouselApi = UseEmblaCarouselType[1]\n\nexport type CarouselProps = React.ComponentProps<'div'> & {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: 'horizontal' | 'vertical'\n setApi?: (api: CarouselApi) => void\n}\n\nexport type CarouselContentProps = React.ComponentProps<'div'>\n\nexport type CarouselItemProps = React.ComponentProps<'div'>\n\nexport type CarouselPreviousProps = React.ComponentProps<typeof Button>\n\nexport type CarouselNextProps = React.ComponentProps<typeof Button>\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />')\n }\n\n return context\n}\n\nfunction Carousel({ orientation = 'horizontal', opts, setApi, plugins, className, children, ...props }: CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y'\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === 'ArrowRight') {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on('reInit', onSelect)\n api.on('select', onSelect)\n\n return () => {\n api?.off('select', onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext\n }}\n >\n <section onKeyDownCapture={handleKeyDown} className={cn('relative', className)} data-slot=\"carousel\" {...props}>\n {children}\n </section>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: CarouselContentProps) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\n <div className={cn('flex', orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', className)} {...props} />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: CarouselItemProps) {\n const { orientation } = useCarousel()\n\n return (\n <div\n data-slot=\"carousel-item\"\n className={cn('min-w-0 shrink-0 grow-0 basis-full', orientation === 'horizontal' ? 'pl-4' : 'pt-4', className)}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'icon-sm',\n color = 'zinc',\n ...props\n}: CarouselPreviousProps) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n color={color}\n variant={variant}\n size={size}\n className={cn(\n 'absolute touch-manipulation rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -left-12 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <IconChevronLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'icon-sm',\n color = 'zinc',\n ...props\n}: CarouselNextProps) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n color={color}\n variant={variant}\n size={size}\n className={cn(\n 'absolute touch-manipulation rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -right-12 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <IconChevronRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, useCarousel }\n"],"mappings":"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"}
1
+ {"version":3,"file":"carousel.js","names":[],"sources":["../../src/components/carousel.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { IconChevronLeft, IconChevronRight } from '@tabler/icons-react'\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'\n\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\n\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\nexport type CarouselApi = UseEmblaCarouselType[1]\n\nexport type CarouselProps = React.ComponentProps<'div'> & {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: 'horizontal' | 'vertical'\n setApi?: (api: CarouselApi) => void\n}\n\nexport type CarouselContentProps = React.ComponentProps<'div'>\n\nexport type CarouselItemProps = React.ComponentProps<'div'>\n\nexport type CarouselPreviousProps = React.ComponentProps<typeof Button>\n\nexport type CarouselNextProps = React.ComponentProps<typeof Button>\n\nexport type CarouselIndicatorsProps = React.ComponentProps<'div'> & {\n getIndicatorProps?: (index: number) => React.ComponentProps<'button'>\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n scrollTo: (index: number) => void\n canScrollPrev: boolean\n canScrollNext: boolean\n selectedIndex: number\n scrollSnaps: number[]\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />')\n }\n\n return context\n}\n\nfunction Carousel({ orientation = 'horizontal', opts, setApi, plugins, className, children, ...props }: CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y'\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n const [selectedIndex, setSelectedIndex] = React.useState(0)\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([])\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n setSelectedIndex(api.selectedScrollSnap())\n setScrollSnaps(api.scrollSnapList())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const scrollTo = React.useCallback(\n (index: number) => {\n api?.scrollTo(index)\n },\n [api]\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === 'ArrowRight') {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on('reInit', onSelect)\n api.on('select', onSelect)\n\n return () => {\n api?.off('reInit', onSelect)\n api?.off('select', onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n scrollTo,\n canScrollPrev,\n canScrollNext,\n selectedIndex,\n scrollSnaps\n }}\n >\n <section onKeyDownCapture={handleKeyDown} className={cn('relative', className)} data-slot=\"carousel\" {...props}>\n {children}\n </section>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: CarouselContentProps) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\n <div className={cn('flex', orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', className)} {...props} />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: CarouselItemProps) {\n const { orientation } = useCarousel()\n\n return (\n <div\n data-slot=\"carousel-item\"\n className={cn('min-w-0 shrink-0 grow-0 basis-full', orientation === 'horizontal' ? 'pl-4' : 'pt-4', className)}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'icon-sm',\n color = 'zinc',\n ...props\n}: CarouselPreviousProps) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n color={color}\n variant={variant}\n size={size}\n className={cn(\n 'absolute touch-manipulation rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -left-12 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <IconChevronLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'icon-sm',\n color = 'zinc',\n ...props\n}: CarouselNextProps) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n color={color}\n variant={variant}\n size={size}\n className={cn(\n 'absolute touch-manipulation rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -right-12 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <IconChevronRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nfunction CarouselIndicators({ className, getIndicatorProps, ...props }: CarouselIndicatorsProps) {\n const { orientation, scrollSnaps, selectedIndex, scrollTo } = useCarousel()\n\n if (scrollSnaps.length === 0) {\n return null\n }\n\n return (\n <div\n data-slot=\"carousel-indicators\"\n className={cn(\n 'pointer-events-none absolute flex justify-center gap-2',\n orientation === 'horizontal' ? 'inset-x-0 bottom-4 flex-row' : 'inset-y-0 right-4 flex-col items-center',\n className\n )}\n {...props}\n >\n {scrollSnaps.map((snap, index) => {\n const { className: indicatorClassName, onClick, ...indicatorProps } = getIndicatorProps?.(index) ?? {}\n\n return (\n <button\n key={snap}\n {...indicatorProps}\n type=\"button\"\n data-slot=\"carousel-indicator\"\n data-active={selectedIndex === index ? true : undefined}\n aria-label={`Go to slide ${index + 1}`}\n className={cn(\n 'pointer-events-auto cursor-pointer size-2.5 touch-manipulation rounded-full bg-background opacity-60 shadow-sm ring-1 ring-border transition-opacity hover:opacity-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3 focus-visible:outline-none data-[active=true]:opacity-100',\n indicatorClassName\n )}\n onClick={(event) => {\n scrollTo(index)\n onClick?.(event)\n }}\n />\n )\n })}\n </div>\n )\n}\n\nexport { Carousel, CarouselContent, CarouselIndicators, CarouselItem, CarouselNext, CarouselPrevious, useCarousel }\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,2 @@
1
+ import"../chunk-CHh1Zzun.js";import{Carousel as e,CarouselContent as t,CarouselIndicators as n,CarouselItem as r}from"./carousel.js";import{a as i,n as a,r as o}from"../react.esm-BagSCtI3.js";import{n as s}from"../dist-C35vdEt2.js";import{jsx as c,jsxs as l}from"react/jsx-runtime";const u=s.hoisted(()=>({api:{canScrollPrev:s.fn(),canScrollNext:s.fn(),selectedScrollSnap:s.fn(),scrollSnapList:s.fn(),scrollPrev:s.fn(),scrollNext:s.fn(),scrollTo:s.fn(),on:s.fn(),off:s.fn()}}));s.mock(`embla-carousel-react`,()=>({default:s.fn(()=>[s.fn(),u.api])}));function renderCarousel(){return o(l(e,{children:[l(t,{children:[c(r,{children:`First`}),c(r,{children:`Second`}),c(r,{children:`Third`})]}),c(n,{})]}))}describe(`CarouselIndicators`,()=>{beforeEach(()=>{u.api.canScrollPrev.mockReturnValue(!0),u.api.canScrollNext.mockReturnValue(!0),u.api.selectedScrollSnap.mockReturnValue(1),u.api.scrollSnapList.mockReturnValue([0,1,2])}),it(`renders one indicator button per scroll snap`,async()=>{renderCarousel(),expect(await i.findAllByRole(`button`)).toHaveLength(3)}),it(`marks the selected indicator as active`,async()=>{renderCarousel();let e=await i.findByRole(`button`,{name:`Go to slide 2`});expect(e.getAttribute(`data-active`)).toBe(`true`),expect(i.getByRole(`button`,{name:`Go to slide 1`}).getAttribute(`data-active`)).toBeNull()}),it(`scrolls to the indicator index when clicked`,async()=>{renderCarousel(),a.click(await i.findByRole(`button`,{name:`Go to slide 3`})),expect(u.api.scrollTo).toHaveBeenCalledWith(2)}),it(`does not render indicators when there are no scroll snaps`,()=>{u.api.scrollSnapList.mockReturnValue([]);let{container:e}=renderCarousel();expect(e.querySelector(`[data-slot="carousel-indicators"]`)).toBeNull()})});
2
+ //# sourceMappingURL=carousel.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel.spec.js","names":[],"sources":["../../src/components/carousel.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\nimport { vi } from 'vitest'\n\nconst emblaMock = vi.hoisted(() => {\n return {\n api: {\n canScrollPrev: vi.fn(),\n canScrollNext: vi.fn(),\n selectedScrollSnap: vi.fn(),\n scrollSnapList: vi.fn(),\n scrollPrev: vi.fn(),\n scrollNext: vi.fn(),\n scrollTo: vi.fn(),\n on: vi.fn(),\n off: vi.fn()\n }\n }\n})\n\nvi.mock('embla-carousel-react', () => ({\n default: vi.fn(() => [vi.fn(), emblaMock.api])\n}))\n\nimport { Carousel, CarouselContent, CarouselIndicators, CarouselItem } from './carousel'\n\nfunction renderCarousel() {\n return render(\n <Carousel>\n <CarouselContent>\n <CarouselItem>First</CarouselItem>\n <CarouselItem>Second</CarouselItem>\n <CarouselItem>Third</CarouselItem>\n </CarouselContent>\n <CarouselIndicators />\n </Carousel>\n )\n}\n\ndescribe('CarouselIndicators', () => {\n beforeEach(() => {\n emblaMock.api.canScrollPrev.mockReturnValue(true)\n emblaMock.api.canScrollNext.mockReturnValue(true)\n emblaMock.api.selectedScrollSnap.mockReturnValue(1)\n emblaMock.api.scrollSnapList.mockReturnValue([0, 1, 2])\n })\n\n it('renders one indicator button per scroll snap', async () => {\n renderCarousel()\n\n expect(await screen.findAllByRole('button')).toHaveLength(3)\n })\n\n it('marks the selected indicator as active', async () => {\n renderCarousel()\n\n const selectedIndicator = await screen.findByRole('button', { name: 'Go to slide 2' })\n\n expect(selectedIndicator.getAttribute('data-active')).toBe('true')\n expect(screen.getByRole('button', { name: 'Go to slide 1' }).getAttribute('data-active')).toBeNull()\n })\n\n it('scrolls to the indicator index when clicked', async () => {\n renderCarousel()\n\n fireEvent.click(await screen.findByRole('button', { name: 'Go to slide 3' }))\n\n expect(emblaMock.api.scrollTo).toHaveBeenCalledWith(2)\n })\n\n it('does not render indicators when there are no scroll snaps', () => {\n emblaMock.api.scrollSnapList.mockReturnValue([])\n\n const { container } = renderCarousel()\n\n expect(container.querySelector('[data-slot=\"carousel-indicators\"]')).toBeNull()\n })\n})\n"],"mappings":"0RAGA,MAAM,EAAY,EAAG,aACZ,CACL,IAAK,CACH,cAAe,EAAG,GAAG,EACrB,cAAe,EAAG,GAAG,EACrB,mBAAoB,EAAG,GAAG,EAC1B,eAAgB,EAAG,GAAG,EACtB,WAAY,EAAG,GAAG,EAClB,WAAY,EAAG,GAAG,EAClB,SAAU,EAAG,GAAG,EAChB,GAAI,EAAG,GAAG,EACV,IAAK,EAAG,GAAG,CACb,CACF,EACD,EAED,EAAG,KAAK,4BAA+B,CACrC,QAAS,EAAG,OAAS,CAAC,EAAG,GAAG,EAAG,EAAU,GAAG,CAAC,CAC/C,EAAE,EAIF,SAAS,gBAAiB,CACxB,OAAO,EACL,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAc,OAAmB,CAAA,EACjC,EAAC,EAAD,CAAA,SAAc,QAAoB,CAAA,EAClC,EAAC,EAAD,CAAA,SAAc,OAAmB,CAAA,CAClB,CAAA,CAAA,EACjB,EAAC,EAAD,CAAqB,CAAA,CACb,CAAA,CAAA,CACZ,CACF,CAEA,SAAS,yBAA4B,CACnC,eAAiB,CACf,EAAU,IAAI,cAAc,gBAAgB,EAAI,EAChD,EAAU,IAAI,cAAc,gBAAgB,EAAI,EAChD,EAAU,IAAI,mBAAmB,gBAAgB,CAAC,EAClD,EAAU,IAAI,eAAe,gBAAgB,CAAC,EAAG,EAAG,CAAC,CAAC,CACxD,CAAC,EAED,GAAG,+CAAgD,SAAY,CAC7D,eAAe,EAEf,OAAO,MAAM,EAAO,cAAc,QAAQ,CAAC,EAAE,aAAa,CAAC,CAC7D,CAAC,EAED,GAAG,yCAA0C,SAAY,CACvD,eAAe,EAEf,IAAM,EAAoB,MAAM,EAAO,WAAW,SAAU,CAAE,KAAM,eAAgB,CAAC,EAErF,OAAO,EAAkB,aAAa,aAAa,CAAC,EAAE,KAAK,MAAM,EACjE,OAAO,EAAO,UAAU,SAAU,CAAE,KAAM,eAAgB,CAAC,EAAE,aAAa,aAAa,CAAC,EAAE,SAAS,CACrG,CAAC,EAED,GAAG,8CAA+C,SAAY,CAC5D,eAAe,EAEf,EAAU,MAAM,MAAM,EAAO,WAAW,SAAU,CAAE,KAAM,eAAgB,CAAC,CAAC,EAE5E,OAAO,EAAU,IAAI,QAAQ,EAAE,qBAAqB,CAAC,CACvD,CAAC,EAED,GAAG,gEAAmE,CACpE,EAAU,IAAI,eAAe,gBAAgB,CAAC,CAAC,EAE/C,GAAM,CAAE,aAAc,eAAe,EAErC,OAAO,EAAU,cAAc,mCAAmC,CAAC,EAAE,SAAS,CAChF,CAAC,CACH,CAAC"}
@@ -1,21 +1,19 @@
1
1
  import { n as __name } from "../chunk-CHh1Zzun.js";
2
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
2
  import { VariantProps } from "class-variance-authority";
4
3
  import * as React from "react";
5
- import * as _$class_variance_authority_types0 from "class-variance-authority/types";
6
4
 
7
5
  //#region src/components/center.d.ts
8
6
  declare const centerVariants: (props?: ({
9
7
  direction?: "horizontal" | "vertical" | null | undefined;
10
8
  size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
11
- } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
10
  type CenterProps = React.ComponentProps<'div'> & VariantProps<typeof centerVariants>;
13
11
  declare function Center({
14
12
  className,
15
13
  direction,
16
14
  size,
17
15
  ...props
18
- }: CenterProps): _$react_jsx_runtime0.JSX.Element;
16
+ }: CenterProps): import("react/jsx-runtime").JSX.Element;
19
17
  //#endregion
20
18
  export { Center, CenterProps, centerVariants };
21
19
  //# sourceMappingURL=center.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"center.js","names":[],"sources":["../../src/components/center.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nconst centerVariants = cva('flex items-center justify-center', {\n variants: {\n direction: {\n horizontal: 'flex-row',\n vertical: 'flex-col'\n },\n size: {\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6'\n }\n },\n defaultVariants: {\n direction: 'horizontal',\n size: 'md'\n }\n})\n\nexport type CenterProps = React.ComponentProps<'div'> & VariantProps<typeof centerVariants>\n\nfunction Center({ className, direction = 'horizontal', size = 'md', ...props }: CenterProps) {\n return (\n <div\n data-slot=\"center\"\n data-direction={direction}\n data-size={size}\n className={cn(centerVariants({ direction, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Center, centerVariants }\n"],"mappings":"yJAMA,MAAM,EAAiB,EAAI,mCAAoC,CAC7D,SAAU,CACR,UAAW,CACT,WAAY,WACZ,SAAU,WACX,CACD,KAAM,CACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACL,CACF,CACD,gBAAiB,CACf,UAAW,aACX,KAAM,KACP,CACF,CAAC,CAIF,SAAS,OAAO,CAAE,YAAW,YAAY,aAAc,OAAO,KAAM,GAAG,GAAsB,CAC3F,OACE,EAAC,MAAD,CACE,YAAU,SACV,iBAAgB,EAChB,YAAW,EACX,UAAW,EAAG,EAAe,CAAE,YAAW,OAAM,CAAC,CAAE,EAAU,CAC7D,GAAI,EACJ,CAAA"}
1
+ {"version":3,"file":"center.js","names":[],"sources":["../../src/components/center.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nconst centerVariants = cva('flex items-center justify-center', {\n variants: {\n direction: {\n horizontal: 'flex-row',\n vertical: 'flex-col'\n },\n size: {\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6'\n }\n },\n defaultVariants: {\n direction: 'horizontal',\n size: 'md'\n }\n})\n\nexport type CenterProps = React.ComponentProps<'div'> & VariantProps<typeof centerVariants>\n\nfunction Center({ className, direction = 'horizontal', size = 'md', ...props }: CenterProps) {\n return (\n <div\n data-slot=\"center\"\n data-direction={direction}\n data-size={size}\n className={cn(centerVariants({ direction, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Center, centerVariants }\n"],"mappings":"yJAMA,MAAM,EAAiB,EAAI,mCAAoC,CAC7D,SAAU,CACR,UAAW,CACT,WAAY,WACZ,SAAU,UACZ,EACA,KAAM,CACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,OACN,CACF,EACA,gBAAiB,CACf,UAAW,aACX,KAAM,IACR,CACF,CAAC,EAID,SAAS,OAAO,CAAE,YAAW,YAAY,aAAc,OAAO,KAAM,GAAG,GAAsB,CAC3F,OACE,EAAC,MAAD,CACE,YAAU,SACV,iBAAgB,EAChB,YAAW,EACX,UAAW,EAAG,EAAe,CAAE,YAAW,MAAK,CAAC,EAAG,CAAS,EAC5D,GAAI,CACL,CAAA,CAEL"}
@@ -1,263 +1,2 @@
1
- import { n as __name } from "../chunk-CHh1Zzun.js";
2
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
- import * as _$react from "react";
4
- import * as RechartsPrimitive from "recharts";
5
- import * as _$recharts_types_chart_generateCategoricalChart0 from "recharts/types/chart/generateCategoricalChart";
6
- import * as _$recharts_types_chart_AccessibilityManager0 from "recharts/types/chart/AccessibilityManager";
7
- import * as _$lodash from "lodash";
8
- import * as _$recharts_types_chart_types0 from "recharts/types/chart/types";
9
- import * as _$recharts_types_util_types0 from "recharts/types/util/types";
10
-
11
- //#region src/components/chart.d.ts
12
- declare const THEMES: {
13
- readonly light: "";
14
- readonly dark: ".dark";
15
- };
16
- type ChartConfig = { [k in string]: {
17
- label?: _$react.ReactNode;
18
- icon?: _$react.ComponentType;
19
- } & ({
20
- color?: string;
21
- theme?: never;
22
- } | {
23
- color?: never;
24
- theme: Record<keyof typeof THEMES, string>;
25
- }) };
26
- type ChartContainerProps = _$react.ComponentProps<'div'> & {
27
- config: ChartConfig;
28
- children: _$react.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];
29
- };
30
- type ChartStyleProps = {
31
- id: string;
32
- config: ChartConfig;
33
- };
34
- type ChartTooltipProps = _$react.ComponentProps<typeof RechartsPrimitive.Tooltip>;
35
- type ChartTooltipContentProps = _$react.ComponentProps<typeof RechartsPrimitive.Tooltip> & _$react.ComponentProps<'div'> & {
36
- hideLabel?: boolean;
37
- hideIndicator?: boolean;
38
- indicator?: 'line' | 'dot' | 'dashed';
39
- nameKey?: string;
40
- labelKey?: string;
41
- };
42
- type ChartLegendProps = _$react.ComponentProps<typeof RechartsPrimitive.Legend>;
43
- type ChartLegendContentProps = _$react.ComponentProps<'div'> & Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {
44
- hideIcon?: boolean;
45
- nameKey?: string;
46
- };
47
- declare function ChartContainer({
48
- id,
49
- className,
50
- children,
51
- config,
52
- ...props
53
- }: ChartContainerProps): _$react_jsx_runtime0.JSX.Element;
54
- declare const ChartStyle: ({
55
- id,
56
- config
57
- }: ChartStyleProps) => _$react_jsx_runtime0.JSX.Element | null;
58
- declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
59
- declare function ChartTooltipContent({
60
- active,
61
- payload,
62
- className,
63
- indicator,
64
- hideLabel,
65
- hideIndicator,
66
- label,
67
- labelFormatter,
68
- labelClassName,
69
- formatter,
70
- color,
71
- nameKey,
72
- labelKey
73
- }: ChartTooltipContentProps): _$react_jsx_runtime0.JSX.Element | null;
74
- declare const ChartLegend: typeof RechartsPrimitive.Legend;
75
- declare function ChartLegendContent({
76
- className,
77
- hideIcon,
78
- payload,
79
- verticalAlign,
80
- nameKey
81
- }: ChartLegendContentProps): _$react_jsx_runtime0.JSX.Element | null;
82
- declare const Bar: typeof RechartsPrimitive.Bar;
83
- declare const BarChart: _$react.ForwardRefExoticComponent<_$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps & _$react.RefAttributes<{
84
- readonly eventEmitterSymbol: Symbol;
85
- clipPathId: string;
86
- accessibilityManager: _$recharts_types_chart_AccessibilityManager0.AccessibilityManager;
87
- throttleTriggeredAfterMouseMove: _$lodash.DebouncedFunc<(e: _$recharts_types_chart_generateCategoricalChart0.MousePointer) => any>;
88
- container?: HTMLElement;
89
- componentDidMount(): void;
90
- displayDefaultTooltip(): void;
91
- getSnapshotBeforeUpdate(prevProps: Readonly<_$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps>, prevState: Readonly<_$recharts_types_chart_types0.CategoricalChartState>): null;
92
- componentDidUpdate(prevProps: _$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps): void;
93
- componentWillUnmount(): void;
94
- getTooltipEventType(): _$recharts_types_util_types0.TooltipEventType;
95
- getMouseInfo(event: _$recharts_types_chart_generateCategoricalChart0.MousePointer): {
96
- activeTooltipIndex: number;
97
- activeLabel: any;
98
- activePayload: any[];
99
- activeCoordinate: _$recharts_types_util_types0.ChartCoordinate;
100
- xValue: any;
101
- yValue: any;
102
- chartX: number;
103
- chartY: number;
104
- } | {
105
- activeTooltipIndex: number;
106
- activeLabel: any;
107
- activePayload: any[];
108
- activeCoordinate: _$recharts_types_util_types0.ChartCoordinate;
109
- chartX: number;
110
- chartY: number;
111
- };
112
- inRange(x: number, y: number, scale?: number): any;
113
- parseEventsOfWrapper(): any;
114
- addListener(): void;
115
- removeListener(): void;
116
- handleLegendBBoxUpdate: (box: DOMRect) => void;
117
- handleReceiveSyncEvent: (cId: string | number, data: _$recharts_types_chart_types0.CategoricalChartState, emitter: Symbol) => void;
118
- handleBrushChange: ({
119
- startIndex,
120
- endIndex
121
- }: {
122
- startIndex: number;
123
- endIndex: number;
124
- }) => void;
125
- handleMouseEnter: (e: _$react.MouseEvent<Element, MouseEvent>) => void;
126
- triggeredAfterMouseMove: (e: _$recharts_types_chart_generateCategoricalChart0.MousePointer) => any;
127
- handleItemMouseEnter: (el: any) => void;
128
- handleItemMouseLeave: () => void;
129
- handleMouseMove: (e: _$recharts_types_chart_generateCategoricalChart0.MousePointer & Partial<Omit<_$react.MouseEvent<Element, MouseEvent>, keyof _$recharts_types_chart_generateCategoricalChart0.MousePointer>>) => void;
130
- handleMouseLeave: (e: any) => void;
131
- handleOuterEvent: (e: _$react.MouseEvent<Element, MouseEvent> | _$react.TouchEvent<Element>) => void;
132
- handleClick: (e: _$react.MouseEvent<Element, MouseEvent>) => void;
133
- handleMouseDown: (e: _$react.MouseEvent<Element, MouseEvent> | _$react.Touch) => void;
134
- handleMouseUp: (e: _$react.MouseEvent<Element, MouseEvent> | _$react.Touch) => void;
135
- handleTouchMove: (e: _$react.TouchEvent<Element>) => void;
136
- handleTouchStart: (e: _$react.TouchEvent<Element>) => void;
137
- handleTouchEnd: (e: _$react.TouchEvent<Element>) => void;
138
- handleDoubleClick: (e: _$react.MouseEvent<Element, MouseEvent>) => void;
139
- handleContextMenu: (e: _$react.MouseEvent<Element, MouseEvent>) => void;
140
- triggerSyncEvent: (data: _$recharts_types_chart_types0.CategoricalChartState) => void;
141
- applySyncEvent: (data: _$recharts_types_chart_types0.CategoricalChartState) => void;
142
- filterFormatItem(item: any, displayName: any, childIndex: any): any;
143
- renderCursor: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.JSX.Element;
144
- renderPolarAxis: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
145
- renderPolarGrid: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
146
- renderLegend: () => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
147
- renderTooltip: () => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
148
- renderBrush: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
149
- renderReferenceElement: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
150
- renderActivePoints: ({
151
- item,
152
- activePoint,
153
- basePoint,
154
- childIndex,
155
- isRange
156
- }: any) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>[];
157
- renderGraphicChild: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => any[];
158
- renderCustomized: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
159
- renderClipPath(): _$react.JSX.Element;
160
- getXScales(): {
161
- [x: string]: Function | _$recharts_types_util_types0.ScaleType;
162
- };
163
- getYScales(): {
164
- [x: string]: Function | _$recharts_types_util_types0.ScaleType;
165
- };
166
- getXScaleByAxisId(axisId: string): Function | _$recharts_types_util_types0.ScaleType;
167
- getYScaleByAxisId(axisId: string): Function | _$recharts_types_util_types0.ScaleType;
168
- getItemByXY(chartXY: {
169
- x: number;
170
- y: number;
171
- }): {
172
- graphicalItem: any;
173
- payload: any;
174
- };
175
- renderMap: {
176
- CartesianGrid: {
177
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
178
- once: boolean;
179
- };
180
- ReferenceArea: {
181
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
182
- };
183
- ReferenceLine: {
184
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
185
- };
186
- ReferenceDot: {
187
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
188
- };
189
- XAxis: {
190
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
191
- };
192
- YAxis: {
193
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
194
- };
195
- Brush: {
196
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
197
- once: boolean;
198
- };
199
- Bar: {
200
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => any[];
201
- };
202
- Line: {
203
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => any[];
204
- };
205
- Area: {
206
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => any[];
207
- };
208
- Radar: {
209
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => any[];
210
- };
211
- RadialBar: {
212
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => any[];
213
- };
214
- Scatter: {
215
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => any[];
216
- };
217
- Pie: {
218
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => any[];
219
- };
220
- Funnel: {
221
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => any[];
222
- };
223
- Tooltip: {
224
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.JSX.Element;
225
- once: boolean;
226
- };
227
- PolarGrid: {
228
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
229
- once: boolean;
230
- };
231
- PolarAngleAxis: {
232
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
233
- };
234
- PolarRadiusAxis: {
235
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
236
- };
237
- Customized: {
238
- handler: (element: _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>, displayName: string, index: number) => _$react.ReactElement<any, string | _$react.JSXElementConstructor<any>>;
239
- };
240
- };
241
- render(): _$react.JSX.Element;
242
- context: unknown;
243
- setState<K extends keyof _$recharts_types_chart_types0.CategoricalChartState>(state: _$recharts_types_chart_types0.CategoricalChartState | ((prevState: Readonly<_$recharts_types_chart_types0.CategoricalChartState>, props: Readonly<_$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps>) => _$recharts_types_chart_types0.CategoricalChartState | Pick<_$recharts_types_chart_types0.CategoricalChartState, K>) | Pick<_$recharts_types_chart_types0.CategoricalChartState, K>, callback?: () => void): void;
244
- forceUpdate(callback?: () => void): void;
245
- readonly props: Readonly<_$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps>;
246
- state: Readonly<_$recharts_types_chart_types0.CategoricalChartState>;
247
- refs: {
248
- [key: string]: _$react.ReactInstance;
249
- };
250
- shouldComponentUpdate?(nextProps: Readonly<_$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps>, nextState: Readonly<_$recharts_types_chart_types0.CategoricalChartState>, nextContext: any): boolean;
251
- componentDidCatch?(error: Error, errorInfo: _$react.ErrorInfo): void;
252
- componentWillMount?(): void;
253
- UNSAFE_componentWillMount?(): void;
254
- componentWillReceiveProps?(nextProps: Readonly<_$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps>, nextContext: any): void;
255
- UNSAFE_componentWillReceiveProps?(nextProps: Readonly<_$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps>, nextContext: any): void;
256
- componentWillUpdate?(nextProps: Readonly<_$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps>, nextState: Readonly<_$recharts_types_chart_types0.CategoricalChartState>, nextContext: any): void;
257
- UNSAFE_componentWillUpdate?(nextProps: Readonly<_$recharts_types_chart_generateCategoricalChart0.CategoricalChartProps>, nextState: Readonly<_$recharts_types_chart_types0.CategoricalChartState>, nextContext: any): void;
258
- }>>;
259
- declare const CartesianGrid: typeof RechartsPrimitive.CartesianGrid;
260
- declare const XAxis: typeof RechartsPrimitive.XAxis;
261
- //#endregion
262
- export { Bar, BarChart, CartesianGrid, ChartConfig, ChartContainer, ChartContainerProps, ChartLegend, ChartLegendContent, ChartLegendContentProps, ChartLegendProps, ChartStyle, ChartStyleProps, ChartTooltip, ChartTooltipContent, ChartTooltipContentProps, ChartTooltipProps, XAxis };
263
- //# sourceMappingURL=chart.d.ts.map
1
+ import { a as ChartLegendContent, c as ChartStyle, d as ChartTooltipContent, f as ChartTooltipContentProps, i as ChartLegend, l as ChartStyleProps, n as ChartContainer, o as ChartLegendContentProps, p as ChartTooltipProps, r as ChartContainerProps, s as ChartLegendProps, t as ChartConfig, u as ChartTooltip } from "../chart-DHS2QeM8.js";
2
+ export { ChartConfig, ChartContainer, ChartContainerProps, ChartLegend, ChartLegendContent, ChartLegendContentProps, ChartLegendProps, ChartStyle, ChartStyleProps, ChartTooltip, ChartTooltipContent, ChartTooltipContentProps, ChartTooltipProps };
@@ -4,5 +4,5 @@ ${r.map(([e,n])=>{let r=n.theme?.[t]||n.color;return r?` --color-${e}: ${r};`:n
4
4
  `)}
5
5
  }
6
6
  `).join(`
7
- `)}):null},c=a.Tooltip;function ChartTooltipContent({active:a,payload:o,className:s,indicator:c=`dot`,hideLabel:l=!1,hideIndicator:u=!1,label:d,labelFormatter:f,labelClassName:p,formatter:m,color:h,nameKey:g,labelKey:_}){let{config:v}=useChart(),y=i.useMemo(()=>{if(l||!o?.length)return null;let[t]=o,r=getPayloadConfigFromPayload(v,t,`${_||t?.dataKey||t?.name||`value`}`),i=!_&&typeof d==`string`?v[d]?.label||d:r?.label;return f?n(`div`,{className:e(`font-medium`,p),children:f(i,o)}):i?n(`div`,{className:e(`font-medium`,p),children:i}):null},[d,f,o,l,p,v,_]);if(!a||!o?.length)return null;let b=o.length===1&&c!==`dot`;return r(`div`,{className:e(`grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl`,s),children:[b?null:y,n(`div`,{className:`grid gap-1.5`,children:o.filter(e=>e.type!==`none`).map((i,a)=>{let o=getPayloadConfigFromPayload(v,i,`${g||i.name||i.dataKey||`value`}`),s=h||i.payload.fill||i.color;return n(`div`,{className:e(`flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground`,c===`dot`&&`items-center`),children:m&&i?.value!==void 0&&i.name?m(i.value,i.name,i,a,i.payload):r(t,{children:[o?.icon?n(o.icon,{}):!u&&n(`div`,{className:e(`shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)`,{"h-2.5 w-2.5":c===`dot`,"w-1":c===`line`,"w-0 border-[1.5px] border-dashed bg-transparent":c===`dashed`,"my-0.5":b&&c===`dashed`}),style:{"--color-bg":s,"--color-border":s}}),r(`div`,{className:e(`flex flex-1 justify-between leading-none`,b?`items-end`:`items-center`),children:[r(`div`,{className:`grid gap-1.5`,children:[b?y:null,n(`span`,{className:`text-muted-foreground`,children:o?.label||i.name})]}),i.value&&n(`span`,{className:`font-mono font-medium text-foreground tabular-nums`,children:i.value.toLocaleString()})]})]})},i.dataKey)})})]})}const l=a.Legend;function ChartLegendContent({className:t,hideIcon:i=!1,payload:a,verticalAlign:o=`bottom`,nameKey:s}){let{config:c}=useChart();return a?.length?n(`div`,{className:e(`flex items-center justify-center gap-4`,o===`top`?`pb-3`:`pt-3`,t),children:a.filter(e=>e.type!==`none`).map(t=>{let a=getPayloadConfigFromPayload(c,t,`${s||t.dataKey||`value`}`);return r(`div`,{className:e(`flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground`),children:[a?.icon&&!i?n(a.icon,{}):n(`div`,{className:`h-2 w-2 shrink-0 rounded-[2px]`,style:{backgroundColor:t.color}}),a?.label]},t.value)})}):null}function getPayloadConfigFromPayload(e,t,n){if(typeof t!=`object`||!t)return;let r=`payload`in t&&typeof t.payload==`object`&&t.payload!==null?t.payload:void 0,i=n;return n in t&&typeof t[n]==`string`?i=t[n]:r&&n in r&&typeof r[n]==`string`&&(i=r[n]),i in e?e[i]:e[n]}const u=a.Bar,d=a.BarChart,f=a.CartesianGrid,p=a.XAxis;export{u as Bar,d as BarChart,f as CartesianGrid,ChartContainer,l as ChartLegend,ChartLegendContent,ChartStyle,c as ChartTooltip,ChartTooltipContent,p as XAxis};
7
+ `)}):null},c=a.Tooltip;function ChartTooltipContent({active:a,payload:o,className:s,indicator:c=`dot`,hideLabel:l=!1,hideIndicator:u=!1,label:d,labelFormatter:f,labelClassName:p,formatter:m,color:h,nameKey:g,labelKey:_}){let{config:v}=useChart(),y=i.useMemo(()=>{if(l||!o?.length)return null;let[t]=o,r=getPayloadConfigFromPayload(v,t,`${_||t?.dataKey||t?.name||`value`}`),i=!_&&typeof d==`string`?v[d]?.label||d:r?.label;return f?n(`div`,{className:e(`font-medium`,p),children:f(i,o)}):i?n(`div`,{className:e(`font-medium`,p),children:i}):null},[d,f,o,l,p,v,_]);if(!a||!o?.length)return null;let b=o.length===1&&c!==`dot`;return r(`div`,{className:e(`grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl`,s),children:[b?null:y,n(`div`,{className:`grid gap-1.5`,children:o.filter(e=>e.type!==`none`).map((i,a)=>{let o=getPayloadConfigFromPayload(v,i,`${g||i.name||i.dataKey||`value`}`),s=h||i.payload.fill||i.color;return n(`div`,{className:e(`flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground`,c===`dot`&&`items-center`),children:m&&i?.value!==void 0&&i.name?m(i.value,i.name,i,a,i.payload):r(t,{children:[o?.icon?n(o.icon,{}):!u&&n(`div`,{className:e(`shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)`,{"h-2.5 w-2.5":c===`dot`,"w-1":c===`line`,"w-0 border-[1.5px] border-dashed bg-transparent":c===`dashed`,"my-0.5":b&&c===`dashed`}),style:{"--color-bg":s,"--color-border":s}}),r(`div`,{className:e(`flex flex-1 justify-between leading-none`,b?`items-end`:`items-center`),children:[r(`div`,{className:`grid gap-1.5`,children:[b?y:null,n(`span`,{className:`text-muted-foreground`,children:o?.label||i.name})]}),i.value&&n(`span`,{className:`font-mono font-medium text-foreground tabular-nums`,children:i.value.toLocaleString()})]})]})},String(i.dataKey))})})]})}const l=a.Legend;function ChartLegendContent({className:t,hideIcon:i=!1,payload:a,verticalAlign:o=`bottom`,nameKey:s}){let{config:c}=useChart();return a?.length?n(`div`,{className:e(`flex items-center justify-center gap-4`,o===`top`?`pb-3`:`pt-3`,t),children:a.filter(e=>e.type!==`none`).map(t=>{let a=getPayloadConfigFromPayload(c,t,`${s||t.dataKey||`value`}`);return r(`div`,{className:e(`flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground`),children:[a?.icon&&!i?n(a.icon,{}):n(`div`,{className:`h-2 w-2 shrink-0 rounded-[2px]`,style:{backgroundColor:t.color}}),a?.label]},t.value)})}):null}function getPayloadConfigFromPayload(e,t,n){if(typeof t!=`object`||!t)return;let r=`payload`in t&&typeof t.payload==`object`&&t.payload!==null?t.payload:void 0,i=n;return n in t&&typeof t[n]==`string`?i=t[n]:r&&n in r&&typeof r[n]==`string`&&(i=r[n]),i in e?e[i]:e[n]}export{ChartContainer,l as ChartLegend,ChartLegendContent,ChartStyle,c as ChartTooltip,ChartTooltipContent};
8
8
  //# sourceMappingURL=chart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart.js","names":[],"sources":["../../src/components/chart.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport * as RechartsPrimitive from 'recharts'\n\nimport { cn } from '../lib/utils'\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & ({ color?: string; theme?: never } | { color?: never; theme: Record<keyof typeof THEMES, string> })\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nexport type ChartContainerProps = React.ComponentProps<'div'> & {\n config: ChartConfig\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children']\n}\n\nexport type ChartStyleProps = {\n id: string\n config: ChartConfig\n}\n\nexport type ChartTooltipProps = React.ComponentProps<typeof RechartsPrimitive.Tooltip>\n\nexport type ChartTooltipContentProps = React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<'div'> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: 'line' | 'dot' | 'dashed'\n nameKey?: string\n labelKey?: string\n }\n\nexport type ChartLegendProps = React.ComponentProps<typeof RechartsPrimitive.Legend>\n\nexport type ChartLegendContentProps = React.ComponentProps<'div'> &\n Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {\n hideIcon?: boolean\n nameKey?: string\n }\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />')\n }\n\n return context\n}\n\nfunction ChartContainer({ id, className, children, config, ...props }: ChartContainerProps) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: ChartStyleProps) => {\n const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color)\n\n if (!colorConfig.length) {\n return null\n }\n\n const styles = Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join('\\n')}\n}\n`\n )\n .join('\\n')\n\n return <style>{styles}</style>\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey\n}: ChartTooltipContentProps) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === 'string' ? config[label as keyof typeof config]?.label || label : itemConfig?.label\n\n if (labelFormatter) {\n return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot'\n\n return (\n <div\n className={cn(\n 'grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl',\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n 'flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground',\n indicator === 'dot' && 'items-center'\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn('shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)', {\n 'h-2.5 w-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed'\n })}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel ? 'items-end' : 'items-center'\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">{itemConfig?.label || item.name}</span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = 'bottom',\n nameKey\n}: ChartLegendContentProps) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}>\n {payload\n .filter((item) => item.type !== 'none')\n .map((item) => {\n const key = `${nameKey || item.dataKey || 'value'}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn('flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground')}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (key in payload && typeof payload[key as keyof typeof payload] === 'string') {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config]\n}\n\nexport const Bar = RechartsPrimitive.Bar\nexport const BarChart = RechartsPrimitive.BarChart\nexport const CartesianGrid = RechartsPrimitive.CartesianGrid\nexport const XAxis = RechartsPrimitive.XAxis\n\nexport { ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent }\n"],"mappings":"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"}
1
+ {"version":3,"file":"chart.js","names":[],"sources":["../../src/components/chart.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport * as RechartsPrimitive from 'recharts'\n\nimport { cn } from '../lib/utils'\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & ({ color?: string; theme?: never } | { color?: never; theme: Record<keyof typeof THEMES, string> })\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nexport type ChartContainerProps = React.ComponentProps<'div'> & {\n config: ChartConfig\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children']\n}\n\nexport type ChartStyleProps = {\n id: string\n config: ChartConfig\n}\n\nexport type ChartTooltipProps = React.ComponentProps<typeof RechartsPrimitive.Tooltip>\n\nexport type ChartTooltipContentProps = Partial<\n RechartsPrimitive.DefaultTooltipContentProps<number | string | Array<number | string>, number | string>\n> &\n Omit<React.ComponentProps<'div'>, 'formatter'> & {\n active?: boolean\n color?: string\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: 'line' | 'dot' | 'dashed'\n nameKey?: string\n labelKey?: string\n }\n\nexport type ChartLegendProps = React.ComponentProps<typeof RechartsPrimitive.Legend>\n\nexport type ChartLegendContentProps = React.ComponentProps<'div'> &\n Pick<RechartsPrimitive.DefaultLegendContentProps, 'payload' | 'verticalAlign'> & {\n hideIcon?: boolean\n nameKey?: string\n }\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />')\n }\n\n return context\n}\n\nfunction ChartContainer({ id, className, children, config, ...props }: ChartContainerProps) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: ChartStyleProps) => {\n const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color)\n\n if (!colorConfig.length) {\n return null\n }\n\n const styles = Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join('\\n')}\n}\n`\n )\n .join('\\n')\n\n return <style>{styles}</style>\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey\n}: ChartTooltipContentProps) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === 'string' ? config[label as keyof typeof config]?.label || label : itemConfig?.label\n\n if (labelFormatter) {\n return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot'\n\n return (\n <div\n className={cn(\n 'grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl',\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={String(item.dataKey)}\n className={cn(\n 'flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground',\n indicator === 'dot' && 'items-center'\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn('shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)', {\n 'h-2.5 w-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed'\n })}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel ? 'items-end' : 'items-center'\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">{itemConfig?.label || item.name}</span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = 'bottom',\n nameKey\n}: ChartLegendContentProps) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}>\n {payload\n .filter((item) => item.type !== 'none')\n .map((item) => {\n const key = `${nameKey || item.dataKey || 'value'}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn('flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground')}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (key in payload && typeof payload[key as keyof typeof payload] === 'string') {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config]\n}\n\nexport { ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent }\n"],"mappings":"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"}
@@ -2,17 +2,15 @@ import { n as __name } from "../chunk-CHh1Zzun.js";
2
2
  import { UIColor } from "../lib/color.js";
3
3
  import { LabelProps } from "./label.js";
4
4
  import { Checkbox as Checkbox$1 } from "radix-ui";
5
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
6
5
  import { VariantProps } from "class-variance-authority";
7
6
  import * as React from "react";
8
7
  import { ReactNode } from "react";
9
- import * as _$class_variance_authority_types0 from "class-variance-authority/types";
10
8
 
11
9
  //#region src/components/checkbox.d.ts
12
10
  declare const checkboxVariants: (props?: ({
13
11
  color?: "primary" | "brand" | "gray" | "zinc" | "red" | "yellow" | "blue" | "indigo" | "pink" | "green" | null | undefined;
14
12
  size?: "sm" | "md" | "lg" | null | undefined;
15
- } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
13
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
14
  type CheckboxProps = React.ComponentProps<typeof Checkbox$1.Root> & VariantProps<typeof checkboxVariants> & {
17
15
  color?: UIColor;
18
16
  label?: ReactNode;
@@ -26,7 +24,7 @@ declare function Checkbox({
26
24
  labelProps,
27
25
  size,
28
26
  ...props
29
- }: CheckboxProps): _$react_jsx_runtime0.JSX.Element;
27
+ }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
30
28
  //#endregion
31
29
  export { Checkbox, CheckboxProps };
32
30
  //# sourceMappingURL=checkbox.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{selectionControlColorVariants as t}from"../lib/color.js";import{Label as n}from"./label.js";import{useFieldControlId as r}from"./field.js";import{IconCheck as i}from"@tabler/icons-react";import{Checkbox as a}from"radix-ui";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{cva as c}from"class-variance-authority";import{useId as l}from"react";const u=c(`border-input dark:bg-input/30 data-checked:bg-(--selection-control) data-checked:text-(--selection-control-foreground) data-checked:border-(--selection-control) aria-invalid:aria-checked:border-(--selection-control) aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex items-center justify-center border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50`,{variants:{color:t,size:{sm:`size-3.5 rounded-[3px] [&_[data-slot=checkbox-indicator]>svg]:size-3`,md:`size-4 rounded-[4px] [&_[data-slot=checkbox-indicator]>svg]:size-3.5`,lg:`size-5 rounded-[5px] [&_[data-slot=checkbox-indicator]>svg]:size-4`}},defaultVariants:{color:`primary`,size:`md`}}),d=c(``,{variants:{size:{sm:`text-xs`,md:`text-sm`,lg:`text-xl`}},defaultVariants:{size:`md`}});function Checkbox({className:t,color:c=`primary`,id:f,label:p,labelProps:m,size:h=`md`,...g}){let _=l(),v=r(f),y=p!==void 0,b=v??(y?_:void 0),{className:x,...S}=m??{},C=o(a.Root,{"data-slot":`checkbox`,"data-color":c,"data-size":h,id:b,className:e(u({color:c,size:h}),t),...g,children:o(a.Indicator,{"data-slot":`checkbox-indicator`,className:`grid place-content-center text-current transition-none`,children:o(i,{})})});return y?s(`div`,{"data-slot":`checkbox-field`,className:`flex items-center gap-2`,children:[C,o(n,{...S,htmlFor:b,className:e(d({size:h}),x),children:p})]}):C}export{Checkbox};
1
+ import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{selectionControlColorVariants as t}from"../lib/color.js";import{Label as n}from"./label.js";import{useFieldControlId as r}from"./field.js";import{IconCheck as i,IconMinus as a}from"@tabler/icons-react";import{Checkbox as o}from"radix-ui";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{cva as l}from"class-variance-authority";import{useId as u}from"react";const d=l(`border-input dark:bg-input/30 data-checked:bg-(--selection-control) data-checked:text-(--selection-control-foreground) data-checked:border-(--selection-control) aria-invalid:aria-checked:border-(--selection-control) aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex items-center justify-center border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50`,{variants:{color:t,size:{sm:`size-3.5 rounded-[3px] [&_[data-slot=checkbox-indicator]>svg]:size-3`,md:`size-4 rounded-[4px] [&_[data-slot=checkbox-indicator]>svg]:size-3.5`,lg:`size-5 rounded-[5px] [&_[data-slot=checkbox-indicator]>svg]:size-4`}},defaultVariants:{color:`primary`,size:`md`}}),f=l(``,{variants:{size:{sm:`text-xs`,md:`text-sm`,lg:`text-xl`}},defaultVariants:{size:`md`}});function Checkbox({className:t,color:l=`primary`,id:p,label:m,labelProps:h,size:g=`md`,..._}){let v=u(),y=r(p),b=m!==void 0,x=y??(b?v:void 0),{className:S,...C}=h??{},w=s(o.Root,{"data-slot":`checkbox`,"data-color":l,"data-size":g,id:x,className:e(d({color:l,size:g}),t),..._,children:c(o.Indicator,{"data-slot":`checkbox-indicator`,className:`grid place-content-center text-current transition-none`,children:[s(i,{className:`block in-data-[state=indeterminate]:hidden`}),s(a,{className:`hidden in-data-[state=indeterminate]:block`})]})});return b?c(`div`,{"data-slot":`checkbox-field`,className:`flex items-center gap-2`,children:[w,s(n,{...C,htmlFor:x,className:e(f({size:g}),S),children:m})]}):w}export{Checkbox};
2
2
  //# sourceMappingURL=checkbox.js.map