UNPKG

@capgo/capgo-skills

Version:

55 agent skills for Capacitor mobile development

82 lines (57 loc) • 3.5 kB
# Ionic Theming Load when changing colors, dark mode, fonts, or platform-specific styles. ## Brand colors Each color needs the full set; generate with the Ionic Color Generator (https://ionicframework.com/docs/theming/color-generator). ```css /* src/theme/variables.css */ :root { --ion-color-primary: #4f46e5; --ion-color-primary-rgb: 79, 70, 229; --ion-color-primary-contrast: #ffffff; --ion-color-primary-contrast-rgb: 255, 255, 255; --ion-color-primary-shade: #4640ca; --ion-color-primary-tint: #6159e8; } ``` Custom named color (`color="brand"`): ```css :root { --ion-color-brand: #0ea5e9; --ion-color-brand-rgb: 14,165,233; --ion-color-brand-contrast: #fff; --ion-color-brand-contrast-rgb: 255,255,255; --ion-color-brand-shade: #0c91cd; --ion-color-brand-tint: #26aeed; } .ion-color-brand { --ion-color-base: var(--ion-color-brand); --ion-color-base-rgb: var(--ion-color-brand-rgb); --ion-color-contrast: var(--ion-color-brand-contrast); --ion-color-contrast-rgb: var(--ion-color-brand-contrast-rgb); --ion-color-shade: var(--ion-color-brand-shade); --ion-color-tint: var(--ion-color-brand-tint); } ``` Global app variables: `--ion-background-color`, `--ion-text-color`, `--ion-font-family`, `--ion-toolbar-background`, `--ion-item-background`, `--ion-tab-bar-background`, `--ion-safe-area-*`. ## Dark mode (Ionic 8+ palettes) Import exactly one dark palette after core CSS: | File | Activates | |------|-----------| | `css/palettes/dark.system.css` | OS dark setting (`prefers-color-scheme`) | | `css/palettes/dark.always.css` | Always dark | | `css/palettes/dark.class.css` | When `<html>` has class `ion-palette-dark` | High contrast: `high-contrast.system.css`, `high-contrast-dark.system.css` (and `.always` / `.class` variants). Manual toggle with the class palette: ```ts document.documentElement.classList.toggle('ion-palette-dark', isDark); ``` Persist the choice with `@capacitor/preferences`. Sync native chrome: `SystemBars.setStyle({ style: isDark ? SystemBarsStyle.Dark : SystemBarsStyle.Light })` (see `safe-area-handling`) and match the splash background (`capacitor-splash-screen`). Override palette values for dark only: ```css .ion-palette-dark { --ion-background-color: #0b0b0f; } /* class palette */ @media (prefers-color-scheme: dark) { :root { --ion-background-color: #0b0b0f; } } /* system palette */ ``` ## Platform modes - Mode comes from the platform (`ios` on iPhone/iPad, `md` elsewhere). Force globally with `setupIonicReact({ mode: 'ios' })` / `IonicVue` / `provideIonicAngular({ mode })`, or per component with `mode="md"`. - Mode-specific CSS: `.ios ion-toolbar { ... }` / `.md ion-toolbar { ... }` (class on `<html>`). - Preview in browser: `?ionic:mode=ios`. ## Styling inside components Prefer documented CSS custom properties (`--background`, `--color`, `--border-radius`, `--padding-start`). If none exists, use shadow parts: ```css ion-button::part(native) { letter-spacing: 0; } ion-select::part(icon) { color: var(--ion-color-medium); } ``` Ionic 9 changed internal DOM of `ion-input`, `ion-select`, `ion-textarea` (new `.input-control`, `part="control"`, etc.). Selectors targeting internal classes break across majors; use parts and variables. ## Tailwind with Ionic Works, but disable Tailwind's Preflight or import it before Ionic CSS to avoid resetting Ionic typography; map Tailwind colors to Ionic variables (`--color-primary: var(--ion-color-primary)` in `@theme`). See `tailwind-capacitor`.