# PlexUI for Vue > PlexUI for Vue 3: the same components, props, markup and styles as the React library. Vue 3 components with the same names, props, defaults and markup as the React library (https://plexui.com/llms.txt). In Vue: `class` instead of `className`, slots instead of ReactNode props, `v-model:value` for controlled values, `@x` listeners for `onX` callbacks, flat named exports for compound parts (e.g. DialogTrigger), composables from @plexui/vue/composables/. Every example's code: https://plexui.com/llms-vue-full.txt Install: npm install @plexui/vue @plexui/styles Docs: https://plexui.com Components: 50 ## Setup ```css @layer theme, base, components, utilities; @import "tailwindcss"; @import "@plexui/styles/css"; @source "../node_modules/@plexui/vue"; ``` Wrap your app with from "@plexui/vue/components/PlexUIProvider" Size scale: 3xs, 2xs, xs, sm, md, lg, xl, 2xl, 3xl Colors: primary, secondary, danger, success, warning, caution, discovery, info Variants: solid, soft, outline, ghost --- ## Accordion Vertically stacked panels that expand to reveal content, with one or several items open at a time and full keyboard navigation. Import: import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@plexui/vue/components/Accordion" Docs: https://plexui.com/vue/components/accordion Props: - type ("single" | "multiple") — Required. Whether one item or many can be open at a time - v-model:value / value (string | string[]) — Controlled open item(s), named like the React prop - default-value (string | string[]) — Uncontrolled initial open item(s) - collapsible (boolean) default: false — When type="single", allow closing the open item - disabled (boolean) default: false — Disable every item - dir ("ltr" | "rtl") default: "ltr" — Reading direction - orientation ("horizontal" | "vertical") default: "vertical" — Layout axis - class (string) — Applied to the root
- @update:value ((value: string | string[]) => void) — Fires when the open item(s) change; closing the open item of a single accordion reports "" AccordionItem: - value (string) — Required. Unique identifier used by value / default-value - disabled (boolean) default: false — Disable this item - class (string) — Applied to the item wrapper Examples: Overview, Single, Multiple, Disabled, Card ## Alert Inline message for notices and warnings with semantic colors, variants, a title, a description, action slots, and a dismiss control. Import: import { Alert } from "@plexui/vue/components/Alert" Docs: https://plexui.com/vue/components/alert Props: - title (string | slot) — Title displayed in the alert - description (string | slot) — Description text - actions (slot) — Actions (for example buttons) - actions-placement ("end" | "bottom") — Placement of actions; automatic from sizing when unset - actions-class-name (string) — Class applied to the actions container - color (SemanticColors) default: "primary" — Color scheme - variant ("solid" | "soft" | "outline") default: "outline" — Style variant - indicator (slot | false) — Custom indicator (slot), or :indicator="false" to hide it - @dismiss (() => void) — Shows the dismiss button when set - banner (boolean) default: false — Full-width strip: square corners, lines above and below only Examples: Overview, Colors & variants, Title, Description, Actions, Action placement, Indicator, Dismissible, Banner ## Avatar An avatar for user identities that shows an initial, a photo or an icon, with overflow counts, semantic colors and roundness options. Import: import { Avatar } from "@plexui/vue/components/Avatar" Docs: https://plexui.com/vue/components/avatar Props: - name (string) — Display name; used for text initial when no image/icon - image-url (string) — Absolute URL for image avatar - Icon (Component) — Icon component for icon avatar, bound as :Icon - size (number) — Width and height in pixels - color ("primary" | "secondary" | "success" | "info" | "discovery" | "danger") default: "secondary" — Semantic color for text/icon avatar - variant ("soft" | "solid") default: "soft" — Style variant - overflow-count (number) — Show overflow count (e.g. +9) - class (string) — Applied to the avatar root - @click ((event: MouseEvent) => void) — Makes avatar interactive (renders a button) - @pointerdown ((event: PointerEvent) => void) — Makes avatar interactive (renders a button) Examples: Overview, Text, Image, Icon, Overflow count, Sizing, Colors & variants, Roundness, Interactive ## Avatar Group Stacks user avatars into a single overlapping cluster, with a configurable stacking direction and one size for the whole group. Import: import { Avatar, AvatarGroup } from "@plexui/vue/components/Avatar" Docs: https://plexui.com/vue/components/avatar-group Props: - default slot (VNode[]) — The avatars of the group - size (number) — Size of all avatars in the group - stack ("start" | "end") default: "start" — Stacking direction - class (string) — Applied to the group container; other attributes are not forwarded Examples: Overview, Stacking direction, Group sizing ## Badge Compact label for statuses and inline metadata, with semantic colors, three variants and sizes, icon support, and a loading state. Import: import { Badge } from "@plexui/vue/components/Badge" Docs: https://plexui.com/vue/components/badge Props: - default slot (VNode[]) — Content inside the badge - color ("secondary" | "success" | "danger" | "warning" | "info" | "discovery" | "caution") default: "secondary" — Semantic color - variant ("solid" | "soft" | "outline") default: "soft" — Style variant - size ("sm" | "md" | "lg") default: "sm" — Badge size - pill (boolean) default: false — Fully rounded - class (string) — Class applied to the badge Examples: Overview, Colors & variants, Size & roundness, Icon, Loading ## Breadcrumb The trail of pages that leads to the current one, above a page title, with links, plain steps and the current page. Import: import { Breadcrumb, BreadcrumbItem } from "@plexui/vue/components/Breadcrumb" Docs: https://plexui.com/vue/components/breadcrumb Props: - size ("sm" | "md") default: "md" — Text size: sm above a compact header, md above a page title - aria-label (string) default: "Breadcrumb" — Name of the navigation landmark - separator slot (VNode[]) default: a small chevron — What stands between two items - default slot (VNode[]) — The BreadcrumbItem elements BreadcrumbItem: - href (string) — Link destination. Internal paths use the link component from PlexUIProvider - to (string | RouteLocation) — Router destination, for link components that take to - current (boolean) default: false — The current page: plain text marked aria-current="page" - @click ((event: MouseEvent) => void) — Makes an item without a destination act as a button - class (string) — Applied to the li element Examples: Overview, Sizes, Separator, Long trails ## Button Button with four variants (solid, soft, outline, ghost), eight semantic colors, icon slots, loading, and block layout. Import: import { Button } from "@plexui/vue/components/Button" Docs: https://plexui.com/vue/components/button Props: - color ("primary" | "secondary" | "danger" | "success" | "info" | "discovery" | "caution" | "warning") default: "primary" — Visual color scheme - variant ("solid" | "soft" | "outline" | "ghost") default: "solid" — Button style variant - size ("3xs" | "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl") default: "md" — Control height and default gutter/icon size - pill (boolean) default: false — Fully rounded corners - block (boolean) default: false — Full width - uniform (boolean) default: false — Square icon button (width equals height) - disabled (boolean) default: false — Visually and accessibly disabled; click is not emitted - disabled-tone ("relaxed") — Default cursor instead of not-allowed while disabled - loading (boolean) default: false — Shows loading indicator - inert (boolean) default: loading — Accessibly disabled without visual change - selected (boolean) default: false — Selected state styling - optically-align ("start" | "end") — Offset gutter for optical alignment - gutter-size ("3xs" | "2xs" | "xs" | "sm" | "md" | "lg" | "xl") — Horizontal padding size; defaults from size - icon-size ("sm" | "md" | "lg" | "xl" | "2xl") — Size of icons in the slot; defaults from size - type ("button" | "submit" | "reset") default: "button" — Native button type - @click ((event: MouseEvent) => void) — Emitted on click, unless disabled Examples: Overview, Colors & variants, Sizing & roundness, Icons, Block, Disabled, Inert, Loading, Selected, Optical alignment ## Button Group Join buttons into a single visual unit for toolbars, steppers, split buttons and search affordances. Import: import { ButtonGroup, ButtonGroupSeparator, ButtonGroupText } from "@plexui/vue/components/ButtonGroup" Docs: https://plexui.com/vue/components/button-group Props: - orientation ("horizontal" | "vertical") default: "horizontal" — Direction of the joined items - class (string) — Applied to the root
ButtonGroupText: - as-child (boolean) default: false — Render the slotted child (e.g. a