Files

295 lines
10 KiB
YAML
Raw Permalink Normal View History

# At-a-Glance — wall panel
#
# Styled with the CubeCraft Creations display system. The tokens live in
# themes/cubecraft.yaml, which mirrors the `:host` block of the production
# card's stylesheet (custom_components/cubecraft_production/www/
# cubecraft-production-card.js). Anything referenced here as --cc-* comes from
# that theme, so this file never hard-codes a brand hex.
#
# Three motifs carry the style, all lifted from the production card:
# .title → gradient title bar, white 800-weight type, brand radius
# .column header → uppercase 700/.05em muted section labels
# article → 8px radius, 4px brand left rule, shadow-sm on each tile
#
# Colour is deliberately restrained: brand indigo for anything informational,
# and green/amber/red kept in reserve so they still mean something when they
# show up. That is the same discipline the production card uses, where only a
# blocked order goes red.
2026-06-28 14:27:20 -04:00
title: At-a-Glance
theme: cubecraft
2026-06-28 14:27:20 -04:00
views:
- title: At-a-Glance
path: at-a-glance
icon: mdi:eye-outline
theme: cubecraft
2026-06-28 14:27:20 -04:00
type: masonry
cards:
# ── Brand title bar ──
# Mirrors `.shell.kiosk .title`: gradient ground, white type at 1.75rem,
# brand radius and the brand shadow. ha-markdown supplies its own 16px
# inset, so ha-card only tops that up to roughly the card's 20px/28px.
2026-06-28 14:27:20 -04:00
- type: markdown
content: |
# {{ now().strftime("%A, %B %d, %Y") }}
## {{ now().strftime("%I:%M %p") }}
card_mod:
style: |
ha-card {
background: var(--cc-gradient);
color: #fff;
border: none;
border-radius: var(--cc-radius-brand);
box-shadow: var(--cc-shadow-brand);
padding: 6px 12px;
2026-06-28 14:27:20 -04:00
text-align: center;
}
ha-card h1 {
margin: 0;
font-size: 1rem;
font-weight: 600;
letter-spacing: 0.02em;
opacity: 0.85;
color: #fff;
2026-06-28 14:27:20 -04:00
}
ha-card h2 {
margin: 2px 0 0 0;
font-size: 1.75rem;
font-weight: 800;
letter-spacing: -0.01em;
color: #fff;
2026-06-28 14:27:20 -04:00
}
# ── Weather Now ──
- type: weather-forecast
entity: weather.home
name: Now
show_forecast: false
show_current: true
round_temperature: true
# ── Indoor Climate ──
# First use of the section-label treatment; the rest of the file aliases
# it as *cc_section. Selectors are listed broadly on purpose — a heading
# card's internals are not a stable API, and any selector that misses
# simply leaves that bit at the theme default rather than breaking.
2026-06-28 14:27:20 -04:00
- type: heading
heading: Indoor Climate
heading_style: title
icon: mdi:home-thermometer-outline
card_mod: &cc_section
style: |
ha-card {
background: none;
border: none;
box-shadow: none;
padding: 0;
margin: 4px 0 -4px 0;
}
ha-card .heading,
ha-card .content p,
ha-card p {
text-transform: uppercase;
letter-spacing: 0.05em;
font-weight: 700;
font-size: 0.9375rem;
color: var(--cc-text-muted, var(--secondary-text-color));
}
ha-card ha-icon,
ha-card ha-svg-icon {
color: var(--cc-accent, var(--primary-color));
}
2026-06-28 14:27:20 -04:00
- type: grid
columns: 3
square: false
cards:
# First use of the `article` treatment; aliased as *cc_tile below.
2026-06-28 14:27:20 -04:00
- type: tile
entity: sensor.living_room_temperature
name: Living Room
icon: mdi:sofa
color: primary
card_mod: &cc_tile
style: |
ha-card {
border-radius: var(--cc-radius-md);
border-left: 4px solid var(--cc-accent);
box-shadow: var(--cc-shadow-sm);
}
2026-06-28 14:27:20 -04:00
- type: tile
entity: sensor.office_temperature
name: Office
icon: mdi:desk
color: primary
card_mod: *cc_tile
2026-06-28 14:27:20 -04:00
- type: tile
entity: sensor.bedroom_temperature
name: Master Bedroom
icon: mdi:bed
color: primary
card_mod: *cc_tile
2026-06-28 14:27:20 -04:00
- type: tile
entity: sensor.upstairs_temperature
name: Upstairs
icon: mdi:stairs
color: primary
card_mod: *cc_tile
2026-06-28 14:27:20 -04:00
- type: tile
entity: sensor.blink_family_room_temperature
name: Family Room
icon: mdi:television
color: primary
card_mod: *cc_tile
2026-06-28 14:27:20 -04:00
- type: tile
entity: sensor.blink_kitchen_temperature
name: Kitchen
icon: mdi:stove
color: primary
card_mod: *cc_tile
2026-06-28 14:27:20 -04:00
# ── 3D Printer Status ──
- type: heading
heading: 3D Printers
heading_style: title
icon: mdi:printer-3d-nozzle
card_mod: *cc_section
2026-06-28 14:27:20 -04:00
- type: grid
columns: 2
square: false
cards:
# Online/offline is a genuine success signal, so these keep green and
# take the success-coloured left rule.
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.p1s_01p09c470102673_online
name: PrintsCharming
icon: mdi:printer-3d-nozzle
show_entity_picture: false
color: green
card_mod: &cc_tile_success
style: |
ha-card {
border-radius: var(--cc-radius-md);
border-left: 4px solid var(--success-color);
box-shadow: var(--cc-shadow-sm);
}
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.a1_03919d540806387_online
name: Ds-Turd-Flinger
icon: mdi:printer-3d-nozzle
show_entity_picture: false
color: green
card_mod: *cc_tile_success
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.a1mini_0309ca580403653_online
name: Polly-Pocket
icon: mdi:printer-3d-nozzle
show_entity_picture: false
color: green
card_mod: *cc_tile_success
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.constipation_orion_online
name: Constipation-Orion
icon: mdi:printer-3d-nozzle
show_entity_picture: false
color: green
card_mod: *cc_tile_success
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.jordyns_layer_slayer_online
name: Jordyn's Layer Slayer
icon: mdi:printer-3d-nozzle
show_entity_picture: false
color: green
card_mod: *cc_tile_success
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.centauri_carbon_sdcp_status
name: Centauri Carbon
icon: mdi:printer-3d-nozzle
show_entity_picture: false
color: green
card_mod: *cc_tile_success
2026-06-28 14:27:20 -04:00
# ── Litter Boxes ──
- type: heading
heading: Litter Boxes
heading_style: title
icon: mdi:cat
card_mod: *cc_section
2026-06-28 14:27:20 -04:00
- type: grid
columns: 2
square: false
cards:
# These are the "something needs doing" tiles — the equivalent of a
# blocked order in the production card, so they take the error rule.
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.cat_crapper_3000_wastebin_filled
name: Cat Crapper 3000
icon: mdi:delete-empty
show_entity_picture: false
color: red
card_mod: &cc_tile_alert
style: |
ha-card {
border-radius: var(--cc-radius-md);
border-left: 4px solid var(--error-color);
box-shadow: var(--cc-shadow-sm);
}
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.cat_crapper_3000_sand_lack
name: CC3000 Litter
icon: mdi:grain
show_entity_picture: false
color: amber
card_mod:
style: |
ha-card {
border-radius: var(--cc-radius-md);
border-left: 4px solid var(--warning-color);
box-shadow: var(--cc-shadow-sm);
}
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.poop_box_wastebin_filled
name: Poop Box
icon: mdi:delete-empty
show_entity_picture: false
color: red
card_mod: *cc_tile_alert
2026-06-28 14:27:20 -04:00
- type: tile
entity: binary_sensor.triple_threat_wastebin_filled
name: Triple Threat
icon: mdi:delete-empty
show_entity_picture: false
color: red
card_mod: *cc_tile_alert
2026-06-28 14:27:20 -04:00
# ── Security ──
- type: heading
heading: Security
heading_style: title
icon: mdi:shield-home-outline
badges:
- type: entity
entity: alarm_control_panel.blink_front
name: Front
- type: entity
entity: alarm_control_panel.blink_inside
name: Inside
- type: entity
entity: alarm_control_panel.blink_garage
name: Garage
- type: entity
entity: alarm_control_panel.blink_rear
name: Rear
card_mod: *cc_section
2026-06-28 14:27:20 -04:00
# ── Recent Activity ──
- type: logbook
entities:
- automation.announce_day_camp_preparation_and_pause_tv
- automation.announce_time_to_leave_for_day_camp_and_turn_off_tv
- automation.bedtime_snack_notification
- automation.chore_tracker_evening_reminder
hours_to_show: 24
title: Recent Family Activity