You can already do this with the !include statement.
My entire UI is based on !includes. Most of the elements and cards are shared between my desktop, tablet (kiosk), and mobile dashboards so I only have to maintain one copy of them.
Here’s my main home page view for example.
Laptop Home View
###############################################################################
## Home View
###############################################################################
title: "Home"
icon: mdi:home-account
path: home
type: custom:vertical-layout
layout:
max_cols: 4
cards:
- type: horizontal-stack
cards:
- !include /config/ui/button/presence/occupancy_mode_button.yaml
- !include /config/ui/button/alarm/master_alarm_button.yaml
- !include /config/ui/button/presence/presence_button_jason.yaml
- type: conditional
conditions:
- entity: input_boolean.guest_home
state: "on"
card: !include /config/ui/button/presence/guest_presence_button.yaml
- !include /config/ui/card/alarm/alarm_alert_card.yaml
- type: grid
columns: 5
square: true
cards:
- !include /config/ui/button/other/lock_button.yaml
- !include /config/ui/button/garage/garage_door_button.yaml
- !include /config/ui/button/sensor/door_button.yaml
- !include /config/ui/button/sensor/window_button.yaml
- !include /config/ui/button/sensor/motion_button.yaml
- !include /config/ui/button/alarm/camera_button.yaml
- !include /config/ui/button/other/thermostat_button.yaml
- !include /config/ui/button/garage/garage_thermostat_button.yaml
- !include /config/ui/button/other/fireplace_button.yaml
- !include /config/ui/button/other/fan_button.yaml
- !include /config/ui/button/sensor/dishwasher_button.yaml
- !include /config/ui/button/sensor/refrigerator_button.yaml
- !include /config/ui/button/other/light_button.yaml
- !include /config/ui/button/scene/scene_movie_button.yaml
- !include /config/ui/button/scene/scene_company_button.yaml
- !include /config/ui/button/scene/scene_chill_button.yaml
- !include /config/ui/button/scene/scene_shower_button.yaml
- !include /config/ui/button/sensor/power_use_button.yaml
- !include /config/ui/button/schedule/work_schedule_button.yaml
- !include /config/ui/button/schedule/waketime_button.yaml
- !include /config/ui/button/schedule/bedtime_button.yaml
- !include /config/ui/button/schedule/waste_button.yaml
- !include /config/ui/button/sensor/smoke_detector_button.yaml
- !include /config/ui/button/other/charlie_button.yaml
- !include /config/ui/button/sensor/leak_button.yaml
- !include /config/ui/button/sensor/indoor_sump_button.yaml
- !include /config/ui/button/sensor/outdoor_sump_button.yaml
- !include /config/ui/button/other/sprinkler_button.yaml
- !include /config/ui/button/other/hot_tub_button.yaml
- !include /config/ui/button/other/hass_button.yaml
- !include /config/ui/menu/home_menu.yaml
- !include /config/ui/card/schedule/schedule_timers.yaml
- !include /config/ui/card/scene/scene_timers.yaml
- type: custom:layout-break
- !include /config/ui/card/media/media_buttons.yaml
- type: custom:state-switch
entity: template
default: "off"
template: "{{ iif(is_state('binary_sensor.media_active','on'),'media','players') }}"
states:
media: !include /config/ui/card/media/media_launcher.yaml
players: !include /config/ui/card/media/media_player/media_players_device.yaml
- type: custom:layout-break
- !include /config/ui/card/weather/weather_forecast.yaml
- type: custom:layout-break
- !include /config/ui/card/camera/camera_swipe.yaml