This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
launch.css is a classless CSS framework that styles semantic HTML elements directly without requiring class names. It uses ARIA attributes and data attributes for component styling and layout control.
# Root level (monorepo)
pnpm dev # Start dev servers for all packages
pnpm build # Build all packages
pnpm test # Run tests (publint validation)
pnpm format # Format code with dprint
pnpm lint # Check formatting with dprint
# Core package (packages/main)
cd packages/main
pnpm dev # Watch-compile Sass: src/_index.scss → dist/index.css
pnpm build # Compile compressed CSS
# Documentation (apps/docs)
cd apps/docs
pnpm dev # Start Vite dev server
pnpm build # Build static siteMonorepo Structure:
packages/main/- Core CSS framework (published to npm aslaunch.css)apps/docs/- Documentation website (Vite + Handlebars + HTMX)examples/website/- Example implementation
Sass Organization (packages/main/src/):
_index.scss- Main entry point, imports all modules_variables.scss- CSS custom properties (colors, fonts, spacing)_global.scss- Global resets and base styleslayouts/- Website and dashboard layout stylescompoments/- Component styles (note: intentional spelling)partials/_breakpoints.scss- Media query breakpoints
Classless Design: Styles target semantic HTML elements, ARIA roles/attributes, and data attributes. No CSS classes.
Theme System: Uses CSS color-scheme property with light-dark() function. No JavaScript theme switching required.
color-scheme: only dark; /* Force dark */
color-scheme: only light; /* Force light */
color-scheme: light dark; /* Auto based on OS preference */Layouts: Controlled via data-layout attribute on <body>:
website- Standard header/main/footer layoutdashboard- Fixed header app layout
Button Variants: Styled via ARIA labels (not classes):
- Default:
<button>Primary</button> - Secondary:
aria-labelcontains "cancel", "back", or "close" - Danger:
aria-labelcontains "delete", "remove", "discard", "erase", "destroy", or "clear"
- Create Sass file in
packages/main/src/compoments/(match existing naming) - Import in
packages/main/src/compoments/_index.scss - Use semantic HTML selectors, ARIA attributes, or
data-*attributes (no classes) - Use variables from
_variables.scssfor colors/spacing - Test with
pnpm devin root directory
See apps/docs/public/llm.txt for component HTML patterns and ARIA attribute reference.