@use 'ui-design-system/src/styles/semantic' as *; .demo-container { padding: $semantic-spacing-layout-section-lg; max-width: 1200px; margin: 0 auto; } .demo-header { text-align: center; margin-bottom: $semantic-spacing-layout-section-xl; } .demo-title { display: flex; align-items: center; justify-content: center; gap: $semantic-spacing-component-sm; margin: 0 0 $semantic-spacing-component-md 0; font-family: map-get($semantic-typography-heading-h2, font-family); font-size: map-get($semantic-typography-heading-h2, font-size); font-weight: map-get($semantic-typography-heading-h2, font-weight); line-height: map-get($semantic-typography-heading-h2, line-height); color: $semantic-color-text-primary; } .demo-title-icon { color: $semantic-color-primary; } .demo-description { margin: 0; font-family: map-get($semantic-typography-body-large, font-family); font-size: map-get($semantic-typography-body-large, font-size); font-weight: map-get($semantic-typography-body-large, font-weight); line-height: map-get($semantic-typography-body-large, line-height); color: $semantic-color-text-secondary; kbd { display: inline-flex; align-items: center; justify-content: center; padding: 2px $semantic-spacing-component-xs; margin: 0 2px; background: $semantic-color-surface-secondary; border: $semantic-border-width-1 solid $semantic-color-border-subtle; border-radius: $semantic-border-radius-sm; font-family: map-get($semantic-typography-caption, font-family); font-size: map-get($semantic-typography-caption, font-size); font-weight: map-get($semantic-typography-caption, font-weight); line-height: map-get($semantic-typography-caption, line-height); color: $semantic-color-text-primary; box-shadow: $semantic-shadow-elevation-1; } } .demo-section { margin-bottom: $semantic-spacing-layout-section-xl; } .demo-section-title { margin: 0 0 $semantic-spacing-component-lg 0; font-family: map-get($semantic-typography-heading-h3, font-family); font-size: map-get($semantic-typography-heading-h3, font-size); font-weight: map-get($semantic-typography-heading-h3, font-weight); line-height: map-get($semantic-typography-heading-h3, line-height); color: $semantic-color-text-primary; border-bottom: $semantic-border-width-1 solid $semantic-color-border-subtle; padding-bottom: $semantic-spacing-component-sm; } .demo-actions { display: flex; gap: $semantic-spacing-component-md; flex-wrap: wrap; align-items: center; } .demo-button { display: flex; align-items: center; gap: $semantic-spacing-component-xs; padding: $semantic-spacing-interactive-button-padding-y $semantic-spacing-interactive-button-padding-x; border: $semantic-border-width-1 solid transparent; border-radius: $semantic-border-button-radius; background: transparent; font-family: map-get($semantic-typography-button-medium, font-family); font-size: map-get($semantic-typography-button-medium, font-size); font-weight: map-get($semantic-typography-button-medium, font-weight); line-height: map-get($semantic-typography-button-medium, line-height); cursor: pointer; transition: all $semantic-motion-duration-fast $semantic-motion-easing-ease; text-decoration: none; &:focus-visible { outline: 2px solid $semantic-color-focus; outline-offset: 2px; } &--primary { background: $semantic-color-primary; color: $semantic-color-on-primary; border-color: $semantic-color-primary; &:hover { background: darken($semantic-color-primary, 10%); border-color: darken($semantic-color-primary, 10%); box-shadow: $semantic-shadow-button-hover; } } &--secondary { background: $semantic-color-secondary; color: $semantic-color-on-secondary; border-color: $semantic-color-secondary; &:hover { background: darken($semantic-color-secondary, 10%); border-color: darken($semantic-color-secondary, 10%); box-shadow: $semantic-shadow-button-hover; } } &--outline { color: $semantic-color-text-primary; border-color: $semantic-color-border-primary; &:hover { background: $semantic-color-surface-elevated; border-color: $semantic-color-border-secondary; box-shadow: $semantic-shadow-button-hover; } } } .demo-config-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: $semantic-spacing-component-lg; margin-bottom: $semantic-spacing-component-lg; } .demo-config-item { display: flex; flex-direction: column; gap: $semantic-spacing-component-xs; } .demo-label { display: flex; align-items: center; gap: $semantic-spacing-component-xs; font-family: map-get($semantic-typography-label, font-family); font-size: map-get($semantic-typography-label, font-size); font-weight: map-get($semantic-typography-label, font-weight); line-height: map-get($semantic-typography-label, line-height); color: $semantic-color-text-primary; cursor: pointer; } .demo-checkbox { width: 16px; height: 16px; accent-color: $semantic-color-primary; cursor: pointer; } .demo-input, .demo-select { padding: $semantic-spacing-interactive-input-padding-y $semantic-spacing-interactive-input-padding-x; border: $semantic-border-width-1 solid $semantic-color-border-primary; border-radius: $semantic-border-input-radius; background: $semantic-color-surface-primary; font-family: map-get($semantic-typography-input, font-family); font-size: map-get($semantic-typography-input, font-size); font-weight: map-get($semantic-typography-input, font-weight); line-height: map-get($semantic-typography-input, line-height); color: $semantic-color-text-primary; transition: border-color $semantic-motion-duration-fast $semantic-motion-easing-ease; &:focus { outline: none; border-color: $semantic-color-focus; box-shadow: 0 0 0 2px rgba($semantic-color-focus, 0.2); } } .demo-features { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: $semantic-spacing-component-lg; } .demo-feature { padding: $semantic-spacing-component-lg; border: $semantic-border-width-1 solid $semantic-color-border-subtle; border-radius: $semantic-border-radius-lg; background: $semantic-color-surface-primary; text-align: center; transition: all $semantic-motion-duration-fast $semantic-motion-easing-ease; &:hover { border-color: $semantic-color-primary; box-shadow: $semantic-shadow-elevation-2; transform: translateY(-2px); } h4 { margin: $semantic-spacing-component-sm 0 $semantic-spacing-component-xs 0; font-family: map-get($semantic-typography-heading-h4, font-family); font-size: map-get($semantic-typography-heading-h4, font-size); font-weight: map-get($semantic-typography-heading-h4, font-weight); line-height: map-get($semantic-typography-heading-h4, line-height); color: $semantic-color-text-primary; } p { margin: 0; font-family: map-get($semantic-typography-body-medium, font-family); font-size: map-get($semantic-typography-body-medium, font-size); font-weight: map-get($semantic-typography-body-medium, font-weight); line-height: map-get($semantic-typography-body-medium, line-height); color: $semantic-color-text-secondary; } } .demo-feature-icon { font-size: 2rem; color: $semantic-color-primary; } .demo-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: $semantic-spacing-component-lg; } .demo-stat { padding: $semantic-spacing-component-lg; border: $semantic-border-width-1 solid $semantic-color-border-subtle; border-radius: $semantic-border-radius-lg; background: $semantic-color-surface-primary; text-align: center; } .demo-stat-value { font-family: map-get($semantic-typography-heading-h2, font-family); font-size: map-get($semantic-typography-heading-h2, font-size); font-weight: map-get($semantic-typography-heading-h2, font-weight); line-height: map-get($semantic-typography-heading-h2, line-height); color: $semantic-color-primary; margin-bottom: $semantic-spacing-component-xs; } .demo-stat-label { font-family: map-get($semantic-typography-body-small, font-family); font-size: map-get($semantic-typography-body-small, font-size); font-weight: map-get($semantic-typography-body-small, font-weight); line-height: map-get($semantic-typography-body-small, line-height); color: $semantic-color-text-secondary; text-transform: uppercase; letter-spacing: 0.05em; } .demo-shortcuts { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: $semantic-spacing-component-md; } .demo-shortcut { display: flex; align-items: center; gap: $semantic-spacing-component-md; padding: $semantic-spacing-component-md; border: $semantic-border-width-1 solid $semantic-color-border-subtle; border-radius: $semantic-border-radius-md; background: $semantic-color-surface-primary; span { font-family: map-get($semantic-typography-body-medium, font-family); font-size: map-get($semantic-typography-body-medium, font-size); font-weight: map-get($semantic-typography-body-medium, font-weight); line-height: map-get($semantic-typography-body-medium, line-height); color: $semantic-color-text-primary; } } .demo-kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px; padding: 0 $semantic-spacing-component-xs; background: $semantic-color-surface-secondary; border: $semantic-border-width-1 solid $semantic-color-border-subtle; border-radius: $semantic-border-radius-sm; font-family: map-get($semantic-typography-caption, font-family); font-size: map-get($semantic-typography-caption, font-size); font-weight: map-get($semantic-typography-caption, font-weight); line-height: map-get($semantic-typography-caption, line-height); color: $semantic-color-text-primary; box-shadow: $semantic-shadow-elevation-1; white-space: nowrap; } // Toast animation styles @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes slideOut { from { transform: translateX(0); opacity: 1; } to { transform: translateX(100%); opacity: 0; } } // Responsive design @media (max-width: calc(#{$semantic-breakpoint-md} - 1px)) { .demo-container { padding: $semantic-spacing-layout-section-md; } .demo-actions { justify-content: center; } .demo-config-grid { grid-template-columns: 1fr; } .demo-features { grid-template-columns: 1fr; } .demo-stats { grid-template-columns: repeat(3, 1fr); } .demo-shortcuts { grid-template-columns: 1fr; } } @media (max-width: calc(#{$semantic-breakpoint-sm} - 1px)) { .demo-container { padding: $semantic-spacing-component-lg; } .demo-title { flex-direction: column; gap: $semantic-spacing-component-xs; .demo-title-icon { font-size: 2rem; } } .demo-stats { grid-template-columns: 1fr; } .demo-actions { flex-direction: column; align-items: stretch; } }