@nuxt/ui
Version:
A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.
1,581 lines (1,551 loc) • 110 kB
JavaScript
'use strict';
const index_js = require('../../dist/runtime/utils/index.js');
require('node:url');
const scule = require('scule');
const kit = require('@nuxt/kit');
const defu = require('defu');
const colors = require('tailwindcss/colors');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
const colors__default = /*#__PURE__*/_interopDefaultCompat(colors);
const icons = {
arrowLeft: "i-lucide-arrow-left",
arrowRight: "i-lucide-arrow-right",
check: "i-lucide-check",
chevronDoubleLeft: "i-lucide-chevrons-left",
chevronDoubleRight: "i-lucide-chevrons-right",
chevronDown: "i-lucide-chevron-down",
chevronLeft: "i-lucide-chevron-left",
chevronRight: "i-lucide-chevron-right",
chevronUp: "i-lucide-chevron-up",
close: "i-lucide-x",
ellipsis: "i-lucide-ellipsis",
external: "i-lucide-arrow-up-right",
folder: "i-lucide-folder",
folderOpen: "i-lucide-folder-open",
loading: "i-lucide-refresh-cw",
minus: "i-lucide-minus",
plus: "i-lucide-plus",
search: "i-lucide-search"
};
const getDefaultUiConfig = (colors) => ({
colors: index_js.pick({
primary: "green",
secondary: "blue",
success: "green",
info: "blue",
warning: "yellow",
error: "red",
neutral: "slate"
}, [...colors || [], "neutral"]),
icons
});
const defaultOptions = {
prefix: "U",
fonts: true,
colorMode: true,
theme: {
colors: void 0,
transitions: true
}
};
const resolveColors = (colors) => {
return colors?.length ? [.../* @__PURE__ */ new Set(["primary", ...colors])] : ["primary", "secondary", "success", "info", "warning", "error"];
};
const accordion = {
slots: {
root: "w-full",
item: "border-b border-(--ui-border) last:border-b-0",
header: "flex",
trigger: "group flex-1 flex items-center gap-1.5 font-medium text-sm py-3.5 focus-visible:outline-(--ui-primary) min-w-0",
content: "data-[state=open]:animate-[accordion-down_200ms_ease-out] data-[state=closed]:animate-[accordion-up_200ms_ease-out] overflow-hidden focus:outline-none",
body: "text-sm pb-3.5",
leadingIcon: "shrink-0 size-5",
trailingIcon: "shrink-0 size-5 ms-auto group-data-[state=open]:rotate-180 transition-transform duration-200",
label: "text-start break-words"
},
variants: {
disabled: {
true: {
trigger: "cursor-not-allowed opacity-75"
}
}
}
};
const alert = (options) => ({
slots: {
root: "relative overflow-hidden w-full rounded-[calc(var(--ui-radius)*2)] p-4 flex gap-2.5",
wrapper: "min-w-0 flex-1 flex flex-col",
title: "text-sm font-medium",
description: "text-sm opacity-90",
icon: "shrink-0 size-5",
avatar: "shrink-0",
avatarSize: "2xl",
actions: "flex flex-wrap gap-1.5 shrink-0",
close: "p-0"
},
variants: {
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, ""])),
neutral: ""
},
variant: {
solid: "",
outline: "",
soft: "",
subtle: ""
},
orientation: {
horizontal: {
root: "items-center",
actions: "items-center"
},
vertical: {
root: "items-start",
actions: "items-start mt-2.5"
}
},
title: {
true: {
description: "mt-1"
}
}
},
compoundVariants: [...(options.theme.colors || []).map((color) => ({
color,
variant: "solid",
class: {
root: `bg-(--ui-${color}) text-(--ui-bg)`
}
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "outline",
class: {
root: `text-(--ui-${color}) ring ring-inset ring-(--ui-${color})/25`
}
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "soft",
class: {
root: `bg-(--ui-${color})/10 text-(--ui-${color})`
}
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "subtle",
class: {
root: `bg-(--ui-${color})/10 text-(--ui-${color}) ring ring-inset ring-(--ui-${color})/25`
}
})), {
color: "neutral",
variant: "solid",
class: {
root: "text-(--ui-bg) bg-(--ui-bg-inverted)"
}
}, {
color: "neutral",
variant: "outline",
class: {
root: "text-(--ui-text-highlighted) bg-(--ui-bg) ring ring-inset ring-(--ui-border)"
}
}, {
color: "neutral",
variant: "soft",
class: {
root: "text-(--ui-text-highlighted) bg-(--ui-bg-elevated)/50"
}
}, {
color: "neutral",
variant: "subtle",
class: {
root: "text-(--ui-text-highlighted) bg-(--ui-bg-elevated)/50 ring ring-inset ring-(--ui-border-accented)"
}
}],
defaultVariants: {
color: "primary",
variant: "solid"
}
});
const avatar = {
slots: {
root: "inline-flex items-center justify-center shrink-0 select-none overflow-hidden rounded-full align-middle bg-(--ui-bg-elevated)",
image: "h-full w-full rounded-[inherit] object-cover",
fallback: "font-medium leading-none text-(--ui-text-muted) truncate",
icon: "text-(--ui-text-muted) shrink-0"
},
variants: {
size: {
"3xs": {
root: "size-4 text-[8px]"
},
"2xs": {
root: "size-5 text-[10px]"
},
"xs": {
root: "size-6 text-xs"
},
"sm": {
root: "size-7 text-sm"
},
"md": {
root: "size-8 text-base"
},
"lg": {
root: "size-9 text-lg"
},
"xl": {
root: "size-10 text-xl"
},
"2xl": {
root: "size-11 text-[22px]"
},
"3xl": {
root: "size-12 text-2xl"
}
}
},
defaultVariants: {
size: "md"
}
};
const avatarGroup = {
slots: {
root: "inline-flex flex-row-reverse justify-end",
base: "relative rounded-full ring-(--ui-bg) first:me-0"
},
variants: {
size: {
"3xs": {
base: "ring -me-0.5"
},
"2xs": {
base: "ring -me-0.5"
},
"xs": {
base: "ring -me-0.5"
},
"sm": {
base: "ring-2 -me-1.5"
},
"md": {
base: "ring-2 -me-1.5"
},
"lg": {
base: "ring-2 -me-1.5"
},
"xl": {
base: "ring-3 -me-2"
},
"2xl": {
base: "ring-3 -me-2"
},
"3xl": {
base: "ring-3 -me-2"
}
}
},
defaultVariants: {
size: "md"
}
};
const buttonGroupVariant = {
buttonGroup: {
horizontal: "not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none",
vertical: "not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none"
}
};
const buttonGroupVariantWithRoot = {
buttonGroup: {
horizontal: {
root: "group",
base: "group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none"
},
vertical: {
root: "group",
base: "group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none"
}
}
};
const buttonGroup = {
base: "relative",
variants: {
size: {
xs: "",
sm: "",
md: "",
lg: "",
xl: ""
},
orientation: {
horizontal: "inline-flex -space-x-px",
vertical: "flex flex-col -space-y-px"
}
}
};
const badge = (options) => ({
slots: {
base: "font-medium inline-flex items-center",
label: "truncate",
leadingIcon: "shrink-0",
leadingAvatar: "shrink-0",
leadingAvatarSize: "",
trailingIcon: "shrink-0"
},
variants: {
...buttonGroupVariant,
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, ""])),
neutral: ""
},
variant: {
solid: "",
outline: "",
soft: "",
subtle: ""
},
size: {
xs: {
base: "text-[8px]/3 px-1 py-0.5 gap-1 rounded-[calc(var(--ui-radius))]",
leadingIcon: "size-3",
leadingAvatarSize: "3xs",
trailingIcon: "size-3"
},
sm: {
base: "text-[10px]/3 px-1.5 py-1 gap-1 rounded-[calc(var(--ui-radius))]",
leadingIcon: "size-3",
leadingAvatarSize: "3xs",
trailingIcon: "size-3"
},
md: {
base: "text-xs px-2 py-1 gap-1 rounded-[calc(var(--ui-radius)*1.5)]",
leadingIcon: "size-4",
leadingAvatarSize: "3xs",
trailingIcon: "size-4"
},
lg: {
base: "text-sm px-2 py-1 gap-1.5 rounded-[calc(var(--ui-radius)*1.5)]",
leadingIcon: "size-5",
leadingAvatarSize: "2xs",
trailingIcon: "size-5"
},
xl: {
base: "text-base px-2.5 py-1 gap-1.5 rounded-[calc(var(--ui-radius)*1.5)]",
leadingIcon: "size-6",
leadingAvatarSize: "2xs",
trailingIcon: "size-6"
}
}
},
compoundVariants: [...(options.theme.colors || []).map((color) => ({
color,
variant: "solid",
class: `bg-(--ui-${color}) text-(--ui-bg)`
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "outline",
class: `text-(--ui-${color}) ring ring-inset ring-(--ui-${color})/50`
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "soft",
class: `bg-(--ui-${color})/10 text-(--ui-${color})`
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "subtle",
class: `bg-(--ui-${color})/10 text-(--ui-${color}) ring ring-inset ring-(--ui-${color})/25`
})), {
color: "neutral",
variant: "solid",
class: "text-(--ui-bg) bg-(--ui-bg-inverted)"
}, {
color: "neutral",
variant: "outline",
class: "ring ring-inset ring-(--ui-border-accented) text-(--ui-text) bg-(--ui-bg)"
}, {
color: "neutral",
variant: "soft",
class: "text-(--ui-text) bg-(--ui-bg-elevated)"
}, {
color: "neutral",
variant: "subtle",
class: "ring ring-inset ring-(--ui-border-accented) text-(--ui-text) bg-(--ui-bg-elevated)"
}],
defaultVariants: {
color: "primary",
variant: "solid",
size: "md"
}
});
const breadcrumb = (options) => ({
slots: {
root: "relative min-w-0",
list: "flex items-center gap-1.5",
item: "flex min-w-0",
link: "group relative flex items-center gap-1.5 text-sm min-w-0 focus-visible:outline-(--ui-primary)",
linkLeadingIcon: "shrink-0 size-5",
linkLeadingAvatar: "shrink-0",
linkLeadingAvatarSize: "2xs",
linkLabel: "truncate",
separator: "flex",
separatorIcon: "shrink-0 size-5 text-(--ui-text-muted)"
},
variants: {
active: {
true: {
link: "text-(--ui-primary) font-semibold"
},
false: {
link: "text-(--ui-text-muted) font-medium"
}
},
disabled: {
true: {
link: "cursor-not-allowed opacity-75"
}
},
to: {
true: ""
}
},
compoundVariants: [{
disabled: false,
active: false,
to: true,
class: {
link: ["hover:text-(--ui-text)", options.theme.transitions && "transition-colors"]
}
}]
});
const button = (options) => ({
slots: {
base: ["rounded-[calc(var(--ui-radius)*1.5)] font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75", options.theme.transitions && "transition-colors"],
label: "truncate",
leadingIcon: "shrink-0",
leadingAvatar: "shrink-0",
leadingAvatarSize: "",
trailingIcon: "shrink-0"
},
variants: {
...buttonGroupVariant,
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, ""])),
neutral: ""
},
variant: {
solid: "",
outline: "",
soft: "",
subtle: "",
ghost: "",
link: ""
},
size: {
xs: {
base: "px-2 py-1 text-xs gap-1",
leadingIcon: "size-4",
leadingAvatarSize: "3xs",
trailingIcon: "size-4"
},
sm: {
base: "px-2.5 py-1.5 text-xs gap-1.5",
leadingIcon: "size-4",
leadingAvatarSize: "3xs",
trailingIcon: "size-4"
},
md: {
base: "px-2.5 py-1.5 text-sm gap-1.5",
leadingIcon: "size-5",
leadingAvatarSize: "2xs",
trailingIcon: "size-5"
},
lg: {
base: "px-3 py-2 text-sm gap-2",
leadingIcon: "size-5",
leadingAvatarSize: "2xs",
trailingIcon: "size-5"
},
xl: {
base: "px-3 py-2 text-base gap-2",
leadingIcon: "size-6",
leadingAvatarSize: "xs",
trailingIcon: "size-6"
}
},
block: {
true: {
base: "w-full justify-center",
trailingIcon: "ms-auto"
}
},
square: {
true: ""
},
leading: {
true: ""
},
trailing: {
true: ""
},
loading: {
true: ""
},
active: {
true: {
base: ""
},
false: {
base: ""
}
}
},
compoundVariants: [...(options.theme.colors || []).map((color) => ({
color,
variant: "solid",
class: `text-(--ui-bg) bg-(--ui-${color}) hover:bg-(--ui-${color})/75 disabled:bg-(--ui-${color}) aria-disabled:bg-(--ui-${color}) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--ui-${color})`
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "outline",
class: `ring ring-inset ring-(--ui-${color})/50 text-(--ui-${color}) hover:bg-(--ui-${color})/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-${color})`
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "soft",
class: `text-(--ui-${color}) bg-(--ui-${color})/10 hover:bg-(--ui-${color})/15 focus:outline-none focus-visible:bg-(--ui-${color})/15 disabled:bg-(--ui-${color})/10 aria-disabled:bg-(--ui-${color})/10`
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "subtle",
class: `text-(--ui-${color}) ring ring-inset ring-(--ui-${color})/25 bg-(--ui-${color})/10 hover:bg-(--ui-${color})/15 disabled:bg-(--ui-${color})/10 aria-disabled:bg-(--ui-${color})/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-${color})`
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "ghost",
class: `text-(--ui-${color}) hover:bg-(--ui-${color})/10 focus:outline-none focus-visible:bg-(--ui-${color})/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent`
})), ...(options.theme.colors || []).map((color) => ({
color,
variant: "link",
class: `text-(--ui-${color}) hover:text-(--ui-${color})/75 disabled:text-(--ui-${color}) aria-disabled:text-(--ui-${color}) focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--ui-${color})`
})), {
color: "neutral",
variant: "solid",
class: "text-(--ui-bg) bg-(--ui-bg-inverted) hover:bg-(--ui-bg-inverted)/90 disabled:bg-(--ui-bg-inverted) aria-disabled:bg-(--ui-bg-inverted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--ui-border-inverted)"
}, {
color: "neutral",
variant: "outline",
class: "ring ring-inset ring-(--ui-border-accented) text-(--ui-text) bg-(--ui-bg) hover:bg-(--ui-bg-elevated) disabled:bg-(--ui-bg) aria-disabled:bg-(--ui-bg) focus:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-border-inverted)"
}, {
color: "neutral",
variant: "soft",
class: "text-(--ui-text) bg-(--ui-bg-elevated) hover:bg-(--ui-bg-accented)/75 focus:outline-none focus-visible:bg-(--ui-bg-accented)/75 disabled:bg-(--ui-bg-elevated) aria-disabled:bg-(--ui-bg-elevated)"
}, {
color: "neutral",
variant: "subtle",
class: "ring ring-inset ring-(--ui-border-accented) text-(--ui-text) bg-(--ui-bg-elevated) hover:bg-(--ui-bg-accented)/75 disabled:bg-(--ui-bg-elevated) aria-disabled:bg-(--ui-bg-elevated) focus:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-border-inverted)"
}, {
color: "neutral",
variant: "ghost",
class: "text-(--ui-text) hover:bg-(--ui-bg-elevated) focus:outline-none focus-visible:bg-(--ui-bg-elevated) hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent"
}, {
color: "neutral",
variant: "link",
class: "text-(--ui-text-muted) hover:text-(--ui-text) disabled:text-(--ui-text-muted) aria-disabled:text-(--ui-text-muted) focus:outline-none focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-(--ui-border-inverted)"
}, {
size: "xs",
square: true,
class: "p-1"
}, {
size: "sm",
square: true,
class: "p-1.5"
}, {
size: "md",
square: true,
class: "p-1.5"
}, {
size: "lg",
square: true,
class: "p-2"
}, {
size: "xl",
square: true,
class: "p-2"
}, {
loading: true,
leading: true,
class: {
leadingIcon: "animate-spin"
}
}, {
loading: true,
leading: false,
trailing: true,
class: {
trailingIcon: "animate-spin"
}
}],
defaultVariants: {
color: "primary",
variant: "solid",
size: "md"
}
});
const calendar = (options) => ({
slots: {
root: "",
header: "flex items-center justify-between",
body: "flex flex-col space-y-4 pt-4 sm:flex-row sm:space-x-4 sm:space-y-0",
heading: "text-center font-medium truncate mx-auto",
grid: "w-full border-collapse select-none space-y-1 focus:outline-none",
gridRow: "grid grid-cols-7",
gridWeekDaysRow: "mb-1 grid w-full grid-cols-7",
gridBody: "grid",
headCell: "rounded-[calc(var(--ui-radius)*1.5)]",
cell: "relative text-center",
cellTrigger: ["m-0.5 relative flex items-center justify-center rounded-full whitespace-nowrap focus-visible:ring-2 focus:outline-none data-disabled:text-(--ui-text-muted) data-unavailable:line-through data-unavailable:text-(--ui-text-muted) data-unavailable:pointer-events-none data-[selected]:text-(--ui-bg) data-today:font-semibold data-[outside-view]:text-(--ui-text-muted)", options.theme.transitions && "transition"]
},
variants: {
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, {
headCell: `text-(--ui-${color})`,
cellTrigger: `focus-visible:ring-(--ui-${color}) data-[selected]:bg-(--ui-${color}) data-today:not-data-[selected]:text-(--ui-${color}) data-[highlighted]:bg-(--ui-${color})/20 hover:not-data-[selected]:bg-(--ui-${color})/20`
}])),
neutral: {
headCell: "text-(--ui-bg-inverted)",
cellTrigger: "focus-visible:ring-(--ui-border-inverted) data-[selected]:bg-(--ui-bg-inverted) data-today:not-data-[selected]:text-(--ui-bg-inverted) data-[highlighted]:bg-(--ui-bg-inverted)/20 hover:not-data-[selected]:bg-(--ui-bg-inverted)/10"
}
},
size: {
xs: {
heading: "text-xs",
cell: "text-xs",
headCell: "text-[10px]",
cellTrigger: "size-7",
body: "space-y-2 pt-2"
},
sm: {
heading: "text-xs",
headCell: "text-xs",
cell: "text-xs",
cellTrigger: "size-7"
},
md: {
heading: "text-sm",
headCell: "text-xs",
cell: "text-sm",
cellTrigger: "size-8"
},
lg: {
heading: "text-md",
headCell: "text-md",
cellTrigger: "size-9 text-md"
},
xl: {
heading: "text-lg",
headCell: "text-lg",
cellTrigger: "size-10 text-lg"
}
}
},
defaultVariants: {
size: "md",
color: "primary"
}
});
const card = {
slots: {
root: "rounded-[calc(var(--ui-radius)*2)]",
header: "p-4 sm:px-6",
body: "p-4 sm:p-6",
footer: "p-4 sm:px-6"
},
variants: {
variant: {
solid: {
root: "bg-(--ui-bg-inverted) text-(--ui-bg)"
},
outline: {
root: "bg-(--ui-bg) ring ring-(--ui-border) divide-y divide-(--ui-border)"
},
soft: {
root: "bg-(--ui-bg-elevated)/50 divide-y divide-(--ui-border)"
},
subtle: {
root: "bg-(--ui-bg-elevated)/50 ring ring-(--ui-border) divide-y divide-(--ui-border)"
}
}
},
defaultVariants: {
variant: "outline"
}
};
const carousel = (options) => ({
slots: {
root: "relative focus:outline-none",
viewport: "overflow-hidden",
container: "flex items-start",
item: "min-w-0 shrink-0 basis-full",
controls: "",
arrows: "",
prev: "absolute rounded-full",
next: "absolute rounded-full",
dots: "absolute inset-x-0 -bottom-7 flex flex-wrap items-center justify-center gap-3",
dot: ["cursor-pointer size-3 bg-(--ui-border-accented) rounded-full", options.theme.transitions && "transition"]
},
variants: {
orientation: {
vertical: {
container: "flex-col -mt-4",
item: "pt-4",
prev: "-top-12 left-1/2 -translate-x-1/2 rotate-90 rtl:-rotate-90",
next: "-bottom-12 left-1/2 -translate-x-1/2 rotate-90 rtl:-rotate-90"
},
horizontal: {
container: "flex-row -ms-4",
item: "ps-4",
prev: "-start-12 top-1/2 -translate-y-1/2",
next: "-end-12 top-1/2 -translate-y-1/2"
}
},
active: {
true: {
dot: "bg-(--ui-border-inverted)"
}
}
}
});
const checkbox = (options) => ({
slots: {
root: "relative flex items-start",
base: "shrink-0 flex items-center justify-center rounded-(--ui-radius) text-(--ui-bg) ring ring-inset ring-(--ui-border-accented) focus-visible:outline-2 focus-visible:outline-offset-2",
container: "flex items-center",
wrapper: "ms-2",
icon: "shrink-0 size-full",
label: "block font-medium text-(--ui-text)",
description: "text-(--ui-text-muted)"
},
variants: {
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, `focus-visible:outline-(--ui-${color})`])),
neutral: "focus-visible:outline-(--ui-border-inverted)"
},
size: {
xs: {
base: "size-3",
container: "h-4",
wrapper: "text-xs"
},
sm: {
base: "size-3.5",
container: "h-4",
wrapper: "text-xs"
},
md: {
base: "size-4",
container: "h-5",
wrapper: "text-sm"
},
lg: {
base: "size-4.5",
container: "h-5",
wrapper: "text-sm"
},
xl: {
base: "size-5",
container: "h-6",
wrapper: "text-base"
}
},
required: {
true: {
label: "after:content-['*'] after:ms-0.5 after:text-(--ui-error)"
}
},
disabled: {
true: {
base: "cursor-not-allowed opacity-75",
label: "cursor-not-allowed opacity-75",
description: "cursor-not-allowed opacity-75"
}
},
checked: {
true: ""
}
},
compoundVariants: [...(options.theme.colors || []).map((color) => ({
color,
checked: true,
class: `ring-2 ring-(--ui-${color}) bg-(--ui-${color})`
})), {
color: "neutral",
checked: true,
class: "ring-2 ring-(--ui-border-inverted) bg-(--ui-bg-inverted)"
}],
defaultVariants: {
size: "md",
color: "primary"
}
});
const chip = (options) => ({
slots: {
root: "relative inline-flex items-center justify-center shrink-0",
base: "rounded-full ring ring-(--ui-bg) flex items-center justify-center text-(--ui-bg) font-medium whitespace-nowrap"
},
variants: {
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, `bg-(--ui-${color})`])),
neutral: "bg-(--ui-text-muted)"
},
size: {
"3xs": "h-[4px] min-w-[4px] text-[4px]",
"2xs": "h-[5px] min-w-[5px] text-[5px]",
"xs": "h-[6px] min-w-[6px] text-[6px]",
"sm": "h-[7px] min-w-[7px] text-[7px]",
"md": "h-[8px] min-w-[8px] text-[8px]",
"lg": "h-[9px] min-w-[9px] text-[9px]",
"xl": "h-[10px] min-w-[10px] text-[10px]",
"2xl": "h-[11px] min-w-[11px] text-[11px]",
"3xl": "h-[12px] min-w-[12px] text-[12px]"
},
position: {
"top-right": "top-0 right-0",
"bottom-right": "bottom-0 right-0",
"top-left": "top-0 left-0",
"bottom-left": "bottom-0 left-0"
},
inset: {
false: ""
},
standalone: {
false: "absolute"
}
},
compoundVariants: [{
position: "top-right",
inset: false,
class: "-translate-y-1/2 translate-x-1/2 transform"
}, {
position: "bottom-right",
inset: false,
class: "translate-y-1/2 translate-x-1/2 transform"
}, {
position: "top-left",
inset: false,
class: "-translate-y-1/2 -translate-x-1/2 transform"
}, {
position: "bottom-left",
inset: false,
class: "translate-y-1/2 -translate-x-1/2 transform"
}],
defaultVariants: {
size: "md",
color: "primary",
position: "top-right"
}
});
const collapsible = {
slots: {
root: "",
content: "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] overflow-hidden"
}
};
const colorPicker = {
slots: {
root: "data-[disabled]:opacity-75",
picker: "flex gap-4",
selector: "rounded-[calc(var(--ui-radius)*1.5)]",
selectorBackground: "w-full h-full relative rounded-[calc(var(--ui-radius)*1.2)]",
selectorThumb: "-translate-y-1/2 -translate-x-1/2 absolute size-4 ring-2 ring-(--color-white) rounded-full cursor-pointer data-[disabled]:cursor-not-allowed",
track: "w-[8px] relative rounded-[calc(var(--ui-radius)*1.5)]",
trackThumb: "absolute transform -translate-y-1/2 -translate-x-[4px] rtl:translate-x-[4px] size-4 rounded-full ring-2 ring-(--color-white) cursor-pointer data-[disabled]:cursor-not-allowed"
},
variants: {
size: {
xs: {
selector: "w-38 h-38",
track: "h-38"
},
sm: {
selector: "w-40 h-40",
track: "h-40"
},
md: {
selector: "w-42 h-42",
track: "h-42"
},
lg: {
selector: "w-44 h-44",
track: "h-44"
},
xl: {
selector: "w-46 h-46",
track: "h-46"
}
}
},
compoundVariants: [],
defaultVariants: {
size: "md"
}
};
const commandPalette = (options) => ({
slots: {
root: "flex flex-col min-h-0 min-w-0 divide-y divide-(--ui-border)",
input: "[&>input]:h-12",
close: "",
content: "relative overflow-hidden flex flex-col",
viewport: "relative divide-y divide-(--ui-border) scroll-py-1 overflow-y-auto flex-1 focus:outline-none",
group: "p-1 isolate",
empty: "py-6 text-center text-sm text-(--ui-text-muted)",
label: "px-2 py-1.5 text-xs font-semibold text-(--ui-text-highlighted)",
item: "group relative w-full flex items-center gap-2 px-2 py-1.5 text-sm select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-[calc(var(--ui-radius)*1.5)] data-disabled:cursor-not-allowed data-disabled:opacity-75",
itemLeadingIcon: "shrink-0 size-5",
itemLeadingAvatar: "shrink-0",
itemLeadingAvatarSize: "2xs",
itemLeadingChip: "shrink-0 size-5",
itemLeadingChipSize: "md",
itemTrailing: "ms-auto inline-flex gap-1.5 items-center",
itemTrailingIcon: "shrink-0 size-5",
itemTrailingHighlightedIcon: "shrink-0 size-5 text-(--ui-text-dimmed) hidden group-data-highlighted:inline-flex",
itemTrailingKbds: "hidden lg:inline-flex items-center shrink-0 gap-0.5",
itemTrailingKbdsSize: "md",
itemLabel: "truncate space-x-1 rtl:space-x-reverse text-(--ui-text-dimmed)",
itemLabelBase: "text-(--ui-text-highlighted) [&>mark]:text-(--ui-bg) [&>mark]:bg-(--ui-primary)",
itemLabelPrefix: "text-(--ui-text)",
itemLabelSuffix: "text-(--ui-text-dimmed) [&>mark]:text-(--ui-bg) [&>mark]:bg-(--ui-primary)"
},
variants: {
active: {
true: {
item: "text-(--ui-text-highlighted) before:bg-(--ui-bg-elevated)",
itemLeadingIcon: "text-(--ui-text)"
},
false: {
item: ["text-(--ui-text) data-highlighted:text-(--ui-text-highlighted) data-highlighted:before:bg-(--ui-bg-elevated)/50", options.theme.transitions && "transition-colors before:transition-colors"],
itemLeadingIcon: ["text-(--ui-text-dimmed) group-data-highlighted:text-(--ui-text)", options.theme.transitions && "transition-colors"]
}
},
loading: {
true: {
itemLeadingIcon: "animate-spin"
}
}
}
});
const container = {
base: "w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8"
};
const contextMenu = (options) => ({
slots: {
content: "min-w-32 bg-(--ui-bg) shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-(--ui-border) divide-y divide-(--ui-border) overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
group: "p-1 isolate",
label: "w-full flex items-center font-semibold text-(--ui-text-highlighted)",
separator: "-mx-1 my-1 h-px bg-(--ui-border)",
item: "group relative w-full flex items-center select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-[calc(var(--ui-radius)*1.5)] data-disabled:cursor-not-allowed data-disabled:opacity-75",
itemLeadingIcon: "shrink-0",
itemLeadingAvatar: "shrink-0",
itemLeadingAvatarSize: "",
itemTrailing: "ms-auto inline-flex gap-1.5 items-center",
itemTrailingIcon: "shrink-0",
itemTrailingKbds: "hidden lg:inline-flex items-center shrink-0",
itemTrailingKbdsSize: "",
itemLabel: "truncate",
itemLabelExternalIcon: "inline-block size-3 align-top text-(--ui-text-dimmed)"
},
variants: {
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, ""])),
neutral: ""
},
active: {
true: {
item: "text-(--ui-text-highlighted) before:bg-(--ui-bg-elevated)",
itemLeadingIcon: "text-(--ui-text)"
},
false: {
item: ["text-(--ui-text) data-highlighted:text-(--ui-text-highlighted) data-[state=open]:text-(--ui-text-highlighted) data-highlighted:before:bg-(--ui-bg-elevated)/50 data-[state=open]:before:bg-(--ui-bg-elevated)/50", options.theme.transitions && "transition-colors before:transition-colors"],
itemLeadingIcon: ["text-(--ui-text-dimmed) group-data-highlighted:text-(--ui-text) group-data-[state=open]:text-(--ui-text)", options.theme.transitions && "transition-colors"]
}
},
loading: {
true: {
itemLeadingIcon: "animate-spin"
}
},
size: {
xs: {
label: "p-1 text-xs gap-1",
item: "p-1 text-xs gap-1",
itemLeadingIcon: "size-4",
itemLeadingAvatarSize: "3xs",
itemTrailingIcon: "size-4",
itemTrailingKbds: "gap-0.5",
itemTrailingKbdsSize: "sm"
},
sm: {
label: "p-1.5 text-xs gap-1.5",
item: "p-1.5 text-xs gap-1.5",
itemLeadingIcon: "size-4",
itemLeadingAvatarSize: "3xs",
itemTrailingIcon: "size-4",
itemTrailingKbds: "gap-0.5",
itemTrailingKbdsSize: "sm"
},
md: {
label: "p-1.5 text-sm gap-1.5",
item: "p-1.5 text-sm gap-1.5",
itemLeadingIcon: "size-5",
itemLeadingAvatarSize: "2xs",
itemTrailingIcon: "size-5",
itemTrailingKbds: "gap-0.5",
itemTrailingKbdsSize: "md"
},
lg: {
label: "p-2 text-sm gap-2",
item: "p-2 text-sm gap-2",
itemLeadingIcon: "size-5",
itemLeadingAvatarSize: "2xs",
itemTrailingIcon: "size-5",
itemTrailingKbds: "gap-1",
itemTrailingKbdsSize: "md"
},
xl: {
label: "p-2 text-base gap-2",
item: "p-2 text-base gap-2",
itemLeadingIcon: "size-6",
itemLeadingAvatarSize: "xs",
itemTrailingIcon: "size-6",
itemTrailingKbds: "gap-1",
itemTrailingKbdsSize: "lg"
}
}
},
compoundVariants: [...(options.theme.colors || []).map((color) => ({
color,
active: false,
class: {
item: `text-(--ui-${color}) data-highlighted:text-(--ui-${color}) data-highlighted:before:bg-(--ui-${color})/10 data-[state=open]:before:bg-(--ui-${color})/10`,
itemLeadingIcon: `text-(--ui-${color})/75 group-data-highlighted:text-(--ui-${color}) group-data-[state=open]:text-(--ui-${color})`
}
})), ...(options.theme.colors || []).map((color) => ({
color,
active: true,
class: {
item: `text-(--ui-${color}) before:bg-(--ui-${color})/10`,
itemLeadingIcon: `text-(--ui-${color})`
}
}))],
defaultVariants: {
size: "md"
}
});
const drawer = (options) => ({
slots: {
overlay: "fixed inset-0 bg-(--ui-bg-elevated)/75",
content: "fixed bg-(--ui-bg) ring ring-(--ui-border) flex focus:outline-none",
handle: ["shrink-0 !bg-(--ui-bg-accented)", options.theme.transitions && "transition-opacity"],
container: "w-full flex flex-col gap-4 p-4 overflow-y-auto",
header: "",
title: "text-(--ui-text-highlighted) font-semibold",
description: "mt-1 text-(--ui-text-muted) text-sm",
body: "flex-1",
footer: "flex flex-col gap-1.5"
},
variants: {
direction: {
top: {
content: "mb-24 flex-col-reverse",
handle: "mb-4"
},
right: {
content: "flex-row",
handle: "!ml-4"
},
bottom: {
content: "mt-24 flex-col",
handle: "mt-4"
},
left: {
content: "flex-row-reverse",
handle: "!mr-4"
}
},
inset: {
true: {
content: "rounded-[calc(var(--ui-radius)*2)] after:hidden"
}
}
},
compoundVariants: [{
direction: ["top", "bottom"],
class: {
content: "h-auto max-h-[96%]",
handle: "!w-12 !h-1.5 mx-auto"
}
}, {
direction: ["right", "left"],
class: {
content: "w-auto max-w-[calc(100%-2rem)]",
handle: "!h-12 !w-1.5 mt-auto mb-auto"
}
}, {
direction: "top",
inset: true,
class: {
content: "inset-x-4 top-4"
}
}, {
direction: "top",
inset: false,
class: {
content: "inset-x-0 top-0 rounded-b-[calc(var(--ui-radius)*2)]"
}
}, {
direction: "bottom",
inset: true,
class: {
content: "inset-x-4 bottom-4"
}
}, {
direction: "bottom",
inset: false,
class: {
content: "inset-x-0 bottom-0 rounded-t-[calc(var(--ui-radius)*2)]"
}
}, {
direction: "left",
inset: true,
class: {
content: "inset-y-4 left-4"
}
}, {
direction: "left",
inset: false,
class: {
content: "inset-y-0 left-0 rounded-r-[calc(var(--ui-radius)*2)]"
}
}, {
direction: "right",
inset: true,
class: {
content: "inset-y-4 right-4"
}
}, {
direction: "right",
inset: false,
class: {
content: "inset-y-0 right-0 rounded-l-[calc(var(--ui-radius)*2)]"
}
}]
});
const dropdownMenu = (options) => ({
slots: {
content: "min-w-32 bg-(--ui-bg) shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-(--ui-border) divide-y divide-(--ui-border) overflow-y-auto scroll-py-1 data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
arrow: "fill-(--ui-border)",
group: "p-1 isolate",
label: "w-full flex items-center font-semibold text-(--ui-text-highlighted)",
separator: "-mx-1 my-1 h-px bg-(--ui-border)",
item: "group relative w-full flex items-center select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-[calc(var(--ui-radius)*1.5)] data-disabled:cursor-not-allowed data-disabled:opacity-75",
itemLeadingIcon: "shrink-0",
itemLeadingAvatar: "shrink-0",
itemLeadingAvatarSize: "",
itemTrailing: "ms-auto inline-flex gap-1.5 items-center",
itemTrailingIcon: "shrink-0",
itemTrailingKbds: "hidden lg:inline-flex items-center shrink-0",
itemTrailingKbdsSize: "",
itemLabel: "truncate",
itemLabelExternalIcon: "inline-block size-3 align-top text-(--ui-text-dimmed)"
},
variants: {
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, ""])),
neutral: ""
},
active: {
true: {
item: "text-(--ui-text-highlighted) before:bg-(--ui-bg-elevated)",
itemLeadingIcon: "text-(--ui-text)"
},
false: {
item: ["text-(--ui-text) data-highlighted:text-(--ui-text-highlighted) data-[state=open]:text-(--ui-text-highlighted) data-highlighted:before:bg-(--ui-bg-elevated)/50 data-[state=open]:before:bg-(--ui-bg-elevated)/50", options.theme.transitions && "transition-colors before:transition-colors"],
itemLeadingIcon: ["text-(--ui-text-dimmed) group-data-highlighted:text-(--ui-text) group-data-[state=open]:text-(--ui-text)", options.theme.transitions && "transition-colors"]
}
},
loading: {
true: {
itemLeadingIcon: "animate-spin"
}
},
size: {
xs: {
label: "p-1 text-xs gap-1",
item: "p-1 text-xs gap-1",
itemLeadingIcon: "size-4",
itemLeadingAvatarSize: "3xs",
itemTrailingIcon: "size-4",
itemTrailingKbds: "gap-0.5",
itemTrailingKbdsSize: "sm"
},
sm: {
label: "p-1.5 text-xs gap-1.5",
item: "p-1.5 text-xs gap-1.5",
itemLeadingIcon: "size-4",
itemLeadingAvatarSize: "3xs",
itemTrailingIcon: "size-4",
itemTrailingKbds: "gap-0.5",
itemTrailingKbdsSize: "sm"
},
md: {
label: "p-1.5 text-sm gap-1.5",
item: "p-1.5 text-sm gap-1.5",
itemLeadingIcon: "size-5",
itemLeadingAvatarSize: "2xs",
itemTrailingIcon: "size-5",
itemTrailingKbds: "gap-0.5",
itemTrailingKbdsSize: "md"
},
lg: {
label: "p-2 text-sm gap-2",
item: "p-2 text-sm gap-2",
itemLeadingIcon: "size-5",
itemLeadingAvatarSize: "2xs",
itemTrailingIcon: "size-5",
itemTrailingKbds: "gap-1",
itemTrailingKbdsSize: "md"
},
xl: {
label: "p-2 text-base gap-2",
item: "p-2 text-base gap-2",
itemLeadingIcon: "size-6",
itemLeadingAvatarSize: "xs",
itemTrailingIcon: "size-6",
itemTrailingKbds: "gap-1",
itemTrailingKbdsSize: "lg"
}
}
},
compoundVariants: [...(options.theme.colors || []).map((color) => ({
color,
active: false,
class: {
item: `text-(--ui-${color}) data-highlighted:text-(--ui-${color}) data-highlighted:before:bg-(--ui-${color})/10 data-[state=open]:before:bg-(--ui-${color})/10`,
itemLeadingIcon: `text-(--ui-${color})/75 group-data-highlighted:text-(--ui-${color}) group-data-[state=open]:text-(--ui-${color})`
}
})), ...(options.theme.colors || []).map((color) => ({
color,
active: true,
class: {
item: `text-(--ui-${color}) before:bg-(--ui-${color})/10`,
itemLeadingIcon: `text-(--ui-${color})`
}
}))],
defaultVariants: {
size: "md"
}
});
const form = {
base: ""
};
const formField = {
slots: {
root: "",
wrapper: "",
labelWrapper: "flex content-center items-center justify-between",
label: "block font-medium text-(--ui-text)",
container: "mt-1 relative",
description: "text-(--ui-text-muted)",
error: "mt-2 text-(--ui-error)",
hint: "text-(--ui-text-muted)",
help: "mt-2 text-(--ui-text-muted)"
},
variants: {
size: {
xs: { root: "text-xs" },
sm: { root: "text-xs" },
md: { root: "text-sm" },
lg: { root: "text-sm" },
xl: { root: "text-base" }
},
required: {
true: {
label: `after:content-['*'] after:ms-0.5 after:text-(--ui-error)`
}
}
},
defaultVariants: {
size: "md"
}
};
const input = (options) => ({
slots: {
root: "relative inline-flex items-center",
base: ["w-full rounded-[calc(var(--ui-radius)*1.5)] border-0 placeholder:text-(--ui-text-dimmed) focus:outline-none disabled:cursor-not-allowed disabled:opacity-75", options.theme.transitions && "transition-colors"],
leading: "absolute inset-y-0 start-0 flex items-center",
leadingIcon: "shrink-0 text-(--ui-text-dimmed)",
leadingAvatar: "shrink-0",
leadingAvatarSize: "",
trailing: "absolute inset-y-0 end-0 flex items-center",
trailingIcon: "shrink-0 text-(--ui-text-dimmed)"
},
variants: {
...buttonGroupVariantWithRoot,
size: {
xs: {
base: "px-2 py-1 text-xs gap-1",
leading: "ps-2",
trailing: "pe-2",
leadingIcon: "size-4",
leadingAvatarSize: "3xs",
trailingIcon: "size-4"
},
sm: {
base: "px-2.5 py-1.5 text-xs gap-1.5",
leading: "ps-2.5",
trailing: "pe-2.5",
leadingIcon: "size-4",
leadingAvatarSize: "3xs",
trailingIcon: "size-4"
},
md: {
base: "px-2.5 py-1.5 text-sm gap-1.5",
leading: "ps-2.5",
trailing: "pe-2.5",
leadingIcon: "size-5",
leadingAvatarSize: "2xs",
trailingIcon: "size-5"
},
lg: {
base: "px-3 py-2 text-sm gap-2",
leading: "ps-3",
trailing: "pe-3",
leadingIcon: "size-5",
leadingAvatarSize: "2xs",
trailingIcon: "size-5"
},
xl: {
base: "px-3 py-2 text-base gap-2",
leading: "ps-3",
trailing: "pe-3",
leadingIcon: "size-6",
leadingAvatarSize: "xs",
trailingIcon: "size-6"
}
},
variant: {
outline: "text-(--ui-text-highlighted) bg-(--ui-bg) ring ring-inset ring-(--ui-border-accented)",
soft: "text-(--ui-text-highlighted) bg-(--ui-bg-elevated)/50 hover:bg-(--ui-bg-elevated) focus:bg-(--ui-bg-elevated) disabled:bg-(--ui-bg-elevated)/50",
subtle: "text-(--ui-text-highlighted) bg-(--ui-bg-elevated) ring ring-inset ring-(--ui-border-accented)",
ghost: "text-(--ui-text-highlighted) bg-transparent hover:bg-(--ui-bg-elevated) focus:bg-(--ui-bg-elevated) disabled:bg-transparent dark:disabled:bg-transparent",
none: "text-(--ui-text-highlighted) bg-transparent"
},
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, ""])),
neutral: ""
},
leading: {
true: ""
},
trailing: {
true: ""
},
loading: {
true: ""
},
highlight: {
true: ""
},
type: {
file: "file:me-1.5 file:font-medium file:text-(--ui-text-muted) file:outline-none"
}
},
compoundVariants: [...(options.theme.colors || []).map((color) => ({
color,
variant: ["outline", "subtle"],
class: `focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--ui-${color})`
})), ...(options.theme.colors || []).map((color) => ({
color,
highlight: true,
class: `ring ring-inset ring-(--ui-${color})`
})), {
color: "neutral",
variant: ["outline", "subtle"],
class: "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--ui-border-inverted)"
}, {
color: "neutral",
highlight: true,
class: "ring ring-inset ring-(--ui-border-inverted)"
}, {
leading: true,
size: "xs",
class: "ps-7"
}, {
leading: true,
size: "sm",
class: "ps-8"
}, {
leading: true,
size: "md",
class: "ps-9"
}, {
leading: true,
size: "lg",
class: "ps-10"
}, {
leading: true,
size: "xl",
class: "ps-11"
}, {
trailing: true,
size: "xs",
class: "pe-7"
}, {
trailing: true,
size: "sm",
class: "pe-8"
}, {
trailing: true,
size: "md",
class: "pe-9"
}, {
trailing: true,
size: "lg",
class: "pe-10"
}, {
trailing: true,
size: "xl",
class: "pe-11"
}, {
loading: true,
leading: true,
class: {
leadingIcon: "animate-spin"
}
}, {
loading: true,
leading: false,
trailing: true,
class: {
trailingIcon: "animate-spin"
}
}],
defaultVariants: {
size: "md",
color: "primary",
variant: "outline"
}
});
const inputMenu = (options) => {
return defu.defuFn({
slots: {
base: () => ["rounded-[calc(var(--ui-radius)*1.5)]", options.theme.transitions && "transition-colors"],
trailing: "group absolute inset-y-0 end-0 flex items-center disabled:cursor-not-allowed disabled:opacity-75",
arrow: "fill-(--ui-border)",
content: "max-h-60 w-(--reka-popper-anchor-width) bg-(--ui-bg) shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-(--ui-border) overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] pointer-events-auto",
viewport: "divide-y divide-(--ui-border) scroll-py-1",
group: "p-1 isolate",
empty: "py-2 text-center text-sm text-(--ui-text-muted)",
label: "font-semibold text-(--ui-text-highlighted)",
separator: "-mx-1 my-1 h-px bg-(--ui-border)",
item: ["group relative w-full flex items-center gap-1.5 p-1.5 text-sm select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-[calc(var(--ui-radius)*1.5)] data-disabled:cursor-not-allowed data-disabled:opacity-75 text-(--ui-text) data-highlighted:text-(--ui-text-highlighted) data-highlighted:before:bg-(--ui-bg-elevated)/50", options.theme.transitions && "transition-colors before:transition-colors"],
itemLeadingIcon: ["shrink-0 text-(--ui-text-dimmed) group-data-highlighted:text-(--ui-text)", options.theme.transitions && "transition-colors"],
itemLeadingAvatar: "shrink-0",
itemLeadingAvatarSize: "",
itemLeadingChip: "shrink-0",
itemLeadingChipSize: "",
itemTrailing: "ms-auto inline-flex gap-1.5 items-center",
itemTrailingIcon: "shrink-0",
itemLabel: "truncate",
tagsItem: "px-1.5 py-0.5 rounded-(--ui-radius) font-medium inline-flex items-center gap-0.5 ring ring-inset ring-(--ui-border-accented) bg-(--ui-bg-elevated) text-(--ui-text) data-disabled:cursor-not-allowed data-disabled:opacity-75",
tagsItemText: "truncate",
tagsItemDelete: ["inline-flex items-center rounded-[calc(var(--ui-radius)/2)] text-(--ui-text-dimmed) hover:text-(--ui-text) hover:bg-(--ui-bg-accented)/75 disabled:pointer-events-none", options.theme.transitions && "transition-colors"],
tagsItemDeleteIcon: "",
tagsInput: ""
},
variants: {
multiple: {
true: {
root: "flex-wrap",
tagsInput: "border-0 bg-transparent placeholder:text-(--ui-text-dimmed) focus:outline-none disabled:cursor-not-allowed disabled:opacity-75"
},
false: {
base: "w-full border-0 placeholder:text-(--ui-text-dimmed) focus:outline-none disabled:cursor-not-allowed disabled:opacity-75"
}
},
size: {
xs: {
label: "p-1 text-[10px]/3 gap-1",
item: "p-1 text-xs gap-1",
itemLeadingIcon: "size-4",
itemLeadingAvatarSize: "3xs",
itemLeadingChip: "size-4",
itemLeadingChipSize: "sm",
itemTrailingIcon: "size-4",
tagsItem: "text-[10px]/3",
tagsItemDeleteIcon: "size-3"
},
sm: {
label: "p-1.5 text-[10px]/3 gap-1.5",
item: "p-1.5 text-xs gap-1.5",
itemLeadingIcon: "size-4",
itemLeadingAvatarSize: "3xs",
itemLeadingChip: "size-4",
itemLeadingChipSize: "sm",
itemTrailingIcon: "size-4",
tagsItem: "text-[10px]/3",
tagsItemDeleteIcon: "size-3"
},
md: {
label: "p-1.5 text-xs gap-1.5",
item: "p-1.5 text-sm gap-1.5",
itemLeadingIcon: "size-5",
itemLeadingAvatarSize: "2xs",
itemLeadingChip: "size-5",
itemLeadingChipSize: "md",
itemTrailingIcon: "size-5",
tagsItem: "text-xs",
tagsItemDeleteIcon: "size-3.5"
},
lg: {
label: "p-2 text-xs gap-2",
item: "p-2 text-sm gap-2",
itemLeadingIcon: "size-5",
itemLeadingAvatarSize: "2xs",
itemLeadingChip: "size-5",
itemLeadingChipSize: "md",
itemTrailingIcon: "size-5",
tagsItem: "text-xs",
tagsItemDeleteIcon: "size-3.5"
},
xl: {
label: "p-2 text-sm gap-2",
item: "p-2 text-base gap-2",
itemLeadingIcon: "size-6",
itemLeadingAvatarSize: "xs",
itemLeadingChip: "size-6",
itemLeadingChipSize: "lg",
itemTrailingIcon: "size-6",
tagsItem: "text-sm",
tagsItemDeleteIcon: "size-4"
}
}
},
compoundVariants: [...(options.theme.colors || []).map((color) => ({
color,
multiple: true,
variant: ["outline", "subtle"],
class: `has-focus-visible:ring-2 has-focus-visible:ring-(--ui-${color})`
})), {
color: "neutral",
multiple: true,
variant: ["outline", "subtle"],
class: "has-focus-visible:ring-2 has-focus-visible:ring-(--ui-border-inverted)"
}]
}, input(options));
};
const inputNumber = (options) => {
const input$1 = input(options);
return {
slots: {
root: "relative inline-flex items-center",
base: ["w-full rounded-[calc(var(--ui-radius)*1.5)] border-0 placeholder:text-(--ui-text-dimmed) focus:outline-none disabled:cursor-not-allowed disabled:opacity-75", options.theme.transitions && "transition-colors"],
increment: "absolute flex items-center",
decrement: "absolute flex items-center"
},
variants: {
color: {
...Object.fromEntries((options.theme.colors || []).map((color) => [color, ""])),
neutral: ""
},