Story 3.2 done
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
// ConfirmationBar component styles
|
||||
// Story 3.2: Scene Auto-Apply & ConfirmationBar
|
||||
//
|
||||
// Import rule: All selectors scoped under .scrying-pool namespace
|
||||
// Use --sp-* semantic tokens only, never Foundry tokens directly
|
||||
|
||||
.scrying-pool {
|
||||
&__confirmation-bar {
|
||||
// Base positioning and layout
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
padding: 12px 16px;
|
||||
border-radius: 4px 4px 0 0;
|
||||
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.3);
|
||||
z-index: 100; // Above strip but below modals
|
||||
|
||||
// Typography
|
||||
font-size: 14px;
|
||||
line-height: 1.4;
|
||||
|
||||
// Display and box model
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
|
||||
// Transition: opacity only (never height or max-height per AC-5)
|
||||
transition: opacity 200ms ease-out;
|
||||
opacity: 1;
|
||||
|
||||
// Prevent text selection
|
||||
user-select: none;
|
||||
|
||||
// Variants
|
||||
&--default {
|
||||
background-color: var(--sp-surface);
|
||||
border-top: 1px solid var(--sp-border);
|
||||
color: var(--sp-text-primary);
|
||||
|
||||
.sp-confirmation-bar {
|
||||
&__message {
|
||||
color: var(--sp-text-primary);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&--amber {
|
||||
background-color: var(--sp-surface);
|
||||
border-top: 1px solid var(--sp-border-warning);
|
||||
|
||||
.sp-confirmation-bar {
|
||||
&__message {
|
||||
color: var(--sp-text-warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Message area
|
||||
.sp-confirmation-bar {
|
||||
&__message {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
// Undo button
|
||||
.sp-confirmation-bar {
|
||||
&__undo-btn {
|
||||
// Button reset
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 6px 12px;
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
|
||||
// Typography
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
|
||||
// Colors
|
||||
color: var(--sp-accent);
|
||||
|
||||
// Border and radius
|
||||
border-radius: 4px;
|
||||
|
||||
// Transition
|
||||
transition: background-color 200ms ease, color 200ms ease;
|
||||
|
||||
// Hover state
|
||||
&:hover {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
color: var(--sp-accent-emphasis, var(--sp-accent));
|
||||
}
|
||||
|
||||
// Active state
|
||||
&:active {
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
// Focus state
|
||||
&:focus {
|
||||
outline: 2px solid var(--sp-focus);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
// Disabled state (shouldn't happen but just in case)
|
||||
&:disabled {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Animation: slide up for entry
|
||||
@keyframes sp-confirmation-bar-slide-up {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(100%);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
// Animation: slide down for exit
|
||||
@keyframes sp-confirmation-bar-slide-down {
|
||||
from {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
to {
|
||||
opacity: 0;
|
||||
transform: translateY(100%);
|
||||
}
|
||||
}
|
||||
|
||||
// Apply animations (gated under prefers-reduced-motion)
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
.scrying-pool {
|
||||
&__confirmation-bar {
|
||||
animation: sp-confirmation-bar-slide-up 200ms ease-out;
|
||||
}
|
||||
|
||||
// Hide animation class (added when hiding)
|
||||
&.is-hiding {
|
||||
animation: sp-confirmation-bar-slide-down 200ms ease-in forwards;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Reduced motion: no animations
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.scrying-pool {
|
||||
&__confirmation-bar {
|
||||
animation: none;
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user