Open hnb-ku opened 14 hours ago
This is a list to track the current work on stage 1
(app)/[username]/[slug]/+page.svelte
(app)/[username]/mastodon/+page.svelte
(app)/[username]/+page.svelte
(app)/account/[user_id]/custom-domain/+page.svelte
(app)/account/codeberg/profile/+page.svelte
(app)/account/codeberg/+page.svelte
(app)/account/forgot-password/+page.svelte
(app)/account/github/profile/readme/+page.svelte
(app)/account/github/profile/+page.svelte
(app)/account/github/+page.svelte
(app)/account/link-mastodon/+page.svelte
(app)/account/linktree/profile/+page.svelte
(app)/account/linktree/+page.svelte
(app)/account/pages/edit/[slug]/+page.svelte
(app)/account/pages/new/+page.svelte
(app)/account/pages/+page.svelte
(app)/account/register/confirmation/+page.svelte
(app)/account/update/+page.svelte
(app)/account/zulip/profile/+page.svelte
(app)/account/zulip/+page.svelte
(app)/auth/v1/account/+page.svelte
(app)/auth/v1/oidc/authorize/worker/+page.svelte
(app)/auth/v1/oidc/authorize/+page.svelte
(app)/auth/v1/oidc/logout/+page.svelte
(app)/auth/v1/providers/callback/+page.svelte
(app)/auth/v1/users/[user]/reset/[token]/+page.svelte
(app)/auth/v1/users/register/+page.svelte
(app)/connect/discord/[linkId]/+page.svelte
(app)/feedback/confirmation/+page.svelte
(app)/feedback/+page.svelte
(app)/people/+page.svelte
(app)/+layout.svelte
(internal)/__internal__/admin/update-username-domains/+page.svelte
(internal)/__internal__/admin/+page.svelte
(subsites)/subsite/[usernameOrDomain]/+page.svelte
- (app)/[username]/[slug]/+page.svelte
This issue proposes a new pattern to make theming the application easier and more maintainable.
Core Idea:
The idea is to shift towards a more component-centric architecture, separating data fetching and logic from presentation, and allowing themes to override both CSS and component templates (with guardrails).
Implementation Details:
+page.svelte
files. Keep most non-client-side logic in+page.server.ts
and pass data down to components.components
folder inside each route, containing smaller components focused on presentation.$lib/components
for global reusability.$props
for Props: Use the$props
rune for accessing props in Svelte 5 components.Theming Vision:
theme.css
file.Guardrails for Theming:
This enables:
Theming Hierarchy:
theme.css
for site-wide styling changes.Page.svelte
component for a route.+page.server.ts
files.Implementation Stages:
$lib
folder.