@acronis-platform/shadcn-uikit 0.32.3 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/icons/dynamic-icons.js +15 -0
- package/dist/components/icons/dynamic-icons.js.map +1 -0
- package/dist/components/mode-toggle.js +14 -10
- package/dist/components/mode-toggle.js.map +1 -1
- package/dist/components/ui/accordion.js +4 -3
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/breadcrumb.js +5 -4
- package/dist/components/ui/breadcrumb.js.map +1 -1
- package/dist/components/ui/calendar.js +11 -10
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/carousel.js +14 -13
- package/dist/components/ui/carousel.js.map +1 -1
- package/dist/components/ui/checkbox.js +2 -1
- package/dist/components/ui/checkbox.js.map +1 -1
- package/dist/components/ui/chip.js +5 -4
- package/dist/components/ui/chip.js.map +1 -1
- package/dist/components/ui/combobox.js +10 -9
- package/dist/components/ui/combobox.js.map +1 -1
- package/dist/components/ui/command.d.ts +2 -2
- package/dist/components/ui/command.js +7 -6
- package/dist/components/ui/command.js.map +1 -1
- package/dist/components/ui/data-table/data-table-column-header.js +14 -13
- package/dist/components/ui/data-table/data-table-column-header.js.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.js +23 -22
- package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/ui/data-table/data-table-toolbar.js +13 -12
- package/dist/components/ui/data-table/data-table-toolbar.js.map +1 -1
- package/dist/components/ui/data-table/data-table-view-options.js +4 -3
- package/dist/components/ui/data-table/data-table-view-options.js.map +1 -1
- package/dist/components/ui/dialog.js +16 -15
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js +9 -8
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/empty.js +1 -1
- package/dist/components/ui/empty.js.map +1 -1
- package/dist/components/ui/filter.js +5 -4
- package/dist/components/ui/filter.js.map +1 -1
- package/dist/components/ui/navigation-menu.js +11 -10
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/pagination.js +14 -13
- package/dist/components/ui/pagination.js.map +1 -1
- package/dist/components/ui/radio-group.js +12 -11
- package/dist/components/ui/radio-group.js.map +1 -1
- package/dist/components/ui/resizable.js +5 -4
- package/dist/components/ui/resizable.js.map +1 -1
- package/dist/components/ui/select.js +9 -8
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/sheet.js +12 -11
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/sidebar.js +7 -6
- package/dist/components/ui/sidebar.js.map +1 -1
- package/dist/components/ui/stack.d.ts +2 -2
- package/dist/components/ui/tree.js +31 -30
- package/dist/components/ui/tree.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/shadcn-uikit-full.css +1 -1
- package/dist/shadcn-uikit.css +1 -1
- package/dist/utilities.css +1 -1
- package/package.json +1 -2
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
const o = /* @__PURE__ */ Object.assign({});
|
|
4
|
+
Object.entries(o).reduce(
|
|
5
|
+
(t, [s, c]) => {
|
|
6
|
+
const e = s.match(/\.\/svg\/(.+)\.svg\?react/);
|
|
7
|
+
if (e) {
|
|
8
|
+
const n = e[1];
|
|
9
|
+
t[n] = c.default;
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
},
|
|
13
|
+
{}
|
|
14
|
+
);
|
|
15
|
+
//# sourceMappingURL=dynamic-icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-icons.js","sources":["../../../src/components/icons/dynamic-icons.tsx"],"sourcesContent":["import React from 'react'\n\n/**\n * Dynamic icon loader using Vite's import.meta.glob\n * Automatically imports all SVG files from the svg directory\n */\n\n// Eager import - loads all icons immediately\nconst iconModules = import.meta.glob<{\n default: React.ComponentType<React.SVGProps<SVGSVGElement>>\n}>('./svg/*.svg?react', { eager: true })\n\n// Lazy import - loads icons on demand (better for large icon sets)\nconst lazyIconModules = import.meta.glob<{\n default: React.ComponentType<React.SVGProps<SVGSVGElement>>\n}>('./svg/*.svg?react')\n\n/**\n * Get icon component by name\n * @example\n * const InfoIcon = getIcon('info')\n * <InfoIcon className=\"size-4\" />\n */\nexport function getIcon(name: string): React.ComponentType<React.SVGProps<SVGSVGElement>> | null {\n const path = `./svg/${name}.svg?react`\n const module = iconModules[path]\n return module?.default || null\n}\n\n/**\n * Get all available icon names\n */\nexport function getIconNames(): string[] {\n return Object.keys(iconModules)\n .map((path) => {\n const match = path.match(/\\.\\/svg\\/(.+)\\.svg\\?react/)\n return match ? match[1] : ''\n })\n .filter(Boolean)\n}\n\n/**\n * Dynamic Icon component that loads icons by name\n */\ninterface DynamicIconProps extends React.SVGProps<SVGSVGElement> {\n name: string\n className?: string\n}\n\nexport function DynamicIcon({ name, className = 'size-4', ...props }: DynamicIconProps) {\n const IconComponent = getIcon(name)\n\n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found`)\n return null\n }\n\n return <IconComponent className={className} {...props} />\n}\n\n/**\n * Lazy loading icon component\n */\nexport function LazyIcon({ name, className = 'size-4', ...props }: DynamicIconProps) {\n const [IconComponent, setIconComponent] = React.useState<React.ComponentType<\n React.SVGProps<SVGSVGElement>\n > | null>(null)\n\n React.useEffect(() => {\n const path = `./svg/${name}.svg?react`\n const loader = lazyIconModules[path]\n\n if (loader) {\n loader().then((module) => {\n setIconComponent(() => module.default)\n })\n }\n }, [name])\n\n if (!IconComponent) {\n return <div className={className} /> // Placeholder\n }\n\n return <IconComponent className={className} {...props} />\n}\n\n/**\n * Export all icons as a map for easy access\n */\nexport const Icons = Object.entries(iconModules).reduce(\n (acc, [path, module]) => {\n const match = path.match(/\\.\\/svg\\/(.+)\\.svg\\?react/)\n if (match) {\n const name = match[1]\n acc[name] = module.default\n }\n return acc\n },\n {} as Record<string, React.ComponentType<React.SVGProps<SVGSVGElement>>>\n)\n"],"names":["iconModules","acc","path","module","match","name"],"mappings":";;AAQA,MAAMA,IAAc,uBAAA,OAAA,EAAA;AAiFC,OAAO,QAAQA,CAAW,EAAE;AAAA,EAC/C,CAACC,GAAK,CAACC,GAAMC,CAAM,MAAM;AACvB,UAAMC,IAAQF,EAAK,MAAM,2BAA2B;AACpD,QAAIE,GAAO;AACT,YAAMC,IAAOD,EAAM,CAAC;AACpB,MAAAH,EAAII,CAAI,IAAIF,EAAO;AAAA,IACrB;AACA,WAAOF;AAAA,EACT;AAAA,EACA,CAAA;AACF;"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { jsxs as o, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { Button as
|
|
4
|
-
import { DropdownMenu as
|
|
2
|
+
import { cn as l } from "../lib/utils.js";
|
|
3
|
+
import { Button as t } from "./ui/button.js";
|
|
4
|
+
import { DropdownMenu as s, DropdownMenuTrigger as i, DropdownMenuContent as a, DropdownMenuItem as n } from "./ui/dropdown-menu.js";
|
|
5
5
|
import { useTheme as c } from "./theme-provider.js";
|
|
6
|
-
|
|
6
|
+
const m = ({ className: r }) => /* @__PURE__ */ e("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", fill: "currentColor", className: l("size-4 shrink-0", r), children: /* @__PURE__ */ e("path", { d: "M14.5 10.29A7.5 7.5 0 0 1 5.71 1.5 6 6 0 1 0 14.5 10.29z" }) }), h = ({ className: r }) => /* @__PURE__ */ o("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", fill: "currentColor", className: l("size-4 shrink-0", r), children: [
|
|
7
|
+
/* @__PURE__ */ e("circle", { cx: "8", cy: "8", r: "3" }),
|
|
8
|
+
/* @__PURE__ */ e("path", { d: "M8 1v2M8 13v2M3.05 3.05l1.41 1.41M11.54 11.54l1.41 1.41M1 8h2M13 8h2M3.05 12.95l1.41-1.41M11.54 4.46l1.41-1.41" })
|
|
9
|
+
] });
|
|
10
|
+
function u() {
|
|
7
11
|
const { setTheme: r } = c();
|
|
8
|
-
return /* @__PURE__ */ o(
|
|
9
|
-
/* @__PURE__ */ o(
|
|
10
|
-
/* @__PURE__ */ e(
|
|
11
|
-
/* @__PURE__ */ e(
|
|
12
|
+
return /* @__PURE__ */ o(s, { children: [
|
|
13
|
+
/* @__PURE__ */ o(i, { render: /* @__PURE__ */ e(t, { variant: "outline", size: "icon" }), children: [
|
|
14
|
+
/* @__PURE__ */ e(h, { className: "h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90" }),
|
|
15
|
+
/* @__PURE__ */ e(m, { className: "absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0" }),
|
|
12
16
|
/* @__PURE__ */ e("span", { className: "sr-only", children: "Toggle theme" })
|
|
13
17
|
] }),
|
|
14
|
-
/* @__PURE__ */ o(
|
|
18
|
+
/* @__PURE__ */ o(a, { align: "end", children: [
|
|
15
19
|
/* @__PURE__ */ e(n, { onClick: () => r("light"), children: "Light" }),
|
|
16
20
|
/* @__PURE__ */ e(n, { onClick: () => r("dark"), children: "Dark" }),
|
|
17
21
|
/* @__PURE__ */ e(n, { onClick: () => r("system"), children: "System" })
|
|
@@ -19,6 +23,6 @@ function k() {
|
|
|
19
23
|
] });
|
|
20
24
|
}
|
|
21
25
|
export {
|
|
22
|
-
|
|
26
|
+
u as ModeToggle
|
|
23
27
|
};
|
|
24
28
|
//# sourceMappingURL=mode-toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode-toggle.js","sources":["../../src/components/mode-toggle.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"mode-toggle.js","sources":["../../src/components/mode-toggle.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport { Button } from '@/components/ui/button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu'\nimport { useTheme } from '@/components/theme-provider'\n\n// TODO: Replace with MoonIcon from @/components/icons once moon--16.svg is added to the catalog\nconst MoonIcon = ({ className }: { className?: string }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" className={cn('size-4 shrink-0', className)}>\n <path d=\"M14.5 10.29A7.5 7.5 0 0 1 5.71 1.5 6 6 0 1 0 14.5 10.29z\" />\n </svg>\n)\n\n// TODO: Replace with SunIcon from @/components/icons once sun--16.svg is added to the catalog\nconst SunIcon = ({ className }: { className?: string }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" className={cn('size-4 shrink-0', className)}>\n <circle cx=\"8\" cy=\"8\" r=\"3\" />\n <path d=\"M8 1v2M8 13v2M3.05 3.05l1.41 1.41M11.54 11.54l1.41 1.41M1 8h2M13 8h2M3.05 12.95l1.41-1.41M11.54 4.46l1.41-1.41\" />\n </svg>\n)\n\nexport function ModeToggle() {\n const { setTheme } = useTheme()\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger render={<Button variant=\"outline\" size=\"icon\" />}>\n <SunIcon className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n <MoonIcon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n <span className=\"sr-only\">Toggle theme</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme('light')}>Light</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('dark')}>Dark</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('system')}>System</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n"],"names":["MoonIcon","className","jsx","cn","SunIcon","ModeToggle","setTheme","useTheme","DropdownMenu","jsxs","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuItem"],"mappings":";;;;;AAWA,MAAMA,IAAW,CAAC,EAAE,WAAAC,EAAA,MAClB,gBAAAC,EAAC,OAAA,EAAI,OAAM,8BAA6B,SAAQ,aAAY,MAAK,gBAAe,WAAWC,EAAG,mBAAmBF,CAAS,GACxH,UAAA,gBAAAC,EAAC,QAAA,EAAK,GAAE,2DAAA,CAA2D,EAAA,CACrE,GAIIE,IAAU,CAAC,EAAE,WAAAH,EAAA,wBAChB,OAAA,EAAI,OAAM,8BAA6B,SAAQ,aAAY,MAAK,gBAAe,WAAWE,EAAG,mBAAmBF,CAAS,GACxH,UAAA;AAAA,EAAA,gBAAAC,EAAC,YAAO,IAAG,KAAI,IAAG,KAAI,GAAE,KAAI;AAAA,EAC5B,gBAAAA,EAAC,QAAA,EAAK,GAAE,iHAAA,CAAiH;AAAA,GAC3H;AAGK,SAASG,IAAa;AAC3B,QAAM,EAAE,UAAAC,EAAA,IAAaC,EAAA;AAErB,2BACGC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAoB,QAAQ,gBAAAR,EAACS,GAAA,EAAO,SAAQ,WAAU,MAAK,QAAO,GACjE,UAAA;AAAA,MAAA,gBAAAT,EAACE,GAAA,EAAQ,WAAU,uFAAA,CAAuF;AAAA,MAC1G,gBAAAF,EAACF,GAAA,EAAS,WAAU,+FAAA,CAA+F;AAAA,MACnH,gBAAAE,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,eAAA,CAAY;AAAA,IAAA,GACxC;AAAA,IACA,gBAAAO,EAACG,GAAA,EAAoB,OAAM,OACzB,UAAA;AAAA,MAAA,gBAAAV,EAACW,KAAiB,SAAS,MAAMP,EAAS,OAAO,GAAG,UAAA,SAAK;AAAA,wBACxDO,GAAA,EAAiB,SAAS,MAAMP,EAAS,MAAM,GAAG,UAAA,QAAI;AAAA,wBACtDO,GAAA,EAAiB,SAAS,MAAMP,EAAS,QAAQ,GAAG,UAAA,SAAA,CAAM;AAAA,IAAA,EAAA,CAC7D;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { jsx as t, jsxs as a } from "react/jsx-runtime";
|
|
2
2
|
import * as n from "react";
|
|
3
|
-
import { ChevronDown as s } from "lucide-react";
|
|
4
3
|
import { cn as c } from "../../lib/utils.js";
|
|
4
|
+
import "../icons/dynamic-icons.js";
|
|
5
|
+
import { ChevronDownIcon as s } from "../icons/auto-generated.js";
|
|
5
6
|
import { AccordionItem as d } from "../../node_modules/.pnpm/@base-ui_react@1.1.0_@types_react@18.3.27_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@base-ui/react/esm/accordion/item/AccordionItem.js";
|
|
6
7
|
import { AccordionHeader as m } from "../../node_modules/.pnpm/@base-ui_react@1.1.0_@types_react@18.3.27_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@base-ui/react/esm/accordion/header/AccordionHeader.js";
|
|
7
8
|
import { AccordionTrigger as f } from "../../node_modules/.pnpm/@base-ui_react@1.1.0_@types_react@18.3.27_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@base-ui/react/esm/accordion/trigger/AccordionTrigger.js";
|
|
8
9
|
import { AccordionPanel as l } from "../../node_modules/.pnpm/@base-ui_react@1.1.0_@types_react@18.3.27_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@base-ui/react/esm/accordion/panel/AccordionPanel.js";
|
|
9
10
|
import { AccordionRoot as p } from "../../node_modules/.pnpm/@base-ui_react@1.1.0_@types_react@18.3.27_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@base-ui/react/esm/accordion/root/AccordionRoot.js";
|
|
10
|
-
const
|
|
11
|
+
const T = p, A = n.forwardRef(({ className: o, ...r }, e) => /* @__PURE__ */ t(d, { ref: e, className: c("border-b", o), ...r }));
|
|
11
12
|
A.displayName = "AccordionItem";
|
|
12
13
|
const g = n.forwardRef(({ className: o, children: r, ...e }, i) => (
|
|
13
14
|
// Header is required by Base UI — it provides the accessible heading role
|
|
@@ -43,7 +44,7 @@ const h = n.forwardRef(({ className: o, children: r, ...e }, i) => (
|
|
|
43
44
|
));
|
|
44
45
|
h.displayName = "AccordionContent";
|
|
45
46
|
export {
|
|
46
|
-
|
|
47
|
+
T as Accordion,
|
|
47
48
|
h as AccordionContent,
|
|
48
49
|
A as AccordionItem,
|
|
49
50
|
g as AccordionTrigger
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","sources":["../../../src/components/ui/accordion.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { Accordion } from '@base-ui/react'\nimport {
|
|
1
|
+
{"version":3,"file":"accordion.js","sources":["../../../src/components/ui/accordion.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { Accordion } from '@base-ui/react'\nimport { ChevronDownIcon } from '@/components/icons'\n\nimport { cn } from '@/lib/utils'\n\nconst AccordionRoot = Accordion.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof Accordion.Item>,\n React.ComponentPropsWithoutRef<typeof Accordion.Item>\n>(({ className, ...props }, ref) => (\n <Accordion.Item ref={ref} className={cn('border-b', className)} {...props} />\n))\nAccordionItem.displayName = 'AccordionItem'\n\nconst AccordionTrigger = React.forwardRef<\n // Base UI Trigger forwards ref to HTMLElement; button is the concrete element\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<typeof Accordion.Trigger>\n>(({ className, children, ...props }, ref) => (\n // Header is required by Base UI — it provides the accessible heading role\n <Accordion.Header className=\"flex\">\n <Accordion.Trigger\n ref={ref as React.Ref<HTMLElement>}\n className={cn(\n // data-open replaces data-[state=open] in Base UI\n 'flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-open]>svg]:rotate-180',\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </Accordion.Trigger>\n </Accordion.Header>\n))\nAccordionTrigger.displayName = 'AccordionTrigger'\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof Accordion.Panel>,\n React.ComponentPropsWithoutRef<typeof Accordion.Panel>\n>(({ className, children, ...props }, ref) => (\n // Accordion.Panel replaces Accordion.Content; data-open/data-closed replace data-[state=open/closed]\n <Accordion.Panel\n ref={ref}\n className=\"overflow-hidden text-sm data-[starting-style]:h-0 data-[ending-style]:h-0 transition-[height] duration-200 ease-out\"\n {...props}\n >\n <div className={cn('pb-4 pt-0', className)}>{children}</div>\n </Accordion.Panel>\n))\nAccordionContent.displayName = 'AccordionContent'\n\nexport { AccordionRoot as Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"names":["AccordionRoot","Accordion.Root","AccordionItem","React","className","props","ref","jsx","Accordion.Item","cn","AccordionTrigger","children","Accordion.Header","jsxs","Accordion.Trigger","ChevronDownIcon","AccordionContent","Accordion.Panel"],"mappings":";;;;;;;;;;AAQA,MAAMA,IAAgBC,GAEhBC,IAAgBC,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC,EAACC,GAAA,EAAe,KAAAF,GAAU,WAAWG,EAAG,YAAYL,CAAS,GAAI,GAAGC,GAAO,CAC5E;AACDH,EAAc,cAAc;AAE5B,MAAMQ,IAAmBP,EAAM,WAI7B,CAAC,EAAE,WAAAC,GAAW,UAAAO,GAAU,GAAGN,EAAA,GAASC;AAAA;AAAA,EAEpC,gBAAAC,EAACK,GAAA,EAAiB,WAAU,QAC1B,UAAA,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,KAAAR;AAAA,MACA,WAAWG;AAAA;AAAA,QAET;AAAA,QACAL;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAM;AAAA,QACD,gBAAAJ,EAACQ,GAAA,EAAgB,WAAU,qDAAA,CAAqD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,EAClF,CACF;AAAA,CACD;AACDL,EAAiB,cAAc;AAE/B,MAAMM,IAAmBb,EAAM,WAG7B,CAAC,EAAE,WAAAC,GAAW,UAAAO,GAAU,GAAGN,EAAA,GAASC;AAAA;AAAA,EAEpC,gBAAAC;AAAA,IAACU;AAAAA,IAAA;AAAA,MACC,KAAAX;AAAA,MACA,WAAU;AAAA,MACT,GAAGD;AAAA,MAEJ,4BAAC,OAAA,EAAI,WAAWI,EAAG,aAAaL,CAAS,GAAI,UAAAO,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAAA,CAEzD;AACDK,EAAiB,cAAc;"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as s, jsxs as o } from "react/jsx-runtime";
|
|
2
2
|
import * as i from "react";
|
|
3
|
-
import { Slot as
|
|
4
|
-
import { ChevronRight as c, MoreHorizontal as n } from "lucide-react";
|
|
3
|
+
import { Slot as c } from "@radix-ui/react-slot";
|
|
5
4
|
import { cn as t } from "../../lib/utils.js";
|
|
5
|
+
import "../icons/dynamic-icons.js";
|
|
6
|
+
import { ChevronRightIcon as l, EllipsisHIcon as n } from "../icons/auto-generated.js";
|
|
6
7
|
const d = i.forwardRef(({ ...e }, r) => /* @__PURE__ */ s("nav", { ref: r, "aria-label": "breadcrumb", ...e }));
|
|
7
8
|
d.displayName = "Breadcrumb";
|
|
8
9
|
const p = i.forwardRef(
|
|
@@ -14,7 +15,7 @@ const f = i.forwardRef(
|
|
|
14
15
|
);
|
|
15
16
|
f.displayName = "BreadcrumbItem";
|
|
16
17
|
const u = i.forwardRef(({ asChild: e, className: r, ...a }, m) => /* @__PURE__ */ s(
|
|
17
|
-
e ?
|
|
18
|
+
e ? c : "a",
|
|
18
19
|
{
|
|
19
20
|
ref: m,
|
|
20
21
|
className: t(
|
|
@@ -46,7 +47,7 @@ const N = ({ children: e, className: r, ...a }) => /* @__PURE__ */ s(
|
|
|
46
47
|
"aria-hidden": "true",
|
|
47
48
|
className: t("[&>svg]:w-4 [&>svg]:h-4 [&>svg]:text-[#2668C5]", r),
|
|
48
49
|
...a,
|
|
49
|
-
children: e ?? /* @__PURE__ */ s(
|
|
50
|
+
children: e ?? /* @__PURE__ */ s(l, {})
|
|
50
51
|
}
|
|
51
52
|
);
|
|
52
53
|
N.displayName = "BreadcrumbSeparator";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumb.js","sources":["../../../src/components/ui/breadcrumb.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport {
|
|
1
|
+
{"version":3,"file":"breadcrumb.js","sources":["../../../src/components/ui/breadcrumb.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { ChevronRightIcon, EllipsisHIcon } from '@/components/icons'\n\nimport { cn } from '@/lib/utils'\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<'nav'> & {\n separator?: React.ReactNode\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumb.displayName = 'Breadcrumb'\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\n ({ className, ...props }, ref) => (\n <ol ref={ref} className={cn('flex flex-wrap items-center gap-4', className)} {...props} />\n )\n)\nBreadcrumbList.displayName = 'BreadcrumbList'\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn('inline-flex items-center gap-2 h-8', className)} {...props} />\n )\n)\nBreadcrumbItem.displayName = 'BreadcrumbItem'\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<'a'> & {\n asChild?: boolean\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n ref={ref}\n className={cn(\n 'text-[#2668C5] font-semibold text-sm leading-6 transition-colors hover:opacity-80',\n className\n )}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('font-semibold text-sm leading-6 text-[#243143]', className)}\n {...props}\n />\n )\n)\nBreadcrumbPage.displayName = 'BreadcrumbPage'\n\nconst BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'li'>) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('[&>svg]:w-4 [&>svg]:h-4 [&>svg]:text-[#2668C5]', className)}\n {...props}\n >\n {children ?? <ChevronRightIcon />}\n </li>\n)\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator'\n\nconst BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('flex h-9 w-9 items-center justify-center', className)}\n {...props}\n >\n <EllipsisHIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = 'BreadcrumbElipssis'\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n"],"names":["Breadcrumb","React","props","ref","jsx","BreadcrumbList","className","cn","BreadcrumbItem","BreadcrumbLink","asChild","Slot","BreadcrumbPage","BreadcrumbSeparator","children","ChevronRightIcon","BreadcrumbEllipsis","jsxs","EllipsisHIcon"],"mappings":";;;;;;AAMA,MAAMA,IAAaC,EAAM,WAKvB,CAAC,EAAE,GAAGC,EAAA,GAASC,MAAQ,gBAAAC,EAAC,SAAI,KAAAD,GAAU,cAAW,cAAc,GAAGD,GAAO,CAAE;AAC7EF,EAAW,cAAc;AAEzB,MAAMK,IAAiBJ,EAAM;AAAA,EAC3B,CAAC,EAAE,WAAAK,GAAW,GAAGJ,EAAA,GAASC,MACxB,gBAAAC,EAAC,MAAA,EAAG,KAAAD,GAAU,WAAWI,EAAG,qCAAqCD,CAAS,GAAI,GAAGJ,EAAA,CAAO;AAE5F;AACAG,EAAe,cAAc;AAE7B,MAAMG,IAAiBP,EAAM;AAAA,EAC3B,CAAC,EAAE,WAAAK,GAAW,GAAGJ,EAAA,GAASC,MACxB,gBAAAC,EAAC,MAAA,EAAG,KAAAD,GAAU,WAAWI,EAAG,sCAAsCD,CAAS,GAAI,GAAGJ,EAAA,CAAO;AAE7F;AACAM,EAAe,cAAc;AAE7B,MAAMC,IAAiBR,EAAM,WAK3B,CAAC,EAAE,SAAAS,GAAS,WAAAJ,GAAW,GAAGJ,EAAA,GAASC,MAIjC,gBAAAC;AAAA,EAHWM,IAAUC,IAAO;AAAA,EAG3B;AAAA,IACC,KAAAR;AAAA,IACA,WAAWI;AAAA,MACT;AAAA,MACAD;AAAA,IAAA;AAAA,IAED,GAAGJ;AAAA,EAAA;AAAA,CAGT;AACDO,EAAe,cAAc;AAE7B,MAAMG,IAAiBX,EAAM;AAAA,EAC3B,CAAC,EAAE,WAAAK,GAAW,GAAGJ,EAAA,GAASC,MACxB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,MAAK;AAAA,MACL,iBAAc;AAAA,MACd,gBAAa;AAAA,MACb,WAAWI,EAAG,kDAAkDD,CAAS;AAAA,MACxE,GAAGJ;AAAA,IAAA;AAAA,EAAA;AAGV;AACAU,EAAe,cAAc;AAE7B,MAAMC,IAAsB,CAAC,EAAE,UAAAC,GAAU,WAAAR,GAAW,GAAGJ,QACrD,gBAAAE;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,eAAY;AAAA,IACZ,WAAWG,EAAG,kDAAkDD,CAAS;AAAA,IACxE,GAAGJ;AAAA,IAEH,UAAAY,uBAAaC,GAAA,CAAA,CAAiB;AAAA,EAAA;AACjC;AAEFF,EAAoB,cAAc;AAElC,MAAMG,IAAqB,CAAC,EAAE,WAAAV,GAAW,GAAGJ,QAC1C,gBAAAe;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,eAAY;AAAA,IACZ,WAAWV,EAAG,4CAA4CD,CAAS;AAAA,IAClE,GAAGJ;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAE,EAACc,GAAA,EAAc,WAAU,UAAA,CAAU;AAAA,MACnC,gBAAAd,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,OAAA,CAAI;AAAA,IAAA;AAAA,EAAA;AAChC;AAEFY,EAAmB,cAAc;"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
-
import * as
|
|
3
|
-
import { ChevronLeftIcon as b, ChevronRightIcon as w, ChevronDownIcon as h } from "lucide-react";
|
|
2
|
+
import * as g from "react";
|
|
4
3
|
import { cn as e } from "../../lib/utils.js";
|
|
4
|
+
import "../icons/dynamic-icons.js";
|
|
5
|
+
import { ChevronLeftIcon as b, ChevronRightIcon as w, ChevronDownIcon as h } from "../icons/auto-generated.js";
|
|
5
6
|
import { buttonVariants as f, Button as v } from "./button.js";
|
|
6
7
|
import { getDefaultClassNames as p } from "../../node_modules/.pnpm/react-day-picker@9.13.0_react@18.3.1/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js";
|
|
7
8
|
import { DayPicker as _ } from "../../node_modules/.pnpm/react-day-picker@9.13.0_react@18.3.1/node_modules/react-day-picker/dist/esm/DayPicker.js";
|
|
8
|
-
function
|
|
9
|
+
function S({
|
|
9
10
|
className: i,
|
|
10
|
-
classNames:
|
|
11
|
+
classNames: m,
|
|
11
12
|
showOutsideDays: a = !0,
|
|
12
13
|
captionLayout: l = "label",
|
|
13
14
|
buttonVariant: s = "ghost",
|
|
@@ -96,7 +97,7 @@ function R({
|
|
|
96
97
|
),
|
|
97
98
|
disabled: e("text-muted-foreground opacity-50", t.disabled),
|
|
98
99
|
hidden: e("invisible", t.hidden),
|
|
99
|
-
...
|
|
100
|
+
...m
|
|
100
101
|
},
|
|
101
102
|
components: {
|
|
102
103
|
Root: ({ className: r, rootRef: d, ...o }) => /* @__PURE__ */ n("div", { "data-slot": "calendar", ref: d, className: e(r), ...o }),
|
|
@@ -111,12 +112,12 @@ function R({
|
|
|
111
112
|
}
|
|
112
113
|
function y({
|
|
113
114
|
className: i,
|
|
114
|
-
day:
|
|
115
|
+
day: m,
|
|
115
116
|
modifiers: a,
|
|
116
117
|
...l
|
|
117
118
|
}) {
|
|
118
|
-
const s = p(), u =
|
|
119
|
-
return
|
|
119
|
+
const s = p(), u = g.useRef(null);
|
|
120
|
+
return g.useEffect(() => {
|
|
120
121
|
var c;
|
|
121
122
|
a.focused && ((c = u.current) == null || c.focus());
|
|
122
123
|
}, [a.focused]), /* @__PURE__ */ n(
|
|
@@ -125,7 +126,7 @@ function y({
|
|
|
125
126
|
ref: u,
|
|
126
127
|
variant: "ghost",
|
|
127
128
|
size: "icon",
|
|
128
|
-
"data-day":
|
|
129
|
+
"data-day": m.date.toLocaleDateString(),
|
|
129
130
|
"data-selected-single": a.selected && !a.range_start && !a.range_end && !a.range_middle,
|
|
130
131
|
"data-range-start": a.range_start,
|
|
131
132
|
"data-range-end": a.range_end,
|
|
@@ -140,7 +141,7 @@ function y({
|
|
|
140
141
|
);
|
|
141
142
|
}
|
|
142
143
|
export {
|
|
143
|
-
|
|
144
|
+
S as Calendar,
|
|
144
145
|
y as CalendarDayButton
|
|
145
146
|
};
|
|
146
147
|
//# sourceMappingURL=calendar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sources":["../../../src/components/ui/calendar.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react'\nimport { DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker'\n\nimport { cn } from '@/lib/utils'\nimport { Button, buttonVariants } from '@/components/ui/button'\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant']\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) => date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn('relative flex flex-col gap-4 md:flex-row', defaultClassNames.months),\n month: cn('flex w-full flex-col gap-4', defaultClassNames.month),\n nav: cn(\n 'absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1',\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[var(--cell-size)] w-[var(--cell-size)] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[var(--cell-size)] w-[var(--cell-size)] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_next\n ),\n month_caption: cn(\n 'flex h-[var(--cell-size)] w-full items-center justify-center px-[var(--cell-size)]',\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n 'flex h-[var(--cell-size)] w-full items-center justify-center gap-1.5 text-sm font-medium',\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n 'has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border',\n defaultClassNames.dropdown_root\n ),\n dropdown: cn('bg-popover absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : '[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5',\n defaultClassNames.caption_label\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal',\n defaultClassNames.weekday\n ),\n week: cn('mt-2 flex w-full', defaultClassNames.week),\n week_number_header: cn('w-[var(--cell-size)] select-none', defaultClassNames.week_number_header),\n week_number: cn(\n 'text-muted-foreground select-none text-[0.8rem]',\n defaultClassNames.week_number\n ),\n day: cn(\n 'group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md',\n defaultClassNames.day\n ),\n range_start: cn('bg-accent rounded-l-md', defaultClassNames.range_start),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('bg-accent rounded-r-md', defaultClassNames.range_end),\n today: cn(\n 'font-semibold underline rounded-md data-[selected=true]:rounded-none data-[selected=true]:no-underline',\n defaultClassNames.today\n ),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n defaultClassNames.outside\n ),\n disabled: cn('text-muted-foreground opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return <ChevronLeftIcon className={cn('size-4', className)} {...props} />\n }\n\n if (orientation === 'right') {\n return <ChevronRightIcon className={cn('size-4', className)} {...props} />\n }\n\n return <ChevronDownIcon className={cn('size-4', className)} {...props} />\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-[var(--cell-size)] items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-primary data-[selected-single=true]:text-white data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-white data-[range-end=true]:bg-primary data-[range-end=true]:text-white group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[var(--cell-size)] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n"],"names":["Calendar","className","classNames","showOutsideDays","captionLayout","buttonVariant","formatters","components","props","defaultClassNames","getDefaultClassNames","jsx","DayPicker","cn","date","buttonVariants","rootRef","orientation","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","CalendarDayButton","children","day","modifiers","ref","React","_a","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calendar.js","sources":["../../../src/components/ui/calendar.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from '@/components/icons'\nimport { DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker'\n\nimport { cn } from '@/lib/utils'\nimport { Button, buttonVariants } from '@/components/ui/button'\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant']\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) => date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn('relative flex flex-col gap-4 md:flex-row', defaultClassNames.months),\n month: cn('flex w-full flex-col gap-4', defaultClassNames.month),\n nav: cn(\n 'absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1',\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[var(--cell-size)] w-[var(--cell-size)] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[var(--cell-size)] w-[var(--cell-size)] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_next\n ),\n month_caption: cn(\n 'flex h-[var(--cell-size)] w-full items-center justify-center px-[var(--cell-size)]',\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n 'flex h-[var(--cell-size)] w-full items-center justify-center gap-1.5 text-sm font-medium',\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n 'has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border',\n defaultClassNames.dropdown_root\n ),\n dropdown: cn('bg-popover absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : '[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5',\n defaultClassNames.caption_label\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal',\n defaultClassNames.weekday\n ),\n week: cn('mt-2 flex w-full', defaultClassNames.week),\n week_number_header: cn('w-[var(--cell-size)] select-none', defaultClassNames.week_number_header),\n week_number: cn(\n 'text-muted-foreground select-none text-[0.8rem]',\n defaultClassNames.week_number\n ),\n day: cn(\n 'group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md',\n defaultClassNames.day\n ),\n range_start: cn('bg-accent rounded-l-md', defaultClassNames.range_start),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('bg-accent rounded-r-md', defaultClassNames.range_end),\n today: cn(\n 'font-semibold underline rounded-md data-[selected=true]:rounded-none data-[selected=true]:no-underline',\n defaultClassNames.today\n ),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n defaultClassNames.outside\n ),\n disabled: cn('text-muted-foreground opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return <ChevronLeftIcon className={cn('size-4', className)} {...props} />\n }\n\n if (orientation === 'right') {\n return <ChevronRightIcon className={cn('size-4', className)} {...props} />\n }\n\n return <ChevronDownIcon className={cn('size-4', className)} {...props} />\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-[var(--cell-size)] items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-primary data-[selected-single=true]:text-white data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-white data-[range-end=true]:bg-primary data-[range-end=true]:text-white group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[var(--cell-size)] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n"],"names":["Calendar","className","classNames","showOutsideDays","captionLayout","buttonVariant","formatters","components","props","defaultClassNames","getDefaultClassNames","jsx","DayPicker","cn","date","buttonVariants","rootRef","orientation","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","CalendarDayButton","children","day","modifiers","ref","React","_a","Button"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as s, jsxs as x } from "react/jsx-runtime";
|
|
2
2
|
import * as r from "react";
|
|
3
3
|
import k from "../../node_modules/.pnpm/embla-carousel-react@8.6.0_react@18.3.1/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js";
|
|
4
|
-
import { ArrowLeft as z, ArrowRight as g } from "lucide-react";
|
|
5
4
|
import { cn as m } from "../../lib/utils.js";
|
|
5
|
+
import "../icons/dynamic-icons.js";
|
|
6
|
+
import { ArrowLeftIcon as z, ArrowRightIcon as g } from "../icons/auto-generated.js";
|
|
6
7
|
import { Button as w } from "./button.js";
|
|
7
8
|
const v = r.createContext(null);
|
|
8
9
|
function C() {
|
|
@@ -11,15 +12,15 @@ function C() {
|
|
|
11
12
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
12
13
|
return o;
|
|
13
14
|
}
|
|
14
|
-
const
|
|
15
|
+
const I = r.forwardRef(({ orientation: o = "horizontal", opts: l, setApi: t, plugins: a, className: c, children: i, ...u }, f) => {
|
|
15
16
|
const [y, e] = k(
|
|
16
17
|
{
|
|
17
18
|
...l,
|
|
18
19
|
axis: o === "horizontal" ? "x" : "y"
|
|
19
20
|
},
|
|
20
21
|
a
|
|
21
|
-
), [b,
|
|
22
|
-
n && (
|
|
22
|
+
), [b, p] = r.useState(!1), [P, S] = r.useState(!1), d = r.useCallback((n) => {
|
|
23
|
+
n && (p(n.canScrollPrev()), S(n.canScrollNext()));
|
|
23
24
|
}, []), h = r.useCallback(() => {
|
|
24
25
|
e == null || e.scrollPrev();
|
|
25
26
|
}, [e]), N = r.useCallback(() => {
|
|
@@ -48,7 +49,7 @@ const D = r.forwardRef(({ orientation: o = "horizontal", opts: l, setApi: t, plu
|
|
|
48
49
|
scrollPrev: h,
|
|
49
50
|
scrollNext: N,
|
|
50
51
|
canScrollPrev: b,
|
|
51
|
-
canScrollNext:
|
|
52
|
+
canScrollNext: P
|
|
52
53
|
},
|
|
53
54
|
children: /* @__PURE__ */ s(
|
|
54
55
|
"div",
|
|
@@ -65,8 +66,8 @@ const D = r.forwardRef(({ orientation: o = "horizontal", opts: l, setApi: t, plu
|
|
|
65
66
|
}
|
|
66
67
|
);
|
|
67
68
|
});
|
|
68
|
-
|
|
69
|
-
const
|
|
69
|
+
I.displayName = "Carousel";
|
|
70
|
+
const D = r.forwardRef(
|
|
70
71
|
({ className: o, ...l }, t) => {
|
|
71
72
|
const { carouselRef: a, orientation: c } = C();
|
|
72
73
|
return /* @__PURE__ */ s("div", { ref: a, className: "overflow-hidden", children: /* @__PURE__ */ s(
|
|
@@ -83,8 +84,8 @@ const E = r.forwardRef(
|
|
|
83
84
|
) });
|
|
84
85
|
}
|
|
85
86
|
);
|
|
86
|
-
|
|
87
|
-
const
|
|
87
|
+
D.displayName = "CarouselContent";
|
|
88
|
+
const E = r.forwardRef(
|
|
88
89
|
({ className: o, ...l }, t) => {
|
|
89
90
|
const { orientation: a } = C();
|
|
90
91
|
return /* @__PURE__ */ s(
|
|
@@ -103,7 +104,7 @@ const I = r.forwardRef(
|
|
|
103
104
|
);
|
|
104
105
|
}
|
|
105
106
|
);
|
|
106
|
-
|
|
107
|
+
E.displayName = "CarouselItem";
|
|
107
108
|
const j = r.forwardRef(
|
|
108
109
|
({ className: o, variant: l = "outline", size: t = "icon", ...a }, c) => {
|
|
109
110
|
const { orientation: i, scrollPrev: u, canScrollPrev: f } = C();
|
|
@@ -157,9 +158,9 @@ const A = r.forwardRef(
|
|
|
157
158
|
);
|
|
158
159
|
A.displayName = "CarouselNext";
|
|
159
160
|
export {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
I as Carousel,
|
|
162
|
+
D as CarouselContent,
|
|
163
|
+
E as CarouselItem,
|
|
163
164
|
A as CarouselNext,
|
|
164
165
|
j as CarouselPrevious
|
|
165
166
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.js","sources":["../../../src/components/ui/carousel.tsx"],"sourcesContent":["import * as React from 'react'\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'\nimport { ArrowLeft, ArrowRight } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\nimport { Button } from '@/components/ui/button'\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: 'horizontal' | 'vertical'\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />')\n }\n\n return context\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(({ orientation = 'horizontal', opts, setApi, plugins, className, children, ...props }, ref) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return\n }\n\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === 'ArrowRight') {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) {\n return\n }\n\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) {\n return\n }\n\n onSelect(api)\n api.on('reInit', onSelect)\n api.on('select', onSelect)\n\n return () => {\n api?.off('select', onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn('relative', className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n})\nCarousel.displayName = 'Carousel'\n\nconst CarouselContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n className\n )}\n {...props}\n />\n </div>\n )\n }\n)\nCarouselContent.displayName = 'CarouselContent'\n\nconst CarouselItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { orientation } = useCarousel()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className\n )}\n {...props}\n />\n )\n }\n)\nCarouselItem.displayName = 'CarouselItem'\n\nconst CarouselPrevious = React.forwardRef<HTMLButtonElement, React.ComponentProps<typeof Button>>(\n ({ className, variant = 'outline', size = 'icon', ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'absolute h-8 w-8 rounded-full',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n }\n)\nCarouselPrevious.displayName = 'CarouselPrevious'\n\nconst CarouselNext = React.forwardRef<HTMLButtonElement, React.ComponentProps<typeof Button>>(\n ({ className, variant = 'outline', size = 'icon', ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'absolute h-8 w-8 rounded-full',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n }\n)\nCarouselNext.displayName = 'CarouselNext'\n\nexport { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext }\n"],"names":["CarouselContext","React","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","ref","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","variant","size","jsxs","Button","ArrowLeft","CarouselNext","ArrowRight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"carousel.js","sources":["../../../src/components/ui/carousel.tsx"],"sourcesContent":["import * as React from 'react'\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'\nimport { ArrowLeftIcon, ArrowRightIcon } from '@/components/icons'\n\nimport { cn } from '@/lib/utils'\nimport { Button } from '@/components/ui/button'\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: 'horizontal' | 'vertical'\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />')\n }\n\n return context\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(({ orientation = 'horizontal', opts, setApi, plugins, className, children, ...props }, ref) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return\n }\n\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === 'ArrowRight') {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) {\n return\n }\n\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) {\n return\n }\n\n onSelect(api)\n api.on('reInit', onSelect)\n api.on('select', onSelect)\n\n return () => {\n api?.off('select', onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn('relative', className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n})\nCarousel.displayName = 'Carousel'\n\nconst CarouselContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n className\n )}\n {...props}\n />\n </div>\n )\n }\n)\nCarouselContent.displayName = 'CarouselContent'\n\nconst CarouselItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { orientation } = useCarousel()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className\n )}\n {...props}\n />\n )\n }\n)\nCarouselItem.displayName = 'CarouselItem'\n\nconst CarouselPrevious = React.forwardRef<HTMLButtonElement, React.ComponentProps<typeof Button>>(\n ({ className, variant = 'outline', size = 'icon', ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'absolute h-8 w-8 rounded-full',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeftIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n }\n)\nCarouselPrevious.displayName = 'CarouselPrevious'\n\nconst CarouselNext = React.forwardRef<HTMLButtonElement, React.ComponentProps<typeof Button>>(\n ({ className, variant = 'outline', size = 'icon', ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'absolute h-8 w-8 rounded-full',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRightIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n }\n)\nCarouselNext.displayName = 'CarouselNext'\n\nexport { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext }\n"],"names":["CarouselContext","React","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","ref","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","variant","size","jsxs","Button","ArrowLeftIcon","CarouselNext","ArrowRightIcon"],"mappings":";;;;;;;AA4BA,MAAMA,IAAkBC,EAAM,cAA2C,IAAI;AAE7E,SAASC,IAAc;AACrB,QAAMC,IAAUF,EAAM,WAAWD,CAAe;AAEhD,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,gDAAgD;AAGlE,SAAOA;AACT;AAEA,MAAMC,IAAWH,EAAM,WAGrB,CAAC,EAAE,aAAAI,IAAc,cAAc,MAAAC,GAAM,QAAAC,GAAQ,SAAAC,GAAS,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAAQ;AAC/F,QAAM,CAACC,GAAaC,CAAG,IAAIC;AAAA,IACzB;AAAA,MACE,GAAGT;AAAA,MACH,MAAMD,MAAgB,eAAe,MAAM;AAAA,IAAA;AAAA,IAE7CG;AAAA,EAAA,GAEI,CAACQ,GAAeC,CAAgB,IAAIhB,EAAM,SAAS,EAAK,GACxD,CAACiB,GAAeC,CAAgB,IAAIlB,EAAM,SAAS,EAAK,GAExDmB,IAAWnB,EAAM,YAAY,CAACa,MAAqB;AACvD,IAAKA,MAILG,EAAiBH,EAAI,eAAe,GACpCK,EAAiBL,EAAI,eAAe;AAAA,EACtC,GAAG,CAAA,CAAE,GAECO,IAAapB,EAAM,YAAY,MAAM;AACzC,IAAAa,KAAA,QAAAA,EAAK;AAAA,EACP,GAAG,CAACA,CAAG,CAAC,GAEFQ,IAAarB,EAAM,YAAY,MAAM;AACzC,IAAAa,KAAA,QAAAA,EAAK;AAAA,EACP,GAAG,CAACA,CAAG,CAAC,GAEFS,IAAgBtB,EAAM;AAAA,IAC1B,CAACuB,MAA+C;AAC9C,MAAIA,EAAM,QAAQ,eAChBA,EAAM,eAAA,GACNH,EAAA,KACSG,EAAM,QAAQ,iBACvBA,EAAM,eAAA,GACNF,EAAA;AAAA,IAEJ;AAAA,IACA,CAACD,GAAYC,CAAU;AAAA,EAAA;AAGzB,SAAArB,EAAM,UAAU,MAAM;AACpB,IAAI,CAACa,KAAO,CAACP,KAIbA,EAAOO,CAAG;AAAA,EACZ,GAAG,CAACA,GAAKP,CAAM,CAAC,GAEhBN,EAAM,UAAU,MAAM;AACpB,QAAKa;AAIL,aAAAM,EAASN,CAAG,GACZA,EAAI,GAAG,UAAUM,CAAQ,GACzBN,EAAI,GAAG,UAAUM,CAAQ,GAElB,MAAM;AACX,QAAAN,KAAA,QAAAA,EAAK,IAAI,UAAUM;AAAA,MACrB;AAAA,EACF,GAAG,CAACN,GAAKM,CAAQ,CAAC,GAGhB,gBAAAK;AAAA,IAACzB,EAAgB;AAAA,IAAhB;AAAA,MACC,OAAO;AAAA,QACL,aAAAa;AAAA,QACA,KAAAC;AAAA,QACA,MAAAR;AAAA,QACA,aAAaD,OAAgBC,KAAA,gBAAAA,EAAM,UAAS,MAAM,aAAa;AAAA,QAC/D,YAAAe;AAAA,QACA,YAAAC;AAAA,QACA,eAAAN;AAAA,QACA,eAAAE;AAAA,MAAA;AAAA,MAGF,UAAA,gBAAAO;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAb;AAAA,UACA,kBAAkBW;AAAA,UAClB,WAAWG,EAAG,YAAYjB,CAAS;AAAA,UACnC,MAAK;AAAA,UACL,wBAAqB;AAAA,UACpB,GAAGE;AAAA,UAEH,UAAAD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN,CAAC;AACDN,EAAS,cAAc;AAEvB,MAAMuB,IAAkB1B,EAAM;AAAA,EAC5B,CAAC,EAAE,WAAAQ,GAAW,GAAGE,EAAA,GAASC,MAAQ;AAChC,UAAM,EAAE,aAAAC,GAAa,aAAAR,EAAA,IAAgBH,EAAA;AAErC,WACE,gBAAAuB,EAAC,OAAA,EAAI,KAAKZ,GAAa,WAAU,mBAC/B,UAAA,gBAAAY;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAb;AAAA,QACA,WAAWc;AAAA,UACT;AAAA,UACArB,MAAgB,eAAe,UAAU;AAAA,UACzCI;AAAA,QAAA;AAAA,QAED,GAAGE;AAAA,MAAA;AAAA,IAAA,GAER;AAAA,EAEJ;AACF;AACAgB,EAAgB,cAAc;AAE9B,MAAMC,IAAe3B,EAAM;AAAA,EACzB,CAAC,EAAE,WAAAQ,GAAW,GAAGE,EAAA,GAASC,MAAQ;AAChC,UAAM,EAAE,aAAAP,EAAA,IAAgBH,EAAA;AAExB,WACE,gBAAAuB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAb;AAAA,QACA,MAAK;AAAA,QACL,wBAAqB;AAAA,QACrB,WAAWc;AAAA,UACT;AAAA,UACArB,MAAgB,eAAe,SAAS;AAAA,UACxCI;AAAA,QAAA;AAAA,QAED,GAAGE;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAiB,EAAa,cAAc;AAE3B,MAAMC,IAAmB5B,EAAM;AAAA,EAC7B,CAAC,EAAE,WAAAQ,GAAW,SAAAqB,IAAU,WAAW,MAAAC,IAAO,QAAQ,GAAGpB,EAAA,GAASC,MAAQ;AACpE,UAAM,EAAE,aAAAP,GAAa,YAAAgB,GAAY,eAAAL,EAAA,IAAkBd,EAAA;AAEnD,WACE,gBAAA8B;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAArB;AAAA,QACA,SAAAkB;AAAA,QACA,MAAAC;AAAA,QACA,WAAWL;AAAA,UACT;AAAA,UACArB,MAAgB,eACZ,sCACA;AAAA,UACJI;AAAA,QAAA;AAAA,QAEF,UAAU,CAACO;AAAA,QACX,SAASK;AAAA,QACR,GAAGV;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAc,EAACS,GAAA,EAAc,WAAU,UAAA,CAAU;AAAA,UACnC,gBAAAT,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,iBAAA,CAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAG9C;AACF;AACAI,EAAiB,cAAc;AAE/B,MAAMM,IAAelC,EAAM;AAAA,EACzB,CAAC,EAAE,WAAAQ,GAAW,SAAAqB,IAAU,WAAW,MAAAC,IAAO,QAAQ,GAAGpB,EAAA,GAASC,MAAQ;AACpE,UAAM,EAAE,aAAAP,GAAa,YAAAiB,GAAY,eAAAJ,EAAA,IAAkBhB,EAAA;AAEnD,WACE,gBAAA8B;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAArB;AAAA,QACA,SAAAkB;AAAA,QACA,MAAAC;AAAA,QACA,WAAWL;AAAA,UACT;AAAA,UACArB,MAAgB,eACZ,uCACA;AAAA,UACJI;AAAA,QAAA;AAAA,QAEF,UAAU,CAACS;AAAA,QACX,SAASI;AAAA,QACR,GAAGX;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAc,EAACW,GAAA,EAAe,WAAU,UAAA,CAAU;AAAA,UACpC,gBAAAX,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,aAAA,CAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAG1C;AACF;AACAU,EAAa,cAAc;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import * as c from "react";
|
|
3
|
-
import { Minus as m, Check as s } from "lucide-react";
|
|
4
3
|
import { cn as t } from "../../lib/utils.js";
|
|
4
|
+
import "../icons/dynamic-icons.js";
|
|
5
|
+
import { MinusIcon as m, CheckIcon as s } from "../icons/auto-generated.js";
|
|
5
6
|
import { CheckboxRoot as l } from "../../node_modules/.pnpm/@base-ui_react@1.1.0_@types_react@18.3.27_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@base-ui/react/esm/checkbox/root/CheckboxRoot.js";
|
|
6
7
|
import { CheckboxIndicator as b } from "../../node_modules/.pnpm/@base-ui_react@1.1.0_@types_react@18.3.27_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@base-ui/react/esm/checkbox/indicator/CheckboxIndicator.js";
|
|
7
8
|
const u = c.forwardRef(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","sources":["../../../src/components/ui/checkbox.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react'\nimport {
|
|
1
|
+
{"version":3,"file":"checkbox.js","sources":["../../../src/components/ui/checkbox.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react'\nimport { CheckIcon, MinusIcon } from '@/components/icons'\n\nimport { cn } from '@/lib/utils'\n\n/**\n * Extends Base UI's Checkbox props to accept `checked=\"indeterminate\"` for\n * backwards-compatibility with the Radix UI API. Base UI uses a separate boolean\n * `indeterminate` prop, so we override `checked` here and normalize it internally.\n */\ntype CheckboxProps = Omit<React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, 'checked'> & {\n checked?: boolean | 'indeterminate'\n}\n\nconst Checkbox = React.forwardRef<HTMLElement, CheckboxProps>(\n ({ className, checked, indeterminate, ...props }, ref) => {\n // Derive indeterminate state from either the explicit `indeterminate` prop or\n // the Radix-style `checked=\"indeterminate\"` string. An explicit boolean\n // `indeterminate` prop takes precedence (via `??`).\n const isIndeterminate = indeterminate ?? (checked === 'indeterminate')\n // Normalize checked to boolean for Base UI (which does not accept the string 'indeterminate').\n const normalizedChecked = checked === 'indeterminate' ? undefined : checked\n\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n checked={normalizedChecked}\n indeterminate={isIndeterminate}\n className={cn(\n 'peer inline-flex items-center justify-center h-4 w-4 shrink-0 rounded-sm border bg-background border-input/30 transition-colors',\n 'hover:border-input/50',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:bg-muted/10 disabled:border-muted/10',\n 'data-[checked]:bg-primary data-[checked]:border-primary data-[checked]:text-primary-foreground',\n 'data-[indeterminate]:bg-primary data-[indeterminate]:border-primary data-[indeterminate]:text-primary-foreground',\n className\n )}\n {...props}\n >\n {/* keepMounted ensures the indicator stays in the DOM so we can always render the correct icon */}\n <CheckboxPrimitive.Indicator keepMounted className={cn('flex items-center justify-center text-current data-[unchecked]:hidden')}>\n {isIndeterminate ? (\n <MinusIcon className=\"h-3 w-3\" />\n ) : (\n <CheckIcon className=\"h-3 w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n }\n)\nCheckbox.displayName = 'Checkbox'\n\nexport { Checkbox }"],"names":["Checkbox","React","className","checked","indeterminate","props","ref","isIndeterminate","jsx","CheckboxPrimitive.Root","cn","CheckboxPrimitive.Indicator","MinusIcon","CheckIcon"],"mappings":";;;;;;;AAeA,MAAMA,IAAWC,EAAM;AAAA,EACrB,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,eAAAC,GAAe,GAAGC,EAAA,GAASC,MAAQ;AAIxD,UAAMC,IAAkBH,KAAkBD,MAAY;AAItD,WACE,gBAAAK;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAAH;AAAA,QACA,SALsBH,MAAY,kBAAkB,SAAYA;AAAA,QAMhE,eAAeI;AAAA,QACf,WAAWG;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACAR;AAAA,QAAA;AAAA,QAED,GAAGG;AAAA,QAGJ,UAAA,gBAAAG,EAACG,GAAA,EAA4B,aAAW,IAAC,WAAWD,EAAG,uEAAuE,GAC3H,cACC,gBAAAF,EAACI,GAAA,EAAU,WAAU,WAAU,sBAE9BC,GAAA,EAAU,WAAU,WAAU,EAAA,CAEnC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AACAb,EAAS,cAAc;"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as a, jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import * as i from "react";
|
|
3
|
-
import { X as f } from "lucide-react";
|
|
4
3
|
import { cn as c } from "../../lib/utils.js";
|
|
4
|
+
import "../icons/dynamic-icons.js";
|
|
5
|
+
import { CloseIcon as f } from "../icons/auto-generated.js";
|
|
5
6
|
const m = i.forwardRef(
|
|
6
|
-
({ className: t, children: s, onRemove: e, icon: l, ...n },
|
|
7
|
+
({ className: t, children: s, onRemove: e, icon: l, ...n }, o) => /* @__PURE__ */ a(
|
|
7
8
|
"div",
|
|
8
9
|
{
|
|
9
|
-
ref:
|
|
10
|
+
ref: o,
|
|
10
11
|
className: c(
|
|
11
12
|
"inline-flex h-6 items-center gap-2 rounded-full border border-[rgba(38,104,197,0.3)] bg-[rgba(38,104,197,0.05)] text-sm leading-6 text-[hsl(var(--chip-foreground))]",
|
|
12
13
|
e ? "pl-3 pr-0" : "px-3",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip.js","sources":["../../../src/components/ui/chip.tsx"],"sourcesContent":["import * as React from 'react'\nimport {
|
|
1
|
+
{"version":3,"file":"chip.js","sources":["../../../src/components/ui/chip.tsx"],"sourcesContent":["import * as React from 'react'\nimport { CloseIcon } from '@/components/icons'\nimport { cn } from '@/lib/utils'\n\nexport interface ChipProps extends React.HTMLAttributes<HTMLDivElement> {\n onRemove?: () => void\n icon?: React.ReactNode\n}\n\nconst Chip = React.forwardRef<HTMLDivElement, ChipProps>(\n ({ className, children, onRemove, icon, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'inline-flex h-6 items-center gap-2 rounded-full border border-[rgba(38,104,197,0.3)] bg-[rgba(38,104,197,0.05)] text-sm leading-6 text-[hsl(var(--chip-foreground))]',\n onRemove ? 'pl-3 pr-0' : 'px-3',\n className\n )}\n {...props}\n >\n {icon && <span className=\"flex h-4 w-4 items-center justify-center\">{icon}</span>}\n <span className=\"font-normal\">{children}</span>\n {onRemove && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"flex h-full items-center justify-center rounded-br-full rounded-tr-full pl-1 pr-2 hover:bg-black/5 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-1\"\n aria-label=\"Remove\"\n >\n <CloseIcon className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n )\n }\n)\nChip.displayName = 'Chip'\n\nexport { Chip }\n"],"names":["Chip","React","className","children","onRemove","icon","props","ref","jsxs","cn","jsx","CloseIcon"],"mappings":";;;;;AASA,MAAMA,IAAOC,EAAM;AAAA,EACjB,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,UAAAC,GAAU,MAAAC,GAAM,GAAGC,EAAA,GAASC,MAEhD,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACAL,IAAW,cAAc;AAAA,QACzBF;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,MAEH,UAAA;AAAA,QAAAD,KAAQ,gBAAAK,EAAC,QAAA,EAAK,WAAU,4CAA4C,UAAAL,GAAK;AAAA,QAC1E,gBAAAK,EAAC,QAAA,EAAK,WAAU,eAAe,UAAAP,EAAA,CAAS;AAAA,QACvCC,KACC,gBAAAM;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAASN;AAAA,YACT,WAAU;AAAA,YACV,cAAW;AAAA,YAEX,UAAA,gBAAAM,EAACC,GAAA,EAAU,WAAU,UAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACjC;AAAA,IAAA;AAAA,EAAA;AAKV;AACAX,EAAK,cAAc;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import * as s from "react";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
3
|
+
import { cn as c } from "../../lib/utils.js";
|
|
4
|
+
import "../icons/dynamic-icons.js";
|
|
5
|
+
import { ChevronUpdownIcon as u, CheckIcon as d } from "../icons/auto-generated.js";
|
|
5
6
|
import { Button as v } from "./button.js";
|
|
6
7
|
import { Command as h, CommandInput as f, CommandList as x, CommandEmpty as b, CommandGroup as C, CommandItem as j } from "./command.js";
|
|
7
8
|
import { Popover as w, PopoverTrigger as N, PopoverContent as S } from "./popover.js";
|
|
@@ -27,9 +28,9 @@ const i = [
|
|
|
27
28
|
label: "Astro"
|
|
28
29
|
}
|
|
29
30
|
];
|
|
30
|
-
function
|
|
31
|
+
function A() {
|
|
31
32
|
var n;
|
|
32
|
-
const [t, r] = s.useState(!1), [l,
|
|
33
|
+
const [t, r] = s.useState(!1), [l, p] = s.useState("");
|
|
33
34
|
return /* @__PURE__ */ a(w, { open: t, onOpenChange: r, children: [
|
|
34
35
|
/* @__PURE__ */ e(
|
|
35
36
|
N,
|
|
@@ -43,7 +44,7 @@ function O() {
|
|
|
43
44
|
className: "w-[200px] justify-between",
|
|
44
45
|
children: [
|
|
45
46
|
l ? (n = i.find((o) => o.value === l)) == null ? void 0 : n.label : "Select framework...",
|
|
46
|
-
/* @__PURE__ */ e(
|
|
47
|
+
/* @__PURE__ */ e(u, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
|
|
47
48
|
]
|
|
48
49
|
}
|
|
49
50
|
)
|
|
@@ -58,13 +59,13 @@ function O() {
|
|
|
58
59
|
{
|
|
59
60
|
value: o.value,
|
|
60
61
|
onSelect: (m) => {
|
|
61
|
-
|
|
62
|
+
p(m === l ? "" : m), r(!1);
|
|
62
63
|
},
|
|
63
64
|
children: [
|
|
64
65
|
/* @__PURE__ */ e(
|
|
65
|
-
|
|
66
|
+
d,
|
|
66
67
|
{
|
|
67
|
-
className:
|
|
68
|
+
className: c(
|
|
68
69
|
"mr-2 h-4 w-4",
|
|
69
70
|
l === o.value ? "opacity-100" : "opacity-0"
|
|
70
71
|
)
|
|
@@ -80,6 +81,6 @@ function O() {
|
|
|
80
81
|
] });
|
|
81
82
|
}
|
|
82
83
|
export {
|
|
83
|
-
|
|
84
|
+
A as Combobox
|
|
84
85
|
};
|
|
85
86
|
//# sourceMappingURL=combobox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.js","sources":["../../../src/components/ui/combobox.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { CheckIcon,
|
|
1
|
+
{"version":3,"file":"combobox.js","sources":["../../../src/components/ui/combobox.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { CheckIcon, ChevronUpdownIcon } from '@/components/icons'\n\nimport { cn } from '@/lib/utils'\nimport { Button } from '@/components/ui/button'\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command'\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'\n\nconst frameworks = [\n {\n value: 'next.js',\n label: 'Next.js',\n },\n {\n value: 'sveltekit',\n label: 'SvelteKit',\n },\n {\n value: 'nuxt.js',\n label: 'Nuxt.js',\n },\n {\n value: 'remix',\n label: 'Remix',\n },\n {\n value: 'astro',\n label: 'Astro',\n },\n]\n\nexport function Combobox() {\n const [open, setOpen] = React.useState(false)\n const [value, setValue] = React.useState('')\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger\n render={\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-[200px] justify-between\"\n >\n {value\n ? frameworks.find((framework) => framework.value === value)?.label\n : 'Select framework...'}\n <ChevronUpdownIcon className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n }\n />\n <PopoverContent className=\"w-[200px] p-0\">\n <Command>\n <CommandInput placeholder=\"Search framework...\" />\n <CommandList>\n <CommandEmpty>No framework found.</CommandEmpty>\n <CommandGroup>\n {frameworks.map((framework) => (\n <CommandItem\n key={framework.value}\n value={framework.value}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? '' : currentValue)\n setOpen(false)\n }}\n >\n <CheckIcon\n className={cn(\n 'mr-2 h-4 w-4',\n value === framework.value ? 'opacity-100' : 'opacity-0'\n )}\n />\n {framework.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n}\n"],"names":["frameworks","Combobox","open","setOpen","React","value","setValue","jsxs","Popover","jsx","PopoverTrigger","Button","_a","framework","ChevronUpdownIcon","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","currentValue","CheckIcon","cn"],"mappings":";;;;;;;;AAiBA,MAAMA,IAAa;AAAA,EACjB;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAEX;AAEO,SAASC,IAAW;;AACzB,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAM,SAAS,EAAK,GACtC,CAACC,GAAOC,CAAQ,IAAIF,EAAM,SAAS,EAAE;AAE3C,SACE,gBAAAG,EAACC,GAAA,EAAQ,MAAAN,GAAY,cAAcC,GACjC,UAAA;AAAA,IAAA,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,QACE,gBAAAH;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,iBAAeT;AAAA,YACf,WAAU;AAAA,YAET,UAAA;AAAA,cAAAG,KACGO,IAAAZ,EAAW,KAAK,CAACa,MAAcA,EAAU,UAAUR,CAAK,MAAxD,gBAAAO,EAA2D,QAC3D;AAAA,cACJ,gBAAAH,EAACK,GAAA,EAAkB,WAAU,mCAAA,CAAmC;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAClE;AAAA,IAAA;AAAA,IAGJ,gBAAAL,EAACM,GAAA,EAAe,WAAU,iBACxB,4BAACC,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAP,EAACQ,GAAA,EAAa,aAAY,sBAAA,CAAsB;AAAA,wBAC/CC,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAT,EAACU,KAAa,UAAA,sBAAA,CAAmB;AAAA,QACjC,gBAAAV,EAACW,GAAA,EACE,UAAApB,EAAW,IAAI,CAACa,MACf,gBAAAN;AAAA,UAACc;AAAA,UAAA;AAAA,YAEC,OAAOR,EAAU;AAAA,YACjB,UAAU,CAACS,MAAiB;AAC1B,cAAAhB,EAASgB,MAAiBjB,IAAQ,KAAKiB,CAAY,GACnDnB,EAAQ,EAAK;AAAA,YACf;AAAA,YAEA,UAAA;AAAA,cAAA,gBAAAM;AAAA,gBAACc;AAAA,gBAAA;AAAA,kBACC,WAAWC;AAAA,oBACT;AAAA,oBACAnB,MAAUQ,EAAU,QAAQ,gBAAgB;AAAA,kBAAA;AAAA,gBAC9C;AAAA,cAAA;AAAA,cAEDA,EAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAbNA,EAAU;AAAA,QAAA,CAelB,EAAA,CACH;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|