# CSS Build Process Dette projekt bruger PostCSS til at kompilere moderne nested CSS til browser-kompatibel CSS. ## Mappestruktur ``` wwwroot/css/ ├── src/ # Source CSS filer med nesting │ ├── calendar-base-css.css │ ├── calendar-layout-css.css │ └── ... ├── calendar-base-css.css # Compiled CSS (genereret automatisk) ├── calendar-layout-css.css # Compiled CSS (genereret automatisk) └── ... ``` ## Workflow ### Development 1. **Rediger CSS i `src/` mappen** - Brug moderne CSS nesting - Skriv nested selectors med `&` - Brug CSS custom properties 2. **Build CSS** ```bash npm run css:build ``` 3. **Watch mode (auto-rebuild)** ```bash npm run css:watch ``` ### Production ```bash npm run css:build:prod ``` Dette vil: - Kompilere nested CSS - Tilføje vendor prefixes (autoprefixer) - Minificere CSS (cssnano) - Fjerne comments ## CSS Nesting Eksempel ### Source (src/calendar-layout-css.css) ```css swp-allday-container { display: grid; swp-allday-event { height: 22px; padding: 2px 4px; &[data-type="meeting"] { background: var(--color-event-meeting); &.highlight { background: var(--color-event-meeting-hl); } } &:hover { opacity: 0.9; } swp-event-title { font-size: 12px; } } } ``` ### Compiled (calendar-layout-css.css) ```css swp-allday-container { display: grid; } swp-allday-container swp-allday-event { height: 22px; padding: 2px 4px; } swp-allday-container swp-allday-event[data-type="meeting"] { background: var(--color-event-meeting); } swp-allday-container swp-allday-event[data-type="meeting"].highlight { background: var(--color-event-meeting-hl); } swp-allday-container swp-allday-event:hover { opacity: 0.9; } swp-allday-container swp-allday-event swp-event-title { font-size: 12px; } ``` ## Fordele ved CSS Nesting 1. **Mindre gentagelse** - Ingen behov for at gentage parent selectors 2. **Bedre læsbarhed** - Strukturen matcher DOM hierarkiet 3. **Lettere vedligeholdelse** - Relaterede styles er grupperet 4. **Mindre CSS** - Færre bytes i source filer 5. **Bedre organisation** - Logisk gruppering af styles ## PostCSS Plugins - **postcss-nesting**: Konverterer nested CSS til flat CSS - **autoprefixer**: Tilføjer vendor prefixes automatisk - **cssnano**: Minificerer CSS i production mode ## Vigtige Noter ⚠️ **Rediger ALDRIG de compiled CSS filer direkte!** - Alle ændringer skal laves i `src/` mappen - De compiled filer bliver overskrevet ved hver build ⚠️ **Husk at køre build før commit** - Sørg for at både source og compiled filer er opdateret - Kør `npm run css:build` før du committer ## Browser Support PostCSS sikrer kompatibilitet med: - Chrome/Edge (sidste 2 versioner) - Firefox (sidste 2 versioner) - Safari (sidste 2 versioner) ## Troubleshooting ### CSS ændringer vises ikke 1. Tjek at du har kørt `npm run css:build` 2. Tjek at du redigerer filer i `src/` mappen 3. Hard refresh browseren (Ctrl+Shift+R) ### Build fejl 1. Tjek CSS syntax i source filerne 2. Sørg for at alle `{` har matchende `}` 3. Tjek at nesting er korrekt formateret