@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.
168 lines (144 loc) • 4.6 kB
CSS
/**
* Transition Tokens
*
* @property definitions for smooth theme transitions and animations.
* These properties enable smooth interpolation between theme values.
*
* @layer tokens
*/
@layer tokens {
/* Transition Duration Properties */
@property --transition-fast {
inherits: true;
initial-value: 150ms;
syntax: '<time>';
}
@property --transition-normal {
inherits: true;
initial-value: 250ms;
syntax: '<time>';
}
@property --transition-slow {
inherits: true;
initial-value: 400ms;
syntax: '<time>';
}
/* Extended Duration Properties (für Kompatibilität) */
@property --transition-duration-fast {
inherits: true;
initial-value: 150ms;
syntax: '<time>';
}
@property --transition-duration-normal {
inherits: true;
initial-value: 250ms;
syntax: '<time>';
}
@property --transition-duration-slow {
inherits: true;
initial-value: 400ms;
syntax: '<time>';
}
/* Transition Easing Properties */
@property --transition-ease-out {
inherits: true;
initial-value: cubic-bezier(0, 0, 0.2, 1);
syntax: '<custom-ident> | ease | ease-in | ease-out | ease-in-out | linear | step-start | step-end';
}
@property --transition-ease-in {
inherits: true;
initial-value: cubic-bezier(0.4, 0, 1, 1);
syntax: '<custom-ident> | ease | ease-in | ease-out | ease-in-out | linear | step-start | step-end';
}
@property --transition-ease-in-out {
inherits: true;
initial-value: cubic-bezier(0.4, 0, 0.2, 1);
syntax: '<custom-ident> | ease | ease-in | ease-out | ease-in-out | linear | step-start | step-end';
}
/* Timing Function Aliases */
@property --transition-timing-ease {
inherits: true;
initial-value: cubic-bezier(0.4, 0, 0.2, 1);
syntax: '<custom-ident> | ease | ease-in | ease-out | ease-in-out | linear | step-start | step-end';
}
/* Animatable Color Properties for Theme Transitions */
@property --transition-bg {
inherits: true;
initial-value: #fff;
syntax: '<color>';
}
@property --transition-fg {
inherits: true;
initial-value: #1f2937;
syntax: '<color>';
}
@property --transition-border {
inherits: true;
initial-value: #e5e7eb;
syntax: '<color>';
}
@property --transition-surface {
inherits: true;
initial-value: #f9fafb;
syntax: '<color>';
}
@property --transition-accent {
inherits: true;
initial-value: #3b82f6;
syntax: '<color>';
}
@property --transition-shadow-opacity {
inherits: true;
initial-value: 0.1;
syntax: '<number>';
}
/* Component-Specific Transition Properties */
@property --transition-colors {
inherits: true;
initial-value: background-color 250ms var(--transition-ease-out), color 250ms var(--transition-ease-out), border-color 250ms var(--transition-ease-out);
syntax: '*';
}
@property --transition-transform {
inherits: true;
initial-value: transform 200ms var(--transition-ease-out);
syntax: '*';
}
@property --transition-opacity {
inherits: true;
initial-value: opacity 200ms var(--transition-ease-out);
syntax: '*';
}
@property --transition-shadow {
inherits: true;
initial-value: box-shadow 200ms var(--transition-ease-out);
syntax: '*';
}
@property --transition-all {
inherits: true;
initial-value: all 250ms var(--transition-ease-out);
syntax: '*';
}
}
/* Fallback Values für Transition-Tokens */
:root {
/* Duration Tokens */
--transition-fast: 150ms;
--transition-normal: 250ms;
--transition-slow: 400ms;
--transition-duration-fast: var(--transition-fast);
--transition-duration-normal: var(--transition-normal);
--transition-duration-slow: var(--transition-slow);
/* Timing Functions */
--transition-ease-out: ease-out;
--transition-ease-in: ease-in;
--transition-ease-in-out: ease-in-out;
--transition-timing-ease: var(--transition-ease-in-out);
/* Combined Transition Properties */
--transition-colors: background-color var(--transition-normal) var(--transition-ease-out),
color var(--transition-normal) var(--transition-ease-out),
border-color var(--transition-normal) var(--transition-ease-out);
--transition-transform: transform 200ms var(--transition-ease-out);
--transition-opacity: opacity 200ms var(--transition-ease-out);
--transition-shadow: box-shadow 200ms var(--transition-ease-out);
--transition-all: all var(--transition-normal) var(--transition-ease-out);
}