@senka-ai/ui
Version:
A modern, type-safe Svelte 5 UI component library with full theme support, accessibility standards, and robust state management patterns
137 lines (112 loc) • 2.83 kB
CSS
/**
* Semantic Spacing Utilities
* Extends Tailwind CSS with semantic spacing classes for consistent layouts
*/
:root {
/* Spacing Scale - Based on 4px grid system */
--space-xs: 0.25rem; /* 4px */
--space-sm: 0.5rem; /* 8px */
--space-md: 0.75rem; /* 12px */
--space-lg: 1rem; /* 16px */
--space-xl: 1.5rem; /* 24px */
--space-2xl: 2rem; /* 32px */
--space-3xl: 3rem; /* 48px */
--space-4xl: 4rem; /* 64px */
/* Component-specific spacing */
--space-input-padding: var(--space-md) var(--space-lg);
--space-button-padding: var(--space-md) var(--space-xl);
--space-card-padding: var(--space-xl);
--space-section-gap: var(--space-2xl);
--space-form-field-gap: var(--space-lg);
--space-icon-gap: var(--space-sm);
/* Layout spacing */
--space-page-padding: var(--space-xl);
--space-container-padding: var(--space-lg);
--space-grid-gap: var(--space-lg);
--space-list-gap: var(--space-md);
}
/* Component Spacing Classes */
.spacing-input {
padding: var(--space-input-padding);
}
.spacing-button {
padding: var(--space-button-padding);
}
.spacing-card {
padding: var(--space-card-padding);
}
.spacing-page {
padding: var(--space-page-padding);
}
.spacing-container {
padding: var(--space-container-padding);
}
/* Gap Classes */
.gap-section {
gap: var(--space-section-gap);
}
.gap-form {
gap: var(--space-form-field-gap);
}
.gap-icon {
gap: var(--space-icon-gap);
}
.gap-grid {
gap: var(--space-grid-gap);
}
.gap-list {
gap: var(--space-list-gap);
}
/* Margin Classes */
.mb-section {
margin-bottom: var(--space-section-gap);
}
.mb-form {
margin-bottom: var(--space-form-field-gap);
}
.mr-icon {
margin-right: var(--space-icon-gap);
}
.ml-icon {
margin-left: var(--space-icon-gap);
}
/* Responsive Spacing - Mobile adjustments */
@media (max-width: 767px) {
:root {
--space-page-padding: var(--space-lg);
--space-container-padding: var(--space-md);
--space-section-gap: var(--space-xl);
--space-card-padding: var(--space-lg);
}
}
/* Specific spacing for educational app layouts */
.spacing-classroom {
padding: var(--space-lg);
margin-bottom: var(--space-xl);
}
.spacing-assignment {
padding: var(--space-md) var(--space-lg);
gap: var(--space-md);
}
.spacing-student-list {
gap: var(--space-sm);
}
.spacing-grade-input {
padding: var(--space-sm) var(--space-md);
}
.spacing-notification {
padding: var(--space-md);
margin-bottom: var(--space-md);
}
/* Compact layouts for data-dense interfaces */
.spacing-compact {
--space-card-padding: var(--space-md);
--space-form-field-gap: var(--space-md);
--space-section-gap: var(--space-lg);
}
/* Spacious layouts for focus areas */
.spacing-spacious {
--space-card-padding: var(--space-2xl);
--space-form-field-gap: var(--space-xl);
--space-section-gap: var(--space-3xl);
}