···424425The generated `*_templ.go` should be regenerated whenever `.templ` files change.
426427-Templ files must use tabs rather than spaces.
428429## Command-Line Flags
430
···424425The generated `*_templ.go` should be regenerated whenever `.templ` files change.
426427+Templ files must use tabs rather than spaces. **Never use spaces for indentation in `.templ` files** — the templ parser will error with a parse failure. This applies when writing new components, editing existing ones, and constructing multi-line template strings. A post-edit hook runs `templ fmt` automatically to catch any accidental spaces.
428429## Command-Line Flags
430
+14-14
internal/web/components/layout.templ
···45// LayoutData contains all the data needed for the layout
6type LayoutData struct {
7- Title string
8- IsAuthenticated bool
9- UserDID string
10- UserProfile *bff.UserProfile
11- CSPNonce string
12- IsModerator bool // User has moderation permissions
13- UnreadNotificationCount int // Number of unread notifications
1415 // OpenGraph metadata (optional, uses defaults if empty)
16 OGTitle string // Falls back to Title + " - Arabica"
···75 <link rel="icon" href="/static/favicon.svg" type="image/svg+xml"/>
76 <link rel="icon" href="/static/favicon-32.svg" type="image/svg+xml" sizes="32x32"/>
77 <link rel="apple-touch-icon" href="/static/icon-192.svg"/>
78- <link rel="stylesheet" href="/static/css/output.css?v=0.6.0"/>
79 <style>
80 [x-cloak] { display: none !important; }
81 </style>
···168 </button>
169 </div>
170 @HeaderWithProps(HeaderProps{
171- IsAuthenticated: data.IsAuthenticated,
172- UserProfile: data.UserProfile,
173- UserDID: data.UserDID,
174- IsModerator: data.IsModerator,
175- UnreadNotificationCount: data.UnreadNotificationCount,
176- })
177 <main class="flex-grow container mx-auto py-8" data-transition>
178 @content
179 </main>
···45// LayoutData contains all the data needed for the layout
6type LayoutData struct {
7+ Title string
8+ IsAuthenticated bool
9+ UserDID string
10+ UserProfile *bff.UserProfile
11+ CSPNonce string
12+ IsModerator bool // User has moderation permissions
13+ UnreadNotificationCount int // Number of unread notifications
1415 // OpenGraph metadata (optional, uses defaults if empty)
16 OGTitle string // Falls back to Title + " - Arabica"
···75 <link rel="icon" href="/static/favicon.svg" type="image/svg+xml"/>
76 <link rel="icon" href="/static/favicon-32.svg" type="image/svg+xml" sizes="32x32"/>
77 <link rel="apple-touch-icon" href="/static/icon-192.svg"/>
78+ <link rel="stylesheet" href="/static/css/output.css?v=0.6.1"/>
79 <style>
80 [x-cloak] { display: none !important; }
81 </style>
···168 </button>
169 </div>
170 @HeaderWithProps(HeaderProps{
171+ IsAuthenticated: data.IsAuthenticated,
172+ UserProfile: data.UserProfile,
173+ UserDID: data.UserDID,
174+ IsModerator: data.IsModerator,
175+ UnreadNotificationCount: data.UnreadNotificationCount,
176+ })
177 <main class="flex-grow container mx-auto py-8" data-transition>
178 @content
179 </main>