@xploreu/components 0.4.5 → 0.4.8

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 (197) hide show
  1. package/dist/chunk-4WDDWMBW.js +3 -0
  2. package/dist/chunk-4WDDWMBW.js.map +1 -0
  3. package/dist/chunk-5ETIHFSE.js +3 -0
  4. package/dist/chunk-5ETIHFSE.js.map +1 -0
  5. package/dist/chunk-77T5FOYW.js +2 -0
  6. package/dist/chunk-77T5FOYW.js.map +1 -0
  7. package/dist/chunk-7WQRDDWL.js +2 -0
  8. package/dist/chunk-7WQRDDWL.js.map +1 -0
  9. package/dist/chunk-AKTRVGKT.js +2 -0
  10. package/dist/{chunk-DSH6THYW.js.map → chunk-AKTRVGKT.js.map} +1 -1
  11. package/dist/chunk-AUYPBFZJ.js +2 -0
  12. package/dist/chunk-AUYPBFZJ.js.map +1 -0
  13. package/dist/chunk-BRZUHQYB.js +2 -0
  14. package/dist/chunk-BRZUHQYB.js.map +1 -0
  15. package/dist/chunk-BX7TD4RH.js +2 -0
  16. package/dist/chunk-BX7TD4RH.js.map +1 -0
  17. package/dist/chunk-CHN5ZCUY.js +2 -0
  18. package/dist/chunk-CHN5ZCUY.js.map +1 -0
  19. package/dist/chunk-DCH35MB4.js +3 -0
  20. package/dist/chunk-DCH35MB4.js.map +1 -0
  21. package/dist/chunk-EE5QQGMX.js +2 -0
  22. package/dist/chunk-EE5QQGMX.js.map +1 -0
  23. package/dist/chunk-F5B3WGPQ.js +2 -0
  24. package/dist/chunk-F5B3WGPQ.js.map +1 -0
  25. package/dist/chunk-ITR3T6UB.js +2 -0
  26. package/dist/chunk-ITR3T6UB.js.map +1 -0
  27. package/dist/chunk-JP737TCG.js +2 -0
  28. package/dist/chunk-JP737TCG.js.map +1 -0
  29. package/dist/chunk-MXDNSGGI.js +2 -0
  30. package/dist/chunk-MXDNSGGI.js.map +1 -0
  31. package/dist/chunk-NKQ3MFRE.js +2 -0
  32. package/dist/chunk-NKQ3MFRE.js.map +1 -0
  33. package/dist/chunk-NY57FUA3.js +2 -0
  34. package/dist/{chunk-2TQHUVNP.js.map → chunk-NY57FUA3.js.map} +1 -1
  35. package/dist/chunk-OF4LN45Z.js +2 -0
  36. package/dist/chunk-OF4LN45Z.js.map +1 -0
  37. package/dist/chunk-P2DJG2OD.js +2 -0
  38. package/dist/chunk-P2DJG2OD.js.map +1 -0
  39. package/dist/{chunk-NTQ2FXS7.js → chunk-P6Y4P5QT.js} +2 -2
  40. package/dist/{chunk-NTQ2FXS7.js.map → chunk-P6Y4P5QT.js.map} +1 -1
  41. package/dist/{chunk-VE5ZAJ35.js → chunk-QV2OO65X.js} +2 -2
  42. package/dist/{chunk-VE5ZAJ35.js.map → chunk-QV2OO65X.js.map} +1 -1
  43. package/dist/chunk-QWCYJC3T.js +3 -0
  44. package/dist/chunk-QWCYJC3T.js.map +1 -0
  45. package/dist/chunk-RCA6JRHN.js +2 -0
  46. package/dist/chunk-RCA6JRHN.js.map +1 -0
  47. package/dist/chunk-RN6CYJKG.js +2 -0
  48. package/dist/chunk-RN6CYJKG.js.map +1 -0
  49. package/dist/chunk-S4IFBDOJ.js +2 -0
  50. package/dist/chunk-S4IFBDOJ.js.map +1 -0
  51. package/dist/chunk-TES3PKRE.js +2 -0
  52. package/dist/chunk-TES3PKRE.js.map +1 -0
  53. package/dist/chunk-TWWH5V2P.js +2 -0
  54. package/dist/chunk-TWWH5V2P.js.map +1 -0
  55. package/dist/chunk-UBTCCHVI.js +2 -0
  56. package/dist/chunk-UBTCCHVI.js.map +1 -0
  57. package/dist/chunk-UCCQUPMT.js +3 -0
  58. package/dist/chunk-UCCQUPMT.js.map +1 -0
  59. package/dist/chunk-WWCXHCNU.js +2 -0
  60. package/dist/chunk-WWCXHCNU.js.map +1 -0
  61. package/dist/chunk-XG3W7QMP.js +2 -0
  62. package/dist/chunk-XG3W7QMP.js.map +1 -0
  63. package/dist/chunk-XJTOYNCA.js +3 -0
  64. package/dist/chunk-XJTOYNCA.js.map +1 -0
  65. package/dist/chunk-XLACGAIR.js +2 -0
  66. package/dist/chunk-XLACGAIR.js.map +1 -0
  67. package/dist/{chunk-NG3NFI2B.js → chunk-XZKSYHE5.js} +2 -2
  68. package/dist/{chunk-NG3NFI2B.js.map → chunk-XZKSYHE5.js.map} +1 -1
  69. package/dist/{chunk-746IQSMF.js → chunk-YB5ZNOPP.js} +2 -2
  70. package/dist/{chunk-746IQSMF.js.map → chunk-YB5ZNOPP.js.map} +1 -1
  71. package/dist/chunk-YKX7SKZA.js +2 -0
  72. package/dist/chunk-YKX7SKZA.js.map +1 -0
  73. package/dist/{chunk-IXWAWSD4.js → chunk-YZNI5HEX.js} +2 -2
  74. package/dist/{chunk-IXWAWSD4.js.map → chunk-YZNI5HEX.js.map} +1 -1
  75. package/dist/chunk-ZP4ZPH65.js +2 -0
  76. package/dist/chunk-ZP4ZPH65.js.map +1 -0
  77. package/dist/chunk-ZQWDYX2E.js +3 -0
  78. package/dist/chunk-ZQWDYX2E.js.map +1 -0
  79. package/dist/composites/combobox-chip-outside.js +1 -1
  80. package/dist/composites/combobox-chip.d.ts +42 -0
  81. package/dist/composites/combobox-chip.js +2 -0
  82. package/dist/composites/combobox-chip.js.map +1 -0
  83. package/dist/composites/combobox-simple.d.ts +33 -0
  84. package/dist/composites/combobox-simple.js +2 -0
  85. package/dist/composites/combobox-simple.js.map +1 -0
  86. package/dist/composites/filter-combobox.d.ts +42 -0
  87. package/dist/composites/filter-combobox.js +2 -0
  88. package/dist/composites/filter-combobox.js.map +1 -0
  89. package/dist/composites/index.d.ts +9 -114
  90. package/dist/composites/index.js +1 -1
  91. package/dist/composites/index.js.map +1 -1
  92. package/dist/composites/phone-input.js +1 -1
  93. package/dist/composites/profile-avatar.d.ts +28 -0
  94. package/dist/composites/profile-avatar.js +2 -0
  95. package/dist/composites/profile-avatar.js.map +1 -0
  96. package/dist/form/form-input.js +1 -1
  97. package/dist/form/index.js +1 -1
  98. package/dist/icons/check-square-icon.d.ts +6 -0
  99. package/dist/icons/check-square-icon.js +2 -0
  100. package/dist/icons/check-square-icon.js.map +1 -0
  101. package/dist/icons/close-square-icon.d.ts +6 -0
  102. package/dist/icons/close-square-icon.js +2 -0
  103. package/dist/icons/close-square-icon.js.map +1 -0
  104. package/dist/icons/danger-triangle-icon.d.ts +6 -0
  105. package/dist/icons/danger-triangle-icon.js +2 -0
  106. package/dist/icons/danger-triangle-icon.js.map +1 -0
  107. package/dist/icons/index.d.ts +7 -1
  108. package/dist/icons/index.js +1 -1
  109. package/dist/icons/sort-ascending-icon.d.ts +6 -0
  110. package/dist/icons/sort-ascending-icon.js +2 -0
  111. package/dist/icons/sort-ascending-icon.js.map +1 -0
  112. package/dist/icons/sort-default-icon.d.ts +6 -0
  113. package/dist/icons/sort-default-icon.js +2 -0
  114. package/dist/icons/sort-default-icon.js.map +1 -0
  115. package/dist/icons/sort-descending-icon.d.ts +6 -0
  116. package/dist/icons/sort-descending-icon.js +2 -0
  117. package/dist/icons/sort-descending-icon.js.map +1 -0
  118. package/dist/primitives/accordion.d.ts +33 -0
  119. package/dist/primitives/accordion.js +2 -0
  120. package/dist/primitives/accordion.js.map +1 -0
  121. package/dist/primitives/checkbox.d.ts +16 -0
  122. package/dist/primitives/checkbox.js +2 -0
  123. package/dist/primitives/checkbox.js.map +1 -0
  124. package/dist/primitives/collapsible.d.ts +22 -0
  125. package/dist/primitives/collapsible.js +2 -0
  126. package/dist/primitives/collapsible.js.map +1 -0
  127. package/dist/primitives/index.d.ts +16 -19
  128. package/dist/primitives/index.js +1 -1
  129. package/dist/primitives/menu.d.ts +61 -0
  130. package/dist/primitives/menu.js +2 -0
  131. package/dist/primitives/menu.js.map +1 -0
  132. package/dist/primitives/slider.d.ts +18 -0
  133. package/dist/primitives/slider.js +2 -0
  134. package/dist/primitives/slider.js.map +1 -0
  135. package/dist/primitives/toast.d.ts +27 -0
  136. package/dist/primitives/toast.js +2 -0
  137. package/dist/primitives/toast.js.map +1 -0
  138. package/dist/primitives/tooltip.d.ts +18 -0
  139. package/dist/primitives/tooltip.js +2 -0
  140. package/dist/primitives/tooltip.js.map +1 -0
  141. package/dist/ui/accordion.d.ts +20 -0
  142. package/dist/ui/accordion.js +2 -0
  143. package/dist/ui/accordion.js.map +1 -0
  144. package/dist/ui/alert-dialog.js +1 -1
  145. package/dist/ui/badge.d.ts +2 -2
  146. package/dist/ui/calendar.d.ts +40 -0
  147. package/dist/ui/calendar.js +2 -0
  148. package/dist/ui/calendar.js.map +1 -0
  149. package/dist/ui/carousel.d.ts +35 -0
  150. package/dist/ui/carousel.js +2 -0
  151. package/dist/ui/carousel.js.map +1 -0
  152. package/dist/ui/checkbox.d.ts +16 -0
  153. package/dist/ui/checkbox.js +2 -0
  154. package/dist/ui/checkbox.js.map +1 -0
  155. package/dist/ui/collapsible.d.ts +15 -0
  156. package/dist/ui/collapsible.js +2 -0
  157. package/dist/ui/collapsible.js.map +1 -0
  158. package/dist/ui/combobox.js +1 -1
  159. package/dist/ui/date-multiple-picker.d.ts +26 -0
  160. package/dist/ui/date-multiple-picker.js +2 -0
  161. package/dist/ui/date-multiple-picker.js.map +1 -0
  162. package/dist/ui/date-picker.d.ts +23 -0
  163. package/dist/ui/date-picker.js +2 -0
  164. package/dist/ui/date-picker.js.map +1 -0
  165. package/dist/ui/date-range-picker.d.ts +23 -0
  166. package/dist/ui/date-range-picker.js +2 -0
  167. package/dist/ui/date-range-picker.js.map +1 -0
  168. package/dist/ui/dialog.js +1 -1
  169. package/dist/ui/index.d.ts +31 -113
  170. package/dist/ui/index.js +1 -1
  171. package/dist/ui/input.js +1 -1
  172. package/dist/ui/menu.d.ts +48 -0
  173. package/dist/ui/menu.js +2 -0
  174. package/dist/ui/menu.js.map +1 -0
  175. package/dist/ui/pagination.d.ts +15 -0
  176. package/dist/ui/pagination.js +2 -0
  177. package/dist/ui/pagination.js.map +1 -0
  178. package/dist/ui/sheet.js +1 -1
  179. package/dist/ui/slider.d.ts +14 -0
  180. package/dist/ui/slider.js +2 -0
  181. package/dist/ui/slider.js.map +1 -0
  182. package/dist/ui/table.d.ts +24 -0
  183. package/dist/ui/table.js +2 -0
  184. package/dist/ui/table.js.map +1 -0
  185. package/dist/ui/toast.d.ts +28 -0
  186. package/dist/ui/toast.js +2 -0
  187. package/dist/ui/toast.js.map +1 -0
  188. package/dist/ui/tooltip.d.ts +19 -0
  189. package/dist/ui/tooltip.js +2 -0
  190. package/dist/ui/tooltip.js.map +1 -0
  191. package/package.json +15 -13
  192. package/dist/chunk-2TQHUVNP.js +0 -2
  193. package/dist/chunk-DSH6THYW.js +0 -2
  194. package/dist/chunk-DXI32G2S.js +0 -2
  195. package/dist/chunk-DXI32G2S.js.map +0 -1
  196. package/dist/chunk-MAY6ICTE.js +0 -2
  197. package/dist/chunk-MAY6ICTE.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/carousel.tsx"],"names":["CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","Button","jsxs","Fragment","ArrowLeft","CarouselNext","ArrowRight","CarouselDots","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","onInit","_","index"],"mappings":"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","file":"chunk-UBTCCHVI.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\"\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\r\n\r\nimport { Button } from \"./button\"\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nfunction Carousel({\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & CarouselProps) {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) return\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api,\r\n opts,\r\n orientation:\r\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n aria-roledescription=\"carousel\"\r\n className={cn(\"relative\", className)}\r\n data-slot=\"carousel\"\r\n role=\"region\"\r\n onKeyDownCapture={handleKeyDown}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n}\r\n\r\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { carouselRef } = useCarousel()\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\r\n <div className={cn(\"flex\", className)} {...props} />\r\n </div>\r\n )\r\n}\r\n\r\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n aria-roledescription=\"slide\"\r\n className={cn(\"min-w-0 shrink-0 grow-0 basis-full\", className)}\r\n data-slot=\"carousel-item\"\r\n role=\"group\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype CarouselPreviousProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselPrevious({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselPreviousProps) {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Previous slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 left-6 -translate-y-1/2\"\r\n : \"top-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-previous\"\r\n disabled={!canScrollPrev}\r\n icon\r\n onClick={scrollPrev}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowLeft />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\ntype CarouselNextProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselNext({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselNextProps) {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Next slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 right-6 -translate-y-1/2\"\r\n : \"bottom-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-next\"\r\n disabled={!canScrollNext}\r\n icon\r\n onClick={scrollNext}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowRight />\r\n <span className=\"sr-only\">Next slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CarouselDots({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { api } = useCarousel()\r\n const [selectedIndex, setSelectedIndex] = React.useState(0)\r\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([])\r\n\r\n const onInit = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setScrollSnaps(api.scrollSnapList())\r\n }, [])\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setSelectedIndex(api.selectedScrollSnap())\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n\r\n onInit(api)\r\n onSelect(api)\r\n\r\n api.on(\"reInit\", onInit)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onInit, onSelect])\r\n\r\n if (scrollSnaps.length <= 1) return null\r\n\r\n return (\r\n <div\r\n className={cn(\"flex items-center justify-center gap-1.5\", className)}\r\n {...props}\r\n >\r\n {scrollSnaps.map((_, index) => (\r\n <button\r\n key={index}\r\n aria-label={`Go to slide ${index + 1}`}\r\n className={cn(\r\n \"h-1 rounded-full transition-all duration-300\",\r\n index === selectedIndex\r\n ? \"w-4 bg-fg-primary\"\r\n : \"w-2 bg-fg-tertiary hover:bg-fg-secondary\",\r\n )}\r\n data-selected={index === selectedIndex}\r\n data-slot=\"carousel-dot\"\r\n onClick={() => api?.scrollTo(index)}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport {\r\n Carousel,\r\n CarouselContent,\r\n CarouselDots,\r\n CarouselItem,\r\n CarouselNext,\r\n CarouselPrevious,\r\n type CarouselApi,\r\n type CarouselProps,\r\n type CarouselContextProps,\r\n}\r\n"]}
@@ -0,0 +1,3 @@
1
+ import {jsxs,jsx}from'react/jsx-runtime';function u({color:e="currentColor",size:o=12,strokeWidth:r=1,absoluteStrokeWidth:t,...s}){return jsxs("svg",{fill:"none",height:o,stroke:e,strokeWidth:t?Number(r)*12/Number(o):r,viewBox:"0 0 12 12",width:o,xmlns:"http://www.w3.org/2000/svg",...s,children:[jsx("path",{d:"M8 8L6 10L4 8",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),jsx("path",{d:"M6 10V2",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"})]})}var c=u;
2
+ export{c as a};//# sourceMappingURL=chunk-UCCQUPMT.js.map
3
+ //# sourceMappingURL=chunk-UCCQUPMT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/sort-ascending-icon.tsx"],"names":["SortAscendingIcon","color","size","strokeWidth","absoluteStrokeWidth","props","jsxs","jsx","sort_ascending_icon_default"],"mappings":"yCAIA,SAASA,CAAAA,CAAkB,CACzB,KAAA,CAAAC,CAAAA,CAAQ,eACR,IAAA,CAAAC,CAAAA,CAAO,EAAA,CACP,WAAA,CAAAC,EAAc,CAAA,CACd,mBAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAc,CACZ,OACEC,IAAAA,CAAC,OACC,IAAA,CAAK,MAAA,CACL,MAAA,CAAQJ,CAAAA,CACR,OAAQD,CAAAA,CACR,WAAA,CAAaG,CAAAA,CAAuB,MAAA,CAAOD,CAAW,CAAA,CAAI,EAAA,CAAM,MAAA,CAAOD,CAAI,EAAIC,CAAAA,CAC/E,OAAA,CAAQ,WAAA,CACR,KAAA,CAAOD,EACP,KAAA,CAAM,4BAAA,CACL,GAAGG,CAAAA,CAEJ,UAAAE,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAA,CAAgB,OAAO,cAAA,CAAe,aAAA,CAAc,OAAA,CAAQ,cAAA,CAAe,QAAQ,CAAA,CAC3FA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAU,MAAA,CAAO,cAAA,CAAe,aAAA,CAAc,OAAA,CAAQ,eAAe,OAAA,CAAQ,CAAA,CAAA,CACvF,CAEJ,KAEOC,CAAAA,CAAQR","file":"chunk-UCCQUPMT.js","sourcesContent":["\"use client\"\r\n\r\nimport { type IconProps } from \"../types\";\r\n\r\nfunction SortAscendingIcon({\r\n color = \"currentColor\",\r\n size = 12,\r\n strokeWidth = 1,\r\n absoluteStrokeWidth,\r\n ...props\r\n}: IconProps) {\r\n return (\r\n <svg\r\n fill=\"none\"\r\n height={size}\r\n stroke={color}\r\n strokeWidth={absoluteStrokeWidth ? (Number(strokeWidth) * 12) / Number(size) : strokeWidth}\r\n viewBox=\"0 0 12 12\"\r\n width={size}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <path d=\"M8 8L6 10L4 8\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n <path d=\"M6 10V2\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nexport default SortAscendingIcon;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {a,b}from'./chunk-VNAMAKPG.js';import*as D from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {differenceInCalendarDays}from'date-fns';import {ChevronLeftIcon,ChevronRightIcon,ChevronLeft,ChevronRight}from'lucide-react';import {DayPicker,DayButton,useDayPicker,labelPrevious,labelNext}from'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function ce({className:r,showOutsideDays:e=true,showViewSwitcher:t=true,yearRange:a$1=12,numberOfMonths:s,components:l,navView:f,defaultNavView:u,onNavViewChange:g,minNavView:b="days",weekStartsOn:N=0,...n}){let[c,h]=useControlledState({value:f,defaultValue:u??"days",onChange:g});D.useEffect(()=>{b==="months"&&h("months"),b==="years"&&h("years");},[b,h]);let[C,d]=D.useState({year:new Date().getFullYear()}),[y,m]=D.useState(D.useMemo(()=>{let w=new Date().getFullYear();return {from:w-Math.floor(a$1/2-1),to:w+Math.ceil(a$1/2)}},[a$1])),{onNextClick:_,onPrevClick:V,startMonth:x,endMonth:p}=n,F=c==="years"||c==="months"?1:s,M=cn("relative flex [&>div:not(:last-of-type)]:mr-3",n.monthsClassName),R=cn("relative flex items-center justify-center",n.monthCaptionClassName),A=cn("flex flex-row",n.weekdaysClassName),G=cn("size-9 first:text-text-error-primary text-label-semibold-3 text-text-primary flex items-center justify-center",n.weekdayClassName),Y=cn("flex flex-col gap-2",n.monthClassName),E=cn("relative flex items-center justify-center pt-xp-xs",n.captionClassName),L=cn("truncate text-body-regular-3 font-medium",n.captionLabelClassName),B=a({variant:"secondary-accent",className:"absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"}),T=cn(B,"right-0",n.buttonNextClassName),j=cn(B,"left-0",n.buttonPreviousClassName),O=cn("flex items-start",n.navClassName),J=cn("flex flex-col p-3 bg-bg-primary text-text-primary rounded-lg",n.monthGridClassName),$=cn("flex w-max items-start",n.weekClassName),I=cn("flex size-9 flex-1 items-center justify-center p-0 text-label-semibold-3",n.dayClassName),q=cn(a({variant:null,size:"sm"}),"p-0",n.dayButtonClassName),H="[&>button]:bg-gradient-buttons-gradient-blue [&>button]:text-fg-white",K=cn("day-range-start [&:not(.day-range-end)>button]:rounded-e-none",n.rangeStartClassName),Q=cn("day-range-end [&:not(.day-range-start)>button]:rounded-s-none",n.rangeEndClassName),U=cn("[&>button]:bg-none [&>button]:bg-bg-primary-hover [&>button]:text-text-primary [&>button]:rounded-none [&[aria-selected=true][data-today=true]>button]:after:bg-utility-brand-500 [&[aria-selected=true][data-today=true]>button]:after:ring-utility-brand-100",n.rangeMiddleClassName),W=cn(" [&>button]:relative","[&>button]:after:content-[''] [&>button]:after:absolute [&>button]:after:bottom-1","[&>button]:after:left-1/2 [&>button]:after:-translate-x-1/2","[&>button]:after:size-1 [&>button]:after:rounded-full [&>button]:after:ring-2 [&>button]:after:ring-utility-brand-100 [&>button]:after:bg-utility-brand-500","[&[aria-selected=true]>button]:after:bg-fg-white [&[aria-selected=true]>button]:after:ring-alpha-alpha-white-30",n.todayClassName),X=cn("opacity-50",n.outsideClassName),Z=cn("opacity-50",n.disabledClassName),ee=cn("invisible flex-1",n.hiddenClassName);return jsx(DayPicker,{className:cn("p-xp-xl rounded-xl bg-bg-tertiary h-max",r),classNames:{months:M,month_caption:R,weekdays:A,weekday:G,month:Y,caption:E,caption_label:L,button_next:T,button_previous:j,nav:O,month_grid:J,week:$,day:I,day_button:q,selected:H,range_start:K,range_middle:U,range_end:Q,today:W,outside:X,disabled:Z,hidden:ee},components:{Chevron:({orientation:w})=>jsx(w==="left"?ChevronLeftIcon:ChevronRightIcon,{className:"h-4 w-4"}),Nav:({className:w})=>jsx(de,{className:w,displayMonths:C,displayYears:y,endMonth:p,navView:c,setDisplayMonths:d,setDisplayYears:m,startMonth:x,onNextClick:_,onPrevClick:V}),CaptionLabel:w=>jsx(fe,{displayMonths:C,displayYears:y,navView:c,setNavView:h,showViewSwitcher:t,...w}),DayButton:w=>jsx(DayButton,{"data-icon":true,...w}),MonthGrid:({className:w,children:z,...te})=>jsx(be,{className:w,displayMonths:C,displayYears:y,endMonth:p,minNavView:b,navView:c,setDisplayMonths:d,setNavView:h,startMonth:x,...te,children:z}),...l},numberOfMonths:F,showOutsideDays:e,weekStartsOn:N,...n})}ce.displayName="Calendar";function de({className:r,navView:e,startMonth:t,endMonth:a,displayYears:s,displayMonths:l,setDisplayYears:f,setDisplayMonths:u,onPrevClick:g,onNextClick:b$1}){let{nextMonth:N,previousMonth:n,goToMonth:c}=useDayPicker(),h=e==="years"?t&&differenceInCalendarDays(new Date(s.from-1,0,1),t)<0||a&&differenceInCalendarDays(new Date(s.from-1,0,1),a)>0:e==="months"?t&&differenceInCalendarDays(new Date(l.year-1,0,1),t)<0||a&&differenceInCalendarDays(new Date(l.year-1,0,1),a)>0:!n,C=e==="years"?t&&differenceInCalendarDays(new Date(s.to+1,0,1),t)<0||a&&differenceInCalendarDays(new Date(s.to+1,0,1),a)>0:e==="months"?t&&differenceInCalendarDays(new Date(l.year+1,0,1),t)<0||a&&differenceInCalendarDays(new Date(l.year+1,0,1),a)>0:!N,d=D.useCallback(()=>{if(n){if(e==="years"){f(m=>({from:m.from-(m.to-m.from+1),to:m.to-(m.to-m.from+1)})),g?.(new Date(s.from-(s.to-s.from),0,1));return}if(e==="months"){u(m=>({year:m.year-1})),g?.(new Date(l.year-1,0,1));return}c(n),g?.(n);}},[n,c,s.from,s.to,l.year,e,g,f,u]),y=D.useCallback(()=>{if(N){if(e==="years"){f(m=>({from:m.from+(m.to-m.from+1),to:m.to+(m.to-m.from+1)})),b$1?.(new Date(s.from+(s.to-s.from),0,1));return}if(e==="months"){u(m=>({year:m.year+1})),b$1?.(new Date(l.year+1,0,1));return}c(N),b$1?.(N);}},[c,N,s.from,s.to,l.year,e,b$1,f,u]);return jsxs("nav",{className:cn("flex items-center",r),children:[jsx(b,{"aria-label":e==="years"?`Go to the previous ${s.to-s.from+1} years`:e==="months"?"Go to the previous year":labelPrevious(n),className:"absolute left-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10",disabled:h,size:"sm",icon:true,tabIndex:h?void 0:-1,type:"button",variant:null,onClick:d,children:jsx(ChevronLeft,{})}),jsx(b,{"aria-label":e==="years"?`Go to the next ${s.to-s.from+1} years`:e==="months"?"Go to the next year":labelNext(N),className:"absolute right-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10",disabled:C,size:"sm",icon:true,tabIndex:C?void 0:-1,type:"button",variant:null,onClick:y,children:jsx(ChevronRight,{})})]})}function fe({children:r,showViewSwitcher:e,navView:t,setNavView:a,displayYears:s,displayMonths:l,...f}){return e?jsx(b,{disabled:t==="years",size:"sm",type:"button",variant:null,onClick:()=>{t==="days"?a("months"):t==="months"&&a("years");},children:t==="days"?r:t==="months"?l.year:s.from+" - "+s.to}):jsx("span",{...f,children:r})}function be({className:r,children:e,displayYears:t,displayMonths:a,setDisplayMonths:s,startMonth:l,endMonth:f,navView:u,setNavView:g,minNavView:b="days",...N}){return u==="years"?jsx(ge,{className:r,displayYears:t,endMonth:f,minNavView:b,navView:u,setDisplayMonths:s,setNavView:g,startMonth:l,...N}):u==="months"?jsx(Ce,{className:r,displayMonths:a,endMonth:f,minNavView:b,navView:u,setNavView:g,startMonth:l,...N}):jsx("table",{className:cn("flex-1",r),...N,children:e})}function Ne(r,e){if(!r)return false;if(Array.isArray(r))return r.some(t=>t.getFullYear()===e);if(typeof r=="object"&&"from"in r){let t=r;return t.from&&t.to?e>=t.from.getFullYear()&&e<=t.to.getFullYear():t.from?t.from.getFullYear()===e:false}return r.getFullYear()===e}function ye(r,e,t){if(!r)return false;if(Array.isArray(r))return r.some(a=>a.getMonth()===t&&a.getFullYear()===e);if(typeof r=="object"&&"from"in r){let a=r;if(a.from&&a.to){let s=a.from.getMonth(),l=a.from.getFullYear(),f=a.to.getMonth(),u=a.to.getFullYear();return e===l&&e===u?t>=s&&t<=f:e===l?t>=s:e===u?t<=f:e>l&&e<u}return a.from?a.from.getMonth()===t&&a.from.getFullYear()===e:false}return r.getMonth()===t&&r.getFullYear()===e}function ge({className:r,displayYears:e,startMonth:t,endMonth:a,setNavView:s,navView:l,setDisplayMonths:f,minNavView:u="days",...g}){let {selected:b$1,select:N}=useDayPicker();new Date().getFullYear();let c=e.to-e.from+1,h=(C,d)=>{u==="years"?N?.(new Date(d,0,1),{},C):(s("months"),f({year:d}));};return jsx("table",{className:cn("w-[312px]",r),...g,children:jsx("tbody",{children:jsx("tr",{className:"grid grid-cols-3 gap-xp-md",children:Array.from({length:c},(C,d)=>{let y=e.from+d,m=new Date(y,0,1),_=new Date(y,11,31),V=t&&differenceInCalendarDays(_,t)<0,x=a&&differenceInCalendarDays(m,a)>0,p=V||x,M=Ne(b$1,y);return jsx("td",{children:jsx(b,{className:"w-full",disabled:l==="years"?p:void 0,type:"button",variant:M?"primary":"tertiary-accent",onClick:R=>h(R,y),children:y})},y)})})})})}function Ce({className:r,displayMonths:e,startMonth:t,endMonth:a,setNavView:s,navView:l,minNavView:f="days",...u}){let{goToMonth:g,selected:b$1,select:N}=useDayPicker(),n=["January","February","March","April","May","June","July","August","September","October","November","December"],c=e.year,h=(C,d)=>{f==="months"?N?.(new Date(c,d,1),{},C):(s("days"),g(new Date(c,d)));};return jsx("table",{className:cn("w-[312px]",r),...u,children:jsx("tbody",{children:jsx("tr",{className:"grid grid-cols-3 gap-xp-md",children:n.map((C,d)=>{let y=t&&differenceInCalendarDays(new Date(c,d,31),t)<0,m=a&&differenceInCalendarDays(new Date(c,d,1),a)>0,_=y||m;c===new Date().getFullYear()&&d===new Date().getMonth();let x=ye(b$1,c,d);return jsx("td",{children:jsx(b,{className:"w-full",disabled:l==="months"?_:void 0,type:"button",variant:x?"primary":"tertiary-accent",onClick:p=>h(p,d),children:C.substring(0,3)})},d)})})})})}export{ce as a};//# sourceMappingURL=chunk-WWCXHCNU.js.map
2
+ //# sourceMappingURL=chunk-WWCXHCNU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/calendar.tsx"],"names":["Calendar","className","showOutsideDays","showViewSwitcher","yearRange","numberOfMonths","components","navViewProp","defaultNavView","onNavViewChange","minNavView","weekStartsOn","props","navView","setNavView","useControlledState","displayMonths","setDisplayMonths","displayYears","setDisplayYears","currentYear","onNextClick","onPrevClick","startMonth","endMonth","columnsDisplayed","_monthsClassName","cn","_monthCaptionClassName","_weekdaysClassName","_weekdayClassName","_monthClassName","_captionClassName","_captionLabelClassName","buttonNavClassName","buttonVariants","_buttonNextClassName","_buttonPreviousClassName","_navClassName","_monthGridClassName","_weekClassName","_dayClassName","_dayButtonClassName","_dayButtonSelectedClassName","_rangeStartClassName","_rangeEndClassName","_rangeMiddleClassName","_todayClassName","_outsideClassName","_disabledClassName","_hiddenClassName","jsx","DayPicker","orientation","ChevronLeftIcon","ChevronRightIcon","navClassName","Nav","clProps","CaptionLabel","dayProps","DayButton","mgClassName","children","mgProps","CalendarGrid","nextMonth","previousMonth","goToMonth","useDayPicker","isPreviousDisabled","differenceInCalendarDays","isNextDisabled","handlePreviousClick","prev","handleNextClick","jsxs","Button","labelPrevious","ChevronLeft","labelNext","ChevronRight","YearGrid","MonthGrid","isYearSelected","selected","year","d","range","isMonthSelected","monthIdx","fromMonth","fromYear","toMonth","toYear","select","totalYears","handleClick","e","_","i","yearStart","yearEnd","isBeforeStart","isAfterEnd","isDisabled","isSelected","months","month","isBefore","isAfter"],"mappings":"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","file":"chunk-WWCXHCNU.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { differenceInCalendarDays } from \"date-fns\"\r\nimport {\r\n ChevronLeft,\r\n ChevronLeftIcon,\r\n ChevronRight,\r\n ChevronRightIcon,\r\n} from \"lucide-react\"\r\nimport {\r\n type DateRange,\r\n DayButton,\r\n DayPicker,\r\n type DayPickerProps,\r\n labelNext,\r\n labelPrevious,\r\n useDayPicker,\r\n} from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { Button, buttonVariants } from \"./button\"\r\n\r\nexport type CalendarProps = DayPickerProps & {\r\n yearRange?: number\r\n showViewSwitcher?: boolean\r\n navView?: NavView\r\n defaultNavView?: NavView\r\n onNavViewChange?: (navView: NavView) => void\r\n minNavView?: NavView\r\n monthsClassName?: string\r\n monthCaptionClassName?: string\r\n weekdaysClassName?: string\r\n weekdayClassName?: string\r\n monthClassName?: string\r\n captionClassName?: string\r\n captionLabelClassName?: string\r\n buttonNextClassName?: string\r\n buttonPreviousClassName?: string\r\n navClassName?: string\r\n monthGridClassName?: string\r\n weekClassName?: string\r\n dayClassName?: string\r\n dayButtonClassName?: string\r\n rangeStartClassName?: string\r\n rangeEndClassName?: string\r\n selectedClassName?: string\r\n todayClassName?: string\r\n outsideClassName?: string\r\n disabledClassName?: string\r\n rangeMiddleClassName?: string\r\n hiddenClassName?: string\r\n}\r\n\r\nexport type NavView = \"days\" | \"months\" | \"years\"\r\n\r\nfunction Calendar({\r\n className,\r\n showOutsideDays = true,\r\n showViewSwitcher = true,\r\n yearRange = 12,\r\n numberOfMonths,\r\n components,\r\n navView: navViewProp,\r\n defaultNavView,\r\n onNavViewChange,\r\n minNavView = \"days\",\r\n weekStartsOn = 0,\r\n ...props\r\n}: CalendarProps) {\r\n const [navView, setNavView] = useControlledState({\r\n value: navViewProp,\r\n defaultValue: defaultNavView ?? \"days\",\r\n onChange: onNavViewChange,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (minNavView === \"months\") setNavView(\"months\")\r\n if (minNavView === \"years\") setNavView(\"years\")\r\n }, [minNavView, setNavView])\r\n\r\n const [displayMonths, setDisplayMonths] = React.useState<{ year: number }>({\r\n year: new Date().getFullYear(),\r\n })\r\n\r\n const [displayYears, setDisplayYears] = React.useState<{ from: number; to: number }>(\r\n React.useMemo(() => {\r\n const currentYear = new Date().getFullYear()\r\n return {\r\n from: currentYear - Math.floor(yearRange / 2 - 1),\r\n to: currentYear + Math.ceil(yearRange / 2),\r\n }\r\n }, [yearRange]),\r\n )\r\n\r\n const { onNextClick, onPrevClick, startMonth, endMonth } = props\r\n\r\n const columnsDisplayed = navView === \"years\" || navView === \"months\" ? 1 : numberOfMonths\r\n\r\n const _monthsClassName = cn(\"relative flex [&>div:not(:last-of-type)]:mr-3\", props.monthsClassName)\r\n const _monthCaptionClassName = cn(\"relative flex items-center justify-center\", props.monthCaptionClassName)\r\n const _weekdaysClassName = cn(\"flex flex-row\", props.weekdaysClassName)\r\n const _weekdayClassName = cn(\"size-9 first:text-text-error-primary text-label-semibold-3 text-text-primary flex items-center justify-center\", props.weekdayClassName)\r\n const _monthClassName = cn(\"flex flex-col gap-2\", props.monthClassName)\r\n const _captionClassName = cn(\"relative flex items-center justify-center pt-xp-xs\", props.captionClassName)\r\n const _captionLabelClassName = cn(\"truncate text-body-regular-3 font-medium\", props.captionLabelClassName)\r\n const buttonNavClassName = buttonVariants({\r\n variant: \"secondary-accent\",\r\n className: \"absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\r\n })\r\n const _buttonNextClassName = cn(buttonNavClassName, \"right-0\", props.buttonNextClassName)\r\n const _buttonPreviousClassName = cn(buttonNavClassName, \"left-0\", props.buttonPreviousClassName)\r\n const _navClassName = cn(\"flex items-start\", props.navClassName)\r\n const _monthGridClassName = cn(\"flex flex-col p-3 bg-bg-primary text-text-primary rounded-lg\", props.monthGridClassName)\r\n const _weekClassName = cn(\"flex w-max items-start\", props.weekClassName)\r\n const _dayClassName = cn(\"flex size-9 flex-1 items-center justify-center p-0 text-label-semibold-3\", props.dayClassName)\r\n const _dayButtonClassName = cn(\r\n buttonVariants({ variant: null, size: \"sm\" }),\r\n \"p-0\",\r\n props.dayButtonClassName,\r\n )\r\n const _dayButtonSelectedClassName = \"[&>button]:bg-gradient-buttons-gradient-blue [&>button]:text-fg-white\"\r\n const _rangeStartClassName = cn(\"day-range-start [&:not(.day-range-end)>button]:rounded-e-none\", props.rangeStartClassName)\r\n const _rangeEndClassName = cn(\"day-range-end [&:not(.day-range-start)>button]:rounded-s-none\", props.rangeEndClassName)\r\n const _rangeMiddleClassName = cn(\r\n \"[&>button]:bg-none [&>button]:bg-bg-primary-hover [&>button]:text-text-primary [&>button]:rounded-none [&[aria-selected=true][data-today=true]>button]:after:bg-utility-brand-500 [&[aria-selected=true][data-today=true]>button]:after:ring-utility-brand-100\",\r\n props.rangeMiddleClassName,\r\n )\r\n const _todayClassName = cn(\r\n \" [&>button]:relative\",\r\n \"[&>button]:after:content-[''] [&>button]:after:absolute [&>button]:after:bottom-1\",\r\n \"[&>button]:after:left-1/2 [&>button]:after:-translate-x-1/2\",\r\n \"[&>button]:after:size-1 [&>button]:after:rounded-full [&>button]:after:ring-2 [&>button]:after:ring-utility-brand-100 [&>button]:after:bg-utility-brand-500\",\r\n \"[&[aria-selected=true]>button]:after:bg-fg-white [&[aria-selected=true]>button]:after:ring-alpha-alpha-white-30\",\r\n props.todayClassName,\r\n )\r\n const _outsideClassName = cn(\"opacity-50\", props.outsideClassName)\r\n const _disabledClassName = cn(\"opacity-50\", props.disabledClassName)\r\n const _hiddenClassName = cn(\"invisible flex-1\", props.hiddenClassName)\r\n\r\n return (\r\n <DayPicker\r\n className={cn(\"p-xp-xl rounded-xl bg-bg-tertiary h-max\", className)}\r\n classNames={{\r\n months: _monthsClassName,\r\n month_caption: _monthCaptionClassName,\r\n weekdays: _weekdaysClassName,\r\n weekday: _weekdayClassName,\r\n month: _monthClassName,\r\n caption: _captionClassName,\r\n caption_label: _captionLabelClassName,\r\n button_next: _buttonNextClassName,\r\n button_previous: _buttonPreviousClassName,\r\n nav: _navClassName,\r\n month_grid: _monthGridClassName,\r\n week: _weekClassName,\r\n day: _dayClassName,\r\n day_button: _dayButtonClassName,\r\n selected: _dayButtonSelectedClassName,\r\n range_start: _rangeStartClassName,\r\n range_middle: _rangeMiddleClassName,\r\n range_end: _rangeEndClassName,\r\n today: _todayClassName,\r\n outside: _outsideClassName,\r\n disabled: _disabledClassName,\r\n hidden: _hiddenClassName,\r\n }}\r\n components={{\r\n Chevron: ({ orientation }) => {\r\n const Icon = orientation === \"left\" ? ChevronLeftIcon : ChevronRightIcon\r\n return <Icon className=\"h-4 w-4\" />\r\n },\r\n Nav: ({ className: navClassName }) => (\r\n <Nav\r\n className={navClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setDisplayYears={setDisplayYears}\r\n startMonth={startMonth}\r\n onNextClick={onNextClick}\r\n onPrevClick={onPrevClick}\r\n />\r\n ),\r\n CaptionLabel: (clProps) => (\r\n <CaptionLabel\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n navView={navView}\r\n setNavView={setNavView}\r\n showViewSwitcher={showViewSwitcher}\r\n {...clProps}\r\n />\r\n ),\r\n DayButton: (dayProps) => (\r\n <DayButton\r\n data-icon\r\n {...dayProps}\r\n />\r\n ),\r\n MonthGrid: ({ className: mgClassName, children, ...mgProps }) => (\r\n <CalendarGrid\r\n className={mgClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...mgProps}\r\n >\r\n {children}\r\n </CalendarGrid>\r\n ),\r\n ...components,\r\n }}\r\n numberOfMonths={columnsDisplayed}\r\n showOutsideDays={showOutsideDays}\r\n weekStartsOn={weekStartsOn}\r\n {...props}\r\n />\r\n )\r\n}\r\nCalendar.displayName = \"Calendar\"\r\n\r\nfunction Nav({\r\n className,\r\n navView,\r\n startMonth,\r\n endMonth,\r\n displayYears,\r\n displayMonths,\r\n setDisplayYears,\r\n setDisplayMonths,\r\n onPrevClick,\r\n onNextClick,\r\n}: {\r\n className?: string\r\n navView: NavView\r\n startMonth?: Date\r\n endMonth?: Date\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayYears: React.Dispatch<React.SetStateAction<{ from: number; to: number }>>\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n onPrevClick?: (date: Date) => void\r\n onNextClick?: (date: Date) => void\r\n}) {\r\n const { nextMonth, previousMonth, goToMonth } = useDayPicker()\r\n\r\n const isPreviousDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !previousMonth\r\n })()\r\n\r\n const isNextDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !nextMonth\r\n })()\r\n\r\n const handlePreviousClick = React.useCallback(() => {\r\n if (!previousMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from - (prev.to - prev.from + 1),\r\n to: prev.to - (prev.to - prev.from + 1),\r\n }))\r\n onPrevClick?.(new Date(displayYears.from - (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year - 1 }))\r\n onPrevClick?.(new Date(displayMonths.year - 1, 0, 1))\r\n return\r\n }\r\n goToMonth(previousMonth)\r\n onPrevClick?.(previousMonth)\r\n }, [previousMonth, goToMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onPrevClick, setDisplayYears, setDisplayMonths])\r\n\r\n const handleNextClick = React.useCallback(() => {\r\n if (!nextMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from + (prev.to - prev.from + 1),\r\n to: prev.to + (prev.to - prev.from + 1),\r\n }))\r\n onNextClick?.(new Date(displayYears.from + (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year + 1 }))\r\n onNextClick?.(new Date(displayMonths.year + 1, 0, 1))\r\n return\r\n }\r\n goToMonth(nextMonth)\r\n onNextClick?.(nextMonth)\r\n }, [goToMonth, nextMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onNextClick, setDisplayYears, setDisplayMonths])\r\n\r\n return (\r\n <nav className={cn(\"flex items-center\", className)}>\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the previous ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the previous year\"\r\n : labelPrevious(previousMonth)\r\n }\r\n className=\"absolute left-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isPreviousDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isPreviousDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handlePreviousClick}\r\n >\r\n <ChevronLeft />\r\n </Button>\r\n\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the next ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the next year\"\r\n : labelNext(nextMonth)\r\n }\r\n className=\"absolute right-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isNextDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isNextDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handleNextClick}\r\n >\r\n <ChevronRight />\r\n </Button>\r\n </nav>\r\n )\r\n}\r\n\r\nfunction CaptionLabel({\r\n children,\r\n showViewSwitcher,\r\n navView,\r\n setNavView,\r\n displayYears,\r\n displayMonths,\r\n ...props\r\n}: {\r\n showViewSwitcher?: boolean\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n} & React.ComponentProps<\"span\">) {\r\n if (!showViewSwitcher) return <span {...props}>{children}</span>\r\n return (\r\n <Button\r\n disabled={navView === \"years\"}\r\n size=\"sm\"\r\n type=\"button\"\r\n variant={null}\r\n onClick={() => {\r\n if (navView === \"days\") setNavView(\"months\")\r\n else if (navView === \"months\") setNavView(\"years\")\r\n }}\r\n >\r\n {navView === \"days\"\r\n ? children\r\n : navView === \"months\"\r\n ? displayMonths.year\r\n : displayYears.from + \" - \" + displayYears.to}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CalendarGrid({\r\n className,\r\n children,\r\n displayYears,\r\n displayMonths,\r\n setDisplayMonths,\r\n startMonth,\r\n endMonth,\r\n navView,\r\n setNavView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n children: React.ReactNode\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n startMonth?: Date\r\n endMonth?: Date\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n if (navView === \"years\") {\r\n return (\r\n <YearGrid\r\n className={className}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n <MonthGrid\r\n className={className}\r\n displayMonths={displayMonths}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n return (\r\n <table className={cn(\"flex-1\", className)} {...props}>\r\n {children}\r\n </table>\r\n )\r\n}\r\n\r\nfunction isYearSelected(selected: unknown, year: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) return (selected as Date[]).some((d) => d.getFullYear() === year)\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) return year >= range.from.getFullYear() && year <= range.to.getFullYear()\r\n if (range.from) return range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction isMonthSelected(selected: unknown, year: number, monthIdx: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) {\r\n return (selected as Date[]).some((d) => d.getMonth() === monthIdx && d.getFullYear() === year)\r\n }\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) {\r\n const fromMonth = range.from.getMonth(), fromYear = range.from.getFullYear()\r\n const toMonth = range.to.getMonth(), toYear = range.to.getFullYear()\r\n if (year === fromYear && year === toYear) return monthIdx >= fromMonth && monthIdx <= toMonth\r\n if (year === fromYear) return monthIdx >= fromMonth\r\n if (year === toYear) return monthIdx <= toMonth\r\n return year > fromYear && year < toYear\r\n }\r\n if (range.from) return range.from.getMonth() === monthIdx && range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getMonth() === monthIdx && (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction YearGrid<T extends DayPickerProps>({\r\n className,\r\n displayYears,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n setDisplayMonths,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayYears: { from: number; to: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { selected, select } = useDayPicker<T>()\r\n const currentYear = new Date().getFullYear()\r\n const totalYears = displayYears.to - displayYears.from + 1\r\n\r\n const handleClick = (e: React.MouseEvent, year: number) => {\r\n if (minNavView === \"years\") {\r\n select?.(new Date(year, 0, 1), {}, e)\r\n } else {\r\n setNavView(\"months\")\r\n setDisplayMonths({ year })\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {Array.from({ length: totalYears }, (_, i) => {\r\n const year = displayYears.from + i\r\n const yearStart = new Date(year, 0, 1)\r\n const yearEnd = new Date(year, 11, 31)\r\n const isBeforeStart = startMonth && differenceInCalendarDays(yearEnd, startMonth) < 0\r\n const isAfterEnd = endMonth && differenceInCalendarDays(yearStart, endMonth) > 0\r\n const isDisabled = isBeforeStart || isAfterEnd\r\n const isCurrentYear = year === currentYear\r\n const isSelected = isYearSelected(selected, year)\r\n return (\r\n <td key={year}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"years\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, year)}\r\n >\r\n {year}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nfunction MonthGrid<T extends DayPickerProps>({\r\n className,\r\n displayMonths,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayMonths: { year: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { goToMonth, selected, select } = useDayPicker<T>()\r\n const months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\r\n const year = displayMonths.year\r\n\r\n const handleClick = (e: React.MouseEvent, i: number) => {\r\n if (minNavView === \"months\") {\r\n select?.(new Date(year, i, 1), {}, e)\r\n } else {\r\n setNavView(\"days\")\r\n goToMonth(new Date(year, i))\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {months.map((month, i) => {\r\n const isBefore = startMonth && differenceInCalendarDays(new Date(year, i, 31), startMonth) < 0\r\n const isAfter = endMonth && differenceInCalendarDays(new Date(year, i, 1), endMonth) > 0\r\n const isDisabled = isBefore || isAfter\r\n const isCurrentMonth = year === new Date().getFullYear() && i === new Date().getMonth()\r\n const isSelected = isMonthSelected(selected, year, i)\r\n return (\r\n <td key={i}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"months\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, i)}\r\n >\r\n {month.substring(0, 3)}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nexport { Calendar }\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {b,c as c$1}from'./chunk-DCH35MB4.js';import'react';import {cn}from'@xploreu/lib/cn';import {cva}from'class-variance-authority';import {jsxs,jsx}from'react/jsx-runtime';var n=cva("peer bg-bg-primary border border-border-primary rounded-sm shrink-0 flex items-center justify-center outline-none focus-visible:ring-2 focus-visible:ring-focus-ring aria-invalid:border-border-error aria-invalid:ring-focus-ring-error disabled:cursor-not-allowed disabled:bg-bg-disabled-subtle disabled:border-border-disabled transition-colors duration-500 focus-visible:ring-offset-2 [&[data-checked],&[data-indeterminate]]:bg-bg-brand-solid not-aria-invalid:[&[data-checked],&[data-indeterminate]]:border-bg-brand-solid [&[data-checked],&[data-indeterminate]]:text-fg-white [&[data-checked],&[data-indeterminate]]:hover:bg-bg-brand-solid-hover not-aria-invalid:[&[data-checked],&[data-indeterminate]]:hover:border-bg-brand-solid-hover",{variants:{size:{sm:"size-4",md:"size-5"}},defaultVariants:{size:"sm"}}),c=cva("",{variants:{size:{sm:"size-3",md:"size-3.5"}},defaultVariants:{size:"sm"}});function v({className:t,children:d,size:e,...s}){return jsxs(b,{className:cn(n({size:e,className:t})),...s,children:[d,jsx(c$1,{className:cn(c({size:e}))})]})}export{v as a};//# sourceMappingURL=chunk-XG3W7QMP.js.map
2
+ //# sourceMappingURL=chunk-XG3W7QMP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/checkbox.tsx"],"names":["checkboxVariants","cva","checkboxIndicatorVariants","Checkbox","className","children","size","props","jsxs","cn","jsx","CheckboxIndicator"],"mappings":"gLAUA,IAAMA,CAAAA,CAAmBC,IACvB,guBAAA,CACA,CACE,QAAA,CAAU,CACR,IAAA,CAAM,CACJ,GAAI,QAAA,CACJ,EAAA,CAAI,QACN,CACF,CAAA,CACA,gBAAiB,CACf,IAAA,CAAM,IACR,CACF,CACF,CAAA,CAEMC,EAA4BD,GAAAA,CAAI,EAAA,CAAI,CACxC,QAAA,CAAU,CACR,IAAA,CAAM,CACJ,EAAA,CAAI,QAAA,CACJ,EAAA,CAAI,UACN,CACF,CAAA,CACA,gBAAiB,CACf,IAAA,CAAM,IACR,CACF,CAAC,EAOD,SAASE,CAAAA,CAAS,CAChB,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,IAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAkB,CAChB,OACEC,IAAAA,CAACL,CAAAA,CAAA,CACC,SAAA,CAAWM,EAAAA,CAAGT,CAAAA,CAAiB,CAAE,IAAA,CAAAM,CAAAA,CAAM,UAAAF,CAAU,CAAC,CAAC,CAAA,CAClD,GAAGG,CAAAA,CAEH,QAAA,CAAA,CAAAF,CAAAA,CACDK,GAAAA,CAACC,IAAA,CACC,SAAA,CAAWF,EAAAA,CAAGP,CAAAA,CAA0B,CAAE,IAAA,CAAAI,CAAK,CAAC,CAAC,CAAA,CACnD,CAAA,CAAA,CACF,CAEJ","file":"chunk-XG3W7QMP.js","sourcesContent":["import * as React from 'react';\r\n\r\nimport {\r\n Checkbox as CheckboxPrimitive,\r\n CheckboxIndicator as CheckboxIndicatorPrimitive,\r\n type CheckboxProps as CheckboxPrimitiveProps,\r\n} from '../primitives/checkbox';\r\nimport { cn } from '@xploreu/lib/cn';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\n\r\nconst checkboxVariants = cva(\r\n 'peer bg-bg-primary border border-border-primary rounded-sm shrink-0 flex items-center justify-center outline-none focus-visible:ring-2 focus-visible:ring-focus-ring aria-invalid:border-border-error aria-invalid:ring-focus-ring-error disabled:cursor-not-allowed disabled:bg-bg-disabled-subtle disabled:border-border-disabled transition-colors duration-500 focus-visible:ring-offset-2 [&[data-checked],&[data-indeterminate]]:bg-bg-brand-solid not-aria-invalid:[&[data-checked],&[data-indeterminate]]:border-bg-brand-solid [&[data-checked],&[data-indeterminate]]:text-fg-white [&[data-checked],&[data-indeterminate]]:hover:bg-bg-brand-solid-hover not-aria-invalid:[&[data-checked],&[data-indeterminate]]:hover:border-bg-brand-solid-hover',\r\n {\r\n variants: {\r\n size: {\r\n sm: 'size-4',\r\n md: 'size-5',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'sm',\r\n },\r\n },\r\n);\r\n\r\nconst checkboxIndicatorVariants = cva('', {\r\n variants: {\r\n size: {\r\n sm: 'size-3',\r\n md: 'size-3.5',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'sm',\r\n },\r\n});\r\n\r\ntype CheckboxProps = CheckboxPrimitiveProps &\r\n VariantProps<typeof checkboxVariants> & {\r\n children?: React.ReactNode;\r\n };\r\n\r\nfunction Checkbox({\r\n className,\r\n children,\r\n size,\r\n ...props\r\n}: CheckboxProps) {\r\n return (\r\n <CheckboxPrimitive\r\n className={cn(checkboxVariants({ size, className }))}\r\n {...props}\r\n >\r\n {children}\r\n <CheckboxIndicatorPrimitive\r\n className={cn(checkboxIndicatorVariants({ size }))}\r\n />\r\n </CheckboxPrimitive>\r\n );\r\n}\r\n\r\nexport { Checkbox, type CheckboxProps };"]}
@@ -0,0 +1,3 @@
1
+ import {jsxs,jsx}from'react/jsx-runtime';function u({color:e="currentColor",size:o=12,strokeWidth:r=1,absoluteStrokeWidth:t,...s}){return jsxs("svg",{fill:"none",height:o,stroke:e,strokeWidth:t?Number(r)*12/Number(o):r,viewBox:"0 0 12 12",width:o,xmlns:"http://www.w3.org/2000/svg",...s,children:[jsx("path",{d:"M4 4L6 2L8 4",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),jsx("path",{d:"M6 2V10",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"})]})}var c=u;
2
+ export{c as a};//# sourceMappingURL=chunk-XJTOYNCA.js.map
3
+ //# sourceMappingURL=chunk-XJTOYNCA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/sort-descending-icon.tsx"],"names":["SortDescendingIcon","color","size","strokeWidth","absoluteStrokeWidth","props","jsxs","jsx","sort_descending_icon_default"],"mappings":"yCAIA,SAASA,CAAAA,CAAmB,CAC1B,KAAA,CAAAC,CAAAA,CAAQ,eACR,IAAA,CAAAC,CAAAA,CAAO,EAAA,CACP,WAAA,CAAAC,EAAc,CAAA,CACd,mBAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAc,CACZ,OACEC,IAAAA,CAAC,OACC,IAAA,CAAK,MAAA,CACL,MAAA,CAAQJ,CAAAA,CACR,OAAQD,CAAAA,CACR,WAAA,CAAaG,CAAAA,CAAuB,MAAA,CAAOD,CAAW,CAAA,CAAI,EAAA,CAAM,MAAA,CAAOD,CAAI,EAAIC,CAAAA,CAC/E,OAAA,CAAQ,WAAA,CACR,KAAA,CAAOD,EACP,KAAA,CAAM,4BAAA,CACL,GAAGG,CAAAA,CAEJ,UAAAE,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAA,CAAe,OAAO,cAAA,CAAe,aAAA,CAAc,OAAA,CAAQ,cAAA,CAAe,QAAQ,CAAA,CAC1FA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAU,MAAA,CAAO,cAAA,CAAe,aAAA,CAAc,OAAA,CAAQ,eAAe,OAAA,CAAQ,CAAA,CAAA,CACvF,CAEJ,KAEOC,CAAAA,CAAQR","file":"chunk-XJTOYNCA.js","sourcesContent":["\"use client\"\r\n\r\nimport { type IconProps } from \"../types\";\r\n\r\nfunction SortDescendingIcon({\r\n color = \"currentColor\",\r\n size = 12,\r\n strokeWidth = 1,\r\n absoluteStrokeWidth,\r\n ...props\r\n}: IconProps) {\r\n return (\r\n <svg\r\n fill=\"none\"\r\n height={size}\r\n stroke={color}\r\n strokeWidth={absoluteStrokeWidth ? (Number(strokeWidth) * 12) / Number(size) : strokeWidth}\r\n viewBox=\"0 0 12 12\"\r\n width={size}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <path d=\"M4 4L6 2L8 4\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n <path d=\"M6 2V10\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nexport default SortDescendingIcon;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {d,e,l as l$1,p,v,z}from'./chunk-YB5ZNOPP.js';import*as l from'react';import {ChevronDownIcon,ChevronLeftIcon,ChevronRightIcon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsxs,Fragment,jsx}from'react/jsx-runtime';function j({page:r,pageSize:a,total:i,onPageChange:b,onPageSizeChange:n,pageSizeOptions:m=[10,20,50,100],showPageSize:c=true,showRange:d$1=true,className:C,...N}){let p$1=Math.max(1,Math.ceil(i/a)),h=i===0?0:(r-1)*a+1,P=Math.min(r*a,i),s=l.useMemo(()=>m.map(e=>({label:String(e),value:e})),[m]),I=l.useMemo(()=>s.find(e=>e.value===a)??s[0],[s,a]);return jsxs("div",{className:cn("flex w-full flex-col-reverse gap-3 sm:flex-row sm:items-center sm:justify-between border-t border-border-primary px-4 py-3 text-body-regular-2 text-text-secondary",C),"data-slot":"pagination",...N,children:[jsxs("div",{className:"flex items-center gap-2",children:[c&&n&&jsxs(Fragment,{children:[jsx("span",{className:"text-label-regular-3 text-text-tertiary",children:"Rows per page"}),jsxs(d,{items:s,value:I,onValueChange:e=>{e&&n&&n(e.value);},isItemEqualToValue:(e,w)=>e.value===w.value,children:[jsxs(e,{className:"h-8 gap-2 rounded-lg border border-border-primary bg-bg-primary px-3 text-label-semibold-3 text-text-primary hover:bg-bg-secondary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border-brand-primary","aria-label":"Rows per page",children:[jsx(l$1,{children:e=>e?e.label:String(a)}),jsx(ChevronDownIcon,{className:"size-3.5 text-text-tertiary"})]}),jsx(p,{className:"w-24",children:jsx(v,{children:s.map(e=>jsx(z,{value:e,children:e.label},e.value))})})]})]}),c&&d$1&&jsx("span",{className:"text-text-tertiary",children:"\xB7"}),d$1&&jsxs("span",{className:"text-label-regular-3 text-text-tertiary",children:[h,"\u2013",P," of ",i]})]}),jsxs("div",{className:"flex items-center gap-1",children:[jsx("button",{type:"button",disabled:r<=1,onClick:()=>b(r-1),className:"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40","aria-label":"Previous page",children:jsx(ChevronLeftIcon,{className:"size-4"})}),jsxs("span",{className:"px-2 text-label-semibold-3 text-text-primary",children:["Page ",r," / ",p$1]}),jsx("button",{type:"button",disabled:r>=p$1,onClick:()=>b(r+1),className:"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40","aria-label":"Next page",children:jsx(ChevronRightIcon,{className:"size-4"})})]})]})}export{j as a};//# sourceMappingURL=chunk-XLACGAIR.js.map
2
+ //# sourceMappingURL=chunk-XLACGAIR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/pagination.tsx"],"names":["Pagination","page","pageSize","total","onPageChange","onPageSizeChange","pageSizeOptions","showPageSize","showRange","className","props","totalPages","startItem","endItem","items","opt","selectedItem","item","jsxs","cn","Fragment","jsx","Combobox","a","b","ComboboxTrigger","ComboboxValue","val","ChevronDownIcon","ComboboxPopup","ComboboxList","ComboboxItem","ChevronLeftIcon","ChevronRightIcon"],"mappings":"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","file":"chunk-XLACGAIR.js","sourcesContent":["import * as React from \"react\"\r\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport {\r\n Combobox,\r\n ComboboxItem,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxTrigger,\r\n ComboboxValue,\r\n} from \"./combobox\"\r\n\r\nexport interface PaginationProps extends React.ComponentProps<\"div\"> {\r\n page: number\r\n pageSize: number\r\n total: number\r\n onPageChange: (page: number) => void\r\n onPageSizeChange?: (pageSize: number) => void\r\n pageSizeOptions?: number[]\r\n showPageSize?: boolean\r\n showRange?: boolean\r\n}\r\n\r\ntype PageSizeOptionItem = {\r\n label: string\r\n value: number\r\n}\r\n\r\nexport function Pagination({\r\n page,\r\n pageSize,\r\n total,\r\n onPageChange,\r\n onPageSizeChange,\r\n pageSizeOptions = [10, 20, 50, 100],\r\n showPageSize = true,\r\n showRange = true,\r\n className,\r\n ...props\r\n}: PaginationProps) {\r\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\r\n const startItem = total === 0 ? 0 : (page - 1) * pageSize + 1\r\n const endItem = Math.min(page * pageSize, total)\r\n\r\n const items: PageSizeOptionItem[] = React.useMemo(\r\n () => pageSizeOptions.map((opt) => ({ label: String(opt), value: opt })),\r\n [pageSizeOptions]\r\n )\r\n\r\n const selectedItem = React.useMemo(\r\n () => items.find((item) => item.value === pageSize) ?? items[0],\r\n [items, pageSize]\r\n )\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex w-full flex-col-reverse gap-3 sm:flex-row sm:items-center sm:justify-between border-t border-border-primary px-4 py-3 text-body-regular-2 text-text-secondary\",\r\n className\r\n )}\r\n data-slot=\"pagination\"\r\n {...props}\r\n >\r\n {/* Left: Rows per page & range */}\r\n <div className=\"flex items-center gap-2\">\r\n {showPageSize && onPageSizeChange && (\r\n <>\r\n <span className=\"text-label-regular-3 text-text-tertiary\">\r\n Rows per page\r\n </span>\r\n <Combobox<PageSizeOptionItem>\r\n items={items}\r\n value={selectedItem}\r\n onValueChange={(item) => {\r\n if (item && onPageSizeChange) {\r\n onPageSizeChange(item.value)\r\n }\r\n }}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n >\r\n <ComboboxTrigger\r\n className=\"h-8 gap-2 rounded-lg border border-border-primary bg-bg-primary px-3 text-label-semibold-3 text-text-primary hover:bg-bg-secondary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border-brand-primary\"\r\n aria-label=\"Rows per page\"\r\n >\r\n <ComboboxValue>\r\n {(val) => (val ? val.label : String(pageSize))}\r\n </ComboboxValue>\r\n <ChevronDownIcon className=\"size-3.5 text-text-tertiary\" />\r\n </ComboboxTrigger>\r\n\r\n <ComboboxPopup className=\"w-24\">\r\n <ComboboxList>\r\n {items.map((item) => (\r\n <ComboboxItem\r\n key={item.value}\r\n value={item}\r\n >\r\n {item.label}\r\n </ComboboxItem>\r\n ))}\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n </>\r\n )}\r\n\r\n {showPageSize && showRange && (\r\n <span className=\"text-text-tertiary\">·</span>\r\n )}\r\n\r\n {showRange && (\r\n <span className=\"text-label-regular-3 text-text-tertiary\">\r\n {startItem}–{endItem} of {total}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {/* Right: Page controls */}\r\n <div className=\"flex items-center gap-1\">\r\n <button\r\n type=\"button\"\r\n disabled={page <= 1}\r\n onClick={() => onPageChange(page - 1)}\r\n className=\"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40\"\r\n aria-label=\"Previous page\"\r\n >\r\n <ChevronLeftIcon className=\"size-4\" />\r\n </button>\r\n\r\n <span className=\"px-2 text-label-semibold-3 text-text-primary\">\r\n Page {page} / {totalPages}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n disabled={page >= totalPages}\r\n onClick={() => onPageChange(page + 1)}\r\n className=\"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40\"\r\n aria-label=\"Next page\"\r\n >\r\n <ChevronRightIcon className=\"size-4\" />\r\n </button>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"]}
@@ -1,2 +1,2 @@
1
- import {d,b,e,m,l,n,o,p,t,v,z,G}from'./chunk-746IQSMF.js';import {b as b$1}from'./chunk-JH6RZ3QH.js';import*as r from'react';import {cn}from'@xploreu/lib/cn';import {SearchIcon,XIcon}from'lucide-react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function j({multiple:z$1=true,inputPlaceholder:B="Search...",container:q,items:u,infiniteScroll:A,isPending:H,taggable:c=false,maxVisible:i,...m$1}){let[h,g]=useControlledState({value:m$1?.inputValue?.toString(),defaultValue:m$1?.defaultInputValue?.toString(),onChange:m$1?.onInputValueChange}),[b$2,x]=useControlledState({value:m$1?.value??[],defaultValue:m$1?.defaultValue??[],onChange:m$1?.onValueChange}),[v$1,I]=r.useState([]),d$1=r.useRef(new Set);r.useEffect(()=>{let e=new Set(b$2.map(t=>t.value));I(t=>{let l=t.filter(a=>e.has(a.value));return l.length===t.length?t:(d$1.current=new Set(l.map(a=>a.value)),l)});},[b$2]);let n$1=h?.toString().trim()??"",U=r.useMemo(()=>n$1?b$2.some(e=>e.value.toLowerCase()===n$1.toLowerCase()):false,[n$1,b$2]),p$1=r.useMemo(()=>!c||!n$1?false:!u?.some(e=>e.label.toLowerCase()===n$1.toLowerCase()),[c,n$1,u]),X=r.useMemo(()=>{let e=[...u??[],...v$1];if(p$1){let t={label:n$1,value:n$1,tag:true};return [...e,t]}return e},[u,v$1,p$1,n$1]);return jsxs(d,{...m$1,behavior:"chip-outside",multiple:true,items:c?X:u,isItemEqualToValue:(e,t)=>e.value===t.value,onValueChange:(e,t)=>{if(c){let l=e.filter(a=>a?.tag===true&&!d$1.current.has(a.value));if(l.length>0){for(let a of l)d$1.current.add(a.value);I(a=>[...a,...l]);}}x(z$1?e:[e[e.length-1]],t);},onInputValueChange:g,children:[jsxs("div",{className:"flex flex-col gap-2",children:[jsx(b,{render:jsx(b$1,{className:"h-9 text-body-regular-3 pl-9 pr-7",endContent:jsx(e,{nativeButton:false,render:jsx(XIcon,{className:"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer","data-hidden":!h,"data-slot":"combobox-clear-input",onClick:e=>{g("",{reason:"none",event:e.nativeEvent,cancel:()=>{},allowPropagation:()=>{},isCanceled:false,isPropagationAllowed:true,trigger:void 0});}})}),placeholder:B,startContent:jsx(SearchIcon,{className:"!size-4 !text-fg-tertiary-hover"}),wrapperClassName:"w-full"})}),jsx(m,{className:cn(i!==void 0&&"flex-nowrap overflow-hidden"),onMouseDown:e=>e.preventBaseUIHandler(),children:jsx(l,{children:e=>{let t=i!==void 0?e.slice(0,i):e,l=i!==void 0?e.length-i:0;return jsxs(Fragment,{children:[t?.map(a=>jsxs(n,{className:cn(i!==void 0&&"min-w-0 shrink"),children:[i!==void 0?jsx("span",{className:"truncate",children:a?.label||""}):a?.label||"",jsx(o,{})]},a?.value||"")),l>0&&jsxs(n,{className:"shrink-0",children:["+",l]})]})}})})]}),jsxs(p,{container:q,children:[jsx(t,{status:H||u===void 0?"pending":u?.length===0&&!p$1?"empty":null}),jsxs(v,{children:[u?.map(e=>jsx(z,{value:{label:e.label,value:e.value},children:jsx("div",{className:"flex items-center gap-2 w-full min-w-0",children:jsx("span",{className:"truncate",children:e.label})})},e.value)),p$1&&jsx(z,{value:{label:n$1,value:n$1,tag:true},children:jsxs("div",{className:"flex items-center gap-1.5 w-full min-w-0",children:[!U&&jsx("span",{className:"text-text-secondary",children:"Create:"}),jsx("span",{className:"font-medium text-text-primary truncate",children:n$1})]})}),jsx(G,{...A})]})]})]})}export{j as a};//# sourceMappingURL=chunk-NG3NFI2B.js.map
2
- //# sourceMappingURL=chunk-NG3NFI2B.js.map
1
+ import {d,b,e,m,l,n,o,p,t,v,z,G}from'./chunk-YB5ZNOPP.js';import {b as b$1}from'./chunk-JH6RZ3QH.js';import*as r from'react';import {cn}from'@xploreu/lib/cn';import {SearchIcon,XIcon}from'lucide-react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function j({multiple:z$1=true,inputPlaceholder:B="Search...",container:q,items:u,infiniteScroll:A,isPending:H,taggable:c=false,maxVisible:i,...m$1}){let[h,g]=useControlledState({value:m$1?.inputValue?.toString(),defaultValue:m$1?.defaultInputValue?.toString(),onChange:m$1?.onInputValueChange}),[b$2,x]=useControlledState({value:m$1?.value??[],defaultValue:m$1?.defaultValue??[],onChange:m$1?.onValueChange}),[v$1,I]=r.useState([]),d$1=r.useRef(new Set);r.useEffect(()=>{let e=new Set(b$2.map(t=>t.value));I(t=>{let l=t.filter(a=>e.has(a.value));return l.length===t.length?t:(d$1.current=new Set(l.map(a=>a.value)),l)});},[b$2]);let n$1=h?.toString().trim()??"",U=r.useMemo(()=>n$1?b$2.some(e=>e.value.toLowerCase()===n$1.toLowerCase()):false,[n$1,b$2]),p$1=r.useMemo(()=>!c||!n$1?false:!u?.some(e=>e.label.toLowerCase()===n$1.toLowerCase()),[c,n$1,u]),X=r.useMemo(()=>{let e=[...u??[],...v$1];if(p$1){let t={label:n$1,value:n$1,tag:true};return [...e,t]}return e},[u,v$1,p$1,n$1]);return jsxs(d,{...m$1,behavior:"chip-outside",multiple:true,items:c?X:u,isItemEqualToValue:(e,t)=>e.value===t.value,onValueChange:(e,t)=>{if(c){let l=e.filter(a=>a?.tag===true&&!d$1.current.has(a.value));if(l.length>0){for(let a of l)d$1.current.add(a.value);I(a=>[...a,...l]);}}x(z$1?e:[e[e.length-1]],t);},onInputValueChange:g,children:[jsxs("div",{className:"flex flex-col gap-2",children:[jsx(b,{render:jsx(b$1,{className:"h-9 text-body-regular-3 pl-9 pr-7",endContent:jsx(e,{nativeButton:false,render:jsx(XIcon,{className:"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer","data-hidden":!h,"data-slot":"combobox-clear-input",onClick:e=>{g("",{reason:"none",event:e.nativeEvent,cancel:()=>{},allowPropagation:()=>{},isCanceled:false,isPropagationAllowed:true,trigger:void 0});}})}),placeholder:B,startContent:jsx(SearchIcon,{className:"!size-4 !text-fg-tertiary-hover"}),wrapperClassName:"w-full"})}),jsx(m,{className:cn(i!==void 0&&"flex-nowrap overflow-hidden"),onMouseDown:e=>e.preventBaseUIHandler(),children:jsx(l,{children:e=>{let t=i!==void 0?e.slice(0,i):e,l=i!==void 0?e.length-i:0;return jsxs(Fragment,{children:[t?.map(a=>jsxs(n,{className:cn(i!==void 0&&"min-w-0 shrink"),children:[i!==void 0?jsx("span",{className:"truncate",children:a?.label||""}):a?.label||"",jsx(o,{})]},a?.value||"")),l>0&&jsxs(n,{className:"shrink-0",children:["+",l]})]})}})})]}),jsxs(p,{container:q,children:[jsx(t,{status:H||u===void 0?"pending":u?.length===0&&!p$1?"empty":null}),jsxs(v,{children:[u?.map(e=>jsx(z,{value:{label:e.label,value:e.value},children:jsx("div",{className:"flex items-center gap-2 w-full min-w-0",children:jsx("span",{className:"truncate",children:e.label})})},e.value)),p$1&&jsx(z,{value:{label:n$1,value:n$1,tag:true},children:jsxs("div",{className:"flex items-center gap-1.5 w-full min-w-0",children:[!U&&jsx("span",{className:"text-text-secondary",children:"Create:"}),jsx("span",{className:"font-medium text-text-primary truncate",children:n$1})]})}),jsx(G,{...A})]})]})]})}export{j as a};//# sourceMappingURL=chunk-XZKSYHE5.js.map
2
+ //# sourceMappingURL=chunk-XZKSYHE5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/composites/combobox-chip-outside.tsx"],"names":["ComboboxChipOutside","multiple","inputPlaceholder","container","items","infiniteScroll","isPending","taggable","maxVisible","props","inputValue","setInputValue","useControlledState","value","setValue","createdItems","setCreatedItems","createdValuesRef","currentValues","v","prev","next","item","trimmedInput","isInputSelected","isCreatingItem","combinedItems","base","createItem","jsxs","Combobox","a","b","eventDetails","newTags","tag","jsx","ComboboxInput","Input","ComboboxTrigger","XIcon","event","SearchIcon","ComboboxChips","cn","ComboboxValue","visible","overflow","Fragment","ComboboxChip","ComboboxChipRemove","ComboboxPopup","ComboboxStatus","ComboboxList","ComboboxItem","ComboboxInfiniteScroll"],"mappings":"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","file":"chunk-NG3NFI2B.js","sourcesContent":["import * as React from \"react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { ComboboxInput as ComboboxInputPrimitive } from \"../primitives/combobox\"\r\nimport { Input } from \"../ui\"\r\nimport {\r\n Combobox,\r\n ComboboxChip,\r\n ComboboxChipRemove,\r\n ComboboxChips,\r\n ComboboxInfiniteScroll,\r\n ComboboxItem,\r\n ComboboxList,\r\n ComboboxPortal,\r\n ComboboxPopup,\r\n ComboboxStatus,\r\n ComboboxTrigger,\r\n ComboboxValue,\r\n type ComboboxProps\r\n} from \"../ui/combobox\"\r\nimport { SearchIcon, XIcon } from \"lucide-react\"\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\n\r\ntype ComboboxChipOutsideProps<Value> = Omit<ComboboxProps<Value, true>, \"multiple\"> & {\r\n multiple?: boolean\r\n inputPlaceholder?: string\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n items: ({ label: string; value: string }[]) | undefined\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n isPending?: boolean\r\n /**\r\n * When true, enables creatable / taggable mode.\r\n * If the typed value has no exact match in the current item list,\r\n * a \"Create \\\"…\\\"\" option is shown at the top of the dropdown.\r\n * Created items are appended to the value with `{ label, value, tag: true }`.\r\n */\r\n taggable?: boolean\r\n /**\r\n * Maximum number of chips to show before collapsing the rest into a \"+N\" chip.\r\n * When undefined, all chips are shown.\r\n */\r\n maxVisible?: number\r\n}\r\n\r\nfunction ComboboxChipOutside<Value extends { label: string; value: string; tag?: true }>({\r\n multiple = true,\r\n inputPlaceholder = \"Search...\",\r\n container,\r\n items,\r\n infiniteScroll,\r\n isPending,\r\n taggable = false,\r\n maxVisible,\r\n ...props\r\n}: ComboboxChipOutsideProps<Value>) {\r\n const [inputValue, setInputValue] = useControlledState({\r\n value: props?.inputValue?.toString(),\r\n defaultValue: props?.defaultInputValue?.toString(),\r\n onChange: props?.onInputValueChange,\r\n })\r\n\r\n const [value, setValue] = useControlledState({\r\n value: props?.value ?? [],\r\n defaultValue: props?.defaultValue ?? [],\r\n onChange: props?.onValueChange,\r\n })\r\n\r\n // Track items created via taggable mode\r\n // Sync with value to avoid stale tags when controlled value is reset from outside\r\n const [createdItems, setCreatedItems] = React.useState<Value[]>([])\r\n const createdValuesRef = React.useRef<Set<string>>(new Set())\r\n\r\n React.useEffect(() => {\r\n const currentValues = new Set(value.map((v) => v.value))\r\n setCreatedItems((prev) => {\r\n const next = prev.filter((item) => currentValues.has(item.value))\r\n if (next.length === prev.length) return prev\r\n createdValuesRef.current = new Set(next.map((v) => v.value))\r\n return next\r\n })\r\n }, [value])\r\n\r\n // Determine if the current input has no exact match in existing items\r\n const trimmedInput = inputValue?.toString().trim() ?? \"\"\r\n const isInputSelected = React.useMemo(() => {\r\n if (!trimmedInput) return false\r\n return value.some(\r\n (item) => item.value.toLowerCase() === trimmedInput.toLowerCase()\r\n )\r\n }, [trimmedInput, value])\r\n // true = show the taggable item in dropdown (either as \"Create:\" or as checked item)\r\n const isCreatingItem = React.useMemo(() => {\r\n if (!taggable || !trimmedInput) return false\r\n return !items?.some(\r\n (item) => item.label.toLowerCase() === trimmedInput.toLowerCase()\r\n )\r\n }, [taggable, trimmedInput, items])\r\n\r\n // Merge server items with locally created tags + the \"Create\" placeholder\r\n const combinedItems = React.useMemo(() => {\r\n const base: Value[] = [\r\n ...items ?? [],\r\n ...createdItems,\r\n ]\r\n\r\n if (isCreatingItem) {\r\n const createItem = {\r\n label: trimmedInput,\r\n value: trimmedInput,\r\n tag: true,\r\n }\r\n return [...base, createItem]\r\n }\r\n\r\n return base\r\n }, [items, createdItems, isCreatingItem, trimmedInput])\r\n\r\n const handleValueChange: ComboboxProps<Value, true>[\"onValueChange\"] = (value, eventDetails) => {\r\n // Capture newly created taggable items internally\r\n if (taggable) {\r\n const newTags = value.filter(\r\n (v) => v?.tag === true\r\n && !createdValuesRef.current.has(v.value)\r\n )\r\n if (newTags.length > 0) {\r\n for (const tag of newTags) {\r\n createdValuesRef.current.add(tag.value)\r\n }\r\n setCreatedItems((prev) => [...prev, ...newTags])\r\n }\r\n }\r\n\r\n // if multiple is false, we need to replace the value with the new value instead of adding to it\r\n if (!multiple) {\r\n setValue([value[value.length - 1]], eventDetails)\r\n } else {\r\n setValue(value, eventDetails)\r\n }\r\n }\r\n\r\n return (\r\n <Combobox\r\n {...props}\r\n behavior=\"chip-outside\"\r\n multiple\r\n items={taggable ? combinedItems : items}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n onValueChange={handleValueChange}\r\n onInputValueChange={setInputValue}\r\n >\r\n <div className=\"flex flex-col gap-2\">\r\n <ComboboxInputPrimitive\r\n render={\r\n <Input\r\n className=\"h-9 text-body-regular-3 pl-9 pr-7\"\r\n endContent={\r\n <ComboboxTrigger\r\n nativeButton={false}\r\n render={(\r\n <XIcon\r\n className=\"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer\"\r\n data-hidden={!inputValue}\r\n data-slot=\"combobox-clear-input\"\r\n onClick={(event) => {\r\n setInputValue(\"\", {\r\n reason: \"none\",\r\n event: event.nativeEvent,\r\n cancel: () => { },\r\n allowPropagation: () => { },\r\n isCanceled: false,\r\n isPropagationAllowed: true,\r\n trigger: undefined,\r\n })\r\n }}\r\n />\r\n )}\r\n />\r\n }\r\n placeholder={inputPlaceholder}\r\n startContent={<SearchIcon className=\"!size-4 !text-fg-tertiary-hover\" />}\r\n wrapperClassName=\"w-full\"\r\n />\r\n }\r\n />\r\n <ComboboxChips\r\n className={cn(maxVisible !== undefined && \"flex-nowrap overflow-hidden\")}\r\n onMouseDown={(e) => e.preventBaseUIHandler()}\r\n >\r\n <ComboboxValue>\r\n {(value: Value[]) => {\r\n const visible = maxVisible !== undefined ? value.slice(0, maxVisible) : value\r\n const overflow = maxVisible !== undefined ? value.length - maxVisible : 0\r\n return (\r\n <>\r\n {visible?.map((item) => (\r\n <ComboboxChip\r\n key={item?.value || \"\"}\r\n className={cn(maxVisible !== undefined && \"min-w-0 shrink\")}\r\n >\r\n {maxVisible !== undefined\r\n ? <span className=\"truncate\">{item?.label || \"\"}</span>\r\n : (item?.label || \"\")\r\n }\r\n <ComboboxChipRemove />\r\n </ComboboxChip>\r\n ))}\r\n {overflow > 0 && (\r\n <ComboboxChip className=\"shrink-0\">\r\n +{overflow}\r\n </ComboboxChip>\r\n )}\r\n </>\r\n )\r\n }}\r\n </ComboboxValue>\r\n </ComboboxChips>\r\n </div>\r\n <ComboboxPopup container={container}>\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : items?.length === 0 && !isCreatingItem\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {items?.map((item) => (\r\n <ComboboxItem\r\n key={item.value}\r\n value={{ label: item.label, value: item.value }}\r\n >\r\n <div className=\"flex items-center gap-2 w-full min-w-0\">\r\n <span className=\"truncate\">\r\n {item.label}\r\n </span>\r\n </div>\r\n </ComboboxItem>\r\n ))}\r\n {isCreatingItem && (\r\n <ComboboxItem\r\n value={{ label: trimmedInput, value: trimmedInput, tag: true }}\r\n >\r\n <div className=\"flex items-center gap-1.5 w-full min-w-0\">\r\n {!isInputSelected && (\r\n <span className=\"text-text-secondary\">Create:</span>\r\n )}\r\n <span className=\"font-medium text-text-primary truncate\">\r\n {trimmedInput}\r\n </span>\r\n </div>\r\n </ComboboxItem>\r\n )}\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { ComboboxChipOutside }"]}
1
+ {"version":3,"sources":["../src/composites/combobox-chip-outside.tsx"],"names":["ComboboxChipOutside","multiple","inputPlaceholder","container","items","infiniteScroll","isPending","taggable","maxVisible","props","inputValue","setInputValue","useControlledState","value","setValue","createdItems","setCreatedItems","createdValuesRef","currentValues","v","prev","next","item","trimmedInput","isInputSelected","isCreatingItem","combinedItems","base","createItem","jsxs","Combobox","a","b","eventDetails","newTags","tag","jsx","ComboboxInput","Input","ComboboxTrigger","XIcon","event","SearchIcon","ComboboxChips","cn","ComboboxValue","visible","overflow","Fragment","ComboboxChip","ComboboxChipRemove","ComboboxPopup","ComboboxStatus","ComboboxList","ComboboxItem","ComboboxInfiniteScroll"],"mappings":"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","file":"chunk-XZKSYHE5.js","sourcesContent":["import * as React from \"react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { ComboboxInput as ComboboxInputPrimitive } from \"../primitives/combobox\"\r\nimport { Input } from \"../ui\"\r\nimport {\r\n Combobox,\r\n ComboboxChip,\r\n ComboboxChipRemove,\r\n ComboboxChips,\r\n ComboboxInfiniteScroll,\r\n ComboboxItem,\r\n ComboboxList,\r\n ComboboxPortal,\r\n ComboboxPopup,\r\n ComboboxStatus,\r\n ComboboxTrigger,\r\n ComboboxValue,\r\n type ComboboxProps\r\n} from \"../ui/combobox\"\r\nimport { SearchIcon, XIcon } from \"lucide-react\"\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\n\r\ntype ComboboxChipOutsideProps<Value> = Omit<ComboboxProps<Value, true>, \"multiple\"> & {\r\n multiple?: boolean\r\n inputPlaceholder?: string\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n items: ({ label: string; value: string }[]) | undefined\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n isPending?: boolean\r\n /**\r\n * When true, enables creatable / taggable mode.\r\n * If the typed value has no exact match in the current item list,\r\n * a \"Create \\\"…\\\"\" option is shown at the top of the dropdown.\r\n * Created items are appended to the value with `{ label, value, tag: true }`.\r\n */\r\n taggable?: boolean\r\n /**\r\n * Maximum number of chips to show before collapsing the rest into a \"+N\" chip.\r\n * When undefined, all chips are shown.\r\n */\r\n maxVisible?: number\r\n}\r\n\r\nfunction ComboboxChipOutside<Value extends { label: string; value: string; tag?: true }>({\r\n multiple = true,\r\n inputPlaceholder = \"Search...\",\r\n container,\r\n items,\r\n infiniteScroll,\r\n isPending,\r\n taggable = false,\r\n maxVisible,\r\n ...props\r\n}: ComboboxChipOutsideProps<Value>) {\r\n const [inputValue, setInputValue] = useControlledState({\r\n value: props?.inputValue?.toString(),\r\n defaultValue: props?.defaultInputValue?.toString(),\r\n onChange: props?.onInputValueChange,\r\n })\r\n\r\n const [value, setValue] = useControlledState({\r\n value: props?.value ?? [],\r\n defaultValue: props?.defaultValue ?? [],\r\n onChange: props?.onValueChange,\r\n })\r\n\r\n // Track items created via taggable mode\r\n // Sync with value to avoid stale tags when controlled value is reset from outside\r\n const [createdItems, setCreatedItems] = React.useState<Value[]>([])\r\n const createdValuesRef = React.useRef<Set<string>>(new Set())\r\n\r\n React.useEffect(() => {\r\n const currentValues = new Set(value.map((v) => v.value))\r\n setCreatedItems((prev) => {\r\n const next = prev.filter((item) => currentValues.has(item.value))\r\n if (next.length === prev.length) return prev\r\n createdValuesRef.current = new Set(next.map((v) => v.value))\r\n return next\r\n })\r\n }, [value])\r\n\r\n // Determine if the current input has no exact match in existing items\r\n const trimmedInput = inputValue?.toString().trim() ?? \"\"\r\n const isInputSelected = React.useMemo(() => {\r\n if (!trimmedInput) return false\r\n return value.some(\r\n (item) => item.value.toLowerCase() === trimmedInput.toLowerCase()\r\n )\r\n }, [trimmedInput, value])\r\n // true = show the taggable item in dropdown (either as \"Create:\" or as checked item)\r\n const isCreatingItem = React.useMemo(() => {\r\n if (!taggable || !trimmedInput) return false\r\n return !items?.some(\r\n (item) => item.label.toLowerCase() === trimmedInput.toLowerCase()\r\n )\r\n }, [taggable, trimmedInput, items])\r\n\r\n // Merge server items with locally created tags + the \"Create\" placeholder\r\n const combinedItems = React.useMemo(() => {\r\n const base: Value[] = [\r\n ...items ?? [],\r\n ...createdItems,\r\n ]\r\n\r\n if (isCreatingItem) {\r\n const createItem = {\r\n label: trimmedInput,\r\n value: trimmedInput,\r\n tag: true,\r\n }\r\n return [...base, createItem]\r\n }\r\n\r\n return base\r\n }, [items, createdItems, isCreatingItem, trimmedInput])\r\n\r\n const handleValueChange: ComboboxProps<Value, true>[\"onValueChange\"] = (value, eventDetails) => {\r\n // Capture newly created taggable items internally\r\n if (taggable) {\r\n const newTags = value.filter(\r\n (v) => v?.tag === true\r\n && !createdValuesRef.current.has(v.value)\r\n )\r\n if (newTags.length > 0) {\r\n for (const tag of newTags) {\r\n createdValuesRef.current.add(tag.value)\r\n }\r\n setCreatedItems((prev) => [...prev, ...newTags])\r\n }\r\n }\r\n\r\n // if multiple is false, we need to replace the value with the new value instead of adding to it\r\n if (!multiple) {\r\n setValue([value[value.length - 1]], eventDetails)\r\n } else {\r\n setValue(value, eventDetails)\r\n }\r\n }\r\n\r\n return (\r\n <Combobox\r\n {...props}\r\n behavior=\"chip-outside\"\r\n multiple\r\n items={taggable ? combinedItems : items}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n onValueChange={handleValueChange}\r\n onInputValueChange={setInputValue}\r\n >\r\n <div className=\"flex flex-col gap-2\">\r\n <ComboboxInputPrimitive\r\n render={\r\n <Input\r\n className=\"h-9 text-body-regular-3 pl-9 pr-7\"\r\n endContent={\r\n <ComboboxTrigger\r\n nativeButton={false}\r\n render={(\r\n <XIcon\r\n className=\"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer\"\r\n data-hidden={!inputValue}\r\n data-slot=\"combobox-clear-input\"\r\n onClick={(event) => {\r\n setInputValue(\"\", {\r\n reason: \"none\",\r\n event: event.nativeEvent,\r\n cancel: () => { },\r\n allowPropagation: () => { },\r\n isCanceled: false,\r\n isPropagationAllowed: true,\r\n trigger: undefined,\r\n })\r\n }}\r\n />\r\n )}\r\n />\r\n }\r\n placeholder={inputPlaceholder}\r\n startContent={<SearchIcon className=\"!size-4 !text-fg-tertiary-hover\" />}\r\n wrapperClassName=\"w-full\"\r\n />\r\n }\r\n />\r\n <ComboboxChips\r\n className={cn(maxVisible !== undefined && \"flex-nowrap overflow-hidden\")}\r\n onMouseDown={(e) => e.preventBaseUIHandler()}\r\n >\r\n <ComboboxValue>\r\n {(value: Value[]) => {\r\n const visible = maxVisible !== undefined ? value.slice(0, maxVisible) : value\r\n const overflow = maxVisible !== undefined ? value.length - maxVisible : 0\r\n return (\r\n <>\r\n {visible?.map((item) => (\r\n <ComboboxChip\r\n key={item?.value || \"\"}\r\n className={cn(maxVisible !== undefined && \"min-w-0 shrink\")}\r\n >\r\n {maxVisible !== undefined\r\n ? <span className=\"truncate\">{item?.label || \"\"}</span>\r\n : (item?.label || \"\")\r\n }\r\n <ComboboxChipRemove />\r\n </ComboboxChip>\r\n ))}\r\n {overflow > 0 && (\r\n <ComboboxChip className=\"shrink-0\">\r\n +{overflow}\r\n </ComboboxChip>\r\n )}\r\n </>\r\n )\r\n }}\r\n </ComboboxValue>\r\n </ComboboxChips>\r\n </div>\r\n <ComboboxPopup container={container}>\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : items?.length === 0 && !isCreatingItem\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {items?.map((item) => (\r\n <ComboboxItem\r\n key={item.value}\r\n value={{ label: item.label, value: item.value }}\r\n >\r\n <div className=\"flex items-center gap-2 w-full min-w-0\">\r\n <span className=\"truncate\">\r\n {item.label}\r\n </span>\r\n </div>\r\n </ComboboxItem>\r\n ))}\r\n {isCreatingItem && (\r\n <ComboboxItem\r\n value={{ label: trimmedInput, value: trimmedInput, tag: true }}\r\n >\r\n <div className=\"flex items-center gap-1.5 w-full min-w-0\">\r\n {!isInputSelected && (\r\n <span className=\"text-text-secondary\">Create:</span>\r\n )}\r\n <span className=\"font-medium text-text-primary truncate\">\r\n {trimmedInput}\r\n </span>\r\n </div>\r\n </ComboboxItem>\r\n )}\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { ComboboxChipOutside }"]}
@@ -1,2 +1,2 @@
1
- import {b as b$2,c as c$2}from'./chunk-KYD4ATTG.js';import {a}from'./chunk-TED2PUK6.js';import {b}from'./chunk-JH6RZ3QH.js';import {b as b$1,c as c$1}from'./chunk-DZKJRP4J.js';import*as S from'react';import {SearchIcon,XIcon,Loader2Icon,CheckCircle2Icon}from'lucide-react';import {Combobox}from'@base-ui/react/combobox';import {AnimatePresence,motion}from'motion/react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {useDataState}from'@xploreu/hooks/use-data-state';import {getStrictContext}from'@xploreu/lib/get-strict-context';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {cn}from'@xploreu/lib/cn';var[ao,c]=getStrictContext("ComboboxContext"),[no,H]=getStrictContext("ComboboxActiveValueContext");function R({behavior:o="default",...t}){let[b,m]=useControlledState({value:t?.open,defaultValue:t?.defaultOpen,onChange:t?.onOpenChange}),[s,C]=useControlledState({value:t?.inputValue?.toString(),defaultValue:t?.defaultInputValue?.toString(),onChange:t?.onInputValueChange}),[n,l]=S.useState(null),P=(x,a)=>{if(a.reason==="input-clear")return a.cancel();C(x,a);},y=(x,a)=>{let io=a.trigger?.dataset;if(o==="chip-outside"&&(a.reason==="trigger-press"&&io?.slot==="combobox-clear-input"&&!x||a.reason==="item-press"))return a.cancel();m(x,a);};return jsx(no,{value:{highlightedValue:n,setHighlightedValue:l},children:jsx(ao,{value:{open:b,setOpen:m,inputValue:s,setInputValue:C},children:jsx(Combobox.Root,{"data-slot":"combobox",...t,onInputValueChange:P,onOpenChange:y})})})}function T(o){return jsx(Combobox.Trigger,{"data-slot":"combobox-trigger",...o})}function k(o){return jsx(Combobox.Label,{"data-slot":"combobox-label",...o})}function A(o){return jsx(Combobox.InputGroup,{"data-slot":"combobox-input-group",...o})}function d(o){return jsx(Combobox.Input,{"data-slot":"combobox-input",...o})}function M(o){return jsx(Combobox.Icon,{"data-slot":"combobox-icon",...o})}function B(o){return jsx(Combobox.Clear,{"data-slot":"combobox-clear",...o})}function E(o){return jsx(Combobox.Value,{"data-slot":"combobox-value",...o})}function O(o){return jsx(Combobox.Chips,{"data-slot":"combobox-chips",...o})}function z(o){return jsx(Combobox.Chip,{"data-slot":"combobox-chip",...o})}function F(o){return jsx(Combobox.ChipRemove,{"data-slot":"combobox-chip-remove",...o})}function h(o){let{open:t}=c();return jsx(AnimatePresence,{children:t&&jsx(Combobox.Portal,{"data-slot":"combobox-portal",keepMounted:true,...o})})}function v(o){return jsx(Combobox.Positioner,{"data-slot":"combobox-positioner",...o})}function q({initialFocus:o,finalFocus:t,transition:b={type:"spring",stiffness:300,damping:25},...m}){return jsx(Combobox.Popup,{finalFocus:t,initialFocus:o,render:jsx(motion.div,{animate:{opacity:1,scale:1},"data-slot":"combobox-popup",exit:{opacity:0,scale:.5},initial:{opacity:0,scale:.5},transition:b,...m},"combobox-popup")})}function U(o){return jsx(Combobox.Backdrop,{"data-slot":"combobox-backdrop",...o})}function X(o){return jsx(Combobox.Status,{"data-slot":"combobox-status",...o})}function $(o){return jsx(Combobox.Empty,{"data-slot":"combobox-empty",...o})}function J(o){return jsx(Combobox.List,{"data-slot":"combobox-list",...o})}function K({transition:o={type:"spring",stiffness:350,damping:35},...t}){let{highlightedValue:b}=H();return jsx(b$2,{click:false,controlledItems:true,"data-slot":"combobox-highlight",transition:o,value:b,...t})}function Q(o){return jsx(c$2,{"data-slot":"combobox-highlight-item",...o})}function W(o){return jsx(Combobox.Row,{"data-slot":"combobox-row",...o})}function Y(o){let{setHighlightedValue:t}=H(),[,b]=useDataState("highlighted",void 0,(m,s)=>{if(m===true){let C=s.current,n=C?.dataset.value||C?.id||null;n&&t(n);}});return jsx(Combobox.Item,{ref:b,"data-slot":"combobox-item",...o})}function Z(o){return jsx(Combobox.ItemIndicator,{"data-slot":"combobox-item-indicator",...o})}function _(o){return jsx(Combobox.Separator,{"data-slot":"combobox-separator",...o})}function j(o){return jsx(Combobox.Group,{"data-slot":"combobox-group",...o})}function D(o){return jsx(Combobox.GroupLabel,{"data-slot":"combobox-group-label",...o})}function oo(o){return jsx(Combobox.Collection,{"data-slot":"combobox-collection",...o})}function to(o){return jsx(Combobox.Arrow,{"data-slot":"combobox-arrow",...o})}function Oo(o){return jsx(R,{...o})}function xo(o){let{className:t,...b}=o;return jsx(T,{className:cn("group/combobox-trigger flex items-center gap-2",t),...b})}function zo(o){let{className:t,...b}=o;return jsx(k,{className:cn("text-label-semibold-2 text-text-secondary",t),...b})}function Fo(o){let{className:t,...b}=o;return jsx(A,{className:cn("flex w-full items-center gap-2",t),...b})}function qo({className:o,wrapperClassName:t,...b$1}){return jsx("div",{className:cn("px-3 py-2.5 border-b border-border-primary",t),children:jsx(d,{className:o,render:jsx(b,{size:"sm",startContent:jsx(SearchIcon,{})}),...b$1})})}function Uo({className:o,displayValueKey:t={label:"label",value:"value"},placeholder:b$1="Search and Select Company",inputProps:m,...s}){let{inputValue:C,setInputValue:n}=c(),{className:l,startContent:P,...y}=m||{};return jsx("div",{className:cn("flex flex-col gap-2",o),children:jsxs(Po,{onMouseDown:x=>x.preventBaseUIHandler(),className:"flex-col",children:[jsx(d,{render:jsx(b,{className:cn("h-9 text-body-regular-3 pl-9 pr-7",l),endContent:jsx(xo,{nativeButton:false,render:jsx(XIcon,{className:"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer","data-hidden":!C,"data-slot":"combobox-clear-input",onClick:x=>{n("",{reason:"none",event:x.nativeEvent,cancel:()=>{},allowPropagation:()=>{},isCanceled:false,isPropagationAllowed:true,trigger:void 0});}})}),placeholder:b$1,startContent:P??jsx(SearchIcon,{className:"!size-4 !text-fg-tertiary-hover"}),...y}),...s}),jsx(lo,{children:x=>x?.map(a=>jsxs(uo,{children:[a?.[t.label]||"",jsx(co,{})]},a?.[t.value]||""))})]})})}function Xo(o){let{className:t,...b}=o;return jsx(M,{className:cn("text-text-secondary",t),...b})}function $o(o){return jsx(B,{render:jsx(XIcon,{}),...o})}function lo(o){return jsx(E,{...o})}function Po({className:o,...t}){return jsx(O,{className:cn("flex flex-wrap gap-2",o),...t})}function uo({className:o,...t}){return jsx(b$1,{className:cn("ring-1 ring-border-brand text-body-medium-3",o),color:"brand",render:jsx(z,{...t}),size:"lg"})}function co({className:o,...t}){return jsx(c$1,{className:cn("text-fg-quaternary",o),render:jsx(F,{...t})})}function Jo({className:o,align:t="start",sideOffset:b=4,container:m,initialFocus:s,finalFocus:C,style:n,children:l,...P}){return jsx(h,{container:m,children:jsx(v,{align:t,className:"isolate z-50",sideOffset:b,...P,children:jsx(q,{className:cn("group/combobox-popup bg-bg-primary text-text-primary max-h-(--available-height) w-72 max-w-(--available-width) origin-(--transform-origin) rounded-md border border-border-primary shadow-md outline-hidden",o),finalFocus:C,initialFocus:s,style:n,children:jsx(yo,{children:l})})})})}function Ko(o){return jsx(h,{...o})}function Qo(o){return jsx(v,{...o})}function Wo(o){let{className:t,...b}=o;return jsx(U,{className:cn("bg-black/30",t),...b})}function Yo({className:o,status:t,...b}){let{inputValue:m}=c(),s=m?.toString().trim(),n=t==="empty"&&s?`No matches for "${s}".`:t==="empty"&&!s?"No results.":t==="pending"?jsxs(Fragment,{children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Searching..."})]}):null;return jsx(X,{className:cn("px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",!n&&"hidden",o),...b,children:n})}function Zo({className:o,...t}){return jsx($,{className:cn("px-3 py-2 text-body-regular-2 text-text-secondary",o),...t})}function _o({className:o,...t}){return jsx(J,{className:cn("max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] overflow-auto scrollbar-thin flex flex-col py-1 focus-visible:outline-none",o),...t})}function yo(o){let{className:t,...b}=o;return jsx(K,{className:cn("absolute inset-0 bg-bg-primary-hover",t),...b})}function go(o){return jsx(Q,{...o})}function jo(o){let{className:t,...b}=o;return jsx(W,{className:cn("group/combobox-row",t),...b})}function Do({className:o,children:t,withIndicator:b=true,...m}){let{disabled:s}=m;return jsx(go,{activeClassName:"bg-bg-primary-hover",disabled:s,children:jsxs(Y,{className:cn("flex w-full cursor-default items-center gap-xp-md px-3 py-2.5 text-body-medium-2 text-text-primary outline-none",o),...m,children:[t,b&&jsx(ho,{children:jsx(CheckCircle2Icon,{className:"size-5 text-fg-brand-primary shrink-0"})})]})})}function ho(o){return jsx(Z,{...o})}function ot(o){let{className:t,...b}=o;return jsx(_,{className:cn("my-1 h-px bg-border-primary",t),...b})}function tt(o){let{className:t,...b}=o;return jsx(j,{className:cn("py-1",t),...b})}function et(o){let{className:t,...b}=o;return jsx(D,{className:cn("px-3 py-1 text-body-semibold-sm text-text-secondary",t),...b})}function bt(o){return jsx(oo,{...o})}function rt(o){let{className:t,...b}=o;return jsx(to,{className:cn("fill-bg-primary",t),...b})}function it({hasMore:o,threshold:t=.5,...b}){return jsx(a,{hasMore:o,threshold:t,...b,children:o&&jsxs("div",{className:"px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Loading more..."})]})})}export{ho as A,ot as B,tt as C,et as D,bt as E,rt as F,it as G,A as a,d as b,Z as c,Oo as d,xo as e,zo as f,Fo as g,qo as h,Uo as i,Xo as j,$o as k,lo as l,Po as m,uo as n,co as o,Jo as p,Ko as q,Qo as r,Wo as s,Yo as t,Zo as u,_o as v,yo as w,go as x,jo as y,Do as z};//# sourceMappingURL=chunk-746IQSMF.js.map
2
- //# sourceMappingURL=chunk-746IQSMF.js.map
1
+ import {b}from'./chunk-JH6RZ3QH.js';import {a}from'./chunk-TED2PUK6.js';import {b as b$2,c as c$2}from'./chunk-KYD4ATTG.js';import {b as b$1,c as c$1}from'./chunk-DZKJRP4J.js';import*as S from'react';import {SearchIcon,XIcon,Loader2Icon,CheckCircle2Icon}from'lucide-react';import {Combobox}from'@base-ui/react/combobox';import {AnimatePresence,motion}from'motion/react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {useDataState}from'@xploreu/hooks/use-data-state';import {getStrictContext}from'@xploreu/lib/get-strict-context';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {cn}from'@xploreu/lib/cn';var[ao,c]=getStrictContext("ComboboxContext"),[no,H]=getStrictContext("ComboboxActiveValueContext");function R({behavior:o="default",...t}){let[b,m]=useControlledState({value:t?.open,defaultValue:t?.defaultOpen,onChange:t?.onOpenChange}),[s,C]=useControlledState({value:t?.inputValue?.toString(),defaultValue:t?.defaultInputValue?.toString(),onChange:t?.onInputValueChange}),[n,l]=S.useState(null),P=(x,a)=>{if(a.reason==="input-clear")return a.cancel();C(x,a);},y=(x,a)=>{let io=a.trigger?.dataset;if(o==="chip-outside"&&(a.reason==="trigger-press"&&io?.slot==="combobox-clear-input"&&!x||a.reason==="item-press"))return a.cancel();m(x,a);};return jsx(no,{value:{highlightedValue:n,setHighlightedValue:l},children:jsx(ao,{value:{open:b,setOpen:m,inputValue:s,setInputValue:C},children:jsx(Combobox.Root,{"data-slot":"combobox",...t,onInputValueChange:P,onOpenChange:y})})})}function T(o){return jsx(Combobox.Trigger,{"data-slot":"combobox-trigger",...o})}function k(o){return jsx(Combobox.Label,{"data-slot":"combobox-label",...o})}function A(o){return jsx(Combobox.InputGroup,{"data-slot":"combobox-input-group",...o})}function d(o){return jsx(Combobox.Input,{"data-slot":"combobox-input",...o})}function M(o){return jsx(Combobox.Icon,{"data-slot":"combobox-icon",...o})}function B(o){return jsx(Combobox.Clear,{"data-slot":"combobox-clear",...o})}function E(o){return jsx(Combobox.Value,{"data-slot":"combobox-value",...o})}function O(o){return jsx(Combobox.Chips,{"data-slot":"combobox-chips",...o})}function z(o){return jsx(Combobox.Chip,{"data-slot":"combobox-chip",...o})}function F(o){return jsx(Combobox.ChipRemove,{"data-slot":"combobox-chip-remove",...o})}function h(o){let{open:t}=c();return jsx(AnimatePresence,{children:t&&jsx(Combobox.Portal,{"data-slot":"combobox-portal",keepMounted:true,...o})})}function v(o){return jsx(Combobox.Positioner,{"data-slot":"combobox-positioner",...o})}function q({initialFocus:o,finalFocus:t,transition:b={type:"spring",stiffness:300,damping:25},...m}){return jsx(Combobox.Popup,{finalFocus:t,initialFocus:o,render:jsx(motion.div,{animate:{opacity:1,scale:1},"data-slot":"combobox-popup",exit:{opacity:0,scale:.5},initial:{opacity:0,scale:.5},transition:b,...m},"combobox-popup")})}function U(o){return jsx(Combobox.Backdrop,{"data-slot":"combobox-backdrop",...o})}function X(o){return jsx(Combobox.Status,{"data-slot":"combobox-status",...o})}function $(o){return jsx(Combobox.Empty,{"data-slot":"combobox-empty",...o})}function J(o){return jsx(Combobox.List,{"data-slot":"combobox-list",...o})}function K({transition:o={type:"spring",stiffness:350,damping:35},...t}){let{highlightedValue:b}=H();return jsx(b$2,{click:false,controlledItems:true,"data-slot":"combobox-highlight",transition:o,value:b,...t})}function Q(o){return jsx(c$2,{"data-slot":"combobox-highlight-item",...o})}function W(o){return jsx(Combobox.Row,{"data-slot":"combobox-row",...o})}function Y(o){let{setHighlightedValue:t}=H(),[,b]=useDataState("highlighted",void 0,(m,s)=>{if(m===true){let C=s.current,n=C?.dataset.value||C?.id||null;n&&t(n);}});return jsx(Combobox.Item,{ref:b,"data-slot":"combobox-item",...o})}function Z(o){return jsx(Combobox.ItemIndicator,{"data-slot":"combobox-item-indicator",...o})}function _(o){return jsx(Combobox.Separator,{"data-slot":"combobox-separator",...o})}function j(o){return jsx(Combobox.Group,{"data-slot":"combobox-group",...o})}function D(o){return jsx(Combobox.GroupLabel,{"data-slot":"combobox-group-label",...o})}function oo(o){return jsx(Combobox.Collection,{"data-slot":"combobox-collection",...o})}function to(o){return jsx(Combobox.Arrow,{"data-slot":"combobox-arrow",...o})}function Oo(o){return jsx(R,{...o})}function xo(o){let{className:t,...b}=o;return jsx(T,{className:cn("group/combobox-trigger flex items-center gap-2",t),...b})}function zo(o){let{className:t,...b}=o;return jsx(k,{className:cn("text-label-semibold-2 text-text-secondary",t),...b})}function Fo(o){let{className:t,...b}=o;return jsx(A,{className:cn("flex w-full items-center gap-2",t),...b})}function qo({className:o,wrapperClassName:t,...b$1}){return jsx("div",{className:cn("px-3 py-2.5 border-b border-border-primary",t),children:jsx(d,{className:o,render:jsx(b,{size:"sm",startContent:jsx(SearchIcon,{})}),...b$1})})}function Uo({className:o,displayValueKey:t={label:"label",value:"value"},placeholder:b$1="Search and Select Company",inputProps:m,...s}){let{inputValue:C,setInputValue:n}=c(),{className:l,startContent:P,...y}=m||{};return jsx("div",{className:cn("flex flex-col gap-2",o),children:jsxs(Po,{onMouseDown:x=>x.preventBaseUIHandler(),className:"flex-col",children:[jsx(d,{render:jsx(b,{className:cn("h-9 text-body-regular-3 pl-9 pr-7",l),endContent:jsx(xo,{nativeButton:false,render:jsx(XIcon,{className:"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer","data-hidden":!C,"data-slot":"combobox-clear-input",onClick:x=>{n("",{reason:"none",event:x.nativeEvent,cancel:()=>{},allowPropagation:()=>{},isCanceled:false,isPropagationAllowed:true,trigger:void 0});}})}),placeholder:b$1,startContent:P??jsx(SearchIcon,{className:"!size-4 !text-fg-tertiary-hover"}),...y}),...s}),jsx(lo,{children:x=>x?.map(a=>jsxs(uo,{children:[a?.[t.label]||"",jsx(co,{})]},a?.[t.value]||""))})]})})}function Xo(o){let{className:t,...b}=o;return jsx(M,{className:cn("text-text-secondary",t),...b})}function $o(o){return jsx(B,{render:jsx(XIcon,{}),...o})}function lo(o){return jsx(E,{...o})}function Po({className:o,...t}){return jsx(O,{className:cn("flex flex-wrap gap-2",o),...t})}function uo({className:o,...t}){return jsx(b$1,{className:cn("ring-1 ring-border-brand text-body-medium-3",o),color:"brand",render:jsx(z,{...t}),size:"lg"})}function co({className:o,...t}){return jsx(c$1,{className:cn("text-fg-quaternary",o),render:jsx(F,{...t})})}function Jo({className:o,align:t="start",sideOffset:b=4,container:m,initialFocus:s,finalFocus:C,style:n,children:l,...P}){return jsx(h,{container:m,children:jsx(v,{align:t,className:"isolate z-50",sideOffset:b,...P,children:jsx(q,{className:cn("group/combobox-popup bg-bg-primary text-text-primary max-h-(--available-height) w-72 max-w-(--available-width) origin-(--transform-origin) rounded-md border border-border-primary shadow-md outline-hidden",o),finalFocus:C,initialFocus:s,style:n,children:jsx(yo,{children:l})})})})}function Ko(o){return jsx(h,{...o})}function Qo(o){return jsx(v,{...o})}function Wo(o){let{className:t,...b}=o;return jsx(U,{className:cn("bg-black/30",t),...b})}function Yo({className:o,status:t,...b}){let{inputValue:m}=c(),s=m?.toString().trim(),n=t==="empty"&&s?`No matches for "${s}".`:t==="empty"&&!s?"No results.":t==="pending"?jsxs(Fragment,{children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Searching..."})]}):null;return jsx(X,{className:cn("px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",!n&&"hidden",o),...b,children:n})}function Zo({className:o,...t}){return jsx($,{className:cn("px-3 py-2 text-body-regular-2 text-text-secondary",o),...t})}function _o({className:o,...t}){return jsx(J,{className:cn("max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] overflow-auto scrollbar-thin flex flex-col py-1 focus-visible:outline-none",o),...t})}function yo(o){let{className:t,...b}=o;return jsx(K,{className:cn("absolute inset-0 bg-bg-primary-hover",t),...b})}function go(o){return jsx(Q,{...o})}function jo(o){let{className:t,...b}=o;return jsx(W,{className:cn("group/combobox-row",t),...b})}function Do({className:o,children:t,withIndicator:b=true,...m}){let{disabled:s}=m;return jsx(go,{activeClassName:"bg-bg-primary-hover",disabled:s,children:jsxs(Y,{className:cn("flex w-full cursor-default items-center gap-xp-md px-3 py-2.5 text-body-medium-3 text-text-primary outline-none",o),...m,children:[t,b&&jsx(ho,{children:jsx(CheckCircle2Icon,{className:"size-5 text-fg-brand-primary shrink-0"})})]})})}function ho(o){return jsx(Z,{...o})}function ot(o){let{className:t,...b}=o;return jsx(_,{className:cn("my-1 h-px bg-border-primary",t),...b})}function tt(o){let{className:t,...b}=o;return jsx(j,{className:cn("py-1",t),...b})}function et(o){let{className:t,...b}=o;return jsx(D,{className:cn("px-3 py-1 text-body-semibold-sm text-text-secondary",t),...b})}function bt(o){return jsx(oo,{...o})}function rt(o){let{className:t,...b}=o;return jsx(to,{className:cn("fill-bg-primary",t),...b})}function it({hasMore:o,threshold:t=.5,...b}){return jsx(a,{hasMore:o,threshold:t,...b,children:o&&jsxs("div",{className:"px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Loading more..."})]})})}export{ho as A,ot as B,tt as C,et as D,bt as E,rt as F,it as G,A as a,d as b,Z as c,Oo as d,xo as e,zo as f,Fo as g,qo as h,Uo as i,Xo as j,$o as k,lo as l,Po as m,uo as n,co as o,Jo as p,Ko as q,Qo as r,Wo as s,Yo as t,Zo as u,_o as v,yo as w,go as x,jo as y,Do as z};//# sourceMappingURL=chunk-YB5ZNOPP.js.map
2
+ //# sourceMappingURL=chunk-YB5ZNOPP.js.map