testio-tailwind 3.27.2 → 3.27.5
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/images/assets_agenticqa/agenticqa_email_header.png +0 -0
- package/src/assets/images/logo_agenticqa/agenticqa_logo_purpleteal_black.png +0 -0
- package/src/assets/images/logo_agenticqa/agenticqa_logo_purpleteal_black.svg +76 -17
- package/src/assets/images/logo_agenticqa/agenticqa_logo_purpleteal_black_1000px.png +0 -0
- package/src/assets/images/logo_agenticqa/agenticqa_logo_purpleteal_black_3000px.png +0 -0
- package/src/assets/images/logo_agenticqa/agenticqa_logo_purpleteal_white.png +0 -0
- package/src/assets/images/logo_agenticqa/agenticqa_logo_purpleteal_white.svg +76 -17
- package/src/assets/images/logo_agenticqa/agenticqa_logo_purpleteal_white_1000px.png +0 -0
- package/src/assets/images/logo_agenticqa/agenticqa_logo_purpleteal_white_3000px.png +0 -0
- package/src/assets/scripts/modules/colors.js +28 -2
|
@@ -1,3460 +1,26 @@
|
|
|
1
|
-
# Test IO Tailwind Design System
|
|
1
|
+
# Test IO Tailwind Design System — AI Reference
|
|
2
2
|
|
|
3
|
-
**Version:** 3.23.0
|
|
4
|
-
**Framework:** Tailwind CSS 4.x
|
|
5
|
-
**Package:** `testio-tailwind`
|
|
6
|
-
**Last Updated:** February 2026
|
|
7
|
-
**Node Version:** v23.11.0
|
|
3
|
+
**Version:** 3.23.0 | **Framework:** Tailwind CSS 4.x | **Package:** `testio-tailwind`
|
|
8
4
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
## Recent Updates (February 2026)
|
|
12
|
-
|
|
13
|
-
- 📚 **AgenticQA Documentation Expansion**: Comprehensive documentation for all AgenticQA components with use cases and patterns
|
|
14
|
-
- ✨ **Enhanced Chat Components**: Detailed documentation for chat messages, collapsable messages, history, and forms
|
|
15
|
-
- 🎯 **Splitview Components**: Complete documentation for grouped check display with turbo-frame support
|
|
16
|
-
- 📊 **Grid & Form Row Tables**: Comprehensive table documentation with grid layout and inline editing patterns
|
|
17
|
-
- 📋 **List Items with Attachments**: Enhanced documentation for collapsable list items with screenshot support
|
|
18
|
-
- 🎨 **Navigation Headers**: Complete AgenticQA header documentation with profile menu and mobile support
|
|
19
|
-
- ✨ **Status Tracking**: Detailed status stepper and progress tracking component documentation
|
|
20
|
-
- 📱 **Responsive Patterns**: Mobile-first responsive design patterns for all AgenticQA components
|
|
21
|
-
- 🌙 **Dark Mode Integration**: Full dark mode support across all AgenticQA components
|
|
22
|
-
|
|
23
|
-
## Version 3.22.0 - January 2026
|
|
24
|
-
|
|
25
|
-
- ✨ **Centered Layout**: New centered application layout documentation and examples
|
|
26
|
-
- ✨ **Dark Mode Examples**: Comprehensive dark mode layout examples and documentation
|
|
27
|
-
- ✨ **Centered Actionbar**: Added centered variant for action bars with proper styling
|
|
28
|
-
- ✨ **Centered Header**: New header variant optimized for centered layouts
|
|
29
|
-
- 🎨 **Layout Examples**: Added `/pages/layouts/` section with layout examples (centered, darkmode, full-width)
|
|
30
|
-
- 📐 **Centered Content**: Proper max-width capped centered content containers
|
|
31
|
-
- 🌙 **Dark Mode Support**: Complete dark mode documentation with implementation examples
|
|
32
|
-
- ✨ **HAML Preview**: New HAML preview functionality for live component viewing
|
|
33
|
-
- ✨ **HAML Converter**: Added HAML conversion utility for template processing
|
|
34
|
-
- ✨ **AI Documentation**: Comprehensive AI documentation across all component pages
|
|
35
|
-
- ✨ **Date & Time Picker**: Flatpickr integration for date and time selection
|
|
36
|
-
- 📊 **Tables Reorganization**: Tables moved to dedicated `/pages/tables/` section
|
|
37
|
-
- 🎨 **Table Striped Style**: Fixed table alternating row styling with proper dark mode support
|
|
38
|
-
- 📝 **Component Descriptions**: All component pages now include descriptions and use cases
|
|
39
|
-
- 🎯 **Button Documentation**: Updated button pages with detailed descriptions
|
|
40
|
-
- 🔄 **Drawer Fixes**: Improved drawer footer padding and responsive behavior
|
|
41
|
-
- 🛡️ **Security Updates**: Addressed npm vulnerabilities
|
|
42
|
-
- 🔧 **Splitview Improvements**: Fixed splitview details close button and responsive behavior
|
|
43
|
-
- 🏷️ **Image Tags**: Added support for image tagging in components
|
|
44
|
-
- 🔧 **HAML Conversion**: Tables documentation files converted to HAML format
|
|
45
|
-
- ✨ **Form Group Enhancements**: Added vertical form groups, form addons with text/icons, and form card component
|
|
46
|
-
- 📋 **Form Hints**: Expanded form hints with collapsable help text and learn more triggers
|
|
47
|
-
- 🌐 **Multi-language Support**: Added optional-non-en attribute for internationalized optional labels
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Table of Contents
|
|
52
|
-
1. [Installation & Setup](#installation--setup)
|
|
53
|
-
2. [Component Library Structure](#component-library-structure)
|
|
54
|
-
3. [Color System](#color-system)
|
|
55
|
-
4. [Typography](#typography)
|
|
56
|
-
5. [Spacing & Layout](#spacing--layout)
|
|
57
|
-
6. [Layout Patterns](#layout-patterns)
|
|
58
|
-
7. [Button Components](#button-components)
|
|
59
|
-
8. [Card Components](#card-components)
|
|
60
|
-
9. [Form Components](#form-components)
|
|
61
|
-
10. [Overlay Components (Modal & Drawer)](#overlay-components-modal--drawer)
|
|
62
|
-
11. [Page Layout Components](#page-layout-components)
|
|
63
|
-
12. [Navigation Components](#navigation-components)
|
|
64
|
-
13. [Feedback Components](#feedback-components)
|
|
65
|
-
14. [Data Display Components](#data-display-components)
|
|
66
|
-
15. [List Components](#list-components)
|
|
67
|
-
16. [Splitview Components](#splitview-components)
|
|
68
|
-
17. [Chat Components](#chat-components)
|
|
69
|
-
18. [Chart Components](#chart-components)
|
|
70
|
-
19. [Status & Progress Components](#status--progress-components)
|
|
71
|
-
20. [Utility Components](#utility-components)
|
|
72
|
-
21. [AgenticQA Components](#agenticqa-components)
|
|
73
|
-
22. [Dark Mode](#dark-mode)
|
|
74
|
-
23. [Best Practices for AI Agents](#best-practices-for-ai-agents)
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## Installation & Setup
|
|
79
|
-
|
|
80
|
-
### NPM Installation
|
|
81
|
-
```bash
|
|
82
|
-
npm install testio-tailwind
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### CSS Import
|
|
86
|
-
```css
|
|
87
|
-
@import 'testio-tailwind/dist/static/app.compiled.css';
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### JavaScript Import
|
|
91
|
-
```javascript
|
|
92
|
-
import 'testio-tailwind/dist/static/app.bundled.js';
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## Component Library Structure
|
|
98
|
-
|
|
99
|
-
The design system includes a comprehensive component library organized by category. All components are documented with live examples in the `src/pages/` directory.
|
|
100
|
-
|
|
101
|
-
### Directory Organization
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
src/pages/
|
|
105
|
-
├── agenticqa/ # AgenticQA-specific components
|
|
106
|
-
│ ├── assets.haml
|
|
107
|
-
│ ├── chat_*.haml # Chat variants
|
|
108
|
-
│ ├── header.haml
|
|
109
|
-
│ ├── listitem.haml
|
|
110
|
-
│ ├── pageheader.haml
|
|
111
|
-
│ ├── splitview_items.haml
|
|
112
|
-
│ ├── status_stepper.haml
|
|
113
|
-
│ └── tables-*.haml
|
|
114
|
-
├── buttons/ # Button components and variants
|
|
115
|
-
│ ├── buttons.haml # Standard buttons
|
|
116
|
-
│ ├── buttons-sm.haml # Small buttons
|
|
117
|
-
│ ├── buttons-lg.haml # Large buttons
|
|
118
|
-
│ ├── buttons-xl.haml # Extra large buttons
|
|
119
|
-
│ ├── buttons-round.haml
|
|
120
|
-
│ ├── square-buttons.haml
|
|
121
|
-
│ ├── block.haml
|
|
122
|
-
│ ├── button_group.haml
|
|
123
|
-
│ ├── buttons_input.haml
|
|
124
|
-
│ └── dropdown-menu.haml
|
|
125
|
-
├── charts/ # ECharts data visualization
|
|
126
|
-
│ ├── area.haml
|
|
127
|
-
│ ├── bar_horizontal.haml
|
|
128
|
-
│ ├── bar_vertical.haml
|
|
129
|
-
│ ├── colors.haml
|
|
130
|
-
│ ├── donut.haml
|
|
131
|
-
│ ├── gauge.haml
|
|
132
|
-
│ ├── legend.haml
|
|
133
|
-
│ └── line.haml
|
|
134
|
-
├── components/ # UI components
|
|
135
|
-
│ ├── alerts.haml
|
|
136
|
-
│ ├── cards.haml
|
|
137
|
-
│ ├── cards_*.haml # Card variants
|
|
138
|
-
│ ├── chat_window.haml
|
|
139
|
-
│ ├── drawer.haml
|
|
140
|
-
│ ├── drawer_filter.haml
|
|
141
|
-
│ ├── emptystate.haml
|
|
142
|
-
│ ├── info_popover.haml
|
|
143
|
-
│ ├── listitems.haml
|
|
144
|
-
│ ├── listitems_*.haml # List item variants
|
|
145
|
-
│ ├── loading_spinner.haml
|
|
146
|
-
│ ├── modal_details.haml
|
|
147
|
-
│ ├── notifications.haml
|
|
148
|
-
│ ├── pagination.haml
|
|
149
|
-
│ ├── progress.haml
|
|
150
|
-
│ ├── splitview_*.haml
|
|
151
|
-
│ └── tags.haml
|
|
152
|
-
├── forms/ # Form components
|
|
153
|
-
│ ├── forms.haml # Basic inputs
|
|
154
|
-
│ ├── checkboxes.haml
|
|
155
|
-
│ ├── radiobuttons.haml
|
|
156
|
-
│ ├── toggle-switch.haml
|
|
157
|
-
│ ├── toggle-buttons.haml
|
|
158
|
-
│ ├── select2.haml
|
|
159
|
-
│ ├── tomselect.haml
|
|
160
|
-
│ ├── flatpickr.haml # Date/time picker
|
|
161
|
-
│ ├── date-time.haml
|
|
162
|
-
│ ├── textarea.haml
|
|
163
|
-
│ ├── rating_scale.haml
|
|
164
|
-
│ ├── selectable_token.haml
|
|
165
|
-
│ └── form_grid.haml
|
|
166
|
-
├── layout/ # Layout utilities
|
|
167
|
-
│ ├── app_layout.haml
|
|
168
|
-
│ ├── spacing.haml
|
|
169
|
-
│ ├── paddings.haml
|
|
170
|
-
│ ├── margins.haml
|
|
171
|
-
│ ├── max_width.haml
|
|
172
|
-
│ ├── centered_layout.haml # Centered layout documentation
|
|
173
|
-
│ └── darkmode.haml # Dark mode layout documentation
|
|
174
|
-
├── layouts/ # Full layout examples
|
|
175
|
-
│ ├── layout-full.haml
|
|
176
|
-
│ ├── layout-centered.haml # Centered layout example
|
|
177
|
-
│ └── layout-darkmode.haml # Dark mode layout example
|
|
178
|
-
├── navigation/ # Navigation components
|
|
179
|
-
│ ├── header.haml
|
|
180
|
-
│ ├── header_*.haml # Portal-specific headers
|
|
181
|
-
│ ├── header-centered.haml # Centered layout header
|
|
182
|
-
│ ├── sidebar.haml
|
|
183
|
-
│ ├── sidebar_*.haml # Portal-specific sidebars
|
|
184
|
-
│ ├── tabnavigation.haml
|
|
185
|
-
│ ├── tabnavigation_*.haml
|
|
186
|
-
│ └── radio_tabs.haml
|
|
187
|
-
├── tables/ # Table components
|
|
188
|
-
│ ├── tables.haml
|
|
189
|
-
│ ├── tables_alternating.haml
|
|
190
|
-
│ ├── tables_borders.haml
|
|
191
|
-
│ ├── tables_cells.haml
|
|
192
|
-
│ ├── tables_footer.haml
|
|
193
|
-
│ ├── tables_header.haml
|
|
194
|
-
│ ├── tables_linked.haml
|
|
195
|
-
│ ├── tables-cellstyle.haml
|
|
196
|
-
│ └── tables-grid.haml
|
|
197
|
-
└── typography/ # Typography examples
|
|
198
|
-
├── headings.haml
|
|
199
|
-
├── section_header.haml
|
|
200
|
-
└── text_with_icon.haml
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### How to Use Components
|
|
204
|
-
|
|
205
|
-
#### 1. **View Live Examples**
|
|
206
|
-
All components have live documentation available at the local development server:
|
|
207
|
-
```bash
|
|
208
|
-
npm start
|
|
209
|
-
# Visit: http://localhost:8080/buttons/
|
|
210
|
-
# Visit: http://localhost:8080/components/
|
|
211
|
-
# Visit: http://localhost:8080/forms/
|
|
212
|
-
# Visit: http://localhost:8080/tables/
|
|
213
|
-
# Visit: http://localhost:8080/charts/
|
|
214
|
-
# Visit: http://localhost:8080/layout/
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
#### 2. **Layout Examples**
|
|
218
|
-
Complete layout examples with live previews:
|
|
219
|
-
```
|
|
220
|
-
# Full-width layout example
|
|
221
|
-
http://localhost:8080/pages/layouts/layout-full
|
|
222
|
-
|
|
223
|
-
# Centered layout example (recommended for documentation and forms)
|
|
224
|
-
http://localhost:8080/pages/layouts/layout-centered
|
|
225
|
-
|
|
226
|
-
# Dark mode layout example
|
|
227
|
-
http://localhost:8080/pages/layouts/layout-darkmode
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
**Layout Documentation:**
|
|
231
|
-
- [centered_layout.haml](src/pages/layout/centered_layout.haml) - Centered layout structure and documentation
|
|
232
|
-
- [darkmode.haml](src/pages/layout/darkmode.haml) - Dark mode implementation guide
|
|
233
|
-
|
|
234
|
-
#### 3. **HAML to HTML Reference**
|
|
235
|
-
|
|
236
|
-
```haml
|
|
237
|
-
<!-- HAML -->
|
|
238
|
-
%button.btn.btn-primary{type:'submit', disabled:''}
|
|
239
|
-
%i.icon.icon-save.mr-xs
|
|
240
|
-
Save Changes
|
|
241
|
-
|
|
242
|
-
<!-- Renders as -->
|
|
243
|
-
<button class="btn btn-primary" type="submit" disabled="">
|
|
244
|
-
<i class="icon icon-save mr-xs"></i>
|
|
245
|
-
Save Changes
|
|
246
|
-
</button>
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
**HAML Attribute Format:**
|
|
250
|
-
- Use curly braces for attributes: `{key:'value'}`
|
|
251
|
-
- Boolean attributes: `{checked:''}` or `{disabled:''}`
|
|
252
|
-
- Multiple attributes: `{type:'checkbox', id:'check1'}`
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## Color System
|
|
257
|
-
|
|
258
|
-
### Semantic Colors
|
|
259
|
-
Use these color utilities for consistent semantic meaning:
|
|
260
|
-
|
|
261
|
-
```html
|
|
262
|
-
<!-- Primary Actions -->
|
|
263
|
-
<div class="bg-primary text-white">Primary action</div>
|
|
264
|
-
<div class="bg-link text-white">Link color</div>
|
|
265
|
-
|
|
266
|
-
<!-- Status Colors -->
|
|
267
|
-
<div class="bg-success text-white">Success state</div>
|
|
268
|
-
<div class="bg-danger text-white">Error/danger state</div>
|
|
269
|
-
<div class="bg-info text-white">Information</div>
|
|
270
|
-
<div class="bg-blocked text-white">Warning/blocked</div>
|
|
271
|
-
<div class="bg-pending text-gray-darker">Pending state</div>
|
|
272
|
-
|
|
273
|
-
<!-- Functional Colors -->
|
|
274
|
-
<div class="bg-appbody text-appbody-textcolor">App background</div>
|
|
275
|
-
<div class="bg-card">Card background</div>
|
|
276
|
-
<div class="bg-header text-white">Header background</div>
|
|
277
|
-
<div class="bg-listitem">List item background</div>
|
|
278
|
-
<div class="bg-actionbar">Action bar (dark)</div>
|
|
279
|
-
<div class="border-bordercolor">Standard border</div>
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
### Color Palette
|
|
283
|
-
|
|
284
|
-
**Grays:** `gray-100` through `gray-900`, plus `gray-lightest`, `gray-lighter`, `gray-light`, `gray-dark`, `gray-darker`, `gray-darkest`
|
|
285
|
-
|
|
286
|
-
**Brand Colors:**
|
|
287
|
-
- **Primary (Petrol):** `petrol` (#236a84 light, #78eac1 dark)
|
|
288
|
-
- **Success:** `green` (#8cbd24 light, #33BA9E dark)
|
|
289
|
-
- **Danger/Critical:** `red` (#ec0404 light, #FF3131 dark)
|
|
290
|
-
- **Warning:** `orange` (#f48d21)
|
|
291
|
-
- **Info:** `blue` (#326dd1)
|
|
292
|
-
- **Accent Colors:** `teal`, `purple`, `pink`, `yellow`
|
|
293
|
-
|
|
294
|
-
**Priority Levels:**
|
|
295
|
-
- `critical` - Red (#FF3131)
|
|
296
|
-
- `high` - Yellow (#d8ce0d)
|
|
297
|
-
- `low` - Gray (#9fa2a8)
|
|
298
|
-
|
|
299
|
-
**Issue Types:**
|
|
300
|
-
- `visual` - Orange (#f48d21)
|
|
301
|
-
- `content` - Blue (#326dd1)
|
|
302
|
-
- `usability` - Petrol dark (#263340)
|
|
303
|
-
|
|
304
|
-
---
|
|
305
|
-
|
|
306
|
-
## Typography
|
|
307
|
-
|
|
308
|
-
### Font Families
|
|
309
|
-
- **Body/Sans:** `font-sans` - Source Sans 3
|
|
310
|
-
- **Monospace:** `font-mono` - Source Code Pro
|
|
311
|
-
|
|
312
|
-
### Headings
|
|
313
|
-
```html
|
|
314
|
-
<h1 class="text-heading-1 font-light">Main Title (2.25rem)</h1>
|
|
315
|
-
<h2 class="text-heading-2 font-light">Section Title (1.875rem)</h2>
|
|
316
|
-
<h3 class="text-heading-3 font-light">Subsection (1.563rem)</h3>
|
|
317
|
-
<h4 class="text-heading-4 font-light">Sub-heading (1.375rem)</h4>
|
|
318
|
-
<h5 class="text-heading-5 font-light">Minor heading (1.125rem)</h5>
|
|
319
|
-
<h6 class="text-heading-6 font-light">Smallest heading (1rem)</h6>
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### Display Text
|
|
323
|
-
```html
|
|
324
|
-
<h1 class="text-display-1 font-extralight">Hero Text (3.25rem)</h1>
|
|
325
|
-
<h2 class="text-display-2 font-extralight">Large Display (3rem)</h2>
|
|
326
|
-
<h3 class="text-display-3 font-extralight">Medium Display (2.75rem)</h3>
|
|
327
|
-
<h4 class="text-display-4 font-extralight">Small Display (2.5rem)</h4>
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### Body Text Sizes
|
|
331
|
-
```html
|
|
332
|
-
<p class="text-base">Base text (0.875rem - default)</p>
|
|
333
|
-
<p class="text-lg">Large text (1.25rem)</p>
|
|
334
|
-
<p class="text-sm">Small text (0.813rem)</p>
|
|
335
|
-
<p class="text-xs">Extra small (0.6875rem)</p>
|
|
336
|
-
<p class="text-xxs">Tiny text (0.625rem)</p>
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
### Labels & Special Text
|
|
340
|
-
```html
|
|
341
|
-
<label class="text-label">Form Label (0.8125rem, 0.75rem in dark)</label>
|
|
342
|
-
<label class="text-label-sm">Small Label (0.75rem)</label>
|
|
343
|
-
<h3 class="text-card-header">Card Header (1.125rem in dark)</h3>
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
---
|
|
347
|
-
|
|
348
|
-
## Spacing & Layout
|
|
349
|
-
|
|
350
|
-
### Spacing Scale
|
|
351
|
-
- `xxs` - 0.3125rem (5px)
|
|
352
|
-
- `xs` - 0.625rem (10px)
|
|
353
|
-
- `sm` - 0.9375rem (15px)
|
|
354
|
-
- `md` - 1.25rem (20px)
|
|
355
|
-
- `spacing` - 1.875rem (30px) - **base unit**
|
|
356
|
-
- `lg` - 3.125rem (50px)
|
|
357
|
-
- `xl` - 3.75rem (60px)
|
|
358
|
-
- `xxl` - 5.625rem (90px)
|
|
359
|
-
|
|
360
|
-
### Common Spacing Patterns
|
|
361
|
-
```html
|
|
362
|
-
<!-- Padding -->
|
|
363
|
-
<div class="p-md">Standard padding (20px)</div>
|
|
364
|
-
<div class="p-card-padding">Card padding (30px)</div>
|
|
365
|
-
<div class="px-md py-sm">Mixed padding</div>
|
|
366
|
-
|
|
367
|
-
<!-- Margins -->
|
|
368
|
-
<div class="mb-spacing">Standard margin bottom (30px)</div>
|
|
369
|
-
<div class="mt-xxs">Tiny margin top (5px)</div>
|
|
370
|
-
<div class="mb-heading">Bottom margin for headings</div>
|
|
371
|
-
|
|
372
|
-
<!-- Gaps (for flexbox/grid) -->
|
|
373
|
-
<div class="flex gap-xs">Flex with 10px gap</div>
|
|
374
|
-
<div class="grid gap-grid-gutter">Grid with gutter (20px light, 40px dark)</div>
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
### Breakpoints
|
|
378
|
-
```css
|
|
379
|
-
xs: 30rem (480px)
|
|
380
|
-
sm: 640px (default Tailwind)
|
|
381
|
-
md: 768px (default Tailwind)
|
|
382
|
-
lg: 70rem (1120px)
|
|
383
|
-
xl: 90rem (1440px)
|
|
384
|
-
2xl: 100rem (1600px)
|
|
385
|
-
3xl: 1930px
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
---
|
|
389
|
-
|
|
390
|
-
## Layout Patterns
|
|
391
|
-
|
|
392
|
-
### Standard Application Layout Structure
|
|
393
|
-
The application uses a consistent layout structure across all pages:
|
|
394
|
-
|
|
395
|
-
```html
|
|
396
|
-
<body class="app-body">
|
|
397
|
-
<header class="header">
|
|
398
|
-
<!-- Navigation and branding -->
|
|
399
|
-
</header>
|
|
400
|
-
<main class="main-content">
|
|
401
|
-
<!-- Page content -->
|
|
402
|
-
</main>
|
|
403
|
-
<footer class="actionbar">
|
|
404
|
-
<!-- Actions and controls -->
|
|
405
|
-
</footer>
|
|
406
|
-
</body>
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
### Full-Width Layout
|
|
410
|
-
Standard layout with content spanning the full width of the viewport:
|
|
411
|
-
|
|
412
|
-
```html
|
|
413
|
-
<body class="app-body">
|
|
414
|
-
<header class="header">
|
|
415
|
-
<!-- Full-width header -->
|
|
416
|
-
</header>
|
|
417
|
-
<main class="main-content">
|
|
418
|
-
<div class="page-content">
|
|
419
|
-
<!-- Content fills available space -->
|
|
420
|
-
</div>
|
|
421
|
-
</main>
|
|
422
|
-
<footer class="actionbar">
|
|
423
|
-
<!-- Full-width footer -->
|
|
424
|
-
</footer>
|
|
425
|
-
</body>
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
**Use Case:** Dashboard layouts, full-width data displays, and responsive mobile views.
|
|
429
|
-
|
|
430
|
-
### Centered Layout
|
|
431
|
-
Centered layout with max-width constraints for optimal readability on widescreen screens:
|
|
432
|
-
|
|
433
|
-
```html
|
|
434
|
-
<body class="app-body">
|
|
435
|
-
<header class="header">
|
|
436
|
-
<!-- Centered header -->
|
|
437
|
-
</header>
|
|
438
|
-
<main class="main-content centered">
|
|
439
|
-
<div class="centered-content">
|
|
440
|
-
<!-- Content centered with max-width -->
|
|
441
|
-
</div>
|
|
442
|
-
</main>
|
|
443
|
-
<footer class="actionbar centered">
|
|
444
|
-
<!-- Centered footer -->
|
|
445
|
-
</footer>
|
|
446
|
-
</body>
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
**Key Classes:**
|
|
450
|
-
- `.main-content.centered` - Centers the main content
|
|
451
|
-
- `.centered-content` - Wrapper for centered content with max-width constraint
|
|
452
|
-
- `.actionbar.centered` - Centered variant of action bar
|
|
453
|
-
|
|
454
|
-
**Use Case:** Documentation pages, information displays, form submissions, and content with optimal line length requirements.
|
|
455
|
-
|
|
456
|
-
**Max-Width Values:**
|
|
457
|
-
- `.max-w-capped` - Standard max-width for centered content (typically 800px)
|
|
458
|
-
- Ensures readability on widescreen displays while maintaining responsive behavior
|
|
459
|
-
|
|
460
|
-
**Example Centered Actionbar:**
|
|
461
|
-
```html
|
|
462
|
-
<footer class="actionbar centered">
|
|
463
|
-
<div class="flex justify-center gap-md">
|
|
464
|
-
<button class="btn btn-secondary">Cancel</button>
|
|
465
|
-
<button class="btn btn-primary">Submit</button>
|
|
466
|
-
</div>
|
|
467
|
-
</footer>
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
---
|
|
471
|
-
|
|
472
|
-
## Button Components
|
|
473
|
-
|
|
474
|
-
### Basic Buttons
|
|
475
|
-
```html
|
|
476
|
-
<!-- Primary button -->
|
|
477
|
-
<button class="btn btn-primary">Primary Action</button>
|
|
478
|
-
|
|
479
|
-
<!-- Secondary (outline) button -->
|
|
480
|
-
<button class="btn btn-secondary">Secondary Action</button>
|
|
481
|
-
|
|
482
|
-
<!-- Ghost button (no border/background) -->
|
|
483
|
-
<button class="btn btn-ghost">Ghost Action</button>
|
|
484
|
-
|
|
485
|
-
<!-- Link button (text style) -->
|
|
486
|
-
<button class="btn btn-link">Link Style</button>
|
|
487
|
-
|
|
488
|
-
<!-- Dashed border button -->
|
|
489
|
-
<button class="btn btn-dashed">Add New</button>
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
### Semantic Button Variants
|
|
493
|
-
```html
|
|
494
|
-
<button class="btn btn-success">Success Action</button>
|
|
495
|
-
<button class="btn btn-danger">Delete/Danger</button>
|
|
496
|
-
<button class="btn btn-warning">Warning Action</button>
|
|
497
|
-
<button class="btn btn-info">Info Action</button>
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
### Button Sizes
|
|
501
|
-
```html
|
|
502
|
-
<!-- Small button -->
|
|
503
|
-
<button class="btn btn-sm btn-primary">Small</button>
|
|
504
|
-
|
|
505
|
-
<!-- Default button (h-btn = 2.5rem/40px) -->
|
|
506
|
-
<button class="btn btn-primary">Default</button>
|
|
507
|
-
|
|
508
|
-
<!-- Large button (for icon buttons) -->
|
|
509
|
-
<button class="btn btn-lg btn-primary">
|
|
510
|
-
<i class="icon icon-star"></i>
|
|
511
|
-
</button>
|
|
512
|
-
|
|
513
|
-
<!-- Extra large button with label -->
|
|
514
|
-
<button class="btn btn-xl btn-primary">
|
|
515
|
-
<i class="icon icon-upload"></i>
|
|
516
|
-
Upload
|
|
517
|
-
</button>
|
|
518
|
-
```
|
|
519
|
-
|
|
520
|
-
### Button Shapes
|
|
521
|
-
```html
|
|
522
|
-
<!-- Square icon button -->
|
|
523
|
-
<button class="btn btn-square btn-primary">
|
|
524
|
-
<i class="icon icon-search"></i>
|
|
525
|
-
</button>
|
|
526
|
-
|
|
527
|
-
<!-- Circle button -->
|
|
528
|
-
<button class="btn btn-circle btn-primary">
|
|
529
|
-
<i class="icon icon-add"></i>
|
|
530
|
-
</button>
|
|
531
|
-
|
|
532
|
-
<!-- Block button (full width) -->
|
|
533
|
-
<button class="btn btn-block btn-primary">Full Width</button>
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
### Inverted Buttons (for dark backgrounds)
|
|
537
|
-
```html
|
|
538
|
-
<div class="bg-actionbar p-md">
|
|
539
|
-
<button class="btn btn-primary-inverted">Primary Inverted</button>
|
|
540
|
-
<button class="btn btn-inverted">Inverted</button>
|
|
541
|
-
<button class="btn btn-secondary-inverted">Secondary Inverted</button>
|
|
542
|
-
<button class="btn btn-outline-primary-inverted">Outline Primary Inverted</button>
|
|
543
|
-
<button class="btn btn-ghost-inverted">Ghost Inverted</button>
|
|
544
|
-
</div>
|
|
545
|
-
```
|
|
546
|
-
|
|
547
|
-
### Buttons with Icons
|
|
548
|
-
```html
|
|
549
|
-
<button class="btn btn-primary">
|
|
550
|
-
<i class="icon icon-save mr-icon-spacing"></i>
|
|
551
|
-
Save Changes
|
|
552
|
-
</button>
|
|
553
|
-
|
|
554
|
-
<button class="btn btn-secondary">
|
|
555
|
-
<i class="icon icon-download mr-icon-spacing"></i>
|
|
556
|
-
Download
|
|
557
|
-
</button>
|
|
558
|
-
```
|
|
559
|
-
|
|
560
|
-
### Dropdown Menu Button
|
|
561
|
-
```html
|
|
562
|
-
<details class="dropdown-actions">
|
|
563
|
-
<summary>
|
|
564
|
-
<div class="btn btn-square btn-primary">
|
|
565
|
-
<span class="icon icon-more"></span>
|
|
566
|
-
</div>
|
|
567
|
-
</summary>
|
|
568
|
-
<div class="popover-menu">
|
|
569
|
-
<a class="popover-action" href="#">
|
|
570
|
-
<span class="icon icon-pencil"></span>
|
|
571
|
-
Edit
|
|
572
|
-
</a>
|
|
573
|
-
<a class="popover-action" href="#">
|
|
574
|
-
<span class="icon icon-duplicate"></span>
|
|
575
|
-
Duplicate
|
|
576
|
-
</a>
|
|
577
|
-
<a class="popover-action" href="#">
|
|
578
|
-
<span class="icon icon-remove"></span>
|
|
579
|
-
Delete
|
|
580
|
-
</a>
|
|
581
|
-
</div>
|
|
582
|
-
</details>
|
|
583
|
-
|
|
584
|
-
<!-- Direction variants -->
|
|
585
|
-
<details class="dropdown-actions dropright"><!-- Opens to right --></details>
|
|
586
|
-
<details class="dropdown-actions dropup dropright"><!-- Opens up and right --></details>
|
|
587
|
-
```
|
|
588
|
-
|
|
589
|
-
### Button Groups
|
|
590
|
-
```html
|
|
591
|
-
<div class="btn-group">
|
|
592
|
-
<button class="btn btn-primary">Left</button>
|
|
593
|
-
<button class="btn btn-primary">Center</button>
|
|
594
|
-
<button class="btn btn-primary">Right</button>
|
|
595
|
-
</div>
|
|
596
|
-
```
|
|
597
|
-
|
|
598
|
-
---
|
|
599
|
-
|
|
600
|
-
## Card Components
|
|
601
|
-
|
|
602
|
-
### Basic Card Structure
|
|
603
|
-
```html
|
|
604
|
-
<div class="card">
|
|
605
|
-
<div class="card-header">
|
|
606
|
-
<h3 class="card-title">Card Title</h3>
|
|
607
|
-
</div>
|
|
608
|
-
<div class="card-body">
|
|
609
|
-
<p>Card content goes here</p>
|
|
610
|
-
</div>
|
|
611
|
-
<div class="card-footer">
|
|
612
|
-
<button class="btn btn-primary btn-block">Action</button>
|
|
613
|
-
<button class="btn btn-secondary btn-block">Cancel</button>
|
|
614
|
-
</div>
|
|
615
|
-
</div>
|
|
616
|
-
```
|
|
617
|
-
|
|
618
|
-
### Card Sizes
|
|
619
|
-
```html
|
|
620
|
-
<!-- Small card (11.25rem on sm+ screens) -->
|
|
621
|
-
<div class="card card-sm">...</div>
|
|
622
|
-
|
|
623
|
-
<!-- Medium card (17.5rem) -->
|
|
624
|
-
<div class="card card-md">...</div>
|
|
625
|
-
|
|
626
|
-
<!-- Large card (23.75rem) -->
|
|
627
|
-
<div class="card card-lg">...</div>
|
|
628
|
-
```
|
|
629
|
-
|
|
630
|
-
### Card Variants
|
|
631
|
-
```html
|
|
632
|
-
<!-- Highlighted card (info blue background) -->
|
|
633
|
-
<div class="card highlight">...</div>
|
|
634
|
-
|
|
635
|
-
<!-- Card with highlighted header only -->
|
|
636
|
-
<div class="card">
|
|
637
|
-
<div class="card-header highlight">
|
|
638
|
-
<h3 class="card-title">Highlighted Header</h3>
|
|
639
|
-
</div>
|
|
640
|
-
<div class="card-body">Regular content</div>
|
|
641
|
-
</div>
|
|
642
|
-
|
|
643
|
-
<!-- Card with image -->
|
|
644
|
-
<div class="card">
|
|
645
|
-
<img src="image.jpg" alt="Card image" class="card-image">
|
|
646
|
-
<div class="card-header">
|
|
647
|
-
<h3 class="card-title">Card with Image</h3>
|
|
648
|
-
</div>
|
|
649
|
-
<div class="card-body">Content</div>
|
|
650
|
-
</div>
|
|
651
|
-
|
|
652
|
-
<!-- Card with icon header -->
|
|
653
|
-
<div class="card">
|
|
654
|
-
<div class="card-icon-header">
|
|
655
|
-
<i class="icon icon-star"></i>
|
|
656
|
-
</div>
|
|
657
|
-
<div class="card-body">
|
|
658
|
-
<h3 class="card-title">Icon Card</h3>
|
|
659
|
-
<p>Content below icon</p>
|
|
660
|
-
</div>
|
|
661
|
-
</div>
|
|
662
|
-
|
|
663
|
-
<!-- Centered card content -->
|
|
664
|
-
<div class="card text-center">...</div>
|
|
665
|
-
```
|
|
666
|
-
|
|
667
|
-
### Card with Info Popover
|
|
668
|
-
```html
|
|
669
|
-
<div class="card">
|
|
670
|
-
<details class="popover-wrapper dropright card-info-popover">
|
|
671
|
-
<summary>
|
|
672
|
-
<div class="btn btn-sm btn-square">
|
|
673
|
-
<div class="icon icon-info"></div>
|
|
674
|
-
</div>
|
|
675
|
-
</summary>
|
|
676
|
-
<div class="popover-menu info">
|
|
677
|
-
<div class="popover-title">Popover title</div>
|
|
678
|
-
<div class="popover-content">Popover content...</div>
|
|
679
|
-
</div>
|
|
680
|
-
</details>
|
|
681
|
-
<div class="card-header">
|
|
682
|
-
<h3 class="card-title">Card with info popover</h3>
|
|
683
|
-
</div>
|
|
684
|
-
<div class="card-body">Content</div>
|
|
685
|
-
</div>
|
|
686
|
-
```
|
|
687
|
-
|
|
688
|
-
### Card Layouts
|
|
689
|
-
```html
|
|
690
|
-
<!-- Grid of cards (responsive) -->
|
|
691
|
-
<div class="grid-cards">
|
|
692
|
-
<div class="card">...</div>
|
|
693
|
-
<div class="card">...</div>
|
|
694
|
-
<div class="card">...</div>
|
|
695
|
-
</div>
|
|
696
|
-
|
|
697
|
-
<!-- List of cards (horizontal wrap) -->
|
|
698
|
-
<div class="list-cards">
|
|
699
|
-
<div class="card card-sm">...</div>
|
|
700
|
-
<div class="card card-sm">...</div>
|
|
701
|
-
</div>
|
|
702
|
-
|
|
703
|
-
<!-- Achievements grid (6 columns on 2xl screens) -->
|
|
704
|
-
<div class="grid-cards-achievements">
|
|
705
|
-
<div class="card">...</div>
|
|
706
|
-
</div>
|
|
707
|
-
```
|
|
708
|
-
|
|
709
|
-
---
|
|
710
|
-
|
|
711
|
-
## Form Components
|
|
712
|
-
|
|
713
|
-
### Form Group Structure
|
|
714
|
-
|
|
715
|
-
#### Horizontal Form Group (Default)
|
|
716
|
-
```html
|
|
717
|
-
<div class="form-group">
|
|
718
|
-
<label class="form-label">Email Address</label>
|
|
719
|
-
<input type="email" class="form-control" placeholder="Enter email">
|
|
720
|
-
</div>
|
|
721
|
-
|
|
722
|
-
<!-- Optional field -->
|
|
723
|
-
<div class="form-group">
|
|
724
|
-
<label class="form-label optional">Phone Number</label>
|
|
725
|
-
<input type="tel" class="form-control">
|
|
726
|
-
</div>
|
|
727
|
-
|
|
728
|
-
<!-- Optional field with custom translation -->
|
|
729
|
-
<div class="form-group">
|
|
730
|
-
<label class="form-label optional-non-en" data-optional-non-en="(freiwillig)">Phone Number</label>
|
|
731
|
-
<input type="tel" class="form-control">
|
|
732
|
-
</div>
|
|
733
|
-
|
|
734
|
-
<!-- Inverted (for dark backgrounds) -->
|
|
735
|
-
<div class="form-group inverted">
|
|
736
|
-
<label class="form-label">Email Address</label>
|
|
737
|
-
<input type="email" class="form-control" placeholder="Enter email">
|
|
738
|
-
</div>
|
|
739
|
-
```
|
|
740
|
-
|
|
741
|
-
#### Vertical Form Group
|
|
742
|
-
Use vertical form groups in tight spaces and narrow containers where horizontal layout cannot fit:
|
|
743
|
-
|
|
744
|
-
```html
|
|
745
|
-
<div class="form-group vertical">
|
|
746
|
-
<label class="form-label">Email Address</label>
|
|
747
|
-
<input type="email" class="form-control" placeholder="Enter email">
|
|
748
|
-
</div>
|
|
749
|
-
|
|
750
|
-
<!-- Optional field with custom translation -->
|
|
751
|
-
<div class="form-group vertical">
|
|
752
|
-
<label class="form-label optional-non-en" data-optional-non-en="(freiwillig)">Phone Number</label>
|
|
753
|
-
<input type="tel" class="form-control">
|
|
754
|
-
</div>
|
|
755
|
-
|
|
756
|
-
<!-- Inverted (for dark backgrounds) -->
|
|
757
|
-
<div class="form-group vertical inverted">
|
|
758
|
-
<label class="form-label">Email Address</label>
|
|
759
|
-
<input type="email" class="form-control" placeholder="Enter email">
|
|
760
|
-
</div>
|
|
761
|
-
```
|
|
762
|
-
|
|
763
|
-
### Form Inputs
|
|
764
|
-
```html
|
|
765
|
-
<!-- Text input -->
|
|
766
|
-
<input type="text" class="form-control" placeholder="Enter text">
|
|
767
|
-
|
|
768
|
-
<!-- Textarea -->
|
|
769
|
-
<textarea class="form-control" rows="4" placeholder="Enter description"></textarea>
|
|
770
|
-
|
|
771
|
-
<!-- Disabled input -->
|
|
772
|
-
<input type="text" class="form-control" disabled value="Read only">
|
|
773
|
-
|
|
774
|
-
<!-- With validation error -->
|
|
775
|
-
<div class="form-group">
|
|
776
|
-
<label class="form-label">Username</label>
|
|
777
|
-
<div class="field_with_errors">
|
|
778
|
-
<input type="text" class="form-control">
|
|
779
|
-
</div>
|
|
780
|
-
<div class="form-hint error">Username is required</div>
|
|
781
|
-
</div>
|
|
782
|
-
```
|
|
783
|
-
|
|
784
|
-
### Form Hints
|
|
785
|
-
```html
|
|
786
|
-
<!-- Standard hint -->
|
|
787
|
-
<div class="form-hint">This field is optional</div>
|
|
788
|
-
|
|
789
|
-
<!-- Error hint -->
|
|
790
|
-
<div class="form-hint error">Please enter a valid email</div>
|
|
791
|
-
```
|
|
792
|
-
|
|
793
|
-
#### Collapsable Form Hints
|
|
794
|
-
```html
|
|
795
|
-
<!-- Collapsable form hint with learn more trigger -->
|
|
796
|
-
<div class="form-group">
|
|
797
|
-
<label class="form-label">Your Project</label>
|
|
798
|
-
<div class="col">
|
|
799
|
-
<input class="form-control" type="text" placeholder="Some delicious placeholder text">
|
|
800
|
-
<details class="form-hint-collapsable">
|
|
801
|
-
<summary>
|
|
802
|
-
<div class="form-hint">
|
|
803
|
-
<span>
|
|
804
|
-
This is a help text.
|
|
805
|
-
<span class="form-hint-trigger form-hint-collapsed-text">Learn more</span>
|
|
806
|
-
<span class="form-hint-trigger form-hint-expanded-text">Close</span>
|
|
807
|
-
</span>
|
|
808
|
-
</div>
|
|
809
|
-
</summary>
|
|
810
|
-
<div class="form-hint-collapsable-message">Good examples are "Java wrapper lib for our 5-endpoint REST API" or "Help integration Intercom into our web interface"</div>
|
|
811
|
-
</details>
|
|
812
|
-
</div>
|
|
813
|
-
</div>
|
|
814
|
-
```
|
|
815
|
-
|
|
816
|
-
### Form Grid Layout
|
|
817
|
-
```html
|
|
818
|
-
<!-- Standard form grid -->
|
|
819
|
-
<div class="form-grid">
|
|
820
|
-
<div class="form-group">...</div>
|
|
821
|
-
<div class="form-group">...</div>
|
|
822
|
-
</div>
|
|
823
|
-
|
|
824
|
-
<!-- Single column form grid -->
|
|
825
|
-
<div class="form-grid single">
|
|
826
|
-
<div class="form-group">...</div>
|
|
827
|
-
</div>
|
|
828
|
-
|
|
829
|
-
<!-- Narrow single column -->
|
|
830
|
-
<div class="form-grid single narrow">
|
|
831
|
-
<div class="form-group">...</div>
|
|
832
|
-
</div>
|
|
833
|
-
```
|
|
834
|
-
|
|
835
|
-
### Checkboxes
|
|
836
|
-
```html
|
|
837
|
-
<!-- Default checkbox -->
|
|
838
|
-
<div class="form-check">
|
|
839
|
-
<input id="check1" type="checkbox">
|
|
840
|
-
<label for="check1">Checkbox</label>
|
|
841
|
-
</div>
|
|
842
|
-
|
|
843
|
-
<!-- Checked checkbox -->
|
|
844
|
-
<div class="form-check">
|
|
845
|
-
<input id="check2" type="checkbox" checked="true">
|
|
846
|
-
<label for="check2">Checked</label>
|
|
847
|
-
</div>
|
|
848
|
-
|
|
849
|
-
<!-- Small checkbox -->
|
|
850
|
-
<div class="form-check sm">
|
|
851
|
-
<input id="check3" type="checkbox">
|
|
852
|
-
<label for="check3">Checkbox SM</label>
|
|
853
|
-
</div>
|
|
854
|
-
|
|
855
|
-
<!-- Disabled checkbox -->
|
|
856
|
-
<div class="form-check disabled">
|
|
857
|
-
<input id="check4" type="checkbox" disabled="true">
|
|
858
|
-
<label for="check4">Disabled</label>
|
|
859
|
-
</div>
|
|
860
|
-
|
|
861
|
-
<!-- With error state -->
|
|
862
|
-
<div class="form-check">
|
|
863
|
-
<div class="field_with_errors">
|
|
864
|
-
<input id="check5" type="checkbox">
|
|
865
|
-
</div>
|
|
866
|
-
<label for="check5">Checkbox with error</label>
|
|
867
|
-
</div>
|
|
868
|
-
|
|
869
|
-
<!-- Inverted (for dark backgrounds) -->
|
|
870
|
-
<div class="form-check inverted">
|
|
871
|
-
<input id="check6" type="checkbox">
|
|
872
|
-
<label for="check6">Inverted</label>
|
|
873
|
-
</div>
|
|
874
|
-
```
|
|
875
|
-
|
|
876
|
-
### Radio Buttons
|
|
877
|
-
```html
|
|
878
|
-
<!-- Radio group -->
|
|
879
|
-
<div class="form-radio">
|
|
880
|
-
<input id="radio1" type="radio" name="radio-group" value="1" checked="true">
|
|
881
|
-
<label for="radio1">Option 1</label>
|
|
882
|
-
</div>
|
|
883
|
-
<div class="form-radio">
|
|
884
|
-
<input id="radio2" type="radio" name="radio-group" value="2">
|
|
885
|
-
<label for="radio2">Option 2</label>
|
|
886
|
-
</div>
|
|
887
|
-
<div class="form-radio">
|
|
888
|
-
<input id="radio3" type="radio" name="radio-group" value="3">
|
|
889
|
-
<label for="radio3">Option 3</label>
|
|
890
|
-
</div>
|
|
891
|
-
|
|
892
|
-
<!-- Small radio -->
|
|
893
|
-
<div class="form-radio sm">
|
|
894
|
-
<input id="radio4" type="radio" name="radio-sm" value="1">
|
|
895
|
-
<label for="radio4">SM Option 1</label>
|
|
896
|
-
</div>
|
|
897
|
-
|
|
898
|
-
<!-- Disabled radio -->
|
|
899
|
-
<div class="form-radio disabled">
|
|
900
|
-
<input id="radio5" type="radio" name="radio-group" value="4" disabled="true">
|
|
901
|
-
<label for="radio5">Disabled</label>
|
|
902
|
-
</div>
|
|
903
|
-
|
|
904
|
-
<!-- Inverted (for dark backgrounds) -->
|
|
905
|
-
<div class="form-radio inverted">
|
|
906
|
-
<input id="radio6" type="radio" name="radio-inv" value="1">
|
|
907
|
-
<label for="radio6">Inverted Option</label>
|
|
908
|
-
</div>
|
|
909
|
-
```
|
|
910
|
-
|
|
911
|
-
### Toggle Switch
|
|
912
|
-
```html
|
|
913
|
-
<!-- Toggle switch -->
|
|
914
|
-
<div class="form-toggle">
|
|
915
|
-
<label class="toggle-switch" for="toggle1">
|
|
916
|
-
<input id="toggle1" type="checkbox">
|
|
917
|
-
<span class="slider"></span>
|
|
918
|
-
</label>
|
|
919
|
-
<label class="toggle-switch-label" for="toggle1">Toggle Switch</label>
|
|
920
|
-
</div>
|
|
921
|
-
|
|
922
|
-
<!-- Active toggle -->
|
|
923
|
-
<div class="form-toggle">
|
|
924
|
-
<label class="toggle-switch" for="toggle2">
|
|
925
|
-
<input id="toggle2" type="checkbox" checked="true">
|
|
926
|
-
<span class="slider"></span>
|
|
927
|
-
</label>
|
|
928
|
-
<label class="toggle-switch-label" for="toggle2">Active Toggle</label>
|
|
929
|
-
</div>
|
|
930
|
-
|
|
931
|
-
<!-- Small toggle -->
|
|
932
|
-
<div class="form-toggle sm">
|
|
933
|
-
<label class="toggle-switch" for="toggle3">
|
|
934
|
-
<input id="toggle3" type="checkbox">
|
|
935
|
-
<span class="slider"></span>
|
|
936
|
-
</label>
|
|
937
|
-
<label class="toggle-switch-label" for="toggle3">Toggle SM</label>
|
|
938
|
-
</div>
|
|
939
|
-
|
|
940
|
-
<!-- Disabled toggle -->
|
|
941
|
-
<div class="form-toggle">
|
|
942
|
-
<label class="toggle-switch disabled" for="toggle4">
|
|
943
|
-
<input id="toggle4" type="checkbox" disabled="disabled">
|
|
944
|
-
<span class="slider"></span>
|
|
945
|
-
</label>
|
|
946
|
-
<label class="toggle-switch-label" for="toggle4">Disabled</label>
|
|
947
|
-
</div>
|
|
948
|
-
```
|
|
949
|
-
|
|
950
|
-
### Select Inputs
|
|
951
|
-
|
|
952
|
-
#### Native Select
|
|
953
|
-
```html
|
|
954
|
-
<select class="form-control">
|
|
955
|
-
<option>Choose an option</option>
|
|
956
|
-
<option value="1">Option 1</option>
|
|
957
|
-
<option value="2">Option 2</option>
|
|
958
|
-
</select>
|
|
959
|
-
```
|
|
960
|
-
|
|
961
|
-
#### Select2 Enhanced Select
|
|
962
|
-
```html
|
|
963
|
-
<div class="form-group form-select">
|
|
964
|
-
<label class="form-label">Select</label>
|
|
965
|
-
<select class="select2" placeholder="Please select">
|
|
966
|
-
<option value="Option 1">Option 1</option>
|
|
967
|
-
<option value="Option 2">Option 2</option>
|
|
968
|
-
<option value="Option 3">Option 3</option>
|
|
969
|
-
</select>
|
|
970
|
-
</div>
|
|
971
|
-
|
|
972
|
-
<!-- Multi-select -->
|
|
973
|
-
<div class="form-group multi-select">
|
|
974
|
-
<label class="form-label">Select multiple</label>
|
|
975
|
-
<select class="select2" multiple="true" placeholder="Please select">
|
|
976
|
-
<option>Option 1</option>
|
|
977
|
-
<option>Option 2</option>
|
|
978
|
-
<option>Option 3</option>
|
|
979
|
-
</select>
|
|
980
|
-
</div>
|
|
981
|
-
|
|
982
|
-
<!-- With optgroup -->
|
|
983
|
-
<div class="form-group form-select">
|
|
984
|
-
<label class="form-label">Optgroup select</label>
|
|
985
|
-
<select class="select2" placeholder="Please select">
|
|
986
|
-
<optgroup label="Category Label">
|
|
987
|
-
<option>Option 1</option>
|
|
988
|
-
<option>Option 2</option>
|
|
989
|
-
</optgroup>
|
|
990
|
-
</select>
|
|
991
|
-
</div>
|
|
992
|
-
```
|
|
993
|
-
|
|
994
|
-
#### Tom Select Enhanced Select
|
|
995
|
-
```html
|
|
996
|
-
<div class="form-group form-select">
|
|
997
|
-
<label class="form-label">Select</label>
|
|
998
|
-
<select class="tom-select" placeholder="Please select">
|
|
999
|
-
<option value=""></option>
|
|
1000
|
-
<option value="Option 1">Option 1</option>
|
|
1001
|
-
<option value="Option 2">Option 2</option>
|
|
1002
|
-
</select>
|
|
1003
|
-
</div>
|
|
1004
|
-
|
|
1005
|
-
<!-- Multi-select -->
|
|
1006
|
-
<div class="form-group multi-select">
|
|
1007
|
-
<label class="form-label">Select multiple</label>
|
|
1008
|
-
<select class="tom-select-multi" multiple="true" placeholder="Please select">
|
|
1009
|
-
<option>Option 1</option>
|
|
1010
|
-
<option>Option 2</option>
|
|
1011
|
-
</select>
|
|
1012
|
-
</div>
|
|
1013
|
-
```
|
|
1014
|
-
|
|
1015
|
-
### Date & Time Picker (Flatpickr)
|
|
1016
|
-
```html
|
|
1017
|
-
<!-- Date picker -->
|
|
1018
|
-
<div class="form-group">
|
|
1019
|
-
<label class="form-label">Select Date</label>
|
|
1020
|
-
<div class="form-date">
|
|
1021
|
-
<input class="form-control flatpickr" type="date" placeholder="Choose a date">
|
|
1022
|
-
</div>
|
|
1023
|
-
</div>
|
|
1024
|
-
|
|
1025
|
-
<!-- Date and time picker -->
|
|
1026
|
-
<div class="form-group">
|
|
1027
|
-
<label class="form-label">Select Date & Time</label>
|
|
1028
|
-
<div class="form-date">
|
|
1029
|
-
<input class="form-control flatpickr-time" type="datetime-local" placeholder="Choose date and time">
|
|
1030
|
-
</div>
|
|
1031
|
-
</div>
|
|
1032
|
-
```
|
|
1033
|
-
|
|
1034
|
-
### Selectable Tokens
|
|
1035
|
-
```html
|
|
1036
|
-
<ul class="list-inline flex">
|
|
1037
|
-
<li class="selectable-token">
|
|
1038
|
-
<input id="token1" type="checkbox" checked="true">
|
|
1039
|
-
<label for="token1">
|
|
1040
|
-
<span class="icon icon-chrome mr-icon-spacing"></span>
|
|
1041
|
-
Selectable token
|
|
1042
|
-
</label>
|
|
1043
|
-
</li>
|
|
1044
|
-
<li class="selectable-token">
|
|
1045
|
-
<input id="token2" type="checkbox">
|
|
1046
|
-
<label for="token2">
|
|
1047
|
-
<span class="icon icon-firefox mr-icon-spacing"></span>
|
|
1048
|
-
Another token
|
|
1049
|
-
</label>
|
|
1050
|
-
</li>
|
|
1051
|
-
<li class="selectable-token disabled">
|
|
1052
|
-
<input id="token3" type="checkbox" disabled="true">
|
|
1053
|
-
<label for="token3">Disabled token</label>
|
|
1054
|
-
</li>
|
|
1055
|
-
</ul>
|
|
1056
|
-
|
|
1057
|
-
<!-- Inverted (for dark backgrounds) -->
|
|
1058
|
-
<li class="selectable-token inverted">...</li>
|
|
1059
|
-
```
|
|
1060
|
-
|
|
1061
|
-
### Rating Scale
|
|
1062
|
-
```html
|
|
1063
|
-
<div class="rating-scale">
|
|
1064
|
-
<!-- Rating scale component -->
|
|
1065
|
-
</div>
|
|
1066
|
-
```
|
|
1067
|
-
|
|
1068
|
-
### Form with Addon
|
|
1069
|
-
```html
|
|
1070
|
-
<!-- Text addon (e.g., currency) -->
|
|
1071
|
-
<div class="form-group with-addon">
|
|
1072
|
-
<label class="form-label">Price</label>
|
|
1073
|
-
<input type="number" class="form-control" placeholder="0.00">
|
|
1074
|
-
<div class="form-addon">
|
|
1075
|
-
<span class="text-label">EUR</span>
|
|
1076
|
-
</div>
|
|
1077
|
-
</div>
|
|
1078
|
-
|
|
1079
|
-
<!-- Icon addon (e.g., validation status) -->
|
|
1080
|
-
<div class="form-group with-addon">
|
|
1081
|
-
<label class="form-label">Email Address</label>
|
|
1082
|
-
<input type="email" class="form-control" placeholder="Enter email">
|
|
1083
|
-
<div class="form-addon">
|
|
1084
|
-
<span class="icon icon-check-circle-filled text-success"></span>
|
|
1085
|
-
</div>
|
|
1086
|
-
</div>
|
|
1087
|
-
```
|
|
1088
|
-
|
|
1089
|
-
### Form Card
|
|
1090
|
-
A card component containing a form with various input elements. Useful for collapsable form sections or multi-form layouts.
|
|
1091
|
-
|
|
1092
|
-
```html
|
|
1093
|
-
<div class="form-card">
|
|
1094
|
-
<div class="form-card-heading">
|
|
1095
|
-
<div class="form-card-title">Form Card Title</div>
|
|
1096
|
-
<div class="form-card-actions">
|
|
1097
|
-
<button class="btn btn-square btn-sm btn-primary">
|
|
1098
|
-
<i class="icon icon-arrow-upward"></i>
|
|
1099
|
-
</button>
|
|
1100
|
-
<button class="btn btn-square btn-sm btn-primary">
|
|
1101
|
-
<i class="icon icon-arrow-downward"></i>
|
|
1102
|
-
</button>
|
|
1103
|
-
<button class="btn btn-square btn-sm btn-primary">
|
|
1104
|
-
<i class="icon icon-remove"></i>
|
|
1105
|
-
</button>
|
|
1106
|
-
</div>
|
|
1107
|
-
</div>
|
|
1108
|
-
<div class="form-grid">
|
|
1109
|
-
<div class="form-group">
|
|
1110
|
-
<label class="form-label">Input</label>
|
|
1111
|
-
<input class="form-control" type="text" placeholder="Enter text">
|
|
1112
|
-
</div>
|
|
1113
|
-
<div class="form-group">
|
|
1114
|
-
<label class="form-label">Textarea</label>
|
|
1115
|
-
<textarea class="form-control" rows="4" placeholder="Enter description"></textarea>
|
|
1116
|
-
</div>
|
|
1117
|
-
<div class="form-group form-select">
|
|
1118
|
-
<label class="form-label">Select</label>
|
|
1119
|
-
<select class="tom-select" placeholder="Please select">
|
|
1120
|
-
<option value=""></option>
|
|
1121
|
-
<option value="Option 1">Option 1</option>
|
|
1122
|
-
<option value="Option 2">Option 2</option>
|
|
1123
|
-
</select>
|
|
1124
|
-
</div>
|
|
1125
|
-
</div>
|
|
1126
|
-
</div>
|
|
1127
|
-
```
|
|
1128
|
-
|
|
1129
|
-
### Inverted Forms (for dark backgrounds)
|
|
1130
|
-
```html
|
|
1131
|
-
<div class="form-group inverted">
|
|
1132
|
-
<label class="form-label">Email</label>
|
|
1133
|
-
<input type="email" class="form-control" placeholder="Enter email">
|
|
1134
|
-
<div class="form-hint">We'll never share your email</div>
|
|
1135
|
-
</div>
|
|
1136
|
-
```
|
|
1137
|
-
|
|
1138
|
-
---
|
|
1139
|
-
|
|
1140
|
-
## Overlay Components (Modal & Drawer)
|
|
1141
|
-
|
|
1142
|
-
### Modal Component
|
|
1143
|
-
|
|
1144
|
-
Modals are used to display content in a layer above the main content. They can contain forms, confirmations, and other interactive content.
|
|
1145
|
-
|
|
1146
|
-
#### Basic Modal
|
|
1147
|
-
```html
|
|
1148
|
-
<details class="modal-wrapper">
|
|
1149
|
-
<summary class="modal-trigger">
|
|
1150
|
-
<div class="btn btn-primary">Open modal</div>
|
|
1151
|
-
</summary>
|
|
1152
|
-
<div class="modal-container">
|
|
1153
|
-
<div class="modal">
|
|
1154
|
-
<div class="modal-header">
|
|
1155
|
-
<h2 class="modal-title">Modal Title</h2>
|
|
1156
|
-
<div class="btn btn-square close-btn">
|
|
1157
|
-
<div class="icon icon-cross"></div>
|
|
1158
|
-
</div>
|
|
1159
|
-
</div>
|
|
1160
|
-
<div class="modal-content">
|
|
1161
|
-
<p>Modal content goes here...</p>
|
|
1162
|
-
<div class="form-grid">
|
|
1163
|
-
<div class="form-group">
|
|
1164
|
-
<label class="form-label">Input</label>
|
|
1165
|
-
<input class="form-control" type="text" placeholder="">
|
|
1166
|
-
</div>
|
|
1167
|
-
</div>
|
|
1168
|
-
</div>
|
|
1169
|
-
<div class="modal-footer">
|
|
1170
|
-
<a class="btn btn-primary" href="">Primary</a>
|
|
1171
|
-
<a class="btn btn-secondary close-btn" href="">Close</a>
|
|
1172
|
-
</div>
|
|
1173
|
-
</div>
|
|
1174
|
-
</div>
|
|
1175
|
-
</details>
|
|
1176
|
-
```
|
|
1177
|
-
|
|
1178
|
-
#### Modal Sizes
|
|
1179
|
-
```html
|
|
1180
|
-
<!-- Large modal -->
|
|
1181
|
-
<div class="modal modal-lg">...</div>
|
|
1182
|
-
|
|
1183
|
-
<!-- Small modal (confirmation dialog) -->
|
|
1184
|
-
<div class="modal modal-sm">...</div>
|
|
1185
|
-
```
|
|
1186
|
-
|
|
1187
|
-
#### Modal with Disabled Background Close
|
|
1188
|
-
```html
|
|
1189
|
-
<!-- Prevents closing when clicking outside the modal -->
|
|
1190
|
-
<details class="modal-wrapper fade-close-disabled">
|
|
1191
|
-
<summary class="modal-trigger">
|
|
1192
|
-
<div class="btn btn-primary">Open modal</div>
|
|
1193
|
-
</summary>
|
|
1194
|
-
<div class="modal-container">
|
|
1195
|
-
<div class="modal">...</div>
|
|
1196
|
-
</div>
|
|
1197
|
-
</details>
|
|
1198
|
-
```
|
|
1199
|
-
|
|
1200
|
-
### Drawer Component
|
|
1201
|
-
|
|
1202
|
-
Drawers are side panels that slide in from the edge of the screen. They're an alternative to modals for displaying additional content.
|
|
1203
|
-
|
|
1204
|
-
#### Basic Drawer
|
|
1205
|
-
```html
|
|
1206
|
-
<details class="drawer-wrapper">
|
|
1207
|
-
<summary class="drawer-trigger">
|
|
1208
|
-
<div class="btn btn-primary">Open Drawer</div>
|
|
1209
|
-
</summary>
|
|
1210
|
-
<div class="drawer">
|
|
1211
|
-
<div class="drawer-header">
|
|
1212
|
-
<div class="drawer-title">Drawer title</div>
|
|
1213
|
-
</div>
|
|
1214
|
-
<div class="drawer-content">
|
|
1215
|
-
<p>Drawer content goes here...</p>
|
|
1216
|
-
</div>
|
|
1217
|
-
<div class="drawer-footer">
|
|
1218
|
-
<div class="btn btn-primary">Primary</div>
|
|
1219
|
-
<div class="btn btn-secondary">Secondary</div>
|
|
1220
|
-
</div>
|
|
1221
|
-
</div>
|
|
1222
|
-
</details>
|
|
1223
|
-
```
|
|
1224
|
-
|
|
1225
|
-
#### Drawer with Close Button
|
|
1226
|
-
```html
|
|
1227
|
-
<details class="drawer-wrapper">
|
|
1228
|
-
<summary class="drawer-trigger">
|
|
1229
|
-
<div class="btn btn-primary">Open Drawer</div>
|
|
1230
|
-
<button class="btn btn-square close-btn">
|
|
1231
|
-
<div class="icon icon-cross"></div>
|
|
1232
|
-
</button>
|
|
1233
|
-
</summary>
|
|
1234
|
-
<div class="drawer">
|
|
1235
|
-
<!-- Drawer content -->
|
|
1236
|
-
<div class="drawer-footer">
|
|
1237
|
-
<div class="btn btn-primary">Primary</div>
|
|
1238
|
-
<div class="btn btn-secondary close-btn">Close</div>
|
|
1239
|
-
</div>
|
|
1240
|
-
</div>
|
|
1241
|
-
</details>
|
|
1242
|
-
```
|
|
1243
|
-
|
|
1244
|
-
#### Filter Drawer
|
|
1245
|
-
```html
|
|
1246
|
-
<details class="drawer-wrapper">
|
|
1247
|
-
<summary class="drawer-trigger">
|
|
1248
|
-
<div class="btn btn-secondary">
|
|
1249
|
-
<span class="icon icon-filter mr-icon-spacing"></span>
|
|
1250
|
-
Filter
|
|
1251
|
-
</div>
|
|
1252
|
-
</summary>
|
|
1253
|
-
<div class="drawer drawer-filter">
|
|
1254
|
-
<!-- Filter form content -->
|
|
1255
|
-
</div>
|
|
1256
|
-
</details>
|
|
1257
|
-
```
|
|
1258
|
-
|
|
1259
|
-
---
|
|
1260
|
-
|
|
1261
|
-
## Page Layout Components
|
|
1262
|
-
|
|
1263
|
-
### Page Header Component
|
|
1264
|
-
|
|
1265
|
-
A responsive grid layout component for dashboard and session management pages.
|
|
1266
|
-
|
|
1267
|
-
#### Basic Page Header
|
|
1268
|
-
```html
|
|
1269
|
-
<div class="page-header">
|
|
1270
|
-
<div class="card page-maincard p-card-padding">
|
|
1271
|
-
<h1 class="text-card-header">Session Details</h1>
|
|
1272
|
-
<h2 class="page-session-title">Test Session Title</h2>
|
|
1273
|
-
|
|
1274
|
-
<dl class="page-meta-info">
|
|
1275
|
-
<dt class="label">Created on:</dt>
|
|
1276
|
-
<dd>2025-10-21 10:45 AM</dd>
|
|
1277
|
-
|
|
1278
|
-
<dt class="label">Last test:</dt>
|
|
1279
|
-
<dd>2025-10-21 11:30 AM</dd>
|
|
1280
|
-
|
|
1281
|
-
<dt class="label">ID:</dt>
|
|
1282
|
-
<dd>321456987</dd>
|
|
1283
|
-
|
|
1284
|
-
<dt class="label">URL:</dt>
|
|
1285
|
-
<dd class="row-testsuite">
|
|
1286
|
-
<a href="#" class="label">Test Suite Name</a>
|
|
1287
|
-
</dd>
|
|
1288
|
-
|
|
1289
|
-
<dt class="label">Status:</dt>
|
|
1290
|
-
<dd class="text-white">Active</dd>
|
|
1291
|
-
</dl>
|
|
1292
|
-
</div>
|
|
1293
|
-
|
|
1294
|
-
<div class="page-actions">
|
|
1295
|
-
<a href="#" class="btn btn-primary btn-main">
|
|
1296
|
-
<span class="icon icon-test-running-xl"></span>
|
|
1297
|
-
Start Test
|
|
1298
|
-
</a>
|
|
1299
|
-
</div>
|
|
1300
|
-
</div>
|
|
1301
|
-
```
|
|
1302
|
-
|
|
1303
|
-
#### Page Header with Chart
|
|
1304
|
-
```html
|
|
1305
|
-
<div class="page-header with-chart">
|
|
1306
|
-
<div class="card page-maincard p-card-padding">
|
|
1307
|
-
<!-- Main card content -->
|
|
1308
|
-
</div>
|
|
1309
|
-
|
|
1310
|
-
<div class="page-chart card p-card-padding">
|
|
1311
|
-
<div class="echarts-container" id="chart"></div>
|
|
1312
|
-
</div>
|
|
1313
|
-
|
|
1314
|
-
<div class="page-actions">
|
|
1315
|
-
<a href="#" class="btn btn-primary btn-main">
|
|
1316
|
-
<span class="icon icon-review-xl"></span>
|
|
1317
|
-
Show Report
|
|
1318
|
-
</a>
|
|
1319
|
-
<a href="#" class="btn btn-secondary">Re-run All Checks</a>
|
|
1320
|
-
</div>
|
|
1321
|
-
</div>
|
|
1322
|
-
```
|
|
1323
|
-
|
|
1324
|
-
#### Page Header with Forms
|
|
1325
|
-
```html
|
|
1326
|
-
<div class="page-header">
|
|
1327
|
-
<div class="card page-maincard p-card-padding">
|
|
1328
|
-
<div class="form-grid">
|
|
1329
|
-
<div class="form-group">
|
|
1330
|
-
<label class="form-label">Test Name</label>
|
|
1331
|
-
<input type="text" class="form-control" placeholder="Enter test name">
|
|
1332
|
-
</div>
|
|
1333
|
-
<div class="form-group">
|
|
1334
|
-
<label class="form-label">URL for Testing</label>
|
|
1335
|
-
<input type="url" class="form-control" placeholder="https://example.com">
|
|
1336
|
-
</div>
|
|
1337
|
-
</div>
|
|
1338
|
-
</div>
|
|
1339
|
-
|
|
1340
|
-
<div class="page-actions">
|
|
1341
|
-
<a href="#" class="btn btn-primary btn-xl">
|
|
1342
|
-
<span class="icon icon-test-running-xl"></span>
|
|
1343
|
-
Save and Run Test
|
|
1344
|
-
</a>
|
|
1345
|
-
<a href="#" class="btn btn-secondary">Save Draft</a>
|
|
1346
|
-
<a href="#" class="btn btn-secondary">Cancel</a>
|
|
1347
|
-
</div>
|
|
1348
|
-
</div>
|
|
1349
|
-
```
|
|
1350
|
-
|
|
1351
|
-
**Key Classes:**
|
|
1352
|
-
- `.page-header` - Main grid container with responsive columns
|
|
1353
|
-
- `.page-maincard` - Primary content card (spans 2-4 columns based on screen size)
|
|
1354
|
-
- `.page-actions` - Action buttons column (vertical on md+, horizontal on mobile)
|
|
1355
|
-
- `.page-session-title` - Session/test title with bottom margin
|
|
1356
|
-
- `.page-meta-info` - Metadata grid (2 cols mobile, 6 cols xl)
|
|
1357
|
-
- `.row-testsuite` - Special metadata row that spans 5 columns on xl
|
|
1358
|
-
- `.with-chart` - Modifier for including chart column
|
|
1359
|
-
- `.btn-main` - Primary action button that grows to fill available space
|
|
1360
|
-
|
|
1361
|
-
---
|
|
1362
|
-
|
|
1363
|
-
## Navigation Components
|
|
1364
|
-
|
|
1365
|
-
### Header Navigation
|
|
1366
|
-
```html
|
|
1367
|
-
<header class="header">
|
|
1368
|
-
<div class="header-logo">
|
|
1369
|
-
<img src="logo.svg" alt="Logo">
|
|
1370
|
-
</div>
|
|
1371
|
-
<nav class="header-nav">
|
|
1372
|
-
<a href="#" class="nav-link">Dashboard</a>
|
|
1373
|
-
<a href="#" class="nav-link active">Projects</a>
|
|
1374
|
-
<a href="#" class="nav-link">Settings</a>
|
|
1375
|
-
</nav>
|
|
1376
|
-
<div class="header-actions">
|
|
1377
|
-
<button class="btn btn-sm btn-primary">New Project</button>
|
|
1378
|
-
</div>
|
|
1379
|
-
</header>
|
|
1380
|
-
```
|
|
1381
|
-
|
|
1382
|
-
### Sidebar Navigation
|
|
1383
|
-
```html
|
|
1384
|
-
<aside class="sidebar">
|
|
1385
|
-
<nav class="sidebar-nav">
|
|
1386
|
-
<a href="#" class="sidebar-link active">
|
|
1387
|
-
<i class="icon icon-home"></i>
|
|
1388
|
-
Dashboard
|
|
1389
|
-
</a>
|
|
1390
|
-
<a href="#" class="sidebar-link">
|
|
1391
|
-
<i class="icon icon-folder"></i>
|
|
1392
|
-
Projects
|
|
1393
|
-
</a>
|
|
1394
|
-
<a href="#" class="sidebar-link">
|
|
1395
|
-
<i class="icon icon-settings"></i>
|
|
1396
|
-
Settings
|
|
1397
|
-
</a>
|
|
1398
|
-
</nav>
|
|
1399
|
-
</aside>
|
|
1400
|
-
```
|
|
1401
|
-
|
|
1402
|
-
### Tab Navigation
|
|
1403
|
-
```html
|
|
1404
|
-
<nav class="nav-tabs">
|
|
1405
|
-
<div class="navlink active" href="">Navlink active</div>
|
|
1406
|
-
<div class="navlink" href="">Navlink</div>
|
|
1407
|
-
<div class="navlink" href="">Navlink</div>
|
|
1408
|
-
<div class="navlink" href="">
|
|
1409
|
-
Counter
|
|
1410
|
-
<div class="counter">99</div>
|
|
1411
|
-
</div>
|
|
1412
|
-
<div class="navlink disabled" href="">Disabled</div>
|
|
1413
|
-
</nav>
|
|
1414
|
-
```
|
|
1415
|
-
|
|
1416
|
-
### Tab Navigation Variants
|
|
1417
|
-
```html
|
|
1418
|
-
<!-- Pills style -->
|
|
1419
|
-
<nav class="nav-tabs pills">...</nav>
|
|
1420
|
-
|
|
1421
|
-
<!-- Small tabs -->
|
|
1422
|
-
<nav class="nav-tabs sm">...</nav>
|
|
1423
|
-
|
|
1424
|
-
<!-- Tabs with actions -->
|
|
1425
|
-
<nav class="nav-tabs with-actions">
|
|
1426
|
-
<div class="navlink active">Tab 1</div>
|
|
1427
|
-
<div class="navlink">Tab 2</div>
|
|
1428
|
-
<div class="tab-actions">
|
|
1429
|
-
<button class="btn btn-sm btn-primary">Action</button>
|
|
1430
|
-
</div>
|
|
1431
|
-
</nav>
|
|
1432
|
-
```
|
|
1433
|
-
|
|
1434
|
-
### Radio Tabs
|
|
1435
|
-
```html
|
|
1436
|
-
<div class="radio-tabs">
|
|
1437
|
-
<input type="radio" id="tab1" name="tabs" checked>
|
|
1438
|
-
<label for="tab1">Tab 1</label>
|
|
1439
|
-
<input type="radio" id="tab2" name="tabs">
|
|
1440
|
-
<label for="tab2">Tab 2</label>
|
|
1441
|
-
</div>
|
|
1442
|
-
```
|
|
1443
|
-
|
|
1444
|
-
### Product-Specific Headers
|
|
1445
|
-
```html
|
|
1446
|
-
<!-- Customer portal header -->
|
|
1447
|
-
<header class="header customer_header">...</header>
|
|
1448
|
-
|
|
1449
|
-
<!-- Tester portal header -->
|
|
1450
|
-
<header class="header tester_header">...</header>
|
|
1451
|
-
|
|
1452
|
-
<!-- Manager portal header -->
|
|
1453
|
-
<header class="header manager_header">...</header>
|
|
1454
|
-
|
|
1455
|
-
<!-- AgenticQA header -->
|
|
1456
|
-
<header class="header agenticqa_header">...</header>
|
|
1457
|
-
```
|
|
1458
|
-
|
|
1459
|
-
---
|
|
1460
|
-
|
|
1461
|
-
## Feedback Components
|
|
1462
|
-
|
|
1463
|
-
### Alerts
|
|
1464
|
-
|
|
1465
|
-
Alerts notify users about important information or actions that require their attention.
|
|
1466
|
-
|
|
1467
|
-
```html
|
|
1468
|
-
<!-- Default alert -->
|
|
1469
|
-
<div class="alert">
|
|
1470
|
-
<div class="alert-message">Alert message</div>
|
|
1471
|
-
<button class="close">
|
|
1472
|
-
<div class="icon icon-cross"></div>
|
|
1473
|
-
</button>
|
|
1474
|
-
</div>
|
|
1475
|
-
|
|
1476
|
-
<!-- Alert with button -->
|
|
1477
|
-
<div class="alert">
|
|
1478
|
-
<div class="alert-message">
|
|
1479
|
-
Alert with a button
|
|
1480
|
-
<button class="btn btn-white">Alert action</button>
|
|
1481
|
-
</div>
|
|
1482
|
-
<button class="close">
|
|
1483
|
-
<div class="icon icon-cross"></div>
|
|
1484
|
-
</button>
|
|
1485
|
-
</div>
|
|
1486
|
-
|
|
1487
|
-
<!-- Info alert -->
|
|
1488
|
-
<div class="alert alert-info">
|
|
1489
|
-
<div class="alert-message">Info Alert</div>
|
|
1490
|
-
<button class="close">
|
|
1491
|
-
<div class="icon icon-cross"></div>
|
|
1492
|
-
</button>
|
|
1493
|
-
</div>
|
|
1494
|
-
|
|
1495
|
-
<!-- Success alert -->
|
|
1496
|
-
<div class="alert alert-success">
|
|
1497
|
-
<div class="alert-message">Success Alert</div>
|
|
1498
|
-
<button class="close">
|
|
1499
|
-
<div class="icon icon-cross"></div>
|
|
1500
|
-
</button>
|
|
1501
|
-
</div>
|
|
1502
|
-
|
|
1503
|
-
<!-- Warning alert -->
|
|
1504
|
-
<div class="alert alert-warning">
|
|
1505
|
-
<div class="alert-message">Warning Alert</div>
|
|
1506
|
-
<button class="close">
|
|
1507
|
-
<div class="icon icon-cross"></div>
|
|
1508
|
-
</button>
|
|
1509
|
-
</div>
|
|
1510
|
-
|
|
1511
|
-
<!-- Error alert -->
|
|
1512
|
-
<div class="alert alert-error">
|
|
1513
|
-
<div class="alert-message">Error Alert</div>
|
|
1514
|
-
<button class="close">
|
|
1515
|
-
<div class="icon icon-cross"></div>
|
|
1516
|
-
</button>
|
|
1517
|
-
</div>
|
|
1518
|
-
```
|
|
1519
|
-
|
|
1520
|
-
### Notifications
|
|
1521
|
-
|
|
1522
|
-
Notifications inform users about important updates. They can replace alerts and support various styles.
|
|
1523
|
-
|
|
1524
|
-
```html
|
|
1525
|
-
<!-- Notification container -->
|
|
1526
|
-
<div class="notification-container">
|
|
1527
|
-
<!-- Basic notification -->
|
|
1528
|
-
<a class="notification" href="">
|
|
1529
|
-
<div class="notification-title">Linked Info Notification</div>
|
|
1530
|
-
<div class="notification-content">
|
|
1531
|
-
<div class="notification-message">You have 60 min left to finish this task.</div>
|
|
1532
|
-
</div>
|
|
1533
|
-
<button class="btn btn-close">
|
|
1534
|
-
<span class="icon icon-cross"></span>
|
|
1535
|
-
</button>
|
|
1536
|
-
</a>
|
|
1537
|
-
|
|
1538
|
-
<!-- Notification with icon -->
|
|
1539
|
-
<a class="notification" href="">
|
|
1540
|
-
<div class="notification-badge">
|
|
1541
|
-
<div class="icon icon-bug-fix-confirmation-lg"></div>
|
|
1542
|
-
</div>
|
|
1543
|
-
<div class="notification-content">
|
|
1544
|
-
<div class="notification-title">Notification with icon</div>
|
|
1545
|
-
<div class="notification-message">Message content...</div>
|
|
1546
|
-
</div>
|
|
1547
|
-
<button class="btn btn-close">
|
|
1548
|
-
<span class="icon icon-cross"></span>
|
|
1549
|
-
</button>
|
|
1550
|
-
</a>
|
|
1551
|
-
|
|
1552
|
-
<!-- Success notification -->
|
|
1553
|
-
<a class="notification success" href="">...</a>
|
|
1554
|
-
|
|
1555
|
-
<!-- Warning notification -->
|
|
1556
|
-
<a class="notification warning" href="">...</a>
|
|
1557
|
-
|
|
1558
|
-
<!-- Error notification -->
|
|
1559
|
-
<a class="notification error" href="">...</a>
|
|
1560
|
-
|
|
1561
|
-
<!-- Notification with badge image -->
|
|
1562
|
-
<a class="notification badges" href="">
|
|
1563
|
-
<div class="notification-badge">
|
|
1564
|
-
<img src="/assets/images/badge.svg">
|
|
1565
|
-
</div>
|
|
1566
|
-
<div class="notification-title">New badge received</div>
|
|
1567
|
-
<div class="notification-content">Badge description</div>
|
|
1568
|
-
<button class="btn btn-close">
|
|
1569
|
-
<span class="icon icon-cross"></span>
|
|
1570
|
-
</button>
|
|
1571
|
-
</a>
|
|
1572
|
-
|
|
1573
|
-
<!-- Notification with dedicated button -->
|
|
1574
|
-
<div class="notification">
|
|
1575
|
-
<div class="notification-title">Notification with button</div>
|
|
1576
|
-
<div class="notification-content">
|
|
1577
|
-
<div class="notification-message">Message content...</div>
|
|
1578
|
-
<a class="btn btn-sm btn-inverted" href="">Go to page</a>
|
|
1579
|
-
</div>
|
|
1580
|
-
<button class="btn btn-close">
|
|
1581
|
-
<span class="icon icon-cross"></span>
|
|
1582
|
-
</button>
|
|
1583
|
-
</div>
|
|
1584
|
-
</div>
|
|
1585
|
-
```
|
|
1586
|
-
|
|
1587
|
-
### Progress Bars
|
|
1588
|
-
|
|
1589
|
-
```html
|
|
1590
|
-
<!-- Default progress bar -->
|
|
1591
|
-
<progress class="progress" value="32" max="100">32%</progress>
|
|
1592
|
-
|
|
1593
|
-
<!-- Success progress bar -->
|
|
1594
|
-
<progress class="progress progress-bar-success" value="32" max="100">32%</progress>
|
|
1595
|
-
|
|
1596
|
-
<!-- Danger progress bar -->
|
|
1597
|
-
<progress class="progress progress-bar-danger" value="32" max="100">32%</progress>
|
|
1598
|
-
|
|
1599
|
-
<!-- Test progress (special styling) -->
|
|
1600
|
-
<progress class="progress test-progress" value="32" max="100">32%</progress>
|
|
1601
|
-
|
|
1602
|
-
<!-- Thick progress bar -->
|
|
1603
|
-
<progress class="progress thick" value="32" max="100">32%</progress>
|
|
1604
|
-
```
|
|
1605
|
-
|
|
1606
|
-
### Loading Spinner
|
|
1607
|
-
```html
|
|
1608
|
-
<div class="loading-spinner">
|
|
1609
|
-
<div class="spinner"></div>
|
|
1610
|
-
<p class="loading-text">Loading...</p>
|
|
1611
|
-
</div>
|
|
1612
|
-
```
|
|
1613
|
-
|
|
1614
|
-
### Empty State
|
|
1615
|
-
|
|
1616
|
-
Empty state messages inform users when there is no data to display.
|
|
1617
|
-
|
|
1618
|
-
```html
|
|
1619
|
-
<!-- Default empty state -->
|
|
1620
|
-
<div class="empty-state-message">
|
|
1621
|
-
No items here yet.
|
|
1622
|
-
</div>
|
|
1623
|
-
|
|
1624
|
-
<!-- Search empty state -->
|
|
1625
|
-
<div class="empty-state-message search">
|
|
1626
|
-
No search results found.
|
|
1627
|
-
</div>
|
|
1628
|
-
|
|
1629
|
-
<!-- Sad empty state -->
|
|
1630
|
-
<div class="empty-state-message sad">
|
|
1631
|
-
Something went wrong.
|
|
1632
|
-
</div>
|
|
1633
|
-
|
|
1634
|
-
<!-- Smiling empty state -->
|
|
1635
|
-
<div class="empty-state-message smile">
|
|
1636
|
-
All caught up!
|
|
1637
|
-
</div>
|
|
1638
|
-
|
|
1639
|
-
<!-- Deceased empty state -->
|
|
1640
|
-
<div class="empty-state-message deceased">
|
|
1641
|
-
This item has been archived.
|
|
1642
|
-
</div>
|
|
1643
|
-
|
|
1644
|
-
<!-- Chat empty state -->
|
|
1645
|
-
<div class="empty-state-message chat">
|
|
1646
|
-
No messages yet.
|
|
1647
|
-
</div>
|
|
1648
|
-
|
|
1649
|
-
<!-- Bell empty state -->
|
|
1650
|
-
<div class="empty-state-message bell">
|
|
1651
|
-
No notifications.
|
|
1652
|
-
</div>
|
|
1653
|
-
|
|
1654
|
-
<!-- Horizontal empty state -->
|
|
1655
|
-
<div class="empty-state-message horizontal">
|
|
1656
|
-
Horizontal layout message.
|
|
1657
|
-
</div>
|
|
1658
|
-
```
|
|
1659
|
-
|
|
1660
|
-
---
|
|
1661
|
-
|
|
1662
|
-
## Data Display Components
|
|
1663
|
-
|
|
1664
|
-
### Tables
|
|
1665
|
-
|
|
1666
|
-
The design system includes several table variants with comprehensive dark mode support.
|
|
1667
|
-
|
|
1668
|
-
#### Basic Table
|
|
1669
|
-
```html
|
|
1670
|
-
<table class="table">
|
|
1671
|
-
<thead>
|
|
1672
|
-
<tr>
|
|
1673
|
-
<th>Name</th>
|
|
1674
|
-
<th>Status</th>
|
|
1675
|
-
<th>Actions</th>
|
|
1676
|
-
</tr>
|
|
1677
|
-
</thead>
|
|
1678
|
-
<tbody>
|
|
1679
|
-
<tr>
|
|
1680
|
-
<td>John Doe</td>
|
|
1681
|
-
<td>
|
|
1682
|
-
<span class="badge badge-success">Active</span>
|
|
1683
|
-
</td>
|
|
1684
|
-
<td>
|
|
1685
|
-
<button class="btn btn-sm btn-ghost">Edit</button>
|
|
1686
|
-
</td>
|
|
1687
|
-
</tr>
|
|
1688
|
-
</tbody>
|
|
1689
|
-
</table>
|
|
1690
|
-
```
|
|
1691
|
-
|
|
1692
|
-
#### Table Variants
|
|
1693
|
-
```html
|
|
1694
|
-
<!-- Bordered table -->
|
|
1695
|
-
<table class="table table-bordered">...</table>
|
|
1696
|
-
|
|
1697
|
-
<!-- Borderless table -->
|
|
1698
|
-
<table class="table table-borderless">...</table>
|
|
1699
|
-
|
|
1700
|
-
<!-- Striped/alternating rows -->
|
|
1701
|
-
<table class="table table-striped">...</table>
|
|
1702
|
-
|
|
1703
|
-
<!-- Compact table -->
|
|
1704
|
-
<table class="table table-sm">...</table>
|
|
1705
|
-
|
|
1706
|
-
<!-- Standard table (key-value style) -->
|
|
1707
|
-
<table class="table-standard">
|
|
1708
|
-
<tbody>
|
|
1709
|
-
<tr>
|
|
1710
|
-
<td>Property</td>
|
|
1711
|
-
<td>Value</td>
|
|
1712
|
-
</tr>
|
|
1713
|
-
</tbody>
|
|
1714
|
-
</table>
|
|
1715
|
-
```
|
|
1716
|
-
|
|
1717
|
-
#### Cell Style Table (Status Tracking)
|
|
1718
|
-
```html
|
|
1719
|
-
<table class="table-cellstyle">
|
|
1720
|
-
<thead>
|
|
1721
|
-
<tr>
|
|
1722
|
-
<th class="completed">Feature A</th>
|
|
1723
|
-
<th class="inprogress">Feature B</th>
|
|
1724
|
-
<th class="missing">Feature C</th>
|
|
1725
|
-
</tr>
|
|
1726
|
-
</thead>
|
|
1727
|
-
<tbody>
|
|
1728
|
-
<tr>
|
|
1729
|
-
<td class="completed">Implementation done</td>
|
|
1730
|
-
<td class="inprogress">Working on it...</td>
|
|
1731
|
-
<td class="missing">Not started</td>
|
|
1732
|
-
</tr>
|
|
1733
|
-
</tbody>
|
|
1734
|
-
</table>
|
|
1735
|
-
```
|
|
1736
|
-
|
|
1737
|
-
**Status Classes:**
|
|
1738
|
-
- `.completed` - Green checkmark icon
|
|
1739
|
-
- `.inprogress` - Clock icon, gray background, italic text
|
|
1740
|
-
- `.missing` - Exclamation icon, transparent bg, disabled text
|
|
1741
|
-
|
|
1742
|
-
#### Table Cell Utilities
|
|
1743
|
-
```html
|
|
1744
|
-
<!-- Fixed width cell -->
|
|
1745
|
-
<td class="td-fixed-width">Limited to 150px</td>
|
|
1746
|
-
|
|
1747
|
-
<!-- Actions cell (right-aligned) -->
|
|
1748
|
-
<td class="action-cell">
|
|
1749
|
-
<button class="btn btn-sm btn-ghost">Edit</button>
|
|
1750
|
-
</td>
|
|
1751
|
-
|
|
1752
|
-
<!-- Title cell (max 500px) -->
|
|
1753
|
-
<td class="title">Long title...</td>
|
|
1754
|
-
|
|
1755
|
-
<!-- Full width cell -->
|
|
1756
|
-
<td class="cell-full-width">Takes all space</td>
|
|
1757
|
-
|
|
1758
|
-
<!-- Text wrapping -->
|
|
1759
|
-
<td class="wrap">This text will wrap</td>
|
|
1760
|
-
<td class="pre">Preserves whitespace</td>
|
|
1761
|
-
```
|
|
1762
|
-
|
|
1763
|
-
#### Interactive Table Rows
|
|
1764
|
-
```html
|
|
1765
|
-
<!-- Hover to highlight row -->
|
|
1766
|
-
<tr class="linked-row">...</tr>
|
|
1767
|
-
|
|
1768
|
-
<!-- Hover to highlight cell -->
|
|
1769
|
-
<td class="linked-cell">...</td>
|
|
1770
|
-
|
|
1771
|
-
<!-- Highlight parent row on child hover -->
|
|
1772
|
-
<tr>
|
|
1773
|
-
<td>
|
|
1774
|
-
<a class="highlight-parent-row" href="#">Link</a>
|
|
1775
|
-
</td>
|
|
1776
|
-
</tr>
|
|
1777
|
-
```
|
|
1778
|
-
|
|
1779
|
-
---
|
|
1780
|
-
|
|
1781
|
-
## List Components
|
|
1782
|
-
|
|
1783
|
-
### Basic List Items
|
|
1784
|
-
|
|
1785
|
-
```html
|
|
1786
|
-
<div class="list-listitems">
|
|
1787
|
-
<div class="listitem">
|
|
1788
|
-
<div class="listitem-title">List item title</div>
|
|
1789
|
-
</div>
|
|
1790
|
-
|
|
1791
|
-
<!-- List item with badge -->
|
|
1792
|
-
<div class="listitem">
|
|
1793
|
-
<div class="listitem-badge">
|
|
1794
|
-
<div class="icon icon-feature"></div>
|
|
1795
|
-
</div>
|
|
1796
|
-
<div class="listitem-title">
|
|
1797
|
-
List-item title
|
|
1798
|
-
<div class="listitem-label">Label</div>
|
|
1799
|
-
</div>
|
|
1800
|
-
<div class="listitem-metrics">
|
|
1801
|
-
<div class="listitem-metric">
|
|
1802
|
-
<div class="icon icon-critical"></div>
|
|
1803
|
-
99
|
|
1804
|
-
</div>
|
|
1805
|
-
<div class="listitem-metric">
|
|
1806
|
-
<div class="icon icon-high"></div>
|
|
1807
|
-
99
|
|
1808
|
-
</div>
|
|
1809
|
-
</div>
|
|
1810
|
-
</div>
|
|
1811
|
-
|
|
1812
|
-
<!-- List item with actions -->
|
|
1813
|
-
<div class="listitem">
|
|
1814
|
-
<div class="listitem-title">List-item with action</div>
|
|
1815
|
-
<div class="listitem-actions">
|
|
1816
|
-
<a class="btn btn-primary">Action</a>
|
|
1817
|
-
</div>
|
|
1818
|
-
</div>
|
|
1819
|
-
|
|
1820
|
-
<!-- Linked list item -->
|
|
1821
|
-
<a class="listitem" href="#">
|
|
1822
|
-
<div class="listitem-title">
|
|
1823
|
-
<span class="icon icon-user-story mr-icon-spacing"></span>
|
|
1824
|
-
Linked list item
|
|
1825
|
-
</div>
|
|
1826
|
-
</a>
|
|
1827
|
-
</div>
|
|
1828
|
-
```
|
|
1829
|
-
|
|
1830
|
-
### List Item Variants
|
|
1831
|
-
|
|
1832
|
-
```html
|
|
1833
|
-
<!-- With action bar -->
|
|
1834
|
-
<div class="listitem with-actionbar">...</div>
|
|
1835
|
-
|
|
1836
|
-
<!-- With footer -->
|
|
1837
|
-
<div class="listitem with-footer">
|
|
1838
|
-
<div class="listitem-title">Title</div>
|
|
1839
|
-
<div class="listitem-footer">Footer content</div>
|
|
1840
|
-
</div>
|
|
1841
|
-
|
|
1842
|
-
<!-- Collapsable list item -->
|
|
1843
|
-
<details class="listitem collapsable">
|
|
1844
|
-
<summary class="listitem-header">
|
|
1845
|
-
<div class="listitem-title">Collapsable Title</div>
|
|
1846
|
-
<div class="btn collapse-btn"></div>
|
|
1847
|
-
</summary>
|
|
1848
|
-
<div class="listitem-content">Hidden content</div>
|
|
1849
|
-
</details>
|
|
1850
|
-
|
|
1851
|
-
<!-- Nested list items -->
|
|
1852
|
-
<div class="listitem nested">
|
|
1853
|
-
<div class="listitem-title">Parent</div>
|
|
1854
|
-
<div class="list-listitems nested">
|
|
1855
|
-
<div class="listitem">Child 1</div>
|
|
1856
|
-
<div class="listitem">Child 2</div>
|
|
1857
|
-
</div>
|
|
1858
|
-
</div>
|
|
1859
|
-
|
|
1860
|
-
<!-- Selectable list item -->
|
|
1861
|
-
<div class="listitem selectable">
|
|
1862
|
-
<input type="checkbox" id="select1">
|
|
1863
|
-
<label for="select1">
|
|
1864
|
-
<div class="listitem-title">Selectable Item</div>
|
|
1865
|
-
</label>
|
|
1866
|
-
</div>
|
|
1867
|
-
|
|
1868
|
-
<!-- White background list item -->
|
|
1869
|
-
<div class="listitem white">...</div>
|
|
1870
|
-
```
|
|
1871
|
-
|
|
1872
|
-
### User Item
|
|
1873
|
-
```html
|
|
1874
|
-
<div class="user-item">
|
|
1875
|
-
<div class="user-item-avatar">
|
|
1876
|
-
<img src="avatar.jpg" alt="User">
|
|
1877
|
-
</div>
|
|
1878
|
-
<div class="user-item-info">
|
|
1879
|
-
<h4 class="user-item-name">Jane Smith</h4>
|
|
1880
|
-
<p class="user-item-email">jane@example.com</p>
|
|
1881
|
-
</div>
|
|
1882
|
-
<div class="user-item-actions">
|
|
1883
|
-
<button class="btn btn-sm btn-secondary">Message</button>
|
|
1884
|
-
</div>
|
|
1885
|
-
</div>
|
|
1886
|
-
```
|
|
1887
|
-
|
|
1888
|
-
### Task/Issue Item
|
|
1889
|
-
```html
|
|
1890
|
-
<div class="task-item">
|
|
1891
|
-
<div class="task-item-header">
|
|
1892
|
-
<h4 class="task-item-title">Fix login bug</h4>
|
|
1893
|
-
<span class="badge badge-danger">High</span>
|
|
1894
|
-
</div>
|
|
1895
|
-
<div class="task-item-body">
|
|
1896
|
-
<p class="task-item-description">Description</p>
|
|
1897
|
-
</div>
|
|
1898
|
-
<div class="task-item-footer">
|
|
1899
|
-
<span class="task-item-meta">Due: Oct 25, 2025</span>
|
|
1900
|
-
</div>
|
|
1901
|
-
</div>
|
|
1902
|
-
```
|
|
1903
|
-
|
|
1904
|
-
---
|
|
1905
|
-
|
|
1906
|
-
## Splitview Components
|
|
1907
|
-
|
|
1908
|
-
Two-pane layout for list and detail views with responsive behavior.
|
|
1909
|
-
|
|
1910
|
-
### Basic Splitview
|
|
1911
|
-
```html
|
|
1912
|
-
<div class="splitview">
|
|
1913
|
-
<div class="splitview-list">
|
|
1914
|
-
<div class="splitview-item">
|
|
1915
|
-
<div class="splitview-item-title">Item 1</div>
|
|
1916
|
-
</div>
|
|
1917
|
-
</div>
|
|
1918
|
-
<div class="splitview-detail">
|
|
1919
|
-
<h2>Detail View</h2>
|
|
1920
|
-
<p>Selected item details</p>
|
|
1921
|
-
</div>
|
|
1922
|
-
</div>
|
|
1923
|
-
```
|
|
1924
|
-
|
|
1925
|
-
### Splitview List Header
|
|
1926
|
-
```html
|
|
1927
|
-
<div class="splitview-list-header">
|
|
1928
|
-
<div class="form-check sm">
|
|
1929
|
-
<input type="checkbox">
|
|
1930
|
-
</div>
|
|
1931
|
-
<h3 class="splitview-list-header-title">18 Bugs</h3>
|
|
1932
|
-
<div class="splitview-list-header-actions">
|
|
1933
|
-
<details class="dropdown-actions dropright">
|
|
1934
|
-
<summary>
|
|
1935
|
-
<a class="link-with-icon" href="">
|
|
1936
|
-
<div class="icon icon-sort-descending"></div>
|
|
1937
|
-
Severity (desc)
|
|
1938
|
-
</a>
|
|
1939
|
-
</summary>
|
|
1940
|
-
<div class="popover-menu">
|
|
1941
|
-
<a class="popover-action" href="#">Sort option 1</a>
|
|
1942
|
-
<a class="popover-action" href="#">Sort option 2</a>
|
|
1943
|
-
</div>
|
|
1944
|
-
</details>
|
|
1945
|
-
<a class="linked-icon" href="">
|
|
1946
|
-
<div class="icon icon-filter"></div>
|
|
1947
|
-
</a>
|
|
1948
|
-
<a class="linked-icon" href="">
|
|
1949
|
-
<div class="icon icon-search"></div>
|
|
1950
|
-
</a>
|
|
1951
|
-
</div>
|
|
1952
|
-
</div>
|
|
1953
|
-
```
|
|
1954
|
-
|
|
1955
|
-
### Splitview Item
|
|
1956
|
-
```html
|
|
1957
|
-
<div class="splitview-list">
|
|
1958
|
-
<div class="splitview-item">
|
|
1959
|
-
<div class="splitview-item-checkbox form-check sm">
|
|
1960
|
-
<input type="checkbox">
|
|
1961
|
-
</div>
|
|
1962
|
-
<div class="splitview-item-icon icon icon-critical"></div>
|
|
1963
|
-
<div class="splitview-item-text">
|
|
1964
|
-
<div class="splitview-item-title">Item title</div>
|
|
1965
|
-
<div class="splitview-item-metainfo">
|
|
1966
|
-
#123321321 | Product Detail Page
|
|
1967
|
-
</div>
|
|
1968
|
-
</div>
|
|
1969
|
-
<div class="splitview-item-status">
|
|
1970
|
-
<div class="status-icon status-submitted"></div>
|
|
1971
|
-
<div class="status-icon status-manager-approved"></div>
|
|
1972
|
-
</div>
|
|
1973
|
-
</div>
|
|
1974
|
-
|
|
1975
|
-
<!-- Selected state -->
|
|
1976
|
-
<div class="splitview-item selected">...</div>
|
|
1977
|
-
</div>
|
|
1978
|
-
```
|
|
1979
|
-
|
|
1980
|
-
### Splitview with Status Groups
|
|
1981
|
-
```html
|
|
1982
|
-
<div class="splitview">
|
|
1983
|
-
<div class="splitview-list">
|
|
1984
|
-
<details class="splitview-group" open>
|
|
1985
|
-
<summary class="splitview-group-header">
|
|
1986
|
-
<h3 class="splitview-group-title">Test Group 1</h3>
|
|
1987
|
-
<i class="icon icon-chevron-down"></i>
|
|
1988
|
-
</summary>
|
|
1989
|
-
|
|
1990
|
-
<div class="splitview-group-status">
|
|
1991
|
-
<div class="status-stepper">
|
|
1992
|
-
<div class="status-step completed">
|
|
1993
|
-
<i class="icon icon-check-thick-centered"></i>
|
|
1994
|
-
3 done
|
|
1995
|
-
</div>
|
|
1996
|
-
<div class="status-step active">
|
|
1997
|
-
<i class="icon icon-sync"></i>
|
|
1998
|
-
Executing
|
|
1999
|
-
</div>
|
|
2000
|
-
<div class="status-step">
|
|
2001
|
-
+ 3 to do
|
|
2002
|
-
</div>
|
|
2003
|
-
</div>
|
|
2004
|
-
</div>
|
|
2005
|
-
|
|
2006
|
-
<div class="splitview-item">...</div>
|
|
2007
|
-
<div class="splitview-item">...</div>
|
|
2008
|
-
|
|
2009
|
-
<button class="splitview-btn">
|
|
2010
|
-
Show 5 dismissed items
|
|
2011
|
-
</button>
|
|
2012
|
-
</details>
|
|
2013
|
-
</div>
|
|
2014
|
-
</div>
|
|
2015
|
-
```
|
|
2016
|
-
|
|
2017
|
-
### Collapsable Splitview Item
|
|
2018
|
-
```html
|
|
2019
|
-
<details class="splitview-item collapsable">
|
|
2020
|
-
<summary class="splitview-item-header">
|
|
2021
|
-
<div class="splitview-item-title">Collapsable Item</div>
|
|
2022
|
-
<div class="btn collapse-btn"></div>
|
|
2023
|
-
</summary>
|
|
2024
|
-
<div class="splitview-item-content">
|
|
2025
|
-
Expanded content
|
|
2026
|
-
</div>
|
|
2027
|
-
</details>
|
|
2028
|
-
```
|
|
2029
|
-
|
|
2030
|
-
---
|
|
2031
|
-
|
|
2032
|
-
## Chat Components
|
|
2033
|
-
|
|
2034
|
-
Comprehensive chat interface components with full dark mode support.
|
|
2035
|
-
|
|
2036
|
-
### Chat Message List
|
|
2037
|
-
```html
|
|
2038
|
-
<div class="list-chat-messages">
|
|
2039
|
-
<div class="chat-message-item">
|
|
2040
|
-
<img src="avatar.jpg" alt="User" class="chat-avatar">
|
|
2041
|
-
|
|
2042
|
-
<div class="chat-header">
|
|
2043
|
-
<span class="chat-title">
|
|
2044
|
-
<span class="chat-author">John Doe</span>
|
|
2045
|
-
</span>
|
|
2046
|
-
<span class="chat-time">2 hours ago</span>
|
|
2047
|
-
</div>
|
|
2048
|
-
|
|
2049
|
-
<div class="chat-message">
|
|
2050
|
-
<p>This is a chat message with some content.</p>
|
|
2051
|
-
</div>
|
|
2052
|
-
|
|
2053
|
-
<div class="chat-actions">
|
|
2054
|
-
<button class="btn btn-ghost btn-sm">
|
|
2055
|
-
<i class="icon icon-reply"></i>
|
|
2056
|
-
</button>
|
|
2057
|
-
</div>
|
|
2058
|
-
</div>
|
|
2059
|
-
</div>
|
|
2060
|
-
```
|
|
2061
|
-
|
|
2062
|
-
### Full Width Chat
|
|
2063
|
-
```html
|
|
2064
|
-
<div class="list-chat-messages full-width">
|
|
2065
|
-
<div class="chat-message-item">...</div>
|
|
2066
|
-
</div>
|
|
2067
|
-
```
|
|
2068
|
-
|
|
2069
|
-
### Chat Message Variants
|
|
2070
|
-
|
|
2071
|
-
```html
|
|
2072
|
-
<!-- Announcement message -->
|
|
2073
|
-
<div class="chat-message">
|
|
2074
|
-
<div class="message-banner announcement">
|
|
2075
|
-
System Announcement: Maintenance scheduled
|
|
2076
|
-
</div>
|
|
2077
|
-
<p>The system will be down for maintenance on Saturday.</p>
|
|
2078
|
-
</div>
|
|
2079
|
-
|
|
2080
|
-
<!-- Mentioned message -->
|
|
2081
|
-
<div class="chat-message">
|
|
2082
|
-
<div class="message-banner mentioned">
|
|
2083
|
-
<span class="text-mentioned">@YourName</span> mentioned you
|
|
2084
|
-
</div>
|
|
2085
|
-
<p>Hey, can you take a look at this?</p>
|
|
2086
|
-
</div>
|
|
2087
|
-
```
|
|
2088
|
-
|
|
2089
|
-
### Chat Window Component
|
|
2090
|
-
```html
|
|
2091
|
-
<div class="chat-window">
|
|
2092
|
-
<div class="chat-window-header">
|
|
2093
|
-
<h3>Chat</h3>
|
|
2094
|
-
</div>
|
|
2095
|
-
<div class="chat-window-messages">
|
|
2096
|
-
<div class="list-chat-messages">
|
|
2097
|
-
<!-- Messages -->
|
|
2098
|
-
</div>
|
|
2099
|
-
</div>
|
|
2100
|
-
<div class="chat-window-input">
|
|
2101
|
-
<textarea class="form-control" placeholder="Type a message..."></textarea>
|
|
2102
|
-
<button class="btn btn-primary">Send</button>
|
|
2103
|
-
</div>
|
|
2104
|
-
</div>
|
|
2105
|
-
```
|
|
2106
|
-
|
|
2107
|
-
---
|
|
2108
|
-
|
|
2109
|
-
## Chart Components
|
|
2110
|
-
|
|
2111
|
-
The design system integrates ECharts for data visualization with design system colors.
|
|
2112
|
-
|
|
2113
|
-
### Chart Container
|
|
2114
|
-
```html
|
|
2115
|
-
<div class="echarts-container" id="my-chart"></div>
|
|
2116
|
-
```
|
|
2117
|
-
|
|
2118
|
-
### Chart Types
|
|
2119
|
-
|
|
2120
|
-
#### Horizontal Bar Chart
|
|
2121
|
-
```javascript
|
|
2122
|
-
import { createChartHorizontal } from './modules/echarts_horizontal';
|
|
2123
|
-
|
|
2124
|
-
createChartHorizontal(
|
|
2125
|
-
"element-id", // Target element ID
|
|
2126
|
-
dataArray, // Data labels array
|
|
2127
|
-
seriesArray, // Series configuration
|
|
2128
|
-
showLegend, // Boolean: show legend
|
|
2129
|
-
labelColor, // Color for labels
|
|
2130
|
-
valueColor // Color for values
|
|
2131
|
-
);
|
|
2132
|
-
```
|
|
2133
|
-
|
|
2134
|
-
#### Donut Chart
|
|
2135
|
-
```javascript
|
|
2136
|
-
import { createChartDonut } from './modules/echarts_donut';
|
|
2137
|
-
|
|
2138
|
-
createChartDonut(
|
|
2139
|
-
"element-id", // Target element ID
|
|
2140
|
-
dataArray, // Data array with values
|
|
2141
|
-
valueText, // Center value text
|
|
2142
|
-
labelText, // Center label text
|
|
2143
|
-
showLegend, // Boolean: show legend
|
|
2144
|
-
labelColor, // Color for labels
|
|
2145
|
-
valueColor // Color for values
|
|
2146
|
-
);
|
|
2147
|
-
```
|
|
2148
|
-
|
|
2149
|
-
#### Vertical Bar Chart
|
|
2150
|
-
```javascript
|
|
2151
|
-
import { createChartVertical } from './modules/echarts_vertical';
|
|
2152
|
-
```
|
|
2153
|
-
|
|
2154
|
-
#### Line Chart
|
|
2155
|
-
```javascript
|
|
2156
|
-
import { createChartLine } from './modules/echarts_line';
|
|
2157
|
-
```
|
|
2158
|
-
|
|
2159
|
-
#### Area Chart
|
|
2160
|
-
```javascript
|
|
2161
|
-
import { createChartArea } from './modules/echarts_area';
|
|
2162
|
-
```
|
|
2163
|
-
|
|
2164
|
-
#### Gauge Chart
|
|
2165
|
-
```javascript
|
|
2166
|
-
import { createChartGauge } from './modules/echarts_gauge';
|
|
2167
|
-
```
|
|
2168
|
-
|
|
2169
|
-
### Chart Colors
|
|
2170
|
-
```javascript
|
|
2171
|
-
// Available chart colors
|
|
2172
|
-
export const colorCritical = '#FF3131';
|
|
2173
|
-
export const colorHigh = '#d8ce0d';
|
|
2174
|
-
export const colorLow = '#9fa2a8';
|
|
2175
|
-
export const colorVisual = '#f48d21';
|
|
2176
|
-
export const colorContent = '#326dd1';
|
|
2177
|
-
export const colorUX = '#263340';
|
|
2178
|
-
export const colorSuccess = '#8cbd24';
|
|
2179
|
-
export const colorDanger = '#FF3131';
|
|
2180
|
-
export const colorNeutral = '#e6e6e6';
|
|
2181
|
-
export const colorInfo = '#326dd1';
|
|
2182
|
-
export const colorBlueLight = '#21bef4';
|
|
2183
|
-
```
|
|
2184
|
-
|
|
2185
|
-
### Chart Data Examples
|
|
2186
|
-
```javascript
|
|
2187
|
-
// Bug distribution data
|
|
2188
|
-
export let dataBugs = [
|
|
2189
|
-
{ value: 79, name: 'Critical', itemStyle: {color: colorCritical}},
|
|
2190
|
-
{ value: 37, name: 'High', itemStyle: {color: colorHigh}},
|
|
2191
|
-
{ value: 19, name: 'Low', itemStyle: {color: colorLow}},
|
|
2192
|
-
];
|
|
2193
|
-
|
|
2194
|
-
// Test case status
|
|
2195
|
-
export let dataTestCases = [
|
|
2196
|
-
{ value: 50, name: 'Passed', itemStyle: {color: colorSuccess}},
|
|
2197
|
-
{ value: 23, name: 'Failed', itemStyle: {color: colorDanger}},
|
|
2198
|
-
{ value: 27, name: 'Open', itemStyle: {color: colorNeutral}},
|
|
2199
|
-
];
|
|
2200
|
-
```
|
|
2201
|
-
|
|
2202
|
-
---
|
|
2203
|
-
|
|
2204
|
-
## Status & Progress Components
|
|
2205
|
-
|
|
2206
|
-
### Status Stepper
|
|
2207
|
-
|
|
2208
|
-
A horizontal stepper component for visualizing multi-step processes.
|
|
2209
|
-
|
|
2210
|
-
#### Icon-based Status Stepper
|
|
2211
|
-
```html
|
|
2212
|
-
<div class="status-stepper">
|
|
2213
|
-
<div class="status-step completed">
|
|
2214
|
-
<div class="icon icon-check-thick-centered"></div>
|
|
2215
|
-
3 done
|
|
2216
|
-
</div>
|
|
2217
|
-
<div class="status-step active">
|
|
2218
|
-
<div class="icon icon-sync"></div>
|
|
2219
|
-
Executing checks
|
|
2220
|
-
</div>
|
|
2221
|
-
<div class="status-step">
|
|
2222
|
-
+ 3 to do
|
|
2223
|
-
</div>
|
|
2224
|
-
</div>
|
|
2225
|
-
```
|
|
2226
|
-
|
|
2227
|
-
#### Counter-based Status Stepper
|
|
2228
|
-
```html
|
|
2229
|
-
<div class="status-stepper">
|
|
2230
|
-
<div class="status-step completed">
|
|
2231
|
-
<div class="counter">99</div>
|
|
2232
|
-
Completed
|
|
2233
|
-
</div>
|
|
2234
|
-
<div class="status-step active">
|
|
2235
|
-
<div class="counter">12</div>
|
|
2236
|
-
Active
|
|
2237
|
-
</div>
|
|
2238
|
-
<div class="status-step">
|
|
2239
|
-
<div class="counter">5</div>
|
|
2240
|
-
Pending
|
|
2241
|
-
</div>
|
|
2242
|
-
</div>
|
|
2243
|
-
```
|
|
2244
|
-
|
|
2245
|
-
**Component Classes:**
|
|
2246
|
-
- `.status-stepper` - Container (flex row, items-stretch, full width)
|
|
2247
|
-
- `.status-step` - Individual step (flex row, centered, rounded, px-md py-xs, bg-black)
|
|
2248
|
-
- `.status-step.active` - Active step (grow-1, white text, bg-gray-750)
|
|
2249
|
-
- `.status-step.completed` - Completed state (can combine with custom styling)
|
|
2250
|
-
- `.status-step .icon` - Icon within step (mr-xs, text-label-color)
|
|
2251
|
-
- `.status-step .counter` - Numeric counter (pr-xs, text-lg, font-bold)
|
|
2252
|
-
|
|
2253
|
-
---
|
|
2254
|
-
|
|
2255
|
-
## Utility Components
|
|
2256
|
-
|
|
2257
|
-
### Tags
|
|
2258
|
-
```html
|
|
2259
|
-
<div class="list-tags">
|
|
2260
|
-
<!-- Basic tag -->
|
|
2261
|
-
<div class="tag">Tag</div>
|
|
2262
|
-
|
|
2263
|
-
<!-- Small tag -->
|
|
2264
|
-
<div class="tag sm">Tag sm</div>
|
|
2265
|
-
|
|
2266
|
-
<!-- Focus group tag -->
|
|
2267
|
-
<div class="tag focus-group">Focus-group</div>
|
|
2268
|
-
|
|
2269
|
-
<!-- Verified tag -->
|
|
2270
|
-
<div class="tag teamleader-verified">
|
|
2271
|
-
<div class="icon icon-verify-check mr-xxs"></div>
|
|
2272
|
-
TL
|
|
2273
|
-
</div>
|
|
2274
|
-
|
|
2275
|
-
<!-- Status tags -->
|
|
2276
|
-
<div class="tag success">
|
|
2277
|
-
<div class="icon icon-check-circle"></div>
|
|
2278
|
-
Success
|
|
2279
|
-
</div>
|
|
2280
|
-
<div class="tag danger">
|
|
2281
|
-
<div class="icon icon-cross-circle"></div>
|
|
2282
|
-
Danger
|
|
2283
|
-
</div>
|
|
2284
|
-
<div class="tag pending">
|
|
2285
|
-
<div class="icon icon-sync"></div>
|
|
2286
|
-
Pending
|
|
2287
|
-
</div>
|
|
2288
|
-
</div>
|
|
2289
|
-
```
|
|
2290
|
-
|
|
2291
|
-
### Tag with Popover
|
|
2292
|
-
```html
|
|
2293
|
-
<details class="popover-wrapper">
|
|
2294
|
-
<summary>
|
|
2295
|
-
<div class="tag popover-tag">
|
|
2296
|
-
<div class="icon icon-clock"></div>
|
|
2297
|
-
Popover-tag
|
|
2298
|
-
</div>
|
|
2299
|
-
</summary>
|
|
2300
|
-
<div class="popover-menu info">
|
|
2301
|
-
<div class="popover-title">Popover title</div>
|
|
2302
|
-
<div class="popover-content">Content...</div>
|
|
2303
|
-
<div class="popover-actions">
|
|
2304
|
-
<div class="btn btn-sm btn-inverted">Action</div>
|
|
2305
|
-
</div>
|
|
2306
|
-
</div>
|
|
2307
|
-
</details>
|
|
2308
|
-
|
|
2309
|
-
<!-- Light popover tag -->
|
|
2310
|
-
<div class="tag popover-tag light">...</div>
|
|
2311
|
-
|
|
2312
|
-
<!-- Colored popover tags -->
|
|
2313
|
-
<div class="tag popover-tag bg-info text-white">...</div>
|
|
2314
|
-
<div class="tag popover-tag bg-black text-white">...</div>
|
|
2315
|
-
<div class="tag popover-tag bg-danger text-white">...</div>
|
|
2316
|
-
```
|
|
2317
|
-
|
|
2318
|
-
### Info Popover
|
|
2319
|
-
```html
|
|
2320
|
-
<details class="popover-wrapper">
|
|
2321
|
-
<summary>
|
|
2322
|
-
<div class="btn btn-sm btn-square">
|
|
2323
|
-
<div class="icon icon-info"></div>
|
|
2324
|
-
</div>
|
|
2325
|
-
</summary>
|
|
2326
|
-
<div class="popover-menu info">
|
|
2327
|
-
<div class="popover-title">Popover title</div>
|
|
2328
|
-
<div class="popover-content">Popover content...</div>
|
|
2329
|
-
<div class="text-with-icon mt-xs">
|
|
2330
|
-
<div class="icon icon-lock text-disabled mr-icon-spacing"></div>
|
|
2331
|
-
<div class="text-sm">0/100 Completed</div>
|
|
2332
|
-
</div>
|
|
2333
|
-
<div class="text-with-icon mt-xs">
|
|
2334
|
-
<div class="icon icon-unlock text-success mr-icon-spacing"></div>
|
|
2335
|
-
<div class="text-sm">50/50 Done</div>
|
|
2336
|
-
</div>
|
|
2337
|
-
<div class="popover-actions">
|
|
2338
|
-
<div class="btn btn-sm btn-inverted">Action</div>
|
|
2339
|
-
</div>
|
|
2340
|
-
</div>
|
|
2341
|
-
</details>
|
|
2342
|
-
```
|
|
2343
|
-
|
|
2344
|
-
### Pagination
|
|
2345
|
-
```html
|
|
2346
|
-
<nav class="pagy-bootstrap nav">
|
|
2347
|
-
<ul class="pagination">
|
|
2348
|
-
<li class="page-item prev">
|
|
2349
|
-
<a class="page-link" href="#"><</a>
|
|
2350
|
-
</li>
|
|
2351
|
-
<li class="page-item">
|
|
2352
|
-
<a class="page-link" href="#">1</a>
|
|
2353
|
-
</li>
|
|
2354
|
-
<li class="page-item active">
|
|
2355
|
-
<a class="page-link" href="#">2</a>
|
|
2356
|
-
</li>
|
|
2357
|
-
<li class="page-item">
|
|
2358
|
-
<a class="page-link" href="#">3</a>
|
|
2359
|
-
</li>
|
|
2360
|
-
<li class="page-item next disabled">
|
|
2361
|
-
<a class="page-link" href="#">></a>
|
|
2362
|
-
</li>
|
|
2363
|
-
</ul>
|
|
2364
|
-
</nav>
|
|
2365
|
-
```
|
|
2366
|
-
|
|
2367
|
-
### Badges
|
|
2368
|
-
```html
|
|
2369
|
-
<span class="badge badge-primary">New</span>
|
|
2370
|
-
<span class="badge badge-success">Active</span>
|
|
2371
|
-
<span class="badge badge-danger">Urgent</span>
|
|
2372
|
-
<span class="badge badge-warning">Pending</span>
|
|
2373
|
-
<span class="badge badge-info">Info</span>
|
|
2374
|
-
```
|
|
2375
|
-
|
|
2376
|
-
### Icon Sizes
|
|
2377
|
-
```html
|
|
2378
|
-
<i class="icon icon-star text-icon-xxxs"></i> <!-- 10px -->
|
|
2379
|
-
<i class="icon icon-star text-icon-xxs"></i> <!-- 0.625rem -->
|
|
2380
|
-
<i class="icon icon-star text-icon-xs"></i> <!-- 16px -->
|
|
2381
|
-
<i class="icon icon-star text-icon-sm"></i> <!-- 18px -->
|
|
2382
|
-
<i class="icon icon-star text-icon"></i> <!-- 20px - default -->
|
|
2383
|
-
<i class="icon icon-star text-icon-lg"></i> <!-- 40px -->
|
|
2384
|
-
<i class="icon icon-star text-icon-xl"></i> <!-- 60px -->
|
|
2385
|
-
<i class="icon icon-star text-icon-xxl"></i> <!-- 90px -->
|
|
2386
|
-
```
|
|
2387
|
-
|
|
2388
|
-
### Text with Icon
|
|
2389
|
-
```html
|
|
2390
|
-
<div class="text-with-icon">
|
|
2391
|
-
<div class="icon icon-check text-success mr-icon-spacing"></div>
|
|
2392
|
-
<span>Text with icon</span>
|
|
2393
|
-
</div>
|
|
2394
|
-
|
|
2395
|
-
<div class="link-with-icon">
|
|
2396
|
-
<div class="icon icon-external-link mr-icon-spacing"></div>
|
|
2397
|
-
<a href="#">Link with icon</a>
|
|
2398
|
-
</div>
|
|
2399
|
-
```
|
|
2400
|
-
|
|
2401
|
-
### Description List
|
|
2402
|
-
```html
|
|
2403
|
-
<dl class="description-list">
|
|
2404
|
-
<dt>Term</dt>
|
|
2405
|
-
<dd>Definition</dd>
|
|
2406
|
-
<dt>Another term</dt>
|
|
2407
|
-
<dd>Another definition</dd>
|
|
2408
|
-
</dl>
|
|
2409
|
-
|
|
2410
|
-
<!-- Inline description list -->
|
|
2411
|
-
<dl class="list-inline">
|
|
2412
|
-
<dt>Property</dt>
|
|
2413
|
-
<dd>Value</dd>
|
|
2414
|
-
</dl>
|
|
2415
|
-
```
|
|
2416
|
-
|
|
2417
|
-
---
|
|
2418
|
-
|
|
2419
|
-
## AgenticQA Components
|
|
2420
|
-
|
|
2421
|
-
Comprehensive component library specifically designed for the AgenticQA platform. These components provide AI-driven quality assurance workflow interfaces with sophisticated chat, progress tracking, and detailed testing result displays.
|
|
2422
|
-
|
|
2423
|
-
**View Live Examples:** `http://localhost:8080/agenticqa/`
|
|
2424
|
-
|
|
2425
|
-
### Recent AgenticQA Updates (February 2026)
|
|
2426
|
-
|
|
2427
|
-
- ✨ **Enhanced Chat Components**: Improved collapsable chat messages with better visual hierarchy
|
|
2428
|
-
- ✨ **Splitview Items**: Advanced component for displaying grouped checks with status tracking and turbo-frame support
|
|
2429
|
-
- 🎯 **Form Row Tables**: Grid-based table with integrated form controls for inline editing
|
|
2430
|
-
- 📊 **Grid Tables**: Flexible grid-based table layout with URL collapsables and action menus
|
|
2431
|
-
- 📋 **List Items**: Collapsable list items with attachments support for AI screenshots
|
|
2432
|
-
- 🎨 **Chat Form Component**: Specialized form for check re-runs with additional instructions
|
|
2433
|
-
- 🔄 **Status Stepper**: Progress tracking component showing completed, active, and pending states
|
|
2434
|
-
- 📱 **Responsive Layouts**: All components optimized for mobile and desktop viewing
|
|
2435
|
-
- 🌙 **Dark Mode Support**: Full dark mode styling across all AgenticQA components
|
|
2436
|
-
|
|
2437
|
-
---
|
|
2438
|
-
|
|
2439
|
-
### AgenticQA Page Header
|
|
2440
|
-
|
|
2441
|
-
**Purpose:** Display session/test details with metadata and action buttons. Includes optional chart display for progress visualization.
|
|
2442
|
-
|
|
2443
|
-
**Use Cases:**
|
|
2444
|
-
- Test session overview with metadata (creation date, last run, session ID)
|
|
2445
|
-
- Test suite information and status display
|
|
2446
|
-
- Session control actions (start test, re-run tests, show report)
|
|
2447
|
-
- Optional progress chart visualization
|
|
2448
|
-
|
|
2449
|
-
**Key Classes:**
|
|
2450
|
-
- `.page-header` - Main container
|
|
2451
|
-
- `.page-maincard` - Primary information card (use with `.p-card-padding`)
|
|
2452
|
-
- `.page-session-title` - Large session title text
|
|
2453
|
-
- `.page-meta-info` - Definition list for metadata display
|
|
2454
|
-
- `.page-actions` - Container for action buttons
|
|
2455
|
-
- `.with-chart` - Modifier for charts display
|
|
2456
|
-
- `.page-chart` - Chart container
|
|
2457
|
-
- `.btn-main` - Main action button (primary CTA)
|
|
2458
|
-
|
|
2459
|
-
**HTML Structure:**
|
|
2460
|
-
```html
|
|
2461
|
-
<div class="page-header">
|
|
2462
|
-
<div class="card page-maincard p-card-padding">
|
|
2463
|
-
<h1 class="text-card-header">Session details</h1>
|
|
2464
|
-
<h2 class="page-session-title">Test Session title</h2>
|
|
2465
|
-
<dl class="page-meta-info">
|
|
2466
|
-
<dt class="label">Created on:</dt>
|
|
2467
|
-
<dd>2025-07-23 19:11 10:45 AM</dd>
|
|
2468
|
-
<dt class="label">Last test:</dt>
|
|
2469
|
-
<dd>2025-07-23 19:11 10:45 AM</dd>
|
|
2470
|
-
<dt class="label">ID:</dt>
|
|
2471
|
-
<dd>321456987</dd>
|
|
2472
|
-
<dt class="label">URL:</dt>
|
|
2473
|
-
<dd><a class="label" href="">Test Suite name</a></dd>
|
|
2474
|
-
<dt class="label">Status:</dt>
|
|
2475
|
-
<dd class="text-white">Running</dd>
|
|
2476
|
-
</dl>
|
|
2477
|
-
</div>
|
|
2478
|
-
<div class="page-actions">
|
|
2479
|
-
<a class="btn btn-primary btn-main" href="">
|
|
2480
|
-
<span class="icon icon-test-running-xl"></span>
|
|
2481
|
-
Start test
|
|
2482
|
-
</a>
|
|
2483
|
-
</div>
|
|
2484
|
-
</div>
|
|
2485
|
-
```
|
|
2486
|
-
|
|
2487
|
-
**With Chart:**
|
|
2488
|
-
```html
|
|
2489
|
-
<div class="page-header with-chart">
|
|
2490
|
-
<!-- ... main card ... -->
|
|
2491
|
-
<div class="page-chart card p-card-padding">
|
|
2492
|
-
<div class="echarts-container" id="echarts-testinator"></div>
|
|
2493
|
-
</div>
|
|
2494
|
-
<div class="page-actions">
|
|
2495
|
-
<a class="btn btn-primary btn-main" href="">
|
|
2496
|
-
<span class="icon icon-review-xl"></span>
|
|
2497
|
-
Show report
|
|
2498
|
-
</a>
|
|
2499
|
-
</div>
|
|
2500
|
-
</div>
|
|
2501
|
-
```
|
|
2502
|
-
|
|
2503
|
-
---
|
|
2504
|
-
|
|
2505
|
-
### AgenticQA Chat Components
|
|
2506
|
-
|
|
2507
|
-
**Purpose:** Display conversational exchanges between users and the AI system for test instructions, feedback, and results discussion.
|
|
2508
|
-
|
|
2509
|
-
#### Chat Messages (Standard)
|
|
2510
|
-
|
|
2511
|
-
Display chat message items in a thread format with user identification and timestamps.
|
|
2512
|
-
|
|
2513
|
-
**Use Cases:**
|
|
2514
|
-
- AI justifications for test results
|
|
2515
|
-
- User feedback and instructions
|
|
2516
|
-
- Test check descriptions and explanations
|
|
2517
|
-
- Bidirectional message threads
|
|
2518
|
-
|
|
2519
|
-
**Key Classes:**
|
|
2520
|
-
- `.list-chat-messages` - Container for message list
|
|
2521
|
-
- `.chat-message-item` - Individual message wrapper
|
|
2522
|
-
- `.your-message` - Modifier for user messages (right-aligned)
|
|
2523
|
-
- `.chat-avatar` - User profile image
|
|
2524
|
-
- `.chat-header` - Message header with title and timestamp
|
|
2525
|
-
- `.chat-title` - Message title/label
|
|
2526
|
-
- `.chat-message` - Message body content
|
|
2527
|
-
- `.collapsable` - Modifier for expandable messages
|
|
2528
|
-
- `.chat-action-row` - Container for action buttons after messages
|
|
2529
|
-
|
|
2530
|
-
**HAML Structure:**
|
|
2531
|
-
```haml
|
|
2532
|
-
.list-chat-messages.full-width
|
|
2533
|
-
.chat-message-item
|
|
2534
|
-
%img.chat-avatar{src:"/assets/images/profilepic_testinator.png"}
|
|
2535
|
-
.chat-header
|
|
2536
|
-
%span.chat-title.label Justification
|
|
2537
|
-
%span.label 5 mins ago
|
|
2538
|
-
.chat-message
|
|
2539
|
-
Here's a message with analysis...
|
|
2540
|
-
.chat-message-item.your-message
|
|
2541
|
-
%img.chat-avatar{src:"/assets/images/placeholders/profile_supergirl.png"}
|
|
2542
|
-
.chat-header
|
|
2543
|
-
%span.chat-title.label Your message
|
|
2544
|
-
%span.label 5 mins ago
|
|
2545
|
-
.chat-message
|
|
2546
|
-
Here's your feedback...
|
|
2547
|
-
.chat-action-row
|
|
2548
|
-
%a.btn.btn-primary.rounded-full re-run check
|
|
2549
|
-
%a.btn.btn-secondary.rounded-full update check
|
|
2550
|
-
```
|
|
2551
|
-
|
|
2552
|
-
#### Collapsable Chat Messages
|
|
2553
|
-
|
|
2554
|
-
Expandable chat messages for long content with `<details>` element.
|
|
2555
|
-
|
|
2556
|
-
**Use Cases:**
|
|
2557
|
-
- Long AI justifications or explanations
|
|
2558
|
-
- Detailed test results or error messages
|
|
2559
|
-
- Optional content expansion to save space
|
|
2560
|
-
|
|
2561
|
-
**Key Classes:**
|
|
2562
|
-
- `.collapsable` - Modifier for expandable messages
|
|
2563
|
-
- `details` - HTML details element for collapse functionality
|
|
2564
|
-
- `.chat-header` - Summary header inside details
|
|
2565
|
-
|
|
2566
|
-
```haml
|
|
2567
|
-
.chat-message-item.collapsable
|
|
2568
|
-
%img.chat-avatar{src:"/assets/images/profilepic_testinator.png"}
|
|
2569
|
-
%details
|
|
2570
|
-
%summary.chat-header
|
|
2571
|
-
%span.chat-title.label Collapsable message
|
|
2572
|
-
%span.label 5 mins ago
|
|
2573
|
-
.chat-message
|
|
2574
|
-
Here's a long message with extensive lorem ipsum...
|
|
2575
|
-
```
|
|
2576
|
-
|
|
2577
|
-
#### Chat History
|
|
2578
|
-
|
|
2579
|
-
Collapsable container for viewing full conversation history.
|
|
2580
|
-
|
|
2581
|
-
**Purpose:** Show/hide complete chat thread to reduce visual clutter while maintaining access to full context.
|
|
2582
|
-
|
|
2583
|
-
**Use Cases:**
|
|
2584
|
-
- Full conversation history display
|
|
2585
|
-
- Context for test decisions
|
|
2586
|
-
- Audit trail of AI reasoning
|
|
2587
|
-
|
|
2588
|
-
```haml
|
|
2589
|
-
.card.p-card-padding
|
|
2590
|
-
%details.chat-history-collapsable
|
|
2591
|
-
%summary.chat-history-header
|
|
2592
|
-
.chat-history-title Show complete history
|
|
2593
|
-
.list-chat-messages.full-width
|
|
2594
|
-
.chat-message-item
|
|
2595
|
-
%img.chat-avatar{src:"/assets/images/profilepic_testinator.png"}
|
|
2596
|
-
.chat-header
|
|
2597
|
-
%span.chat-title.label Justification
|
|
2598
|
-
%span.label 5 mins ago
|
|
2599
|
-
.chat-message
|
|
2600
|
-
Historical message content...
|
|
2601
|
-
```
|
|
2602
|
-
|
|
2603
|
-
#### Chat Form
|
|
2604
|
-
|
|
2605
|
-
**Purpose:** Allow users to re-run checks or update test parameters with additional instructions.
|
|
2606
|
-
|
|
2607
|
-
**Use Cases:**
|
|
2608
|
-
- Re-running a failed check with new instructions
|
|
2609
|
-
- Providing additional context for test execution
|
|
2610
|
-
- Sending feedback to AI system
|
|
2611
|
-
|
|
2612
|
-
**Key Classes:**
|
|
2613
|
-
- `.chat-form-row` - Container for form
|
|
2614
|
-
- `.chat-form` - Form element
|
|
2615
|
-
- `.form-actions` - Button container
|
|
2616
|
-
|
|
2617
|
-
```haml
|
|
2618
|
-
.chat-form-row
|
|
2619
|
-
%form.chat-form
|
|
2620
|
-
%h5.text-card-header.mb-xxs Re-Run this check
|
|
2621
|
-
%p.font-light.mb-md Add additional instructions for re-running this check.
|
|
2622
|
-
%textarea.form-control{placeholder:"Add your instructions or feedback"}
|
|
2623
|
-
.form-actions
|
|
2624
|
-
%a.btn.btn-primary.rounded-full
|
|
2625
|
-
%span.icon.icon-sync.mr-icon-spacing
|
|
2626
|
-
re-run check
|
|
2627
|
-
%button.btn.btn-secondary.rounded-full Cancel
|
|
2628
|
-
```
|
|
5
|
+
The full reference has been split into focused topic files in `ai-reference/` to save tokens. Load only the file(s) you need.
|
|
2629
6
|
|
|
2630
7
|
---
|
|
2631
8
|
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
**Purpose:** Display progress of test execution with completed, active, and pending states.
|
|
2635
|
-
|
|
2636
|
-
**Use Cases:**
|
|
2637
|
-
- Overall progress tracking in splitview
|
|
2638
|
-
- Check execution status summary
|
|
2639
|
-
- Visual progress indicator
|
|
2640
|
-
|
|
2641
|
-
**Key Classes:**
|
|
2642
|
-
- `.status-stepper` - Main container
|
|
2643
|
-
- `.status-step` - Individual step
|
|
2644
|
-
- `.completed` - Modifier for completed steps
|
|
2645
|
-
- `.active` - Modifier for active step
|
|
2646
|
-
- `.counter` - Optional counter display
|
|
2647
|
-
- `.icon` - Status icon
|
|
2648
|
-
|
|
2649
|
-
**HAML Structure:**
|
|
2650
|
-
```haml
|
|
2651
|
-
.status-stepper
|
|
2652
|
-
.status-step.completed
|
|
2653
|
-
.icon.icon-check-thick-centered
|
|
2654
|
-
3 done
|
|
2655
|
-
.status-step.active
|
|
2656
|
-
.icon.icon-sync
|
|
2657
|
-
Executing checks
|
|
2658
|
-
.status-step
|
|
2659
|
-
+ 3 to do
|
|
2660
|
-
```
|
|
2661
|
-
|
|
2662
|
-
**With Counters:**
|
|
2663
|
-
```haml
|
|
2664
|
-
.status-stepper
|
|
2665
|
-
.status-step.completed
|
|
2666
|
-
.counter 99
|
|
2667
|
-
Completed
|
|
2668
|
-
.status-step.active
|
|
2669
|
-
.counter 99
|
|
2670
|
-
Active
|
|
2671
|
-
.status-step
|
|
2672
|
-
.counter 99
|
|
2673
|
-
Initial
|
|
2674
|
-
```
|
|
2675
|
-
|
|
2676
|
-
---
|
|
2677
|
-
|
|
2678
|
-
### AgenticQA Splitview Components
|
|
2679
|
-
|
|
2680
|
-
**Purpose:** Display grouped checks and their individual test results in an expandable/collapsable interface.
|
|
2681
|
-
|
|
2682
|
-
**Use Cases:**
|
|
2683
|
-
- List of checks for a specific URL/page
|
|
2684
|
-
- Detailed check results with status indicators
|
|
2685
|
-
- Grouped by page/URL for organization
|
|
2686
|
-
- Turbo-frame integration for dynamic updates
|
|
2687
|
-
|
|
2688
|
-
**Key Classes:**
|
|
2689
|
-
- `.splitview-group` - Collapsable group container
|
|
2690
|
-
- `.splitview-item` - Individual check item
|
|
2691
|
-
- `.splitview-item-icon` - Status icon
|
|
2692
|
-
- `.splitview-item-text` - Check description
|
|
2693
|
-
- `.splitview-item-title` - URL or group title
|
|
2694
|
-
- `.splitview-item-status` - Status label/icon
|
|
2695
|
-
- `.splitview-group-status` - Group-level status stepper
|
|
2696
|
-
- `.selected` - Modifier for selected item
|
|
2697
|
-
- `.unread` - Modifier for unread items
|
|
2698
|
-
- `.text-with-icon` - Icon + text combination
|
|
2699
|
-
- `.splitview-btn` - Show more button
|
|
2700
|
-
- `.turbo-frame` - Turbo frame wrapper
|
|
2701
|
-
|
|
2702
|
-
**Status Icons:**
|
|
2703
|
-
- `.icon-check-circle-filled.success` - Passed check
|
|
2704
|
-
- `.icon-cross-circle-filled.danger` - Failed check
|
|
2705
|
-
- `.icon-blocked.blocked` - Blocked/skipped check
|
|
2706
|
-
- `.icon-sync.pending` - Pending/executing check
|
|
2707
|
-
- `.icon-circle-empty` - Not started/placeholder
|
|
2708
|
-
|
|
2709
|
-
**HAML Structure:**
|
|
2710
|
-
```haml
|
|
2711
|
-
%details.splitview-group
|
|
2712
|
-
%summary.splitview-item.unread
|
|
2713
|
-
.splitview-item-icon.icon.icon-circle-empty.text-chart-empty
|
|
2714
|
-
.splitview-item-text
|
|
2715
|
-
.splitview-item-title https://www.example.com/product
|
|
2716
|
-
.splitview-item-status
|
|
2717
|
-
.text-with-icon
|
|
2718
|
-
.icon.icon-sync
|
|
2719
|
-
executing checks
|
|
2720
|
-
.splitview-group-status.status-stepper
|
|
2721
|
-
.status-step.completed
|
|
2722
|
-
.icon.icon-check-thick-centered
|
|
2723
|
-
3 done
|
|
2724
|
-
.status-step.active
|
|
2725
|
-
.icon.icon-sync
|
|
2726
|
-
Executing checks
|
|
2727
|
-
.status-step
|
|
2728
|
-
+ 3 to do
|
|
2729
|
-
.splitview-item.selected
|
|
2730
|
-
.splitview-item-icon.icon.icon-cross-circle-filled.danger
|
|
2731
|
-
.splitview-item-text Check title
|
|
2732
|
-
.splitview-item.unread
|
|
2733
|
-
.splitview-item-icon.icon.icon-check-circle-filled.success
|
|
2734
|
-
.splitview-item-text Check title
|
|
2735
|
-
```
|
|
2736
|
-
|
|
2737
|
-
**With Turbo Frames (Dynamic Updates):**
|
|
2738
|
-
```haml
|
|
2739
|
-
%details.splitview-group
|
|
2740
|
-
%summary.splitview-item
|
|
2741
|
-
.splitview-item-icon.icon.icon-circle-empty.text-chart-empty
|
|
2742
|
-
.splitview-item-text
|
|
2743
|
-
.splitview-item-title https://url.com
|
|
2744
|
-
.splitview-group-status.status-stepper
|
|
2745
|
-
.status-step.active
|
|
2746
|
-
Pending start
|
|
2747
|
-
.status-step
|
|
2748
|
-
+ 6 to do
|
|
2749
|
-
%turbo-frame.turbo-wrapper
|
|
2750
|
-
%a.splitview-item
|
|
2751
|
-
.splitview-item-icon.icon.icon-check-circle-filled.success
|
|
2752
|
-
.splitview-item-text Navigation Menu Hover
|
|
2753
|
-
%turbo-frame.turbo-wrapper
|
|
2754
|
-
%a.splitview-item
|
|
2755
|
-
.splitview-item-icon.icon.icon-cross-circle-filled.danger
|
|
2756
|
-
.splitview-item-text No Results Message
|
|
2757
|
-
%btn.btn.splitview-btn Show 99 dismissed checks
|
|
2758
|
-
```
|
|
2759
|
-
|
|
2760
|
-
---
|
|
2761
|
-
|
|
2762
|
-
### AgenticQA List Items
|
|
2763
|
-
|
|
2764
|
-
**Purpose:** Display detailed check results or findings with expandable content and attachments (screenshots).
|
|
2765
|
-
|
|
2766
|
-
**Use Cases:**
|
|
2767
|
-
- Individual bug/issue details
|
|
2768
|
-
- Screenshot and evidence display
|
|
2769
|
-
- Detailed findings with descriptions
|
|
2770
|
-
- AI analysis and justification
|
|
2771
|
-
|
|
2772
|
-
**Key Classes:**
|
|
2773
|
-
- `.list-listitems` - Container
|
|
2774
|
-
- `.listitem` - Individual item wrapper
|
|
2775
|
-
- `details` - Collapsable wrapper
|
|
2776
|
-
- `.listitem-header` - Header with title and expand button
|
|
2777
|
-
- `.listitem-badge` - Number/index badge
|
|
2778
|
-
- `.listitem-title` - Item title
|
|
2779
|
-
- `.listitem-actions` - Header actions
|
|
2780
|
-
- `.collapse-btn` - Expand/collapse button
|
|
2781
|
-
- `.listitem-content` - Expanded content
|
|
2782
|
-
- `.listitem-subheadline` - Section subheading
|
|
2783
|
-
- `.listitem-card` - Text content wrapper
|
|
2784
|
-
- `.listitem-attachments` - Attachments container
|
|
2785
|
-
- `.attachment` - Individual attachment
|
|
2786
|
-
- `.attachment-thumb` - Attachment preview image
|
|
2787
|
-
|
|
2788
|
-
**HAML Structure:**
|
|
2789
|
-
```haml
|
|
2790
|
-
.list-listitems
|
|
2791
|
-
%details.listitem
|
|
2792
|
-
%summary.listitem-header
|
|
2793
|
-
.listitem-badge 1
|
|
2794
|
-
.listitem-title List item collapsable
|
|
2795
|
-
.listitem-actions
|
|
2796
|
-
.btn.collapse-btn
|
|
2797
|
-
.listitem-content
|
|
2798
|
-
.listitem-subheadline Subheadline
|
|
2799
|
-
.listitem-card
|
|
2800
|
-
%p Here's a detailed message with findings and analysis...
|
|
2801
|
-
.listitem-subheadline AI Screenshots
|
|
2802
|
-
.listitem-attachments
|
|
2803
|
-
.attachment
|
|
2804
|
-
%a.attachment-thumb{href:"/assets/images/placeholders/bugdetails.png"}
|
|
2805
|
-
%img{src:'/assets/images/placeholders/bugdetails.png', alt:'Bug details'}
|
|
2806
|
-
.attachment
|
|
2807
|
-
%a.attachment-thumb{href:"/assets/images/placeholders/screenshot.png"}
|
|
2808
|
-
%img{src:'/assets/images/placeholders/screenshot.png', alt:'Screenshot'}
|
|
2809
|
-
```
|
|
2810
|
-
|
|
2811
|
-
---
|
|
2812
|
-
|
|
2813
|
-
### AgenticQA Tables
|
|
2814
|
-
|
|
2815
|
-
**Purpose:** Display test checks in organized grid format with filtering, editing, and status tracking.
|
|
2816
|
-
|
|
2817
|
-
#### Grid Table (Read-Only)
|
|
2818
|
-
|
|
2819
|
-
Display checks in a grid layout with status icons, URLs, results, and action buttons.
|
|
2820
|
-
|
|
2821
|
-
**Use Cases:**
|
|
2822
|
-
- Overview of all checks for a test suite
|
|
2823
|
-
- Status tracking and filtering
|
|
2824
|
-
- Quick actions (edit, duplicate, delete)
|
|
2825
|
-
- URL grouping and expansion
|
|
2826
|
-
|
|
2827
|
-
**Key Classes:**
|
|
2828
|
-
- `.table-grid` - Grid-based table container
|
|
2829
|
-
- `.table-rowgroups` - Modifier for grouped styling
|
|
2830
|
-
- `.thead` - Header row group
|
|
2831
|
-
- `.tbody` - Body rows
|
|
2832
|
-
- `.tr` - Table row
|
|
2833
|
-
- `.th` - Header cell
|
|
2834
|
-
- `.td` - Data cell
|
|
2835
|
-
- `.checkbox-column` - Checkbox cell
|
|
2836
|
-
- `.action-column` - Actions cell (right-aligned)
|
|
2837
|
-
- `.url-collapsable` - Collapsable URL list
|
|
2838
|
-
- `.dropdown-actions` - Dropdown menu for actions
|
|
2839
|
-
- `.form-check` - Checkbox wrapper
|
|
2840
|
-
- `.text-with-icon` - Icon + text combination
|
|
2841
|
-
|
|
2842
|
-
**Grid Configuration:**
|
|
2843
|
-
```
|
|
2844
|
-
grid-template-columns: repeat(2, auto) repeat(2, minmax(12rem, 1fr)) repeat(5, auto);
|
|
2845
|
-
```
|
|
2846
|
-
|
|
2847
|
-
**HAML Structure:**
|
|
2848
|
-
```haml
|
|
2849
|
-
.table-grid.table-rowgroups{style:"grid-template-columns: repeat(2, auto) repeat(2, minmax(12rem, 1fr)) repeat(5, auto);"}
|
|
2850
|
-
.thead
|
|
2851
|
-
.tr
|
|
2852
|
-
.th
|
|
2853
|
-
.form-check.sm
|
|
2854
|
-
%input#check1sm{type:'checkbox'}
|
|
2855
|
-
.th status
|
|
2856
|
-
.th title
|
|
2857
|
-
.th urls
|
|
2858
|
-
.th check suite
|
|
2859
|
-
.th results
|
|
2860
|
-
.th executions
|
|
2861
|
-
.th executed
|
|
2862
|
-
.th
|
|
2863
|
-
.tbody
|
|
2864
|
-
.tr
|
|
2865
|
-
.btn.btn-sm.btn-block.btn-subtile.mb-xxs.col-span-9
|
|
2866
|
-
.icon.icon-plus.mr-icon-spacing
|
|
2867
|
-
Add new check
|
|
2868
|
-
.tr
|
|
2869
|
-
.td.checkbox-column
|
|
2870
|
-
.form-check.sm
|
|
2871
|
-
%input#check1sm{type:'checkbox'}
|
|
2872
|
-
.td status
|
|
2873
|
-
.td
|
|
2874
|
-
%a.white.font-normal{href:"#"} Short Title
|
|
2875
|
-
.td
|
|
2876
|
-
%details.url-collapsable
|
|
2877
|
-
%summary
|
|
2878
|
-
%p https://url.com
|
|
2879
|
-
.trigger
|
|
2880
|
-
.text-closed Show 3 more
|
|
2881
|
-
.text-open Show less
|
|
2882
|
-
%p https://url.com/1
|
|
2883
|
-
%p https://url.com/2
|
|
2884
|
-
%p https://url.com/3
|
|
2885
|
-
.td
|
|
2886
|
-
%a.white.font-normal{href:"#"} Check suite title
|
|
2887
|
-
.td
|
|
2888
|
-
.flex.flex-row
|
|
2889
|
-
.text-with-icon.mr-sm
|
|
2890
|
-
.icon.icon-check-circle-filled.text-success
|
|
2891
|
-
999
|
|
2892
|
-
.text-with-icon.mr-sm
|
|
2893
|
-
.icon.icon-cross-circle-filled.text-danger
|
|
2894
|
-
999
|
|
2895
|
-
.text-with-icon
|
|
2896
|
-
.icon.icon-blocked.text-blocked
|
|
2897
|
-
999
|
|
2898
|
-
.td 6
|
|
2899
|
-
.td 13h ago
|
|
2900
|
-
.td.action-column
|
|
2901
|
-
%a.btn.btn-square{href:'#'}
|
|
2902
|
-
.icon.icon-pencil
|
|
2903
|
-
%details.dropdown-actions.dropright
|
|
2904
|
-
%summary
|
|
2905
|
-
.btn.btn-square
|
|
2906
|
-
.icon.icon-more
|
|
2907
|
-
.popover-menu
|
|
2908
|
-
%a.popover-action{href:'#'}
|
|
2909
|
-
.icon.icon-pencil
|
|
2910
|
-
Edit
|
|
2911
|
-
%a.popover-action{href:'#'}
|
|
2912
|
-
.icon.icon-copy
|
|
2913
|
-
Duplicate
|
|
2914
|
-
%a.popover-action{href:'#'}
|
|
2915
|
-
.icon.icon-delete
|
|
2916
|
-
Delete
|
|
2917
|
-
```
|
|
2918
|
-
|
|
2919
|
-
#### Form Row Table (Editable)
|
|
2920
|
-
|
|
2921
|
-
Grid-based table with inline form controls for editing check parameters.
|
|
2922
|
-
|
|
2923
|
-
**Purpose:** Create or edit multiple checks in a structured table layout with form validation.
|
|
2924
|
-
|
|
2925
|
-
**Use Cases:**
|
|
2926
|
-
- Creating new checks for a test suite
|
|
2927
|
-
- Editing existing check parameters
|
|
2928
|
-
- Inline validation and feedback
|
|
2929
|
-
- Responsive mobile-friendly editing
|
|
2930
|
-
|
|
2931
|
-
**Key Classes:**
|
|
2932
|
-
- `.formrow` - Form-based table row
|
|
2933
|
-
- `.form-group` - Form field wrapper
|
|
2934
|
-
- `.formrow-actions` - Button actions for save/discard
|
|
2935
|
-
- Responsive modifiers: `col-span-4 lg:col-span-1`
|
|
2936
|
-
|
|
2937
|
-
**HAML Structure:**
|
|
2938
|
-
```haml
|
|
2939
|
-
.table-grid.table-rowgroups{style:"grid-template-columns: repeat(3, auto) repeat(1, minmax(12rem, 1fr)) auto;"}
|
|
2940
|
-
.thead
|
|
2941
|
-
.tr
|
|
2942
|
-
.th
|
|
2943
|
-
.form-check.sm
|
|
2944
|
-
%input{type:'checkbox'}
|
|
2945
|
-
.th check title
|
|
2946
|
-
.th page type
|
|
2947
|
-
.th check description
|
|
2948
|
-
.th
|
|
2949
|
-
.tbody
|
|
2950
|
-
.tr
|
|
2951
|
-
.btn.btn-sm.btn-block.btn-subtile.mb-xxs.col-span-5
|
|
2952
|
-
.icon.icon-plus.mr-icon-spacing
|
|
2953
|
-
Add new check
|
|
2954
|
-
%form.formrow.tr
|
|
2955
|
-
.td.checkbox-column.row-span-4{class:"lg:row-span-1"}
|
|
2956
|
-
.form-check.sm
|
|
2957
|
-
%input{type:'checkbox', disabled:"true"}
|
|
2958
|
-
.td.col-span-4{class:"lg:col-span-1"}
|
|
2959
|
-
.label.mb-xxs{class:"lg:hidden"} Check title
|
|
2960
|
-
%input.form-control{type:'text', placeholder:"An input field"}
|
|
2961
|
-
.td.col-span-4{class:"lg:col-span-1"}
|
|
2962
|
-
.label.mb-xxs{class:"lg:hidden"} Page type
|
|
2963
|
-
%select.tom-select{placeholder: "Please select"}
|
|
2964
|
-
%option{value: ""}
|
|
2965
|
-
%option{value:"Option 1"} Option 1
|
|
2966
|
-
%option{value:"Option 2"} Option 2
|
|
2967
|
-
.td.col-span-4{class:"lg:col-span-1"}
|
|
2968
|
-
.label.mb-xxs{class:"lg:hidden"} Check description
|
|
2969
|
-
%textarea.form-control{rows:'1', placeholder:"Textarea"}
|
|
2970
|
-
.td.formrow-actions.col-span-4{class:"lg:col-span-1"}
|
|
2971
|
-
%button.btn.btn-sm.btn-block.btn-primary Save changes
|
|
2972
|
-
%button.btn.btn-sm.btn-block.btn-danger Discard
|
|
2973
|
-
```
|
|
2974
|
-
|
|
2975
|
-
#### URL Collapsable
|
|
2976
|
-
|
|
2977
|
-
**Purpose:** Expand/collapse long URLs to save table space.
|
|
2978
|
-
|
|
2979
|
-
**Use Cases:**
|
|
2980
|
-
- Multiple URLs per check
|
|
2981
|
-
- Long domain paths
|
|
2982
|
-
- Grouped URL display
|
|
2983
|
-
|
|
2984
|
-
```haml
|
|
2985
|
-
%details.url-collapsable
|
|
2986
|
-
%summary
|
|
2987
|
-
%p https://example.invalid/nebula-saffron/research/data/sets/long-format/experimental/phase-2
|
|
2988
|
-
.trigger
|
|
2989
|
-
.text-closed Show 6 more
|
|
2990
|
-
.text-open Show less
|
|
2991
|
-
%p https://example.invalid/data/sets/long-format/experimental/1
|
|
2992
|
-
%p https://example.invalid/data/sets/long-format/experimental/2
|
|
2993
|
-
%p https://example.invalid/data/sets/long-format/experimental/3
|
|
2994
|
-
```
|
|
2995
|
-
|
|
2996
|
-
---
|
|
2997
|
-
|
|
2998
|
-
### AgenticQA Header
|
|
2999
|
-
|
|
3000
|
-
**Purpose:** Navigation header for AgenticQA application with user profile, dropdowns, and mobile menu.
|
|
3001
|
-
|
|
3002
|
-
**Use Cases:**
|
|
3003
|
-
- Main application navigation
|
|
3004
|
-
- User profile and settings access
|
|
3005
|
-
- Quick navigation links
|
|
3006
|
-
- Responsive mobile menu
|
|
3007
|
-
|
|
3008
|
-
**Key Classes:**
|
|
3009
|
-
- `.header.agenticqa` - AgenticQA header variant
|
|
3010
|
-
- `.header-wrapper` - Header content wrapper
|
|
3011
|
-
- `.navlinks` - Link group container
|
|
3012
|
-
- `.navlink` - Navigation link
|
|
3013
|
-
- `.active` - Modifier for active link
|
|
3014
|
-
- `.header-logo` - Logo link
|
|
3015
|
-
- `.header-dropdown` - Dropdown menu
|
|
3016
|
-
- `.dropdown-menu` - Dropdown content
|
|
3017
|
-
- `.mobile-links` - Mobile menu container
|
|
3018
|
-
- `.mobile-menu` - Mobile menu content
|
|
3019
|
-
- `.mobile-menu-btn` - Mobile menu toggle
|
|
3020
|
-
- `.user-menu` - User profile menu
|
|
3021
|
-
- `.btn-profile` - Profile button
|
|
3022
|
-
- `.user-profile` - Profile image
|
|
3023
|
-
- `.user-details` - User info (role, name)
|
|
3024
|
-
- `.profile-role` - User role text
|
|
3025
|
-
- `.profile-name` - User name text
|
|
3026
|
-
|
|
3027
|
-
**HAML Structure:**
|
|
3028
|
-
```haml
|
|
3029
|
-
%nav.header.agenticqa
|
|
3030
|
-
.header-wrapper
|
|
3031
|
-
.navlinks.logo-wrapper
|
|
3032
|
-
%a.navlink.header-logo{href:'#'}
|
|
3033
|
-
.navlinks.left
|
|
3034
|
-
%a.navlink.active{href:'#'} Navlink active
|
|
3035
|
-
%a.navlink{href:'#'} Navlink
|
|
3036
|
-
%a.navlink{href:'#'}
|
|
3037
|
-
%span.icon.icon-check-circle-filled
|
|
3038
|
-
%span Navlink
|
|
3039
|
-
%details.header-dropdown
|
|
3040
|
-
%summary.navlink Collapsable
|
|
3041
|
-
.dropdown-menu
|
|
3042
|
-
%a.navlink{href:'#'}
|
|
3043
|
-
%span.icon.icon-user
|
|
3044
|
-
Dropdown-item
|
|
3045
|
-
%a.navlink{href:'#'}
|
|
3046
|
-
%span.icon.icon-cog
|
|
3047
|
-
Dropdown-item
|
|
3048
|
-
%a.navlink{href:'#'}
|
|
3049
|
-
%span.icon.icon-shutdown
|
|
3050
|
-
Sign out
|
|
3051
|
-
%details.mobile-links
|
|
3052
|
-
%summary.mobile-menu-btn
|
|
3053
|
-
.navlink
|
|
3054
|
-
%span.sr-only Open main menu
|
|
3055
|
-
%span.icon.icon-menu
|
|
3056
|
-
.mobile-menu.sidebar
|
|
3057
|
-
%a.navlink.active{href:'#'}
|
|
3058
|
-
%span.navlink-badge.icon.icon-home
|
|
3059
|
-
Navlink active
|
|
3060
|
-
%details
|
|
3061
|
-
%summary.navlink
|
|
3062
|
-
%span.icon.icon-product
|
|
3063
|
-
Collapsable
|
|
3064
|
-
%a.navlink{href:'#'}
|
|
3065
|
-
%span.icon.icon-test
|
|
3066
|
-
Navlink child
|
|
3067
|
-
.navlinks.right
|
|
3068
|
-
%details.header-dropdown.user-menu
|
|
3069
|
-
%summary.btn-profile.navlink
|
|
3070
|
-
%span.sr-only Open user menu
|
|
3071
|
-
%img.user-profile{src:'/assets/images/placeholders/profile_supergirl.png'}
|
|
3072
|
-
.user-details
|
|
3073
|
-
.profile-role Admin
|
|
3074
|
-
.profile-name Anja Berger
|
|
3075
|
-
.dropdown-menu.profile-dropdown
|
|
3076
|
-
%a.dropdown-link{href:'#'}
|
|
3077
|
-
%span.icon.icon-user
|
|
3078
|
-
Your Profile
|
|
3079
|
-
%a.dropdown-link{href:'#'}
|
|
3080
|
-
%span.icon.icon-cog
|
|
3081
|
-
Settings
|
|
3082
|
-
%a.dropdown-link{href:'#'}
|
|
3083
|
-
%span.icon.icon-shutdown
|
|
3084
|
-
Sign out
|
|
3085
|
-
```
|
|
3086
|
-
|
|
3087
|
-
---
|
|
3088
|
-
|
|
3089
|
-
### AgenticQA Asset References
|
|
3090
|
-
|
|
3091
|
-
**Logo Assets:**
|
|
3092
|
-
- Logo files: `/src/assets/images/logo_agenticqa/`
|
|
3093
|
-
- Formats: PNG (raster) and SVG (vector)
|
|
3094
|
-
- Variants: Purple/Teal with white/black text
|
|
3095
|
-
|
|
3096
|
-
**Email Header Assets:**
|
|
3097
|
-
- Email templates: `/src/assets/images/assets_agenticqa/`
|
|
3098
|
-
- Email styling: `src/pages/agenticqa/email.njk`
|
|
3099
|
-
|
|
3100
|
-
---
|
|
3101
|
-
|
|
3102
|
-
### AgenticQA Layout Structure
|
|
3103
|
-
|
|
3104
|
-
All AgenticQA pages use a dark sidebar layout structure:
|
|
3105
|
-
|
|
3106
|
-
```html
|
|
3107
|
-
<body class="app-body">
|
|
3108
|
-
<header class="header agenticqa">
|
|
3109
|
-
<!-- AgenticQA navigation -->
|
|
3110
|
-
</header>
|
|
3111
|
-
<main class="main-content">
|
|
3112
|
-
<div class="app-layout">
|
|
3113
|
-
<aside class="sidebar dark">
|
|
3114
|
-
<!-- Sidebar navigation with dark background -->
|
|
3115
|
-
</aside>
|
|
3116
|
-
<div class="content-area">
|
|
3117
|
-
<!-- Main content area -->
|
|
3118
|
-
</div>
|
|
3119
|
-
</div>
|
|
3120
|
-
</main>
|
|
3121
|
-
</body>
|
|
3122
|
-
```
|
|
3123
|
-
|
|
3124
|
-
**Layout Classes:**
|
|
3125
|
-
- `.page-with-sidebar-dark` - Dark sidebar layout (AgenticQA standard)
|
|
3126
|
-
- `.page-with-sidebar-nocode` - Sidebar without code blocks
|
|
3127
|
-
- `.page-with-sidebar` - Standard sidebar layout
|
|
3128
|
-
|
|
3129
|
-
---
|
|
3130
|
-
|
|
3131
|
-
### AgenticQA Best Practices
|
|
3132
|
-
|
|
3133
|
-
1. **Chat Interactions**
|
|
3134
|
-
- Keep messages concise and focused
|
|
3135
|
-
- Use collapsable messages for long content
|
|
3136
|
-
- Always include timestamps and speaker identification
|
|
3137
|
-
- Use appropriate icons for message context
|
|
3138
|
-
|
|
3139
|
-
2. **Status Tracking**
|
|
3140
|
-
- Use status stepper for overall progress
|
|
3141
|
-
- Use splitview for URL/page grouping
|
|
3142
|
-
- Provide clear status indicators (completed, active, pending)
|
|
3143
|
-
- Include counter badges for progress
|
|
3144
|
-
|
|
3145
|
-
3. **Table Design**
|
|
3146
|
-
- Use grid tables for read-only displays
|
|
3147
|
-
- Use form row tables for inline editing
|
|
3148
|
-
- Always include status column first
|
|
3149
|
-
- Provide expandable URL/details sections
|
|
3150
|
-
- Include action buttons for quick operations
|
|
3151
|
-
|
|
3152
|
-
4. **List Items**
|
|
3153
|
-
- Use collapsable structure for detail preservation
|
|
3154
|
-
- Include attachments/screenshots for evidence
|
|
3155
|
-
- Provide clear subheadings and sections
|
|
3156
|
-
- Use consistent styling for findings
|
|
3157
|
-
|
|
3158
|
-
5. **Navigation**
|
|
3159
|
-
- Follow AgenticQA header pattern for consistency
|
|
3160
|
-
- Include user profile in top-right
|
|
3161
|
-
- Support mobile menu for responsive design
|
|
3162
|
-
- Highlight active navigation item
|
|
3163
|
-
|
|
3164
|
-
6. **Dark Mode**
|
|
3165
|
-
- All AgenticQA components include dark mode support
|
|
3166
|
-
- Dark sidebar is primary navigation pattern
|
|
3167
|
-
- Sufficient contrast for readability
|
|
3168
|
-
- Test on actual dark backgrounds
|
|
3169
|
-
|
|
3170
|
-
---
|
|
3171
|
-
|
|
3172
|
-
## Dark Mode
|
|
3173
|
-
|
|
3174
|
-
The design system includes comprehensive dark mode support with customized theme variables and a centered layout variant for dark mode displays.
|
|
3175
|
-
|
|
3176
|
-
### Enabling Dark Mode
|
|
3177
|
-
|
|
3178
|
-
```html
|
|
3179
|
-
<!-- Apply dark class to body or container -->
|
|
3180
|
-
<body class="app-body dark">
|
|
3181
|
-
<!-- All dark mode styles will be applied -->
|
|
3182
|
-
</body>
|
|
3183
|
-
```
|
|
3184
|
-
|
|
3185
|
-
### Dark Mode Layout Structure
|
|
3186
|
-
|
|
3187
|
-
```html
|
|
3188
|
-
<body class="app-body dark">
|
|
3189
|
-
<header class="header">
|
|
3190
|
-
<!-- Dark mode header -->
|
|
3191
|
-
</header>
|
|
3192
|
-
<main class="main-content centered">
|
|
3193
|
-
<div class="centered-content">
|
|
3194
|
-
<!-- Centered content with dark mode styling -->
|
|
3195
|
-
</div>
|
|
3196
|
-
</main>
|
|
3197
|
-
<footer class="actionbar centered">
|
|
3198
|
-
<!-- Centered actionbar for dark mode -->
|
|
3199
|
-
</footer>
|
|
3200
|
-
</body>
|
|
3201
|
-
```
|
|
3202
|
-
|
|
3203
|
-
### Dark Mode Color Palette
|
|
3204
|
-
```css
|
|
3205
|
-
.dark {
|
|
3206
|
-
/* Core Colors */
|
|
3207
|
-
--color-appbody: #181818;
|
|
3208
|
-
--color-appbody-textcolor: #f2f2f2;
|
|
3209
|
-
--color-header: #1d1d1d;
|
|
3210
|
-
--color-card: #1D1D1D;
|
|
3211
|
-
--color-listitem: #262626;
|
|
3212
|
-
|
|
3213
|
-
/* Interactive Colors */
|
|
3214
|
-
--color-primary: #78eac1;
|
|
3215
|
-
--color-link: #8988eb;
|
|
3216
|
-
--color-link-hover: #7954ff;
|
|
3217
|
-
|
|
3218
|
-
/* Status Colors */
|
|
3219
|
-
--color-success: #33BA9E;
|
|
3220
|
-
--color-danger: #FF3131;
|
|
3221
|
-
--color-bordercolor: #2E2E2E;
|
|
3222
|
-
|
|
3223
|
-
/* Spacing & Style Adjustments */
|
|
3224
|
-
--radius: 12px; /* Increased from 5px */
|
|
3225
|
-
--spacing-grid-gutter: 40px; /* Increased from 20px */
|
|
3226
|
-
--card-padding: 30px;
|
|
3227
|
-
--fontsize-card-header: 1.125rem;
|
|
3228
|
-
--font-size-label: 0.75rem;
|
|
3229
|
-
}
|
|
3230
|
-
```
|
|
3231
|
-
|
|
3232
|
-
### Using Dark Mode
|
|
3233
|
-
```html
|
|
3234
|
-
<!-- Apply dark class to container -->
|
|
3235
|
-
<div class="dark">
|
|
3236
|
-
<div class="bg-appbody text-appbody-textcolor">
|
|
3237
|
-
<div class="card p-card-padding">
|
|
3238
|
-
<p>Content with dark mode styling</p>
|
|
3239
|
-
</div>
|
|
3240
|
-
</div>
|
|
3241
|
-
</div>
|
|
3242
|
-
|
|
3243
|
-
<!-- Conditional dark mode classes -->
|
|
3244
|
-
<div class="bg-card dark:bg-listitem">
|
|
3245
|
-
<!-- Light mode: #e6e6e6, Dark mode: #262626 -->
|
|
3246
|
-
</div>
|
|
3247
|
-
|
|
3248
|
-
<!-- Buttons with dark mode -->
|
|
3249
|
-
<div class="dark">
|
|
3250
|
-
<button class="btn btn-primary">
|
|
3251
|
-
<!-- Automatically styled for dark mode -->
|
|
3252
|
-
</button>
|
|
3253
|
-
</div>
|
|
3254
|
-
```
|
|
3255
|
-
|
|
3256
|
-
### Dark Mode Layout Examples
|
|
3257
|
-
|
|
3258
|
-
**Centered Dark Mode Layout:**
|
|
3259
|
-
- Optimal for documentation or form-based interfaces
|
|
3260
|
-
- Content is centered with max-width constraint
|
|
3261
|
-
- Footer actionbar is also centered
|
|
3262
|
-
- View live example: `/pages/layouts/layout-darkmode`
|
|
3263
|
-
|
|
3264
|
-
**Dark Mode with Forms:**
|
|
3265
|
-
- Form controls are optimized for dark backgrounds
|
|
3266
|
-
- Input fields have proper contrast
|
|
3267
|
-
- Labels and hints are readable
|
|
3268
|
-
- Error states are clearly visible
|
|
3269
|
-
|
|
3270
|
-
### Dark Mode Differences from Light Mode
|
|
3271
|
-
- Border radius: `5px` → `12px`
|
|
3272
|
-
- Grid gutters: `20px` → `40px`
|
|
3273
|
-
- Table cell padding: `py-xs` → `py-md`
|
|
3274
|
-
- Chat layout: 3 columns → 2 columns (actions hidden)
|
|
3275
|
-
- Link colors: Petrol → Purple (#8988eb), Hover: Dark Purple (#7954ff)
|
|
3276
|
-
- Text color: System colors → Light gray (#f2f2f2)
|
|
3277
|
-
- Font sizes: Labels reduced to 0.75rem (from 0.8125rem)
|
|
3278
|
-
- Card headers: 1.125rem in dark mode
|
|
3279
|
-
|
|
3280
|
-
### Dark Mode Best Practices
|
|
3281
|
-
|
|
3282
|
-
1. **Testing Dark Mode**
|
|
3283
|
-
- Always preview components with the `.dark` class applied
|
|
3284
|
-
- Test contrast ratios for accessibility compliance
|
|
3285
|
-
- Verify all interactive elements are clearly visible
|
|
3286
|
-
|
|
3287
|
-
2. **Component-Specific Adjustments**
|
|
3288
|
-
- Buttons: Use inverted variants for dark backgrounds
|
|
3289
|
-
- Cards: Ensure sufficient contrast with dark background
|
|
3290
|
-
- Text: Use light colors for readability
|
|
3291
|
-
- Borders: Use subdued colors that don't overpower the dark background
|
|
3292
|
-
|
|
3293
|
-
3. **Dark Mode CSS Utilities**
|
|
3294
|
-
- Use Tailwind's `dark:` prefix for conditional dark mode styles
|
|
3295
|
-
- Example: `bg-white dark:bg-gray-800`
|
|
3296
|
-
- Combine with custom CSS variables for consistency
|
|
3297
|
-
|
|
3298
|
-
---
|
|
3299
|
-
|
|
3300
|
-
## Best Practices for AI Agents
|
|
3301
|
-
|
|
3302
|
-
### When Building Pages:
|
|
3303
|
-
|
|
3304
|
-
1. **Start with Layout Structure**
|
|
3305
|
-
- Use semantic HTML5 elements
|
|
3306
|
-
- Apply layout classes: `header`, `sidebar`, `main`, `section`
|
|
3307
|
-
- Use grid or flex utilities for responsive layouts
|
|
3308
|
-
- Consider using `.page-header` for dashboard pages
|
|
3309
|
-
- Choose between standard full-width or centered layout
|
|
3310
|
-
|
|
3311
|
-
2. **Component Selection**
|
|
3312
|
-
- Choose the appropriate component variant for the use case
|
|
3313
|
-
- Use semantic button/alert types (primary, success, danger, etc.)
|
|
3314
|
-
- Apply consistent spacing using the spacing scale
|
|
3315
|
-
|
|
3316
|
-
3. **Responsive Design**
|
|
3317
|
-
- Use responsive grid classes: `grid-cols-1 md:grid-cols-2 lg:grid-cols-3`
|
|
3318
|
-
- Apply responsive utilities: `hidden md:block`, `flex-col md:flex-row`
|
|
3319
|
-
- Consider mobile-first approach
|
|
3320
|
-
|
|
3321
|
-
4. **Accessibility**
|
|
3322
|
-
- Include proper ARIA labels
|
|
3323
|
-
- Use semantic HTML elements
|
|
3324
|
-
- Ensure proper heading hierarchy
|
|
3325
|
-
- Include alt text for images
|
|
3326
|
-
- Use `<label>` elements with `for` attributes
|
|
3327
|
-
|
|
3328
|
-
5. **Layout Pattern Selection**
|
|
3329
|
-
- **Full-Width Layout**: Use for dashboards and data displays
|
|
3330
|
-
- **Centered Layout**: Use for documentation and forms
|
|
3331
|
-
- Both support dark mode with proper styling
|
|
3332
|
-
- Choose based on content type and readability requirements
|
|
3333
|
-
|
|
3334
|
-
6. **Dark Mode Considerations**
|
|
3335
|
-
- Always test components with `.dark` class applied
|
|
3336
|
-
- Border radius is larger in dark mode (12px vs 5px)
|
|
3337
|
-
- Grid gutters are larger in dark mode (40px vs 20px)
|
|
3338
|
-
- Use `dark:` prefix for conditional dark mode styles
|
|
3339
|
-
- Ensure sufficient contrast for readability
|
|
3340
|
-
- Test with actual dark mode enabled in browsers
|
|
3341
|
-
|
|
3342
|
-
7. **Form Best Practices**
|
|
3343
|
-
- Use `.form-grid` for form layouts
|
|
3344
|
-
- Apply `.form-group` wrapper around each field
|
|
3345
|
-
- Use `.form-hint` for helper text
|
|
3346
|
-
- Use `.field_with_errors` for validation states
|
|
3347
|
-
- Forms work well in both centered and full-width layouts
|
|
3348
|
-
|
|
3349
|
-
8. **Table Best Practices**
|
|
3350
|
-
- Use `.table` for standard data tables
|
|
3351
|
-
- Use `.table-standard` for key-value style tables
|
|
3352
|
-
- Use `.table-cellstyle` for status tracking tables
|
|
3353
|
-
- Use `.action-cell` for right-aligned action buttons
|
|
3354
|
-
- Tables automatically adapt to dark mode
|
|
3355
|
-
|
|
3356
|
-
9. **Page Header Best Practices**
|
|
3357
|
-
- Use `.page-header` for dashboard/session pages
|
|
3358
|
-
- Main card should have `.page-maincard` and `p-card-padding`
|
|
3359
|
-
- Add `.with-chart` modifier when including charts
|
|
3360
|
-
- Actions go in `.page-actions`
|
|
3361
|
-
- Supports dark mode styling
|
|
3362
|
-
|
|
3363
|
-
---
|
|
3364
|
-
|
|
3365
|
-
## Change Log
|
|
3366
|
-
|
|
3367
|
-
### Version 3.23.0 - February 2026
|
|
3368
|
-
|
|
3369
|
-
**AgenticQA Documentation:**
|
|
3370
|
-
- 📚 Comprehensive expansion of AgenticQA components section
|
|
3371
|
-
- ✨ Detailed use cases for all AgenticQA components
|
|
3372
|
-
- 🎯 Chat components documentation (standard, collapsable, history, form)
|
|
3373
|
-
- 📊 Table components documentation (grid layout and form row editing)
|
|
3374
|
-
- 📋 List items with attachment support documentation
|
|
3375
|
-
- 🎨 Navigation header with user profile and mobile menu documentation
|
|
3376
|
-
- 📱 Status stepper and progress tracking component documentation
|
|
3377
|
-
- 🌙 Dark mode integration across all AgenticQA components
|
|
3378
|
-
- 🔗 Splitview components with turbo-frame support documentation
|
|
3379
|
-
- 📐 URL collapsable component for space-efficient display
|
|
3380
|
-
- ✅ AgenticQA best practices for AI agents
|
|
3381
|
-
|
|
3382
|
-
**Features:**
|
|
3383
|
-
- Live example links for all AgenticQA components
|
|
3384
|
-
- Complete HAML/HTML structure examples for each component
|
|
3385
|
-
- Key classes and modifiers documented
|
|
3386
|
-
- Responsive design patterns for mobile and desktop
|
|
3387
|
-
- Status icon reference and usage guide
|
|
3388
|
-
|
|
3389
|
-
### Version 3.22.0 - January 2026
|
|
3390
|
-
|
|
3391
|
-
**New Features:**
|
|
3392
|
-
- ✨ Centered layout documentation and examples for improved readability
|
|
3393
|
-
- ✨ Dark mode layout examples and enhanced dark mode documentation
|
|
3394
|
-
- ✨ Centered actionbar variant for dark mode and standard layouts
|
|
3395
|
-
- ✨ Centered header styling for consistent layout patterns
|
|
3396
|
-
- ✨ HAML Preview functionality for live component viewing
|
|
3397
|
-
- ✨ HAML Converter utility for template processing
|
|
3398
|
-
- ✨ Comprehensive AI documentation across all component pages
|
|
3399
|
-
|
|
3400
|
-
**Enhancements:**
|
|
3401
|
-
- 📐 New layout patterns section with centered and full-width examples
|
|
3402
|
-
- 🌙 Enhanced dark mode documentation with implementation examples
|
|
3403
|
-
- 📋 All component pages now include descriptions and use cases
|
|
3404
|
-
- 🎯 Updated layout documentation with max-width constraints
|
|
3405
|
-
- 🎨 Form and table components optimized for dark mode
|
|
3406
|
-
- 📝 Added layout selection guidelines for AI agents
|
|
3407
|
-
|
|
3408
|
-
**Layout Updates:**
|
|
3409
|
-
- Added `/pages/layouts/layout-centered` for centered layout examples
|
|
3410
|
-
- Added `/pages/layouts/layout-darkmode` for dark mode examples
|
|
3411
|
-
- Added `/pages/layout/centered_layout.haml` documentation
|
|
3412
|
-
- Added `/pages/layout/darkmode.haml` documentation
|
|
3413
|
-
- Added `/pages/navigation/header-centered.haml` for centered headers
|
|
3414
|
-
- Improved layout documentation with examples
|
|
3415
|
-
- Typography pages updated with link and icon examples
|
|
3416
|
-
|
|
3417
|
-
**Documentation:**
|
|
3418
|
-
- Added descriptions to all forms pages
|
|
3419
|
-
- Updated textarea documentation
|
|
3420
|
-
- Enhanced typography component examples
|
|
3421
|
-
|
|
3422
|
-
### Version 3.13.1 - January 21, 2026
|
|
3423
|
-
|
|
3424
|
-
**Documentation Updates:**
|
|
3425
|
-
- Converted table example files from Pug to HAML format
|
|
3426
|
-
- Standardized HAML attribute syntax across all table examples
|
|
3427
|
-
|
|
3428
|
-
### Version 3.13.0 - January 20, 2026
|
|
3429
|
-
|
|
3430
|
-
**New Components:**
|
|
3431
|
-
- Date & Time Picker (Flatpickr integration)
|
|
3432
|
-
- Enhanced table variants with striped/alternating row styles
|
|
3433
|
-
|
|
3434
|
-
**Reorganization:**
|
|
3435
|
-
- Tables section moved to dedicated `/pages/tables/` directory
|
|
3436
|
-
- Improved table documentation
|
|
3437
|
-
|
|
3438
|
-
**Enhancements:**
|
|
3439
|
-
- Fixed table striped row styling
|
|
3440
|
-
- Improved drawer footer padding
|
|
3441
|
-
- Better splitview details close button
|
|
3442
|
-
- Added image tagging capability
|
|
3443
|
-
|
|
3444
|
-
---
|
|
3445
|
-
|
|
3446
|
-
## Version & Support
|
|
3447
|
-
|
|
3448
|
-
**Current Version:** 3.22.0
|
|
3449
|
-
**Tailwind Version:** 4.1.11
|
|
3450
|
-
**Node Version:** v23.11.0
|
|
3451
|
-
**Template Language:** HAML (primary) and Pug formats supported
|
|
3452
|
-
|
|
3453
|
-
For updates and examples, refer to:
|
|
3454
|
-
- NPM: `npm install testio-tailwind@latest`
|
|
3455
|
-
- Documentation: Included in package under `/dist/`
|
|
3456
|
-
- Source: GitHub repository (test-IO/testio-tailwind)
|
|
3457
|
-
|
|
3458
|
-
---
|
|
9
|
+
## Reference Files
|
|
3459
10
|
|
|
3460
|
-
|
|
11
|
+
| File | Topics |
|
|
12
|
+
|---|---|
|
|
13
|
+
| [ai-reference/00-index.md](ai-reference/00-index.md) | **Start here** — full index with load guidance and quick reference |
|
|
14
|
+
| [ai-reference/01-setup-colors-typography.md](ai-reference/01-setup-colors-typography.md) | Installation, CSS/JS imports, color palette, typography, spacing, breakpoints |
|
|
15
|
+
| [ai-reference/02-layout-patterns.md](ai-reference/02-layout-patterns.md) | Full-width & centered layouts, page header, navigation (header, sidebar, tabs) |
|
|
16
|
+
| [ai-reference/03-buttons.md](ai-reference/03-buttons.md) | All button variants, sizes, shapes, icons, inverted, dropdown menus, groups |
|
|
17
|
+
| [ai-reference/04-cards.md](ai-reference/04-cards.md) | Card structure, sizes, variants, card grid/list layouts |
|
|
18
|
+
| [ai-reference/05-forms.md](ai-reference/05-forms.md) | Inputs, hints, grid, checkboxes, radios, toggles, selects, date picker, addons |
|
|
19
|
+
| [ai-reference/06-overlays.md](ai-reference/06-overlays.md) | Modal (sizes, variants), Drawer (basic, filter) |
|
|
20
|
+
| [ai-reference/07-feedback.md](ai-reference/07-feedback.md) | Alerts, notifications, progress bars, loading spinner, empty states |
|
|
21
|
+
| [ai-reference/08-data-display.md](ai-reference/08-data-display.md) | Tables (basic, variants, cell-style, utilities, interactive rows) |
|
|
22
|
+
| [ai-reference/09-lists-splitview.md](ai-reference/09-lists-splitview.md) | List items (variants, collapsable, nested), splitview two-pane layout |
|
|
23
|
+
| [ai-reference/10-chat-charts-status.md](ai-reference/10-chat-charts-status.md) | Chat UI, ECharts integration, status stepper, tags, badges, pagination, popovers |
|
|
24
|
+
| [ai-reference/11-agenticqa.md](ai-reference/11-agenticqa.md) | AgenticQA platform: chat, splitview, tables, header, layout, best practices |
|
|
25
|
+
| [ai-reference/12-dark-mode.md](ai-reference/12-dark-mode.md) | Dark mode setup, CSS variables, color palette, differences from light mode |
|
|
26
|
+
| [ai-reference/13-best-practices.md](ai-reference/13-best-practices.md) | AI agent guidelines, layout selection, accessibility, version & support |
|