@alkimi.org/ui-kit 0.9.0 → 0.9.2
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/{chunk-VNF4HDJR.mjs → chunk-2CF4QASK.mjs} +2 -2
- package/dist/chunk-2CF4QASK.mjs.map +1 -0
- package/dist/chunk-3FBDNJG5.js +3 -0
- package/dist/chunk-3FBDNJG5.js.map +1 -0
- package/dist/{chunk-WIQVLJ4E.js → chunk-5D66A4ZC.js} +2 -2
- package/dist/{chunk-WIQVLJ4E.js.map → chunk-5D66A4ZC.js.map} +1 -1
- package/dist/chunk-5X26XR44.js +3 -0
- package/dist/chunk-5X26XR44.js.map +1 -0
- package/dist/{chunk-MO2LRV57.js → chunk-65YNHKNP.js} +2 -2
- package/dist/{chunk-MO2LRV57.js.map → chunk-65YNHKNP.js.map} +1 -1
- package/dist/{chunk-XNNZN4OY.mjs → chunk-7APORI4E.mjs} +2 -2
- package/dist/{chunk-7FX23JBQ.mjs → chunk-AL2CF5GT.mjs} +2 -2
- package/dist/{chunk-BWPUNSDD.js → chunk-ANKLITGS.js} +2 -2
- package/dist/{chunk-BWPUNSDD.js.map → chunk-ANKLITGS.js.map} +1 -1
- package/dist/chunk-C7GTPYMH.mjs +3 -0
- package/dist/chunk-C7GTPYMH.mjs.map +1 -0
- package/dist/chunk-CMV76O4U.mjs +3 -0
- package/dist/chunk-CMV76O4U.mjs.map +1 -0
- package/dist/{chunk-WPUW2XFI.js → chunk-CP7BC57S.js} +2 -2
- package/dist/{chunk-WPUW2XFI.js.map → chunk-CP7BC57S.js.map} +1 -1
- package/dist/chunk-EWRKHBIV.js +3 -0
- package/dist/chunk-EWRKHBIV.js.map +1 -0
- package/dist/{chunk-HKLR7AH3.js → chunk-GVSERRZX.js} +2 -2
- package/dist/{chunk-HKLR7AH3.js.map → chunk-GVSERRZX.js.map} +1 -1
- package/dist/chunk-HRYHWWL4.mjs +3 -0
- package/dist/chunk-HRYHWWL4.mjs.map +1 -0
- package/dist/{chunk-ZF6PO6PJ.js → chunk-I5INE4KG.js} +2 -2
- package/dist/{chunk-ZF6PO6PJ.js.map → chunk-I5INE4KG.js.map} +1 -1
- package/dist/chunk-IXP2VV7S.mjs +3 -0
- package/dist/chunk-IXP2VV7S.mjs.map +1 -0
- package/dist/chunk-KGNX6UST.mjs +3 -0
- package/dist/chunk-KGNX6UST.mjs.map +1 -0
- package/dist/chunk-LCKRYIEJ.js +3 -0
- package/dist/chunk-LCKRYIEJ.js.map +1 -0
- package/dist/chunk-MSYJFTUX.js +3 -0
- package/dist/chunk-MSYJFTUX.js.map +1 -0
- package/dist/{chunk-JKSXSLVB.mjs → chunk-NGEWZBAJ.mjs} +2 -2
- package/dist/{chunk-7T4BNCXL.js → chunk-OXMHA73F.js} +2 -2
- package/dist/chunk-OXMHA73F.js.map +1 -0
- package/dist/{chunk-25PBXFF5.js → chunk-QMGLM2OR.js} +2 -2
- package/dist/chunk-QMGLM2OR.js.map +1 -0
- package/dist/{chunk-RLO6XENU.js → chunk-RKONP3N6.js} +2 -2
- package/dist/{chunk-RLO6XENU.js.map → chunk-RKONP3N6.js.map} +1 -1
- package/dist/{chunk-TUQM7P2C.js → chunk-RTGC7LPL.js} +2 -2
- package/dist/{chunk-TUQM7P2C.js.map → chunk-RTGC7LPL.js.map} +1 -1
- package/dist/chunk-RYJZXDJ5.mjs +3 -0
- package/dist/chunk-RYJZXDJ5.mjs.map +1 -0
- package/dist/chunk-S2TENS3V.mjs +3 -0
- package/dist/chunk-S2TENS3V.mjs.map +1 -0
- package/dist/{chunk-RJKKQWP2.js → chunk-SBL3PCZC.js} +2 -2
- package/dist/{chunk-RJKKQWP2.js.map → chunk-SBL3PCZC.js.map} +1 -1
- package/dist/{chunk-FR56YJGL.mjs → chunk-TAMQA7LM.mjs} +2 -2
- package/dist/{chunk-FR56YJGL.mjs.map → chunk-TAMQA7LM.mjs.map} +1 -1
- package/dist/{chunk-TLWWS45Z.mjs → chunk-U6XL5TKL.mjs} +2 -2
- package/dist/{chunk-WBCFLFLW.mjs → chunk-VDRRSPND.mjs} +2 -2
- package/dist/chunk-VMOF3XI2.mjs +3 -0
- package/dist/chunk-VMOF3XI2.mjs.map +1 -0
- package/dist/chunk-WY4HCUAP.mjs +3 -0
- package/dist/chunk-WY4HCUAP.mjs.map +1 -0
- package/dist/{chunk-RFYGH7BH.mjs → chunk-YENXK5HF.mjs} +2 -2
- package/dist/chunk-YENXK5HF.mjs.map +1 -0
- package/dist/chunk-ZDWAY77K.js +3 -0
- package/dist/{chunk-2S3AGBKQ.js.map → chunk-ZDWAY77K.js.map} +1 -1
- package/dist/components/GeometricFluidGrid.js +1 -1
- package/dist/components/GeometricFluidGrid.mjs +1 -1
- package/dist/components/TextDecoder.d.mts +4 -2
- package/dist/components/TextDecoder.d.ts +4 -2
- package/dist/components/TextDecoder.js +1 -1
- package/dist/components/TextDecoder.mjs +1 -1
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb.mjs +1 -1
- package/dist/components/breadcrumb.mjs.map +1 -1
- package/dist/components/button.d.mts +2 -2
- package/dist/components/button.d.ts +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/button.mjs +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/calendar.mjs +1 -1
- package/dist/components/card.d.mts +1 -0
- package/dist/components/card.d.ts +1 -0
- package/dist/components/card.js +1 -1
- package/dist/components/card.js.map +1 -1
- package/dist/components/card.mjs +1 -1
- package/dist/components/card.mjs.map +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/checkbox.mjs +1 -1
- package/dist/components/combobox.d.mts +8 -3
- package/dist/components/combobox.d.ts +8 -3
- package/dist/components/combobox.js +1 -1
- package/dist/components/combobox.mjs +1 -1
- package/dist/components/command.d.mts +2 -2
- package/dist/components/command.d.ts +2 -2
- package/dist/components/command.js +1 -1
- package/dist/components/command.mjs +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/date-picker.mjs +1 -1
- package/dist/components/date-range-picker.js +1 -1
- package/dist/components/date-range-picker.mjs +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialog.mjs +1 -1
- package/dist/components/drawer.js +1 -1
- package/dist/components/drawer.mjs +1 -1
- package/dist/components/file-upload.js +1 -1
- package/dist/components/file-upload.mjs +1 -1
- package/dist/components/label.js +1 -1
- package/dist/components/label.mjs +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sidebar.mjs +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/slider.js.map +1 -1
- package/dist/components/slider.mjs +1 -1
- package/dist/components/slider.mjs.map +1 -1
- package/dist/components/table.d.mts +2 -1
- package/dist/components/table.d.ts +2 -1
- package/dist/components/table.js +1 -1
- package/dist/components/table.mjs +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/tabs.mjs +1 -1
- package/dist/components/tree-select.d.mts +26 -0
- package/dist/components/tree-select.d.ts +26 -0
- package/dist/components/tree-select.js +3 -0
- package/dist/components/tree-select.js.map +1 -0
- package/dist/components/tree-select.mjs +3 -0
- package/dist/components/tree-select.mjs.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-24H4O2Z5.js +0 -3
- package/dist/chunk-24H4O2Z5.js.map +0 -1
- package/dist/chunk-25PBXFF5.js.map +0 -1
- package/dist/chunk-2S3AGBKQ.js +0 -3
- package/dist/chunk-7T4BNCXL.js.map +0 -1
- package/dist/chunk-A7NIT2PJ.mjs +0 -3
- package/dist/chunk-A7NIT2PJ.mjs.map +0 -1
- package/dist/chunk-BENG4LHZ.js +0 -3
- package/dist/chunk-BENG4LHZ.js.map +0 -1
- package/dist/chunk-CDWSOB6B.mjs +0 -3
- package/dist/chunk-CDWSOB6B.mjs.map +0 -1
- package/dist/chunk-EMGXHXG7.mjs +0 -3
- package/dist/chunk-EMGXHXG7.mjs.map +0 -1
- package/dist/chunk-ERWX5WSB.js +0 -3
- package/dist/chunk-ERWX5WSB.js.map +0 -1
- package/dist/chunk-GOZDJRUZ.mjs +0 -3
- package/dist/chunk-GOZDJRUZ.mjs.map +0 -1
- package/dist/chunk-KPMYIU6M.mjs +0 -3
- package/dist/chunk-KPMYIU6M.mjs.map +0 -1
- package/dist/chunk-M3DW2W2P.js +0 -3
- package/dist/chunk-M3DW2W2P.js.map +0 -1
- package/dist/chunk-MPAY33XW.mjs +0 -3
- package/dist/chunk-MPAY33XW.mjs.map +0 -1
- package/dist/chunk-RFYGH7BH.mjs.map +0 -1
- package/dist/chunk-TF36SKHU.mjs +0 -3
- package/dist/chunk-TF36SKHU.mjs.map +0 -1
- package/dist/chunk-VNF4HDJR.mjs.map +0 -1
- package/dist/chunk-W65OWFZY.mjs +0 -3
- package/dist/chunk-W65OWFZY.mjs.map +0 -1
- /package/dist/{chunk-XNNZN4OY.mjs.map → chunk-7APORI4E.mjs.map} +0 -0
- /package/dist/{chunk-7FX23JBQ.mjs.map → chunk-AL2CF5GT.mjs.map} +0 -0
- /package/dist/{chunk-JKSXSLVB.mjs.map → chunk-NGEWZBAJ.mjs.map} +0 -0
- /package/dist/{chunk-TLWWS45Z.mjs.map → chunk-U6XL5TKL.mjs.map} +0 -0
- /package/dist/{chunk-WBCFLFLW.mjs.map → chunk-VDRRSPND.mjs.map} +0 -0
package/dist/chunk-TF36SKHU.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import{a as u,b as v,c as x}from"./chunk-FZ3NXOFK.mjs";import{a as h,c as C,d as y,e as N,f as w,h as P}from"./chunk-TLWWS45Z.mjs";import{a as d}from"./chunk-S5TKCF6T.mjs";import*as k from"react";import{Check as X,ChevronDown as $,X as j}from"lucide-react";import{jsx as o,jsxs as a}from"react/jsx-runtime";function F({options:l,value:s,onValueChange:O,placeholder:m="Select option...",searchPlaceholder:S="Search...",emptyMessage:R="No option found.",disabled:D=!1,className:E,error:I=!1,multiple:i=!1,values:n=[],onValuesChange:p}){let[g,b]=k.useState(!1),f=l.find(e=>e.value===s),r=l.filter(e=>n.includes(e.value)),T=e=>{if(i){let t=n.includes(e)?n.filter(c=>c!==e):[...n,e];p?.(t)}else O?.(e===s?"":e),b(!1)},G=(e,t)=>{t.preventDefault(),t.stopPropagation();let c=n.filter(M=>M!==e);p?.(c)},L=()=>i?r.length===0?m:r.length===1?r[0].label:`${r.length} selected`:f?f.label:m;return a(u,{open:g,onOpenChange:b,children:[o(v,{asChild:!0,children:a("button",{type:"button",role:"combobox","aria-expanded":g,disabled:D,className:d("cursor-pointer flex my-2 h-9 w-full items-center justify-between rounded-3xl border border-border bg-background hover:bg-secondary px-4 py-2 text-sm text-primary-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",!s&&!n.length&&"text-secondary-text",I&&"border-destructive-foreground focus-visible:ring-destructive-foreground",E),children:[o("span",{className:"truncate",children:L()}),o($,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o(x,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:a(h,{children:[o(C,{placeholder:S}),a(y,{children:[o(N,{children:R}),a(w,{children:[i&&r.length>0&&o("div",{className:"px-2 py-1.5",children:o("div",{className:"flex flex-wrap gap-1",children:r.map(e=>a("div",{className:"inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs",children:[o("span",{className:"truncate",children:e.label}),o(j,{className:"h-3 w-3 cursor-pointer",onClick:t=>G(e.value,t)})]},e.value))})}),l.map(e=>{let t=i?n.includes(e.value):s===e.value;return a(P,{value:e.value,onSelect:T,children:[o(X,{className:d("mr-2 h-4 w-4",t?"opacity-100":"opacity-0")}),o("span",{className:"truncate",children:e.label})]},e.value)})]})]})]})})]})}export{F as a};
|
|
3
|
-
//# sourceMappingURL=chunk-TF36SKHU.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/combobox.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Check, ChevronDown, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/command\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/popover\"\n\nexport interface ComboboxOption {\n value: string\n label: string\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[]\n value?: string\n onValueChange?: (value: string) => void\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n disabled?: boolean\n className?: string\n error?: boolean\n multiple?: boolean\n values?: string[]\n onValuesChange?: (values: string[]) => void\n}\n\nexport function Combobox({\n options,\n value,\n onValueChange,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No option found.\",\n disabled = false,\n className,\n error = false,\n multiple = false,\n values = [],\n onValuesChange,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false)\n\n const selectedOption = options.find((option) => option.value === value)\n const selectedOptions = options.filter((option) =>\n values.includes(option.value)\n )\n\n const handleSelect = (currentValue: string) => {\n if (multiple) {\n const newValues = values.includes(currentValue)\n ? values.filter((v) => v !== currentValue)\n : [...values, currentValue]\n onValuesChange?.(newValues)\n } else {\n onValueChange?.(currentValue === value ? \"\" : currentValue)\n setOpen(false)\n }\n }\n\n const handleRemoveValue = (valueToRemove: string, e: React.MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n const newValues = values.filter((v) => v !== valueToRemove)\n onValuesChange?.(newValues)\n }\n\n const getDisplayText = () => {\n if (multiple) {\n if (selectedOptions.length === 0) return placeholder\n if (selectedOptions.length === 1) return selectedOptions[0].label\n return `${selectedOptions.length} selected`\n }\n return selectedOption ? selectedOption.label : placeholder\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\n \"cursor-pointer flex my-2 h-9 w-full items-center justify-between rounded-3xl border border-border bg-background hover:bg-secondary px-4 py-2 text-sm text-primary-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n !value && !values.length && \"text-secondary-text\",\n error &&\n \"border-destructive-foreground focus-visible:ring-destructive-foreground\",\n className\n )}\n >\n <span className=\"truncate\">{getDisplayText()}</span>\n <ChevronDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0\"\n align=\"start\"\n style={{ width: \"var(--radix-popover-trigger-width)\" }}\n >\n <Command>\n <CommandInput placeholder={searchPlaceholder} />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n <CommandGroup>\n {multiple && selectedOptions.length > 0 && (\n <div className=\"px-2 py-1.5\">\n <div className=\"flex flex-wrap gap-1\">\n {selectedOptions.map((option) => (\n <div\n key={option.value}\n className=\"inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs\"\n >\n <span className=\"truncate\">{option.label}</span>\n <X\n className=\"h-3 w-3 cursor-pointer\"\n onClick={(e) => handleRemoveValue(option.value, e)}\n />\n </div>\n ))}\n </div>\n </div>\n )}\n {options.map((option) => {\n const isSelected = multiple\n ? values.includes(option.value)\n : value === option.value\n\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={handleSelect}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n <span className=\"truncate\">{option.label}</span>\n </CommandItem>\n )\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n}\n"],"mappings":";4KAAA,UAAYA,MAAW,QACvB,OAAS,SAAAC,EAAO,eAAAC,EAAa,KAAAC,MAAS,eAqF9B,OAaE,OAAAC,EAbF,QAAAC,MAAA,oBApDD,SAASC,EAAS,CACvB,QAAAC,EACA,MAAAC,EACA,cAAAC,EACA,YAAAC,EAAc,mBACd,kBAAAC,EAAoB,YACpB,aAAAC,EAAe,mBACf,SAAAC,EAAW,GACX,UAAAC,EACA,MAAAC,EAAQ,GACR,SAAAC,EAAW,GACX,OAAAC,EAAS,CAAC,EACV,eAAAC,CACF,EAAkB,CAChB,GAAM,CAACC,EAAMC,CAAO,EAAU,WAAS,EAAK,EAEtCC,EAAiBd,EAAQ,KAAMe,GAAWA,EAAO,QAAUd,CAAK,EAChEe,EAAkBhB,EAAQ,OAAQe,GACtCL,EAAO,SAASK,EAAO,KAAK,CAC9B,EAEME,EAAgBC,GAAyB,CAC7C,GAAIT,EAAU,CACZ,IAAMU,EAAYT,EAAO,SAASQ,CAAY,EAC1CR,EAAO,OAAQU,GAAMA,IAAMF,CAAY,EACvC,CAAC,GAAGR,EAAQQ,CAAY,EAC5BP,IAAiBQ,CAAS,CAC5B,MACEjB,IAAgBgB,IAAiBjB,EAAQ,GAAKiB,CAAY,EAC1DL,EAAQ,EAAK,CAEjB,EAEMQ,EAAoB,CAACC,EAAuBC,IAAwB,CACxEA,EAAE,eAAe,EACjBA,EAAE,gBAAgB,EAClB,IAAMJ,EAAYT,EAAO,OAAQU,GAAMA,IAAME,CAAa,EAC1DX,IAAiBQ,CAAS,CAC5B,EAEMK,EAAiB,IACjBf,EACEO,EAAgB,SAAW,EAAUb,EACrCa,EAAgB,SAAW,EAAUA,EAAgB,CAAC,EAAE,MACrD,GAAGA,EAAgB,MAAM,YAE3BF,EAAiBA,EAAe,MAAQX,EAGjD,OACEL,EAAC2B,EAAA,CAAQ,KAAMb,EAAM,aAAcC,EACjC,UAAAhB,EAAC6B,EAAA,CAAe,QAAO,GACrB,SAAA5B,EAAC,UACC,KAAK,SACL,KAAK,WACL,gBAAec,EACf,SAAUN,EACV,UAAWqB,EACT,sVACA,CAAC1B,GAAS,CAACS,EAAO,QAAU,sBAC5BF,GACE,0EACFD,CACF,EAEA,UAAAV,EAAC,QAAK,UAAU,WAAY,SAAA2B,EAAe,EAAE,EAC7C3B,EAAC+B,EAAA,CAAY,UAAU,mCAAmC,GAC5D,EACF,EACA/B,EAACgC,EAAA,CACC,UAAU,MACV,MAAM,QACN,MAAO,CAAE,MAAO,oCAAqC,EAErD,SAAA/B,EAACgC,EAAA,CACC,UAAAjC,EAACkC,EAAA,CAAa,YAAa3B,EAAmB,EAC9CN,EAACkC,EAAA,CACC,UAAAnC,EAACoC,EAAA,CAAc,SAAA5B,EAAa,EAC5BP,EAACoC,EAAA,CACE,UAAAzB,GAAYO,EAAgB,OAAS,GACpCnB,EAAC,OAAI,UAAU,cACb,SAAAA,EAAC,OAAI,UAAU,uBACZ,SAAAmB,EAAgB,IAAKD,GACpBjB,EAAC,OAEC,UAAU,6EAEV,UAAAD,EAAC,QAAK,UAAU,WAAY,SAAAkB,EAAO,MAAM,EACzClB,EAACsC,EAAA,CACC,UAAU,yBACV,QAAUZ,GAAMF,EAAkBN,EAAO,MAAOQ,CAAC,EACnD,IAPKR,EAAO,KAQd,CACD,EACH,EACF,EAEDf,EAAQ,IAAKe,GAAW,CACvB,IAAMqB,EAAa3B,EACfC,EAAO,SAASK,EAAO,KAAK,EAC5Bd,IAAUc,EAAO,MAErB,OACEjB,EAACuC,EAAA,CAEC,MAAOtB,EAAO,MACd,SAAUE,EAEV,UAAApB,EAACyC,EAAA,CACC,UAAWX,EACT,eACAS,EAAa,cAAgB,WAC/B,EACF,EACAvC,EAAC,QAAK,UAAU,WAAY,SAAAkB,EAAO,MAAM,IAVpCA,EAAO,KAWd,CAEJ,CAAC,GACH,GACF,GACF,EACF,GACF,CAEJ","names":["React","Check","ChevronDown","X","jsx","jsxs","Combobox","options","value","onValueChange","placeholder","searchPlaceholder","emptyMessage","disabled","className","error","multiple","values","onValuesChange","open","setOpen","selectedOption","option","selectedOptions","handleSelect","currentValue","newValues","v","handleRemoveValue","valueToRemove","e","getDisplayText","Popover","PopoverTrigger","cn","ChevronDown","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","X","isSelected","CommandItem","Check"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/GeometricFluidGrid.tsx"],"sourcesContent":["\"use client\"\nimport React, { useEffect, useRef } from \"react\"\n\n// --- CONFIGURATION ---\nconst GAP = 14\nconst BASE_SIZE = 1\nconst MAX_SIZE = 5\n\n// --- TYPES ---\ninterface Node {\n offsetX: number\n offsetY: number\n vx: number\n vy: number\n radius: number\n t: number\n}\n\ninterface GlitchZone {\n x: number\n y: number\n w: number\n h: number\n life: number\n}\n\ninterface MouseState {\n x: number\n y: number\n lastX: number\n lastY: number\n}\n\n// --- MATH HELPERS ---\nconst getFalloff = (dist: number, radius: number): number => {\n if (dist < radius) {\n const val = 1 - dist / radius\n return val * val * (3 - 2 * val)\n }\n return 0\n}\n\n// --- CLASSES ---\nclass AnchoredBlob {\n // Current Position\n x: number = 0\n y: number = 0\n\n // Anchor Position (Home base)\n anchorX: number = 0\n anchorY: number = 0\n\n // Movement\n vx: number = 0\n vy: number = 0\n\n // Appearance\n nodes: Node[] = []\n opacity: number = 0\n\n // Glitch State\n glitchZones: GlitchZone[] = []\n maxReach: number = 180\n\n constructor(anchorConfig: { x: number; y: number }) {\n this.anchorX = anchorConfig.x\n this.anchorY = anchorConfig.y\n this.x = this.anchorX\n this.y = this.anchorY\n this.init()\n }\n\n init() {\n // 1. Create Internal Nodes (The \"Blob\" composition)\n this.nodes = []\n const nodeCount = 3 + Math.floor(Math.random() * 3) // 3 to 5 nodes\n\n for (let i = 0; i < nodeCount; i++) {\n // Significantly smaller radius (15-40px) to reduce central bulk\n const r = 15 + Math.random() * 25\n // Wider initial spread\n const ox = (Math.random() - 0.5) * 60\n const oy = (Math.random() - 0.5) * 60\n\n this.nodes.push({\n offsetX: ox,\n offsetY: oy,\n vx: (Math.random() - 0.5) * 0.1, // Slower internal movement (was 0.4)\n vy: (Math.random() - 0.5) * 0.1,\n radius: r,\n t: Math.random() * 100,\n })\n }\n\n this.opacity = 1\n }\n\n update() {\n // --- 1. Tethered Movement Logic ---\n const dx = this.anchorX - this.x\n const dy = this.anchorY - this.y\n\n // Spring constant (very loose)\n const k = 0.0005\n const ax = dx * k\n const ay = dy * k\n\n // Random wandering force - Reduced significantly for slower drift\n const wx = (Math.random() - 0.5) * 0.01 // was 0.05\n const wy = (Math.random() - 0.5) * 0.01 // was 0.05\n\n this.vx += ax + wx\n this.vy += ay + wy\n\n this.vx *= 0.96\n this.vy *= 0.96\n\n this.x += this.vx\n this.y += this.vy\n\n // --- 2. Internal Node Animation ---\n this.nodes.forEach((node) => {\n // Slow down time step\n node.t += 0.005 // was 0.02\n\n // Slower oscillation and movement\n node.offsetX += Math.sin(node.t) * 0.1 + node.vx // amp was 0.4\n node.offsetY += Math.cos(node.t * 0.9) * 0.1 + node.vy\n\n // Constrain to \"nucleus\"\n const maxDist = 70\n if (node.offsetX > maxDist || node.offsetX < -maxDist) node.vx *= -1\n if (node.offsetY > maxDist || node.offsetY < -maxDist) node.vy *= -1\n\n // Pulse size\n node.radius += Math.sin(node.t * 2) * 0.1\n })\n\n // --- 3. Manage Glitch Zones ---\n // Remove dead glitches\n this.glitchZones = this.glitchZones.filter((g) => g.life > 0)\n this.glitchZones.forEach((g) => g.life--)\n\n // Randomly spawn new glitches\n if (Math.random() < 0.03) {\n // 3% chance per frame\n const spread = 80\n\n // Snap random positions to exact grid points to ensure clean lines\n const snap = (v: number) =>\n Math.round((v - GAP / 2) / GAP) * GAP + GAP / 2\n\n const rawCx = this.x + (Math.random() - 0.5) * spread\n const rawCy = this.y + (Math.random() - 0.5) * spread\n\n const cx = snap(rawCx)\n const cy = snap(rawCy)\n\n const type = Math.random() > 0.6 ? \"line\" : \"dot\"\n\n if (type === \"line\") {\n const isVert = Math.random() > 0.5\n // Medium length: 40-120px\n const len = 40 + Math.random() * 80\n\n // Thickness is essentially zero (just a sliver) centered on the grid line\n // to guarantee we only pick up exactly one row/column of dots\n const thickness = 2\n\n this.glitchZones.push({\n x: isVert ? cx - thickness / 2 : cx - len / 2,\n y: isVert ? cy - len / 2 : cy - thickness / 2,\n w: isVert ? thickness : len,\n h: isVert ? len : thickness,\n life: 8 + Math.random() * 12,\n })\n } else {\n // Single dot\n // Box just large enough to catch one grid point\n const size = 4\n\n this.glitchZones.push({\n x: cx - size / 2,\n y: cy - size / 2,\n w: size,\n h: size,\n life: 6 + Math.random() * 10,\n })\n }\n }\n }\n}\n\nclass TrailBlob {\n x: number\n y: number\n opacity: number\n decay: number\n nodes: Node[]\n maxReach: number = 60\n\n constructor(x: number, y: number) {\n this.x = x\n this.y = y\n this.opacity = 0.8\n this.decay = 0.03\n\n this.nodes = []\n const count = 2\n for (let i = 0; i < count; i++) {\n this.nodes.push({\n offsetX: (Math.random() - 0.5) * 10,\n offsetY: (Math.random() - 0.5) * 10,\n vx: (Math.random() - 0.5) * 1,\n vy: (Math.random() - 0.5) * 1,\n radius: 5 + Math.random() * 10,\n t: 0,\n })\n }\n }\n\n update() {\n this.opacity -= this.decay\n this.nodes.forEach((node) => {\n node.offsetX += node.vx\n node.offsetY += node.vy\n node.radius *= 0.95\n })\n }\n}\n\ninterface GeometricFluidGridProps {\n variant?: \"animated\" | \"static\"\n}\n\nconst GeometricFluidGrid: React.FC<GeometricFluidGridProps> = ({\n variant = \"animated\",\n}) => {\n const canvasRef = useRef<HTMLCanvasElement>(null)\n\n useEffect(() => {\n const canvas = canvasRef.current\n if (!canvas) return\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n let animationFrameId: number\n let orbs: AnchoredBlob[] = []\n let trail: TrailBlob[] = []\n let mouse: MouseState = { x: -1000, y: -1000, lastX: -1000, lastY: -1000 }\n\n const initWorld = () => {\n orbs = []\n const w = canvas.width\n const h = canvas.height\n\n // 1. Top Right\n orbs.push(\n new AnchoredBlob({\n x: w - w * 0.15,\n y: h * 0.15,\n })\n )\n\n // 2. ~40% from top and ~40% from left\n orbs.push(\n new AnchoredBlob({\n x: w * 0.4,\n y: h * 0.4,\n })\n )\n\n // 3. Bottom Left\n orbs.push(\n new AnchoredBlob({\n x: w * 0.05 + 50,\n y: h - h * 0.15,\n })\n )\n\n // 4. Bottom Right\n orbs.push(\n new AnchoredBlob({\n x: w - w * 0.05 - 50,\n y: h - h * 0.05 - 50,\n })\n )\n }\n\n const resize = () => {\n const rect = canvas.getBoundingClientRect()\n canvas.width = rect.width\n canvas.height = rect.height\n initWorld()\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n const rect = canvas.getBoundingClientRect()\n mouse.x = e.clientX - rect.left\n mouse.y = e.clientY - rect.top\n\n if (mouse.lastX === -1000) {\n mouse.lastX = mouse.x\n mouse.lastY = mouse.y\n }\n\n const dx = mouse.x - mouse.lastX\n const dy = mouse.y - mouse.lastY\n const dist = Math.sqrt(dx * dx + dy * dy)\n\n if (dist > 20) {\n trail.push(new TrailBlob(mouse.x, mouse.y))\n mouse.lastX = mouse.x\n mouse.lastY = mouse.y\n }\n }\n\n const handleResize = () => {\n resize()\n }\n\n const draw = () => {\n const w = canvas.width\n const h = canvas.height\n\n // Clear Screen\n ctx.fillStyle = \"#050505\"\n ctx.fillRect(0, 0, w, h)\n\n // Static variant: just render uniform dots\n if (variant === \"static\") {\n for (let x = GAP / 2; x < w; x += GAP) {\n for (let y = GAP / 2; y < h; y += GAP) {\n ctx.fillStyle = \"rgba(255, 255, 255, 0.03)\"\n ctx.fillRect(x - 0.5, y - 0.5, 1, 1)\n }\n }\n return // No animation loop for static variant\n }\n\n // Animated variant: update and render with animations\n // Update Logic\n orbs.forEach((orb) => orb.update())\n for (let i = trail.length - 1; i >= 0; i--) {\n trail[i].update()\n if (trail[i].opacity <= 0) trail.splice(i, 1)\n }\n\n const renderList = [...orbs, ...trail]\n\n // Collect all glitch zones for easier checking inside the loop\n // We flat map them to a simple array to iterate quickly\n const allGlitches: GlitchZone[] = []\n orbs.forEach((o) => allGlitches.push(...o.glitchZones))\n\n for (let x = GAP / 2; x < w; x += GAP) {\n for (let y = GAP / 2; y < h; y += GAP) {\n // --- GLITCH CHECK ---\n // Check if this specific grid dot is inside a glitch zone\n let isGlitching = false\n for (const g of allGlitches) {\n // Simple AABB check\n if (x >= g.x && x <= g.x + g.w && y >= g.y && y <= g.y + g.h) {\n isGlitching = true\n break\n }\n }\n\n if (isGlitching) {\n // Glitched Dot: Bright\n // We use the grid itself to manifest the glitch\n ctx.fillStyle = \"rgba(182, 243, 191, 0.95)\"\n\n // Randomly skip some dots in the glitch line for a \"broken\" look\n if (Math.random() > 0.1) {\n const size = Math.random() > 0.5 ? MAX_SIZE * 0.7 : BASE_SIZE * 2\n ctx.beginPath()\n ctx.arc(x, y, size / 2, 0, Math.PI * 2)\n ctx.fill()\n }\n continue // Skip standard influence calculation for this dot\n }\n\n // --- STANDARD INFLUENCE CHECK ---\n let totalInfluence = 0\n\n // Optimization: Is near blob?\n let nearby = false\n for (const entity of renderList) {\n if (\n Math.abs(x - entity.x) < entity.maxReach &&\n Math.abs(y - entity.y) < entity.maxReach\n ) {\n nearby = true\n break\n }\n }\n\n if (!nearby) {\n // Passive Background Dot\n ctx.fillStyle = \"rgba(255, 255, 255, 0.03)\"\n ctx.fillRect(x - 0.5, y - 0.5, 1, 1)\n continue\n }\n\n // Calculate Influence\n for (const entity of renderList) {\n const dx = x - entity.x\n const dy = y - entity.y\n\n if (\n Math.abs(dx) > entity.maxReach ||\n Math.abs(dy) > entity.maxReach\n )\n continue\n\n let localInf = 0\n for (const node of entity.nodes) {\n const nx = dx - node.offsetX\n const ny = dy - node.offsetY\n const dist = Math.sqrt(nx * nx + ny * ny)\n localInf += getFalloff(dist, node.radius)\n }\n if (localInf > 1) localInf = 1\n totalInfluence += localInf * entity.opacity\n }\n\n if (totalInfluence > 1) totalInfluence = 1\n\n // Draw Cell\n if (totalInfluence > 0.01) {\n // Gradient: White (Edge) to Green (#B6F3BF - Center)\n const edgeR = 255,\n centerR = 182\n const edgeG = 255,\n centerG = 243\n const edgeB = 255,\n centerB = 191\n\n // Interpolate from White (0 influence) to Green (1 influence)\n const r = Math.floor(edgeR + (centerR - edgeR) * totalInfluence)\n const g = Math.floor(edgeG + (centerG - edgeG) * totalInfluence)\n const b = Math.floor(edgeB + (centerB - edgeB) * totalInfluence)\n\n const alpha = totalInfluence * 0.5\n const size = BASE_SIZE + totalInfluence * (MAX_SIZE - BASE_SIZE)\n\n ctx.fillStyle = `rgba(${r}, ${g}, ${b}, ${alpha})`\n ctx.beginPath()\n ctx.arc(x, y, size / 2, 0, Math.PI * 2)\n ctx.fill()\n } else {\n ctx.fillStyle = \"rgba(255, 255, 255, 0.03)\"\n ctx.fillRect(x - 0.5, y - 0.5, 1, 1)\n }\n }\n }\n\n animationFrameId = requestAnimationFrame(draw)\n }\n\n window.addEventListener(\"resize\", handleResize)\n if (variant === \"animated\") {\n window.addEventListener(\"mousemove\", handleMouseMove)\n }\n\n resize()\n draw()\n\n return () => {\n window.removeEventListener(\"resize\", handleResize)\n if (variant === \"animated\") {\n window.removeEventListener(\"mousemove\", handleMouseMove)\n }\n cancelAnimationFrame(animationFrameId)\n }\n }, [variant])\n\n return (\n <canvas\n ref={canvasRef}\n className=\"fixed inset-0 -z-999 w-full h-full pointer-events-none\"\n />\n )\n}\n\nexport default GeometricFluidGrid\n"],"mappings":"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","names":["useEffect","useRef","jsx","GAP","BASE_SIZE","MAX_SIZE","getFalloff","dist","radius","val","AnchoredBlob","anchorConfig","__publicField","nodeCount","i","r","ox","oy","dx","dy","k","ax","ay","wx","wy","node","maxDist","g","snap","v","rawCx","rawCy","cx","cy","isVert","len","thickness","TrailBlob","x","y","count","GeometricFluidGrid","variant","canvasRef","useRef","useEffect","canvas","ctx","animationFrameId","orbs","trail","mouse","initWorld","w","resize","rect","handleMouseMove","e","handleResize","draw","orb","renderList","allGlitches","o","isGlitching","size","totalInfluence","nearby","entity","localInf","nx","ny","b","alpha","GeometricFluidGrid_default"]}
|
package/dist/chunk-W65OWFZY.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import{a}from"./chunk-S5TKCF6T.mjs";import*as o from"react";import{Slot as l}from"@radix-ui/react-slot";import{cva as p}from"class-variance-authority";import{jsx as n,jsxs as b}from"react/jsx-runtime";var m=p("inline-flex items-center cursor-pointer justify-center whitespace-nowrap rounded-4xl font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary-accent text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive hover:bg-destructive/90",outline:"border border-input hover:bg-base-accent text-primary-accent",secondary:"bg-muted text-primary-accent hover:bg-muted/20",ghost:"hover:bg-base-accent text-primary-accent",link:"text-primary-accent underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 text-sm",sm:"h-8 text-xs px-3 py-2",lg:"h-10 px-8 py-2 text-sm",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),f=o.forwardRef(({className:i,variant:s,size:c,asChild:d=!1,loading:e=!1,icon:r,...t},u)=>b(d?l:"button",{className:a(m({variant:s,size:c,className:i})),ref:u,disabled:e||t.disabled,...t,children:[e&&n("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border border-primary-foreground border-t-transparent"}),!e&&r&&n("span",{className:"mr-2",children:r}),t.children]}));f.displayName="Button";export{m as a,f as b};
|
|
3
|
-
//# sourceMappingURL=chunk-W65OWFZY.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/button.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center cursor-pointer justify-center whitespace-nowrap rounded-4xl font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary-accent text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive hover:bg-destructive/90\",\n outline: \"border border-input hover:bg-base-accent text-primary-accent\",\n secondary: \"bg-muted text-primary-accent hover:bg-muted/20\",\n ghost: \"hover:bg-base-accent text-primary-accent\",\n link: \"text-primary-accent underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 text-sm\",\n sm: \"h-8 text-xs px-3 py-2\",\n lg: \"h-10 px-8 py-2 text-sm\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n loading?: boolean\n icon?: React.ReactNode\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n icon,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={loading || props.disabled}\n {...props}\n >\n {loading && (\n <div className=\"mr-2 h-4 w-4 animate-spin rounded-full border border-primary-foreground border-t-transparent\" />\n )}\n {!loading && icon && <span className=\"mr-2\">{icon}</span>}\n {props.children}\n </Comp>\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"],"mappings":";oCAAA,UAAYA,MAAW,QACvB,OAAS,QAAAC,MAAY,uBACrB,OAAS,OAAAC,MAA8B,2BAuDjC,OAOI,OAAAC,EAPJ,QAAAC,MAAA,oBAnDN,IAAMC,EAAiBC,EACrB,gTACA,CACE,SAAU,CACR,QAAS,CACP,QACE,gEACF,YAAa,yCACb,QAAS,+DACT,UAAW,iDACX,MAAO,2CACP,KAAM,wDACR,EACA,KAAM,CACJ,QAAS,wBACT,GAAI,wBACJ,GAAI,yBACJ,KAAM,SACR,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,SACR,CACF,CACF,EAWMC,EAAe,aACnB,CACE,CACE,UAAAC,EACA,QAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACV,QAAAC,EAAU,GACV,KAAAC,EACA,GAAGC,CACL,EACAC,IAIEX,EAFWO,EAAUK,EAAO,SAE3B,CACC,UAAWC,EAAGZ,EAAe,CAAE,QAAAI,EAAS,KAAAC,EAAM,UAAAF,CAAU,CAAC,CAAC,EAC1D,IAAKO,EACL,SAAUH,GAAWE,EAAM,SAC1B,GAAGA,EAEH,UAAAF,GACCT,EAAC,OAAI,UAAU,+FAA+F,EAE/G,CAACS,GAAWC,GAAQV,EAAC,QAAK,UAAU,OAAQ,SAAAU,EAAK,EACjDC,EAAM,UACT,CAGN,EACAP,EAAO,YAAc","names":["React","Slot","cva","jsx","jsxs","buttonVariants","cva","Button","className","variant","size","asChild","loading","icon","props","ref","Slot","cn"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|