Dokumentace systému ƥablon

CatCMS nabĂ­zĂ­ modernĂ­ systĂ©m ĆĄablon s vykreslovĂĄnĂ­m na straně serveru (server-side rendering), postavenĂœ na TypeScriptu, HTMX, Alpine.js a TailwindCSS.[object Object]

Pƙehled

KlíčovĂ© vlastnosti

  • VykreslovĂĄnĂ­ na straně serveru (SSR) - RychlĂ© počátečnĂ­ načtenĂ­ strĂĄnky s kompletnĂ­m HTML ze serveru
  • Typově bezpečnĂ© ĆĄablony - PlnĂĄ podpora TypeScriptu pro datovĂĄ rozhranĂ­ ĆĄablon
  • Interakce ƙízenĂ© pomocĂ­ HTMX - DynamickĂ© aktualizace bez sloĆŸitĂ©ho JavaScriptu
  • Alpine.js pro logiku na straně klienta - LehkĂœ JavaScriptovĂœ framework pro interaktivitu
  • Design systĂ©m s TailwindCSS - Utility-first CSS s podporou tmavĂ©ho reĆŸimu
  • KomponentovĂĄ architektura - Znovu pouĆŸitelnĂ©, sklĂĄdatelnĂ© komponenty ĆĄablon

PouĆŸitĂ© technologie

📝

TypeScript

Type-safe template functions

⚡

HTMX 2.0

HTML-driven interactions

đŸ”ïž

Alpine.js 3.x

Reactive client-side logic

🎹

TailwindCSS

Utility-first styling

đŸ”„

Hono.js

Server framework integration

đŸ§©

Template Renderer

Handlebars-like engine


Architektura ĆĄablon

Struktura adresáƙƯ

src/templates/
├── layouts/                              # Page layouts
│   ├── admin-layout-v2.template.ts      # Main admin layout
│   ├── admin-layout-catalyst.template.ts # Catalyst-based admin UI
│   └── docs-layout.template.ts          # Documentation layout
├── pages/                                # Full page templates
│   ├── admin-dashboard.template.ts      # Dashboard with stats & charts
│   ├── admin-content-list.template.ts   # Content listing with filters
│   ├── admin-content-edit.template.ts   # Content editor
│   ├── admin-media-library.template.ts  # Media management
│   ├── admin-users-list.template.ts     # User management
│   └── auth-login.template.ts           # Login page
├── components/                           # Reusable components
│   ├── form.template.ts                 # Form builder
│   ├── table.template.ts                # Data tables with sorting
│   ├── media-grid.template.ts           # Media file grid/list
│   ├── alert.template.ts                # Alert notifications
│   ├── pagination.template.ts           # Pagination controls
│   ├── filter-bar.template.ts           # Filter controls
│   └── logo.template.ts                 # Logo component
└── utils/
    └── template-renderer.ts             # Template rendering utility

Vzor funkce ĆĄablony

Vơechny ơablony se ƙídí tímto vzorem v TypeScriptu:

Template Pattern


Struktura ĆĄablony

TƙíĂșrovƈovĂĄ hierarchie ĆĄablon


Layout (admin-layout-v2.template.ts)
└── Page (admin-dashboard.template.ts)
└── Components (table.template.ts, alert.template.ts, etc.)

1. Layouty - DefinujĂ­ celkovou strukturu strĂĄnky (zĂĄhlavĂ­, postrannĂ­ panel, zĂĄpatĂ­)

2. StrĂĄnky - SklĂĄdajĂ­ komponenty do kompletnĂ­ch strĂĄnek

3. Komponenty - Znovu pouĆŸitelnĂ© prvky uĆŸivatelskĂ©ho rozhranĂ­

PrƯběh vykreslování ơablony

VykreslovacĂ­ engine ĆĄablon poskytuje funkcionalitu podobnou Handlebars:

Template Renderer

Vlastnosti vykreslovacĂ­ho enginu

  • Interpolace proměnnĂœch: {{variable}}
  • VnoƙenĂ© vlastnosti: {{user.name}}
  • SurovĂ© HTML: {{{rawHtml}}}
  • PodmĂ­nky: {{#if condition}}...{{/if}}
  • Smyčky: {{#each array}}...{{/each}}
  • SpeciĂĄlnĂ­ proměnnĂ© ve smyčce: {{@index}}, {{@first}}, {{@last}}
  • PomocnĂ© funkce: {{titleCase field}}

Systém layoutƯ

Layout administrace v2 (s Catalyst)

HlavnĂ­ layout administrace deleguje na Catalyst UI:

Admin Layout Interface

Vlastnosti layoutu

1. ResponzivnĂ­ navigace v postrannĂ­m panelu

  • NĂĄstěnka, Obsah, SbĂ­rky, MĂ©dia, UĆŸivatelĂ©, Pluginy, MezipaměƄ, Vzhled, ZĂĄznamy, NastavenĂ­
  • DynamickĂ© poloĆŸky menu z pluginĆŻ
  • ZvĂœrazněnĂ­ aktivnĂ­ho stavu

2. HornĂ­ liĆĄta

  • Logo s pƙizpĆŻsobitelnou velikostĂ­/variantou
  • Tlačítko oznĂĄmenĂ­
  • PƙizpĆŻsobenĂ­ motivu pozadĂ­
  • RozbalovacĂ­ menu uĆŸivatele

3. PƙizpƯsobení pozadí

  • VĂ­ce pƙechodovĂœch motivĆŻ (HlubokĂœ vesmĂ­r, KosmickĂĄ modƙ, MatrixovĂĄ zeleƈ, KybernetickĂĄ rĆŻĆŸovĂĄ)
  • VlastnĂ­ PNG pozadĂ­ (ModrĂ© vlny, Hvězdy, PĆŻlměsĂ­c, 3D vlny)
  • PosuvnĂ­k pro Ășpravu tmavosti
  • UklĂĄdĂĄno do localStorage

4. Podpora tmavĂ©ho reĆŸimu

  • TmavĂœ reĆŸim zaloĆŸenĂœ na tƙídĂĄch (dark: prefix)
  • Detekce systĂ©movĂœch preferencĂ­
  • Funkce pƙepĂ­nĂĄnĂ­ s uklĂĄdĂĄnĂ­m do localStorage

Knihovna komponent

1. Komponenta formuláƙe

Form Builder

Podporované typy polí: text, email, number, date, textarea, rich_text (s EasyMDE), select, multi_select, checkbox, file

2. Komponenta tabulky

Data Table

Vlastnosti tabulky: ƘazenĂ­ sloupcĆŻ (ƙetězec, číslo, datum, boolean), vĂœběr ƙádkĆŻ s “vybrat vĆĄe”, klikatelnĂ© ƙádky, prĂĄzdnĂœ stav, vlastnĂ­ vykreslovĂĄnĂ­ buněk

3. Komponenta upozornění

Alert Notifications

Typy upozornění: success, error, warning, info

4. Komponenta strĂĄnkovĂĄnĂ­

Pagination

Vlastnosti strĂĄnkovĂĄnĂ­: Navigace podle čísel strĂĄnek, tlačítka pƙedchozĂ­/nĂĄsledujĂ­cĂ­, vĂœběr velikosti strĂĄnky, zachovĂĄnĂ­ parametrĆŻ dotazu, responzivnĂ­ pro mobilnĂ­ zaƙízenĂ­


Integrace HTMX

HTMX umoĆŸĆˆuje dynamickĂ© interakce ƙízenĂ© serverem bez nutnosti psĂĄt JavaScript.

ZĂĄkladnĂ­ vzory HTMX

Auto-Refresh with Polling

Form Submission

Delete with Confirmation

Pƙehled atributƯ HTMX

AtributÚčelPƙíklad
hx-getGET poĆŸadavekhx-get="/api/data"
hx-postPOST poĆŸadavekhx-post="/api/create"
hx-putPUT poĆŸadavekhx-put="/api/update/123"
hx-deleteDELETE poĆŸadavekhx-delete="/api/delete/123"
hx-targetKam vloĆŸit odpověďhx-target="#result"
hx-swapJak vloĆŸitinnerHTML, outerHTML, beforeend
hx-triggerKdy spustitclick, load, change, every 30s
hx-indicatorIndikátor načítáníhx-indicator="#spinner"
hx-confirmPotvrzovacĂ­ dialoghx-confirm="Are you sure?"

Integrace Alpine.js

Alpine.js poskytuje reaktivní interakce na straně klienta.

Pƙíklady Alpine.js

Dropdown Menu

Tabs


TailwindCSS & Design systém

Konfigurace TailwindCSS

CatCMS pouĆŸĂ­vĂĄ Tailwind pƙes CDN s vlastnĂ­ konfiguracĂ­:

Tailwind Config

BÄ›ĆŸnĂ© vzory utilit

Form Inputs

Buttons


Implementace tmavĂ©ho reĆŸimu

PƙepĂ­nač tmavĂ©ho reĆŸimu

TmavĂœ reĆŸim pouĆŸĂ­vĂĄ class strategii Tailwindu:

Dark Mode Toggle

Utility pro tmavĂœ reĆŸim

KaĆŸdĂĄ komponenta pouĆŸĂ­vĂĄ varianty pro tmavĂœ reĆŸim:

Dark Mode Variants


Vytváƙení vlastních ơablon

PrĆŻvodce krok za krokem

Step 1: Define Data Interface

Step 2: Create Component

Step 3: Create Page Template

Step 4: Create Route Handler

Template Best Practices

  • VĆŸdy definujte TypeScript rozhranĂ­ pro data ĆĄablon - Rozdělte sloĆŸitĂ© UI na znovu pouĆŸitelnĂ© komponenty - Zahrƈte ARIA atributy a sĂ©mantickĂ© HTML pro pƙístupnost - VĆŸdy oĆĄetƙujte uĆŸivatelskĂœ vstup, abyste pƙedeĆĄli XSS - PouĆŸĂ­vejte HTMX pro částečnĂ© aktualizace mĂ­sto plnĂ©ho znovunačtenĂ­ strĂĄnky - Poskytněte zĂĄloĆŸnĂ­ UI a chybovĂ© stavy - VĆŸdy poskytujte načítacĂ­ kostry

DalĆĄĂ­ kroky

Was this page helpful?