@@ -0,0 +1,392 @@
1+@page Stress Test Large Document
2+
3+@let --primary #3b82f6
4+@let --secondary #10b981
5+@let --accent #f59e0b
6+@let --danger #ef4444
7+@let --dark #1e293b
8+@let --light #f8fafc
9+@let --gray #64748b
10+@let --border #e2e8f0
11+@let --radius 8
12+@let --gap 16
13+@let --gap-sm 8
14+@let --gap-lg 24
15+
16+@keyframes fade-in
17+ from{opacity:0}to{opacity:1}
18+
19+@keyframes slide-down
20+ 0%{transform:translateY(-10px);opacity:0}100%{transform:translateY(0);opacity:1}
21+
22+@fn icon-button $label $color=var(--primary)
23+ @button [padding 8 16, background $color, hover:background $--dark, color white, rounded 6, border none, cursor pointer, transition all 0.2s, font-size 14]
24+ $label
25+
26+@fn badge $label $variant=blue
27+ @el [display inline-block, padding 2 8, background $variant, color white, rounded 12, font-size 12]
28+ @text $label
29+
30+@fn card $title
31+ @el [background white, dark:background #1e293b, rounded $--radius, padding $--gap, border 1 $--border, dark:border 1 #334155, hover:shadow 0 4 12 rgba(0,0,0,0.1), transition all 0.2s, animation fade-in 0.3s ease]
32+ @text [bold, size 18, color $--dark, dark:color white] $title
33+ @el [margin-top 8]
34+ @children
35+
36+@fn stat-card $label $value $change
37+ @el [background white, dark:background #1e293b, rounded $--radius, padding $--gap, border 1 $--border, dark:border 1 #334155]
38+ @text [size 14, color $--gray] $label
39+ @text [bold, size 28, color $--dark, dark:color white, margin-top 4] $value
40+ @text [size 12, color $--secondary, margin-top 2] $change
41+
42+@fn nav-link $url $label $active=false
43+ @if $active == true
44+ @link [color $--primary, bold, padding 8 12, background #eff6ff, dark:background #1e3a5f, rounded 6] $url $label
45+ @else
46+ @link [color $--gray, hover:color $--primary, padding 8 12, hover:background #f1f5f9, dark:hover:background #334155, rounded 6, transition all 0.15s] $url $label
47+
48+@fn sidebar-section $title
49+ @el [margin-bottom $--gap-lg]
50+ @text [bold, size 12, color $--gray, text-transform uppercase, letter-spacing 1, margin-bottom $--gap-sm] $title
51+ @children
52+
53+@fn avatar $initials $size=32
54+ @el [width $size, height $size, rounded 50%, background $--primary, color white, display flex, align-items center, justify-content center, font-size 14, bold]
55+ @text $initials
56+
57+@fn table-row $col1 $col2 $col3 $col4
58+ @row [spacing 0, padding 12 16, border-bottom 1 $--border, dark:border-bottom 1 #334155, hover:background #f8fafc, dark:hover:background #1e293b]
59+ @el [width 200]
60+ @text [size 14] $col1
61+ @el [width 150]
62+ @text [size 14, color $--gray] $col2
63+ @el [width 120]
64+ @text [size 14] $col3
65+ @el [width fill]
66+ @text [size 14, color $--gray] $col4
67+
68+@fn breadcrumb-item $url $label $is-last=false
69+ @if $is-last == true
70+ @text [color $--dark, dark:color white, size 14] $label
71+ @else
72+ @row [spacing 8]
73+ @link [color $--gray, hover:color $--primary, size 14] $url $label
74+ @text [color $--border, size 14] /
75+
76+@fn alert $message $type=info
77+ @if $type == info
78+ @el [background #eff6ff, border 1 #bfdbfe, rounded $--radius, padding 12 16]
79+ @text [color #1e40af, size 14] $message
80+ @else if $type == success
81+ @el [background #f0fdf4, border 1 #bbf7d0, rounded $--radius, padding 12 16]
82+ @text [color #166534, size 14] $message
83+ @else if $type == warning
84+ @el [background #fffbeb, border 1 #fde68a, rounded $--radius, padding 12 16]
85+ @text [color #92400e, size 14] $message
86+ @else
87+ @el [background #fef2f2, border 1 #fecaca, rounded $--radius, padding 12 16]
88+ @text [color #991b1b, size 14] $message
89+
90+@fn progress-bar $percent $color=var(--primary)
91+ @el [width fill, height 8, background #e2e8f0, dark:background #334155, rounded 4, overflow hidden]
92+ @el [width $percent%, height fill, background $color, rounded 4]
93+
94+@fn tag $label
95+ @el [display inline-block, padding 4 10, background #f1f5f9, dark:background #334155, color $--gray, dark:color #94a3b8, rounded 4, font-size 12, margin 2]
96+ @text $label
97+
98+@fn notification-dot
99+ @el [width 8, height 8, rounded 50%, background $--danger]
100+
101+@fn divider
102+ @el [width fill, height 1, background $--border, dark:background #334155, margin 8 0]
103+
104+@fn toggle $checked=false
105+ @if $checked == true
106+ @el [width 40, height 22, rounded 11, background $--primary, padding 2, cursor pointer, transition all 0.2s]
107+ @el [width 18, height 18, rounded 50%, background white, margin-left 18, transition all 0.2s]
108+ @else
109+ @el [width 40, height 22, rounded 11, background #cbd5e1, dark:background #475569, padding 2, cursor pointer, transition all 0.2s]
110+ @el [width 18, height 18, rounded 50%, background white, transition all 0.2s]
111+
112+@let nav-items home,products,team,blog,docs,pricing
113+@let categories all,design,development,marketing,analytics
114+@let team-members Alice,Bob,Carol,Dave,Eve,Frank,Grace,Hank
115+@let statuses active,pending,completed,archived
116+@let projects Alpha,Beta,Gamma,Delta,Epsilon
117+
118+@row [spacing 0, min-height 100vh]
119+
120+ @column [width 260, background white, dark:background #0f172a, border-right 1 $--border, dark:border-right 1 #1e293b, padding $--gap, spacing $--gap-sm]
121+
122+ @row [spacing 12, padding 8, align-items center]
123+ @avatar [initials HL, size 36]
124+ @column [spacing 2]
125+ @text [bold, size 16, color $--dark, dark:color white] htmlang
126+ @text [size 12, color $--gray] Dashboard v2.0
127+
128+ @divider
129+
130+ @sidebar-section [title Navigation]
131+ @column [spacing 2]
132+ @nav-link [url /dashboard, label Dashboard, active true]
133+ @nav-link [url /analytics, label Analytics]
134+ @nav-link [url /projects, label Projects]
135+ @nav-link [url /team, label Team]
136+ @nav-link [url /messages, label Messages]
137+ @nav-link [url /calendar, label Calendar]
138+ @nav-link [url /documents, label Documents]
139+ @nav-link [url /settings, label Settings]
140+
141+ @sidebar-section [title Favorites]
142+ @column [spacing 2]
143+ @nav-link [url /project/alpha, label Project Alpha]
144+ @nav-link [url /project/beta, label Project Beta]
145+ @nav-link [url /reports/q4, label Q4 Reports]
146+
147+ @sidebar-section [title Shortcuts]
148+ @column [spacing 4]
149+ @row [spacing 8, align-items center]
150+ @el [width 6, height 6, rounded 50%, background $--secondary]
151+ @text [size 13, color $--gray] Online (12)
152+ @row [spacing 8, align-items center]
153+ @el [width 6, height 6, rounded 50%, background $--accent]
154+ @text [size 13, color $--gray] Away (3)
155+ @row [spacing 8, align-items center]
156+ @el [width 6, height 6, rounded 50%, background #cbd5e1]
157+ @text [size 13, color $--gray] Offline (5)
158+
159+ @el [margin-top auto, padding 12, background #f1f5f9, dark:background #1e293b, rounded $--radius]
160+ @row [spacing 8, align-items center]
161+ @avatar [initials JD, size 28]
162+ @column [spacing 0]
163+ @text [size 13, bold, color $--dark, dark:color white] Jane Doe
164+ @text [size 11, color $--gray] jane@example.com
165+
166+ @column [width fill, background $--light, dark:background #0f172a]
167+
168+ @header [padding 12 24, background white, dark:background #0f172a, border-bottom 1 $--border, dark:border-bottom 1 #1e293b]
169+ @row [spacing 16, align-items center]
170+ @column [spacing 2]
171+ @row [spacing 8]
172+ @breadcrumb-item [url /, label Home]
173+ @breadcrumb-item [url /dashboard, label Dashboard, is-last true]
174+ @text [bold, size 22, color $--dark, dark:color white] Dashboard Overview
175+
176+ @el [width fill]
177+
178+ @row [spacing 12, align-items center]
179+ @input [type search, placeholder Search..., padding 8 12, rounded 6, border 1 $--border, dark:border 1 #334155, dark:background #1e293b, dark:color white, width 240, focus:border 1 $--primary, transition all 0.2s]
180+ @el [position relative]
181+ @icon-button [label Alerts]
182+ @el [position absolute, top -2, right -2]
183+ @notification-dot
184+ @icon-button [label Settings, color $--gray]
185+
186+ @el [padding $--gap-lg, overflow-y auto]
187+
188+ @alert [message Welcome back! You have 3 new notifications and 2 pending tasks., type info]
189+
190+ @row [spacing $--gap, margin-top $--gap-lg, sm:flex-direction column, lg:flex-direction row]
191+ @stat-card [label Total Revenue, value $48,295, change +12.5% from last month]
192+ @stat-card [label Active Users, value 2,847, change +8.2% from last week]
193+ @stat-card [label Conversion Rate, value 3.24%, change +0.4% from yesterday]
194+ @stat-card [label Open Tickets, value 142, change -5.1% from last month]
195+
196+ @row [spacing $--gap, margin-top $--gap-lg]
197+
198+ @card [title Revenue Overview]
199+ @el [height 200, background #f8fafc, dark:background #0f172a, rounded 6, margin-top 12, display flex, align-items flex-end, padding 16, gap 8]
200+ @each $height in 40,65,45,80,55,70,90,60,75,85,50,95
201+ @el [width fill, height $height%, background $--primary, hover:background #2563eb, rounded 4 4 0 0, transition all 0.2s, min-width 20]
202+
203+ @card [title Activity Feed]
204+ @column [spacing 12, margin-top 12]
205+ @each $member in $team-members
206+ @row [spacing 12, align-items center, padding 8, hover:background #f8fafc, dark:hover:background #1e293b, rounded 6]
207+ @avatar [initials $member, size 32]
208+ @column [spacing 2, width fill]
209+ @text [size 14, bold, color $--dark, dark:color white] $member
210+ @text [size 12, color $--gray] Updated project files
211+ @text [size 11, color $--gray] 2h ago
212+
213+ @row [spacing $--gap, margin-top $--gap-lg, sm:flex-direction column, lg:flex-direction row]
214+
215+ @column [width fill, spacing $--gap]
216+
217+ @card [title Project Status]
218+ @column [spacing 0, margin-top 12]
219+ @row [spacing 0, padding 8 16, background #f8fafc, dark:background #0f172a, border-bottom 1 $--border]
220+ @el [width 200]
221+ @text [bold, size 12, color $--gray, text-transform uppercase] Project
222+ @el [width 150]
223+ @text [bold, size 12, color $--gray, text-transform uppercase] Status
224+ @el [width 120]
225+ @text [bold, size 12, color $--gray, text-transform uppercase] Progress
226+ @el [width fill]
227+ @text [bold, size 12, color $--gray, text-transform uppercase] Due Date
228+
229+ @table-row [col1 Project Alpha, col2 In Progress, col3 75%, col4 Dec 15 2025]
230+ @table-row [col1 Project Beta, col2 Review, col3 90%, col4 Nov 30 2025]
231+ @table-row [col1 Project Gamma, col2 Planning, col3 20%, col4 Jan 20 2026]
232+ @table-row [col1 Project Delta, col2 Completed, col3 100%, col4 Oct 10 2025]
233+ @table-row [col1 Project Epsilon, col2 On Hold, col3 45%, col4 Feb 28 2026]
234+
235+ @card [title Progress Breakdown]
236+ @column [spacing 12, margin-top 12]
237+ @each $project in $projects
238+ @column [spacing 4]
239+ @row [spacing 0]
240+ @text [size 13, color $--dark, dark:color white, width fill] $project
241+ @text [size 13, color $--gray] 67%
242+ @progress-bar [percent 67, color var(--primary)]
243+
244+ @card [title Recent Activity Log]
245+ @column [spacing 8, margin-top 12]
246+ @let log-entries Deployed v2.3.1 to production,Merged feature/auth-redesign,Closed issue #482: Login timeout,Updated CI/CD pipeline config,Added unit tests for payment module,Reviewed PR #156: API refactor,Fixed memory leak in worker pool,Released hotfix 2.3.2
247+ @each $entry, $i in $log-entries
248+ @row [spacing 12, padding 8 12, align-items center]
249+ @el [width 24, height 24, rounded 50%, background #eff6ff, dark:background #1e3a5f, display flex, align-items center, justify-content center]
250+ @text [size 10, color $--primary, bold] $i
251+ @text [size 14, color $--dark, dark:color white, width fill] $entry
252+ @text [size 11, color $--gray] just now
253+
254+ @column [width 340, sm:width fill, spacing $--gap]
255+
256+ @card [title Quick Actions]
257+ @column [spacing 8, margin-top 12]
258+ @icon-button [label New Project, color var(--primary)]
259+ @icon-button [label Create Report, color var(--secondary)]
260+ @icon-button [label Invite Member, color var(--accent)]
261+ @icon-button [label View Backlog, color var(--gray)]
262+
263+ @card [title Team Members]
264+ @column [spacing 8, margin-top 12]
265+ @each $member in $team-members
266+ @row [spacing 10, align-items center, padding 6 8, hover:background #f1f5f9, dark:hover:background #1e293b, rounded 6, transition all 0.15s]
267+ @avatar [initials $member, size 28]
268+ @column [spacing 0, width fill]
269+ @text [size 13, bold, color $--dark, dark:color white] $member
270+ @text [size 11, color $--gray] Developer
271+ @el [width 8, height 8, rounded 50%, background $--secondary]
272+
273+ @card [title Tags]
274+ @row [spacing 0, wrap, margin-top 8]
275+ @tag [label frontend]
276+ @tag [label backend]
277+ @tag [label devops]
278+ @tag [label design]
279+ @tag [label mobile]
280+ @tag [label security]
281+ @tag [label performance]
282+ @tag [label testing]
283+ @tag [label docs]
284+ @tag [label infra]
285+ @tag [label ux]
286+ @tag [label api]
287+
288+ @card [title Notifications]
289+ @column [spacing 0, margin-top 12]
290+ @let notifications New deployment completed,PR review requested,Build failed on staging,Meeting in 30 minutes,Subscription renewal due
291+ @each $note in $notifications
292+ @row [spacing 10, padding 10 12, border-bottom 1 $--border, dark:border-bottom 1 #334155, align-items center]
293+ @notification-dot
294+ @text [size 13, color $--dark, dark:color white, width fill] $note
295+ @text [size 11, color $--gray] now
296+
297+ @card [title Settings]
298+ @column [spacing 12, margin-top 12]
299+ @row [spacing 0, align-items center]
300+ @text [size 14, color $--dark, dark:color white, width fill] Dark Mode
301+ @toggle [checked true]
302+ @row [spacing 0, align-items center]
303+ @text [size 14, color $--dark, dark:color white, width fill] Notifications
304+ @toggle [checked true]
305+ @row [spacing 0, align-items center]
306+ @text [size 14, color $--dark, dark:color white, width fill] Auto-save
307+ @toggle [checked false]
308+ @row [spacing 0, align-items center]
309+ @text [size 14, color $--dark, dark:color white, width fill] Compact View
310+ @toggle [checked false]
311+
312+ @el [margin-top $--gap-lg]
313+ @card [title Data Table]
314+ @column [spacing 0, margin-top 12]
315+ @row [spacing 16, margin-bottom 12, align-items center]
316+ @input [type search, placeholder Filter results..., padding 8 12, rounded 6, border 1 $--border, width 240]
317+ @el [width fill]
318+ @row [spacing 8]
319+ @each $cat in $categories
320+ @button [padding 6 12, rounded 4, border 1 $--border, background white, dark:background #1e293b, hover:background #f1f5f9, color $--gray, hover:color $--dark, font-size 13, cursor pointer, transition all 0.15s] $cat
321+
322+ @row [spacing 0, padding 8 16, background #f8fafc, dark:background #0f172a, border-bottom 2 $--border, rounded 6 6 0 0]
323+ @el [width 60]
324+ @text [bold, size 12, color $--gray, text-transform uppercase] ID
325+ @el [width 200]
326+ @text [bold, size 12, color $--gray, text-transform uppercase] Name
327+ @el [width 150]
328+ @text [bold, size 12, color $--gray, text-transform uppercase] Category
329+ @el [width 120]
330+ @text [bold, size 12, color $--gray, text-transform uppercase] Status
331+ @el [width fill]
332+ @text [bold, size 12, color $--gray, text-transform uppercase] Updated
333+
334+ @each $status in $statuses
335+ @each $project in $projects
336+ @row [spacing 0, padding 10 16, border-bottom 1 $--border, dark:border-bottom 1 #334155, hover:background #f8fafc, dark:hover:background #1e293b, cursor pointer, transition all 0.1s]
337+ @el [width 60]
338+ @text [size 13, color $--gray] #42
339+ @el [width 200]
340+ @row [spacing 8, align-items center]
341+ @avatar [initials $project, size 24]
342+ @text [size 14, color $--dark, dark:color white] $project
343+ @el [width 150]
344+ @text [size 13, color $--gray] $status
345+ @el [width 120]
346+ @badge [label $status, variant var(--secondary)]
347+ @el [width fill]
348+ @text [size 13, color $--gray] 2 hours ago
349+
350+ @row [spacing 16, padding 12 16, align-items center, border-top 1 $--border]
351+ @text [size 13, color $--gray] Showing 1-20 of 142 results
352+ @el [width fill]
353+ @row [spacing 4]
354+ @button [padding 6 10, rounded 4, border 1 $--border, background white, dark:background #1e293b, color $--gray, font-size 13, cursor pointer] Prev
355+ @button [padding 6 10, rounded 4, border 1 $--primary, background $--primary, color white, font-size 13, cursor pointer] 1
356+ @button [padding 6 10, rounded 4, border 1 $--border, background white, dark:background #1e293b, color $--gray, font-size 13, cursor pointer] 2
357+ @button [padding 6 10, rounded 4, border 1 $--border, background white, dark:background #1e293b, color $--gray, font-size 13, cursor pointer] 3
358+ @button [padding 6 10, rounded 4, border 1 $--border, background white, dark:background #1e293b, color $--gray, font-size 13, cursor pointer] Next
359+
360+ @footer [padding $--gap-lg 24, background white, dark:background #0f172a, border-top 1 $--border, dark:border-top 1 #1e293b]
361+ @row [spacing $--gap-lg, sm:flex-direction column, lg:flex-direction row]
362+ @column [spacing 8, width fill]
363+ @text [bold, size 14, color $--dark, dark:color white] htmlang Dashboard
364+ @text [size 12, color $--gray] Built with htmlang - a declarative HTML language
365+ @text [size 11, color $--gray] Copyright 2025 htmlang contributors
366+
367+ @column [spacing 4]
368+ @text [bold, size 12, color $--gray, text-transform uppercase, margin-bottom 4] Product
369+ @link [color $--gray, hover:color $--primary, size 13] /features Features
370+ @link [color $--gray, hover:color $--primary, size 13] /pricing Pricing
371+ @link [color $--gray, hover:color $--primary, size 13] /changelog Changelog
372+ @link [color $--gray, hover:color $--primary, size 13] /roadmap Roadmap
373+
374+ @column [spacing 4]
375+ @text [bold, size 12, color $--gray, text-transform uppercase, margin-bottom 4] Resources
376+ @link [color $--gray, hover:color $--primary, size 13] /docs Documentation
377+ @link [color $--gray, hover:color $--primary, size 13] /api API Reference
378+ @link [color $--gray, hover:color $--primary, size 13] /guides Guides
379+ @link [color $--gray, hover:color $--primary, size 13] /examples Examples
380+
381+ @column [spacing 4]
382+ @text [bold, size 12, color $--gray, text-transform uppercase, margin-bottom 4] Company
383+ @link [color $--gray, hover:color $--primary, size 13] /about About
384+ @link [color $--gray, hover:color $--primary, size 13] /blog Blog
385+ @link [color $--gray, hover:color $--primary, size 13] /careers Careers
386+ @link [color $--gray, hover:color $--primary, size 13] /contact Contact
387+
388+ @column [spacing 4]
389+ @text [bold, size 12, color $--gray, text-transform uppercase, margin-bottom 4] Legal
390+ @link [color $--gray, hover:color $--primary, size 13] /privacy Privacy Policy
391+ @link [color $--gray, hover:color $--primary, size 13] /terms Terms of Service
392+ @link [color $--gray, hover:color $--primary, size 13] /cookies Cookie Policy