barsa 666129191a Refactor global styles and component tokens for improved consistency and clarity
- Updated globals.css to streamline design tokens and enhance semantic color usage across the application.
- Refined error and loading components to utilize new color tokens for better visual coherence.
- Adjusted various components, including AppShell, Header, and Sidebar, to align with updated design tokens and improve styling consistency.
- Enhanced utility classes in utilities.css to reflect the consolidated color system and improve component styling.
- Improved documentation in tokens.css to clarify the purpose and structure of design tokens.
2025-12-16 17:43:02 +09:00

176 lines
3.7 KiB
CSS

/**
* Design System Utilities
*
* Semantic component primitives using the consolidated color system.
* Layout, spacing, typography utilities come from Tailwind.
*/
@layer utilities {
/* ===== CARD ===== */
.cp-card {
background: var(--card);
color: var(--card-foreground);
border: 1px solid color-mix(in oklch, var(--border) 60%, transparent);
border-radius: var(--cp-card-radius);
box-shadow: var(--cp-card-shadow);
padding: var(--cp-card-padding);
transition:
box-shadow 0.2s ease,
border-color 0.2s ease;
}
.cp-card:hover {
box-shadow: var(--cp-card-shadow-lg);
border-color: var(--border);
}
.cp-card-sm {
padding: var(--cp-card-padding-sm);
}
.cp-card-lg {
border-radius: var(--cp-card-radius-lg);
box-shadow: var(--cp-card-shadow-lg);
}
.cp-card-interactive {
cursor: pointer;
}
.cp-card-interactive:hover {
transform: translateY(-1px);
}
.cp-card-interactive:active {
transform: translateY(0);
}
/* ===== BADGE ===== */
.cp-badge {
display: inline-flex;
align-items: center;
gap: var(--cp-space-1);
border-radius: var(--cp-badge-radius);
padding: var(--cp-badge-padding-y) var(--cp-badge-padding-x);
font-size: var(--cp-badge-font-size);
font-weight: var(--cp-badge-font-weight);
line-height: 1;
white-space: nowrap;
}
/* Badge variants - using 5 semantic colors */
.cp-badge-primary {
background: var(--primary);
color: var(--primary-foreground);
}
.cp-badge-secondary {
background: var(--secondary);
color: var(--secondary-foreground);
}
.cp-badge-success {
background: var(--success);
color: var(--success-foreground);
}
.cp-badge-info {
background: var(--info);
color: var(--info-foreground);
}
.cp-badge-warning {
background: var(--warning);
color: var(--warning-foreground);
}
.cp-badge-danger {
background: var(--danger);
color: var(--danger-foreground);
}
.cp-badge-neutral {
background: var(--neutral);
color: var(--neutral-foreground);
}
/* Legacy aliases */
.cp-badge-error {
background: var(--danger);
color: var(--danger-foreground);
}
/* Soft badge variants (light bg, dark text) */
.cp-badge-soft-success {
background: var(--success-soft);
color: var(--success);
}
.cp-badge-soft-info {
background: var(--info-soft);
color: var(--info);
}
.cp-badge-soft-warning {
background: var(--warning-soft);
color: var(--warning);
}
.cp-badge-soft-danger {
background: var(--danger-soft);
color: var(--danger);
}
.cp-badge-soft-neutral {
background: var(--neutral-soft);
color: var(--neutral);
}
/* Legacy aliases */
.cp-badge-soft-error {
background: var(--danger-soft);
color: var(--danger);
}
.cp-badge-outline {
background: transparent;
border: 1px solid currentColor;
}
/* ===== SKELETON (Loading state) ===== */
.cp-skeleton {
background: var(--cp-skeleton-base);
border-radius: var(--cp-radius-md);
position: relative;
overflow: hidden;
}
.cp-skeleton::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(90deg, transparent, var(--cp-skeleton-shimmer), transparent);
animation: cp-skeleton-shimmer 2s infinite;
}
@keyframes cp-skeleton-shimmer {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
/* ===== FOCUS RING ===== */
.cp-focus-ring {
outline: var(--cp-focus-ring);
outline-offset: var(--cp-focus-ring-offset);
}
.cp-focus-ring-visible:focus-visible {
outline: var(--cp-focus-ring);
outline-offset: var(--cp-focus-ring-offset);
}
}