121 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import {
 | |
|   defineConfig,
 | |
|   presetIcons,
 | |
|   presetUno,
 | |
|   presetWebFonts,
 | |
|   transformerDirectives,
 | |
|   transformerVariantGroup,
 | |
| } from 'unocss';
 | |
| import presetAnimations from 'unocss-preset-animations';
 | |
| import { toolDefinitions } from './src/modules/tools/tools.registry';
 | |
| import { socialLinks } from './src/modules/ui/layouts/app.layouts.constants';
 | |
| 
 | |
| export default defineConfig({
 | |
|   presets: [
 | |
|     presetUno({
 | |
|       dark: {
 | |
|         dark: '[data-kb-theme="dark"]',
 | |
|         light: '[data-kb-theme="light"]',
 | |
|       },
 | |
|       prefix: '',
 | |
|     }),
 | |
|     presetAnimations(),
 | |
|     presetWebFonts({
 | |
|       fonts: {
 | |
|         sans: 'Inter:400,500,600,700,800,900',
 | |
|       },
 | |
|     }),
 | |
|     presetIcons({
 | |
|       collections: {
 | |
|         custom: {
 | |
|           language: '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 512 512"><path fill="currentColor" d="m478.33 433.6l-90-218a22 22 0 0 0-40.67 0l-90 218a22 22 0 1 0 40.67 16.79L316.66 406h102.67l18.33 44.39A22 22 0 0 0 458 464a22 22 0 0 0 20.32-30.4ZM334.83 362L368 281.65L401.17 362Zm-66.99-19.08a22 22 0 0 0-4.89-30.7c-.2-.15-15-11.13-36.49-34.73c39.65-53.68 62.11-114.75 71.27-143.49H330a22 22 0 0 0 0-44H214V70a22 22 0 0 0-44 0v20H54a22 22 0 0 0 0 44h197.25c-9.52 26.95-27.05 69.5-53.79 108.36c-31.41-41.68-43.08-68.65-43.17-68.87a22 22 0 0 0-40.58 17c.58 1.38 14.55 34.23 52.86 83.93c.92 1.19 1.83 2.35 2.74 3.51c-39.24 44.35-77.74 71.86-93.85 80.74a22 22 0 1 0 21.07 38.63c2.16-1.18 48.6-26.89 101.63-85.59c22.52 24.08 38 35.44 38.93 36.1a22 22 0 0 0 30.75-4.9Z" /></svg>',
 | |
|         },
 | |
|       },
 | |
|     }),
 | |
|   ],
 | |
|   transformers: [transformerVariantGroup(), transformerDirectives()],
 | |
|   theme: {
 | |
|     colors: {
 | |
|       border: 'hsl(var(--border))',
 | |
|       input: 'hsl(var(--input))',
 | |
|       ring: 'hsl(var(--ring))',
 | |
|       background: 'hsl(var(--background))',
 | |
|       foreground: 'hsl(var(--foreground))',
 | |
|       primary: {
 | |
|         DEFAULT: 'hsl(var(--primary))',
 | |
|         foreground: 'hsl(var(--primary-foreground))',
 | |
|       },
 | |
|       secondary: {
 | |
|         DEFAULT: 'hsl(var(--secondary))',
 | |
|         foreground: 'hsl(var(--secondary-foreground))',
 | |
|       },
 | |
|       destructive: {
 | |
|         DEFAULT: 'hsl(var(--destructive))',
 | |
|         foreground: 'hsl(var(--destructive-foreground))',
 | |
|       },
 | |
|       warning: {
 | |
|         DEFAULT: 'hsl(var(--warning))',
 | |
|         foreground: 'hsl(var(--warning-foreground))',
 | |
|       },
 | |
|       muted: {
 | |
|         DEFAULT: 'hsl(var(--muted))',
 | |
|         foreground: 'hsl(var(--muted-foreground))',
 | |
|       },
 | |
|       accent: {
 | |
|         DEFAULT: 'hsl(var(--accent))',
 | |
|         foreground: 'hsl(var(--accent-foreground))',
 | |
|       },
 | |
|       popover: {
 | |
|         DEFAULT: 'hsl(var(--popover))',
 | |
|         foreground: 'hsl(var(--popover-foreground))',
 | |
|       },
 | |
|       card: {
 | |
|         DEFAULT: 'hsl(var(--card))',
 | |
|         foreground: 'hsl(var(--card-foreground))',
 | |
|       },
 | |
|     },
 | |
|     borderRadius: {
 | |
|       lg: 'var(--radius)',
 | |
|       md: 'calc(var(--radius) - 2px)',
 | |
|       sm: 'calc(var(--radius) - 4px)',
 | |
|     },
 | |
|     animation: {
 | |
|       keyframes: {
 | |
|         'accordion-down':
 | |
|           '{ from { height: 0 } to { height: var(--kb-accordion-content-height) } }',
 | |
|         'accordion-up':
 | |
|           '{ from { height: var(--kb-accordion-content-height) } to { height: 0 } }',
 | |
|         'collapsible-down':
 | |
|           '{ from { height: 0 } to { height: var(--kb-collapsible-content-height) } }',
 | |
|         'collapsible-up':
 | |
|           '{ from { height: var(--kb-collapsible-content-height) } to { height: 0 } }',
 | |
|         'caret-blink': '{ 0%,70%,100% { opacity: 1 } 20%,50% { opacity: 0 } }',
 | |
|       },
 | |
|       timingFns: {
 | |
|         'accordion-down': 'ease-out',
 | |
|         'accordion-up': 'ease-out',
 | |
|         'collapsible-down': 'ease-out',
 | |
|         'collapsible-up': 'ease-out',
 | |
|         'caret-blink': 'ease-out',
 | |
|       },
 | |
|       durations: {
 | |
|         'accordion-down': '0.2s',
 | |
|         'accordion-up': '0.2s',
 | |
|         'collapsible-down': '0.2s',
 | |
|         'collapsible-up': '0.2s',
 | |
|         'caret-blink': '1.25s',
 | |
|       },
 | |
|       counts: {
 | |
|         'caret-blink': 'infinite',
 | |
|       },
 | |
|     },
 | |
|   },
 | |
|   safelist: [
 | |
|     ...toolDefinitions.map(tool => tool.icon),
 | |
|     ...socialLinks.map(({ icon }) => icon),
 | |
|   ],
 | |
|   shortcuts: {
 | |
|     'i-logo': 'i-tabler-terminal',
 | |
|   },
 | |
| });
 |