ivt
Version:
Ivt Components Library
1 lines • 8.35 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../src/components/ui/input-group/input-group.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { cn } from \"@/lib/utils\";\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t// biome-ignore lint/a11y/useSemanticElements: <group>\n\t\t<div\n\t\t\tdata-slot=\"input-group\"\n\t\t\trole=\"group\"\n\t\t\tclassName={cn(\n\t\t\t\t\"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none\",\n\t\t\t\t\"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n\t\t\t\t// Variants based on alignment.\n\t\t\t\t\"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n\t\t\t\t\"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n\t\t\t\t\"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n\t\t\t\t\"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n\t\t\t\t// Focus state.\n\t\t\t\t\"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n\n\t\t\t\t// Error state.\n\t\t\t\t\"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst inputGroupAddonVariants = cva(\n\t\"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50\",\n\t{\n\t\tvariants: {\n\t\t\talign: {\n\t\t\t\t\"inline-start\": \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n\t\t\t\t\"inline-end\": \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n\t\t\t\t\"block-start\":\n\t\t\t\t\t\"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5\",\n\t\t\t\t\"block-end\":\n\t\t\t\t\t\"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\talign: \"inline-start\",\n\t\t},\n\t},\n);\n\nfunction InputGroupAddon({\n\tclassName,\n\talign = \"inline-start\",\n\t...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n\treturn (\n\t\t// biome-ignore lint/a11y/useKeyWithClickEvents: <useKeyWithClickEvents>\n\t\t// biome-ignore lint/a11y/useSemanticElements: <group>\n\t\t<div\n\t\t\trole=\"group\"\n\t\t\tdata-slot=\"input-group-addon\"\n\t\t\tdata-align={align}\n\t\t\tclassName={cn(inputGroupAddonVariants({ align }), className)}\n\t\t\tonClick={(e) => {\n\t\t\t\tif ((e.target as HTMLElement).closest(\"button\")) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\te.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst inputGroupButtonVariants = cva(\"text-sm shadow-none flex gap-2 items-center\", {\n\tvariants: {\n\t\tsize: {\n\t\t\txs: \"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2\",\n\t\t\tsm: \"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5\",\n\t\t\t\"icon-xs\": \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n\t\t\t\"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tsize: \"xs\",\n\t},\n});\n\nfunction InputGroupButton({\n\tclassName,\n\ttype = \"button\",\n\tvariant = \"ghost\",\n\tsize = \"xs\",\n\t...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n\tVariantProps<typeof inputGroupButtonVariants>) {\n\treturn (\n\t\t<Button\n\t\t\ttype={type}\n\t\t\tdata-size={size}\n\t\t\tvariant={variant}\n\t\t\tclassName={cn(inputGroupButtonVariants({ size }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction InputGroupInput({ className, ...props }: React.ComponentProps<\"input\">) {\n\treturn (\n\t\t<Input\n\t\t\tdata-slot=\"input-group-control\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction InputGroupTextarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n\treturn (\n\t\t<Textarea\n\t\t\tdata-slot=\"input-group-control\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tInputGroup,\n\tInputGroupAddon,\n\tInputGroupButton,\n\tInputGroupText,\n\tInputGroupInput,\n\tInputGroupTextarea,\n};\n"],"names":["InputGroup","className","props","div","data-slot","role","cn","inputGroupAddonVariants","cva","variants","align","defaultVariants","InputGroupAddon","data-align","onClick","e","target","closest","currentTarget","parentElement","querySelector","focus","inputGroupButtonVariants","size","xs","sm","InputGroupButton","type","variant","Button","data-size","InputGroupText","span","InputGroupInput","Input","InputGroupTextarea","Textarea"],"mappings":";;;;;;;;;AAUA,SAASA,UAAAA,CAAW,EAAEC,SAAS,EAAE,GAAGC,KAAAA,EAAoC,EAAA;AACvE,IAAA;kBAEC,KAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA;QACAC,WAAAA,EAAU,aAAA;QACVC,IAAAA,EAAK,OAAA;QACLJ,SAAAA,EAAWK,EAAAA,CACV,0JAAA,EACA,oCAAA;QAGA,iDAAA,EACA,+CAAA,EACA,gIAAA,EACA,0HAAA;AAGA,QAAA,iMAAA;QAGA,gLAAA,EAEAL,SAAAA,CAAAA;AAEA,QAAA,GAAGC;;AAGP;AAEA,MAAMK,uBAAAA,GAA0BC,IAC/B,yPAAA,EACA;IACCC,QAAAA,EAAU;QACTC,KAAAA,EAAO;YACN,cAAA,EAAgB,uEAAA;YAChB,YAAA,EAAc,sEAAA;YACd,aAAA,EACC,mGAAA;YACD,WAAA,EACC;AACF;AACD,KAAA;IACAC,eAAAA,EAAiB;QAChBD,KAAAA,EAAO;AACR;AACD,CAAA,CAAA;AAGD,SAASE,eAAAA,CAAgB,EACxBX,SAAS,EACTS,QAAQ,cAAc,EACtB,GAAGR,KAAAA,EACyE,EAAA;AAC5E,IAAA;;kBAGC,KAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA;QACAE,IAAAA,EAAK,OAAA;QACLD,WAAAA,EAAU,mBAAA;QACVS,YAAAA,EAAYH,KAAAA;AACZT,QAAAA,SAAAA,EAAWK,GAAGC,uBAAAA,CAAwB;AAAEG,YAAAA;SAAM,CAAA,EAAIT,SAAAA,CAAAA;AAClDa,QAAAA,OAAAA,EAAS,CAACC,CAAAA,GAAAA;AACT,YAAA,IAAI,CAACA,CAAEC,MAAM,CAAiBC,OAAO,CAAC,QAAA,CAAA,EAAW;AAChD,gBAAA;AACD,YAAA;AACAF,YAAAA,CAAAA,CAAEG,aAAa,CAACC,aAAa,EAAEC,cAAc,OAAA,CAAA,EAAUC,KAAAA,EAAAA;AACxD,QAAA,CAAA;AACC,QAAA,GAAGnB;;AAGP;AAEA,MAAMoB,wBAAAA,GAA2Bd,IAAI,6CAAA,EAA+C;IACnFC,QAAAA,EAAU;QACTc,IAAAA,EAAM;YACLC,EAAAA,EAAI,yGAAA;YACJC,EAAAA,EAAI,iDAAA;YACJ,SAAA,EAAW,6DAAA;YACX,SAAA,EAAW;AACZ;AACD,KAAA;IACAd,eAAAA,EAAiB;QAChBY,IAAAA,EAAM;AACP;AACD,CAAA,CAAA;AAEA,SAASG,gBAAAA,CAAiB,EACzBzB,SAAS,EACT0B,OAAO,QAAQ,EACfC,OAAAA,GAAU,OAAO,EACjBL,IAAAA,GAAO,IAAI,EACX,GAAGrB,KAAAA,EAE0C,EAAA;AAC7C,IAAA,qBACC,KAAA,CAAA,aAAA,CAAC2B,MAAAA,EAAAA;QACAF,IAAAA,EAAMA,IAAAA;QACNG,WAAAA,EAAWP,IAAAA;QACXK,OAAAA,EAASA,OAAAA;AACT3B,QAAAA,SAAAA,EAAWK,GAAGgB,wBAAAA,CAAyB;AAAEC,YAAAA;SAAK,CAAA,EAAItB,SAAAA,CAAAA;AACjD,QAAA,GAAGC;;AAGP;AAEA,SAAS6B,cAAAA,CAAe,EAAE9B,SAAS,EAAE,GAAGC,KAAAA,EAAqC,EAAA;AAC5E,IAAA,qBACC,KAAA,CAAA,aAAA,CAAC8B,MAAAA,EAAAA;AACA/B,QAAAA,SAAAA,EAAWK,GACV,wHAAA,EACAL,SAAAA,CAAAA;AAEA,QAAA,GAAGC;;AAGP;AAEA,SAAS+B,eAAAA,CAAgB,EAAEhC,SAAS,EAAE,GAAGC,KAAAA,EAAsC,EAAA;AAC9E,IAAA,qBACC,KAAA,CAAA,aAAA,CAACgC,KAAAA,EAAAA;QACA9B,WAAAA,EAAU,qBAAA;AACVH,QAAAA,SAAAA,EAAWK,GACV,kGAAA,EACAL,SAAAA,CAAAA;AAEA,QAAA,GAAGC;;AAGP;AAEA,SAASiC,kBAAAA,CAAmB,EAAElC,SAAS,EAAE,GAAGC,KAAAA,EAAyC,EAAA;AACpF,IAAA,qBACC,KAAA,CAAA,aAAA,CAACkC,QAAAA,EAAAA;QACAhC,WAAAA,EAAU,qBAAA;AACVH,QAAAA,SAAAA,EAAWK,GACV,mHAAA,EACAL,SAAAA,CAAAA;AAEA,QAAA,GAAGC;;AAGP;;;;"}