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.

151 lines (150 loc) 7.33 kB
import { tv } from 'tailwind-variants'; const alert = tv({ base: 'p-4 gap-3 text-sm', variants: { color: { // primary, secondary, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose primary: 'bg-primary-50 dark:bg-gray-800 text-primary-800 dark:text-primary-400', secondary: 'bg-secondary-50 dark:bg-secondary-800 text-secondary-800 dark:text-secondary-400', gray: 'bg-gray-100 text-gray-500 hover:bg-gray-200 focus:ring-gray-400 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-800 dark:hover:text-white', red: 'bg-red-100 text-red-500 hover:bg-red-200 focus:ring-red-400 dark:bg-red-200 dark:text-red-600 dark:hover:bg-red-300', orange: 'bg-orange-100 text-orange-500 hover:bg-orange-200 focus:ring-orange-400 dark:bg-orange-200 dark:text-orange-600 dark:hover:bg-orange-300', amber: 'bg-amber-100 text-amber-500 hover:bg-amber-200 focus:ring-amber-400 dark:bg-amber-200 dark:text-amber-600 dark:hover:bg-amber-300', yellow: 'bg-yellow-100 text-yellow-500 hover:bg-yellow-200 focus:ring-yellow-400 dark:bg-yellow-200 dark:text-yellow-600 dark:hover:bg-yellow-300', lime: 'bg-lime-100 text-lime-500 hover:bg-lime-200 focus:ring-lime-400 dark:bg-lime-200 dark:text-lime-600 dark:hover:bg-lime-300', green: 'bg-green-100 text-green-500 hover:bg-green-200 focus:ring-green-400 dark:bg-green-200 dark:text-green-600 dark:hover:bg-green-300', emerald: 'bg-emerald-100 text-emerald-500 hover:bg-emerald-200 focus:ring-emerald-400 dark:bg-emerald-200 dark:text-emerald-600 dark:hover:bg-emerald-300', teal: 'bg-teal-100 text-teal-500 hover:bg-teal-200 focus:ring-teal-400 dark:bg-teal-200 dark:text-teal-600 dark:hover:bg-teal-300', cyan: 'bg-cyan-100 text-cyan-500 hover:bg-cyan-200 focus:ring-cyan-400 dark:bg-cyan-200 dark:text-cyan-600 dark:hover:bg-cyan-300', sky: 'bg-sky-100 text-sky-500 hover:bg-sky-200 focus:ring-sky-400 dark:bg-sky-200 dark:text-sky-600 dark:hover:bg-sky-300', blue: 'bg-blue-100 text-blue-500 hover:bg-blue-200 focus:ring-blue-400 dark:bg-blue-200 dark:text-blue-600 dark:hover:bg-blue-300', indigo: 'bg-indigo-100 text-indigo-500 hover:bg-indigo-200 focus:ring-indigo-400 dark:bg-indigo-200 dark:text-indigo-600 dark:hover:bg-indigo-300', violet: 'bg-violet-100 text-violet-500 hover:bg-violet-200 focus:ring-violet-400 dark:bg-violet-200 dark:text-violet-600 dark:hover:bg-violet-300', purple: 'bg-purple-100 text-purple-500 hover:bg-purple-200 focus:ring-purple-400 dark:bg-purple-200 dark:text-purple-600 dark:hover:bg-purple-300', fuchsia: 'bg-fuchsia-100 text-fuchsia-500 hover:bg-fuchsia-200 focus:ring-fuchsia-400 dark:bg-fuchsia-200 dark:text-fuchsia-600 dark:hover:bg-fuchsia-300', pink: 'bg-pink-100 text-pink-500 hover:bg-pink-200 focus:ring-pink-400 dark:bg-pink-200 dark:text-pink-600 dark:hover:bg-pink-300', rose: 'bg-rose-100 text-rose-500 hover:bg-rose-200 focus:ring-rose-400 dark:bg-rose-200 dark:text-rose-600 dark:hover:bg-rose-300' }, rounded: { true: 'rounded-lg' }, border: { true: 'border' }, icon: { true: 'flex items-center' }, dismissable: { true: 'flex items-center' } }, compoundVariants: [ // primary, secondary, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose { border: true, color: 'primary', class: 'border-primary-500 dark:border-primary-200 divide-primary-500 dark:divide-primary-200' }, { border: true, color: 'secondary', class: 'border-secondary-500 dark:border-secondary-200 divide-secondary-500 dark:divide-secondary-200' }, { border: true, color: 'gray', class: 'border-gray-300 dark:border-gray-800 divide-gray-300 dark:divide-gray-800' }, { border: true, color: 'red', class: 'border-red-300 dark:border-red-800 divide-red-300 dark:divide-red-800' }, { border: true, color: 'orange', class: 'border-orange-300 dark:border-orange-800 divide-orange-300 dark:divide-orange-800' }, { border: true, color: 'amber', class: 'border-amber-300 dark:border-amber-800 divide-amber-300 dark:divide-amber-800' }, { border: true, color: 'yellow', class: 'border-yellow-300 dark:border-yellow-800 divide-yellow-300 dark:divide-yellow-800' }, { border: true, color: 'lime', class: 'border-lime-300 dark:border-lime-800 divide-lime-300 dark:divide-lime-800' }, { border: true, color: 'green', class: 'border-green-300 dark:border-green-800 divide-green-300 dark:divide-green-800' }, { border: true, color: 'emerald', class: 'border-emerald-300 dark:border-emerald-800 divide-emerald-300 dark:divide-emerald-800' }, { border: true, color: 'teal', class: 'border-teal-300 dark:border-teal-800 divide-teal-300 dark:divide-teal-800' }, { border: true, color: 'cyan', class: 'border-cyan-300 dark:border-cyan-800 divide-cyan-300 dark:divide-cyan-800' }, { border: true, color: 'sky', class: 'border-sky-300 dark:border-sky-800 divide-sky-300 dark:divide-sky-800' }, { border: true, color: 'blue', class: 'border-blue-300 dark:border-blue-800 divide-blue-300 dark:divide-blue-800' }, { border: true, color: 'indigo', class: 'border-indigo-300 dark:border-indigo-800 divide-indigo-300 dark:divide-indigo-800' }, // violet, purple, fuchsia, pink, rose { border: true, color: 'violet', class: 'border-violet-300 dark:border-violet-800 divide-violet-300 dark:divide-violet-800' }, { border: true, color: 'purple', class: 'border-purple-300 dark:border-purple-800 divide-purple-300 dark:divide-purple-800' }, { border: true, color: 'fuchsia', class: 'border-fuchsia-300 dark:border-fuchsia-800 divide-fuchsia-300 dark:divide-fuchsia-800' }, { border: true, color: 'pink', class: 'border-pink-300 dark:border-pink-800 divide-pink-300 dark:divide-pink-800' }, { border: true, color: 'rose', class: 'border-rose-300 dark:border-rose-800 divide-rose-300 dark:divide-rose-800' } ], defaultVariants: { color: 'primary', rounded: true } }); export { alert };