@use 'ui-design-system/src/styles/semantic/index' as *; .demo-container { padding: $semantic-spacing-layout-section-md; max-width: 1200px; margin: 0 auto; } .demo-section { margin-bottom: $semantic-spacing-layout-section-lg; h3 { 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; margin-bottom: $semantic-spacing-content-heading; } } .demo-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: $semantic-spacing-grid-gap-lg; margin-bottom: $semantic-spacing-component-lg; } .demo-feed-wrapper { display: flex; flex-direction: column; gap: $semantic-spacing-component-sm; h4 { 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-secondary; margin: 0; } } .demo-feed { border: $semantic-border-width-1 solid $semantic-color-border-primary; border-radius: $semantic-border-radius-lg; background: $semantic-color-surface; &--preview { height: 400px; } &--interactive { height: 600px; margin: $semantic-spacing-component-lg 0; } } .demo-feed-item { padding: $semantic-spacing-component-lg; border-bottom: $semantic-border-width-1 solid $semantic-color-border-subtle; &:last-child { border-bottom: none; } &--loading { opacity: $semantic-opacity-subtle; pointer-events: none; } &__header { display: flex; align-items: center; gap: $semantic-spacing-component-sm; margin-bottom: $semantic-spacing-component-sm; strong { font-family: map-get($semantic-typography-body-medium, font-family); font-size: map-get($semantic-typography-body-medium, font-size); font-weight: $semantic-typography-font-weight-semibold; line-height: map-get($semantic-typography-body-medium, line-height); color: $semantic-color-text-primary; } } &__badge { padding: 2px $semantic-spacing-component-xs; 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); text-transform: uppercase; &--text { background: $semantic-color-info; color: $semantic-color-on-info; } &--image { background: $semantic-color-success; color: $semantic-color-on-success; } &--video { background: $semantic-color-warning; color: $semantic-color-on-warning; } } &__timestamp { 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-tertiary; margin-left: auto; } &__title { font-family: map-get($semantic-typography-heading-h5, font-family); font-size: map-get($semantic-typography-heading-h5, font-size); font-weight: map-get($semantic-typography-heading-h5, font-weight); line-height: map-get($semantic-typography-heading-h5, line-height); color: $semantic-color-text-primary; margin: 0 0 $semantic-spacing-content-paragraph 0; } &__content { 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; margin: 0 0 $semantic-spacing-component-md 0; } &__actions { display: flex; gap: $semantic-spacing-component-md; } &__action { background: none; border: none; padding: $semantic-spacing-component-xs $semantic-spacing-component-sm; border-radius: $semantic-border-radius-sm; cursor: pointer; font-family: map-get($semantic-typography-button-small, font-family); font-size: map-get($semantic-typography-button-small, font-size); font-weight: map-get($semantic-typography-button-small, font-weight); line-height: map-get($semantic-typography-button-small, line-height); color: $semantic-color-text-tertiary; transition: all $semantic-motion-duration-fast $semantic-motion-easing-ease; &:hover { background: $semantic-color-surface-elevated; color: $semantic-color-text-primary; } &:focus-visible { outline: 2px solid $semantic-color-focus; outline-offset: 2px; } } } .demo-controls { display: flex; gap: $semantic-spacing-component-md; align-items: center; margin-bottom: $semantic-spacing-component-lg; padding: $semantic-spacing-component-md; background: $semantic-color-surface-elevated; border-radius: $semantic-border-radius-md; button { padding: $semantic-spacing-interactive-button-padding-y $semantic-spacing-interactive-button-padding-x; background: $semantic-color-primary; color: $semantic-color-on-primary; border: none; border-radius: $semantic-border-button-radius; cursor: pointer; font-family: map-get($semantic-typography-button-small, font-family); font-size: map-get($semantic-typography-button-small, font-size); font-weight: map-get($semantic-typography-button-small, font-weight); line-height: map-get($semantic-typography-button-small, line-height); transition: all $semantic-motion-duration-fast $semantic-motion-easing-ease; &:hover:not(:disabled) { opacity: $semantic-opacity-hover; } &:focus-visible { outline: 2px solid $semantic-color-focus; outline-offset: 2px; } &:disabled { opacity: $semantic-opacity-disabled; cursor: not-allowed; } } label { display: flex; align-items: center; gap: $semantic-spacing-component-xs; 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; input[type="checkbox"] { margin: 0; } } } .demo-empty-state { text-align: center; padding: $semantic-spacing-layout-section-lg; &--small { padding: $semantic-spacing-component-lg; } &__icon { font-size: 3rem; margin-bottom: $semantic-spacing-component-md; } h4 { 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; margin: 0 0 $semantic-spacing-component-sm 0; } p { 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; margin: 0 0 $semantic-spacing-component-lg 0; } &__button { padding: $semantic-spacing-interactive-button-padding-y $semantic-spacing-interactive-button-padding-x; background: $semantic-color-secondary; color: $semantic-color-on-secondary; border: none; border-radius: $semantic-border-button-radius; cursor: pointer; 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); transition: all $semantic-motion-duration-fast $semantic-motion-easing-ease; &:hover { opacity: $semantic-opacity-hover; } &:focus-visible { outline: 2px solid $semantic-color-focus; outline-offset: 2px; } } } .demo-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: $semantic-spacing-grid-gap-md; padding: $semantic-spacing-component-lg; background: $semantic-color-surface-elevated; border-radius: $semantic-border-radius-md; border: $semantic-border-width-1 solid $semantic-color-border-subtle; } .demo-stat { display: flex; justify-content: space-between; align-items: center; &__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; } &__value { font-family: map-get($semantic-typography-body-medium, font-family); font-size: map-get($semantic-typography-body-medium, font-size); font-weight: $semantic-typography-font-weight-semibold; line-height: map-get($semantic-typography-body-medium, line-height); color: $semantic-color-primary; } } // Responsive Design @media (max-width: 768px) { .demo-row { grid-template-columns: 1fr; } .demo-controls { flex-direction: column; align-items: stretch; gap: $semantic-spacing-component-sm; label { justify-content: center; } } .demo-feed { &--preview { height: 300px; } &--interactive { height: 500px; } } .demo-stats { grid-template-columns: 1fr; } }