hikari-components 0.1.8

Core UI components (40+) for the Hikari design system
// packages/components/src/styles/components/button-vars.scss
// Layer2 - Button Component Variables
// 
// This file defines component-level CSS variables for the Button component.
// These variables can be overridden at runtime via AnimationBuilder.
//
// NOTE: Hover effects are handled by Glow wrapper, not here.
// Only base and active states are defined.

// ============================================
// Base Button Variables
// ============================================

.hi-button {
  // ============================================
  // 1. Color System
  // ============================================
  
  // Text Colors
  --hi-button-text-color: var(--hi-color-text-primary);
  --hi-button-text-color-active: var(--hi-color-text-primary);
  --hi-button-text-color-disabled: rgba(128, 128, 128, 0.5);
  
  // Icon Colors
  --hi-button-icon-color: var(--hi-icon-color);
  --hi-button-icon-color-active: var(--hi-icon-color);
  --hi-button-icon-color-disabled: rgba(128, 128, 128, 0.5);
  
  // Background Colors
  --hi-button-bg: transparent;
  --hi-button-bg-active: var(--hi-bg-surface-dark);
  --hi-button-bg-disabled: rgba(128, 128, 128, 0.1);
  
  // Border Colors
  --hi-button-border-color: var(--hi-border-color);
  --hi-button-border-color-focus: var(--hi-border-color-focus);
  --hi-button-border-color-disabled: rgba(128, 128, 128, 0.2);
  
  // Shadow & Glow (used by Glow wrapper)
  --hi-button-glow: var(--hi-glow-color);
  
  // FUI Sci-Fi Glow Effects (per-variant) - base + hover
  --hi-glow-button-primary: 0 0 16px rgba(255, 107, 129, 0.35), 0 0 4px rgba(255, 107, 129, 0.5), 0 1px 2px rgba(0, 0, 0, 0.1);
  --hi-glow-button-secondary: 0 0 16px rgba(75, 92, 196, 0.35), 0 0 4px rgba(75, 92, 196, 0.5), 0 1px 2px rgba(0, 0, 0, 0.1);
  --hi-glow-button-danger: 0 0 16px rgba(239, 68, 68, 0.35), 0 0 4px rgba(239, 68, 68, 0.5), 0 1px 2px rgba(0, 0, 0, 0.1);
  --hi-glow-button-success: 0 0 16px rgba(16, 185, 129, 0.35), 0 0 4px rgba(16, 185, 129, 0.5), 0 1px 2px rgba(0, 0, 0, 0.1);
  
  // ============================================
  // 2. Border Radius System
  // ============================================
  
  --hi-button-radius: 6px;
  
  // ============================================
  // 3. Animation System
  // ============================================
  
  // Duration
  --hi-button-duration: var(--hi-duration-normal);
  --hi-button-duration-active: var(--hi-duration-instant);
  
  // Easing
  --hi-button-easing: var(--hi-ease-default);
  
  // Transition
  --hi-button-transition: 
    background-color var(--hi-button-duration) var(--hi-button-easing),
    border-color var(--hi-button-duration) var(--hi-button-easing),
    transform var(--hi-button-duration-active) var(--hi-button-easing);
  
  // ============================================
  // 4. Background System
  // ============================================
  
  --hi-button-bg-blur: none;
  
  // ============================================
  // 5. SVG System
  // ============================================
  
  --hi-button-icon-fill: var(--hi-icon-fill);
  --hi-button-icon-fill-opacity: var(--hi-icon-fill-opacity);
  --hi-button-icon-size: var(--hi-icon-size-sm);
  
  // ============================================
  // 6. Spacing System
  // ============================================
  
  --hi-button-padding-x: var(--hi-spacing-md);
  --hi-button-padding-y: 12px;
  --hi-button-gap: var(--hi-spacing-xs);
  
  // ============================================
  // 7. Border System
  // ============================================
  
  --hi-button-border-width: var(--hi-border-width);
  --hi-button-border-width-focus: var(--hi-border-width-focus);
  --hi-button-border-style: var(--hi-border-style);
  
  // ============================================
  // 8. Transform System
  // ============================================
  
  --hi-button-transform: none;
  --hi-button-transform-active: scale(0.98);
  
  // ============================================
  // 9. Typography System
  // ============================================
  
  --hi-button-font-size: 0.875rem;
  --hi-button-font-weight: 500;
  --hi-button-line-height: 1.4;
  --hi-button-letter-spacing: 0.01em;
}

// ============================================
// Primary Variant Variables
// ============================================

.hi-button-primary {
  --hi-button-text-color: var(--hi-color-text-on-primary);
  --hi-button-text-color-active: var(--hi-color-text-on-primary);

  --hi-button-icon-color: var(--hi-color-text-on-primary);
  --hi-button-icon-color-active: var(--hi-color-text-on-primary);

  --hi-button-bg: var(--hi-color-primary);
  --hi-button-bg-active: var(--hi-button-primary-dark);

  --hi-button-border-color: transparent;
  --hi-button-border-color-focus: var(--hi-color-primary);

  --hi-button-glow: var(--hi-glow-button-primary);
}

// ============================================
// Secondary Variant Variables
// ============================================

.hi-button-secondary {
  --hi-button-text-color: var(--hi-color-text-on-secondary);
  --hi-button-text-color-active: var(--hi-color-text-on-secondary);

  --hi-button-icon-color: var(--hi-color-text-on-secondary);
  --hi-button-icon-color-active: var(--hi-color-text-on-secondary);

  --hi-button-bg: var(--hi-color-secondary);
  --hi-button-bg-active: var(--hi-button-secondary-dark);

  --hi-button-border-color: transparent;
  --hi-button-border-color-focus: var(--hi-color-secondary);

  --hi-button-glow: var(--hi-glow-button-secondary);
}

// ============================================
// Ghost Variant Variables
// ============================================

.hi-button-ghost {
  --hi-button-text-color: var(--hi-ghost-text);
  --hi-button-text-color-active: var(--hi-ghost-text);

  --hi-button-icon-color: var(--hi-ghost-text);
  --hi-button-icon-color-active: var(--hi-ghost-text);

  --hi-button-bg: transparent;
  --hi-button-bg-active: var(--hi-bg-surface-dark);

  --hi-button-border-color: var(--hi-ghost-border);
  --hi-button-border-color-focus: var(--hi-ghost-border);

  --hi-button-glow: var(--hi-ghost-glow);
}

// ============================================
// Borderless Variant Variables
// ============================================

.hi-button-borderless {
  --hi-button-text-color: var(--hi-ghost-text);
  --hi-button-text-color-active: var(--hi-ghost-text);

  --hi-button-icon-color: var(--hi-ghost-text);
  --hi-button-icon-color-active: var(--hi-ghost-text);

  --hi-button-bg: transparent;
  --hi-button-bg-active: var(--hi-bg-surface-dark);

  --hi-button-border-color: transparent;
  --hi-button-border-color-focus: var(--hi-ghost-border);

  --hi-button-glow: var(--hi-ghost-glow);
}

// ============================================
// Danger Variant Variables
// ============================================

.hi-button-danger {
  --hi-button-text-color: var(--hi-color-text-on-danger, #ffffff);
  --hi-button-text-color-active: var(--hi-color-text-on-danger, #ffffff);

  --hi-button-icon-color: var(--hi-color-text-on-danger, #ffffff);
  --hi-button-icon-color-active: var(--hi-color-text-on-danger, #ffffff);

  --hi-button-bg: var(--hi-color-danger);
  --hi-button-bg-active: var(--hi-button-danger-dark);

  --hi-button-border-color: transparent;
  --hi-button-border-color-focus: var(--hi-color-danger);

  --hi-button-glow: var(--hi-glow-button-danger);
}

// ============================================
// Success Variant Variables
// ============================================

.hi-button-success {
  --hi-button-text-color: var(--hi-color-text-on-success, #ffffff);
  --hi-button-text-color-active: var(--hi-color-text-on-success, #ffffff);

  --hi-button-icon-color: var(--hi-color-text-on-success, #ffffff);
  --hi-button-icon-color-active: var(--hi-color-text-on-success, #ffffff);

  --hi-button-bg: var(--hi-color-success);
  --hi-button-bg-active: var(--hi-button-success-dark);

  --hi-button-border-color: transparent;
  --hi-button-border-color-focus: var(--hi-color-success);

  --hi-button-glow: var(--hi-glow-button-success);
}

// ============================================
// Size Variant Variables
// ============================================

.hi-button-sm {
  --hi-button-padding-x: var(--hi-spacing-sm);
  --hi-button-padding-y: var(--hi-spacing-xs);
  --hi-button-icon-size: var(--hi-icon-size-xs);
  --hi-button-radius: 6px;
  --hi-button-font-size: 0.75rem;
}

.hi-button-md {
  --hi-button-padding-x: var(--hi-spacing-md);
  --hi-button-padding-y: 12px;
  --hi-button-icon-size: var(--hi-icon-size-sm);
  --hi-button-radius: 6px;
  --hi-button-font-size: 0.875rem;
}

.hi-button-lg {
  --hi-button-padding-x: var(--hi-spacing-lg);
  --hi-button-padding-y: 12px;
  --hi-button-icon-size: var(--hi-icon-size-md);
  --hi-button-radius: 6px;
  --hi-button-font-size: 1rem;
}