UNPKG

@casoon/dragonfly

Version:

Modular, lightweight CSS framework and design system for modern web projects. Optimized for Astro JS, LightningCSS and Container Queries with @layer-based architecture and comprehensive accessibility.

122 lines (106 loc) 3.59 kB
/** * Theme Transition Utilities * * Theme-specific transition adjustments and utility classes. * The @property definitions are in tokens/transitions.css. * * @layer themes.transitions */ @layer themes.transitions { /* Theme Transition Values - Light Mode */ :root { --transition-bg: var(--color-background); --transition-fg: var(--color-text); --transition-border: var(--color-border); --transition-surface: var(--color-surface); --transition-accent: var(--color-primary); --transition-shadow-opacity: 0.1; } /* Theme Transition Values - Dark Mode */ [data-theme="dark"] { --transition-bg: var(--color-background); --transition-fg: var(--color-text); --transition-border: var(--color-border); --transition-surface: var(--color-surface); --transition-accent: var(--color-primary); --transition-shadow-opacity: 0.3; } /* Auto Theme - System Preference */ @media (prefers-color-scheme: dark) { [data-theme="auto"] { --transition-shadow-opacity: 0.3; } } /* Base Transition Utility Classes */ .theme-transition { background-color: var(--transition-bg); border-color: var(--transition-border); color: var(--transition-fg); transition: var(--transition-colors); } .theme-transition-fast { background-color: var(--transition-bg); border-color: var(--transition-border); color: var(--transition-fg); transition: background-color var(--transition-fast) var(--transition-ease-out), color var(--transition-fast) var(--transition-ease-out), border-color var(--transition-fast) var(--transition-ease-out); } .theme-transition-slow { background-color: var(--transition-bg); border-color: var(--transition-border); color: var(--transition-fg); transition: background-color var(--transition-slow) var(--transition-ease-in-out), color var(--transition-slow) var(--transition-ease-in-out), border-color var(--transition-slow) var(--transition-ease-in-out); } /* Component-Specific Transition Classes */ .card-transition { background-color: var(--transition-surface); border-color: var(--transition-border); box-shadow: 0 1px 3px 0 rgb(0 0 0 / var(--transition-shadow-opacity)), 0 1px 2px -1px rgb(0 0 0 / var(--transition-shadow-opacity)); transition: var(--transition-colors), var(--transition-shadow); } .button-transition { background-color: var(--transition-accent); border-color: var(--transition-accent); color: var(--transition-fg); transition: var(--transition-colors), var(--transition-transform); } .input-transition { background-color: var(--transition-surface); border-color: var(--transition-border); transition: var(--transition-colors), var(--transition-shadow); } .input-transition:focus { border-color: var(--transition-accent); box-shadow: 0 0 0 2px rgb(from var(--transition-accent) r g b / 2000%); } /* Theme Switch Animation */ .theme-switching { animation: theme-switch var(--transition-normal) var(--transition-ease-out); } @keyframes theme-switch { 0 { opacity: 1; } 50 { opacity: 95%; } 100 { opacity: 1; } } /* Disable Transitions for Reduced Motion */ @media (prefers-reduced-motion: reduce) { .theme-transition, .theme-transition-fast, .theme-transition-slow, .card-transition, .button-transition, .input-transition { transition: none; } .theme-switching { animation: none; } } }