swift-foundations/swift-css
Typed CSS for Swift HTML rendering — inline style methods, dark-mode color pairs, and named themes that emit light and dark CSS custom properties.
Key Features
- Grouped property methods —
.css.frame(...),.css.spacing(...),.css.text(...), and.css.flexContainer(...)set related CSS properties in a single call and render as HTML inline styles. - Dark-mode colors —
DarkModeColorstores light and dark values as one normalized pair, auto-deriving the dark variant when only a light color is supplied. - Named themes —
DarkModeColor.Themeships palettes mirroring familiar systems (.github,.apple,.vapor,.slate, and more), each exposing semantictext,background,border, andbrandingcolor roles. - Stylesheet generation —
theme.stylesheetemits CSS custom properties for every role, paired with a@media (prefers-color-scheme: dark)override block and matching utility classes. - Scoped theming —
prepareDependenciessets process-wide theme and font defaults;withDependenciesoverrides them for a single synchronous or asynchronous operation.
Quick Start
A single named theme value expands into a complete stylesheet — every semantic color as a CSS custom property, plus a @media (prefers-color-scheme: dark) block carrying the dark variants:
import CSS_Theming
let stylesheet = DarkModeColor.Theme.github.stylesheet
print(stylesheet)
// /* Generated Theme Stylesheet */
// :root {
// --color-blue: ...;
// --text-primary: ...;
// }
// @media (prefers-color-scheme: dark) {
// :root { --color-blue: ...; }
// }DarkModeColor.Theme.StyleSheet conforms to CustomStringConvertible, so it interpolates into any output directly.
Installation
dependencies: [
.package(url: "https://github.com/swift-foundations/swift-css.git", branch: "main")
].target(
name: "YourTarget",
dependencies: [
.product(name: "CSS", package: "swift-css")
]
)Requires Swift 6.3.1 and macOS 26 / iOS 26 / tvOS 26 / watchOS 26 / visionOS 26.
Architecture
Three library products. CSS Theming and CSS Test Support re-export CSS.
| Product | Import | When to import | |---------|--------|----------------| | CSS | import CSS | Inline CSS property methods and the dark-mode color types. | | CSS Theming | import CSS_Theming | Named themes, stylesheet generation, and scoped theming defaults; re-exports CSS. | | CSS Test Support | import CSS_Test_Support | Test targets that snapshot rendered CSS; re-exports both library targets. |
Community
Discussion thread will be created at first public release.
License
Apache 2.0. See LICENSE.
Package Metadata
Repository: swift-foundations/swift-css
Default branch: main
README: README.md