input-group
AI Chat interface with file and context attachments
AI Chat interface with file and context attachments
Загрузка превью…
src/input-group/c-input-group-19.vue
<!--
Расхождение с апстримом: `IconPlaceholder` заменена инлайновым `<svg>`
(lucide-react v0.545.0 "at-sign"/"paperclip"/"file-text"/"chevron-down"/
"image"/"corner-down-left") — см. docs/PORTING.md §5. Плавающий слой
(`DropdownMenuContent`) не раскрывается в кейсе.
-->
<script setup lang="ts">
import { ref } from "vue"
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"
import { Field } from "@/components/ui/field"
import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupTextarea } from "@/components/ui/input-group"
const model = ref("GPT-4o")
</script>
<template>
<Field class="max-w-xs">
<InputGroup class="bg-background">
<InputGroupAddon align="block-start" class="gap-2 px-3 pt-3">
<InputGroupButton variant="outline" size="icon-xs">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-at-sign size-3.5"
>
<circle cx="12" cy="12" r="4" />
<path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8" />
</svg>
</InputGroupButton>
<InputGroupButton variant="outline">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-paperclip size-3.5 not-only:rotate-45"
>
<path d="m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551" />
</svg>
1
</InputGroupButton>
<InputGroupButton variant="outline">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-file-text size-3.5 not-only:rotate-45"
>
<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" />
<path d="M14 2v4a2 2 0 0 0 2 2h4" />
<path d="M10 9H8" />
<path d="M16 13H8" />
<path d="M16 17H8" />
</svg>
1 Tab
</InputGroupButton>
</InputGroupAddon>
<InputGroupTextarea
placeholder="Plan, search, build anything"
class="min-h-24 border-none py-4 shadow-none focus-visible:ring-0"
/>
<InputGroupAddon align="block-end" class="px-3 pb-3">
<DropdownMenu>
<DropdownMenuTrigger as-child>
<InputGroupButton variant="secondary" size="sm">
{{ model }}
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-chevron-down"
>
<path d="m6 9 6 6 6-6" />
</svg>
</InputGroupButton>
</DropdownMenuTrigger>
<DropdownMenuContent align="start">
<DropdownMenuItem @click="model = 'GPT-4o'">GPT-4o</DropdownMenuItem>
<DropdownMenuItem @click="model = 'Claude 3.5 Sonnet'">Claude 3.5 Sonnet</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
<div class="ml-auto flex items-center gap-2">
<InputGroupButton variant="secondary" size="icon-sm">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-image text-muted-foreground"
>
<rect width="18" height="18" x="3" y="3" rx="2" ry="2" />
<circle cx="9" cy="9" r="2" />
<path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" />
</svg>
</InputGroupButton>
<InputGroupButton variant="default" size="icon-sm">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-corner-down-left"
>
<path d="M20 4v7a4 4 0 0 1-4 4H4" />
<path d="m9 10-5 5 5 5" />
</svg>
</InputGroupButton>
</div>
</InputGroupAddon>
</InputGroup>
</Field>
</template>
Установка
npx shadcn-vue@latest add https://revueui.rootapi.dev/r/c-input-group-19.jsonЗависимости реестра
Источник: порт из ReUI (Keenthemes, MIT)