@px-ui/ui 1.0.10 → 1.0.11
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.
- package/dist/{avatar-Bb0tx0Hn.js → avatar-a40DzPi3.js} +4 -4
- package/dist/{avatar-Bb0tx0Hn.js.map → avatar-a40DzPi3.js.map} +1 -1
- package/dist/{avatar-CbuG-kqF.d.ts → avatar-cLlUF5Lz.d.ts} +6 -6
- package/dist/{avatar-CbuG-kqF.d.ts.map → avatar-cLlUF5Lz.d.ts.map} +1 -1
- package/dist/{button-BkzvdmIX.d.ts → button-BJ727apo.d.ts} +7 -7
- package/dist/{button-BkzvdmIX.d.ts.map → button-BJ727apo.d.ts.map} +1 -1
- package/dist/{button-hBUFMmsZ.js → button-Cp2S1spE.js} +2 -2
- package/dist/{button-hBUFMmsZ.js.map → button-Cp2S1spE.js.map} +1 -1
- package/dist/{combobox-C5txQ2La.d.ts → combobox-B73nb6Tq.d.ts} +19 -19
- package/dist/{combobox-C5txQ2La.d.ts.map → combobox-B73nb6Tq.d.ts.map} +1 -1
- package/dist/{combobox-CHkmVNZ2.js → combobox-Di5naqIR.js} +9 -9
- package/dist/{combobox-CHkmVNZ2.js.map → combobox-Di5naqIR.js.map} +1 -1
- package/dist/components/accordion.d.ts +5 -5
- package/dist/components/accordion.d.ts.map +1 -1
- package/dist/components/accordion.js +2 -2
- package/dist/components/alert-dialog.d.ts +14 -14
- package/dist/components/alert-dialog.d.ts.map +1 -1
- package/dist/components/alert-dialog.js +3 -3
- package/dist/components/alert.d.ts +7 -7
- package/dist/components/alert.js +2 -2
- package/dist/components/aspect-ratio.d.ts +2 -2
- package/dist/components/aspect-ratio.js +1 -1
- package/dist/components/attachment.d.ts +64 -0
- package/dist/components/attachment.d.ts.map +1 -0
- package/dist/components/attachment.js +107 -0
- package/dist/components/attachment.js.map +1 -0
- package/dist/components/avatar-group.d.ts +4 -4
- package/dist/components/avatar-group.d.ts.map +1 -1
- package/dist/components/avatar-group.js +5 -5
- package/dist/components/avatar.d.ts +1 -1
- package/dist/components/avatar.js +3 -3
- package/dist/components/badge.d.ts +5 -5
- package/dist/components/badge.js +1 -1
- package/dist/components/breadcrumb.d.ts +7 -7
- package/dist/components/breadcrumb.js +2 -2
- package/dist/components/bubble.d.ts +39 -0
- package/dist/components/bubble.d.ts.map +1 -0
- package/dist/components/bubble.js +76 -0
- package/dist/components/bubble.js.map +1 -0
- package/dist/components/button-group.d.ts +9 -9
- package/dist/components/button-group.d.ts.map +1 -1
- package/dist/components/button-group.js +2 -2
- package/dist/components/button.d.ts +1 -1
- package/dist/components/button.js +2 -2
- package/dist/components/calendar.d.ts +4 -4
- package/dist/components/calendar.d.ts.map +1 -1
- package/dist/components/calendar.js +3 -3
- package/dist/components/card.d.ts +8 -8
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +2 -2
- package/dist/components/carousel.d.ts +7 -7
- package/dist/components/carousel.d.ts.map +1 -1
- package/dist/components/carousel.js +3 -3
- package/dist/components/chart.d.ts +5 -5
- package/dist/components/chart.d.ts.map +1 -1
- package/dist/components/chart.js +2 -2
- package/dist/components/checkbox.d.ts +2 -2
- package/dist/components/checkbox.js +1 -1
- package/dist/components/collapsible.d.ts +4 -4
- package/dist/components/collapsible.d.ts.map +1 -1
- package/dist/components/collapsible.js +1 -1
- package/dist/components/combobox.d.ts +2 -2
- package/dist/components/combobox.js +11 -11
- package/dist/components/command.d.ts +11 -11
- package/dist/components/command.js +7 -7
- package/dist/components/context-menu.d.ts +16 -16
- package/dist/components/context-menu.js +2 -2
- package/dist/components/currency-select-field.d.ts +4 -4
- package/dist/components/currency-select-field.d.ts.map +1 -1
- package/dist/components/currency-select-field.js +12 -12
- package/dist/components/dialog.d.ts +11 -11
- package/dist/components/dialog.js +3 -3
- package/dist/components/direction.js +1 -1
- package/dist/components/drawer.d.ts +11 -11
- package/dist/components/drawer.js +2 -2
- package/dist/components/dropdown-menu.d.ts +1 -1
- package/dist/components/dropdown-menu.js +2 -2
- package/dist/components/empty.d.ts +9 -9
- package/dist/components/empty.js +1 -1
- package/dist/components/field.d.ts +16 -16
- package/dist/components/field.d.ts.map +1 -1
- package/dist/components/field.js +4 -4
- package/dist/components/file-upload-field.d.ts +3 -3
- package/dist/components/file-upload-field.js +6 -6
- package/dist/components/file-upload.d.ts +3 -3
- package/dist/components/file-upload.js +4 -4
- package/dist/components/hover-card.d.ts +4 -4
- package/dist/components/hover-card.js +1 -1
- package/dist/components/input-group.d.ts +12 -12
- package/dist/components/input-group.d.ts.map +1 -1
- package/dist/components/input-group.js +5 -5
- package/dist/components/input-otp.d.ts +5 -5
- package/dist/components/input-otp.js +2 -2
- package/dist/components/input.d.ts +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/item.d.ts +16 -16
- package/dist/components/item.d.ts.map +1 -1
- package/dist/components/item.js +3 -3
- package/dist/components/kbd.d.ts +3 -3
- package/dist/components/kbd.js +1 -1
- package/dist/components/label.d.ts +1 -1
- package/dist/components/label.js +2 -2
- package/dist/components/marker.d.ts +27 -0
- package/dist/components/marker.d.ts.map +1 -0
- package/dist/components/marker.js +46 -0
- package/dist/components/marker.js.map +1 -0
- package/dist/components/menubar.d.ts +18 -18
- package/dist/components/menubar.js +3 -3
- package/dist/components/message-scroller.d.ts +36 -0
- package/dist/components/message-scroller.d.ts.map +1 -0
- package/dist/components/message-scroller.js +63 -0
- package/dist/components/message-scroller.js.map +1 -0
- package/dist/components/message.d.ts +34 -0
- package/dist/components/message.d.ts.map +1 -0
- package/dist/components/message.js +52 -0
- package/dist/components/message.js.map +1 -0
- package/dist/components/native-select.d.ts +4 -4
- package/dist/components/native-select.js +2 -2
- package/dist/components/navigation-menu.d.ts +9 -9
- package/dist/components/navigation-menu.js +1 -1
- package/dist/components/pagination.d.ts +9 -9
- package/dist/components/pagination.d.ts.map +1 -1
- package/dist/components/pagination.js +3 -3
- package/dist/components/phone-input.d.ts +2 -2
- package/dist/components/phone-input.js +2 -2
- package/dist/components/popover.d.ts +7 -7
- package/dist/components/popover.d.ts.map +1 -1
- package/dist/components/popover.js +2 -2
- package/dist/components/progress.d.ts +6 -6
- package/dist/components/progress.js +1 -1
- package/dist/components/radio-group.d.ts +3 -3
- package/dist/components/radio-group.js +1 -1
- package/dist/components/resizable.d.ts +4 -4
- package/dist/components/resizable.js +1 -1
- package/dist/components/scroll-area.d.ts +3 -3
- package/dist/components/scroll-area.js +2 -2
- package/dist/components/select.d.ts +10 -10
- package/dist/components/select.js +2 -2
- package/dist/components/separator.d.ts +1 -1
- package/dist/components/separator.js +2 -2
- package/dist/components/sheet.d.ts +9 -9
- package/dist/components/sheet.js +3 -3
- package/dist/components/sidebar.d.ts +26 -26
- package/dist/components/sidebar.d.ts.map +1 -1
- package/dist/components/sidebar.js +9 -9
- package/dist/components/skeleton.d.ts +2 -2
- package/dist/components/skeleton.js +2 -2
- package/dist/components/slider.d.ts +2 -2
- package/dist/components/slider.js +1 -1
- package/dist/components/spinner.d.ts +2 -2
- package/dist/components/spinner.js +2 -2
- package/dist/components/switch.d.ts +2 -2
- package/dist/components/switch.js +1 -1
- package/dist/components/table.d.ts +9 -9
- package/dist/components/table.js +2 -2
- package/dist/components/tabs.d.ts +8 -8
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/textarea.d.ts +2 -2
- package/dist/components/textarea.js +2 -2
- package/dist/components/toast.d.ts +1 -1
- package/dist/components/toast.js +2 -2
- package/dist/components/toggle-group.d.ts +4 -4
- package/dist/components/toggle-group.js +3 -3
- package/dist/components/toggle.d.ts +1 -1
- package/dist/components/toggle.js +2 -2
- package/dist/components/tooltip.d.ts +1 -1
- package/dist/components/tooltip.js +2 -2
- package/dist/{dialog-DrdXva1a.js → dialog-B3HhbIdv.js} +4 -4
- package/dist/{dialog-DrdXva1a.js.map → dialog-B3HhbIdv.js.map} +1 -1
- package/dist/{dropdown-menu-BC7zFA2L.d.ts → dropdown-menu-C6n_oYre.d.ts} +17 -17
- package/dist/{dropdown-menu-BC7zFA2L.d.ts.map → dropdown-menu-C6n_oYre.d.ts.map} +1 -1
- package/dist/{dropdown-menu-CcumvwhM.js → dropdown-menu-vwX--mgm.js} +3 -3
- package/dist/{dropdown-menu-CcumvwhM.js.map → dropdown-menu-vwX--mgm.js.map} +1 -1
- package/dist/{file-upload-DeCIv13t.js → file-upload-B0fHdUBL.js} +5 -5
- package/dist/{file-upload-DeCIv13t.js.map → file-upload-B0fHdUBL.js.map} +1 -1
- package/dist/{file-upload-DoGu67Bu.d.ts → file-upload-CGfXHKPZ.d.ts} +13 -13
- package/dist/{file-upload-DoGu67Bu.d.ts.map → file-upload-CGfXHKPZ.d.ts.map} +1 -1
- package/dist/hooks/use-async-options.d.ts +1 -1
- package/dist/hooks/use-async-options.js +1 -1
- package/dist/hooks/use-debounce.js +1 -1
- package/dist/hooks/use-file-upload.d.ts +1 -1
- package/dist/hooks/use-file-upload.js +1 -1
- package/dist/hooks/use-infinite-scroll.d.ts +1 -1
- package/dist/hooks/use-infinite-scroll.js +2 -2
- package/dist/hooks/use-intersection-observer.d.ts +1 -1
- package/dist/hooks/use-intersection-observer.js +1 -1
- package/dist/hooks/use-mobile.js +1 -1
- package/dist/{input-8jqdnUZl.js → input-B-RCmrtR.js} +3 -3
- package/dist/{input-8jqdnUZl.js.map → input-B-RCmrtR.js.map} +1 -1
- package/dist/{input-CoP6CeA5.d.ts → input-BtI3FvrB.d.ts} +3 -3
- package/dist/input-BtI3FvrB.d.ts.map +1 -0
- package/dist/{input-group-DqEkmpXW.js → input-group-C78_1dEy.js} +6 -6
- package/dist/{input-group-DqEkmpXW.js.map → input-group-C78_1dEy.js.map} +1 -1
- package/dist/label-BnSHwOyi.d.ts +11 -0
- package/dist/label-BnSHwOyi.d.ts.map +1 -0
- package/dist/{label-AaH9ZYCZ.js → label-Cmlhz-uF.js} +3 -3
- package/dist/{label-AaH9ZYCZ.js.map → label-Cmlhz-uF.js.map} +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/{popover-C9D43EuT.js → popover-CsTnnBvx.js} +3 -3
- package/dist/{popover-C9D43EuT.js.map → popover-CsTnnBvx.js.map} +1 -1
- package/dist/providers/px-ui-provider.d.ts +4 -4
- package/dist/providers/px-ui-provider.js +4 -4
- package/dist/{separator-BS3ilczC.js → separator-BQBOLUMc.js} +2 -2
- package/dist/{separator-BS3ilczC.js.map → separator-BQBOLUMc.js.map} +1 -1
- package/dist/{separator-D0hWdzUT.d.ts → separator-pyhTqgkN.d.ts} +3 -3
- package/dist/{separator-D0hWdzUT.d.ts.map → separator-pyhTqgkN.d.ts.map} +1 -1
- package/dist/{sheet-CLjNDrfL.js → sheet-Chg_afex.js} +4 -4
- package/dist/{sheet-CLjNDrfL.js.map → sheet-Chg_afex.js.map} +1 -1
- package/dist/{skeleton-BcIxI5Wq.js → skeleton-J879XBBA.js} +2 -2
- package/dist/{skeleton-BcIxI5Wq.js.map → skeleton-J879XBBA.js.map} +1 -1
- package/dist/{spinner-Bo0sUZEg.js → spinner-C7yzrK_s.js} +2 -2
- package/dist/{spinner-Bo0sUZEg.js.map → spinner-C7yzrK_s.js.map} +1 -1
- package/dist/styles.css +665 -1
- package/dist/{textarea-Cq0o323P.js → textarea-CaHmr0re.js} +3 -3
- package/dist/{textarea-Cq0o323P.js.map → textarea-CaHmr0re.js.map} +1 -1
- package/dist/{toast-COWAQbIk.js → toast-BrPEQywl.js} +4 -4
- package/dist/{toast-COWAQbIk.js.map → toast-BrPEQywl.js.map} +1 -1
- package/dist/{toast-DkzzdXGU.d.ts → toast-CSU7vJkV.d.ts} +5 -5
- package/dist/{toast-DkzzdXGU.d.ts.map → toast-CSU7vJkV.d.ts.map} +1 -1
- package/dist/{toggle-lqIyJptS.js → toggle-CA4KsgWs.js} +2 -2
- package/dist/{toggle-lqIyJptS.js.map → toggle-CA4KsgWs.js.map} +1 -1
- package/dist/{toggle-Dq3ftPFj.d.ts → toggle-gjMAPmkg.d.ts} +5 -5
- package/dist/{toggle-Dq3ftPFj.d.ts.map → toggle-gjMAPmkg.d.ts.map} +1 -1
- package/dist/{tooltip-DBoqfN9z.d.ts → tooltip-7bptiThf.d.ts} +6 -6
- package/dist/{tooltip-DBoqfN9z.d.ts.map → tooltip-7bptiThf.d.ts.map} +1 -1
- package/dist/{tooltip-DkPxCJIL.js → tooltip-BhxGE3Gb.js} +2 -2
- package/dist/{tooltip-DkPxCJIL.js.map → tooltip-BhxGE3Gb.js.map} +1 -1
- package/dist/{use-async-options-CcsImGX4.js → use-async-options-CtB4wZrr.js} +1 -1
- package/dist/{use-async-options-CcsImGX4.js.map → use-async-options-CtB4wZrr.js.map} +1 -1
- package/dist/{use-async-options-Cu5T43vj.d.ts → use-async-options-rNdyxIrQ.d.ts} +1 -1
- package/dist/{use-async-options-Cu5T43vj.d.ts.map → use-async-options-rNdyxIrQ.d.ts.map} +1 -1
- package/dist/{use-debounce-_qaEZqtt.js → use-debounce--Lv1ABSa.js} +1 -1
- package/dist/{use-debounce-_qaEZqtt.js.map → use-debounce--Lv1ABSa.js.map} +1 -1
- package/dist/{use-file-upload-Dxrej28u.js → use-file-upload-BbERd3Nw.js} +1 -1
- package/dist/{use-file-upload-Dxrej28u.js.map → use-file-upload-BbERd3Nw.js.map} +1 -1
- package/dist/{use-file-upload-yy-xLBtn.d.ts → use-file-upload-Cbb_9kTw.d.ts} +1 -1
- package/dist/{use-file-upload-yy-xLBtn.d.ts.map → use-file-upload-Cbb_9kTw.d.ts.map} +1 -1
- package/dist/{use-infinite-scroll-CpbhGGT5.js → use-infinite-scroll-CC_Guyvn.js} +2 -2
- package/dist/{use-infinite-scroll-CpbhGGT5.js.map → use-infinite-scroll-CC_Guyvn.js.map} +1 -1
- package/dist/{use-intersection-observer-C2xDq2SW.d.ts → use-intersection-observer-CgAaXczI.d.ts} +1 -1
- package/dist/{use-intersection-observer-C2xDq2SW.d.ts.map → use-intersection-observer-CgAaXczI.d.ts.map} +1 -1
- package/dist/{use-intersection-observer-CZfnep4z.js → use-intersection-observer-S0wsPmhF.js} +1 -1
- package/dist/{use-intersection-observer-CZfnep4z.js.map → use-intersection-observer-S0wsPmhF.js.map} +1 -1
- package/dist/{use-mobile-l5ebOdQl.js → use-mobile--NaMWuCj.js} +1 -1
- package/dist/{use-mobile-l5ebOdQl.js.map → use-mobile--NaMWuCj.js.map} +1 -1
- package/dist/{utils-mWJR2N24.js → utils-DeIaBj75.js} +1 -1
- package/dist/{utils-mWJR2N24.js.map → utils-DeIaBj75.js.map} +1 -1
- package/package.json +22 -1
- package/dist/input-CoP6CeA5.d.ts.map +0 -1
- package/dist/label-Dw4Hcz5k.d.ts +0 -11
- package/dist/label-Dw4Hcz5k.d.ts.map +0 -1
- /package/dist/{direction-BKSh6e6q.js → direction-ZS2Hta3v.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as cn } from "./utils-
|
|
2
|
-
import { i as TooltipTrigger, n as TooltipContent, t as Tooltip } from "./tooltip-
|
|
3
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { t as cn } from "./utils-DeIaBj75.js";
|
|
2
|
+
import { i as TooltipTrigger, n as TooltipContent, t as Tooltip } from "./tooltip-BhxGE3Gb.js";
|
|
4
3
|
import * as React$1 from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { Avatar } from "@base-ui/react/avatar";
|
|
6
6
|
|
|
7
7
|
//#region src/components/avatar.tsx
|
|
@@ -151,4 +151,4 @@ function AvatarBadge({ className, ...props }) {
|
|
|
151
151
|
|
|
152
152
|
//#endregion
|
|
153
153
|
export { getAvatarColorByName as a, AvatarImage as i, AvatarBadge as n, getAvatarLabelFromChildren as o, AvatarFallback as r, getInitialsFromName as s, Avatar$1 as t };
|
|
154
|
-
//# sourceMappingURL=avatar-
|
|
154
|
+
//# sourceMappingURL=avatar-a40DzPi3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar-Bb0tx0Hn.js","names":["AVATAR_TOKEN_PX: Record<AvatarSize, number>","React","alt: string | undefined","name: string | undefined","Avatar","AvatarPrimitive"],"sources":["../src/components/avatar.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@px-ui/ui/components/tooltip\"\n\nconst AVATAR_NAME_PALETTE = [\n \"#bdc3c7\",\n \"#6f7b87\",\n \"#2c3e50\",\n \"#2f3193\",\n \"#662d91\",\n \"#922790\",\n \"#ec2176\",\n \"#ed1c24\",\n \"#f36622\",\n \"#f8941e\",\n \"#fab70f\",\n \"#fdde00\",\n \"#d1d219\",\n \"#8ec73f\",\n \"#00a650\",\n \"#00aa9c\",\n \"#00adef\",\n \"#0081cd\",\n \"#005bab\",\n \"#012a4a\",\n \"#013a63\",\n \"#06d6a0\",\n \"#ef476f\",\n \"#ff5d8f\",\n \"#0496ff\",\n \"#c879ff\",\n]\n\nfunction getInitialsFromName(name: string | null | undefined): string {\n if (!name) return \"\"\n const matches = [...name.matchAll(/(\\b\\w)/g)]\n return (\n (matches.shift()?.[1] ?? \"\") + (matches.pop()?.[1] ?? \"\")\n ).toUpperCase()\n}\n\nfunction getAvatarColorByName(\n name: string | null | undefined\n): React.CSSProperties {\n const seed = name && name.length ? name : \"?\"\n let index = seed[0].toUpperCase().charCodeAt(0)\n const lastName = seed.split(\" \")[1]\n if (lastName) {\n index = Math.floor((index + lastName[0].toUpperCase().charCodeAt(0)) / 2)\n }\n index = Math.abs(index - 65) % AVATAR_NAME_PALETTE.length\n return {\n backgroundColor: AVATAR_NAME_PALETTE[index],\n color: \"#fff\",\n }\n}\n\nfunction getStringFromChildren(children: React.ReactNode): string {\n let out = \"\"\n React.Children.forEach(children, (child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n out += child\n }\n })\n return out\n}\n\ntype AvatarSize = \"default\" | \"sm\" | \"lg\"\ntype AvatarSizeProp = AvatarSize | number\ntype AvatarShape = \"rounded\" | \"squared\"\n\nconst AVATAR_TOKEN_PX: Record<AvatarSize, number> = {\n sm: 24,\n default: 32,\n lg: 40,\n}\n\nfunction avatarSizeToPx(size: AvatarSizeProp): number {\n return typeof size === \"number\" ? size : AVATAR_TOKEN_PX[size]\n}\n\n// Bucket a raw pixel size into the nearest token so fallback text and the\n// badge keep scaling via the existing data-[size=*] utilities.\nfunction nearestAvatarToken(px: number): AvatarSize {\n if (px <= 28) return \"sm\"\n if (px >= 40) return \"lg\"\n return \"default\"\n}\n\n// Image URLs may carry a \"/SIZE/\" placeholder (CDN convention) that we resolve\n// to the rendered box size scaled by the device pixel ratio for crisp images.\n// URLs without the placeholder are returned untouched.\nfunction resolveAvatarSrc(\n src: string | undefined,\n size: AvatarSizeProp\n): string | undefined {\n if (!src || !src.includes(\"/SIZE/\")) return src\n const dpr = typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 2\n const dim = Math.round(avatarSizeToPx(size) * dpr)\n return src.replace(\"/SIZE/\", `/${dim}x${dim}/`)\n}\n\nconst AvatarSizeContext = React.createContext<AvatarSizeProp>(\"default\")\n\ntype AvatarProps = AvatarPrimitive.Root.Props & {\n size?: AvatarSizeProp\n shape?: AvatarShape\n tooltip?: React.ReactNode | false\n}\n\nfunction getAvatarLabelFromChildren(\n children: React.ReactNode\n): React.ReactNode | undefined {\n let alt: string | undefined\n let name: string | undefined\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return\n if (child.type === AvatarFallback) {\n const props = child.props as AvatarFallbackProps\n if (props.name) name = props.name\n } else if (child.type === AvatarImage) {\n const props = child.props as AvatarPrimitive.Image.Props\n if (props.alt) alt = props.alt\n }\n })\n return name ?? alt\n}\n\nfunction Avatar({\n className,\n size = \"default\",\n shape = \"rounded\",\n tooltip,\n children,\n style,\n ...props\n}: AvatarProps) {\n const numeric = typeof size === \"number\"\n const root = (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={numeric ? nearestAvatarToken(size) : size}\n data-shape={shape}\n style={numeric ? { width: size, height: size, ...style } : style}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[shape=squared]:rounded-lg data-[shape=squared]:after:rounded-lg data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n >\n <AvatarSizeContext.Provider value={size}>\n {children}\n </AvatarSizeContext.Provider>\n </AvatarPrimitive.Root>\n )\n\n const resolved =\n tooltip === undefined ? getAvatarLabelFromChildren(children) : tooltip\n if (resolved === false || resolved == null || resolved === \"\") return root\n\n return (\n <Tooltip>\n <TooltipTrigger render={root} />\n <TooltipContent>{resolved}</TooltipContent>\n </Tooltip>\n )\n}\n\nfunction AvatarImage({ className, src, ...props }: AvatarPrimitive.Image.Props) {\n const size = React.useContext(AvatarSizeContext)\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n src={resolveAvatarSrc(src, size)}\n className={cn(\n \"aspect-square size-full rounded-full object-cover group-data-[shape=squared]/avatar:rounded-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\ntype AvatarFallbackProps = AvatarPrimitive.Fallback.Props & {\n name?: string | null\n}\n\nfunction AvatarFallback({\n className,\n name,\n children,\n style,\n ...props\n}: AvatarFallbackProps) {\n const size = React.useContext(AvatarSizeContext)\n const colorStyle = React.useMemo(() => {\n const seed = name ?? getStringFromChildren(children)\n return getAvatarColorByName(seed)\n }, [name, children])\n const initials = React.useMemo(\n () => (name && children == null ? getInitialsFromName(name) : undefined),\n [name, children]\n )\n // For an explicit pixel size, scale the initials with the box (~0.4 of the\n // box, matching the token ratios); tokens keep the className-based sizing.\n const fontStyle =\n typeof size === \"number\" ? { fontSize: Math.round(size * 0.4) } : undefined\n\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center rounded-full font-medium text-sm group-data-[shape=squared]/avatar:rounded-lg group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n style={{ ...colorStyle, ...fontStyle, ...style }}\n {...props}\n >\n {children ?? initials}\n </AvatarPrimitive.Fallback>\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"absolute end-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarBadge,\n getAvatarLabelFromChildren,\n getInitialsFromName,\n getAvatarColorByName,\n}\nexport type { AvatarProps, AvatarFallbackProps }\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"avatar-a40DzPi3.js","names":["AVATAR_TOKEN_PX: Record<AvatarSize, number>","React","alt: string | undefined","name: string | undefined","Avatar","AvatarPrimitive"],"sources":["../src/components/avatar.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@px-ui/ui/components/tooltip\"\n\nconst AVATAR_NAME_PALETTE = [\n \"#bdc3c7\",\n \"#6f7b87\",\n \"#2c3e50\",\n \"#2f3193\",\n \"#662d91\",\n \"#922790\",\n \"#ec2176\",\n \"#ed1c24\",\n \"#f36622\",\n \"#f8941e\",\n \"#fab70f\",\n \"#fdde00\",\n \"#d1d219\",\n \"#8ec73f\",\n \"#00a650\",\n \"#00aa9c\",\n \"#00adef\",\n \"#0081cd\",\n \"#005bab\",\n \"#012a4a\",\n \"#013a63\",\n \"#06d6a0\",\n \"#ef476f\",\n \"#ff5d8f\",\n \"#0496ff\",\n \"#c879ff\",\n]\n\nfunction getInitialsFromName(name: string | null | undefined): string {\n if (!name) return \"\"\n const matches = [...name.matchAll(/(\\b\\w)/g)]\n return (\n (matches.shift()?.[1] ?? \"\") + (matches.pop()?.[1] ?? \"\")\n ).toUpperCase()\n}\n\nfunction getAvatarColorByName(\n name: string | null | undefined\n): React.CSSProperties {\n const seed = name && name.length ? name : \"?\"\n let index = seed[0].toUpperCase().charCodeAt(0)\n const lastName = seed.split(\" \")[1]\n if (lastName) {\n index = Math.floor((index + lastName[0].toUpperCase().charCodeAt(0)) / 2)\n }\n index = Math.abs(index - 65) % AVATAR_NAME_PALETTE.length\n return {\n backgroundColor: AVATAR_NAME_PALETTE[index],\n color: \"#fff\",\n }\n}\n\nfunction getStringFromChildren(children: React.ReactNode): string {\n let out = \"\"\n React.Children.forEach(children, (child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n out += child\n }\n })\n return out\n}\n\ntype AvatarSize = \"default\" | \"sm\" | \"lg\"\ntype AvatarSizeProp = AvatarSize | number\ntype AvatarShape = \"rounded\" | \"squared\"\n\nconst AVATAR_TOKEN_PX: Record<AvatarSize, number> = {\n sm: 24,\n default: 32,\n lg: 40,\n}\n\nfunction avatarSizeToPx(size: AvatarSizeProp): number {\n return typeof size === \"number\" ? size : AVATAR_TOKEN_PX[size]\n}\n\n// Bucket a raw pixel size into the nearest token so fallback text and the\n// badge keep scaling via the existing data-[size=*] utilities.\nfunction nearestAvatarToken(px: number): AvatarSize {\n if (px <= 28) return \"sm\"\n if (px >= 40) return \"lg\"\n return \"default\"\n}\n\n// Image URLs may carry a \"/SIZE/\" placeholder (CDN convention) that we resolve\n// to the rendered box size scaled by the device pixel ratio for crisp images.\n// URLs without the placeholder are returned untouched.\nfunction resolveAvatarSrc(\n src: string | undefined,\n size: AvatarSizeProp\n): string | undefined {\n if (!src || !src.includes(\"/SIZE/\")) return src\n const dpr = typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 2\n const dim = Math.round(avatarSizeToPx(size) * dpr)\n return src.replace(\"/SIZE/\", `/${dim}x${dim}/`)\n}\n\nconst AvatarSizeContext = React.createContext<AvatarSizeProp>(\"default\")\n\ntype AvatarProps = AvatarPrimitive.Root.Props & {\n size?: AvatarSizeProp\n shape?: AvatarShape\n tooltip?: React.ReactNode | false\n}\n\nfunction getAvatarLabelFromChildren(\n children: React.ReactNode\n): React.ReactNode | undefined {\n let alt: string | undefined\n let name: string | undefined\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return\n if (child.type === AvatarFallback) {\n const props = child.props as AvatarFallbackProps\n if (props.name) name = props.name\n } else if (child.type === AvatarImage) {\n const props = child.props as AvatarPrimitive.Image.Props\n if (props.alt) alt = props.alt\n }\n })\n return name ?? alt\n}\n\nfunction Avatar({\n className,\n size = \"default\",\n shape = \"rounded\",\n tooltip,\n children,\n style,\n ...props\n}: AvatarProps) {\n const numeric = typeof size === \"number\"\n const root = (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={numeric ? nearestAvatarToken(size) : size}\n data-shape={shape}\n style={numeric ? { width: size, height: size, ...style } : style}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[shape=squared]:rounded-lg data-[shape=squared]:after:rounded-lg data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n >\n <AvatarSizeContext.Provider value={size}>\n {children}\n </AvatarSizeContext.Provider>\n </AvatarPrimitive.Root>\n )\n\n const resolved =\n tooltip === undefined ? getAvatarLabelFromChildren(children) : tooltip\n if (resolved === false || resolved == null || resolved === \"\") return root\n\n return (\n <Tooltip>\n <TooltipTrigger render={root} />\n <TooltipContent>{resolved}</TooltipContent>\n </Tooltip>\n )\n}\n\nfunction AvatarImage({ className, src, ...props }: AvatarPrimitive.Image.Props) {\n const size = React.useContext(AvatarSizeContext)\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n src={resolveAvatarSrc(src, size)}\n className={cn(\n \"aspect-square size-full rounded-full object-cover group-data-[shape=squared]/avatar:rounded-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\ntype AvatarFallbackProps = AvatarPrimitive.Fallback.Props & {\n name?: string | null\n}\n\nfunction AvatarFallback({\n className,\n name,\n children,\n style,\n ...props\n}: AvatarFallbackProps) {\n const size = React.useContext(AvatarSizeContext)\n const colorStyle = React.useMemo(() => {\n const seed = name ?? getStringFromChildren(children)\n return getAvatarColorByName(seed)\n }, [name, children])\n const initials = React.useMemo(\n () => (name && children == null ? getInitialsFromName(name) : undefined),\n [name, children]\n )\n // For an explicit pixel size, scale the initials with the box (~0.4 of the\n // box, matching the token ratios); tokens keep the className-based sizing.\n const fontStyle =\n typeof size === \"number\" ? { fontSize: Math.round(size * 0.4) } : undefined\n\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center rounded-full font-medium text-sm group-data-[shape=squared]/avatar:rounded-lg group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n style={{ ...colorStyle, ...fontStyle, ...style }}\n {...props}\n >\n {children ?? initials}\n </AvatarPrimitive.Fallback>\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"absolute end-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarBadge,\n getAvatarLabelFromChildren,\n getInitialsFromName,\n getAvatarColorByName,\n}\nexport type { AvatarProps, AvatarFallbackProps }\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as react_jsx_runtime50 from "react/jsx-runtime";
|
|
2
1
|
import * as React$1 from "react";
|
|
2
|
+
import * as react_jsx_runtime87 from "react/jsx-runtime";
|
|
3
3
|
import { Avatar } from "@base-ui/react/avatar";
|
|
4
4
|
|
|
5
5
|
//#region src/components/avatar.d.ts
|
|
@@ -22,12 +22,12 @@ declare function Avatar$1({
|
|
|
22
22
|
children,
|
|
23
23
|
style,
|
|
24
24
|
...props
|
|
25
|
-
}: AvatarProps):
|
|
25
|
+
}: AvatarProps): react_jsx_runtime87.JSX.Element;
|
|
26
26
|
declare function AvatarImage({
|
|
27
27
|
className,
|
|
28
28
|
src,
|
|
29
29
|
...props
|
|
30
|
-
}: Avatar.Image.Props):
|
|
30
|
+
}: Avatar.Image.Props): react_jsx_runtime87.JSX.Element;
|
|
31
31
|
type AvatarFallbackProps = Avatar.Fallback.Props & {
|
|
32
32
|
name?: string | null;
|
|
33
33
|
};
|
|
@@ -37,11 +37,11 @@ declare function AvatarFallback({
|
|
|
37
37
|
children,
|
|
38
38
|
style,
|
|
39
39
|
...props
|
|
40
|
-
}: AvatarFallbackProps):
|
|
40
|
+
}: AvatarFallbackProps): react_jsx_runtime87.JSX.Element;
|
|
41
41
|
declare function AvatarBadge({
|
|
42
42
|
className,
|
|
43
43
|
...props
|
|
44
|
-
}: React$1.ComponentProps<"span">):
|
|
44
|
+
}: React$1.ComponentProps<"span">): react_jsx_runtime87.JSX.Element;
|
|
45
45
|
//#endregion
|
|
46
46
|
export { AvatarImage as a, getAvatarLabelFromChildren as c, AvatarFallbackProps as i, getInitialsFromName as l, AvatarBadge as n, AvatarProps as o, AvatarFallback as r, getAvatarColorByName as s, Avatar$1 as t };
|
|
47
|
-
//# sourceMappingURL=avatar-
|
|
47
|
+
//# sourceMappingURL=avatar-cLlUF5Lz.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar-
|
|
1
|
+
{"version":3,"file":"avatar-cLlUF5Lz.d.ts","names":[],"sources":["../src/components/avatar.tsx"],"sourcesContent":[],"mappings":";;;;;iBAmCS,mBAAA;iBAQA,oBAAA,mCAEN,OAAA,CAAM;KAwBJ,UAAA;AApE4D,KAqE5D,cAAA,GAAiB,UAnCM,GAAA,MAAA;AAAA,KAoCvB,WAAA,GA5BI,SAAoB,GAAA,SAE1B;AAAmB,KA6DjB,WAAA,GAAc,MAAA,CAAgB,IAAA,CAAK,KArCzB,GAAA;EACV,IAAA,CAAA,EAqCI,cArCU;EACd,KAAA,CAAA,EAqCK,WArCM;EAmCX,OAAA,CAAA,EAGO,OAAA,CAAM,SAHF,GAAA,KAAA;CAAG;iBAMV,0BAAA,CALA,QAAA,EAMG,OAAA,CAAM,SANT,CAAA,EAON,OAAA,CAAM,SAPA,GAAA,SAAA;iBAuBA,QAAA,CAtBC;EAAA,SAAA;EAAA,IAAA;EAAA,KAAA;EAAA,OAAA;EAAA,QAAA;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EA8BP,WA9BO,CAAA,EA8BI,mBAAA,CAAA,GAAA,CAAA,OA9BJ;iBA8DD,WAAA,CA7DS;EAAA,SAAA;EAAA,GAAA;EAAA,GAAA;AAAA,CAAA,EA6DiC,MAAA,CAAgB,KAAA,CAAM,KA7DvD,CAAA,EA6D4D,mBAAA,CAAA,GAAA,CAAA,OA7D5D;KA4Eb,mBAAA,GAAsB,MAAA,CAAgB,QAAA,CAAS,KA5EzB,GAAA;EAGlB,IAAA,CAAA,EAAA,MAAA,GAAA,IAAA;AAES,CAAA;iBA2ET,cAAA,CA1DP;EAAA,SAAA;EAAA,IAAA;EAAA,QAAA;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EAgEC,mBAhED,CAAA,EAgEoB,mBAAA,CAAA,GAAA,CAAA,OAhEpB;iBA8FO,WAAA,CA7FP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6F4C,OAAA,CAAM,cA7FlD,CAAA,MAAA,CAAA,CAAA,EA6FwE,mBAAA,CAAA,GAAA,CAAA,OA7FxE"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime113 from "react/jsx-runtime";
|
|
2
2
|
import { Button } from "@base-ui/react/button";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
|
-
import * as
|
|
4
|
+
import * as class_variance_authority_types6 from "class-variance-authority/types";
|
|
5
5
|
|
|
6
6
|
//#region src/components/button.d.ts
|
|
7
7
|
declare const buttonVariants: (props?: ({
|
|
8
|
-
variant?: "link" | "default" | "
|
|
9
|
-
size?: "default" | "
|
|
10
|
-
} &
|
|
8
|
+
variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
|
|
9
|
+
size?: "default" | "sm" | "xs" | "icon" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
|
|
10
|
+
} & class_variance_authority_types6.ClassProp) | undefined) => string;
|
|
11
11
|
declare function Button$1({
|
|
12
12
|
className,
|
|
13
13
|
variant,
|
|
14
14
|
size,
|
|
15
15
|
...props
|
|
16
|
-
}: Button.Props & VariantProps<typeof buttonVariants>):
|
|
16
|
+
}: Button.Props & VariantProps<typeof buttonVariants>): react_jsx_runtime113.JSX.Element;
|
|
17
17
|
//#endregion
|
|
18
18
|
export { buttonVariants as n, Button$1 as t };
|
|
19
|
-
//# sourceMappingURL=button-
|
|
19
|
+
//# sourceMappingURL=button-BJ727apo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-
|
|
1
|
+
{"version":3,"file":"button-BJ727apo.d.ts","names":[],"sources":["../src/components/button.tsx"],"sourcesContent":[],"mappings":";;;;;;cAKM;;;IAmCL,+BAAA,CAAA;AAvCgE,iBAyCxD,QAAA,CAFR;EAAA,SAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAOE,MAAA,CAAgB,KAPlB,GAO0B,YAP1B,CAAA,OAO8C,cAP9C,CAAA,CAAA,EAO6D,oBAAA,CAAA,GAAA,CAAA,OAP7D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as cn } from "./utils-
|
|
1
|
+
import { t as cn } from "./utils-DeIaBj75.js";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
import { Button } from "@base-ui/react/button";
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
@@ -44,4 +44,4 @@ function Button$1({ className, variant = "default", size = "default", ...props }
|
|
|
44
44
|
|
|
45
45
|
//#endregion
|
|
46
46
|
export { buttonVariants as n, Button$1 as t };
|
|
47
|
-
//# sourceMappingURL=button-
|
|
47
|
+
//# sourceMappingURL=button-Cp2S1spE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-
|
|
1
|
+
{"version":3,"file":"button-Cp2S1spE.js","names":["Button","ButtonPrimitive"],"sources":["../src/components/button.tsx"],"sourcesContent":["import { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-background shadow-xs hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5\",\n lg: \"h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n icon: \"size-9\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n"],"mappings":";;;;;;AAKA,MAAM,iBAAiB,IACrB,8lBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SACE;GACF,WACE;GACF,OACE;GACF,aACE;GACF,MAAM;GACP;EACD,MAAM;GACJ,SACE;GACF,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,MAAM;GACN,WACE;GACF,WACE;GACF,WAAW;GACZ;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;AAED,SAASA,SAAO,EACd,WACA,UAAU,WACV,OAAO,WACP,GAAG,SAC2D;AAC9D,QACE,oBAACC;EACC,aAAU;EACV,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;GAAW,CAAC,CAAC;EAC3D,GAAI;GACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as LoadOptionsConfig } from "./use-async-options-
|
|
2
|
-
import * as react_jsx_runtime54 from "react/jsx-runtime";
|
|
1
|
+
import { r as LoadOptionsConfig } from "./use-async-options-rNdyxIrQ.js";
|
|
3
2
|
import * as React$1 from "react";
|
|
3
|
+
import * as react_jsx_runtime14 from "react/jsx-runtime";
|
|
4
4
|
import { Combobox } from "@base-ui/react";
|
|
5
5
|
|
|
6
6
|
//#region src/components/combobox.d.ts
|
|
@@ -18,20 +18,20 @@ declare function Combobox$1<Value, Multiple extends boolean | undefined = false>
|
|
|
18
18
|
eager,
|
|
19
19
|
localFilter,
|
|
20
20
|
...props
|
|
21
|
-
}: ComboboxProps<Value, Multiple>):
|
|
21
|
+
}: ComboboxProps<Value, Multiple>): react_jsx_runtime14.JSX.Element;
|
|
22
22
|
declare function ComboboxValue({
|
|
23
23
|
...props
|
|
24
|
-
}: Combobox.Value.Props):
|
|
24
|
+
}: Combobox.Value.Props): react_jsx_runtime14.JSX.Element;
|
|
25
25
|
declare function ComboboxTrigger({
|
|
26
26
|
className,
|
|
27
27
|
children,
|
|
28
28
|
ref,
|
|
29
29
|
...props
|
|
30
|
-
}: Combobox.Trigger.Props):
|
|
30
|
+
}: Combobox.Trigger.Props): react_jsx_runtime14.JSX.Element;
|
|
31
31
|
declare function ComboboxClear({
|
|
32
32
|
className,
|
|
33
33
|
...props
|
|
34
|
-
}: Combobox.Clear.Props):
|
|
34
|
+
}: Combobox.Clear.Props): react_jsx_runtime14.JSX.Element;
|
|
35
35
|
declare function ComboboxInput({
|
|
36
36
|
className,
|
|
37
37
|
children,
|
|
@@ -42,7 +42,7 @@ declare function ComboboxInput({
|
|
|
42
42
|
}: Combobox.Input.Props & {
|
|
43
43
|
showTrigger?: boolean;
|
|
44
44
|
showClear?: boolean;
|
|
45
|
-
}):
|
|
45
|
+
}): react_jsx_runtime14.JSX.Element;
|
|
46
46
|
declare function ComboboxContent({
|
|
47
47
|
className,
|
|
48
48
|
side,
|
|
@@ -52,29 +52,29 @@ declare function ComboboxContent({
|
|
|
52
52
|
anchor,
|
|
53
53
|
children,
|
|
54
54
|
...props
|
|
55
|
-
}: Combobox.Popup.Props & Pick<Combobox.Positioner.Props, "side" | "align" | "sideOffset" | "alignOffset" | "anchor">):
|
|
55
|
+
}: Combobox.Popup.Props & Pick<Combobox.Positioner.Props, "side" | "align" | "sideOffset" | "alignOffset" | "anchor">): react_jsx_runtime14.JSX.Element;
|
|
56
56
|
declare function ComboboxList({
|
|
57
57
|
className,
|
|
58
58
|
children,
|
|
59
59
|
ref,
|
|
60
60
|
...props
|
|
61
|
-
}: React$1.ComponentPropsWithRef<typeof Combobox.List>):
|
|
61
|
+
}: React$1.ComponentPropsWithRef<typeof Combobox.List>): react_jsx_runtime14.JSX.Element;
|
|
62
62
|
declare function ComboboxItem({
|
|
63
63
|
className,
|
|
64
64
|
children,
|
|
65
65
|
...props
|
|
66
|
-
}: Combobox.Item.Props):
|
|
66
|
+
}: Combobox.Item.Props): react_jsx_runtime14.JSX.Element;
|
|
67
67
|
declare function ComboboxGroup({
|
|
68
68
|
className,
|
|
69
69
|
...props
|
|
70
|
-
}: Combobox.Group.Props):
|
|
70
|
+
}: Combobox.Group.Props): react_jsx_runtime14.JSX.Element;
|
|
71
71
|
declare function ComboboxLabel({
|
|
72
72
|
className,
|
|
73
73
|
...props
|
|
74
|
-
}: Combobox.GroupLabel.Props):
|
|
74
|
+
}: Combobox.GroupLabel.Props): react_jsx_runtime14.JSX.Element;
|
|
75
75
|
declare function ComboboxCollection({
|
|
76
76
|
...props
|
|
77
|
-
}: Combobox.Collection.Props):
|
|
77
|
+
}: Combobox.Collection.Props): react_jsx_runtime14.JSX.Element;
|
|
78
78
|
declare function ComboboxStatus({
|
|
79
79
|
loading,
|
|
80
80
|
error,
|
|
@@ -85,16 +85,16 @@ declare function ComboboxStatus({
|
|
|
85
85
|
loading?: React$1.ReactNode;
|
|
86
86
|
error?: React$1.ReactNode;
|
|
87
87
|
empty?: React$1.ReactNode;
|
|
88
|
-
}):
|
|
88
|
+
}): react_jsx_runtime14.JSX.Element;
|
|
89
89
|
declare function ComboboxSeparator({
|
|
90
90
|
className,
|
|
91
91
|
...props
|
|
92
|
-
}: Combobox.Separator.Props):
|
|
92
|
+
}: Combobox.Separator.Props): react_jsx_runtime14.JSX.Element;
|
|
93
93
|
declare function ComboboxChips({
|
|
94
94
|
className,
|
|
95
95
|
ref,
|
|
96
96
|
...props
|
|
97
|
-
}: React$1.ComponentPropsWithRef<typeof Combobox.Chips> & Combobox.Chips.Props):
|
|
97
|
+
}: React$1.ComponentPropsWithRef<typeof Combobox.Chips> & Combobox.Chips.Props): react_jsx_runtime14.JSX.Element;
|
|
98
98
|
declare function ComboboxChip({
|
|
99
99
|
className,
|
|
100
100
|
children,
|
|
@@ -102,12 +102,12 @@ declare function ComboboxChip({
|
|
|
102
102
|
...props
|
|
103
103
|
}: Combobox.Chip.Props & {
|
|
104
104
|
showRemove?: boolean;
|
|
105
|
-
}):
|
|
105
|
+
}): react_jsx_runtime14.JSX.Element;
|
|
106
106
|
declare function ComboboxChipsInput({
|
|
107
107
|
className,
|
|
108
108
|
...props
|
|
109
|
-
}: Combobox.Input.Props):
|
|
109
|
+
}: Combobox.Input.Props): react_jsx_runtime14.JSX.Element;
|
|
110
110
|
declare function useComboboxAnchor(): React$1.RefObject<HTMLDivElement | null>;
|
|
111
111
|
//#endregion
|
|
112
112
|
export { useComboboxAnchor as _, ComboboxClear as a, ComboboxGroup as c, ComboboxLabel as d, ComboboxList as f, ComboboxValue as g, ComboboxTrigger as h, ComboboxChipsInput as i, ComboboxInput as l, ComboboxStatus as m, ComboboxChip as n, ComboboxCollection as o, ComboboxSeparator as p, ComboboxChips as r, ComboboxContent as s, Combobox$1 as t, ComboboxItem as u };
|
|
113
|
-
//# sourceMappingURL=combobox-
|
|
113
|
+
//# sourceMappingURL=combobox-B73nb6Tq.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox-
|
|
1
|
+
{"version":3,"file":"combobox-B73nb6Tq.d.ts","names":[],"sources":["../src/components/combobox.tsx"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
5
|
-
import {
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as
|
|
1
|
+
import { n as useAsyncOptions } from "./use-async-options-CtB4wZrr.js";
|
|
2
|
+
import { t as useDebounce } from "./use-debounce--Lv1ABSa.js";
|
|
3
|
+
import { t as use_infinite_scroll_default } from "./use-infinite-scroll-CC_Guyvn.js";
|
|
4
|
+
import { t as cn } from "./utils-DeIaBj75.js";
|
|
5
|
+
import { t as Button } from "./button-Cp2S1spE.js";
|
|
6
|
+
import { i as InputGroupInput, n as InputGroupAddon, r as InputGroupButton, t as InputGroup } from "./input-group-C78_1dEy.js";
|
|
7
|
+
import { t as Spinner } from "./spinner-C7yzrK_s.js";
|
|
8
|
+
import * as React$1 from "react";
|
|
8
9
|
import { CheckIcon, ChevronDownIcon, XIcon } from "lucide-react";
|
|
9
10
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
-
import * as React$1 from "react";
|
|
11
11
|
import { Combobox } from "@base-ui/react";
|
|
12
12
|
|
|
13
13
|
//#region src/components/combobox.tsx
|
|
@@ -338,4 +338,4 @@ function useComboboxAnchor() {
|
|
|
338
338
|
|
|
339
339
|
//#endregion
|
|
340
340
|
export { useComboboxAnchor as _, ComboboxClear as a, ComboboxGroup as c, ComboboxLabel as d, ComboboxList as f, ComboboxValue as g, ComboboxTrigger as h, ComboboxChipsInput as i, ComboboxInput as l, ComboboxStatus as m, ComboboxChip as n, ComboboxCollection as o, ComboboxSeparator as p, ComboboxChips as r, ComboboxContent as s, Combobox$1 as t, ComboboxItem as u };
|
|
341
|
-
//# sourceMappingURL=combobox-
|
|
341
|
+
//# sourceMappingURL=combobox-Di5naqIR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox-CHkmVNZ2.js","names":["React","Combobox","ComboboxPrimitive","useInfiniteScroll"],"sources":["../src/components/combobox.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\";\n\nimport { cn } from \"@px-ui/ui/lib/utils\";\nimport { Button } from \"@px-ui/ui/components/button\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"@px-ui/ui/components/input-group\";\nimport { Spinner } from \"@px-ui/ui/components/spinner\";\nimport {\n useAsyncOptions,\n type LoadOptionsConfig,\n} from \"@px-ui/ui/hooks/use-async-options\";\nimport useInfiniteScroll from \"@px-ui/ui/hooks/use-infinite-scroll\";\nimport useDebounce from \"@px-ui/ui/hooks/use-debounce\";\nimport { ChevronDownIcon, XIcon, CheckIcon } from \"lucide-react\";\n\ntype ComboboxAsyncContextValue = {\n isAsync: boolean;\n isLoading: boolean;\n isLoadingMore: boolean;\n isError: boolean;\n hasMore: boolean;\n onLoadMore: () => void;\n};\n\nconst ComboboxAsyncContext = React.createContext<ComboboxAsyncContextValue>({\n isAsync: false,\n isLoading: false,\n isLoadingMore: false,\n isError: false,\n hasMore: false,\n onLoadMore: () => {},\n});\n\nfunction useComboboxAsyncContext() {\n return React.useContext(ComboboxAsyncContext);\n}\n\nconst ComboboxListRefContext = React.createContext<HTMLElement | null>(null);\n\nconst ComboboxAnchorContext =\n React.createContext<React.MutableRefObject<HTMLElement | null> | null>(null);\n\nconst ComboboxInsidePopupContext = React.createContext(false);\n\nfunction useAttachComboboxAnchor<T extends HTMLElement>(\n userRef?: React.Ref<T> | null,\n) {\n const ctxRef = React.useContext(ComboboxAnchorContext);\n const insidePopup = React.useContext(ComboboxInsidePopupContext);\n return React.useCallback(\n (node: T | null) => {\n if (typeof userRef === \"function\") userRef(node);\n else if (userRef && typeof userRef === \"object\") {\n (userRef as React.MutableRefObject<T | null>).current = node;\n }\n if (ctxRef && !insidePopup) ctxRef.current = node;\n },\n [ctxRef, insidePopup, userRef],\n );\n}\n\nfunction normalizeInputValue(value: unknown) {\n return Array.isArray(value) ? value.join(\",\") : String(value ?? \"\");\n}\n\ntype ComboboxProps<\n Value,\n Multiple extends boolean | undefined = false,\n> = ComboboxPrimitive.Root.Props<Value, Multiple> & {\n loadOptions?: LoadOptionsConfig<Value>;\n debounceMs?: number;\n isLoading?: boolean;\n eager?: boolean;\n localFilter?: boolean;\n};\n\nfunction Combobox<Value, Multiple extends boolean | undefined = false>({\n loadOptions,\n debounceMs,\n isLoading = false,\n eager = false,\n localFilter = false,\n ...props\n}: ComboboxProps<Value, Multiple>) {\n const anchorRef = React.useRef<HTMLElement | null>(null);\n const inner = loadOptions ? (\n <ComboboxAsyncRoot\n loadOptions={loadOptions}\n debounceMs={debounceMs}\n isLoading={isLoading}\n eager={eager}\n localFilter={localFilter}\n {...(props as ComboboxPrimitive.Root.Props<Value, Multiple>)}\n />\n ) : (\n <ComboboxAsyncContext.Provider\n value={{\n isAsync: false,\n isLoading,\n isLoadingMore: false,\n isError: false,\n hasMore: false,\n onLoadMore: () => {},\n }}\n >\n <ComboboxPrimitive.Root autoHighlight {...props} />\n </ComboboxAsyncContext.Provider>\n );\n return (\n <ComboboxAnchorContext.Provider value={anchorRef}>\n {inner}\n </ComboboxAnchorContext.Provider>\n );\n}\n\nfunction ComboboxAsyncRoot<\n Value,\n Multiple extends boolean | undefined = false,\n>({\n loadOptions,\n debounceMs = 500,\n open: openProp,\n inputValue: inputValueProp,\n defaultInputValue,\n onOpenChange,\n onInputValueChange,\n filter: filterProp,\n items: _ignoredItems,\n autoHighlight = \"always\",\n isLoading: isLoadingProp = false,\n eager = false,\n localFilter = false,\n children,\n ...props\n}: Omit<ComboboxPrimitive.Root.Props<Value, Multiple>, \"autoHighlight\"> & {\n loadOptions: LoadOptionsConfig<Value>;\n debounceMs?: number;\n autoHighlight?: boolean | \"always\";\n isLoading?: boolean;\n eager?: boolean;\n localFilter?: boolean;\n}) {\n const [internalOpen, setInternalOpen] = React.useState(false);\n const open = openProp ?? internalOpen;\n const handleOpenChange = (\n next: boolean,\n eventDetails: ComboboxPrimitive.Root.ChangeEventDetails,\n ) => {\n if (openProp === undefined) setInternalOpen(next);\n onOpenChange?.(next, eventDetails);\n };\n\n const initialSearchValue = normalizeInputValue(\n inputValueProp ?? defaultInputValue,\n );\n const [searchValue, setSearchValue] = React.useState(initialSearchValue);\n const [debouncedSearchValue, setDebouncedSearchValue] =\n React.useState(initialSearchValue);\n\n React.useEffect(() => {\n if (inputValueProp !== undefined) {\n setSearchValue(normalizeInputValue(inputValueProp));\n }\n }, [inputValueProp]);\n\n useDebounce(\n () => {\n setDebouncedSearchValue(searchValue);\n },\n debounceMs,\n [searchValue],\n );\n\n const handleInputValueChange = (\n val: string,\n eventDetails: ComboboxPrimitive.Root.ChangeEventDetails,\n ) => {\n if (eventDetails?.reason !== \"item-press\") {\n setSearchValue(val);\n }\n onInputValueChange?.(val, eventDetails);\n };\n\n const asyncState = useAsyncOptions<Value>(loadOptions, {\n isOpen: open,\n inputValue: debouncedSearchValue,\n eager,\n localFilter,\n });\n\n const contextValue = React.useMemo<ComboboxAsyncContextValue>(\n () => ({\n isAsync: true,\n isLoading: isLoadingProp || asyncState.isLoading,\n isLoadingMore: asyncState.isLoadingMore,\n isError: asyncState.isError,\n hasMore: !!asyncState.hasMore,\n onLoadMore: asyncState.onLoadMore,\n }),\n [\n isLoadingProp,\n asyncState.isLoading,\n asyncState.isLoadingMore,\n asyncState.isError,\n asyncState.hasMore,\n asyncState.onLoadMore,\n ],\n );\n\n return (\n <ComboboxAsyncContext.Provider value={contextValue}>\n <ComboboxPrimitive.Root\n {...(props as ComboboxPrimitive.Root.Props<Value, Multiple>)}\n items={asyncState.items}\n filter={asyncState.isLocalFilter ? filterProp : null}\n autoHighlight={autoHighlight as boolean}\n open={open}\n inputValue={inputValueProp}\n defaultInputValue={defaultInputValue}\n onOpenChange={handleOpenChange}\n onInputValueChange={handleInputValueChange}\n >\n {children}\n </ComboboxPrimitive.Root>\n </ComboboxAsyncContext.Provider>\n );\n}\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />;\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ref,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n const attachAnchor = useAttachComboboxAnchor<HTMLElement>(\n ref as React.Ref<HTMLElement> | undefined,\n );\n return (\n <ComboboxPrimitive.Trigger\n ref={attachAnchor}\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4\" />\n </ComboboxPrimitive.Trigger>\n );\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n );\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled,\n showTrigger = true,\n showClear = true,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean;\n showClear?: boolean;\n}) {\n const attachAnchor = useAttachComboboxAnchor<HTMLDivElement>();\n return (\n <InputGroup ref={attachAnchor} className={cn(\"w-auto\", className)}>\n <ComboboxPrimitive.Input\n render={\n <InputGroupInput {...(disabled !== undefined ? { disabled } : {})} />\n }\n {...props}\n />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n render={<ComboboxTrigger />}\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n {...(disabled !== undefined ? { disabled } : {})}\n />\n )}\n {showClear && (\n <ComboboxClear {...(disabled !== undefined ? { disabled } : {})} />\n )}\n </InputGroupAddon>\n {children}\n </InputGroup>\n );\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n children,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n const ctxAnchor = React.useContext(ComboboxAnchorContext);\n const resolvedAnchor = anchor ?? ctxAnchor ?? undefined;\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={resolvedAnchor}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n className={cn(\n \"group/combobox-content max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 relative overflow-hidden rounded-md shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:shadow-none\",\n className,\n )}\n {...props}\n >\n <ComboboxInsidePopupContext.Provider value={true}>\n {children}\n </ComboboxInsidePopupContext.Provider>\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n );\n}\n\nfunction ComboboxList({\n className,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.List>) {\n const { isAsync, hasMore } = useComboboxAsyncContext();\n const [listEl, setListEl] = React.useState<HTMLElement | null>(null);\n\n const handleListRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n setListEl(node);\n\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n const resolvedChildren = React.useMemo(() => {\n if (isAsync && typeof children === \"function\") {\n return (\n <>\n <ComboboxPrimitive.Collection>\n {children}\n </ComboboxPrimitive.Collection>\n {hasMore ? <ComboboxLoadMoreSentinel /> : null}\n </>\n );\n }\n return children;\n }, [isAsync, hasMore, children]);\n\n return (\n <ComboboxListRefContext.Provider value={listEl}>\n <ComboboxPrimitive.List\n ref={handleListRef}\n data-slot=\"combobox-list\"\n className={cn(\n \"ppx-scrollbar data-empty:p-0 max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1\",\n className,\n )}\n {...props}\n >\n {resolvedChildren}\n </ComboboxPrimitive.List>\n </ComboboxListRefContext.Provider>\n );\n}\n\nfunction ComboboxLoadMoreSentinel() {\n const { isLoadingMore, hasMore, onLoadMore, isError } =\n useComboboxAsyncContext();\n const listEl = React.useContext(ComboboxListRefContext);\n const [ref] = useInfiniteScroll({\n isLoadingMore,\n hasMore,\n onLoadMore,\n disabled: isError,\n root: listEl,\n rootMargin: \"0px 0px 80px 0px\",\n });\n return (\n <ComboboxPrimitive.Status\n ref={ref}\n data-slot=\"combobox-load-more\"\n aria-label={isLoadingMore ? \"Loading more options\" : undefined}\n className=\"flex h-10 items-center justify-center\"\n >\n {isLoadingMore && <Spinner className=\"text-muted-foreground size-4\" />}\n </ComboboxPrimitive.Status>\n );\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"outline-hidden data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <ComboboxPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute end-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n );\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n );\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n );\n}\n\nfunction ComboboxStatus({\n loading = \"Loading…\",\n error = \"Failed to load options\",\n empty = \"No options found\",\n className,\n ...props\n}: Omit<ComboboxPrimitive.Status.Props, \"children\"> & {\n loading?: React.ReactNode;\n error?: React.ReactNode;\n empty?: React.ReactNode;\n}) {\n const { isAsync, isLoading, isError } = useComboboxAsyncContext();\n\n if (isLoading || (isAsync && isError)) {\n return (\n <ComboboxPrimitive.Status\n data-slot=\"combobox-status\"\n className={cn(\n \"text-muted-foreground flex w-full items-center justify-center gap-2 py-2 text-center text-sm\",\n className,\n )}\n {...props}\n >\n {isLoading ? (\n <>\n <Spinner aria-hidden className=\"size-4\" />\n {loading}\n </>\n ) : (\n error\n )}\n </ComboboxPrimitive.Status>\n );\n }\n\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"text-muted-foreground group-data-empty/combobox-content:flex hidden w-full justify-center py-2 text-center text-sm\",\n className,\n )}\n {...props}\n >\n {empty}\n </ComboboxPrimitive.Empty>\n );\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ComboboxChips({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props) {\n const attachAnchor = useAttachComboboxAnchor<HTMLDivElement>(\n ref as React.Ref<HTMLDivElement> | undefined,\n );\n return (\n <ComboboxPrimitive.Chips\n ref={attachAnchor}\n data-slot=\"combobox-chips\"\n className={cn(\n \"border-input shadow-xs focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40 flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm transition-[color,box-shadow]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean;\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n \"bg-muted text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pe-0 flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 whitespace-nowrap rounded-sm px-1.5 text-xs font-medium\",\n className,\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n className=\"-ms-1 opacity-50 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n );\n}\n\nfunction ComboboxChipsInput({\n className,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\"min-w-16 flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null);\n}\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxClear,\n ComboboxContent,\n ComboboxList,\n ComboboxItem,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxStatus,\n ComboboxSeparator,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox-Di5naqIR.js","names":["React","Combobox","ComboboxPrimitive","useInfiniteScroll"],"sources":["../src/components/combobox.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\";\n\nimport { cn } from \"@px-ui/ui/lib/utils\";\nimport { Button } from \"@px-ui/ui/components/button\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"@px-ui/ui/components/input-group\";\nimport { Spinner } from \"@px-ui/ui/components/spinner\";\nimport {\n useAsyncOptions,\n type LoadOptionsConfig,\n} from \"@px-ui/ui/hooks/use-async-options\";\nimport useInfiniteScroll from \"@px-ui/ui/hooks/use-infinite-scroll\";\nimport useDebounce from \"@px-ui/ui/hooks/use-debounce\";\nimport { ChevronDownIcon, XIcon, CheckIcon } from \"lucide-react\";\n\ntype ComboboxAsyncContextValue = {\n isAsync: boolean;\n isLoading: boolean;\n isLoadingMore: boolean;\n isError: boolean;\n hasMore: boolean;\n onLoadMore: () => void;\n};\n\nconst ComboboxAsyncContext = React.createContext<ComboboxAsyncContextValue>({\n isAsync: false,\n isLoading: false,\n isLoadingMore: false,\n isError: false,\n hasMore: false,\n onLoadMore: () => {},\n});\n\nfunction useComboboxAsyncContext() {\n return React.useContext(ComboboxAsyncContext);\n}\n\nconst ComboboxListRefContext = React.createContext<HTMLElement | null>(null);\n\nconst ComboboxAnchorContext =\n React.createContext<React.MutableRefObject<HTMLElement | null> | null>(null);\n\nconst ComboboxInsidePopupContext = React.createContext(false);\n\nfunction useAttachComboboxAnchor<T extends HTMLElement>(\n userRef?: React.Ref<T> | null,\n) {\n const ctxRef = React.useContext(ComboboxAnchorContext);\n const insidePopup = React.useContext(ComboboxInsidePopupContext);\n return React.useCallback(\n (node: T | null) => {\n if (typeof userRef === \"function\") userRef(node);\n else if (userRef && typeof userRef === \"object\") {\n (userRef as React.MutableRefObject<T | null>).current = node;\n }\n if (ctxRef && !insidePopup) ctxRef.current = node;\n },\n [ctxRef, insidePopup, userRef],\n );\n}\n\nfunction normalizeInputValue(value: unknown) {\n return Array.isArray(value) ? value.join(\",\") : String(value ?? \"\");\n}\n\ntype ComboboxProps<\n Value,\n Multiple extends boolean | undefined = false,\n> = ComboboxPrimitive.Root.Props<Value, Multiple> & {\n loadOptions?: LoadOptionsConfig<Value>;\n debounceMs?: number;\n isLoading?: boolean;\n eager?: boolean;\n localFilter?: boolean;\n};\n\nfunction Combobox<Value, Multiple extends boolean | undefined = false>({\n loadOptions,\n debounceMs,\n isLoading = false,\n eager = false,\n localFilter = false,\n ...props\n}: ComboboxProps<Value, Multiple>) {\n const anchorRef = React.useRef<HTMLElement | null>(null);\n const inner = loadOptions ? (\n <ComboboxAsyncRoot\n loadOptions={loadOptions}\n debounceMs={debounceMs}\n isLoading={isLoading}\n eager={eager}\n localFilter={localFilter}\n {...(props as ComboboxPrimitive.Root.Props<Value, Multiple>)}\n />\n ) : (\n <ComboboxAsyncContext.Provider\n value={{\n isAsync: false,\n isLoading,\n isLoadingMore: false,\n isError: false,\n hasMore: false,\n onLoadMore: () => {},\n }}\n >\n <ComboboxPrimitive.Root autoHighlight {...props} />\n </ComboboxAsyncContext.Provider>\n );\n return (\n <ComboboxAnchorContext.Provider value={anchorRef}>\n {inner}\n </ComboboxAnchorContext.Provider>\n );\n}\n\nfunction ComboboxAsyncRoot<\n Value,\n Multiple extends boolean | undefined = false,\n>({\n loadOptions,\n debounceMs = 500,\n open: openProp,\n inputValue: inputValueProp,\n defaultInputValue,\n onOpenChange,\n onInputValueChange,\n filter: filterProp,\n items: _ignoredItems,\n autoHighlight = \"always\",\n isLoading: isLoadingProp = false,\n eager = false,\n localFilter = false,\n children,\n ...props\n}: Omit<ComboboxPrimitive.Root.Props<Value, Multiple>, \"autoHighlight\"> & {\n loadOptions: LoadOptionsConfig<Value>;\n debounceMs?: number;\n autoHighlight?: boolean | \"always\";\n isLoading?: boolean;\n eager?: boolean;\n localFilter?: boolean;\n}) {\n const [internalOpen, setInternalOpen] = React.useState(false);\n const open = openProp ?? internalOpen;\n const handleOpenChange = (\n next: boolean,\n eventDetails: ComboboxPrimitive.Root.ChangeEventDetails,\n ) => {\n if (openProp === undefined) setInternalOpen(next);\n onOpenChange?.(next, eventDetails);\n };\n\n const initialSearchValue = normalizeInputValue(\n inputValueProp ?? defaultInputValue,\n );\n const [searchValue, setSearchValue] = React.useState(initialSearchValue);\n const [debouncedSearchValue, setDebouncedSearchValue] =\n React.useState(initialSearchValue);\n\n React.useEffect(() => {\n if (inputValueProp !== undefined) {\n setSearchValue(normalizeInputValue(inputValueProp));\n }\n }, [inputValueProp]);\n\n useDebounce(\n () => {\n setDebouncedSearchValue(searchValue);\n },\n debounceMs,\n [searchValue],\n );\n\n const handleInputValueChange = (\n val: string,\n eventDetails: ComboboxPrimitive.Root.ChangeEventDetails,\n ) => {\n if (eventDetails?.reason !== \"item-press\") {\n setSearchValue(val);\n }\n onInputValueChange?.(val, eventDetails);\n };\n\n const asyncState = useAsyncOptions<Value>(loadOptions, {\n isOpen: open,\n inputValue: debouncedSearchValue,\n eager,\n localFilter,\n });\n\n const contextValue = React.useMemo<ComboboxAsyncContextValue>(\n () => ({\n isAsync: true,\n isLoading: isLoadingProp || asyncState.isLoading,\n isLoadingMore: asyncState.isLoadingMore,\n isError: asyncState.isError,\n hasMore: !!asyncState.hasMore,\n onLoadMore: asyncState.onLoadMore,\n }),\n [\n isLoadingProp,\n asyncState.isLoading,\n asyncState.isLoadingMore,\n asyncState.isError,\n asyncState.hasMore,\n asyncState.onLoadMore,\n ],\n );\n\n return (\n <ComboboxAsyncContext.Provider value={contextValue}>\n <ComboboxPrimitive.Root\n {...(props as ComboboxPrimitive.Root.Props<Value, Multiple>)}\n items={asyncState.items}\n filter={asyncState.isLocalFilter ? filterProp : null}\n autoHighlight={autoHighlight as boolean}\n open={open}\n inputValue={inputValueProp}\n defaultInputValue={defaultInputValue}\n onOpenChange={handleOpenChange}\n onInputValueChange={handleInputValueChange}\n >\n {children}\n </ComboboxPrimitive.Root>\n </ComboboxAsyncContext.Provider>\n );\n}\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />;\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ref,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n const attachAnchor = useAttachComboboxAnchor<HTMLElement>(\n ref as React.Ref<HTMLElement> | undefined,\n );\n return (\n <ComboboxPrimitive.Trigger\n ref={attachAnchor}\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4\" />\n </ComboboxPrimitive.Trigger>\n );\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n );\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled,\n showTrigger = true,\n showClear = true,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean;\n showClear?: boolean;\n}) {\n const attachAnchor = useAttachComboboxAnchor<HTMLDivElement>();\n return (\n <InputGroup ref={attachAnchor} className={cn(\"w-auto\", className)}>\n <ComboboxPrimitive.Input\n render={\n <InputGroupInput {...(disabled !== undefined ? { disabled } : {})} />\n }\n {...props}\n />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n render={<ComboboxTrigger />}\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n {...(disabled !== undefined ? { disabled } : {})}\n />\n )}\n {showClear && (\n <ComboboxClear {...(disabled !== undefined ? { disabled } : {})} />\n )}\n </InputGroupAddon>\n {children}\n </InputGroup>\n );\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n children,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n const ctxAnchor = React.useContext(ComboboxAnchorContext);\n const resolvedAnchor = anchor ?? ctxAnchor ?? undefined;\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={resolvedAnchor}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n className={cn(\n \"group/combobox-content max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 relative overflow-hidden rounded-md shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:shadow-none\",\n className,\n )}\n {...props}\n >\n <ComboboxInsidePopupContext.Provider value={true}>\n {children}\n </ComboboxInsidePopupContext.Provider>\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n );\n}\n\nfunction ComboboxList({\n className,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.List>) {\n const { isAsync, hasMore } = useComboboxAsyncContext();\n const [listEl, setListEl] = React.useState<HTMLElement | null>(null);\n\n const handleListRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n setListEl(node);\n\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n const resolvedChildren = React.useMemo(() => {\n if (isAsync && typeof children === \"function\") {\n return (\n <>\n <ComboboxPrimitive.Collection>\n {children}\n </ComboboxPrimitive.Collection>\n {hasMore ? <ComboboxLoadMoreSentinel /> : null}\n </>\n );\n }\n return children;\n }, [isAsync, hasMore, children]);\n\n return (\n <ComboboxListRefContext.Provider value={listEl}>\n <ComboboxPrimitive.List\n ref={handleListRef}\n data-slot=\"combobox-list\"\n className={cn(\n \"ppx-scrollbar data-empty:p-0 max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1\",\n className,\n )}\n {...props}\n >\n {resolvedChildren}\n </ComboboxPrimitive.List>\n </ComboboxListRefContext.Provider>\n );\n}\n\nfunction ComboboxLoadMoreSentinel() {\n const { isLoadingMore, hasMore, onLoadMore, isError } =\n useComboboxAsyncContext();\n const listEl = React.useContext(ComboboxListRefContext);\n const [ref] = useInfiniteScroll({\n isLoadingMore,\n hasMore,\n onLoadMore,\n disabled: isError,\n root: listEl,\n rootMargin: \"0px 0px 80px 0px\",\n });\n return (\n <ComboboxPrimitive.Status\n ref={ref}\n data-slot=\"combobox-load-more\"\n aria-label={isLoadingMore ? \"Loading more options\" : undefined}\n className=\"flex h-10 items-center justify-center\"\n >\n {isLoadingMore && <Spinner className=\"text-muted-foreground size-4\" />}\n </ComboboxPrimitive.Status>\n );\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"outline-hidden data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <ComboboxPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute end-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n );\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n );\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n );\n}\n\nfunction ComboboxStatus({\n loading = \"Loading…\",\n error = \"Failed to load options\",\n empty = \"No options found\",\n className,\n ...props\n}: Omit<ComboboxPrimitive.Status.Props, \"children\"> & {\n loading?: React.ReactNode;\n error?: React.ReactNode;\n empty?: React.ReactNode;\n}) {\n const { isAsync, isLoading, isError } = useComboboxAsyncContext();\n\n if (isLoading || (isAsync && isError)) {\n return (\n <ComboboxPrimitive.Status\n data-slot=\"combobox-status\"\n className={cn(\n \"text-muted-foreground flex w-full items-center justify-center gap-2 py-2 text-center text-sm\",\n className,\n )}\n {...props}\n >\n {isLoading ? (\n <>\n <Spinner aria-hidden className=\"size-4\" />\n {loading}\n </>\n ) : (\n error\n )}\n </ComboboxPrimitive.Status>\n );\n }\n\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"text-muted-foreground group-data-empty/combobox-content:flex hidden w-full justify-center py-2 text-center text-sm\",\n className,\n )}\n {...props}\n >\n {empty}\n </ComboboxPrimitive.Empty>\n );\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ComboboxChips({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props) {\n const attachAnchor = useAttachComboboxAnchor<HTMLDivElement>(\n ref as React.Ref<HTMLDivElement> | undefined,\n );\n return (\n <ComboboxPrimitive.Chips\n ref={attachAnchor}\n data-slot=\"combobox-chips\"\n className={cn(\n \"border-input shadow-xs focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40 flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm transition-[color,box-shadow]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean;\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n \"bg-muted text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pe-0 flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 whitespace-nowrap rounded-sm px-1.5 text-xs font-medium\",\n className,\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n className=\"-ms-1 opacity-50 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n );\n}\n\nfunction ComboboxChipsInput({\n className,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\"min-w-16 flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null);\n}\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxClear,\n ComboboxContent,\n ComboboxList,\n ComboboxItem,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxStatus,\n ComboboxSeparator,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n};\n"],"mappings":"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"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
+
import * as react_jsx_runtime31 from "react/jsx-runtime";
|
|
1
2
|
import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
|
|
2
|
-
import * as react_jsx_runtime177 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/accordion.d.ts
|
|
5
5
|
declare function Accordion({
|
|
6
6
|
className,
|
|
7
7
|
...props
|
|
8
|
-
}: Accordion$1.Root.Props):
|
|
8
|
+
}: Accordion$1.Root.Props): react_jsx_runtime31.JSX.Element;
|
|
9
9
|
declare function AccordionItem({
|
|
10
10
|
className,
|
|
11
11
|
...props
|
|
12
|
-
}: Accordion$1.Item.Props):
|
|
12
|
+
}: Accordion$1.Item.Props): react_jsx_runtime31.JSX.Element;
|
|
13
13
|
declare function AccordionTrigger({
|
|
14
14
|
className,
|
|
15
15
|
children,
|
|
16
16
|
...props
|
|
17
|
-
}: Accordion$1.Trigger.Props):
|
|
17
|
+
}: Accordion$1.Trigger.Props): react_jsx_runtime31.JSX.Element;
|
|
18
18
|
declare function AccordionContent({
|
|
19
19
|
className,
|
|
20
20
|
children,
|
|
21
21
|
...props
|
|
22
|
-
}: Accordion$1.Panel.Props):
|
|
22
|
+
}: Accordion$1.Panel.Props): react_jsx_runtime31.JSX.Element;
|
|
23
23
|
//#endregion
|
|
24
24
|
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
|
|
25
25
|
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","names":[],"sources":["../../src/components/accordion.tsx"],"sourcesContent":[],"mappings":";;;;iBAKS,SAAA;;;GAAmC,WAAA,CAAmB,IAAA,CAAK,QAAK,
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","names":[],"sources":["../../src/components/accordion.tsx"],"sourcesContent":[],"mappings":";;;;iBAKS,SAAA;;;GAAmC,WAAA,CAAmB,IAAA,CAAK,QAAK,mBAAA,CAAA,GAAA,CAAA;iBAUhE,aAAA;;;GAAuC,WAAA,CAAmB,IAAA,CAAK,QAAK,mBAAA,CAAA,GAAA,CAAA;iBAUpE,gBAAA;;;;GAIN,WAAA,CAAmB,OAAA,CAAQ,QAAK,mBAAA,CAAA,GAAA,CAAA;AA7BuC,iBAgDjE,gBAAA,CA3CS;EAAA,SAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EA+Cf,WAAA,CAAmB,KAAA,CAAM,KA/CV,CAAA,EA+Ce,mBAAA,CAAA,GAAA,CAAA,OA/Cf"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as cn } from "../utils-
|
|
2
|
-
import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
|
|
1
|
+
import { t as cn } from "../utils-DeIaBj75.js";
|
|
3
2
|
import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
4
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
|
|
5
5
|
|
|
6
6
|
//#region src/components/accordion.tsx
|
|
7
7
|
function Accordion({ className, ...props }) {
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import { t as Button } from "../button-
|
|
2
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
1
|
+
import { t as Button } from "../button-BJ727apo.js";
|
|
3
2
|
import * as React$1 from "react";
|
|
3
|
+
import * as react_jsx_runtime45 from "react/jsx-runtime";
|
|
4
4
|
import { AlertDialog as AlertDialog$1 } from "@base-ui/react/alert-dialog";
|
|
5
5
|
|
|
6
6
|
//#region src/components/alert-dialog.d.ts
|
|
7
7
|
declare function AlertDialog({
|
|
8
8
|
...props
|
|
9
|
-
}: AlertDialog$1.Root.Props):
|
|
9
|
+
}: AlertDialog$1.Root.Props): react_jsx_runtime45.JSX.Element;
|
|
10
10
|
declare function AlertDialogTrigger({
|
|
11
11
|
...props
|
|
12
|
-
}: AlertDialog$1.Trigger.Props):
|
|
12
|
+
}: AlertDialog$1.Trigger.Props): react_jsx_runtime45.JSX.Element;
|
|
13
13
|
declare function AlertDialogPortal({
|
|
14
14
|
...props
|
|
15
|
-
}: AlertDialog$1.Portal.Props):
|
|
15
|
+
}: AlertDialog$1.Portal.Props): react_jsx_runtime45.JSX.Element;
|
|
16
16
|
declare function AlertDialogOverlay({
|
|
17
17
|
className,
|
|
18
18
|
...props
|
|
19
|
-
}: AlertDialog$1.Backdrop.Props):
|
|
19
|
+
}: AlertDialog$1.Backdrop.Props): react_jsx_runtime45.JSX.Element;
|
|
20
20
|
declare function AlertDialogContent({
|
|
21
21
|
className,
|
|
22
22
|
size,
|
|
23
23
|
...props
|
|
24
24
|
}: AlertDialog$1.Popup.Props & {
|
|
25
25
|
size?: "default" | "sm";
|
|
26
|
-
}):
|
|
26
|
+
}): react_jsx_runtime45.JSX.Element;
|
|
27
27
|
declare function AlertDialogHeader({
|
|
28
28
|
className,
|
|
29
29
|
...props
|
|
30
|
-
}: React$1.ComponentProps<"div">):
|
|
30
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime45.JSX.Element;
|
|
31
31
|
declare function AlertDialogFooter({
|
|
32
32
|
className,
|
|
33
33
|
...props
|
|
34
|
-
}: React$1.ComponentProps<"div">):
|
|
34
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime45.JSX.Element;
|
|
35
35
|
declare function AlertDialogMedia({
|
|
36
36
|
className,
|
|
37
37
|
...props
|
|
38
|
-
}: React$1.ComponentProps<"div">):
|
|
38
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime45.JSX.Element;
|
|
39
39
|
declare function AlertDialogTitle({
|
|
40
40
|
className,
|
|
41
41
|
...props
|
|
42
|
-
}: React$1.ComponentProps<typeof AlertDialog$1.Title>):
|
|
42
|
+
}: React$1.ComponentProps<typeof AlertDialog$1.Title>): react_jsx_runtime45.JSX.Element;
|
|
43
43
|
declare function AlertDialogDescription({
|
|
44
44
|
className,
|
|
45
45
|
...props
|
|
46
|
-
}: React$1.ComponentProps<typeof AlertDialog$1.Description>):
|
|
46
|
+
}: React$1.ComponentProps<typeof AlertDialog$1.Description>): react_jsx_runtime45.JSX.Element;
|
|
47
47
|
declare function AlertDialogAction({
|
|
48
48
|
className,
|
|
49
49
|
...props
|
|
50
|
-
}: React$1.ComponentProps<typeof Button>):
|
|
50
|
+
}: React$1.ComponentProps<typeof Button>): react_jsx_runtime45.JSX.Element;
|
|
51
51
|
declare function AlertDialogCancel({
|
|
52
52
|
className,
|
|
53
53
|
variant,
|
|
54
54
|
size,
|
|
55
55
|
...props
|
|
56
|
-
}: AlertDialog$1.Close.Props & Pick<React$1.ComponentProps<typeof Button>, "variant" | "size">):
|
|
56
|
+
}: AlertDialog$1.Close.Props & Pick<React$1.ComponentProps<typeof Button>, "variant" | "size">): react_jsx_runtime45.JSX.Element;
|
|
57
57
|
declare const createAlertDialogHandle: typeof AlertDialog$1.createHandle;
|
|
58
58
|
type AlertDialogHandle<Payload = unknown> = AlertDialog$1.Handle<Payload>;
|
|
59
59
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert-dialog.d.ts","names":[],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAQS,WAAA;;GAA0B,aAAA,CAAqB,IAAA,CAAK,QAAK,
|
|
1
|
+
{"version":3,"file":"alert-dialog.d.ts","names":[],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAQS,WAAA;;GAA0B,aAAA,CAAqB,IAAA,CAAK,QAAK,mBAAA,CAAA,GAAA,CAAA;iBAIzD,kBAAA;;GAAiC,aAAA,CAAqB,OAAA,CAAQ,QAAK,mBAAA,CAAA,GAAA,CAAA;iBAMnE,iBAAA;;GAAgC,aAAA,CAAqB,MAAA,CAAO,QAAK,mBAAA,CAAA,GAAA,CAAA;AAZtB,iBAkB3C,kBAAA,CAhB0B;EAAA,SAAqB;EAAK,GAAA;AAAK,CAAA,EAmB/D,aAAA,CAAqB,QAAA,CAAS,KAnBiC,CAAA,EAmB5B,mBAAA,CAAA,GAAA,CAAA,OAnB4B;AAAA,iBAgCzD,kBAAA,CA5BkB;EAAe,SAAA;EAAA,IAAqB;EAAA,GAAA;AAMW,CANH,EAgCpE,aAAA,CAAqB,KAAA,CAAM,KAhC8C,GAAA;EAMnE,IAAA,CAAA,EAAA,SAAA,GAAA,IAAiB;AAAgD,CAAA,CAAA,EA4BzE,mBAAA,CAAA,GAAA,CAAA,OAtB0B;iBAuClB,iBAAA,CAtCP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyCC,OAAA,CAAM,cAzCP,CAAA,KAAA,CAAA,CAAA,EAyC4B,mBAAA,CAAA,GAAA,CAAA,OAzC5B;iBAsDO,iBAAA,CApDwB;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuD9B,OAAA,CAAM,cAvDwB,CAAA,KAAA,CAAA,CAAA,EAuDH,mBAAA,CAAA,GAAA,CAAA,OAvDG;iBAoExB,gBAAA,CApE6B;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuEnC,OAAA,CAAM,cAvE6B,CAAA,KAAA,CAAA,CAAA,EAuER,mBAAA,CAAA,GAAA,CAAA,OAvEQ;iBAoF7B,gBAAA,CApF6B;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuFnC,OAAA,CAAM,cAvF6B,CAAA,OAuFP,aAAA,CAAqB,KAvFd,CAAA,CAAA,EAuFoB,mBAAA,CAAA,GAAA,CAAA,OAvFpB;AAAA,iBAoG7B,sBAAA,CAvFkB;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0FxB,OAAA,CAAM,cA1FkB,CAAA,OA0FI,aAAA,CAAqB,WA1FzB,CAAA,CAAA,EA0FqC,mBAAA,CAAA,GAAA,CAAA,OA1FrC;iBAuGlB,iBAAA,CAtGP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyGC,OAAA,CAAM,cAzGP,CAAA,OAyG6B,MAzG7B,CAAA,CAAA,EAyGoC,mBAAA,CAAA,GAAA,CAAA,OAzGpC;iBAmHO,iBAAA,CAlHP;EAAA,SAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAuHC,aAAA,CAAqB,KAAA,CAAM,KAvH5B,GAwHA,IAxHA,CAwHK,OAAA,CAAM,cAxHX,CAAA,OAwHiC,MAxHjC,CAAA,EAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAwH6D,mBAAA,CAAA,GAAA,CAAA,OAxH7D;AAID,cA8IY,uBA9IZ,EAAA,OA8ImC,aAAA,CAAA,YA9InC;AAAA,KA+IW,iBA/IX,CAAA,UAAA,OAAA,CAAA,GAgJC,aAAA,CAAqB,MAhJtB,CAgJ6B,OAhJ7B,CAAA"}
|