franken-ui
Version:
Franken UI is an HTML-first, open-source library of UI components based on the utility-first Tailwind CSS with UIkit 3 compatibility. The design is based on shadcn/ui ported to be framework-agnostic.
522 lines (521 loc) • 20.1 kB
JavaScript
import plugin from 'tailwindcss/plugin.js';
export const variables = {
'.theme-zinc': {
'--background': '0 0% 100%',
'--foreground': '240 10% 3.9%',
'--muted': '240 4.8% 95.9%',
'--muted-foreground': '240 3.8% 46.1%',
'--popover': '0 0% 100%',
'--popover-foreground': '240 10% 3.9%',
'--card': '0 0% 100%',
'--card-foreground': '240 10% 3.9%',
'--border': '240 5.9% 90%',
'--input': '240 5.9% 90%',
'--primary': '240 5.9% 10%',
'--primary-foreground': '0 0% 98%',
'--secondary': '240 4.8% 95.9%',
'--secondary-foreground': '240 5.9% 10%',
'--accent': '240 4.8% 95.9%',
'--accent-foreground': '240 5.9% 10%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '0 0% 98%',
'--ring': '240 5.9% 10%'
},
'.dark .theme-zinc': {
'--background': '240 10% 3.9%',
'--foreground': '0 0% 98%',
'--muted': '240 3.7% 15.9%',
'--muted-foreground': '240 5% 64.9%',
'--popover': '240 10% 3.9%',
'--popover-foreground': '0 0% 98%',
'--card': '240 10% 3.9%',
'--card-foreground': '0 0% 98%',
'--border': '240 3.7% 15.9%',
'--input': '240 3.7% 15.9%',
'--primary': '0 0% 98%',
'--primary-foreground': '240 5.9% 10%',
'--secondary': '240 3.7% 15.9%',
'--secondary-foreground': '0 0% 98%',
'--accent': '240 3.7% 15.9%',
'--accent-foreground': '0 0% 98%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '0 0% 98%',
'--ring': '240 4.9% 83.9%'
},
'.theme-slate': {
'--background': '0 0% 100%',
'--foreground': '222.2 84% 4.9%',
'--muted': '210 40% 96.1%',
'--muted-foreground': '215.4 16.3% 46.9%',
'--popover': '0 0% 100%',
'--popover-foreground': '222.2 84% 4.9%',
'--card': '0 0% 100%',
'--card-foreground': '222.2 84% 4.9%',
'--border': '214.3 31.8% 91.4%',
'--input': '214.3 31.8% 91.4%',
'--primary': '222.2 47.4% 11.2%',
'--primary-foreground': '210 40% 98%',
'--secondary': '210 40% 96.1%',
'--secondary-foreground': '222.2 47.4% 11.2%',
'--accent': '210 40% 96.1%',
'--accent-foreground': '222.2 47.4% 11.2%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '210 40% 98%',
'--ring': '222.2 84% 4.9%'
},
'.dark .theme-slate': {
'--background': '222.2 84% 4.9%',
'--foreground': '210 40% 98%',
'--muted': '217.2 32.6% 17.5%',
'--muted-foreground': '215 20.2% 65.1%',
'--popover': '222.2 84% 4.9%',
'--popover-foreground': '210 40% 98%',
'--card': '222.2 84% 4.9%',
'--card-foreground': '210 40% 98%',
'--border': '217.2 32.6% 17.5%',
'--input': '217.2 32.6% 17.5%',
'--primary': '210 40% 98%',
'--primary-foreground': '222.2 47.4% 11.2%',
'--secondary': '217.2 32.6% 17.5%',
'--secondary-foreground': '210 40% 98%',
'--accent': '217.2 32.6% 17.5%',
'--accent-foreground': '210 40% 98%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '210 40% 98%',
'--ring': '212.7 26.8% 83.9'
},
'.theme-stone': {
'--background': '0 0% 100%',
'--foreground': '20 14.3% 4.1%',
'--muted': '60 4.8% 95.9%',
'--muted-foreground': '25 5.3% 44.7%',
'--popover': '0 0% 100%',
'--popover-foreground': '20 14.3% 4.1%',
'--card': '0 0% 100%',
'--card-foreground': '20 14.3% 4.1%',
'--border': '20 5.9% 90%',
'--input': '20 5.9% 90%',
'--primary': '24 9.8% 10%',
'--primary-foreground': '60 9.1% 97.8%',
'--secondary': '60 4.8% 95.9%',
'--secondary-foreground': '24 9.8% 10%',
'--accent': '60 4.8% 95.9%',
'--accent-foreground': '24 9.8% 10%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '60 9.1% 97.8%',
'--ring': '20 14.3% 4.1%'
},
'.dark .theme-stone': {
'--background': '20 14.3% 4.1%',
'--foreground': '60 9.1% 97.8%',
'--muted': '12 6.5% 15.1%',
'--muted-foreground': '24 5.4% 63.9%',
'--popover': '20 14.3% 4.1%',
'--popover-foreground': '60 9.1% 97.8%',
'--card': '20 14.3% 4.1%',
'--card-foreground': '60 9.1% 97.8%',
'--border': '12 6.5% 15.1%',
'--input': '12 6.5% 15.1%',
'--primary': '60 9.1% 97.8%',
'--primary-foreground': '24 9.8% 10%',
'--secondary': '12 6.5% 15.1%',
'--secondary-foreground': '60 9.1% 97.8%',
'--accent': '12 6.5% 15.1%',
'--accent-foreground': '60 9.1% 97.8%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '60 9.1% 97.8%',
'--ring': '24 5.7% 82.9%'
},
'.theme-gray': {
'--background': '0 0% 100%',
'--foreground': '224 71.4% 4.1%',
'--muted': '220 14.3% 95.9%',
'--muted-foreground': '220 8.9% 46.1%',
'--popover': '0 0% 100%',
'--popover-foreground': '224 71.4% 4.1%',
'--card': '0 0% 100%',
'--card-foreground': '224 71.4% 4.1%',
'--border': '220 13% 91%',
'--input': '220 13% 91%',
'--primary': '220.9 39.3% 11%',
'--primary-foreground': '210 20% 98%',
'--secondary': '220 14.3% 95.9%',
'--secondary-foreground': '220.9 39.3% 11%',
'--accent': '220 14.3% 95.9%',
'--accent-foreground': '220.9 39.3% 11%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '210 20% 98%',
'--ring': '224 71.4% 4.1%'
},
'.dark .theme-gray': {
'--background': '224 71.4% 4.1%',
'--foreground': '210 20% 98%',
'--muted': '215 27.9% 16.9%',
'--muted-foreground': '217.9 10.6% 64.9%',
'--popover': '224 71.4% 4.1%',
'--popover-foreground': '210 20% 98%',
'--card': '224 71.4% 4.1%',
'--card-foreground': '210 20% 98%',
'--border': '215 27.9% 16.9%',
'--input': '215 27.9% 16.9%',
'--primary': '210 20% 98%',
'--primary-foreground': '220.9 39.3% 11%',
'--secondary': '215 27.9% 16.9%',
'--secondary-foreground': '210 20% 98%',
'--accent': '215 27.9% 16.9%',
'--accent-foreground': '210 20% 98%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '210 20% 98%',
'--ring': '216 12.2% 83.9%'
},
'.theme-neutral': {
'--background': '0 0% 100%',
'--foreground': '0 0% 3.9%',
'--muted': '0 0% 96.1%',
'--muted-foreground': '0 0% 45.1%',
'--popover': '0 0% 100%',
'--popover-foreground': '0 0% 3.9%',
'--card': '0 0% 100%',
'--card-foreground': '0 0% 3.9%',
'--border': '0 0% 89.8%',
'--input': '0 0% 89.8%',
'--primary': '0 0% 9%',
'--primary-foreground': '0 0% 98%',
'--secondary': '0 0% 96.1%',
'--secondary-foreground': '0 0% 9%',
'--accent': '0 0% 96.1%',
'--accent-foreground': '0 0% 9%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '0 0% 98%',
'--ring': '0 0% 3.9%'
},
'.dark .theme-neutral': {
'--background': '0 0% 3.9%',
'--foreground': '0 0% 98%',
'--muted': '0 0% 14.9%',
'--muted-foreground': '0 0% 63.9%',
'--popover': '0 0% 3.9%',
'--popover-foreground': '0 0% 98%',
'--card': '0 0% 3.9%',
'--card-foreground': '0 0% 98%',
'--border': '0 0% 14.9%',
'--input': '0 0% 14.9%',
'--primary': '0 0% 98%',
'--primary-foreground': '0 0% 9%',
'--secondary': '0 0% 14.9%',
'--secondary-foreground': '0 0% 98%',
'--accent': '0 0% 14.9%',
'--accent-foreground': '0 0% 98%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '0 0% 98%',
'--ring': '0 0% 83.1%'
},
'.theme-red': {
'--background': '0 0% 100%',
'--foreground': '0 0% 3.9%',
'--muted': '0 0% 96.1%',
'--muted-foreground': '0 0% 45.1%',
'--popover': '0 0% 100%',
'--popover-foreground': '0 0% 3.9%',
'--card': '0 0% 100%',
'--card-foreground': '0 0% 3.9%',
'--border': '0 0% 89.8%',
'--input': '0 0% 89.8%',
'--primary': '0 72.2% 50.6%',
'--primary-foreground': '0 85.7% 97.3%',
'--secondary': '0 0% 96.1%',
'--secondary-foreground': '0 0% 9%',
'--accent': '0 0% 96.1%',
'--accent-foreground': '0 0% 9%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '0 0% 98%',
'--ring': '0 72.2% 50.6%'
},
'.dark .theme-red': {
'--background': '0 0% 3.9%',
'--foreground': '0 0% 98%',
'--muted': '0 0% 14.9%',
'--muted-foreground': '0 0% 63.9%',
'--popover': '0 0% 3.9%',
'--popover-foreground': '0 0% 98%',
'--card': '0 0% 3.9%',
'--card-foreground': '0 0% 98%',
'--border': '0 0% 14.9%',
'--input': '0 0% 14.9%',
'--primary': '0 72.2% 50.6%',
'--primary-foreground': '0 85.7% 97.3%',
'--secondary': '0 0% 14.9%',
'--secondary-foreground': '0 0% 98%',
'--accent': '0 0% 14.9%',
'--accent-foreground': '0 0% 98%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '0 0% 98%',
'--ring': '0 72.2% 50.6%'
},
'.theme-rose': {
'--background': '0 0% 100%',
'--foreground': '240 10% 3.9%',
'--muted': '240 4.8% 95.9%',
'--muted-foreground': '240 3.8% 46.1%',
'--popover': '0 0% 100%',
'--popover-foreground': '240 10% 3.9%',
'--card': '0 0% 100%',
'--card-foreground': '240 10% 3.9%',
'--border': '240 5.9% 90%',
'--input': '240 5.9% 90%',
'--primary': '346.8 77.2% 49.8%',
'--primary-foreground': '355.7 100% 97.3%',
'--secondary': '240 4.8% 95.9%',
'--secondary-foreground': '240 5.9% 10%',
'--accent': '240 4.8% 95.9%',
'--accent-foreground': '240 5.9% 10%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '0 0% 98%',
'--ring': '346.8 77.2% 49.8%'
},
'.dark .theme-rose': {
'--background': '20 14.3% 4.1%',
'--foreground': '0 0% 95%',
'--muted': '0 0% 15%',
'--muted-foreground': '240 5% 64.9%',
'--popover': '0 0% 9%',
'--popover-foreground': '0 0% 95%',
'--card': '24 9.8% 10%',
'--card-foreground': '0 0% 95%',
'--border': '240 3.7% 15.9%',
'--input': '240 3.7% 15.9%',
'--primary': '346.8 77.2% 49.8%',
'--primary-foreground': '355.7 100% 97.3%',
'--secondary': '240 3.7% 15.9%',
'--secondary-foreground': '0 0% 98%',
'--accent': '12 6.5% 15.1%',
'--accent-foreground': '0 0% 98%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '0 85.7% 97.3%',
'--ring': '346.8 77.2% 49.8%'
},
'.theme-orange': {
'--background': '0 0% 100%',
'--foreground': '20 14.3% 4.1%',
'--muted': '60 4.8% 95.9%',
'--muted-foreground': '25 5.3% 44.7%',
'--popover': '0 0% 100%',
'--popover-foreground': '20 14.3% 4.1%',
'--card': '0 0% 100%',
'--card-foreground': '20 14.3% 4.1%',
'--border': '20 5.9% 90%',
'--input': '20 5.9% 90%',
'--primary': '24.6 95% 53.1%',
'--primary-foreground': '60 9.1% 97.8%',
'--secondary': '60 4.8% 95.9%',
'--secondary-foreground': '24 9.8% 10%',
'--accent': '60 4.8% 95.9%',
'--accent-foreground': '24 9.8% 10%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '60 9.1% 97.8%',
'--ring': '24.6 95% 53.1%'
},
'.dark .theme-orange': {
'--background': '20 14.3% 4.1%',
'--foreground': '60 9.1% 97.8%',
'--muted': '12 6.5% 15.1%',
'--muted-foreground': '24 5.4% 63.9%',
'--popover': '20 14.3% 4.1%',
'--popover-foreground': '60 9.1% 97.8%',
'--card': '20 14.3% 4.1%',
'--card-foreground': '60 9.1% 97.8%',
'--border': '12 6.5% 15.1%',
'--input': '12 6.5% 15.1%',
'--primary': '20.5 90.2% 48.2%',
'--primary-foreground': '60 9.1% 97.8%',
'--secondary': '12 6.5% 15.1%',
'--secondary-foreground': '60 9.1% 97.8%',
'--accent': '12 6.5% 15.1%',
'--accent-foreground': '60 9.1% 97.8%',
'--destructive': '0 72.2% 50.6%',
'--destructive-foreground': '60 9.1% 97.8%',
'--ring': '20.5 90.2% 48.2%'
},
'.theme-green': {
'--background': '0 0% 100%',
'--foreground': '240 10% 3.9%',
'--muted': '240 4.8% 95.9%',
'--muted-foreground': '240 3.8% 46.1%',
'--popover': '0 0% 100%',
'--popover-foreground': '240 10% 3.9%',
'--card': '0 0% 100%',
'--card-foreground': '240 10% 3.9%',
'--border': '240 5.9% 90%',
'--input': '240 5.9% 90%',
'--primary': '142.1 76.2% 36.3%',
'--primary-foreground': '355.7 100% 97.3%',
'--secondary': '240 4.8% 95.9%',
'--secondary-foreground': '240 5.9% 10%',
'--accent': '240 4.8% 95.9%',
'--accent-foreground': '240 5.9% 10%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '0 0% 98%',
'--ring': '142.1 76.2% 36.3%'
},
'.dark .theme-green': {
'--background': '20 14.3% 4.1%',
'--foreground': '0 0% 95%',
'--muted': '0 0% 15%',
'--muted-foreground': '240 5% 64.9%',
'--popover': '0 0% 9%',
'--popover-foreground': '0 0% 95%',
'--card': '24 9.8% 10%',
'--card-foreground': '0 0% 95%',
'--border': '240 3.7% 15.9%',
'--input': '240 3.7% 15.9%',
'--primary': '142.1 70.6% 45.3%',
'--primary-foreground': '144.9 80.4% 10%',
'--secondary': '240 3.7% 15.9%',
'--secondary-foreground': '0 0% 98%',
'--accent': '12 6.5% 15.1%',
'--accent-foreground': '0 0% 98%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '0 85.7% 97.3%',
'--ring': '142.4 71.8% 29.2%'
},
'.theme-blue': {
'--background': '0 0% 100%',
'--foreground': '222.2 84% 4.9%',
'--muted': '210 40% 96.1%',
'--muted-foreground': '215.4 16.3% 46.9%',
'--popover': '0 0% 100%',
'--popover-foreground': '222.2 84% 4.9%',
'--card': '0 0% 100%',
'--card-foreground': '222.2 84% 4.9%',
'--border': '214.3 31.8% 91.4%',
'--input': '214.3 31.8% 91.4%',
'--primary': '221.2 83.2% 53.3%',
'--primary-foreground': '210 40% 98%',
'--secondary': '210 40% 96.1%',
'--secondary-foreground': '222.2 47.4% 11.2%',
'--accent': '210 40% 96.1%',
'--accent-foreground': '222.2 47.4% 11.2%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '210 40% 98%',
'--ring': '221.2 83.2% 53.3%'
},
'.dark .theme-blue': {
'--background': '222.2 84% 4.9%',
'--foreground': '210 40% 98%',
'--muted': '217.2 32.6% 17.5%',
'--muted-foreground': '215 20.2% 65.1%',
'--popover': '222.2 84% 4.9%',
'--popover-foreground': '210 40% 98%',
'--card': '222.2 84% 4.9%',
'--card-foreground': '210 40% 98%',
'--border': '217.2 32.6% 17.5%',
'--input': '217.2 32.6% 17.5%',
'--primary': '217.2 91.2% 59.8%',
'--primary-foreground': '222.2 47.4% 11.2%',
'--secondary': '217.2 32.6% 17.5%',
'--secondary-foreground': '210 40% 98%',
'--accent': '217.2 32.6% 17.5%',
'--accent-foreground': '210 40% 98%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '210 40% 98%',
'--ring': '224.3 76.3% 48%'
},
'.theme-yellow': {
'--background': '0 0% 100%',
'--foreground': '20 14.3% 4.1%',
'--muted': '60 4.8% 95.9%',
'--muted-foreground': '25 5.3% 44.7%',
'--popover': '0 0% 100%',
'--popover-foreground': '20 14.3% 4.1%',
'--card': '0 0% 100%',
'--card-foreground': '20 14.3% 4.1%',
'--border': '20 5.9% 90%',
'--input': '20 5.9% 90%',
'--primary': '47.9 95.8% 53.1%',
'--primary-foreground': '26 83.3% 14.1%',
'--secondary': '60 4.8% 95.9%',
'--secondary-foreground': '24 9.8% 10%',
'--accent': '60 4.8% 95.9%',
'--accent-foreground': '24 9.8% 10%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '60 9.1% 97.8%',
'--ring': '20 14.3% 4.1%'
},
'.dark .theme-yellow': {
'--background': '20 14.3% 4.1%',
'--foreground': '60 9.1% 97.8%',
'--muted': '12 6.5% 15.1%',
'--muted-foreground': '24 5.4% 63.9%',
'--popover': '20 14.3% 4.1%',
'--popover-foreground': '60 9.1% 97.8%',
'--card': '20 14.3% 4.1%',
'--card-foreground': '60 9.1% 97.8%',
'--border': '12 6.5% 15.1%',
'--input': '12 6.5% 15.1%',
'--primary': '47.9 95.8% 53.1%',
'--primary-foreground': '26 83.3% 14.1%',
'--secondary': '12 6.5% 15.1%',
'--secondary-foreground': '60 9.1% 97.8%',
'--accent': '12 6.5% 15.1%',
'--accent-foreground': '60 9.1% 97.8%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '60 9.1% 97.8%',
'--ring': '35.5 91.7% 32.9%'
},
'.theme-violet': {
'--background': '0 0% 100%',
'--foreground': '224 71.4% 4.1%',
'--muted': '220 14.3% 95.9%',
'--muted-foreground': '220 8.9% 46.1%',
'--popover': '0 0% 100%',
'--popover-foreground': '224 71.4% 4.1%',
'--card': '0 0% 100%',
'--card-foreground': '224 71.4% 4.1%',
'--border': '220 13% 91%',
'--input': '220 13% 91%',
'--primary': '262.1 83.3% 57.8%',
'--primary-foreground': '210 20% 98%',
'--secondary': '220 14.3% 95.9%',
'--secondary-foreground': '220.9 39.3% 11%',
'--accent': '220 14.3% 95.9%',
'--accent-foreground': '220.9 39.3% 11%',
'--destructive': '0 84.2% 60.2%',
'--destructive-foreground': '210 20% 98%',
'--ring': '262.1 83.3% 57.8%'
},
'.dark .theme-violet': {
'--background': '224 71.4% 4.1%',
'--foreground': '210 20% 98%',
'--muted': '215 27.9% 16.9%',
'--muted-foreground': '217.9 10.6% 64.9%',
'--popover': '224 71.4% 4.1%',
'--popover-foreground': '210 20% 98%',
'--card': '224 71.4% 4.1%',
'--card-foreground': '210 20% 98%',
'--border': '215 27.9% 16.9%',
'--input': '215 27.9% 16.9%',
'--primary': '263.4 70% 50.4%',
'--primary-foreground': '210 20% 98%',
'--secondary': '215 27.9% 16.9%',
'--secondary-foreground': '210 20% 98%',
'--accent': '215 27.9% 16.9%',
'--accent-foreground': '210 20% 98%',
'--destructive': '0 62.8% 30.6%',
'--destructive-foreground': '210 20% 98%',
'--ring': '263.4 70% 50.4%'
}
};
export default plugin.withOptions((options = {}) => {
return async ({ addBase }) => {
let root = variables[`.theme-${options.theme || 'zinc'}`];
let dark = variables[`.dark .theme-${options.theme || 'zinc'}`];
if (options.palette && options.palette[':root'] && options.palette['.dark']) {
root = options.palette[':root'];
dark = options.palette['.dark'];
}
addBase({
':root': root,
'.dark': dark
});
};
});