Skip to main content

module_styles

Overview

The module_styles table stores CSS customization for individual HomeRoom modules. Each module can have its own font, color, border, and shadow settings that override the room-level styles.

Schema

-- From 20260202_room_styles.sql
CREATE TABLE module_styles (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
module_id UUID NOT NULL REFERENCES home_room_modules(id) ON DELETE CASCADE UNIQUE,
background_color TEXT,
text_color TEXT,
border_style TEXT,
border_color TEXT,
border_width TEXT,
border_radius TEXT,
shadow TEXT,
padding TEXT,
font_family TEXT,
font_size TEXT,
opacity NUMERIC(3,2) DEFAULT 1.0,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);

Columns

ColumnTypeNullableDefaultDescription
iduuidNogen_random_uuid()Primary key
module_iduuidNo--Parent module (unique per module)
background_colortextYes--Module background color
text_colortextYes--Module text color
border_styletextYes--Border style
border_colortextYes--Border color
border_widthtextYes--Border width
border_radiustextYes--Border radius
shadowtextYes--Box shadow
paddingtextYes--Internal padding
font_familytextYes--Font family override
font_sizetextYes--Font size override
opacitynumeric(3,2)No1.0Module opacity
created_attimestamptzNoNOW()Creation timestamp
updated_attimestamptzNoNOW()Last update timestamp

RLS Policies

-- SELECT: Anyone can view module styles
CREATE POLICY "Module styles are publicly viewable"
ON module_styles FOR SELECT
USING (true);

-- INSERT/UPDATE: Room owner can manage module styles
CREATE POLICY "Room owner can manage module styles"
ON module_styles FOR ALL
USING (EXISTS (
SELECT 1 FROM home_room_modules
JOIN home_room_settings ON home_room_settings.id = home_room_modules.room_id
WHERE home_room_modules.id = module_styles.module_id
AND home_room_settings.user_id = auth.uid()
));

Last updated: 2026-02-07