field

Settings form with validation

Settings form with validation

Загрузка превью…

src/field/c-field-7.vue

<script setup lang="ts">
import { Button } from "@/components/ui/button"
import { Checkbox } from "@/components/ui/checkbox"
import { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldSeparator, FieldTitle } from "@/components/ui/field"
import { Input } from "@/components/ui/input"
import { Switch } from "@/components/ui/switch"
import { Textarea } from "@/components/ui/textarea"
</script>

<template>
  <div class="mx-auto w-full max-w-xs">
    <FieldGroup>
      <Field>
        <FieldLabel for="settings-name">
          Display Name <span class="text-destructive">*</span>
        </FieldLabel>
        <Input id="settings-name" value="Alex Johnson" />
        <FieldDescription>This is your public display name.</FieldDescription>
      </Field>
      <Field data-invalid="true">
        <FieldLabel for="settings-slug">URL Slug</FieldLabel>
        <Input id="settings-slug" value="alex johnson" />
        <FieldError>
          Slug can only contain lowercase letters, numbers, and hyphens.
        </FieldError>
      </Field>
      <Field>
        <div class="flex items-center justify-between">
          <FieldLabel for="settings-bio">Bio</FieldLabel>
          <span class="text-muted-foreground text-xs">24/160</span>
        </div>
        <Textarea
          id="settings-bio"
          value="Software engineer & open source contributor."
          class="min-h-[80px]"
        />
        <FieldDescription>
          Brief description for your profile.
        </FieldDescription>
      </Field>
      <FieldSeparator />
      <Field orientation="horizontal">
        <FieldContent>
          <FieldTitle>Email Notifications</FieldTitle>
          <FieldDescription>
            Receive emails about account activity.
          </FieldDescription>
        </FieldContent>
        <Switch id="settings-email-notif" :default-value="true" />
      </Field>
      <Field orientation="horizontal">
        <FieldContent>
          <FieldTitle>Marketing Emails</FieldTitle>
          <FieldDescription>
            Receive emails about new features and tips.
          </FieldDescription>
        </FieldContent>
        <Switch id="settings-marketing" />
      </Field>
      <FieldSeparator />
      <Field orientation="horizontal">
        <Checkbox id="settings-terms" />
        <FieldContent>
          <FieldTitle>Terms of Service</FieldTitle>
          <FieldDescription>
            I agree to the <a href="#">Terms of Service</a> and <a href="#">Privacy Policy</a>.
          </FieldDescription>
        </FieldContent>
      </Field>
      <Button class="w-full">Save Changes</Button>
    </FieldGroup>
  </div>
</template>

Установка

npx shadcn-vue@latest add https://revueui.rootapi.dev/r/c-field-7.json

Зависимости реестра

Источник: порт из ReUI (Keenthemes, MIT)