diff --git a/apps/clock/apps/web/src/app.css b/apps/clock/apps/web/src/app.css index 862080096..197179276 100644 --- a/apps/clock/apps/web/src/app.css +++ b/apps/clock/apps/web/src/app.css @@ -157,7 +157,122 @@ color: hsl(var(--color-error)); } -/* Alarm Card */ +/* Quick Create Form */ +.quick-create { + display: flex; + align-items: center; + gap: 0.5rem; + background-color: hsl(var(--color-surface)); + border-radius: var(--radius-md); + padding: 0.5rem 0.75rem; + border: 1px solid hsl(var(--color-border)); +} + +.time-input-inline { + font-size: 1.5rem; + font-weight: 300; + width: 5rem; + padding: 0.25rem; + font-variant-numeric: tabular-nums; + background: transparent; + border: none; + color: hsl(var(--color-foreground)); +} + +.time-input-inline:focus { + outline: none; +} + +.time-input-inline::-webkit-calendar-picker-indicator { + display: none; +} + +.label-input { + flex: 1; + min-width: 0; + padding: 0.375rem 0.5rem; + font-size: 0.875rem; + background: transparent; + border: none; + color: hsl(var(--color-foreground)); +} + +.label-input:focus { + outline: none; +} + +.label-input::placeholder { + color: hsl(var(--color-muted-foreground)); +} + +.day-selector-compact { + display: flex; + gap: 0.25rem; + padding: 0.5rem 0; +} + +.day-selector-compact button { + width: 32px; + height: 32px; + border-radius: 50%; + border: 1px solid hsl(var(--color-border)); + background: transparent; + color: hsl(var(--color-muted-foreground)); + font-size: 0.7rem; + font-weight: 500; + cursor: pointer; + transition: all var(--transition-fast); +} + +.day-selector-compact button:hover { + border-color: hsl(var(--color-primary)); + color: hsl(var(--color-foreground)); +} + +.day-selector-compact button.active { + background-color: hsl(var(--color-primary)); + border-color: hsl(var(--color-primary)); + color: hsl(var(--color-primary-foreground)); +} + +/* Alarm Grid (responsive) */ +.alarm-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + gap: 0.5rem; +} + +/* Alarm Tile (Grid layout) */ +.alarm-tile { + background-color: hsl(var(--color-surface)); + border-radius: var(--radius-md); + padding: 0.5rem; + border: 1px solid hsl(var(--color-border)); + transition: all var(--transition-base); + cursor: pointer; + opacity: 0.5; +} + +.alarm-tile:hover { + background-color: hsl(var(--color-muted) / 0.5); + opacity: 0.7; +} + +.alarm-tile:active { + background-color: hsl(var(--color-muted)); +} + +.alarm-tile.active { + opacity: 1; + border-color: hsl(var(--color-primary) / 0.3); +} + +.alarm-tile.active:hover { + opacity: 1; + border-color: hsl(var(--color-primary) / 0.5); +} + +/* Alarm Card (legacy, for edit form) */ .alarm-card { background-color: hsl(var(--color-surface)); border-radius: var(--radius-lg); @@ -317,7 +432,105 @@ font-variant-numeric: tabular-nums; } -/* Toggle Switch */ +/* Time Input Small (for timer) */ +.time-input-sm { + font-size: 1.5rem; + font-weight: 300; + text-align: center; + width: 3.5rem; + padding: 0.375rem; + font-variant-numeric: tabular-nums; +} + +/* Time Input Large (for quick create) */ +.time-input-large { + font-size: 2.5rem; + font-weight: 200; + text-align: center; + width: auto; + padding: 0.25rem 0.5rem; + font-variant-numeric: tabular-nums; + background: transparent; + border: none; + color: hsl(var(--color-foreground)); + cursor: pointer; +} + +.time-input-large:focus { + outline: none; +} + +.time-input-large::-webkit-calendar-picker-indicator { + display: none; +} + +/* Toggle Switch (iOS-style) */ +.toggle-switch { + position: relative; + width: 44px; + height: 26px; + background-color: hsl(var(--color-muted)); + border-radius: var(--radius-full); + cursor: pointer; + transition: background-color var(--transition-base); + border: none; + padding: 0; + flex-shrink: 0; +} + +.toggle-switch.active { + background-color: hsl(var(--color-primary)); +} + +.toggle-switch .toggle-knob { + position: absolute; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + background-color: white; + border-radius: 50%; + transition: transform var(--transition-base); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +} + +.toggle-switch.active .toggle-knob { + transform: translateX(18px); +} + +/* Toggle Switch Small (for grid tiles) */ +.toggle-switch-sm { + position: relative; + display: inline-block; + width: 36px; + height: 20px; + background-color: hsl(var(--color-muted)); + border-radius: var(--radius-full); + transition: background-color var(--transition-base); + flex-shrink: 0; +} + +.toggle-switch-sm.active { + background-color: hsl(var(--color-primary)); +} + +.toggle-switch-sm .toggle-knob { + position: absolute; + top: 2px; + left: 2px; + width: 16px; + height: 16px; + background-color: white; + border-radius: 50%; + transition: transform var(--transition-base); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); +} + +.toggle-switch-sm.active .toggle-knob { + transform: translateX(16px); +} + +/* Legacy toggle (deprecated) */ .toggle { position: relative; width: 44px; diff --git a/apps/clock/apps/web/src/routes/alarms/+page.svelte b/apps/clock/apps/web/src/routes/alarms/+page.svelte index e7c0cb5e8..4275ddf20 100644 --- a/apps/clock/apps/web/src/routes/alarms/+page.svelte +++ b/apps/clock/apps/web/src/routes/alarms/+page.svelte @@ -1,81 +1,127 @@ -