ivt
Version:
Ivt Components Library
1 lines • 10.6 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../src/components/ui/field/field.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport React from \"react\";\n\nimport { Label } from \"@/components/ui/label\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n\treturn (\n\t\t<fieldset\n\t\t\tdata-slot=\"field-set\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col gap-6\",\n\t\t\t\t\"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldLegend({\n\tclassName,\n\tvariant = \"legend\",\n\t...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n\treturn (\n\t\t<legend\n\t\t\tdata-slot=\"field-legend\"\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(\n\t\t\t\t\"mb-3 font-medium\",\n\t\t\t\t\"data-[variant=legend]:text-base\",\n\t\t\t\t\"data-[variant=label]:text-sm\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"field-group\"\n\t\t\tclassName={cn(\n\t\t\t\t\"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst fieldVariants = cva(\"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\", {\n\tvariants: {\n\t\torientation: {\n\t\t\tvertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n\t\t\thorizontal: [\n\t\t\t\t\"flex-row items-center\",\n\t\t\t\t\"[&>[data-slot=field-label]]:flex-auto\",\n\t\t\t\t\"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n\t\t\t],\n\t\t\tresponsive: [\n\t\t\t\t\"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto\",\n\t\t\t\t\"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n\t\t\t\t\"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n\t\t\t],\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\torientation: \"vertical\",\n\t},\n});\n\nfunction Field({\n\tclassName,\n\torientation = \"vertical\",\n\t...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n\treturn (\n\t\t// biome-ignore lint/a11y/useSemanticElements: <group>\n\t\t<div\n\t\t\trole=\"group\"\n\t\t\tdata-slot=\"field\"\n\t\t\tdata-orientation={orientation}\n\t\t\tclassName={cn(fieldVariants({ orientation }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"field-content\"\n\t\t\tclassName={cn(\"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>) {\n\treturn (\n\t\t<Label\n\t\t\tdata-slot=\"field-label\"\n\t\t\tclassName={cn(\n\t\t\t\t\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n\t\t\t\t\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n\t\t\t\t\"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"field-label\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n\treturn (\n\t\t<p\n\t\t\tdata-slot=\"field-description\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n\t\t\t\t\"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\n\t\t\t\t\"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldSeparator({\n\tchildren,\n\tclassName,\n\t...props\n}: React.ComponentProps<\"div\"> & {\n\tchildren?: React.ReactNode;\n}) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"field-separator\"\n\t\t\tdata-content={!!children}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Separator className=\"absolute inset-0 top-1/2\" />\n\t\t\t{children && (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n\t\t\t\t\tdata-slot=\"field-separator-content\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction FieldError({\n\tclassName,\n\tchildren,\n\terrors,\n\t...props\n}: React.ComponentProps<\"div\"> & {\n\terrors?: Array<{ message?: string } | undefined>;\n}) {\n\tconst content = React.useMemo(() => {\n\t\tif (children) {\n\t\t\treturn children;\n\t\t}\n\n\t\tif (!errors?.length) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (errors?.length === 1) {\n\t\t\treturn errors[0]?.message;\n\t\t}\n\n\t\treturn (\n\t\t\t<ul className=\"ml-4 flex list-disc flex-col gap-1\">\n\t\t\t\t{errors.map((error, index) => error?.message && <li key={index}>{error.message}</li>)}\n\t\t\t</ul>\n\t\t);\n\t}, [children, errors]);\n\n\tif (!content) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\trole=\"alert\"\n\t\t\tdata-slot=\"field-error\"\n\t\t\tclassName={cn(\"text-destructive text-sm font-normal\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{content}\n\t\t</div>\n\t);\n}\n\nexport {\n\tField,\n\tFieldLabel,\n\tFieldDescription,\n\tFieldError,\n\tFieldGroup,\n\tFieldLegend,\n\tFieldSeparator,\n\tFieldSet,\n\tFieldContent,\n\tFieldTitle,\n};\n"],"names":["FieldSet","className","props","React","fieldset","data-slot","cn","FieldLegend","variant","legend","data-variant","FieldGroup","div","fieldVariants","cva","variants","orientation","vertical","horizontal","responsive","defaultVariants","Field","role","data-orientation","FieldContent","FieldLabel","Label","FieldTitle","FieldDescription","p","FieldSeparator","children","data-content","Separator","span","FieldError","errors","content","useMemo","length","message","ul","map","error","index","li","key"],"mappings":"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"}