testio-tailwind 3.27.2 → 3.27.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AI_DESIGN_SYSTEM_REFERENCE.md +20 -3454
- package/CLAUDE.md +41 -0
- package/Dockerfile +4 -8
- package/README.md +1 -5
- package/ai-reference/00-index.md +54 -0
- package/ai-reference/01-setup-colors-typography.md +164 -0
- package/ai-reference/02-layout-patterns.md +253 -0
- package/ai-reference/03-buttons.md +106 -0
- package/ai-reference/04-cards.md +104 -0
- package/ai-reference/05-forms.md +414 -0
- package/ai-reference/06-overlays.md +119 -0
- package/ai-reference/07-feedback.md +147 -0
- package/ai-reference/08-data-display.md +106 -0
- package/ai-reference/09-lists-splitview.md +233 -0
- package/ai-reference/10-chat-charts-status.md +311 -0
- package/ai-reference/11-agenticqa.md +538 -0
- package/ai-reference/12-dark-mode.md +111 -0
- package/ai-reference/13-best-practices.md +73 -0
- package/package.json +1 -1
- package/src/assets/scripts/modules/colors.js +28 -2
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
# AgenticQA Components
|
|
2
|
+
|
|
3
|
+
Comprehensive component library specifically designed for the AgenticQA platform. These components provide AI-driven quality assurance workflow interfaces.
|
|
4
|
+
|
|
5
|
+
**Live Examples:** `http://localhost:8080/agenticqa/`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## AgenticQA Page Header
|
|
10
|
+
|
|
11
|
+
**Purpose:** Display session/test details with metadata and action buttons.
|
|
12
|
+
|
|
13
|
+
**Key Classes:**
|
|
14
|
+
- `.page-header` - Main container
|
|
15
|
+
- `.page-maincard` - Primary information card (use with `.p-card-padding`)
|
|
16
|
+
- `.page-session-title` - Large session title text
|
|
17
|
+
- `.page-meta-info` - Definition list for metadata
|
|
18
|
+
- `.page-actions` - Container for action buttons
|
|
19
|
+
- `.with-chart` - Modifier for charts display
|
|
20
|
+
- `.page-chart` - Chart container
|
|
21
|
+
- `.btn-main` - Main action button (primary CTA)
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<div class="page-header">
|
|
25
|
+
<div class="card page-maincard p-card-padding">
|
|
26
|
+
<h1 class="text-card-header">Session details</h1>
|
|
27
|
+
<h2 class="page-session-title">Test Session title</h2>
|
|
28
|
+
<dl class="page-meta-info">
|
|
29
|
+
<dt class="label">Created on:</dt>
|
|
30
|
+
<dd>2025-07-23 10:45 AM</dd>
|
|
31
|
+
<dt class="label">Last test:</dt>
|
|
32
|
+
<dd>2025-07-23 10:45 AM</dd>
|
|
33
|
+
<dt class="label">ID:</dt>
|
|
34
|
+
<dd>321456987</dd>
|
|
35
|
+
<dt class="label">URL:</dt>
|
|
36
|
+
<dd><a class="label" href="">Test Suite name</a></dd>
|
|
37
|
+
<dt class="label">Status:</dt>
|
|
38
|
+
<dd class="text-white">Running</dd>
|
|
39
|
+
</dl>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="page-actions">
|
|
42
|
+
<a class="btn btn-primary btn-main" href="">
|
|
43
|
+
<span class="icon icon-test-running-xl"></span>
|
|
44
|
+
Start test
|
|
45
|
+
</a>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**With Chart:**
|
|
51
|
+
```html
|
|
52
|
+
<div class="page-header with-chart">
|
|
53
|
+
<!-- ... main card ... -->
|
|
54
|
+
<div class="page-chart card p-card-padding">
|
|
55
|
+
<div class="echarts-container" id="echarts-testinator"></div>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="page-actions">
|
|
58
|
+
<a class="btn btn-primary btn-main" href="">
|
|
59
|
+
<span class="icon icon-review-xl"></span>
|
|
60
|
+
Show report
|
|
61
|
+
</a>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## AgenticQA Chat Components
|
|
69
|
+
|
|
70
|
+
**Purpose:** Conversational exchanges between users and the AI system.
|
|
71
|
+
|
|
72
|
+
**Key Classes:**
|
|
73
|
+
- `.list-chat-messages` - Container
|
|
74
|
+
- `.chat-message-item` - Individual message wrapper
|
|
75
|
+
- `.your-message` - User messages (right-aligned)
|
|
76
|
+
- `.chat-avatar` - User profile image
|
|
77
|
+
- `.chat-header` - Message header with title and timestamp
|
|
78
|
+
- `.chat-message` - Message body content
|
|
79
|
+
- `.collapsable` - Modifier for expandable messages
|
|
80
|
+
- `.chat-action-row` - Container for action buttons after messages
|
|
81
|
+
|
|
82
|
+
### Standard Chat Messages (HAML)
|
|
83
|
+
```haml
|
|
84
|
+
.list-chat-messages.full-width
|
|
85
|
+
.chat-message-item
|
|
86
|
+
%img.chat-avatar{src:"/assets/images/profilepic_testinator.png"}
|
|
87
|
+
.chat-header
|
|
88
|
+
%span.chat-title.label Justification
|
|
89
|
+
%span.label 5 mins ago
|
|
90
|
+
.chat-message
|
|
91
|
+
Here's a message with analysis...
|
|
92
|
+
.chat-message-item.your-message
|
|
93
|
+
%img.chat-avatar{src:"/assets/images/placeholders/profile_supergirl.png"}
|
|
94
|
+
.chat-header
|
|
95
|
+
%span.chat-title.label Your message
|
|
96
|
+
%span.label 5 mins ago
|
|
97
|
+
.chat-message
|
|
98
|
+
Here's your feedback...
|
|
99
|
+
.chat-action-row
|
|
100
|
+
%a.btn.btn-primary.rounded-full re-run check
|
|
101
|
+
%a.btn.btn-secondary.rounded-full update check
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Collapsable Chat Messages (HAML)
|
|
105
|
+
```haml
|
|
106
|
+
.chat-message-item.collapsable
|
|
107
|
+
%img.chat-avatar{src:"/assets/images/profilepic_testinator.png"}
|
|
108
|
+
%details
|
|
109
|
+
%summary.chat-header
|
|
110
|
+
%span.chat-title.label Collapsable message
|
|
111
|
+
%span.label 5 mins ago
|
|
112
|
+
.chat-message
|
|
113
|
+
Here's a long message with extensive content...
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Chat History (HAML)
|
|
117
|
+
```haml
|
|
118
|
+
.card.p-card-padding
|
|
119
|
+
%details.chat-history-collapsable
|
|
120
|
+
%summary.chat-history-header
|
|
121
|
+
.chat-history-title Show complete history
|
|
122
|
+
.list-chat-messages.full-width
|
|
123
|
+
.chat-message-item
|
|
124
|
+
%img.chat-avatar{src:"/assets/images/profilepic_testinator.png"}
|
|
125
|
+
.chat-header
|
|
126
|
+
%span.chat-title.label Justification
|
|
127
|
+
%span.label 5 mins ago
|
|
128
|
+
.chat-message
|
|
129
|
+
Historical message content...
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Chat Form (HAML)
|
|
133
|
+
```haml
|
|
134
|
+
.chat-form-row
|
|
135
|
+
%form.chat-form
|
|
136
|
+
%h5.text-card-header.mb-xxs Re-Run this check
|
|
137
|
+
%p.font-light.mb-md Add additional instructions for re-running this check.
|
|
138
|
+
%textarea.form-control{placeholder:"Add your instructions or feedback"}
|
|
139
|
+
.form-actions
|
|
140
|
+
%a.btn.btn-primary.rounded-full
|
|
141
|
+
%span.icon.icon-sync.mr-icon-spacing
|
|
142
|
+
re-run check
|
|
143
|
+
%button.btn.btn-secondary.rounded-full Cancel
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## AgenticQA Status Stepper
|
|
149
|
+
|
|
150
|
+
**Key Classes:** `.status-stepper`, `.status-step`, `.completed`, `.active`, `.counter`, `.icon`
|
|
151
|
+
|
|
152
|
+
```haml
|
|
153
|
+
.status-stepper
|
|
154
|
+
.status-step.completed
|
|
155
|
+
.icon.icon-check-thick-centered
|
|
156
|
+
3 done
|
|
157
|
+
.status-step.active
|
|
158
|
+
.icon.icon-sync
|
|
159
|
+
Executing checks
|
|
160
|
+
.status-step
|
|
161
|
+
+ 3 to do
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**With Counters:**
|
|
165
|
+
```haml
|
|
166
|
+
.status-stepper
|
|
167
|
+
.status-step.completed
|
|
168
|
+
.counter 99
|
|
169
|
+
Completed
|
|
170
|
+
.status-step.active
|
|
171
|
+
.counter 99
|
|
172
|
+
Active
|
|
173
|
+
.status-step
|
|
174
|
+
.counter 99
|
|
175
|
+
Initial
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## AgenticQA Splitview Components
|
|
181
|
+
|
|
182
|
+
**Purpose:** Display grouped checks and individual test results in an expandable interface.
|
|
183
|
+
|
|
184
|
+
**Key Classes:**
|
|
185
|
+
- `.splitview-group` - Collapsable group container
|
|
186
|
+
- `.splitview-item` - Individual check item
|
|
187
|
+
- `.splitview-item-icon` - Status icon
|
|
188
|
+
- `.splitview-item-text` - Check description
|
|
189
|
+
- `.splitview-item-title` - URL or group title
|
|
190
|
+
- `.splitview-item-status` - Status label/icon
|
|
191
|
+
- `.splitview-group-status` - Group-level status stepper
|
|
192
|
+
- `.selected` - Modifier for selected item
|
|
193
|
+
- `.unread` - Modifier for unread items
|
|
194
|
+
- `.splitview-btn` - Show more button
|
|
195
|
+
- `.turbo-frame` - Turbo frame wrapper
|
|
196
|
+
|
|
197
|
+
**Status Icons:**
|
|
198
|
+
- `.icon-check-circle-filled.success` - Passed check
|
|
199
|
+
- `.icon-cross-circle-filled.danger` - Failed check
|
|
200
|
+
- `.icon-blocked.blocked` - Blocked/skipped check
|
|
201
|
+
- `.icon-sync.pending` - Pending/executing check
|
|
202
|
+
- `.icon-circle-empty` - Not started/placeholder
|
|
203
|
+
|
|
204
|
+
```haml
|
|
205
|
+
%details.splitview-group
|
|
206
|
+
%summary.splitview-item.unread
|
|
207
|
+
.splitview-item-icon.icon.icon-circle-empty.text-chart-empty
|
|
208
|
+
.splitview-item-text
|
|
209
|
+
.splitview-item-title https://www.example.com/product
|
|
210
|
+
.splitview-item-status
|
|
211
|
+
.text-with-icon
|
|
212
|
+
.icon.icon-sync
|
|
213
|
+
executing checks
|
|
214
|
+
.splitview-group-status.status-stepper
|
|
215
|
+
.status-step.completed
|
|
216
|
+
.icon.icon-check-thick-centered
|
|
217
|
+
3 done
|
|
218
|
+
.status-step.active
|
|
219
|
+
.icon.icon-sync
|
|
220
|
+
Executing checks
|
|
221
|
+
.status-step
|
|
222
|
+
+ 3 to do
|
|
223
|
+
.splitview-item.selected
|
|
224
|
+
.splitview-item-icon.icon.icon-cross-circle-filled.danger
|
|
225
|
+
.splitview-item-text Check title
|
|
226
|
+
.splitview-item.unread
|
|
227
|
+
.splitview-item-icon.icon.icon-check-circle-filled.success
|
|
228
|
+
.splitview-item-text Check title
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**With Turbo Frames:**
|
|
232
|
+
```haml
|
|
233
|
+
%details.splitview-group
|
|
234
|
+
%summary.splitview-item
|
|
235
|
+
.splitview-item-icon.icon.icon-circle-empty.text-chart-empty
|
|
236
|
+
.splitview-item-text
|
|
237
|
+
.splitview-item-title https://url.com
|
|
238
|
+
.splitview-group-status.status-stepper
|
|
239
|
+
.status-step.active
|
|
240
|
+
Pending start
|
|
241
|
+
.status-step
|
|
242
|
+
+ 6 to do
|
|
243
|
+
%turbo-frame.turbo-wrapper
|
|
244
|
+
%a.splitview-item
|
|
245
|
+
.splitview-item-icon.icon.icon-check-circle-filled.success
|
|
246
|
+
.splitview-item-text Navigation Menu Hover
|
|
247
|
+
%turbo-frame.turbo-wrapper
|
|
248
|
+
%a.splitview-item
|
|
249
|
+
.splitview-item-icon.icon.icon-cross-circle-filled.danger
|
|
250
|
+
.splitview-item-text No Results Message
|
|
251
|
+
%btn.btn.splitview-btn Show 99 dismissed checks
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## AgenticQA List Items
|
|
257
|
+
|
|
258
|
+
**Purpose:** Detailed check results with expandable content and screenshots.
|
|
259
|
+
|
|
260
|
+
**Key Classes:**
|
|
261
|
+
- `.list-listitems` - Container
|
|
262
|
+
- `.listitem` - Individual item wrapper
|
|
263
|
+
- `.listitem-header` - Header with title and expand button
|
|
264
|
+
- `.listitem-badge` - Number/index badge
|
|
265
|
+
- `.listitem-title` - Item title
|
|
266
|
+
- `.listitem-actions` - Header actions
|
|
267
|
+
- `.collapse-btn` - Expand/collapse button
|
|
268
|
+
- `.listitem-content` - Expanded content
|
|
269
|
+
- `.listitem-subheadline` - Section subheading
|
|
270
|
+
- `.listitem-card` - Text content wrapper
|
|
271
|
+
- `.listitem-attachments` - Attachments container
|
|
272
|
+
- `.attachment` - Individual attachment
|
|
273
|
+
- `.attachment-thumb` - Attachment preview image
|
|
274
|
+
|
|
275
|
+
```haml
|
|
276
|
+
.list-listitems
|
|
277
|
+
%details.listitem
|
|
278
|
+
%summary.listitem-header
|
|
279
|
+
.listitem-badge 1
|
|
280
|
+
.listitem-title List item collapsable
|
|
281
|
+
.listitem-actions
|
|
282
|
+
.btn.collapse-btn
|
|
283
|
+
.listitem-content
|
|
284
|
+
.listitem-subheadline Subheadline
|
|
285
|
+
.listitem-card
|
|
286
|
+
%p Here's a detailed message with findings and analysis...
|
|
287
|
+
.listitem-subheadline AI Screenshots
|
|
288
|
+
.listitem-attachments
|
|
289
|
+
.attachment
|
|
290
|
+
%a.attachment-thumb{href:"/assets/images/placeholders/bugdetails.png"}
|
|
291
|
+
%img{src:'/assets/images/placeholders/bugdetails.png', alt:'Bug details'}
|
|
292
|
+
.attachment
|
|
293
|
+
%a.attachment-thumb{href:"/assets/images/placeholders/screenshot.png"}
|
|
294
|
+
%img{src:'/assets/images/placeholders/screenshot.png', alt:'Screenshot'}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## AgenticQA Tables
|
|
300
|
+
|
|
301
|
+
### Grid Table (Read-Only)
|
|
302
|
+
|
|
303
|
+
**Key Classes:** `.table-grid`, `.table-rowgroups`, `.thead`, `.tbody`, `.tr`, `.th`, `.td`, `.checkbox-column`, `.action-column`, `.url-collapsable`
|
|
304
|
+
|
|
305
|
+
**Grid Configuration:**
|
|
306
|
+
```
|
|
307
|
+
grid-template-columns: repeat(2, auto) repeat(2, minmax(12rem, 1fr)) repeat(5, auto);
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
```haml
|
|
311
|
+
.table-grid.table-rowgroups{style:"grid-template-columns: repeat(2, auto) repeat(2, minmax(12rem, 1fr)) repeat(5, auto);"}
|
|
312
|
+
.thead
|
|
313
|
+
.tr
|
|
314
|
+
.th
|
|
315
|
+
.form-check.sm
|
|
316
|
+
%input#check1sm{type:'checkbox'}
|
|
317
|
+
.th status
|
|
318
|
+
.th title
|
|
319
|
+
.th urls
|
|
320
|
+
.th check suite
|
|
321
|
+
.th results
|
|
322
|
+
.th executions
|
|
323
|
+
.th executed
|
|
324
|
+
.th
|
|
325
|
+
.tbody
|
|
326
|
+
.tr
|
|
327
|
+
.btn.btn-sm.btn-block.btn-subtile.mb-xxs.col-span-9
|
|
328
|
+
.icon.icon-plus.mr-icon-spacing
|
|
329
|
+
Add new check
|
|
330
|
+
.tr
|
|
331
|
+
.td.checkbox-column
|
|
332
|
+
.form-check.sm
|
|
333
|
+
%input#check1sm{type:'checkbox'}
|
|
334
|
+
.td status
|
|
335
|
+
.td
|
|
336
|
+
%a.white.font-normal{href:"#"} Short Title
|
|
337
|
+
.td
|
|
338
|
+
%details.url-collapsable
|
|
339
|
+
%summary
|
|
340
|
+
%p https://url.com
|
|
341
|
+
.trigger
|
|
342
|
+
.text-closed Show 3 more
|
|
343
|
+
.text-open Show less
|
|
344
|
+
%p https://url.com/1
|
|
345
|
+
%p https://url.com/2
|
|
346
|
+
.td
|
|
347
|
+
%a.white.font-normal{href:"#"} Check suite title
|
|
348
|
+
.td
|
|
349
|
+
.flex.flex-row
|
|
350
|
+
.text-with-icon.mr-sm
|
|
351
|
+
.icon.icon-check-circle-filled.text-success
|
|
352
|
+
999
|
|
353
|
+
.text-with-icon.mr-sm
|
|
354
|
+
.icon.icon-cross-circle-filled.text-danger
|
|
355
|
+
999
|
|
356
|
+
.text-with-icon
|
|
357
|
+
.icon.icon-blocked.text-blocked
|
|
358
|
+
999
|
|
359
|
+
.td 6
|
|
360
|
+
.td 13h ago
|
|
361
|
+
.td.action-column
|
|
362
|
+
%a.btn.btn-square{href:'#'}
|
|
363
|
+
.icon.icon-pencil
|
|
364
|
+
%details.dropdown-actions.dropright
|
|
365
|
+
%summary
|
|
366
|
+
.btn.btn-square
|
|
367
|
+
.icon.icon-more
|
|
368
|
+
.popover-menu
|
|
369
|
+
%a.popover-action{href:'#'}
|
|
370
|
+
.icon.icon-pencil
|
|
371
|
+
Edit
|
|
372
|
+
%a.popover-action{href:'#'}
|
|
373
|
+
.icon.icon-copy
|
|
374
|
+
Duplicate
|
|
375
|
+
%a.popover-action{href:'#'}
|
|
376
|
+
.icon.icon-delete
|
|
377
|
+
Delete
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### Form Row Table (Editable)
|
|
381
|
+
|
|
382
|
+
**Purpose:** Inline editing of check parameters.
|
|
383
|
+
|
|
384
|
+
**Key Classes:** `.formrow`, `.form-group`, `.formrow-actions`
|
|
385
|
+
|
|
386
|
+
```haml
|
|
387
|
+
.table-grid.table-rowgroups{style:"grid-template-columns: repeat(3, auto) repeat(1, minmax(12rem, 1fr)) auto;"}
|
|
388
|
+
.thead
|
|
389
|
+
.tr
|
|
390
|
+
.th
|
|
391
|
+
.form-check.sm
|
|
392
|
+
%input{type:'checkbox'}
|
|
393
|
+
.th check title
|
|
394
|
+
.th page type
|
|
395
|
+
.th check description
|
|
396
|
+
.th
|
|
397
|
+
.tbody
|
|
398
|
+
%form.formrow.tr
|
|
399
|
+
.td.checkbox-column.row-span-4{class:"lg:row-span-1"}
|
|
400
|
+
.form-check.sm
|
|
401
|
+
%input{type:'checkbox', disabled:"true"}
|
|
402
|
+
.td.col-span-4{class:"lg:col-span-1"}
|
|
403
|
+
.label.mb-xxs{class:"lg:hidden"} Check title
|
|
404
|
+
%input.form-control{type:'text', placeholder:"An input field"}
|
|
405
|
+
.td.col-span-4{class:"lg:col-span-1"}
|
|
406
|
+
.label.mb-xxs{class:"lg:hidden"} Page type
|
|
407
|
+
%select.tom-select{placeholder: "Please select"}
|
|
408
|
+
%option{value: ""}
|
|
409
|
+
%option{value:"Option 1"} Option 1
|
|
410
|
+
.td.col-span-4{class:"lg:col-span-1"}
|
|
411
|
+
.label.mb-xxs{class:"lg:hidden"} Check description
|
|
412
|
+
%textarea.form-control{rows:'1', placeholder:"Textarea"}
|
|
413
|
+
.td.formrow-actions.col-span-4{class:"lg:col-span-1"}
|
|
414
|
+
%button.btn.btn-sm.btn-block.btn-primary Save changes
|
|
415
|
+
%button.btn.btn-sm.btn-block.btn-danger Discard
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### URL Collapsable
|
|
419
|
+
```haml
|
|
420
|
+
%details.url-collapsable
|
|
421
|
+
%summary
|
|
422
|
+
%p https://example.invalid/long/url/path
|
|
423
|
+
.trigger
|
|
424
|
+
.text-closed Show 6 more
|
|
425
|
+
.text-open Show less
|
|
426
|
+
%p https://example.invalid/path/1
|
|
427
|
+
%p https://example.invalid/path/2
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
## AgenticQA Header
|
|
433
|
+
|
|
434
|
+
**Key Classes:**
|
|
435
|
+
- `.header.agenticqa` - AgenticQA header variant
|
|
436
|
+
- `.header-wrapper` - Header content wrapper
|
|
437
|
+
- `.navlinks` - Link group container
|
|
438
|
+
- `.navlink` - Navigation link
|
|
439
|
+
- `.header-dropdown` - Dropdown menu
|
|
440
|
+
- `.mobile-links` - Mobile menu container
|
|
441
|
+
- `.mobile-menu` - Mobile menu content
|
|
442
|
+
- `.mobile-menu-btn` - Mobile menu toggle
|
|
443
|
+
- `.user-menu` - User profile menu
|
|
444
|
+
- `.btn-profile` - Profile button
|
|
445
|
+
- `.user-profile` - Profile image
|
|
446
|
+
- `.user-details` - User info
|
|
447
|
+
- `.profile-role` - User role text
|
|
448
|
+
- `.profile-name` - User name text
|
|
449
|
+
|
|
450
|
+
```haml
|
|
451
|
+
%nav.header.agenticqa
|
|
452
|
+
.header-wrapper
|
|
453
|
+
.navlinks.logo-wrapper
|
|
454
|
+
%a.navlink.header-logo{href:'#'}
|
|
455
|
+
.navlinks.left
|
|
456
|
+
%a.navlink.active{href:'#'} Navlink active
|
|
457
|
+
%a.navlink{href:'#'} Navlink
|
|
458
|
+
%details.header-dropdown
|
|
459
|
+
%summary.navlink Collapsable
|
|
460
|
+
.dropdown-menu
|
|
461
|
+
%a.navlink{href:'#'}
|
|
462
|
+
%span.icon.icon-user
|
|
463
|
+
Dropdown-item
|
|
464
|
+
%a.navlink{href:'#'}
|
|
465
|
+
%span.icon.icon-shutdown
|
|
466
|
+
Sign out
|
|
467
|
+
%details.mobile-links
|
|
468
|
+
%summary.mobile-menu-btn
|
|
469
|
+
.navlink
|
|
470
|
+
%span.sr-only Open main menu
|
|
471
|
+
%span.icon.icon-menu
|
|
472
|
+
.mobile-menu.sidebar
|
|
473
|
+
%a.navlink.active{href:'#'}
|
|
474
|
+
%span.navlink-badge.icon.icon-home
|
|
475
|
+
Navlink active
|
|
476
|
+
.navlinks.right
|
|
477
|
+
%details.header-dropdown.user-menu
|
|
478
|
+
%summary.btn-profile.navlink
|
|
479
|
+
%img.user-profile{src:'/assets/images/placeholders/profile_supergirl.png'}
|
|
480
|
+
.user-details
|
|
481
|
+
.profile-role Admin
|
|
482
|
+
.profile-name Anja Berger
|
|
483
|
+
.dropdown-menu.profile-dropdown
|
|
484
|
+
%a.dropdown-link{href:'#'}
|
|
485
|
+
%span.icon.icon-user
|
|
486
|
+
Your Profile
|
|
487
|
+
%a.dropdown-link{href:'#'}
|
|
488
|
+
%span.icon.icon-shutdown
|
|
489
|
+
Sign out
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## AgenticQA Layout Structure
|
|
495
|
+
|
|
496
|
+
All AgenticQA pages use a dark sidebar layout:
|
|
497
|
+
|
|
498
|
+
```html
|
|
499
|
+
<body class="app-body">
|
|
500
|
+
<header class="header agenticqa">
|
|
501
|
+
<!-- AgenticQA navigation -->
|
|
502
|
+
</header>
|
|
503
|
+
<main class="main-content">
|
|
504
|
+
<div class="app-layout">
|
|
505
|
+
<aside class="sidebar dark">
|
|
506
|
+
<!-- Dark sidebar navigation -->
|
|
507
|
+
</aside>
|
|
508
|
+
<div class="content-area">
|
|
509
|
+
<!-- Main content area -->
|
|
510
|
+
</div>
|
|
511
|
+
</div>
|
|
512
|
+
</main>
|
|
513
|
+
</body>
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
**Layout Classes:**
|
|
517
|
+
- `.page-with-sidebar-dark` - Dark sidebar layout (AgenticQA standard)
|
|
518
|
+
- `.page-with-sidebar-nocode` - Sidebar without code blocks
|
|
519
|
+
- `.page-with-sidebar` - Standard sidebar layout
|
|
520
|
+
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
## AgenticQA Asset References
|
|
524
|
+
|
|
525
|
+
- **Logo:** `/src/assets/images/logo_agenticqa/` (PNG + SVG, Purple/Teal variants)
|
|
526
|
+
- **Email templates:** `/src/assets/images/assets_agenticqa/`
|
|
527
|
+
- **Email styling:** `src/pages/agenticqa/email.njk`
|
|
528
|
+
|
|
529
|
+
---
|
|
530
|
+
|
|
531
|
+
## AgenticQA Best Practices
|
|
532
|
+
|
|
533
|
+
1. **Chat** — Use collapsable messages for long content; always include timestamps and speaker identification
|
|
534
|
+
2. **Status Tracking** — Use status stepper for overall progress; splitview for URL/page grouping
|
|
535
|
+
3. **Tables** — Grid tables for read-only; form row tables for inline editing; status column first
|
|
536
|
+
4. **List Items** — Collapsable structure with attachments/screenshots; consistent styling for findings
|
|
537
|
+
5. **Navigation** — Include user profile top-right; support mobile menu; highlight active item
|
|
538
|
+
6. **Dark Mode** — All AgenticQA components include dark mode; dark sidebar is the primary pattern
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Dark Mode
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## Enabling Dark Mode
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<body class="app-body dark">
|
|
9
|
+
<!-- All dark mode styles applied automatically -->
|
|
10
|
+
</body>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Dark Mode Layout Structure
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<body class="app-body dark">
|
|
19
|
+
<header class="header"></header>
|
|
20
|
+
<main class="main-content centered">
|
|
21
|
+
<div class="centered-content">
|
|
22
|
+
<!-- Centered content with dark mode styling -->
|
|
23
|
+
</div>
|
|
24
|
+
</main>
|
|
25
|
+
<footer class="actionbar centered"></footer>
|
|
26
|
+
</body>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Dark Mode Color Palette
|
|
32
|
+
|
|
33
|
+
```css
|
|
34
|
+
.dark {
|
|
35
|
+
/* Core Colors */
|
|
36
|
+
--color-appbody: #181818;
|
|
37
|
+
--color-appbody-textcolor: #f2f2f2;
|
|
38
|
+
--color-header: #1d1d1d;
|
|
39
|
+
--color-card: #1D1D1D;
|
|
40
|
+
--color-listitem: #262626;
|
|
41
|
+
|
|
42
|
+
/* Interactive Colors */
|
|
43
|
+
--color-primary: #78eac1;
|
|
44
|
+
--color-link: #8988eb;
|
|
45
|
+
--color-link-hover: #7954ff;
|
|
46
|
+
|
|
47
|
+
/* Status Colors */
|
|
48
|
+
--color-success: #33BA9E;
|
|
49
|
+
--color-danger: #FF3131;
|
|
50
|
+
--color-bordercolor: #2E2E2E;
|
|
51
|
+
|
|
52
|
+
/* Spacing & Style Adjustments */
|
|
53
|
+
--radius: 12px; /* Increased from 5px */
|
|
54
|
+
--spacing-grid-gutter: 40px; /* Increased from 20px */
|
|
55
|
+
--card-padding: 30px;
|
|
56
|
+
--fontsize-card-header: 1.125rem;
|
|
57
|
+
--font-size-label: 0.75rem;
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Using Dark Mode
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<!-- Apply dark class to container -->
|
|
67
|
+
<div class="dark">
|
|
68
|
+
<div class="bg-appbody text-appbody-textcolor">
|
|
69
|
+
<div class="card p-card-padding">
|
|
70
|
+
<p>Content with dark mode styling</p>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<!-- Conditional dark mode classes -->
|
|
76
|
+
<div class="bg-card dark:bg-listitem">
|
|
77
|
+
<!-- Light mode: #e6e6e6, Dark mode: #262626 -->
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<!-- Buttons work automatically in dark mode -->
|
|
81
|
+
<div class="dark">
|
|
82
|
+
<button class="btn btn-primary">Automatically styled for dark mode</button>
|
|
83
|
+
</div>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Dark Mode Differences from Light Mode
|
|
89
|
+
|
|
90
|
+
| Property | Light | Dark |
|
|
91
|
+
|---|---|---|
|
|
92
|
+
| Border radius | 5px | 12px |
|
|
93
|
+
| Grid gutters | 20px | 40px |
|
|
94
|
+
| Table cell padding | py-xs | py-md |
|
|
95
|
+
| Chat layout | 3 columns | 2 columns (actions hidden) |
|
|
96
|
+
| Link color | Petrol | Purple (#8988eb) |
|
|
97
|
+
| Link hover | — | Dark Purple (#7954ff) |
|
|
98
|
+
| Text color | System | Light gray (#f2f2f2) |
|
|
99
|
+
| Label font size | 0.8125rem | 0.75rem |
|
|
100
|
+
| Card headers | default | 1.125rem |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Dark Mode Best Practices
|
|
105
|
+
|
|
106
|
+
1. Always preview components with `.dark` class applied
|
|
107
|
+
2. Test contrast ratios for accessibility compliance
|
|
108
|
+
3. Use inverted button variants on dark backgrounds
|
|
109
|
+
4. Use Tailwind's `dark:` prefix for conditional styles — e.g., `bg-white dark:bg-gray-800`
|
|
110
|
+
5. Combine `dark:` prefix with CSS variables for consistency
|
|
111
|
+
6. Centered dark mode layout is optimal for documentation/form interfaces
|