UNPKG

svelte-5-ui-lib

Version:

Svelte 5 UI Lib is a UI library built from scratch to leverage Svelte 5's runes system, creating smooth, reactive components.

101 lines (100 loc) 5.66 kB
import { tv } from 'tailwind-variants'; export const toast = tv({ slots: { base: 'flex w-full max-w-xs p-4 text-gray-500 bg-white rounded-lg shadow dark:text-gray-400 dark:bg-gray-800 gap-3', icon: 'w-8 h-8 inline-flex items-center justify-center shrink-0 rounded-lg', content: 'w-full text-sm font-normal', close: 'ms-auto -mx-1.5 -my-1.5 bg-white text-gray-400 hover:text-gray-900 rounded-lg focus:ring-2 focus:ring-gray-300 p-1.5 hover:bg-gray-100 inline-flex items-center justify-center h-8 w-8 dark:text-gray-500 dark:hover:text-white dark:bg-gray-800 dark:hover:bg-gray-700' }, variants: { position: { 'top-left': { base: 'absolute top-5 start-5' }, 'top-right': { base: 'absolute top-5 end-5' }, 'bottom-left': { base: 'absolute bottom-5 start-5' }, 'bottom-right': { base: 'absolute bottom-5 end-5' } }, color: { // primary, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose primary: { icon: 'text-primary-500 bg-primary-100 dark:bg-primary-800 dark:text-primary-200', close: 'text-primary-500 dark:text-primary-200 hover:text-primary-600 dark:hover:text-primary-500' }, gray: { icon: 'text-gray-500 bg-gray-100 dark:bg-gray-700 dark:text-gray-200', close: 'text-gray-500 dark:text-gray-200 hover:text-gray-600 dark:hover:text-gray-500' }, red: { icon: 'text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200', close: 'text-red-500 dark:text-red-200 hover:text-red-600 dark:hover:text-red-500' }, orange: { icon: 'text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200', close: 'text-orange-500 dark:text-orange-200 hover:text-orange-600 dark:hover:text-orange-500' }, amber: { icon: 'text-amber-500 bg-amber-100 dark:bg-amber-700 dark:text-amber-200', close: 'text-amber-500 dark:text-amber-200 hover:text-amber-600 dark:hover:text-amber-500' }, yellow: { icon: 'text-yellow-500 bg-yellow-100 dark:bg-yellow-800 dark:text-yellow-200', close: 'text-yellow-500 dark:text-yellow-200 hover:text-yellow-600 dark:hover:text-yellow-500' }, lime: { icon: 'text-lime-500 bg-lime-100 dark:bg-lime-700 dark:text-lime-200', close: 'text-lime-500 dark:text-lime-200 hover:text-lime-600 dark:hover:text-lime-500' }, green: { icon: 'text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200', close: 'text-green-500 dark:text-green-200 hover:text-green-600 dark:hover:text-green-500' }, emerald: { icon: 'text-emerald-500 bg-emerald-100 dark:bg-emerald-800 dark:text-emerald-200', close: 'text-emerald-500 dark:text-emerald-200 hover:text-emerald-600 dark:hover:text-emerald-500' }, teal: { icon: 'text-teal-500 bg-teal-100 dark:bg-teal-800 dark:text-teal-200', close: 'text-teal-500 dark:text-teal-200 hover:text-teal-600 dark:hover:text-teal-500' }, cyan: { icon: 'text-cyan-500 bg-cyan-100 dark:bg-cyan-800 dark:text-cyan-200', close: 'text-cyan-500 dark:text-cyan-200 hover:text-cyan-600 dark:hover:text-cyan-500' }, sky: { icon: 'text-sky-500 bg-sky-100 dark:bg-sky-800 dark:text-sky-200', close: 'text-sky-500 dark:text-sky-200 hover:text-sky-600 dark:hover:text-sky-500' }, blue: { icon: 'text-blue-500 bg-blue-100 dark:bg-blue-800 dark:text-blue-200', close: 'text-blue-500 dark:text-blue-200 hover:text-blue-600 dark:hover:text-blue-500' }, indigo: { icon: 'text-indigo-500 bg-indigo-100 dark:bg-indigo-800 dark:text-indigo-200', close: 'text-indigo-500 dark:text-indigo-200 hover:text-indigo-600 dark:hover:text-indigo-500' }, violet: { icon: 'text-violet-500 bg-violet-100 dark:bg-violet-800 dark:text-violet-200', close: 'text-violet-500 dark:text-violet-200 hover:text-violet-600 dark:hover:text-violet-500' }, purple: { icon: 'text-purple-500 bg-purple-100 dark:bg-purple-800 dark:text-purple-200', close: 'text-purple-500 dark:text-purple-200 hover:text-purple-600 dark:hover:text-purple-500' }, fuchsia: { icon: 'text-fuchsia-500 bg-fuchsia-100 dark:bg-fuchsia-800 dark:text-fuchsia-200', close: 'text-fuchsia-500 dark:text-fuchsia-200 hover:text-fuchsia-600 dark:hover:text-fuchsia-500' }, pink: { icon: 'text-pink-500 bg-pink-100 dark:bg-pink-700 dark:text-pink-200', close: 'text-pink-500 dark:text-pink-200 hover:text-pink-600 dark:hover:text-pink-500' }, rose: { icon: 'text-rose-500 bg-rose-100 dark:bg-rose-700 dark:text-rose-200', close: 'text-rose-500 dark:text-rose-200 hover:text-rose-600 dark:hover:text-rose-500' } }, align: { true: { base: 'items-center' }, false: { base: 'items-start' } } } });