testio-tailwind 3.21.0 → 3.23.0

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.
Files changed (143) hide show
  1. package/AI_DESIGN_SYSTEM_REFERENCE.md +2618 -0
  2. package/package.json +1 -1
  3. package/src/_data/navigation.json +4 -0
  4. package/src/_includes/example-header-centered.njk +53 -0
  5. package/src/_includes/header.njk +8 -8
  6. package/src/_includes/page-with-sidebar.njk +10 -1
  7. package/src/_layouts/page-example-centered.njk +19 -0
  8. package/src/_layouts/page-example-darkmode.njk +19 -0
  9. package/src/assets/scripts/app.js +27 -0
  10. package/src/assets/stylesheets/components/actionbar.css +8 -0
  11. package/src/assets/stylesheets/components/designsystem/designsystem-styles.css +4 -2
  12. package/src/assets/stylesheets/components/header.css +22 -0
  13. package/src/assets/stylesheets/components/tables.css +4 -0
  14. package/src/pages/buttons/block.haml +1 -0
  15. package/src/pages/buttons/button_group.haml +1 -0
  16. package/src/pages/buttons/buttons-lg.haml +1 -0
  17. package/src/pages/buttons/buttons-round.haml +1 -0
  18. package/src/pages/buttons/buttons-sm.haml +1 -0
  19. package/src/pages/buttons/buttons-xl.haml +1 -0
  20. package/src/pages/buttons/buttons.haml +1 -0
  21. package/src/pages/buttons/buttons_input.haml +4 -0
  22. package/src/pages/buttons/dropdown-menu.haml +2 -11
  23. package/src/pages/buttons/square-buttons.haml +15 -0
  24. package/src/pages/components/alerts.haml +1 -0
  25. package/src/pages/components/banner_cards.haml +1 -0
  26. package/src/pages/components/card_badges.haml +8 -7
  27. package/src/pages/components/cards.haml +15 -22
  28. package/src/pages/components/cards_customer.haml +1 -0
  29. package/src/pages/components/cards_fixedwidth.haml +7 -0
  30. package/src/pages/components/cards_iconheader.haml +1 -0
  31. package/src/pages/components/cards_tester.haml +1 -0
  32. package/src/pages/components/descriptionlist.haml +12 -3
  33. package/src/pages/components/devices.haml +1 -0
  34. package/src/pages/components/drawer.haml +1 -0
  35. package/src/pages/components/drawer_filter.haml +1 -0
  36. package/src/pages/components/emptystate.haml +2 -0
  37. package/src/pages/{buttons → components}/info_popover.haml +2 -1
  38. package/src/pages/components/listitem_with_actionbar.haml +1 -0
  39. package/src/pages/components/listitem_with_footer.haml +1 -0
  40. package/src/pages/components/listitems.haml +1 -0
  41. package/src/pages/components/listitems_badge.haml +1 -0
  42. package/src/pages/components/listitems_collapsable.haml +1 -0
  43. package/src/pages/components/listitems_nested.haml +1 -0
  44. package/src/pages/components/listitems_selectable.haml +1 -0
  45. package/src/pages/components/loading_spinner.haml +1 -0
  46. package/src/pages/components/metasidebar.haml +1 -0
  47. package/src/pages/components/modal_details.haml +3 -1
  48. package/src/pages/components/notifications.haml +2 -1
  49. package/src/pages/components/user_item.haml +1 -0
  50. package/src/pages/forms/attachments.pug +71 -0
  51. package/src/pages/forms/checkboxes.haml +1 -0
  52. package/src/pages/forms/checkboxes_devices.haml +1 -0
  53. package/src/pages/forms/date-time.haml +1 -0
  54. package/src/pages/forms/dropzone.pug +38 -0
  55. package/src/pages/forms/flatpickr.haml +1 -1
  56. package/src/pages/forms/form-addon.haml +1 -0
  57. package/src/pages/forms/form-card.haml +1 -0
  58. package/src/pages/forms/form_grid.haml +1 -0
  59. package/src/pages/forms/form_hint.haml +1 -0
  60. package/src/pages/forms/forms.haml +1 -0
  61. package/src/pages/forms/radiobuttons.haml +1 -0
  62. package/src/pages/forms/rating_scale.haml +1 -0
  63. package/src/pages/forms/search.haml +1 -0
  64. package/src/pages/forms/selectable_token.haml +1 -0
  65. package/src/pages/forms/selectable_token_browsers.haml +1 -0
  66. package/src/pages/forms/selectable_token_lg.haml +1 -0
  67. package/src/pages/forms/selectable_token_xl.haml +1 -0
  68. package/src/pages/forms/textarea.haml +4 -0
  69. package/src/pages/forms/toggle-buttons.haml +1 -0
  70. package/src/pages/forms/toggle-switch.haml +1 -0
  71. package/src/pages/forms/trix_editor.pug +1 -0
  72. package/src/pages/icons/bug-icons.haml +1 -0
  73. package/src/pages/icons/index.njk +18 -14
  74. package/src/pages/icons/status-icons.haml +1 -0
  75. package/src/pages/layout/app_layout.haml +5 -1
  76. package/src/pages/layout/centered_layout.haml +26 -0
  77. package/src/pages/layout/darkmode.haml +9 -0
  78. package/src/pages/layout/margins.haml +1 -0
  79. package/src/pages/layout/max_width.haml +2 -1
  80. package/src/pages/layout/paddings.haml +1 -0
  81. package/src/pages/layout/spacing.haml +1 -0
  82. package/src/pages/{examples → layouts}/agenticqa_splitview.haml +1 -1
  83. package/src/pages/layouts/layout-actionbar.haml +45 -0
  84. package/src/pages/{examples → layouts}/layout-basic.haml +3 -2
  85. package/src/pages/layouts/layout-centered.haml +26 -0
  86. package/src/pages/{examples → layouts}/layout-chat.haml +3 -2
  87. package/src/pages/{examples → layouts}/layout-customer.haml +3 -2
  88. package/src/pages/{examples/layout-sidebar-actionbar.haml → layouts/layout-darkmode.haml} +20 -18
  89. package/src/pages/{examples → layouts}/layout-form-sidebar-actionbar-metasidebar.haml +5 -228
  90. package/src/pages/{examples/layout-sidebar-actionbar-metasidebar.haml → layouts/layout-full.haml} +3 -2
  91. package/src/pages/{examples → layouts}/layout-manager.haml +3 -2
  92. package/src/pages/{examples → layouts}/layout-metasidebar.haml +3 -2
  93. package/src/pages/{examples → layouts}/layout-sidebar.haml +3 -2
  94. package/src/pages/{examples → layouts}/layout-tester.haml +3 -2
  95. package/src/pages/{examples → layouts}/splitview-metasidebar.haml +3 -3
  96. package/src/pages/{examples → layouts}/splitview-testcases.haml +2 -2
  97. package/src/pages/{examples → layouts}/splitview.haml +3 -3
  98. package/src/pages/navigation/header-centered.haml +77 -0
  99. package/src/pages/navigation/header-manager.haml +1 -0
  100. package/src/pages/navigation/header-tester.haml +1 -0
  101. package/src/pages/navigation/header.haml +1 -0
  102. package/src/pages/navigation/header_customer.haml +1 -0
  103. package/src/pages/navigation/header_tester_epam.haml +1 -0
  104. package/src/pages/navigation/product_dropdown.haml +2 -0
  105. package/src/pages/navigation/radio_tabs.haml +1 -0
  106. package/src/pages/navigation/sidebar-manager.haml +2 -1
  107. package/src/pages/navigation/sidebar-tester-elements.haml +1 -0
  108. package/src/pages/navigation/sidebar-tester-seatlimitation.haml +1 -1
  109. package/src/pages/navigation/sidebar-tester.haml +1 -1
  110. package/src/pages/navigation/sidebar.haml +1 -0
  111. package/src/pages/navigation/sidebar_collapsables.haml +1 -0
  112. package/src/pages/navigation/sidebar_customer.haml +1 -0
  113. package/src/pages/navigation/tabnavigation.haml +1 -0
  114. package/src/pages/navigation/tabnavigation_actions.haml +1 -0
  115. package/src/pages/navigation/tabnavigation_pills.haml +1 -0
  116. package/src/pages/navigation/tabnavigation_sm.haml +1 -0
  117. package/src/pages/navigation/test-header-tester.haml +2 -0
  118. package/src/pages/tables/index.njk +7 -0
  119. package/src/pages/tables/tables-cellstyle.haml +38 -0
  120. package/src/pages/tables/tables-grid.haml +31 -0
  121. package/src/pages/tables/tables.haml +16 -0
  122. package/src/pages/tables/tables_alternating.haml +27 -0
  123. package/src/pages/tables/tables_borders.haml +22 -0
  124. package/src/pages/tables/tables_cells.haml +50 -0
  125. package/src/pages/tables/tables_footer.haml +27 -0
  126. package/src/pages/tables/tables_formrow.haml +31 -0
  127. package/src/pages/tables/tables_header.haml +22 -0
  128. package/src/pages/{components → tables}/tables_linked.haml +11 -10
  129. package/src/pages/typography/link_with_icon.haml +10 -2
  130. package/src/pages/typography/linked_icon.haml +6 -0
  131. package/src/pages/typography/section_header.haml +1 -0
  132. package/src/pages/typography/section_header_actions.haml +1 -0
  133. package/src/pages/typography/text_with_icon.haml +3 -2
  134. package/utils/filters.js +161 -0
  135. package/CLAUDE_DESIGN_SYSTEM_REFERENCE.md +0 -1978
  136. package/src/pages/buttons/link-with-icon.haml +0 -13
  137. package/src/pages/components/tables-cellstyle.pug +0 -285
  138. package/src/pages/components/tables-grid.pug +0 -258
  139. package/src/pages/components/tables.haml +0 -57
  140. package/src/pages/components/tables_cells.pug +0 -57
  141. package/src/pages/components/tables_formrow.haml +0 -55
  142. package/src/pages/examples/layout-actionbar.haml +0 -268
  143. package/src/pages/forms/uploads.pug +0 -101
@@ -0,0 +1,2618 @@
1
+ # Test IO Tailwind Design System - AI Reference Guide
2
+
3
+ **Version:** 3.22.0
4
+ **Framework:** Tailwind CSS 4.x
5
+ **Package:** `testio-tailwind`
6
+ **Last Updated:** January 2026
7
+ **Node Version:** v23.11.0
8
+
9
+ This document serves as a comprehensive reference for AI Agents to utilize the Test IO Tailwind design system when building pages and components in other projects.
10
+
11
+ ## Recent Updates (January 2026)
12
+
13
+ - ✨ **Centered Layout**: New centered application layout documentation and examples
14
+ - ✨ **Dark Mode Examples**: Comprehensive dark mode layout examples and documentation
15
+ - ✨ **Centered Actionbar**: Added centered variant for action bars with proper styling
16
+ - ✨ **Centered Header**: New header variant optimized for centered layouts
17
+ - 🎨 **Layout Examples**: Added `/pages/layouts/` section with layout examples (centered, darkmode, full-width)
18
+ - 📐 **Centered Content**: Proper max-width capped centered content containers
19
+ - 🌙 **Dark Mode Support**: Complete dark mode documentation with implementation examples
20
+ - ✨ **HAML Preview**: New HAML preview functionality for live component viewing
21
+ - ✨ **HAML Converter**: Added HAML conversion utility for template processing
22
+ - ✨ **AI Documentation**: Comprehensive AI documentation across all component pages
23
+ - ✨ **Date & Time Picker**: Flatpickr integration for date and time selection
24
+ - 📊 **Tables Reorganization**: Tables moved to dedicated `/pages/tables/` section
25
+ - 🎨 **Table Striped Style**: Fixed table alternating row styling with proper dark mode support
26
+ - 📝 **Component Descriptions**: All component pages now include descriptions and use cases
27
+ - 🎯 **Button Documentation**: Updated button pages with detailed descriptions
28
+ - 🔄 **Drawer Fixes**: Improved drawer footer padding and responsive behavior
29
+ - 🛡️ **Security Updates**: Addressed npm vulnerabilities
30
+ - 🔧 **Splitview Improvements**: Fixed splitview details close button and responsive behavior
31
+ - 🏷️ **Image Tags**: Added support for image tagging in components
32
+ - 🔧 **HAML Conversion**: Tables documentation files converted to HAML format
33
+
34
+ ---
35
+
36
+ ## Table of Contents
37
+ 1. [Installation & Setup](#installation--setup)
38
+ 2. [Component Library Structure](#component-library-structure)
39
+ 3. [Color System](#color-system)
40
+ 4. [Typography](#typography)
41
+ 5. [Spacing & Layout](#spacing--layout)
42
+ 6. [Layout Patterns](#layout-patterns)
43
+ 7. [Button Components](#button-components)
44
+ 8. [Card Components](#card-components)
45
+ 9. [Form Components](#form-components)
46
+ 10. [Overlay Components (Modal & Drawer)](#overlay-components-modal--drawer)
47
+ 11. [Page Layout Components](#page-layout-components)
48
+ 12. [Navigation Components](#navigation-components)
49
+ 13. [Feedback Components](#feedback-components)
50
+ 14. [Data Display Components](#data-display-components)
51
+ 15. [List Components](#list-components)
52
+ 16. [Splitview Components](#splitview-components)
53
+ 17. [Chat Components](#chat-components)
54
+ 18. [Chart Components](#chart-components)
55
+ 19. [Status & Progress Components](#status--progress-components)
56
+ 20. [Utility Components](#utility-components)
57
+ 21. [AgenticQA Components](#agenticqa-components)
58
+ 22. [Dark Mode](#dark-mode)
59
+ 23. [Best Practices for AI Agents](#best-practices-for-ai-agents)
60
+
61
+ ---
62
+
63
+ ## Installation & Setup
64
+
65
+ ### NPM Installation
66
+ ```bash
67
+ npm install testio-tailwind
68
+ ```
69
+
70
+ ### CSS Import
71
+ ```css
72
+ @import 'testio-tailwind/dist/static/app.compiled.css';
73
+ ```
74
+
75
+ ### JavaScript Import
76
+ ```javascript
77
+ import 'testio-tailwind/dist/static/app.bundled.js';
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Component Library Structure
83
+
84
+ The design system includes a comprehensive component library organized by category. All components are documented with live examples in the `src/pages/` directory.
85
+
86
+ ### Directory Organization
87
+
88
+ ```
89
+ src/pages/
90
+ ├── agenticqa/ # AgenticQA-specific components
91
+ │ ├── assets.haml
92
+ │ ├── chat_*.haml # Chat variants
93
+ │ ├── header.haml
94
+ │ ├── listitem.haml
95
+ │ ├── pageheader.haml
96
+ │ ├── splitview_items.haml
97
+ │ ├── status_stepper.haml
98
+ │ └── tables-*.haml
99
+ ├── buttons/ # Button components and variants
100
+ │ ├── buttons.haml # Standard buttons
101
+ │ ├── buttons-sm.haml # Small buttons
102
+ │ ├── buttons-lg.haml # Large buttons
103
+ │ ├── buttons-xl.haml # Extra large buttons
104
+ │ ├── buttons-round.haml
105
+ │ ├── square-buttons.haml
106
+ │ ├── block.haml
107
+ │ ├── button_group.haml
108
+ │ ├── buttons_input.haml
109
+ │ └── dropdown-menu.haml
110
+ ├── charts/ # ECharts data visualization
111
+ │ ├── area.haml
112
+ │ ├── bar_horizontal.haml
113
+ │ ├── bar_vertical.haml
114
+ │ ├── colors.haml
115
+ │ ├── donut.haml
116
+ │ ├── gauge.haml
117
+ │ ├── legend.haml
118
+ │ └── line.haml
119
+ ├── components/ # UI components
120
+ │ ├── alerts.haml
121
+ │ ├── cards.haml
122
+ │ ├── cards_*.haml # Card variants
123
+ │ ├── chat_window.haml
124
+ │ ├── drawer.haml
125
+ │ ├── drawer_filter.haml
126
+ │ ├── emptystate.haml
127
+ │ ├── info_popover.haml
128
+ │ ├── listitems.haml
129
+ │ ├── listitems_*.haml # List item variants
130
+ │ ├── loading_spinner.haml
131
+ │ ├── modal_details.haml
132
+ │ ├── notifications.haml
133
+ │ ├── pagination.haml
134
+ │ ├── progress.haml
135
+ │ ├── splitview_*.haml
136
+ │ └── tags.haml
137
+ ├── forms/ # Form components
138
+ │ ├── forms.haml # Basic inputs
139
+ │ ├── checkboxes.haml
140
+ │ ├── radiobuttons.haml
141
+ │ ├── toggle-switch.haml
142
+ │ ├── toggle-buttons.haml
143
+ │ ├── select2.haml
144
+ │ ├── tomselect.haml
145
+ │ ├── flatpickr.haml # Date/time picker
146
+ │ ├── date-time.haml
147
+ │ ├── textarea.haml
148
+ │ ├── rating_scale.haml
149
+ │ ├── selectable_token.haml
150
+ │ └── form_grid.haml
151
+ ├── layout/ # Layout utilities
152
+ │ ├── app_layout.haml
153
+ │ ├── spacing.haml
154
+ │ ├── paddings.haml
155
+ │ ├── margins.haml
156
+ │ ├── max_width.haml
157
+ │ ├── centered_layout.haml # Centered layout documentation
158
+ │ └── darkmode.haml # Dark mode layout documentation
159
+ ├── layouts/ # Full layout examples
160
+ │ ├── layout-full.haml
161
+ │ ├── layout-centered.haml # Centered layout example
162
+ │ └── layout-darkmode.haml # Dark mode layout example
163
+ ├── navigation/ # Navigation components
164
+ │ ├── header.haml
165
+ │ ├── header_*.haml # Portal-specific headers
166
+ │ ├── header-centered.haml # Centered layout header
167
+ │ ├── sidebar.haml
168
+ │ ├── sidebar_*.haml # Portal-specific sidebars
169
+ │ ├── tabnavigation.haml
170
+ │ ├── tabnavigation_*.haml
171
+ │ └── radio_tabs.haml
172
+ ├── tables/ # Table components
173
+ │ ├── tables.haml
174
+ │ ├── tables_alternating.haml
175
+ │ ├── tables_borders.haml
176
+ │ ├── tables_cells.haml
177
+ │ ├── tables_footer.haml
178
+ │ ├── tables_header.haml
179
+ │ ├── tables_linked.haml
180
+ │ ├── tables-cellstyle.haml
181
+ │ └── tables-grid.haml
182
+ └── typography/ # Typography examples
183
+ ├── headings.haml
184
+ ├── section_header.haml
185
+ └── text_with_icon.haml
186
+ ```
187
+
188
+ ### How to Use Components
189
+
190
+ #### 1. **View Live Examples**
191
+ All components have live documentation available at the local development server:
192
+ ```bash
193
+ npm start
194
+ # Visit: http://localhost:8080/buttons/
195
+ # Visit: http://localhost:8080/components/
196
+ # Visit: http://localhost:8080/forms/
197
+ # Visit: http://localhost:8080/tables/
198
+ # Visit: http://localhost:8080/charts/
199
+ # Visit: http://localhost:8080/layout/
200
+ ```
201
+
202
+ #### 2. **Layout Examples**
203
+ Complete layout examples with live previews:
204
+ ```
205
+ # Full-width layout example
206
+ http://localhost:8080/pages/layouts/layout-full
207
+
208
+ # Centered layout example (recommended for documentation and forms)
209
+ http://localhost:8080/pages/layouts/layout-centered
210
+
211
+ # Dark mode layout example
212
+ http://localhost:8080/pages/layouts/layout-darkmode
213
+ ```
214
+
215
+ **Layout Documentation:**
216
+ - [centered_layout.haml](src/pages/layout/centered_layout.haml) - Centered layout structure and documentation
217
+ - [darkmode.haml](src/pages/layout/darkmode.haml) - Dark mode implementation guide
218
+
219
+ #### 3. **HAML to HTML Reference**
220
+
221
+ ```haml
222
+ <!-- HAML -->
223
+ %button.btn.btn-primary{type:'submit', disabled:''}
224
+ %i.icon.icon-save.mr-xs
225
+ Save Changes
226
+
227
+ <!-- Renders as -->
228
+ <button class="btn btn-primary" type="submit" disabled="">
229
+ <i class="icon icon-save mr-xs"></i>
230
+ Save Changes
231
+ </button>
232
+ ```
233
+
234
+ **HAML Attribute Format:**
235
+ - Use curly braces for attributes: `{key:'value'}`
236
+ - Boolean attributes: `{checked:''}` or `{disabled:''}`
237
+ - Multiple attributes: `{type:'checkbox', id:'check1'}`
238
+
239
+ ---
240
+
241
+ ## Color System
242
+
243
+ ### Semantic Colors
244
+ Use these color utilities for consistent semantic meaning:
245
+
246
+ ```html
247
+ <!-- Primary Actions -->
248
+ <div class="bg-primary text-white">Primary action</div>
249
+ <div class="bg-link text-white">Link color</div>
250
+
251
+ <!-- Status Colors -->
252
+ <div class="bg-success text-white">Success state</div>
253
+ <div class="bg-danger text-white">Error/danger state</div>
254
+ <div class="bg-info text-white">Information</div>
255
+ <div class="bg-blocked text-white">Warning/blocked</div>
256
+ <div class="bg-pending text-gray-darker">Pending state</div>
257
+
258
+ <!-- Functional Colors -->
259
+ <div class="bg-appbody text-appbody-textcolor">App background</div>
260
+ <div class="bg-card">Card background</div>
261
+ <div class="bg-header text-white">Header background</div>
262
+ <div class="bg-listitem">List item background</div>
263
+ <div class="bg-actionbar">Action bar (dark)</div>
264
+ <div class="border-bordercolor">Standard border</div>
265
+ ```
266
+
267
+ ### Color Palette
268
+
269
+ **Grays:** `gray-100` through `gray-900`, plus `gray-lightest`, `gray-lighter`, `gray-light`, `gray-dark`, `gray-darker`, `gray-darkest`
270
+
271
+ **Brand Colors:**
272
+ - **Primary (Petrol):** `petrol` (#236a84 light, #78eac1 dark)
273
+ - **Success:** `green` (#8cbd24 light, #33BA9E dark)
274
+ - **Danger/Critical:** `red` (#ec0404 light, #FF3131 dark)
275
+ - **Warning:** `orange` (#f48d21)
276
+ - **Info:** `blue` (#326dd1)
277
+ - **Accent Colors:** `teal`, `purple`, `pink`, `yellow`
278
+
279
+ **Priority Levels:**
280
+ - `critical` - Red (#FF3131)
281
+ - `high` - Yellow (#d8ce0d)
282
+ - `low` - Gray (#9fa2a8)
283
+
284
+ **Issue Types:**
285
+ - `visual` - Orange (#f48d21)
286
+ - `content` - Blue (#326dd1)
287
+ - `usability` - Petrol dark (#263340)
288
+
289
+ ---
290
+
291
+ ## Typography
292
+
293
+ ### Font Families
294
+ - **Body/Sans:** `font-sans` - Source Sans 3
295
+ - **Monospace:** `font-mono` - Source Code Pro
296
+
297
+ ### Headings
298
+ ```html
299
+ <h1 class="text-heading-1 font-light">Main Title (2.25rem)</h1>
300
+ <h2 class="text-heading-2 font-light">Section Title (1.875rem)</h2>
301
+ <h3 class="text-heading-3 font-light">Subsection (1.563rem)</h3>
302
+ <h4 class="text-heading-4 font-light">Sub-heading (1.375rem)</h4>
303
+ <h5 class="text-heading-5 font-light">Minor heading (1.125rem)</h5>
304
+ <h6 class="text-heading-6 font-light">Smallest heading (1rem)</h6>
305
+ ```
306
+
307
+ ### Display Text
308
+ ```html
309
+ <h1 class="text-display-1 font-extralight">Hero Text (3.25rem)</h1>
310
+ <h2 class="text-display-2 font-extralight">Large Display (3rem)</h2>
311
+ <h3 class="text-display-3 font-extralight">Medium Display (2.75rem)</h3>
312
+ <h4 class="text-display-4 font-extralight">Small Display (2.5rem)</h4>
313
+ ```
314
+
315
+ ### Body Text Sizes
316
+ ```html
317
+ <p class="text-base">Base text (0.875rem - default)</p>
318
+ <p class="text-lg">Large text (1.25rem)</p>
319
+ <p class="text-sm">Small text (0.813rem)</p>
320
+ <p class="text-xs">Extra small (0.6875rem)</p>
321
+ <p class="text-xxs">Tiny text (0.625rem)</p>
322
+ ```
323
+
324
+ ### Labels & Special Text
325
+ ```html
326
+ <label class="text-label">Form Label (0.8125rem, 0.75rem in dark)</label>
327
+ <label class="text-label-sm">Small Label (0.75rem)</label>
328
+ <h3 class="text-card-header">Card Header (1.125rem in dark)</h3>
329
+ ```
330
+
331
+ ---
332
+
333
+ ## Spacing & Layout
334
+
335
+ ### Spacing Scale
336
+ - `xxs` - 0.3125rem (5px)
337
+ - `xs` - 0.625rem (10px)
338
+ - `sm` - 0.9375rem (15px)
339
+ - `md` - 1.25rem (20px)
340
+ - `spacing` - 1.875rem (30px) - **base unit**
341
+ - `lg` - 3.125rem (50px)
342
+ - `xl` - 3.75rem (60px)
343
+ - `xxl` - 5.625rem (90px)
344
+
345
+ ### Common Spacing Patterns
346
+ ```html
347
+ <!-- Padding -->
348
+ <div class="p-md">Standard padding (20px)</div>
349
+ <div class="p-card-padding">Card padding (30px)</div>
350
+ <div class="px-md py-sm">Mixed padding</div>
351
+
352
+ <!-- Margins -->
353
+ <div class="mb-spacing">Standard margin bottom (30px)</div>
354
+ <div class="mt-xxs">Tiny margin top (5px)</div>
355
+ <div class="mb-heading">Bottom margin for headings</div>
356
+
357
+ <!-- Gaps (for flexbox/grid) -->
358
+ <div class="flex gap-xs">Flex with 10px gap</div>
359
+ <div class="grid gap-grid-gutter">Grid with gutter (20px light, 40px dark)</div>
360
+ ```
361
+
362
+ ### Breakpoints
363
+ ```css
364
+ xs: 30rem (480px)
365
+ sm: 640px (default Tailwind)
366
+ md: 768px (default Tailwind)
367
+ lg: 70rem (1120px)
368
+ xl: 90rem (1440px)
369
+ 2xl: 100rem (1600px)
370
+ 3xl: 1930px
371
+ ```
372
+
373
+ ---
374
+
375
+ ## Layout Patterns
376
+
377
+ ### Standard Application Layout Structure
378
+ The application uses a consistent layout structure across all pages:
379
+
380
+ ```html
381
+ <body class="app-body">
382
+ <header class="header">
383
+ <!-- Navigation and branding -->
384
+ </header>
385
+ <main class="main-content">
386
+ <!-- Page content -->
387
+ </main>
388
+ <footer class="actionbar">
389
+ <!-- Actions and controls -->
390
+ </footer>
391
+ </body>
392
+ ```
393
+
394
+ ### Full-Width Layout
395
+ Standard layout with content spanning the full width of the viewport:
396
+
397
+ ```html
398
+ <body class="app-body">
399
+ <header class="header">
400
+ <!-- Full-width header -->
401
+ </header>
402
+ <main class="main-content">
403
+ <div class="page-content">
404
+ <!-- Content fills available space -->
405
+ </div>
406
+ </main>
407
+ <footer class="actionbar">
408
+ <!-- Full-width footer -->
409
+ </footer>
410
+ </body>
411
+ ```
412
+
413
+ **Use Case:** Dashboard layouts, full-width data displays, and responsive mobile views.
414
+
415
+ ### Centered Layout
416
+ Centered layout with max-width constraints for optimal readability on widescreen screens:
417
+
418
+ ```html
419
+ <body class="app-body">
420
+ <header class="header">
421
+ <!-- Centered header -->
422
+ </header>
423
+ <main class="main-content centered">
424
+ <div class="centered-content">
425
+ <!-- Content centered with max-width -->
426
+ </div>
427
+ </main>
428
+ <footer class="actionbar centered">
429
+ <!-- Centered footer -->
430
+ </footer>
431
+ </body>
432
+ ```
433
+
434
+ **Key Classes:**
435
+ - `.main-content.centered` - Centers the main content
436
+ - `.centered-content` - Wrapper for centered content with max-width constraint
437
+ - `.actionbar.centered` - Centered variant of action bar
438
+
439
+ **Use Case:** Documentation pages, information displays, form submissions, and content with optimal line length requirements.
440
+
441
+ **Max-Width Values:**
442
+ - `.max-w-capped` - Standard max-width for centered content (typically 800px)
443
+ - Ensures readability on widescreen displays while maintaining responsive behavior
444
+
445
+ **Example Centered Actionbar:**
446
+ ```html
447
+ <footer class="actionbar centered">
448
+ <div class="flex justify-center gap-md">
449
+ <button class="btn btn-secondary">Cancel</button>
450
+ <button class="btn btn-primary">Submit</button>
451
+ </div>
452
+ </footer>
453
+ ```
454
+
455
+ ---
456
+
457
+ ## Button Components
458
+
459
+ ### Basic Buttons
460
+ ```html
461
+ <!-- Primary button -->
462
+ <button class="btn btn-primary">Primary Action</button>
463
+
464
+ <!-- Secondary (outline) button -->
465
+ <button class="btn btn-secondary">Secondary Action</button>
466
+
467
+ <!-- Ghost button (no border/background) -->
468
+ <button class="btn btn-ghost">Ghost Action</button>
469
+
470
+ <!-- Link button (text style) -->
471
+ <button class="btn btn-link">Link Style</button>
472
+
473
+ <!-- Dashed border button -->
474
+ <button class="btn btn-dashed">Add New</button>
475
+ ```
476
+
477
+ ### Semantic Button Variants
478
+ ```html
479
+ <button class="btn btn-success">Success Action</button>
480
+ <button class="btn btn-danger">Delete/Danger</button>
481
+ <button class="btn btn-warning">Warning Action</button>
482
+ <button class="btn btn-info">Info Action</button>
483
+ ```
484
+
485
+ ### Button Sizes
486
+ ```html
487
+ <!-- Small button -->
488
+ <button class="btn btn-sm btn-primary">Small</button>
489
+
490
+ <!-- Default button (h-btn = 2.5rem/40px) -->
491
+ <button class="btn btn-primary">Default</button>
492
+
493
+ <!-- Large button (for icon buttons) -->
494
+ <button class="btn btn-lg btn-primary">
495
+ <i class="icon icon-star"></i>
496
+ </button>
497
+
498
+ <!-- Extra large button with label -->
499
+ <button class="btn btn-xl btn-primary">
500
+ <i class="icon icon-upload"></i>
501
+ Upload
502
+ </button>
503
+ ```
504
+
505
+ ### Button Shapes
506
+ ```html
507
+ <!-- Square icon button -->
508
+ <button class="btn btn-square btn-primary">
509
+ <i class="icon icon-search"></i>
510
+ </button>
511
+
512
+ <!-- Circle button -->
513
+ <button class="btn btn-circle btn-primary">
514
+ <i class="icon icon-add"></i>
515
+ </button>
516
+
517
+ <!-- Block button (full width) -->
518
+ <button class="btn btn-block btn-primary">Full Width</button>
519
+ ```
520
+
521
+ ### Inverted Buttons (for dark backgrounds)
522
+ ```html
523
+ <div class="bg-actionbar p-md">
524
+ <button class="btn btn-primary-inverted">Primary Inverted</button>
525
+ <button class="btn btn-inverted">Inverted</button>
526
+ <button class="btn btn-secondary-inverted">Secondary Inverted</button>
527
+ <button class="btn btn-outline-primary-inverted">Outline Primary Inverted</button>
528
+ <button class="btn btn-ghost-inverted">Ghost Inverted</button>
529
+ </div>
530
+ ```
531
+
532
+ ### Buttons with Icons
533
+ ```html
534
+ <button class="btn btn-primary">
535
+ <i class="icon icon-save mr-icon-spacing"></i>
536
+ Save Changes
537
+ </button>
538
+
539
+ <button class="btn btn-secondary">
540
+ <i class="icon icon-download mr-icon-spacing"></i>
541
+ Download
542
+ </button>
543
+ ```
544
+
545
+ ### Dropdown Menu Button
546
+ ```html
547
+ <details class="dropdown-actions">
548
+ <summary>
549
+ <div class="btn btn-square btn-primary">
550
+ <span class="icon icon-more"></span>
551
+ </div>
552
+ </summary>
553
+ <div class="popover-menu">
554
+ <a class="popover-action" href="#">
555
+ <span class="icon icon-pencil"></span>
556
+ Edit
557
+ </a>
558
+ <a class="popover-action" href="#">
559
+ <span class="icon icon-duplicate"></span>
560
+ Duplicate
561
+ </a>
562
+ <a class="popover-action" href="#">
563
+ <span class="icon icon-remove"></span>
564
+ Delete
565
+ </a>
566
+ </div>
567
+ </details>
568
+
569
+ <!-- Direction variants -->
570
+ <details class="dropdown-actions dropright"><!-- Opens to right --></details>
571
+ <details class="dropdown-actions dropup dropright"><!-- Opens up and right --></details>
572
+ ```
573
+
574
+ ### Button Groups
575
+ ```html
576
+ <div class="btn-group">
577
+ <button class="btn btn-primary">Left</button>
578
+ <button class="btn btn-primary">Center</button>
579
+ <button class="btn btn-primary">Right</button>
580
+ </div>
581
+ ```
582
+
583
+ ---
584
+
585
+ ## Card Components
586
+
587
+ ### Basic Card Structure
588
+ ```html
589
+ <div class="card">
590
+ <div class="card-header">
591
+ <h3 class="card-title">Card Title</h3>
592
+ </div>
593
+ <div class="card-body">
594
+ <p>Card content goes here</p>
595
+ </div>
596
+ <div class="card-footer">
597
+ <button class="btn btn-primary btn-block">Action</button>
598
+ <button class="btn btn-secondary btn-block">Cancel</button>
599
+ </div>
600
+ </div>
601
+ ```
602
+
603
+ ### Card Sizes
604
+ ```html
605
+ <!-- Small card (11.25rem on sm+ screens) -->
606
+ <div class="card card-sm">...</div>
607
+
608
+ <!-- Medium card (17.5rem) -->
609
+ <div class="card card-md">...</div>
610
+
611
+ <!-- Large card (23.75rem) -->
612
+ <div class="card card-lg">...</div>
613
+ ```
614
+
615
+ ### Card Variants
616
+ ```html
617
+ <!-- Highlighted card (info blue background) -->
618
+ <div class="card highlight">...</div>
619
+
620
+ <!-- Card with highlighted header only -->
621
+ <div class="card">
622
+ <div class="card-header highlight">
623
+ <h3 class="card-title">Highlighted Header</h3>
624
+ </div>
625
+ <div class="card-body">Regular content</div>
626
+ </div>
627
+
628
+ <!-- Card with image -->
629
+ <div class="card">
630
+ <img src="image.jpg" alt="Card image" class="card-image">
631
+ <div class="card-header">
632
+ <h3 class="card-title">Card with Image</h3>
633
+ </div>
634
+ <div class="card-body">Content</div>
635
+ </div>
636
+
637
+ <!-- Card with icon header -->
638
+ <div class="card">
639
+ <div class="card-icon-header">
640
+ <i class="icon icon-star"></i>
641
+ </div>
642
+ <div class="card-body">
643
+ <h3 class="card-title">Icon Card</h3>
644
+ <p>Content below icon</p>
645
+ </div>
646
+ </div>
647
+
648
+ <!-- Centered card content -->
649
+ <div class="card text-center">...</div>
650
+ ```
651
+
652
+ ### Card with Info Popover
653
+ ```html
654
+ <div class="card">
655
+ <details class="popover-wrapper dropright card-info-popover">
656
+ <summary>
657
+ <div class="btn btn-sm btn-square">
658
+ <div class="icon icon-info"></div>
659
+ </div>
660
+ </summary>
661
+ <div class="popover-menu info">
662
+ <div class="popover-title">Popover title</div>
663
+ <div class="popover-content">Popover content...</div>
664
+ </div>
665
+ </details>
666
+ <div class="card-header">
667
+ <h3 class="card-title">Card with info popover</h3>
668
+ </div>
669
+ <div class="card-body">Content</div>
670
+ </div>
671
+ ```
672
+
673
+ ### Card Layouts
674
+ ```html
675
+ <!-- Grid of cards (responsive) -->
676
+ <div class="grid-cards">
677
+ <div class="card">...</div>
678
+ <div class="card">...</div>
679
+ <div class="card">...</div>
680
+ </div>
681
+
682
+ <!-- List of cards (horizontal wrap) -->
683
+ <div class="list-cards">
684
+ <div class="card card-sm">...</div>
685
+ <div class="card card-sm">...</div>
686
+ </div>
687
+
688
+ <!-- Achievements grid (6 columns on 2xl screens) -->
689
+ <div class="grid-cards-achievements">
690
+ <div class="card">...</div>
691
+ </div>
692
+ ```
693
+
694
+ ---
695
+
696
+ ## Form Components
697
+
698
+ ### Form Group Structure
699
+ ```html
700
+ <div class="form-group">
701
+ <label class="form-label">Email Address</label>
702
+ <input type="email" class="form-control" placeholder="Enter email">
703
+ </div>
704
+
705
+ <!-- Optional field -->
706
+ <div class="form-group">
707
+ <label class="form-label optional">Phone Number</label>
708
+ <input type="tel" class="form-control">
709
+ </div>
710
+ ```
711
+
712
+ ### Form Inputs
713
+ ```html
714
+ <!-- Text input -->
715
+ <input type="text" class="form-control" placeholder="Enter text">
716
+
717
+ <!-- Textarea -->
718
+ <textarea class="form-control" rows="4" placeholder="Enter description"></textarea>
719
+
720
+ <!-- Disabled input -->
721
+ <input type="text" class="form-control" disabled value="Read only">
722
+
723
+ <!-- With validation error -->
724
+ <div class="form-group">
725
+ <label class="form-label">Username</label>
726
+ <div class="field_with_errors">
727
+ <input type="text" class="form-control">
728
+ </div>
729
+ <div class="form-hint error">Username is required</div>
730
+ </div>
731
+ ```
732
+
733
+ ### Form Hints
734
+ ```html
735
+ <!-- Standard hint -->
736
+ <div class="form-hint">This field is optional</div>
737
+
738
+ <!-- Error hint -->
739
+ <div class="form-hint error">Please enter a valid email</div>
740
+ ```
741
+
742
+ ### Form Grid Layout
743
+ ```html
744
+ <!-- Standard form grid -->
745
+ <div class="form-grid">
746
+ <div class="form-group">...</div>
747
+ <div class="form-group">...</div>
748
+ </div>
749
+
750
+ <!-- Single column form grid -->
751
+ <div class="form-grid single">
752
+ <div class="form-group">...</div>
753
+ </div>
754
+
755
+ <!-- Narrow single column -->
756
+ <div class="form-grid single narrow">
757
+ <div class="form-group">...</div>
758
+ </div>
759
+ ```
760
+
761
+ ### Checkboxes
762
+ ```html
763
+ <!-- Default checkbox -->
764
+ <div class="form-check">
765
+ <input id="check1" type="checkbox">
766
+ <label for="check1">Checkbox</label>
767
+ </div>
768
+
769
+ <!-- Checked checkbox -->
770
+ <div class="form-check">
771
+ <input id="check2" type="checkbox" checked="true">
772
+ <label for="check2">Checked</label>
773
+ </div>
774
+
775
+ <!-- Small checkbox -->
776
+ <div class="form-check sm">
777
+ <input id="check3" type="checkbox">
778
+ <label for="check3">Checkbox SM</label>
779
+ </div>
780
+
781
+ <!-- Disabled checkbox -->
782
+ <div class="form-check disabled">
783
+ <input id="check4" type="checkbox" disabled="true">
784
+ <label for="check4">Disabled</label>
785
+ </div>
786
+
787
+ <!-- With error state -->
788
+ <div class="form-check">
789
+ <div class="field_with_errors">
790
+ <input id="check5" type="checkbox">
791
+ </div>
792
+ <label for="check5">Checkbox with error</label>
793
+ </div>
794
+
795
+ <!-- Inverted (for dark backgrounds) -->
796
+ <div class="form-check inverted">
797
+ <input id="check6" type="checkbox">
798
+ <label for="check6">Inverted</label>
799
+ </div>
800
+ ```
801
+
802
+ ### Radio Buttons
803
+ ```html
804
+ <!-- Radio group -->
805
+ <div class="form-radio">
806
+ <input id="radio1" type="radio" name="radio-group" value="1" checked="true">
807
+ <label for="radio1">Option 1</label>
808
+ </div>
809
+ <div class="form-radio">
810
+ <input id="radio2" type="radio" name="radio-group" value="2">
811
+ <label for="radio2">Option 2</label>
812
+ </div>
813
+ <div class="form-radio">
814
+ <input id="radio3" type="radio" name="radio-group" value="3">
815
+ <label for="radio3">Option 3</label>
816
+ </div>
817
+
818
+ <!-- Small radio -->
819
+ <div class="form-radio sm">
820
+ <input id="radio4" type="radio" name="radio-sm" value="1">
821
+ <label for="radio4">SM Option 1</label>
822
+ </div>
823
+
824
+ <!-- Disabled radio -->
825
+ <div class="form-radio disabled">
826
+ <input id="radio5" type="radio" name="radio-group" value="4" disabled="true">
827
+ <label for="radio5">Disabled</label>
828
+ </div>
829
+
830
+ <!-- Inverted (for dark backgrounds) -->
831
+ <div class="form-radio inverted">
832
+ <input id="radio6" type="radio" name="radio-inv" value="1">
833
+ <label for="radio6">Inverted Option</label>
834
+ </div>
835
+ ```
836
+
837
+ ### Toggle Switch
838
+ ```html
839
+ <!-- Toggle switch -->
840
+ <div class="form-toggle">
841
+ <label class="toggle-switch" for="toggle1">
842
+ <input id="toggle1" type="checkbox">
843
+ <span class="slider"></span>
844
+ </label>
845
+ <label class="toggle-switch-label" for="toggle1">Toggle Switch</label>
846
+ </div>
847
+
848
+ <!-- Active toggle -->
849
+ <div class="form-toggle">
850
+ <label class="toggle-switch" for="toggle2">
851
+ <input id="toggle2" type="checkbox" checked="true">
852
+ <span class="slider"></span>
853
+ </label>
854
+ <label class="toggle-switch-label" for="toggle2">Active Toggle</label>
855
+ </div>
856
+
857
+ <!-- Small toggle -->
858
+ <div class="form-toggle sm">
859
+ <label class="toggle-switch" for="toggle3">
860
+ <input id="toggle3" type="checkbox">
861
+ <span class="slider"></span>
862
+ </label>
863
+ <label class="toggle-switch-label" for="toggle3">Toggle SM</label>
864
+ </div>
865
+
866
+ <!-- Disabled toggle -->
867
+ <div class="form-toggle">
868
+ <label class="toggle-switch disabled" for="toggle4">
869
+ <input id="toggle4" type="checkbox" disabled="disabled">
870
+ <span class="slider"></span>
871
+ </label>
872
+ <label class="toggle-switch-label" for="toggle4">Disabled</label>
873
+ </div>
874
+ ```
875
+
876
+ ### Select Inputs
877
+
878
+ #### Native Select
879
+ ```html
880
+ <select class="form-control">
881
+ <option>Choose an option</option>
882
+ <option value="1">Option 1</option>
883
+ <option value="2">Option 2</option>
884
+ </select>
885
+ ```
886
+
887
+ #### Select2 Enhanced Select
888
+ ```html
889
+ <div class="form-group form-select">
890
+ <label class="form-label">Select</label>
891
+ <select class="select2" placeholder="Please select">
892
+ <option value="Option 1">Option 1</option>
893
+ <option value="Option 2">Option 2</option>
894
+ <option value="Option 3">Option 3</option>
895
+ </select>
896
+ </div>
897
+
898
+ <!-- Multi-select -->
899
+ <div class="form-group multi-select">
900
+ <label class="form-label">Select multiple</label>
901
+ <select class="select2" multiple="true" placeholder="Please select">
902
+ <option>Option 1</option>
903
+ <option>Option 2</option>
904
+ <option>Option 3</option>
905
+ </select>
906
+ </div>
907
+
908
+ <!-- With optgroup -->
909
+ <div class="form-group form-select">
910
+ <label class="form-label">Optgroup select</label>
911
+ <select class="select2" placeholder="Please select">
912
+ <optgroup label="Category Label">
913
+ <option>Option 1</option>
914
+ <option>Option 2</option>
915
+ </optgroup>
916
+ </select>
917
+ </div>
918
+ ```
919
+
920
+ #### Tom Select Enhanced Select
921
+ ```html
922
+ <div class="form-group form-select">
923
+ <label class="form-label">Select</label>
924
+ <select class="tom-select" placeholder="Please select">
925
+ <option value=""></option>
926
+ <option value="Option 1">Option 1</option>
927
+ <option value="Option 2">Option 2</option>
928
+ </select>
929
+ </div>
930
+
931
+ <!-- Multi-select -->
932
+ <div class="form-group multi-select">
933
+ <label class="form-label">Select multiple</label>
934
+ <select class="tom-select-multi" multiple="true" placeholder="Please select">
935
+ <option>Option 1</option>
936
+ <option>Option 2</option>
937
+ </select>
938
+ </div>
939
+ ```
940
+
941
+ ### Date & Time Picker (Flatpickr)
942
+ ```html
943
+ <!-- Date picker -->
944
+ <div class="form-group">
945
+ <label class="form-label">Select Date</label>
946
+ <div class="form-date">
947
+ <input class="form-control flatpickr" type="date" placeholder="Choose a date">
948
+ </div>
949
+ </div>
950
+
951
+ <!-- Date and time picker -->
952
+ <div class="form-group">
953
+ <label class="form-label">Select Date & Time</label>
954
+ <div class="form-date">
955
+ <input class="form-control flatpickr-time" type="datetime-local" placeholder="Choose date and time">
956
+ </div>
957
+ </div>
958
+ ```
959
+
960
+ ### Selectable Tokens
961
+ ```html
962
+ <ul class="list-inline flex">
963
+ <li class="selectable-token">
964
+ <input id="token1" type="checkbox" checked="true">
965
+ <label for="token1">
966
+ <span class="icon icon-chrome mr-icon-spacing"></span>
967
+ Selectable token
968
+ </label>
969
+ </li>
970
+ <li class="selectable-token">
971
+ <input id="token2" type="checkbox">
972
+ <label for="token2">
973
+ <span class="icon icon-firefox mr-icon-spacing"></span>
974
+ Another token
975
+ </label>
976
+ </li>
977
+ <li class="selectable-token disabled">
978
+ <input id="token3" type="checkbox" disabled="true">
979
+ <label for="token3">Disabled token</label>
980
+ </li>
981
+ </ul>
982
+
983
+ <!-- Inverted (for dark backgrounds) -->
984
+ <li class="selectable-token inverted">...</li>
985
+ ```
986
+
987
+ ### Rating Scale
988
+ ```html
989
+ <div class="rating-scale">
990
+ <!-- Rating scale component -->
991
+ </div>
992
+ ```
993
+
994
+ ### Form with Addon
995
+ ```html
996
+ <div class="form-group with-addon">
997
+ <label class="form-label">Price</label>
998
+ <input type="number" class="form-control" placeholder="0.00">
999
+ <div class="form-addon">USD</div>
1000
+ </div>
1001
+ ```
1002
+
1003
+ ### Inverted Forms (for dark backgrounds)
1004
+ ```html
1005
+ <div class="form-group inverted">
1006
+ <label class="form-label">Email</label>
1007
+ <input type="email" class="form-control" placeholder="Enter email">
1008
+ <div class="form-hint">We'll never share your email</div>
1009
+ </div>
1010
+ ```
1011
+
1012
+ ---
1013
+
1014
+ ## Overlay Components (Modal & Drawer)
1015
+
1016
+ ### Modal Component
1017
+
1018
+ Modals are used to display content in a layer above the main content. They can contain forms, confirmations, and other interactive content.
1019
+
1020
+ #### Basic Modal
1021
+ ```html
1022
+ <details class="modal-wrapper">
1023
+ <summary class="modal-trigger">
1024
+ <div class="btn btn-primary">Open modal</div>
1025
+ </summary>
1026
+ <div class="modal-container">
1027
+ <div class="modal">
1028
+ <div class="modal-header">
1029
+ <h2 class="modal-title">Modal Title</h2>
1030
+ <div class="btn btn-square close-btn">
1031
+ <div class="icon icon-cross"></div>
1032
+ </div>
1033
+ </div>
1034
+ <div class="modal-content">
1035
+ <p>Modal content goes here...</p>
1036
+ <div class="form-grid">
1037
+ <div class="form-group">
1038
+ <label class="form-label">Input</label>
1039
+ <input class="form-control" type="text" placeholder="">
1040
+ </div>
1041
+ </div>
1042
+ </div>
1043
+ <div class="modal-footer">
1044
+ <a class="btn btn-primary" href="">Primary</a>
1045
+ <a class="btn btn-secondary close-btn" href="">Close</a>
1046
+ </div>
1047
+ </div>
1048
+ </div>
1049
+ </details>
1050
+ ```
1051
+
1052
+ #### Modal Sizes
1053
+ ```html
1054
+ <!-- Large modal -->
1055
+ <div class="modal modal-lg">...</div>
1056
+
1057
+ <!-- Small modal (confirmation dialog) -->
1058
+ <div class="modal modal-sm">...</div>
1059
+ ```
1060
+
1061
+ #### Modal with Disabled Background Close
1062
+ ```html
1063
+ <!-- Prevents closing when clicking outside the modal -->
1064
+ <details class="modal-wrapper fade-close-disabled">
1065
+ <summary class="modal-trigger">
1066
+ <div class="btn btn-primary">Open modal</div>
1067
+ </summary>
1068
+ <div class="modal-container">
1069
+ <div class="modal">...</div>
1070
+ </div>
1071
+ </details>
1072
+ ```
1073
+
1074
+ ### Drawer Component
1075
+
1076
+ Drawers are side panels that slide in from the edge of the screen. They're an alternative to modals for displaying additional content.
1077
+
1078
+ #### Basic Drawer
1079
+ ```html
1080
+ <details class="drawer-wrapper">
1081
+ <summary class="drawer-trigger">
1082
+ <div class="btn btn-primary">Open Drawer</div>
1083
+ </summary>
1084
+ <div class="drawer">
1085
+ <div class="drawer-header">
1086
+ <div class="drawer-title">Drawer title</div>
1087
+ </div>
1088
+ <div class="drawer-content">
1089
+ <p>Drawer content goes here...</p>
1090
+ </div>
1091
+ <div class="drawer-footer">
1092
+ <div class="btn btn-primary">Primary</div>
1093
+ <div class="btn btn-secondary">Secondary</div>
1094
+ </div>
1095
+ </div>
1096
+ </details>
1097
+ ```
1098
+
1099
+ #### Drawer with Close Button
1100
+ ```html
1101
+ <details class="drawer-wrapper">
1102
+ <summary class="drawer-trigger">
1103
+ <div class="btn btn-primary">Open Drawer</div>
1104
+ <button class="btn btn-square close-btn">
1105
+ <div class="icon icon-cross"></div>
1106
+ </button>
1107
+ </summary>
1108
+ <div class="drawer">
1109
+ <!-- Drawer content -->
1110
+ <div class="drawer-footer">
1111
+ <div class="btn btn-primary">Primary</div>
1112
+ <div class="btn btn-secondary close-btn">Close</div>
1113
+ </div>
1114
+ </div>
1115
+ </details>
1116
+ ```
1117
+
1118
+ #### Filter Drawer
1119
+ ```html
1120
+ <details class="drawer-wrapper">
1121
+ <summary class="drawer-trigger">
1122
+ <div class="btn btn-secondary">
1123
+ <span class="icon icon-filter mr-icon-spacing"></span>
1124
+ Filter
1125
+ </div>
1126
+ </summary>
1127
+ <div class="drawer drawer-filter">
1128
+ <!-- Filter form content -->
1129
+ </div>
1130
+ </details>
1131
+ ```
1132
+
1133
+ ---
1134
+
1135
+ ## Page Layout Components
1136
+
1137
+ ### Page Header Component
1138
+
1139
+ A responsive grid layout component for dashboard and session management pages.
1140
+
1141
+ #### Basic Page Header
1142
+ ```html
1143
+ <div class="page-header">
1144
+ <div class="card page-maincard p-card-padding">
1145
+ <h1 class="text-card-header">Session Details</h1>
1146
+ <h2 class="page-session-title">Test Session Title</h2>
1147
+
1148
+ <dl class="page-meta-info">
1149
+ <dt class="label">Created on:</dt>
1150
+ <dd>2025-10-21 10:45 AM</dd>
1151
+
1152
+ <dt class="label">Last test:</dt>
1153
+ <dd>2025-10-21 11:30 AM</dd>
1154
+
1155
+ <dt class="label">ID:</dt>
1156
+ <dd>321456987</dd>
1157
+
1158
+ <dt class="label">URL:</dt>
1159
+ <dd class="row-testsuite">
1160
+ <a href="#" class="label">Test Suite Name</a>
1161
+ </dd>
1162
+
1163
+ <dt class="label">Status:</dt>
1164
+ <dd class="text-white">Active</dd>
1165
+ </dl>
1166
+ </div>
1167
+
1168
+ <div class="page-actions">
1169
+ <a href="#" class="btn btn-primary btn-main">
1170
+ <span class="icon icon-test-running-xl"></span>
1171
+ Start Test
1172
+ </a>
1173
+ </div>
1174
+ </div>
1175
+ ```
1176
+
1177
+ #### Page Header with Chart
1178
+ ```html
1179
+ <div class="page-header with-chart">
1180
+ <div class="card page-maincard p-card-padding">
1181
+ <!-- Main card content -->
1182
+ </div>
1183
+
1184
+ <div class="page-chart card p-card-padding">
1185
+ <div class="echarts-container" id="chart"></div>
1186
+ </div>
1187
+
1188
+ <div class="page-actions">
1189
+ <a href="#" class="btn btn-primary btn-main">
1190
+ <span class="icon icon-review-xl"></span>
1191
+ Show Report
1192
+ </a>
1193
+ <a href="#" class="btn btn-secondary">Re-run All Checks</a>
1194
+ </div>
1195
+ </div>
1196
+ ```
1197
+
1198
+ #### Page Header with Forms
1199
+ ```html
1200
+ <div class="page-header">
1201
+ <div class="card page-maincard p-card-padding">
1202
+ <div class="form-grid">
1203
+ <div class="form-group">
1204
+ <label class="form-label">Test Name</label>
1205
+ <input type="text" class="form-control" placeholder="Enter test name">
1206
+ </div>
1207
+ <div class="form-group">
1208
+ <label class="form-label">URL for Testing</label>
1209
+ <input type="url" class="form-control" placeholder="https://example.com">
1210
+ </div>
1211
+ </div>
1212
+ </div>
1213
+
1214
+ <div class="page-actions">
1215
+ <a href="#" class="btn btn-primary btn-xl">
1216
+ <span class="icon icon-test-running-xl"></span>
1217
+ Save and Run Test
1218
+ </a>
1219
+ <a href="#" class="btn btn-secondary">Save Draft</a>
1220
+ <a href="#" class="btn btn-secondary">Cancel</a>
1221
+ </div>
1222
+ </div>
1223
+ ```
1224
+
1225
+ **Key Classes:**
1226
+ - `.page-header` - Main grid container with responsive columns
1227
+ - `.page-maincard` - Primary content card (spans 2-4 columns based on screen size)
1228
+ - `.page-actions` - Action buttons column (vertical on md+, horizontal on mobile)
1229
+ - `.page-session-title` - Session/test title with bottom margin
1230
+ - `.page-meta-info` - Metadata grid (2 cols mobile, 6 cols xl)
1231
+ - `.row-testsuite` - Special metadata row that spans 5 columns on xl
1232
+ - `.with-chart` - Modifier for including chart column
1233
+ - `.btn-main` - Primary action button that grows to fill available space
1234
+
1235
+ ---
1236
+
1237
+ ## Navigation Components
1238
+
1239
+ ### Header Navigation
1240
+ ```html
1241
+ <header class="header">
1242
+ <div class="header-logo">
1243
+ <img src="logo.svg" alt="Logo">
1244
+ </div>
1245
+ <nav class="header-nav">
1246
+ <a href="#" class="nav-link">Dashboard</a>
1247
+ <a href="#" class="nav-link active">Projects</a>
1248
+ <a href="#" class="nav-link">Settings</a>
1249
+ </nav>
1250
+ <div class="header-actions">
1251
+ <button class="btn btn-sm btn-primary">New Project</button>
1252
+ </div>
1253
+ </header>
1254
+ ```
1255
+
1256
+ ### Sidebar Navigation
1257
+ ```html
1258
+ <aside class="sidebar">
1259
+ <nav class="sidebar-nav">
1260
+ <a href="#" class="sidebar-link active">
1261
+ <i class="icon icon-home"></i>
1262
+ Dashboard
1263
+ </a>
1264
+ <a href="#" class="sidebar-link">
1265
+ <i class="icon icon-folder"></i>
1266
+ Projects
1267
+ </a>
1268
+ <a href="#" class="sidebar-link">
1269
+ <i class="icon icon-settings"></i>
1270
+ Settings
1271
+ </a>
1272
+ </nav>
1273
+ </aside>
1274
+ ```
1275
+
1276
+ ### Tab Navigation
1277
+ ```html
1278
+ <nav class="nav-tabs">
1279
+ <div class="navlink active" href="">Navlink active</div>
1280
+ <div class="navlink" href="">Navlink</div>
1281
+ <div class="navlink" href="">Navlink</div>
1282
+ <div class="navlink" href="">
1283
+ Counter
1284
+ <div class="counter">99</div>
1285
+ </div>
1286
+ <div class="navlink disabled" href="">Disabled</div>
1287
+ </nav>
1288
+ ```
1289
+
1290
+ ### Tab Navigation Variants
1291
+ ```html
1292
+ <!-- Pills style -->
1293
+ <nav class="nav-tabs pills">...</nav>
1294
+
1295
+ <!-- Small tabs -->
1296
+ <nav class="nav-tabs sm">...</nav>
1297
+
1298
+ <!-- Tabs with actions -->
1299
+ <nav class="nav-tabs with-actions">
1300
+ <div class="navlink active">Tab 1</div>
1301
+ <div class="navlink">Tab 2</div>
1302
+ <div class="tab-actions">
1303
+ <button class="btn btn-sm btn-primary">Action</button>
1304
+ </div>
1305
+ </nav>
1306
+ ```
1307
+
1308
+ ### Radio Tabs
1309
+ ```html
1310
+ <div class="radio-tabs">
1311
+ <input type="radio" id="tab1" name="tabs" checked>
1312
+ <label for="tab1">Tab 1</label>
1313
+ <input type="radio" id="tab2" name="tabs">
1314
+ <label for="tab2">Tab 2</label>
1315
+ </div>
1316
+ ```
1317
+
1318
+ ### Product-Specific Headers
1319
+ ```html
1320
+ <!-- Customer portal header -->
1321
+ <header class="header customer_header">...</header>
1322
+
1323
+ <!-- Tester portal header -->
1324
+ <header class="header tester_header">...</header>
1325
+
1326
+ <!-- Manager portal header -->
1327
+ <header class="header manager_header">...</header>
1328
+
1329
+ <!-- AgenticQA header -->
1330
+ <header class="header agenticqa_header">...</header>
1331
+ ```
1332
+
1333
+ ---
1334
+
1335
+ ## Feedback Components
1336
+
1337
+ ### Alerts
1338
+
1339
+ Alerts notify users about important information or actions that require their attention.
1340
+
1341
+ ```html
1342
+ <!-- Default alert -->
1343
+ <div class="alert">
1344
+ <div class="alert-message">Alert message</div>
1345
+ <button class="close">
1346
+ <div class="icon icon-cross"></div>
1347
+ </button>
1348
+ </div>
1349
+
1350
+ <!-- Alert with button -->
1351
+ <div class="alert">
1352
+ <div class="alert-message">
1353
+ Alert with a button
1354
+ <button class="btn btn-white">Alert action</button>
1355
+ </div>
1356
+ <button class="close">
1357
+ <div class="icon icon-cross"></div>
1358
+ </button>
1359
+ </div>
1360
+
1361
+ <!-- Info alert -->
1362
+ <div class="alert alert-info">
1363
+ <div class="alert-message">Info Alert</div>
1364
+ <button class="close">
1365
+ <div class="icon icon-cross"></div>
1366
+ </button>
1367
+ </div>
1368
+
1369
+ <!-- Success alert -->
1370
+ <div class="alert alert-success">
1371
+ <div class="alert-message">Success Alert</div>
1372
+ <button class="close">
1373
+ <div class="icon icon-cross"></div>
1374
+ </button>
1375
+ </div>
1376
+
1377
+ <!-- Warning alert -->
1378
+ <div class="alert alert-warning">
1379
+ <div class="alert-message">Warning Alert</div>
1380
+ <button class="close">
1381
+ <div class="icon icon-cross"></div>
1382
+ </button>
1383
+ </div>
1384
+
1385
+ <!-- Error alert -->
1386
+ <div class="alert alert-error">
1387
+ <div class="alert-message">Error Alert</div>
1388
+ <button class="close">
1389
+ <div class="icon icon-cross"></div>
1390
+ </button>
1391
+ </div>
1392
+ ```
1393
+
1394
+ ### Notifications
1395
+
1396
+ Notifications inform users about important updates. They can replace alerts and support various styles.
1397
+
1398
+ ```html
1399
+ <!-- Notification container -->
1400
+ <div class="notification-container">
1401
+ <!-- Basic notification -->
1402
+ <a class="notification" href="">
1403
+ <div class="notification-title">Linked Info Notification</div>
1404
+ <div class="notification-content">
1405
+ <div class="notification-message">You have 60 min left to finish this task.</div>
1406
+ </div>
1407
+ <button class="btn btn-close">
1408
+ <span class="icon icon-cross"></span>
1409
+ </button>
1410
+ </a>
1411
+
1412
+ <!-- Notification with icon -->
1413
+ <a class="notification" href="">
1414
+ <div class="notification-badge">
1415
+ <div class="icon icon-bug-fix-confirmation-lg"></div>
1416
+ </div>
1417
+ <div class="notification-content">
1418
+ <div class="notification-title">Notification with icon</div>
1419
+ <div class="notification-message">Message content...</div>
1420
+ </div>
1421
+ <button class="btn btn-close">
1422
+ <span class="icon icon-cross"></span>
1423
+ </button>
1424
+ </a>
1425
+
1426
+ <!-- Success notification -->
1427
+ <a class="notification success" href="">...</a>
1428
+
1429
+ <!-- Warning notification -->
1430
+ <a class="notification warning" href="">...</a>
1431
+
1432
+ <!-- Error notification -->
1433
+ <a class="notification error" href="">...</a>
1434
+
1435
+ <!-- Notification with badge image -->
1436
+ <a class="notification badges" href="">
1437
+ <div class="notification-badge">
1438
+ <img src="/assets/images/badge.svg">
1439
+ </div>
1440
+ <div class="notification-title">New badge received</div>
1441
+ <div class="notification-content">Badge description</div>
1442
+ <button class="btn btn-close">
1443
+ <span class="icon icon-cross"></span>
1444
+ </button>
1445
+ </a>
1446
+
1447
+ <!-- Notification with dedicated button -->
1448
+ <div class="notification">
1449
+ <div class="notification-title">Notification with button</div>
1450
+ <div class="notification-content">
1451
+ <div class="notification-message">Message content...</div>
1452
+ <a class="btn btn-sm btn-inverted" href="">Go to page</a>
1453
+ </div>
1454
+ <button class="btn btn-close">
1455
+ <span class="icon icon-cross"></span>
1456
+ </button>
1457
+ </div>
1458
+ </div>
1459
+ ```
1460
+
1461
+ ### Progress Bars
1462
+
1463
+ ```html
1464
+ <!-- Default progress bar -->
1465
+ <progress class="progress" value="32" max="100">32%</progress>
1466
+
1467
+ <!-- Success progress bar -->
1468
+ <progress class="progress progress-bar-success" value="32" max="100">32%</progress>
1469
+
1470
+ <!-- Danger progress bar -->
1471
+ <progress class="progress progress-bar-danger" value="32" max="100">32%</progress>
1472
+
1473
+ <!-- Test progress (special styling) -->
1474
+ <progress class="progress test-progress" value="32" max="100">32%</progress>
1475
+
1476
+ <!-- Thick progress bar -->
1477
+ <progress class="progress thick" value="32" max="100">32%</progress>
1478
+ ```
1479
+
1480
+ ### Loading Spinner
1481
+ ```html
1482
+ <div class="loading-spinner">
1483
+ <div class="spinner"></div>
1484
+ <p class="loading-text">Loading...</p>
1485
+ </div>
1486
+ ```
1487
+
1488
+ ### Empty State
1489
+
1490
+ Empty state messages inform users when there is no data to display.
1491
+
1492
+ ```html
1493
+ <!-- Default empty state -->
1494
+ <div class="empty-state-message">
1495
+ No items here yet.
1496
+ </div>
1497
+
1498
+ <!-- Search empty state -->
1499
+ <div class="empty-state-message search">
1500
+ No search results found.
1501
+ </div>
1502
+
1503
+ <!-- Sad empty state -->
1504
+ <div class="empty-state-message sad">
1505
+ Something went wrong.
1506
+ </div>
1507
+
1508
+ <!-- Smiling empty state -->
1509
+ <div class="empty-state-message smile">
1510
+ All caught up!
1511
+ </div>
1512
+
1513
+ <!-- Deceased empty state -->
1514
+ <div class="empty-state-message deceased">
1515
+ This item has been archived.
1516
+ </div>
1517
+
1518
+ <!-- Chat empty state -->
1519
+ <div class="empty-state-message chat">
1520
+ No messages yet.
1521
+ </div>
1522
+
1523
+ <!-- Bell empty state -->
1524
+ <div class="empty-state-message bell">
1525
+ No notifications.
1526
+ </div>
1527
+
1528
+ <!-- Horizontal empty state -->
1529
+ <div class="empty-state-message horizontal">
1530
+ Horizontal layout message.
1531
+ </div>
1532
+ ```
1533
+
1534
+ ---
1535
+
1536
+ ## Data Display Components
1537
+
1538
+ ### Tables
1539
+
1540
+ The design system includes several table variants with comprehensive dark mode support.
1541
+
1542
+ #### Basic Table
1543
+ ```html
1544
+ <table class="table">
1545
+ <thead>
1546
+ <tr>
1547
+ <th>Name</th>
1548
+ <th>Status</th>
1549
+ <th>Actions</th>
1550
+ </tr>
1551
+ </thead>
1552
+ <tbody>
1553
+ <tr>
1554
+ <td>John Doe</td>
1555
+ <td>
1556
+ <span class="badge badge-success">Active</span>
1557
+ </td>
1558
+ <td>
1559
+ <button class="btn btn-sm btn-ghost">Edit</button>
1560
+ </td>
1561
+ </tr>
1562
+ </tbody>
1563
+ </table>
1564
+ ```
1565
+
1566
+ #### Table Variants
1567
+ ```html
1568
+ <!-- Bordered table -->
1569
+ <table class="table table-bordered">...</table>
1570
+
1571
+ <!-- Borderless table -->
1572
+ <table class="table table-borderless">...</table>
1573
+
1574
+ <!-- Striped/alternating rows -->
1575
+ <table class="table table-striped">...</table>
1576
+
1577
+ <!-- Compact table -->
1578
+ <table class="table table-sm">...</table>
1579
+
1580
+ <!-- Standard table (key-value style) -->
1581
+ <table class="table-standard">
1582
+ <tbody>
1583
+ <tr>
1584
+ <td>Property</td>
1585
+ <td>Value</td>
1586
+ </tr>
1587
+ </tbody>
1588
+ </table>
1589
+ ```
1590
+
1591
+ #### Cell Style Table (Status Tracking)
1592
+ ```html
1593
+ <table class="table-cellstyle">
1594
+ <thead>
1595
+ <tr>
1596
+ <th class="completed">Feature A</th>
1597
+ <th class="inprogress">Feature B</th>
1598
+ <th class="missing">Feature C</th>
1599
+ </tr>
1600
+ </thead>
1601
+ <tbody>
1602
+ <tr>
1603
+ <td class="completed">Implementation done</td>
1604
+ <td class="inprogress">Working on it...</td>
1605
+ <td class="missing">Not started</td>
1606
+ </tr>
1607
+ </tbody>
1608
+ </table>
1609
+ ```
1610
+
1611
+ **Status Classes:**
1612
+ - `.completed` - Green checkmark icon
1613
+ - `.inprogress` - Clock icon, gray background, italic text
1614
+ - `.missing` - Exclamation icon, transparent bg, disabled text
1615
+
1616
+ #### Table Cell Utilities
1617
+ ```html
1618
+ <!-- Fixed width cell -->
1619
+ <td class="td-fixed-width">Limited to 150px</td>
1620
+
1621
+ <!-- Actions cell (right-aligned) -->
1622
+ <td class="action-cell">
1623
+ <button class="btn btn-sm btn-ghost">Edit</button>
1624
+ </td>
1625
+
1626
+ <!-- Title cell (max 500px) -->
1627
+ <td class="title">Long title...</td>
1628
+
1629
+ <!-- Full width cell -->
1630
+ <td class="cell-full-width">Takes all space</td>
1631
+
1632
+ <!-- Text wrapping -->
1633
+ <td class="wrap">This text will wrap</td>
1634
+ <td class="pre">Preserves whitespace</td>
1635
+ ```
1636
+
1637
+ #### Interactive Table Rows
1638
+ ```html
1639
+ <!-- Hover to highlight row -->
1640
+ <tr class="linked-row">...</tr>
1641
+
1642
+ <!-- Hover to highlight cell -->
1643
+ <td class="linked-cell">...</td>
1644
+
1645
+ <!-- Highlight parent row on child hover -->
1646
+ <tr>
1647
+ <td>
1648
+ <a class="highlight-parent-row" href="#">Link</a>
1649
+ </td>
1650
+ </tr>
1651
+ ```
1652
+
1653
+ ---
1654
+
1655
+ ## List Components
1656
+
1657
+ ### Basic List Items
1658
+
1659
+ ```html
1660
+ <div class="list-listitems">
1661
+ <div class="listitem">
1662
+ <div class="listitem-title">List item title</div>
1663
+ </div>
1664
+
1665
+ <!-- List item with badge -->
1666
+ <div class="listitem">
1667
+ <div class="listitem-badge">
1668
+ <div class="icon icon-feature"></div>
1669
+ </div>
1670
+ <div class="listitem-title">
1671
+ List-item title
1672
+ <div class="listitem-label">Label</div>
1673
+ </div>
1674
+ <div class="listitem-metrics">
1675
+ <div class="listitem-metric">
1676
+ <div class="icon icon-critical"></div>
1677
+ 99
1678
+ </div>
1679
+ <div class="listitem-metric">
1680
+ <div class="icon icon-high"></div>
1681
+ 99
1682
+ </div>
1683
+ </div>
1684
+ </div>
1685
+
1686
+ <!-- List item with actions -->
1687
+ <div class="listitem">
1688
+ <div class="listitem-title">List-item with action</div>
1689
+ <div class="listitem-actions">
1690
+ <a class="btn btn-primary">Action</a>
1691
+ </div>
1692
+ </div>
1693
+
1694
+ <!-- Linked list item -->
1695
+ <a class="listitem" href="#">
1696
+ <div class="listitem-title">
1697
+ <span class="icon icon-user-story mr-icon-spacing"></span>
1698
+ Linked list item
1699
+ </div>
1700
+ </a>
1701
+ </div>
1702
+ ```
1703
+
1704
+ ### List Item Variants
1705
+
1706
+ ```html
1707
+ <!-- With action bar -->
1708
+ <div class="listitem with-actionbar">...</div>
1709
+
1710
+ <!-- With footer -->
1711
+ <div class="listitem with-footer">
1712
+ <div class="listitem-title">Title</div>
1713
+ <div class="listitem-footer">Footer content</div>
1714
+ </div>
1715
+
1716
+ <!-- Collapsable list item -->
1717
+ <details class="listitem collapsable">
1718
+ <summary class="listitem-header">
1719
+ <div class="listitem-title">Collapsable Title</div>
1720
+ <div class="btn collapse-btn"></div>
1721
+ </summary>
1722
+ <div class="listitem-content">Hidden content</div>
1723
+ </details>
1724
+
1725
+ <!-- Nested list items -->
1726
+ <div class="listitem nested">
1727
+ <div class="listitem-title">Parent</div>
1728
+ <div class="list-listitems nested">
1729
+ <div class="listitem">Child 1</div>
1730
+ <div class="listitem">Child 2</div>
1731
+ </div>
1732
+ </div>
1733
+
1734
+ <!-- Selectable list item -->
1735
+ <div class="listitem selectable">
1736
+ <input type="checkbox" id="select1">
1737
+ <label for="select1">
1738
+ <div class="listitem-title">Selectable Item</div>
1739
+ </label>
1740
+ </div>
1741
+
1742
+ <!-- White background list item -->
1743
+ <div class="listitem white">...</div>
1744
+ ```
1745
+
1746
+ ### User Item
1747
+ ```html
1748
+ <div class="user-item">
1749
+ <div class="user-item-avatar">
1750
+ <img src="avatar.jpg" alt="User">
1751
+ </div>
1752
+ <div class="user-item-info">
1753
+ <h4 class="user-item-name">Jane Smith</h4>
1754
+ <p class="user-item-email">jane@example.com</p>
1755
+ </div>
1756
+ <div class="user-item-actions">
1757
+ <button class="btn btn-sm btn-secondary">Message</button>
1758
+ </div>
1759
+ </div>
1760
+ ```
1761
+
1762
+ ### Task/Issue Item
1763
+ ```html
1764
+ <div class="task-item">
1765
+ <div class="task-item-header">
1766
+ <h4 class="task-item-title">Fix login bug</h4>
1767
+ <span class="badge badge-danger">High</span>
1768
+ </div>
1769
+ <div class="task-item-body">
1770
+ <p class="task-item-description">Description</p>
1771
+ </div>
1772
+ <div class="task-item-footer">
1773
+ <span class="task-item-meta">Due: Oct 25, 2025</span>
1774
+ </div>
1775
+ </div>
1776
+ ```
1777
+
1778
+ ---
1779
+
1780
+ ## Splitview Components
1781
+
1782
+ Two-pane layout for list and detail views with responsive behavior.
1783
+
1784
+ ### Basic Splitview
1785
+ ```html
1786
+ <div class="splitview">
1787
+ <div class="splitview-list">
1788
+ <div class="splitview-item">
1789
+ <div class="splitview-item-title">Item 1</div>
1790
+ </div>
1791
+ </div>
1792
+ <div class="splitview-detail">
1793
+ <h2>Detail View</h2>
1794
+ <p>Selected item details</p>
1795
+ </div>
1796
+ </div>
1797
+ ```
1798
+
1799
+ ### Splitview List Header
1800
+ ```html
1801
+ <div class="splitview-list-header">
1802
+ <div class="form-check sm">
1803
+ <input type="checkbox">
1804
+ </div>
1805
+ <h3 class="splitview-list-header-title">18 Bugs</h3>
1806
+ <div class="splitview-list-header-actions">
1807
+ <details class="dropdown-actions dropright">
1808
+ <summary>
1809
+ <a class="link-with-icon" href="">
1810
+ <div class="icon icon-sort-descending"></div>
1811
+ Severity (desc)
1812
+ </a>
1813
+ </summary>
1814
+ <div class="popover-menu">
1815
+ <a class="popover-action" href="#">Sort option 1</a>
1816
+ <a class="popover-action" href="#">Sort option 2</a>
1817
+ </div>
1818
+ </details>
1819
+ <a class="linked-icon" href="">
1820
+ <div class="icon icon-filter"></div>
1821
+ </a>
1822
+ <a class="linked-icon" href="">
1823
+ <div class="icon icon-search"></div>
1824
+ </a>
1825
+ </div>
1826
+ </div>
1827
+ ```
1828
+
1829
+ ### Splitview Item
1830
+ ```html
1831
+ <div class="splitview-list">
1832
+ <div class="splitview-item">
1833
+ <div class="splitview-item-checkbox form-check sm">
1834
+ <input type="checkbox">
1835
+ </div>
1836
+ <div class="splitview-item-icon icon icon-critical"></div>
1837
+ <div class="splitview-item-text">
1838
+ <div class="splitview-item-title">Item title</div>
1839
+ <div class="splitview-item-metainfo">
1840
+ #123321321 | Product Detail Page
1841
+ </div>
1842
+ </div>
1843
+ <div class="splitview-item-status">
1844
+ <div class="status-icon status-submitted"></div>
1845
+ <div class="status-icon status-manager-approved"></div>
1846
+ </div>
1847
+ </div>
1848
+
1849
+ <!-- Selected state -->
1850
+ <div class="splitview-item selected">...</div>
1851
+ </div>
1852
+ ```
1853
+
1854
+ ### Splitview with Status Groups
1855
+ ```html
1856
+ <div class="splitview">
1857
+ <div class="splitview-list">
1858
+ <details class="splitview-group" open>
1859
+ <summary class="splitview-group-header">
1860
+ <h3 class="splitview-group-title">Test Group 1</h3>
1861
+ <i class="icon icon-chevron-down"></i>
1862
+ </summary>
1863
+
1864
+ <div class="splitview-group-status">
1865
+ <div class="status-stepper">
1866
+ <div class="status-step completed">
1867
+ <i class="icon icon-check-thick-centered"></i>
1868
+ 3 done
1869
+ </div>
1870
+ <div class="status-step active">
1871
+ <i class="icon icon-sync"></i>
1872
+ Executing
1873
+ </div>
1874
+ <div class="status-step">
1875
+ + 3 to do
1876
+ </div>
1877
+ </div>
1878
+ </div>
1879
+
1880
+ <div class="splitview-item">...</div>
1881
+ <div class="splitview-item">...</div>
1882
+
1883
+ <button class="splitview-btn">
1884
+ Show 5 dismissed items
1885
+ </button>
1886
+ </details>
1887
+ </div>
1888
+ </div>
1889
+ ```
1890
+
1891
+ ### Collapsable Splitview Item
1892
+ ```html
1893
+ <details class="splitview-item collapsable">
1894
+ <summary class="splitview-item-header">
1895
+ <div class="splitview-item-title">Collapsable Item</div>
1896
+ <div class="btn collapse-btn"></div>
1897
+ </summary>
1898
+ <div class="splitview-item-content">
1899
+ Expanded content
1900
+ </div>
1901
+ </details>
1902
+ ```
1903
+
1904
+ ---
1905
+
1906
+ ## Chat Components
1907
+
1908
+ Comprehensive chat interface components with full dark mode support.
1909
+
1910
+ ### Chat Message List
1911
+ ```html
1912
+ <div class="list-chat-messages">
1913
+ <div class="chat-message-item">
1914
+ <img src="avatar.jpg" alt="User" class="chat-avatar">
1915
+
1916
+ <div class="chat-header">
1917
+ <span class="chat-title">
1918
+ <span class="chat-author">John Doe</span>
1919
+ </span>
1920
+ <span class="chat-time">2 hours ago</span>
1921
+ </div>
1922
+
1923
+ <div class="chat-message">
1924
+ <p>This is a chat message with some content.</p>
1925
+ </div>
1926
+
1927
+ <div class="chat-actions">
1928
+ <button class="btn btn-ghost btn-sm">
1929
+ <i class="icon icon-reply"></i>
1930
+ </button>
1931
+ </div>
1932
+ </div>
1933
+ </div>
1934
+ ```
1935
+
1936
+ ### Full Width Chat
1937
+ ```html
1938
+ <div class="list-chat-messages full-width">
1939
+ <div class="chat-message-item">...</div>
1940
+ </div>
1941
+ ```
1942
+
1943
+ ### Chat Message Variants
1944
+
1945
+ ```html
1946
+ <!-- Announcement message -->
1947
+ <div class="chat-message">
1948
+ <div class="message-banner announcement">
1949
+ System Announcement: Maintenance scheduled
1950
+ </div>
1951
+ <p>The system will be down for maintenance on Saturday.</p>
1952
+ </div>
1953
+
1954
+ <!-- Mentioned message -->
1955
+ <div class="chat-message">
1956
+ <div class="message-banner mentioned">
1957
+ <span class="text-mentioned">@YourName</span> mentioned you
1958
+ </div>
1959
+ <p>Hey, can you take a look at this?</p>
1960
+ </div>
1961
+ ```
1962
+
1963
+ ### Chat Window Component
1964
+ ```html
1965
+ <div class="chat-window">
1966
+ <div class="chat-window-header">
1967
+ <h3>Chat</h3>
1968
+ </div>
1969
+ <div class="chat-window-messages">
1970
+ <div class="list-chat-messages">
1971
+ <!-- Messages -->
1972
+ </div>
1973
+ </div>
1974
+ <div class="chat-window-input">
1975
+ <textarea class="form-control" placeholder="Type a message..."></textarea>
1976
+ <button class="btn btn-primary">Send</button>
1977
+ </div>
1978
+ </div>
1979
+ ```
1980
+
1981
+ ---
1982
+
1983
+ ## Chart Components
1984
+
1985
+ The design system integrates ECharts for data visualization with design system colors.
1986
+
1987
+ ### Chart Container
1988
+ ```html
1989
+ <div class="echarts-container" id="my-chart"></div>
1990
+ ```
1991
+
1992
+ ### Chart Types
1993
+
1994
+ #### Horizontal Bar Chart
1995
+ ```javascript
1996
+ import { createChartHorizontal } from './modules/echarts_horizontal';
1997
+
1998
+ createChartHorizontal(
1999
+ "element-id", // Target element ID
2000
+ dataArray, // Data labels array
2001
+ seriesArray, // Series configuration
2002
+ showLegend, // Boolean: show legend
2003
+ labelColor, // Color for labels
2004
+ valueColor // Color for values
2005
+ );
2006
+ ```
2007
+
2008
+ #### Donut Chart
2009
+ ```javascript
2010
+ import { createChartDonut } from './modules/echarts_donut';
2011
+
2012
+ createChartDonut(
2013
+ "element-id", // Target element ID
2014
+ dataArray, // Data array with values
2015
+ valueText, // Center value text
2016
+ labelText, // Center label text
2017
+ showLegend, // Boolean: show legend
2018
+ labelColor, // Color for labels
2019
+ valueColor // Color for values
2020
+ );
2021
+ ```
2022
+
2023
+ #### Vertical Bar Chart
2024
+ ```javascript
2025
+ import { createChartVertical } from './modules/echarts_vertical';
2026
+ ```
2027
+
2028
+ #### Line Chart
2029
+ ```javascript
2030
+ import { createChartLine } from './modules/echarts_line';
2031
+ ```
2032
+
2033
+ #### Area Chart
2034
+ ```javascript
2035
+ import { createChartArea } from './modules/echarts_area';
2036
+ ```
2037
+
2038
+ #### Gauge Chart
2039
+ ```javascript
2040
+ import { createChartGauge } from './modules/echarts_gauge';
2041
+ ```
2042
+
2043
+ ### Chart Colors
2044
+ ```javascript
2045
+ // Available chart colors
2046
+ export const colorCritical = '#FF3131';
2047
+ export const colorHigh = '#d8ce0d';
2048
+ export const colorLow = '#9fa2a8';
2049
+ export const colorVisual = '#f48d21';
2050
+ export const colorContent = '#326dd1';
2051
+ export const colorUX = '#263340';
2052
+ export const colorSuccess = '#8cbd24';
2053
+ export const colorDanger = '#FF3131';
2054
+ export const colorNeutral = '#e6e6e6';
2055
+ export const colorInfo = '#326dd1';
2056
+ export const colorBlueLight = '#21bef4';
2057
+ ```
2058
+
2059
+ ### Chart Data Examples
2060
+ ```javascript
2061
+ // Bug distribution data
2062
+ export let dataBugs = [
2063
+ { value: 79, name: 'Critical', itemStyle: {color: colorCritical}},
2064
+ { value: 37, name: 'High', itemStyle: {color: colorHigh}},
2065
+ { value: 19, name: 'Low', itemStyle: {color: colorLow}},
2066
+ ];
2067
+
2068
+ // Test case status
2069
+ export let dataTestCases = [
2070
+ { value: 50, name: 'Passed', itemStyle: {color: colorSuccess}},
2071
+ { value: 23, name: 'Failed', itemStyle: {color: colorDanger}},
2072
+ { value: 27, name: 'Open', itemStyle: {color: colorNeutral}},
2073
+ ];
2074
+ ```
2075
+
2076
+ ---
2077
+
2078
+ ## Status & Progress Components
2079
+
2080
+ ### Status Stepper
2081
+
2082
+ A horizontal stepper component for visualizing multi-step processes.
2083
+
2084
+ #### Icon-based Status Stepper
2085
+ ```html
2086
+ <div class="status-stepper">
2087
+ <div class="status-step completed">
2088
+ <div class="icon icon-check-thick-centered"></div>
2089
+ 3 done
2090
+ </div>
2091
+ <div class="status-step active">
2092
+ <div class="icon icon-sync"></div>
2093
+ Executing checks
2094
+ </div>
2095
+ <div class="status-step">
2096
+ + 3 to do
2097
+ </div>
2098
+ </div>
2099
+ ```
2100
+
2101
+ #### Counter-based Status Stepper
2102
+ ```html
2103
+ <div class="status-stepper">
2104
+ <div class="status-step completed">
2105
+ <div class="counter">99</div>
2106
+ Completed
2107
+ </div>
2108
+ <div class="status-step active">
2109
+ <div class="counter">12</div>
2110
+ Active
2111
+ </div>
2112
+ <div class="status-step">
2113
+ <div class="counter">5</div>
2114
+ Pending
2115
+ </div>
2116
+ </div>
2117
+ ```
2118
+
2119
+ **Component Classes:**
2120
+ - `.status-stepper` - Container (flex row, items-stretch, full width)
2121
+ - `.status-step` - Individual step (flex row, centered, rounded, px-md py-xs, bg-black)
2122
+ - `.status-step.active` - Active step (grow-1, white text, bg-gray-750)
2123
+ - `.status-step.completed` - Completed state (can combine with custom styling)
2124
+ - `.status-step .icon` - Icon within step (mr-xs, text-label-color)
2125
+ - `.status-step .counter` - Numeric counter (pr-xs, text-lg, font-bold)
2126
+
2127
+ ---
2128
+
2129
+ ## Utility Components
2130
+
2131
+ ### Tags
2132
+ ```html
2133
+ <div class="list-tags">
2134
+ <!-- Basic tag -->
2135
+ <div class="tag">Tag</div>
2136
+
2137
+ <!-- Small tag -->
2138
+ <div class="tag sm">Tag sm</div>
2139
+
2140
+ <!-- Focus group tag -->
2141
+ <div class="tag focus-group">Focus-group</div>
2142
+
2143
+ <!-- Verified tag -->
2144
+ <div class="tag teamleader-verified">
2145
+ <div class="icon icon-verify-check mr-xxs"></div>
2146
+ TL
2147
+ </div>
2148
+
2149
+ <!-- Status tags -->
2150
+ <div class="tag success">
2151
+ <div class="icon icon-check-circle"></div>
2152
+ Success
2153
+ </div>
2154
+ <div class="tag danger">
2155
+ <div class="icon icon-cross-circle"></div>
2156
+ Danger
2157
+ </div>
2158
+ <div class="tag pending">
2159
+ <div class="icon icon-sync"></div>
2160
+ Pending
2161
+ </div>
2162
+ </div>
2163
+ ```
2164
+
2165
+ ### Tag with Popover
2166
+ ```html
2167
+ <details class="popover-wrapper">
2168
+ <summary>
2169
+ <div class="tag popover-tag">
2170
+ <div class="icon icon-clock"></div>
2171
+ Popover-tag
2172
+ </div>
2173
+ </summary>
2174
+ <div class="popover-menu info">
2175
+ <div class="popover-title">Popover title</div>
2176
+ <div class="popover-content">Content...</div>
2177
+ <div class="popover-actions">
2178
+ <div class="btn btn-sm btn-inverted">Action</div>
2179
+ </div>
2180
+ </div>
2181
+ </details>
2182
+
2183
+ <!-- Light popover tag -->
2184
+ <div class="tag popover-tag light">...</div>
2185
+
2186
+ <!-- Colored popover tags -->
2187
+ <div class="tag popover-tag bg-info text-white">...</div>
2188
+ <div class="tag popover-tag bg-black text-white">...</div>
2189
+ <div class="tag popover-tag bg-danger text-white">...</div>
2190
+ ```
2191
+
2192
+ ### Info Popover
2193
+ ```html
2194
+ <details class="popover-wrapper">
2195
+ <summary>
2196
+ <div class="btn btn-sm btn-square">
2197
+ <div class="icon icon-info"></div>
2198
+ </div>
2199
+ </summary>
2200
+ <div class="popover-menu info">
2201
+ <div class="popover-title">Popover title</div>
2202
+ <div class="popover-content">Popover content...</div>
2203
+ <div class="text-with-icon mt-xs">
2204
+ <div class="icon icon-lock text-disabled mr-icon-spacing"></div>
2205
+ <div class="text-sm">0/100 Completed</div>
2206
+ </div>
2207
+ <div class="text-with-icon mt-xs">
2208
+ <div class="icon icon-unlock text-success mr-icon-spacing"></div>
2209
+ <div class="text-sm">50/50 Done</div>
2210
+ </div>
2211
+ <div class="popover-actions">
2212
+ <div class="btn btn-sm btn-inverted">Action</div>
2213
+ </div>
2214
+ </div>
2215
+ </details>
2216
+ ```
2217
+
2218
+ ### Pagination
2219
+ ```html
2220
+ <nav class="pagy-bootstrap nav">
2221
+ <ul class="pagination">
2222
+ <li class="page-item prev">
2223
+ <a class="page-link" href="#">&lt;</a>
2224
+ </li>
2225
+ <li class="page-item">
2226
+ <a class="page-link" href="#">1</a>
2227
+ </li>
2228
+ <li class="page-item active">
2229
+ <a class="page-link" href="#">2</a>
2230
+ </li>
2231
+ <li class="page-item">
2232
+ <a class="page-link" href="#">3</a>
2233
+ </li>
2234
+ <li class="page-item next disabled">
2235
+ <a class="page-link" href="#">&gt;</a>
2236
+ </li>
2237
+ </ul>
2238
+ </nav>
2239
+ ```
2240
+
2241
+ ### Badges
2242
+ ```html
2243
+ <span class="badge badge-primary">New</span>
2244
+ <span class="badge badge-success">Active</span>
2245
+ <span class="badge badge-danger">Urgent</span>
2246
+ <span class="badge badge-warning">Pending</span>
2247
+ <span class="badge badge-info">Info</span>
2248
+ ```
2249
+
2250
+ ### Icon Sizes
2251
+ ```html
2252
+ <i class="icon icon-star text-icon-xxxs"></i> <!-- 10px -->
2253
+ <i class="icon icon-star text-icon-xxs"></i> <!-- 0.625rem -->
2254
+ <i class="icon icon-star text-icon-xs"></i> <!-- 16px -->
2255
+ <i class="icon icon-star text-icon-sm"></i> <!-- 18px -->
2256
+ <i class="icon icon-star text-icon"></i> <!-- 20px - default -->
2257
+ <i class="icon icon-star text-icon-lg"></i> <!-- 40px -->
2258
+ <i class="icon icon-star text-icon-xl"></i> <!-- 60px -->
2259
+ <i class="icon icon-star text-icon-xxl"></i> <!-- 90px -->
2260
+ ```
2261
+
2262
+ ### Text with Icon
2263
+ ```html
2264
+ <div class="text-with-icon">
2265
+ <div class="icon icon-check text-success mr-icon-spacing"></div>
2266
+ <span>Text with icon</span>
2267
+ </div>
2268
+
2269
+ <div class="link-with-icon">
2270
+ <div class="icon icon-external-link mr-icon-spacing"></div>
2271
+ <a href="#">Link with icon</a>
2272
+ </div>
2273
+ ```
2274
+
2275
+ ### Description List
2276
+ ```html
2277
+ <dl class="description-list">
2278
+ <dt>Term</dt>
2279
+ <dd>Definition</dd>
2280
+ <dt>Another term</dt>
2281
+ <dd>Another definition</dd>
2282
+ </dl>
2283
+
2284
+ <!-- Inline description list -->
2285
+ <dl class="list-inline">
2286
+ <dt>Property</dt>
2287
+ <dd>Value</dd>
2288
+ </dl>
2289
+ ```
2290
+
2291
+ ---
2292
+
2293
+ ## AgenticQA Components
2294
+
2295
+ Product-specific components for the AgenticQA platform.
2296
+
2297
+ ### AgenticQA Page Header
2298
+ ```html
2299
+ <div class="page-header">
2300
+ <div class="card page-maincard p-card-padding">
2301
+ <h1 class="text-card-header">Session details</h1>
2302
+ <h2 class="page-session-title">Test Session title</h2>
2303
+ <dl class="page-meta-info">
2304
+ <dt class="label">Created on:</dt>
2305
+ <dd>2025-07-23 19:11</dd>
2306
+ <dt class="label">Status:</dt>
2307
+ <dd class="text-white">Running</dd>
2308
+ </dl>
2309
+ </div>
2310
+ <div class="page-actions">
2311
+ <a class="btn btn-primary btn-main" href="">
2312
+ <span class="icon icon-test-running-xl"></span>
2313
+ Start test
2314
+ </a>
2315
+ </div>
2316
+ </div>
2317
+ ```
2318
+
2319
+ ### AgenticQA Status Stepper
2320
+ ```html
2321
+ <div class="status-stepper">
2322
+ <div class="status-step completed">
2323
+ <div class="icon icon-check-thick-centered"></div>
2324
+ 3 done
2325
+ </div>
2326
+ <div class="status-step active">
2327
+ <div class="icon icon-sync"></div>
2328
+ Executing checks
2329
+ </div>
2330
+ <div class="status-step">
2331
+ + 3 to do
2332
+ </div>
2333
+ </div>
2334
+ ```
2335
+
2336
+ ### AgenticQA List Item
2337
+ ```html
2338
+ <div class="listitem agenticqa">
2339
+ <!-- AgenticQA-specific list item styling -->
2340
+ </div>
2341
+ ```
2342
+
2343
+ ### AgenticQA Header
2344
+ ```html
2345
+ <header class="header agenticqa_header">
2346
+ <!-- AgenticQA navigation -->
2347
+ </header>
2348
+ ```
2349
+
2350
+ ---
2351
+
2352
+ ## Dark Mode
2353
+
2354
+ The design system includes comprehensive dark mode support with customized theme variables and a centered layout variant for dark mode displays.
2355
+
2356
+ ### Enabling Dark Mode
2357
+
2358
+ ```html
2359
+ <!-- Apply dark class to body or container -->
2360
+ <body class="app-body dark">
2361
+ <!-- All dark mode styles will be applied -->
2362
+ </body>
2363
+ ```
2364
+
2365
+ ### Dark Mode Layout Structure
2366
+
2367
+ ```html
2368
+ <body class="app-body dark">
2369
+ <header class="header">
2370
+ <!-- Dark mode header -->
2371
+ </header>
2372
+ <main class="main-content centered">
2373
+ <div class="centered-content">
2374
+ <!-- Centered content with dark mode styling -->
2375
+ </div>
2376
+ </main>
2377
+ <footer class="actionbar centered">
2378
+ <!-- Centered actionbar for dark mode -->
2379
+ </footer>
2380
+ </body>
2381
+ ```
2382
+
2383
+ ### Dark Mode Color Palette
2384
+ ```css
2385
+ .dark {
2386
+ /* Core Colors */
2387
+ --color-appbody: #181818;
2388
+ --color-appbody-textcolor: #f2f2f2;
2389
+ --color-header: #1d1d1d;
2390
+ --color-card: #1D1D1D;
2391
+ --color-listitem: #262626;
2392
+
2393
+ /* Interactive Colors */
2394
+ --color-primary: #78eac1;
2395
+ --color-link: #8988eb;
2396
+ --color-link-hover: #7954ff;
2397
+
2398
+ /* Status Colors */
2399
+ --color-success: #33BA9E;
2400
+ --color-danger: #FF3131;
2401
+ --color-bordercolor: #2E2E2E;
2402
+
2403
+ /* Spacing & Style Adjustments */
2404
+ --radius: 12px; /* Increased from 5px */
2405
+ --spacing-grid-gutter: 40px; /* Increased from 20px */
2406
+ --card-padding: 30px;
2407
+ --fontsize-card-header: 1.125rem;
2408
+ --font-size-label: 0.75rem;
2409
+ }
2410
+ ```
2411
+
2412
+ ### Using Dark Mode
2413
+ ```html
2414
+ <!-- Apply dark class to container -->
2415
+ <div class="dark">
2416
+ <div class="bg-appbody text-appbody-textcolor">
2417
+ <div class="card p-card-padding">
2418
+ <p>Content with dark mode styling</p>
2419
+ </div>
2420
+ </div>
2421
+ </div>
2422
+
2423
+ <!-- Conditional dark mode classes -->
2424
+ <div class="bg-card dark:bg-listitem">
2425
+ <!-- Light mode: #e6e6e6, Dark mode: #262626 -->
2426
+ </div>
2427
+
2428
+ <!-- Buttons with dark mode -->
2429
+ <div class="dark">
2430
+ <button class="btn btn-primary">
2431
+ <!-- Automatically styled for dark mode -->
2432
+ </button>
2433
+ </div>
2434
+ ```
2435
+
2436
+ ### Dark Mode Layout Examples
2437
+
2438
+ **Centered Dark Mode Layout:**
2439
+ - Optimal for documentation or form-based interfaces
2440
+ - Content is centered with max-width constraint
2441
+ - Footer actionbar is also centered
2442
+ - View live example: `/pages/layouts/layout-darkmode`
2443
+
2444
+ **Dark Mode with Forms:**
2445
+ - Form controls are optimized for dark backgrounds
2446
+ - Input fields have proper contrast
2447
+ - Labels and hints are readable
2448
+ - Error states are clearly visible
2449
+
2450
+ ### Dark Mode Differences from Light Mode
2451
+ - Border radius: `5px` → `12px`
2452
+ - Grid gutters: `20px` → `40px`
2453
+ - Table cell padding: `py-xs` → `py-md`
2454
+ - Chat layout: 3 columns → 2 columns (actions hidden)
2455
+ - Link colors: Petrol → Purple (#8988eb), Hover: Dark Purple (#7954ff)
2456
+ - Text color: System colors → Light gray (#f2f2f2)
2457
+ - Font sizes: Labels reduced to 0.75rem (from 0.8125rem)
2458
+ - Card headers: 1.125rem in dark mode
2459
+
2460
+ ### Dark Mode Best Practices
2461
+
2462
+ 1. **Testing Dark Mode**
2463
+ - Always preview components with the `.dark` class applied
2464
+ - Test contrast ratios for accessibility compliance
2465
+ - Verify all interactive elements are clearly visible
2466
+
2467
+ 2. **Component-Specific Adjustments**
2468
+ - Buttons: Use inverted variants for dark backgrounds
2469
+ - Cards: Ensure sufficient contrast with dark background
2470
+ - Text: Use light colors for readability
2471
+ - Borders: Use subdued colors that don't overpower the dark background
2472
+
2473
+ 3. **Dark Mode CSS Utilities**
2474
+ - Use Tailwind's `dark:` prefix for conditional dark mode styles
2475
+ - Example: `bg-white dark:bg-gray-800`
2476
+ - Combine with custom CSS variables for consistency
2477
+
2478
+ ---
2479
+
2480
+ ## Best Practices for AI Agents
2481
+
2482
+ ### When Building Pages:
2483
+
2484
+ 1. **Start with Layout Structure**
2485
+ - Use semantic HTML5 elements
2486
+ - Apply layout classes: `header`, `sidebar`, `main`, `section`
2487
+ - Use grid or flex utilities for responsive layouts
2488
+ - Consider using `.page-header` for dashboard pages
2489
+ - Choose between standard full-width or centered layout
2490
+
2491
+ 2. **Component Selection**
2492
+ - Choose the appropriate component variant for the use case
2493
+ - Use semantic button/alert types (primary, success, danger, etc.)
2494
+ - Apply consistent spacing using the spacing scale
2495
+
2496
+ 3. **Responsive Design**
2497
+ - Use responsive grid classes: `grid-cols-1 md:grid-cols-2 lg:grid-cols-3`
2498
+ - Apply responsive utilities: `hidden md:block`, `flex-col md:flex-row`
2499
+ - Consider mobile-first approach
2500
+
2501
+ 4. **Accessibility**
2502
+ - Include proper ARIA labels
2503
+ - Use semantic HTML elements
2504
+ - Ensure proper heading hierarchy
2505
+ - Include alt text for images
2506
+ - Use `<label>` elements with `for` attributes
2507
+
2508
+ 5. **Layout Pattern Selection**
2509
+ - **Full-Width Layout**: Use for dashboards and data displays
2510
+ - **Centered Layout**: Use for documentation and forms
2511
+ - Both support dark mode with proper styling
2512
+ - Choose based on content type and readability requirements
2513
+
2514
+ 6. **Dark Mode Considerations**
2515
+ - Always test components with `.dark` class applied
2516
+ - Border radius is larger in dark mode (12px vs 5px)
2517
+ - Grid gutters are larger in dark mode (40px vs 20px)
2518
+ - Use `dark:` prefix for conditional dark mode styles
2519
+ - Ensure sufficient contrast for readability
2520
+ - Test with actual dark mode enabled in browsers
2521
+
2522
+ 7. **Form Best Practices**
2523
+ - Use `.form-grid` for form layouts
2524
+ - Apply `.form-group` wrapper around each field
2525
+ - Use `.form-hint` for helper text
2526
+ - Use `.field_with_errors` for validation states
2527
+ - Forms work well in both centered and full-width layouts
2528
+
2529
+ 8. **Table Best Practices**
2530
+ - Use `.table` for standard data tables
2531
+ - Use `.table-standard` for key-value style tables
2532
+ - Use `.table-cellstyle` for status tracking tables
2533
+ - Use `.action-cell` for right-aligned action buttons
2534
+ - Tables automatically adapt to dark mode
2535
+
2536
+ 9. **Page Header Best Practices**
2537
+ - Use `.page-header` for dashboard/session pages
2538
+ - Main card should have `.page-maincard` and `p-card-padding`
2539
+ - Add `.with-chart` modifier when including charts
2540
+ - Actions go in `.page-actions`
2541
+ - Supports dark mode styling
2542
+
2543
+ ---
2544
+
2545
+ ## Change Log
2546
+
2547
+ ### Version 3.22.0 - January 2026
2548
+
2549
+ **New Features:**
2550
+ - ✨ Centered layout documentation and examples for improved readability
2551
+ - ✨ Dark mode layout examples and enhanced dark mode documentation
2552
+ - ✨ Centered actionbar variant for dark mode and standard layouts
2553
+ - ✨ Centered header styling for consistent layout patterns
2554
+ - ✨ HAML Preview functionality for live component viewing
2555
+ - ✨ HAML Converter utility for template processing
2556
+ - ✨ Comprehensive AI documentation across all component pages
2557
+
2558
+ **Enhancements:**
2559
+ - 📐 New layout patterns section with centered and full-width examples
2560
+ - 🌙 Enhanced dark mode documentation with implementation examples
2561
+ - 📋 All component pages now include descriptions and use cases
2562
+ - 🎯 Updated layout documentation with max-width constraints
2563
+ - 🎨 Form and table components optimized for dark mode
2564
+ - 📝 Added layout selection guidelines for AI agents
2565
+
2566
+ **Layout Updates:**
2567
+ - Added `/pages/layouts/layout-centered` for centered layout examples
2568
+ - Added `/pages/layouts/layout-darkmode` for dark mode examples
2569
+ - Added `/pages/layout/centered_layout.haml` documentation
2570
+ - Added `/pages/layout/darkmode.haml` documentation
2571
+ - Added `/pages/navigation/header-centered.haml` for centered headers
2572
+ - Improved layout documentation with examples
2573
+ - Typography pages updated with link and icon examples
2574
+
2575
+ **Documentation:**
2576
+ - Added descriptions to all forms pages
2577
+ - Updated textarea documentation
2578
+ - Enhanced typography component examples
2579
+
2580
+ ### Version 3.13.1 - January 21, 2026
2581
+
2582
+ **Documentation Updates:**
2583
+ - Converted table example files from Pug to HAML format
2584
+ - Standardized HAML attribute syntax across all table examples
2585
+
2586
+ ### Version 3.13.0 - January 20, 2026
2587
+
2588
+ **New Components:**
2589
+ - Date & Time Picker (Flatpickr integration)
2590
+ - Enhanced table variants with striped/alternating row styles
2591
+
2592
+ **Reorganization:**
2593
+ - Tables section moved to dedicated `/pages/tables/` directory
2594
+ - Improved table documentation
2595
+
2596
+ **Enhancements:**
2597
+ - Fixed table striped row styling
2598
+ - Improved drawer footer padding
2599
+ - Better splitview details close button
2600
+ - Added image tagging capability
2601
+
2602
+ ---
2603
+
2604
+ ## Version & Support
2605
+
2606
+ **Current Version:** 3.22.0
2607
+ **Tailwind Version:** 4.1.11
2608
+ **Node Version:** v23.11.0
2609
+ **Template Language:** HAML (primary) and Pug formats supported
2610
+
2611
+ For updates and examples, refer to:
2612
+ - NPM: `npm install testio-tailwind@latest`
2613
+ - Documentation: Included in package under `/dist/`
2614
+ - Source: GitHub repository (test-IO/testio-tailwind)
2615
+
2616
+ ---
2617
+
2618
+ **END OF REFERENCE GUIDE**