@cqa-lib/cqa-ui 0.1.1 → 1.0.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.
- package/esm2020/lib/action-menu/action-menu.component.mjs +42 -0
- package/esm2020/lib/assets/images/image-assets.constants.mjs +28 -0
- package/esm2020/lib/badge/badge.component.mjs +141 -0
- package/esm2020/lib/button/button.component.mjs +232 -0
- package/esm2020/lib/column-visibility/column-visibility.component.mjs +69 -0
- package/esm2020/lib/dashboards/chart-card/chart-card.component.mjs +22 -0
- package/esm2020/lib/dashboards/coverage-module-card/coverage-module-card.component.mjs +104 -0
- package/esm2020/lib/dashboards/dashboard-header/dashboard-header.component.mjs +82 -0
- package/esm2020/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.mjs +60 -0
- package/esm2020/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.mjs +45 -0
- package/esm2020/lib/dashboards/insight-card/insight-card.component.mjs +201 -0
- package/esm2020/lib/dashboards/metrics-card/metrics-block.component.mjs +41 -0
- package/esm2020/lib/dashboards/metrics-card/metrics-card-item.interface.mjs +2 -0
- package/esm2020/lib/dashboards/metrics-card/metrics-card.component.mjs +62 -0
- package/esm2020/lib/dashboards/progress-text-card/progress-text-card.component.mjs +46 -0
- package/esm2020/lib/dashboards/test-distribution-card/test-distribution-card.component.mjs +35 -0
- package/esm2020/lib/dialog/dialog.component.mjs +127 -0
- package/esm2020/lib/dropdown-button/dropdown-button.component.mjs +189 -0
- package/esm2020/lib/dynamic-select/dynamic-select-field.component.mjs +160 -0
- package/esm2020/lib/empty-state/empty-state.component.mjs +37 -0
- package/esm2020/lib/filters/dynamic-filter/dynamic-filter.component.mjs +239 -0
- package/esm2020/lib/full-table-loader/full-table-loader.component.mjs +16 -0
- package/esm2020/lib/inline-sort/inline-sort.component.mjs +58 -0
- package/esm2020/lib/other-button/other-button.component.mjs +76 -0
- package/esm2020/lib/pagination/pagination.component.mjs +102 -0
- package/{dist/cqa-ui/esm2020 → esm2020}/lib/search-bar/search-bar.component.mjs +3 -3
- package/{dist/cqa-ui/esm2020 → esm2020}/lib/segment-control/segment-control.component.mjs +3 -3
- package/esm2020/lib/selected-filters/selected-filters.component.mjs +27 -0
- package/esm2020/lib/table/dynamic-table/dynamic-cell.directive.mjs +35 -0
- package/esm2020/lib/table/dynamic-table/dynamic-table.component.mjs +258 -0
- package/esm2020/lib/table-action-toolbar/table-action-toolbar.component.mjs +52 -0
- package/esm2020/lib/table-data-loader/table-data-loader.component.mjs +19 -0
- package/esm2020/lib/templates/table-template.component.mjs +365 -0
- package/esm2020/lib/ui-kit.module.mjs +248 -0
- package/esm2020/lib/utils/metadata-colors.util.mjs +100 -0
- package/esm2020/lib/utils/tw-overlay-container.mjs +22 -0
- package/esm2020/public-api.mjs +38 -0
- package/fesm2015/cqa-lib-cqa-ui.mjs +3661 -0
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -0
- package/fesm2020/cqa-lib-cqa-ui.mjs +3615 -0
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -0
- package/lib/action-menu/action-menu.component.d.ts +17 -0
- package/lib/assets/images/image-assets.constants.d.ts +20 -0
- package/lib/badge/badge.component.d.ts +25 -0
- package/{dist/cqa-ui/lib → lib}/button/button.component.d.ts +6 -5
- package/lib/column-visibility/column-visibility.component.d.ts +33 -0
- package/lib/dashboards/chart-card/chart-card.component.d.ts +8 -0
- package/lib/dashboards/coverage-module-card/coverage-module-card.component.d.ts +44 -0
- package/lib/dashboards/dashboard-header/dashboard-header.component.d.ts +30 -0
- package/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.d.ts +28 -0
- package/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.d.ts +14 -0
- package/lib/dashboards/insight-card/insight-card.component.d.ts +73 -0
- package/lib/dashboards/metrics-card/metrics-block.component.d.ts +12 -0
- package/lib/dashboards/metrics-card/metrics-card-item.interface.d.ts +12 -0
- package/lib/dashboards/metrics-card/metrics-card.component.d.ts +17 -0
- package/lib/dashboards/progress-text-card/progress-text-card.component.d.ts +13 -0
- package/lib/dashboards/test-distribution-card/test-distribution-card.component.d.ts +29 -0
- package/lib/dropdown-button/dropdown-button.component.d.ts +32 -0
- package/lib/dynamic-select/dynamic-select-field.component.d.ts +43 -0
- package/lib/empty-state/empty-state.component.d.ts +20 -0
- package/lib/filters/dynamic-filter/dynamic-filter.component.d.ts +56 -0
- package/lib/full-table-loader/full-table-loader.component.d.ts +6 -0
- package/lib/inline-sort/inline-sort.component.d.ts +12 -0
- package/lib/other-button/other-button.component.d.ts +37 -0
- package/lib/pagination/pagination.component.d.ts +37 -0
- package/lib/selected-filters/selected-filters.component.d.ts +17 -0
- package/lib/table/dynamic-table/dynamic-cell.directive.d.ts +16 -0
- package/lib/table/dynamic-table/dynamic-table.component.d.ts +72 -0
- package/lib/table-action-toolbar/table-action-toolbar.component.d.ts +34 -0
- package/lib/table-data-loader/table-data-loader.component.d.ts +7 -0
- package/lib/templates/table-template.component.d.ts +90 -0
- package/lib/ui-kit.module.d.ts +52 -0
- package/lib/utils/metadata-colors.util.d.ts +50 -0
- package/lib/utils/tw-overlay-container.d.ts +12 -0
- package/package.json +23 -49
- package/public-api.d.ts +37 -0
- package/src/lib/assets/images/.gitkeep +0 -0
- package/src/lib/assets/images/DashboardIcon.png +0 -0
- package/src/lib/assets/images/FilesIcon.png +0 -0
- package/src/lib/assets/images/README.md +66 -0
- package/src/lib/assets/images/ReportsIcon.png +0 -0
- package/src/lib/assets/images/SearchIcon.png +0 -0
- package/src/lib/assets/images/StepsIcon.png +0 -0
- package/src/lib/assets/images/TestCaseIcon.png +0 -0
- package/src/lib/assets/images/analytics-chart-icon.svg +11 -0
- package/src/lib/assets/images/checklist-add-icon.svg +10 -0
- package/src/lib/assets/images/document-gear-icon.svg +9 -0
- package/src/lib/assets/images/empty-state-default-icon.svg +8 -0
- package/src/lib/assets/images/image-assets.constants.ts +38 -0
- package/src/lib/assets/images/search-debug-icon.svg +8 -0
- package/src/lib/assets/images/test-case-icon.svg +9 -0
- package/src/lib/assets/images/upload-folder-icon.svg +7 -0
- package/src/lib/utils/metadata-colors.constants.js +33 -0
- package/storybook-static/assets/images/README.md +66 -0
- package/styles.css +1 -0
- package/dist/cqa-ui/README.md +0 -226
- package/dist/cqa-ui/esm2020/lib/button/button.component.mjs +0 -257
- package/dist/cqa-ui/esm2020/lib/dialog/dialog.component.mjs +0 -127
- package/dist/cqa-ui/esm2020/lib/ui-kit.module.mjs +0 -69
- package/dist/cqa-ui/esm2020/public-api.mjs +0 -10
- package/dist/cqa-ui/fesm2015/cqa-lib-cqa-ui.mjs +0 -895
- package/dist/cqa-ui/fesm2015/cqa-lib-cqa-ui.mjs.map +0 -1
- package/dist/cqa-ui/fesm2020/cqa-lib-cqa-ui.mjs +0 -881
- package/dist/cqa-ui/fesm2020/cqa-lib-cqa-ui.mjs.map +0 -1
- package/dist/cqa-ui/lib/ui-kit.module.d.ts +0 -15
- package/dist/cqa-ui/package.json +0 -56
- package/dist/cqa-ui/public-api.d.ts +0 -9
- package/dist/cqa-ui/styles.css +0 -1
- /package/{dist/cqa-ui/cqa-lib-cqa-ui.d.ts → cqa-lib-cqa-ui.d.ts} +0 -0
- /package/{dist/cqa-ui/esm2020 → esm2020}/cqa-lib-cqa-ui.mjs +0 -0
- /package/{dist/cqa-ui/esm2020 → esm2020}/lib/dialog/dialog-ref.mjs +0 -0
- /package/{dist/cqa-ui/esm2020 → esm2020}/lib/dialog/dialog.models.mjs +0 -0
- /package/{dist/cqa-ui/esm2020 → esm2020}/lib/dialog/dialog.service.mjs +0 -0
- /package/{dist/cqa-ui/esm2020 → esm2020}/lib/dialog/dialog.tokens.mjs +0 -0
- /package/{dist/cqa-ui/lib → lib}/dialog/dialog-ref.d.ts +0 -0
- /package/{dist/cqa-ui/lib → lib}/dialog/dialog.component.d.ts +0 -0
- /package/{dist/cqa-ui/lib → lib}/dialog/dialog.models.d.ts +0 -0
- /package/{dist/cqa-ui/lib → lib}/dialog/dialog.service.d.ts +0 -0
- /package/{dist/cqa-ui/lib → lib}/dialog/dialog.tokens.d.ts +0 -0
- /package/{dist/cqa-ui/lib → lib}/search-bar/search-bar.component.d.ts +0 -0
- /package/{dist/cqa-ui/lib → lib}/segment-control/segment-control.component.d.ts +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="80" height="80" rx="24" fill="#EEF2FF"/>
|
|
3
|
+
<path d="M28 18H46L56 28V60C56 62.2091 54.2091 64 52 64H28C25.7909 64 24 62.2091 24 60V22C24 19.7909 25.7909 18 28 18Z" fill="#FFFFFF" stroke="#4F46E5" stroke-width="2"/>
|
|
4
|
+
<path d="M46 18V28H56" fill="#E0E7FF"/>
|
|
5
|
+
<rect x="30" y="36" width="16" height="3" rx="1.5" fill="#4F46E5" opacity="0.8"/>
|
|
6
|
+
<rect x="30" y="44" width="20" height="3" rx="1.5" fill="#4F46E5" opacity="0.6"/>
|
|
7
|
+
<circle cx="52" cy="52" r="7" fill="#4F46E5"/>
|
|
8
|
+
<path d="M52 48V52H56" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round"/>
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="80" height="80" rx="24" fill="#EEF2FF"/>
|
|
3
|
+
<circle cx="40" cy="34" r="14" fill="#FFFFFF" stroke="#4F46E5" stroke-width="2"/>
|
|
4
|
+
<path d="M40 24V34L48 38" stroke="#4F46E5" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
<rect x="24" y="50" width="32" height="8" rx="4" fill="#4F46E5" opacity="0.2"/>
|
|
6
|
+
<circle cx="60" cy="26" r="4" fill="#4F46E5"/>
|
|
7
|
+
<circle cx="20" cy="44" r="3" fill="#A78BFA"/>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image assets constants for the UI library
|
|
3
|
+
*
|
|
4
|
+
* Place your image files in src/lib/assets/images/ and reference them here
|
|
5
|
+
*
|
|
6
|
+
* Usage in components:
|
|
7
|
+
* import { EMPTY_STATE_IMAGES } from '../assets/images/image-assets.constants';
|
|
8
|
+
* imageUrl: EMPTY_STATE_IMAGES.TEST_CASE
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export const EMPTY_STATE_IMAGES = {
|
|
12
|
+
// Test Case icon (document with gear)
|
|
13
|
+
TEST_CASE: 'assets/images/TestCaseIcon.png',
|
|
14
|
+
|
|
15
|
+
// Search/Debug icon (magnifying glass with question mark)
|
|
16
|
+
SEARCH_DEBUG: 'assets/images/SearchIcon.png',
|
|
17
|
+
|
|
18
|
+
// Upload/Folder icon (folder with upload arrow and plus)
|
|
19
|
+
UPLOAD_FOLDER: 'assets/images/FilesIcon.png',
|
|
20
|
+
|
|
21
|
+
// Dashboard overview
|
|
22
|
+
DASHBOARD: 'assets/images/DashboardIcon.png',
|
|
23
|
+
|
|
24
|
+
// Checklist/Add icon (clipboard with plus)
|
|
25
|
+
CHECKLIST_ADD: 'assets/images/StepsIcon.png',
|
|
26
|
+
|
|
27
|
+
// Document/Gear icon (document with gear overlay)
|
|
28
|
+
DOCUMENT_GEAR: 'assets/images/document-gear-icon.svg',
|
|
29
|
+
|
|
30
|
+
// Analytics/Chart icon (bar chart)
|
|
31
|
+
ANALYTICS_CHART: 'assets/images/ReportsIcon.png',
|
|
32
|
+
|
|
33
|
+
// Default empty state icon
|
|
34
|
+
DEFAULT: 'assets/images/SearchIcon.png',
|
|
35
|
+
} as const;
|
|
36
|
+
|
|
37
|
+
export type EmptyStateImageKey = keyof typeof EMPTY_STATE_IMAGES;
|
|
38
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="80" height="80" rx="24" fill="#EEF2FF"/>
|
|
3
|
+
<circle cx="38" cy="36" r="16" stroke="#4F46E5" stroke-width="3" fill="#FFFFFF"/>
|
|
4
|
+
<path d="M34 30C35.1046 30 36 30.8954 36 32C36 33.1046 35.1046 34 34 34" stroke="#4F46E5" stroke-width="3" stroke-linecap="round"/>
|
|
5
|
+
<circle cx="34" cy="42" r="2" fill="#4F46E5"/>
|
|
6
|
+
<line x1="48" y1="48" x2="58" y2="58" stroke="#8B5CF6" stroke-width="4" stroke-linecap="round"/>
|
|
7
|
+
<circle cx="62" cy="28" r="4" fill="#4F46E5"/>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="80" height="80" rx="24" fill="#EEF2FF"/>
|
|
3
|
+
<rect x="20" y="16" width="40" height="48" rx="12" fill="#FFFFFF" stroke="#8B5CF6" stroke-width="2"/>
|
|
4
|
+
<rect x="28" y="30" width="24" height="4" rx="2" fill="#8B5CF6" opacity="0.8"/>
|
|
5
|
+
<rect x="28" y="40" width="24" height="4" rx="2" fill="#8B5CF6" opacity="0.6"/>
|
|
6
|
+
<rect x="28" y="50" width="16" height="4" rx="2" fill="#8B5CF6" opacity="0.5"/>
|
|
7
|
+
<circle cx="54" cy="56" r="7" fill="#4F46E5"/>
|
|
8
|
+
<path d="M54 51V56H59" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round"/>
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="80" height="80" rx="24" fill="#EEF2FF"/>
|
|
3
|
+
<path d="M18 32C18 28.6863 20.6863 26 24 26H34L40 32H56C59.3137 32 62 34.6863 62 38V54C62 57.3137 59.3137 60 56 60H24C20.6863 60 18 57.3137 18 54V32Z" fill="#C7D2FE"/>
|
|
4
|
+
<path d="M40 46L40 54" stroke="#4F46E5" stroke-width="3" stroke-linecap="round"/>
|
|
5
|
+
<path d="M36 50L40 46L44 50" stroke="#4F46E5" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
|
+
<path d="M48 44H56" stroke="#4F46E5" stroke-width="3" stroke-linecap="round"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color constants for metadata values
|
|
3
|
+
* These are the source of truth for Priority, Result, and Status colors
|
|
4
|
+
* Used by both metadata-colors.util.ts and tailwind.config.js
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
module.exports = {
|
|
8
|
+
PRIORITY_COLOR_VALUES: {
|
|
9
|
+
critical: '#DC2626', // Red - danger color
|
|
10
|
+
major: '#C10007', // Dark red
|
|
11
|
+
medium: '#CA8A04', // Yellow-600
|
|
12
|
+
minor: '#2563EB', // Blue-600
|
|
13
|
+
'not-set': '#101828', // Default dark
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
RESULT_COLOR_VALUES: {
|
|
17
|
+
passed: '#16A34A', // Green-600
|
|
18
|
+
failed: '#DC2626', // Red - danger color
|
|
19
|
+
aborted: '#EA580C', // Orange-600
|
|
20
|
+
'in-review': '#2563EB', // Blue-600
|
|
21
|
+
'not-executed': '#101828', // Default dark
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
STATUS_COLOR_VALUES: {
|
|
25
|
+
active: '#16A34A', // Green-600
|
|
26
|
+
inactive: '#6B7280', // Gray-500
|
|
27
|
+
pending: '#CA8A04', // Yellow-600
|
|
28
|
+
completed: '#16A34A', // Green-600
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
DEFAULT_METADATA_COLOR_VALUE: '#101828',
|
|
32
|
+
};
|
|
33
|
+
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Image Assets
|
|
2
|
+
|
|
3
|
+
This folder contains all image assets used by the UI library components.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
- Place all image files (PNG, SVG, JPG, etc.) in this directory
|
|
8
|
+
- Use descriptive file names (e.g., `test-case-icon.svg`, `empty-state-default.png`)
|
|
9
|
+
- For component-specific images, consider creating subdirectories if needed
|
|
10
|
+
|
|
11
|
+
## Available Images
|
|
12
|
+
|
|
13
|
+
The following images are configured for use in empty state components:
|
|
14
|
+
|
|
15
|
+
- `TestCaseIcon.png` - Test case/document with gear icon
|
|
16
|
+
- `SearchIcon.png` - Magnifying glass with question mark
|
|
17
|
+
- `FilesIcon.png` - Folder/upload icon
|
|
18
|
+
- `DashboardIcon.png` - Dashboard overview cards
|
|
19
|
+
- `StepsIcon.png` - Checklist / tasks icon
|
|
20
|
+
- `document-gear-icon.svg` - Document with gear overlay
|
|
21
|
+
- `ReportsIcon.png` - Analytics/Reports chart icon
|
|
22
|
+
- `SearchIcon.png` - Default fallback icon
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
### Using Image Constants
|
|
27
|
+
|
|
28
|
+
Import the image constants for type-safe access:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { EMPTY_STATE_IMAGES } from '../assets/images/image-assets.constants';
|
|
32
|
+
|
|
33
|
+
// In component
|
|
34
|
+
imageUrl: EMPTY_STATE_IMAGES.TEST_CASE
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Direct Path Reference
|
|
38
|
+
|
|
39
|
+
You can also reference images directly:
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
// Example in component
|
|
43
|
+
imageUrl: 'assets/images/test-case-icon.svg'
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### In Storybook
|
|
47
|
+
|
|
48
|
+
Images are automatically available in Storybook stories:
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { EMPTY_STATE_IMAGES } from '../assets/images/image-assets.constants';
|
|
52
|
+
|
|
53
|
+
export const MyStory = Template.bind({});
|
|
54
|
+
MyStory.args = {
|
|
55
|
+
imageUrl: EMPTY_STATE_IMAGES.TEST_CASE,
|
|
56
|
+
// ...
|
|
57
|
+
};
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Notes
|
|
61
|
+
|
|
62
|
+
- Keep image file sizes optimized for web
|
|
63
|
+
- Use SVG format when possible for scalability
|
|
64
|
+
- Ensure all images are properly licensed for use in the library
|
|
65
|
+
- Images will be included in the built library and available to consuming applications
|
|
66
|
+
|
package/styles.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v2.2.19 | MIT License | https://tailwindcss.com*//*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:initial;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:-moz-focusring{outline:auto}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity));--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);--tw-filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);--tw-backdrop-blur:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-invert:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-opacity:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}#cqa-ui-root .cqa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}#cqa-ui-root .cqa-pointer-events-none{pointer-events:none}#cqa-ui-root .cqa-absolute{position:absolute}#cqa-ui-root .\!cqa-absolute{position:absolute!important}#cqa-ui-root .cqa-relative{position:relative}#cqa-ui-root .cqa-inset-0{top:0;right:0;bottom:0;left:0}#cqa-ui-root .cqa-left-\[4px\]{left:4px}#cqa-ui-root .cqa-top-\[6px\]{top:6px}#cqa-ui-root .cqa-top-full{top:100%}#cqa-ui-root .cqa-left-0{left:0}#cqa-ui-root .cqa-top-0{top:0}#cqa-ui-root .cqa-bottom-0{bottom:0}#cqa-ui-root .cqa-right-0{right:0}#cqa-ui-root .cqa-bottom-\[calc\(100\%\+8px\)\]{bottom:calc(100% + 8px)}#cqa-ui-root .cqa-bottom-\[18\.75px\]{bottom:18.75px}#cqa-ui-root .cqa-left-\[50\%\]{left:50%}#cqa-ui-root .cqa-bottom-\[2px\]{bottom:2px}#cqa-ui-root .cqa-z-\[9999\]{z-index:9999}#cqa-ui-root .cqa-z-\[1000\]{z-index:1000}#cqa-ui-root .cqa-z-\[1\]{z-index:1}#cqa-ui-root .cqa-z-20{z-index:20}#cqa-ui-root .cqa-z-\[100\]{z-index:100}#cqa-ui-root .cqa-z-10{z-index:10}#cqa-ui-root .cqa-m-0{margin:0}#cqa-ui-root .cqa-mr-2{margin-right:.5rem}#cqa-ui-root .cqa-mb-2{margin-bottom:.5rem}#cqa-ui-root .cqa-mr-1\.5{margin-right:.375rem}#cqa-ui-root .cqa-mr-1{margin-right:.25rem}#cqa-ui-root .cqa-mb-3{margin-bottom:.75rem}#cqa-ui-root .cqa-mb-6{margin-bottom:1.5rem}#cqa-ui-root .cqa-mb-8{margin-bottom:2rem}#cqa-ui-root .cqa-mb-4{margin-bottom:1rem}#cqa-ui-root .cqa-mt-1{margin-top:.25rem}#cqa-ui-root .cqa-mt-2{margin-top:.5rem}#cqa-ui-root .cqa-mb-1{margin-bottom:.25rem}#cqa-ui-root .cqa-mt-4{margin-top:1rem}#cqa-ui-root .cqa-ml-1{margin-left:.25rem}#cqa-ui-root .cqa-mt-0\.5{margin-top:.125rem}#cqa-ui-root .cqa-mt-0{margin-top:0}#cqa-ui-root .cqa-ml-auto{margin-left:auto}#cqa-ui-root .cqa-mb-\[28px\]{margin-bottom:28px}#cqa-ui-root .cqa-mt-\[10px\]{margin-top:10px}#cqa-ui-root .\!cqa-mb-2{margin-bottom:.5rem!important}#cqa-ui-root .\!cqa-mt-\[10px\]{margin-top:10px!important}#cqa-ui-root .cqa-box-border{box-sizing:border-box}#cqa-ui-root .cqa-block{display:block}#cqa-ui-root .cqa-flex{display:flex}#cqa-ui-root .cqa-inline-flex{display:inline-flex}#cqa-ui-root .cqa-grid{display:grid}#cqa-ui-root .cqa-hidden{display:none}#cqa-ui-root .\!cqa-h-\[18px\]{height:18px!important}#cqa-ui-root .cqa-h-24{height:6rem}#cqa-ui-root .cqa-h-1{height:.25rem}#cqa-ui-root .cqa-h-4{height:1rem}#cqa-ui-root .cqa-h-9{height:2.25rem}#cqa-ui-root .cqa-h-32{height:8rem}#cqa-ui-root .cqa-h-20{height:5rem}#cqa-ui-root .cqa-h-full{height:100%}#cqa-ui-root .\!cqa-h-\[16px\]{height:16px!important}#cqa-ui-root .cqa-h-\[28px\]{height:28px}#cqa-ui-root .cqa-h-\[31\.5px\]{height:31.5px}#cqa-ui-root .cqa-h-\[25px\]{height:25px}#cqa-ui-root .cqa-h-\[18px\]{height:18px}#cqa-ui-root .cqa-h-\[8px\]{height:8px}#cqa-ui-root .cqa-h-\[40px\]{height:40px}#cqa-ui-root .\!cqa-h-4{height:1rem!important}#cqa-ui-root .cqa-h-6{height:1.5rem}#cqa-ui-root .cqa-h-10{height:2.5rem}#cqa-ui-root .\!cqa-h-5{height:1.25rem!important}#cqa-ui-root .cqa-h-auto{height:auto}#cqa-ui-root .cqa-h-7{height:1.75rem}#cqa-ui-root .cqa-h-\[2px\]{height:2px}#cqa-ui-root .cqa-h-\[14px\]{height:14px}#cqa-ui-root .cqa-h-8{height:2rem}#cqa-ui-root .cqa-max-h-\[170px\]{max-height:170px}#cqa-ui-root .cqa-min-h-\[220px\]{min-height:220px}#cqa-ui-root .cqa-min-h-\[53px\]{min-height:53px}#cqa-ui-root .\!cqa-w-\[18px\]{width:18px!important}#cqa-ui-root .cqa-w-full{width:100%}#cqa-ui-root .cqa-w-2{width:.5rem}#cqa-ui-root .cqa-w-auto{width:auto}#cqa-ui-root .cqa-w-6{width:1.5rem}#cqa-ui-root .cqa-w-4{width:1rem}#cqa-ui-root .cqa-w-32{width:8rem}#cqa-ui-root .cqa-w-20{width:5rem}#cqa-ui-root .\!cqa-w-\[16px\]{width:16px!important}#cqa-ui-root .cqa-w-\[75px\]{width:75px}#cqa-ui-root .cqa-w-\[28px\]{width:28px}#cqa-ui-root .cqa-w-\[295px\]{width:295px}#cqa-ui-root .cqa-w-\[395px\]{width:395px}#cqa-ui-root .cqa-w-\[495px\]{width:495px}#cqa-ui-root .cqa-w-px{width:1px}#cqa-ui-root .cqa-w-\[40px\]{width:40px}#cqa-ui-root .\!cqa-w-4{width:1rem!important}#cqa-ui-root .cqa-w-10{width:2.5rem}#cqa-ui-root .\!cqa-w-5{width:1.25rem!important}#cqa-ui-root .cqa-w-\[6px\]{width:6px}#cqa-ui-root .cqa-w-\[calc\(100\%-32px\)\]{width:calc(100% - 32px)}#cqa-ui-root .cqa-min-w-\[28px\]{min-width:28px}#cqa-ui-root .cqa-min-w-\[180px\]{min-width:180px}#cqa-ui-root .cqa-min-w-\[120px\]{min-width:120px}#cqa-ui-root .cqa-min-w-0{min-width:0}#cqa-ui-root .\!cqa-min-w-\[47px\]{min-width:47px!important}#cqa-ui-root .cqa-min-w-\[40px\]{min-width:40px}#cqa-ui-root .cqa-max-w-\[350px\]{max-width:350px}#cqa-ui-root .cqa-max-w-none{max-width:none}#cqa-ui-root .cqa-max-w-\[90\%\]{max-width:90%}#cqa-ui-root .cqa-max-w-\[199px\]{max-width:199px}#cqa-ui-root .cqa-flex-1{flex:1 1 0%}#cqa-ui-root .cqa-flex-none{flex:none}#cqa-ui-root .cqa-flex-shrink-0{flex-shrink:0}#cqa-ui-root .cqa-translate-x-\[-50\%\]{--tw-translate-x:-50%;transform:var(--tw-transform)}#cqa-ui-root .cqa-rotate-180{--tw-rotate:180deg;transform:var(--tw-transform)}@keyframes cqa-spin{to{transform:rotate(1turn)}}#cqa-ui-root .cqa-animate-spin{animation:cqa-spin 1s linear infinite}#cqa-ui-root .cqa-cursor-not-allowed{cursor:not-allowed}#cqa-ui-root .cqa-cursor-pointer{cursor:pointer}#cqa-ui-root .cqa-list-disc{list-style-type:disc}#cqa-ui-root .cqa-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}#cqa-ui-root .cqa-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}#cqa-ui-root .cqa-flex-row{flex-direction:row}#cqa-ui-root .cqa-flex-col{flex-direction:column}#cqa-ui-root .cqa-flex-wrap{flex-wrap:wrap}#cqa-ui-root .cqa-items-start{align-items:flex-start}#cqa-ui-root .cqa-items-end{align-items:flex-end}#cqa-ui-root .cqa-items-center{align-items:center}#cqa-ui-root .cqa-items-baseline{align-items:baseline}#cqa-ui-root .cqa-items-stretch{align-items:stretch}#cqa-ui-root .cqa-justify-start{justify-content:flex-start}#cqa-ui-root .cqa-justify-end{justify-content:flex-end}#cqa-ui-root .cqa-justify-center{justify-content:center}#cqa-ui-root .cqa-justify-between{justify-content:space-between}#cqa-ui-root .cqa-gap-4{gap:1rem}#cqa-ui-root .cqa-gap-2{gap:.5rem}#cqa-ui-root .cqa-gap-5{gap:1.25rem}#cqa-ui-root .cqa-gap-3{gap:.75rem}#cqa-ui-root .cqa-gap-0\.5{gap:.125rem}#cqa-ui-root .cqa-gap-0{gap:0}#cqa-ui-root .cqa-gap-1{gap:.25rem}#cqa-ui-root .cqa-gap-\[62px\]{gap:62px}#cqa-ui-root .cqa-gap-9{gap:2.25rem}#cqa-ui-root .cqa-gap-6{gap:1.5rem}#cqa-ui-root .cqa-gap-\[7px\]{gap:7px}#cqa-ui-root .cqa-gap-\[19px\]{gap:19px}#cqa-ui-root .cqa-gap-\[21px\]{gap:21px}#cqa-ui-root .cqa-gap-\[3\.5px\]{gap:3.5px}#cqa-ui-root .cqa-gap-\[8\.75px\]{gap:8.75px}#cqa-ui-root .cqa-gap-px{gap:1px}#cqa-ui-root .cqa-gap-1\.5{gap:.375rem}#cqa-ui-root .cqa-gap-\[14px\]{gap:14px}#cqa-ui-root .cqa-gap-y-2{row-gap:.5rem}#cqa-ui-root .cqa-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}#cqa-ui-root .cqa-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}#cqa-ui-root .cqa-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}#cqa-ui-root .cqa-self-stretch{align-self:stretch}#cqa-ui-root .cqa-overflow-auto{overflow:auto}#cqa-ui-root .cqa-overflow-hidden{overflow:hidden}#cqa-ui-root .cqa-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#cqa-ui-root .cqa-whitespace-nowrap{white-space:nowrap}#cqa-ui-root .cqa-whitespace-pre-line{white-space:pre-line}#cqa-ui-root .cqa-rounded-\[6px\]{border-radius:6px}#cqa-ui-root .cqa-rounded-\[8px\]{border-radius:8px}#cqa-ui-root .cqa-rounded-lg{border-radius:.5rem}#cqa-ui-root .cqa-rounded{border-radius:.25rem}#cqa-ui-root .cqa-rounded-xl{border-radius:.75rem}#cqa-ui-root .cqa-rounded-2xl{border-radius:1rem}#cqa-ui-root .cqa-rounded-\[5px\]{border-radius:5px}#cqa-ui-root .cqa-rounded-md{border-radius:.375rem}#cqa-ui-root .cqa-rounded-3xl{border-radius:1.5rem}#cqa-ui-root .cqa-rounded-full{border-radius:9999px}#cqa-ui-root .cqa-rounded-\[7px\]{border-radius:7px}#cqa-ui-root .cqa-rounded-\[10px\]{border-radius:10px}#cqa-ui-root .\!cqa-rounded-\[10px\]{border-radius:10px!important}#cqa-ui-root .cqa-rounded-none{border-radius:0}#cqa-ui-root .cqa-rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}#cqa-ui-root .cqa-rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}#cqa-ui-root .cqa-border{border-width:1px}#cqa-ui-root .cqa-border-0{border-width:0}#cqa-ui-root .cqa-border-t{border-top-width:1px}#cqa-ui-root .cqa-border-l{border-left-width:1px}#cqa-ui-root .cqa-border-r{border-right-width:1px}#cqa-ui-root .cqa-border-b{border-bottom-width:1px}#cqa-ui-root .cqa-border-t-2{border-top-width:2px}#cqa-ui-root .cqa-border-l-4{border-left-width:4px}#cqa-ui-root .cqa-border-b-0{border-bottom-width:0}#cqa-ui-root .cqa-border-solid{border-style:solid}#cqa-ui-root .cqa-border-none{border-style:none}#cqa-ui-root .cqa-border-primary-muted{--tw-border-opacity:1;border-color:rgba(226,226,227,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-primary-hover{--tw-border-opacity:1;border-color:rgba(27,31,235,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-primary{--tw-border-opacity:1;border-color:rgba(63,67,238,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-slate{--tw-border-opacity:1;border-color:rgba(65,65,70,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-red-200{--tw-border-opacity:1;border-color:rgba(254,202,202,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-border-input{--tw-border-opacity:1;border-color:rgba(203,213,245,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-border-default{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-border-warning{--tw-border-opacity:1;border-color:rgba(254,226,226,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-grey-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-danger{--tw-border-opacity:1;border-color:rgba(220,38,38,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-ink{--tw-border-opacity:1;border-color:rgba(11,11,12,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-\[\#E5E7EB\]{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-success-100{--tw-border-opacity:1;border-color:rgba(207,242,229,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-transparent{border-color:transparent}#cqa-ui-root .cqa-border-primary-surface{--tw-border-opacity:1;border-color:rgba(216,217,252,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-\[\#A4F4CF\]{--tw-border-opacity:1;border-color:rgba(164,244,207,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-border-light{--tw-border-opacity:1;border-color:rgba(230,232,240,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-\[\#3F43EE\]{--tw-border-opacity:1;border-color:rgba(63,67,238,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-\[\#0B0B0C\]{--tw-border-opacity:1;border-color:rgba(11,11,12,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-\[\#E5E5E5\]{--tw-border-opacity:1;border-color:rgba(229,229,229,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-t-primary-surface{--tw-border-opacity:1;border-top-color:rgba(216,217,252,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-l-yellow-500{--tw-border-opacity:1;border-left-color:rgba(245,158,11,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-l-red-500{--tw-border-opacity:1;border-left-color:rgba(239,68,68,var(--tw-border-opacity))}#cqa-ui-root .cqa-border-l-gray-500{--tw-border-opacity:1;border-left-color:rgba(107,114,128,var(--tw-border-opacity))}#cqa-ui-root .cqa-bg-red-100{--tw-bg-opacity:1;background-color:rgba(254,226,226,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-yellow-100{--tw-bg-opacity:1;background-color:rgba(254,243,199,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-blue-100{--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-transparent{background-color:initial}#cqa-ui-root .cqa-bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-primary-muted{--tw-bg-opacity:1;background-color:rgba(226,226,227,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-primary{--tw-bg-opacity:1;background-color:rgba(63,67,238,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-primary-hover{--tw-bg-opacity:1;background-color:rgba(27,31,235,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-grey-400{--tw-bg-opacity:1;background-color:rgba(240,240,241,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-grey-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-primary-surface-alt{--tw-bg-opacity:1;background-color:rgba(177,178,248,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-primary-surface{--tw-bg-opacity:1;background-color:rgba(216,217,252,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-tonal-hover{--tw-bg-opacity:1;background-color:rgba(138,140,244,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-surface-default{--tw-bg-opacity:1;background-color:rgba(251,252,255,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-danger{--tw-bg-opacity:1;background-color:rgba(220,38,38,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-danger-hover{--tw-bg-opacity:1;background-color:rgba(185,28,28,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-ink{--tw-bg-opacity:1;background-color:rgba(11,11,12,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-ink-muted{--tw-bg-opacity:1;background-color:rgba(22,22,23,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-slate{--tw-bg-opacity:1;background-color:rgba(65,65,70,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-red-50{--tw-bg-opacity:1;background-color:rgba(254,242,242,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-primary\/10{background-color:rgba(63,67,238,.1)}#cqa-ui-root .cqa-bg-warning-light{--tw-bg-opacity:1;background-color:rgba(254,242,242,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-primary-300{--tw-bg-opacity:1;background-color:rgba(138,140,244,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-white\/70{background-color:hsla(0,0%,100%,.7)}#cqa-ui-root .cqa-bg-\[\#F7F8FA\],#cqa-ui-root .cqa-bg-grey-100{--tw-bg-opacity:1;background-color:rgba(247,248,250,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-surface-light{--tw-bg-opacity:1;background-color:rgba(245,245,245,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#E5E7EB\]{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#F3F4F6\]{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#4338CA\]{--tw-bg-opacity:1;background-color:rgba(67,56,202,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#10B981\]{--tw-bg-opacity:1;background-color:rgba(16,185,129,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#EF4444\]{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#3B82F6\]{--tw-bg-opacity:1;background-color:rgba(59,130,246,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#D0FAE5\]{--tw-bg-opacity:1;background-color:rgba(208,250,229,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-red-500{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#EEF2FF\]{--tw-bg-opacity:1;background-color:rgba(238,242,255,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#3F43EE\]{--tw-bg-opacity:1;background-color:rgba(63,67,238,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#6F4EF2\]{--tw-bg-opacity:1;background-color:rgba(111,78,242,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#F0FDF4\]{--tw-bg-opacity:1;background-color:rgba(240,253,244,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#A855F7\]{--tw-bg-opacity:1;background-color:rgba(168,85,247,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#FAF5FF\]{--tw-bg-opacity:1;background-color:rgba(250,245,255,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#4F46E5\]{--tw-bg-opacity:1;background-color:rgba(79,70,229,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#8B5CF6\]{--tw-bg-opacity:1;background-color:rgba(139,92,246,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#F9FAFB\]{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#0B0B0C\]{--tw-bg-opacity:1;background-color:rgba(11,11,12,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-\[\#eff0f7\]{--tw-bg-opacity:1;background-color:rgba(239,240,247,var(--tw-bg-opacity))}#cqa-ui-root .cqa-bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}#cqa-ui-root .cqa-from-indigo-500{--tw-gradient-from:#6366f1;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgba(99,102,241,0))}#cqa-ui-root .cqa-to-violet-950{--tw-gradient-to:#2e1065}#cqa-ui-root .cqa-object-contain{-o-object-fit:contain;object-fit:contain}#cqa-ui-root .cqa-p-8{padding:2rem}#cqa-ui-root .\!cqa-p-0{padding:0!important}#cqa-ui-root .cqa-p-\[17px\]{padding:17px}#cqa-ui-root .cqa-p-4{padding:1rem}#cqa-ui-root .cqa-p-6{padding:1.5rem}#cqa-ui-root .cqa-p-1\.5{padding:.375rem}#cqa-ui-root .cqa-p-1{padding:.25rem}#cqa-ui-root .cqa-p-\[5px\]{padding:5px}#cqa-ui-root .cqa-p-0{padding:0}#cqa-ui-root .cqa-p-\[3\.5px\]{padding:3.5px}#cqa-ui-root .cqa-p-3{padding:.75rem}#cqa-ui-root .\!cqa-p-\[7px\]{padding:7px!important}#cqa-ui-root .cqa-py-\[4px\]{padding-top:4px;padding-bottom:4px}#cqa-ui-root .cqa-px-3{padding-left:.75rem;padding-right:.75rem}#cqa-ui-root .cqa-px-\[24px\]{padding-left:24px;padding-right:24px}#cqa-ui-root .cqa-px-\[12px\]{padding-left:12px;padding-right:12px}#cqa-ui-root .cqa-py-\[10px\]{padding-top:10px;padding-bottom:10px}#cqa-ui-root .cqa-px-6{padding-left:1.5rem;padding-right:1.5rem}#cqa-ui-root .cqa-py-3{padding-top:.75rem;padding-bottom:.75rem}#cqa-ui-root .cqa-px-4{padding-left:1rem;padding-right:1rem}#cqa-ui-root .cqa-py-2{padding-top:.5rem;padding-bottom:.5rem}#cqa-ui-root .cqa-py-4{padding-top:1rem;padding-bottom:1rem}#cqa-ui-root .cqa-py-\[5\.75px\]{padding-top:5.75px;padding-bottom:5.75px}#cqa-ui-root .cqa-px-\[11\.5px\]{padding-left:11.5px;padding-right:11.5px}#cqa-ui-root .cqa-px-\[21px\]{padding-left:21px;padding-right:21px}#cqa-ui-root .cqa-py-\[15px\]{padding-top:15px;padding-bottom:15px}#cqa-ui-root .cqa-py-\[6\.75px\]{padding-top:6.75px;padding-bottom:6.75px}#cqa-ui-root .cqa-px-2{padding-left:.5rem;padding-right:.5rem}#cqa-ui-root .cqa-py-\[6px\]{padding-top:6px;padding-bottom:6px}#cqa-ui-root .cqa-px-\[14px\]{padding-left:14px;padding-right:14px}#cqa-ui-root .cqa-py-\[3\.5px\]{padding-top:3.5px;padding-bottom:3.5px}#cqa-ui-root .cqa-py-1{padding-top:.25rem;padding-bottom:.25rem}#cqa-ui-root .cqa-py-\[15\.5px\]{padding-top:15.5px;padding-bottom:15.5px}#cqa-ui-root .cqa-px-\[20px\]{padding-left:20px;padding-right:20px}#cqa-ui-root .cqa-py-\[5px\]{padding-top:5px;padding-bottom:5px}#cqa-ui-root .cqa-px-\[8\.75px\]{padding-left:8.75px;padding-right:8.75px}#cqa-ui-root .cqa-py-0\.5{padding-top:.125rem;padding-bottom:.125rem}#cqa-ui-root .cqa-py-0{padding-top:0;padding-bottom:0}#cqa-ui-root .cqa-py-8{padding-top:2rem;padding-bottom:2rem}#cqa-ui-root .cqa-px-\[17px\]{padding-left:17px;padding-right:17px}#cqa-ui-root .cqa-px-\[10px\]{padding-left:10px;padding-right:10px}#cqa-ui-root .cqa-py-\[2px\]{padding-top:2px;padding-bottom:2px}#cqa-ui-root .cqa-px-2\.5{padding-left:.625rem;padding-right:.625rem}#cqa-ui-root .cqa-px-5{padding-left:1.25rem;padding-right:1.25rem}#cqa-ui-root .cqa-px-px{padding-left:1px;padding-right:1px}#cqa-ui-root .cqa-px-\[11px\]{padding-left:11px;padding-right:11px}#cqa-ui-root .cqa-py-\[1px\]{padding-top:1px;padding-bottom:1px}#cqa-ui-root .cqa-py-\[13\.25px\]{padding-top:13.25px;padding-bottom:13.25px}#cqa-ui-root .cqa-px-\[10\.5px\]{padding-left:10.5px;padding-right:10.5px}#cqa-ui-root .cqa-py-\[11px\]{padding-top:11px;padding-bottom:11px}#cqa-ui-root .cqa-pr-\[24px\]{padding-right:24px}#cqa-ui-root .cqa-pl-\[16px\]{padding-left:16px}#cqa-ui-root .cqa-pl-\[24px\]{padding-left:24px}#cqa-ui-root .cqa-pr-\[16px\]{padding-right:16px}#cqa-ui-root .cqa-pl-5{padding-left:1.25rem}#cqa-ui-root .cqa-pr-2{padding-right:.5rem}#cqa-ui-root .cqa-pr-6{padding-right:1.5rem}#cqa-ui-root .cqa-pl-2{padding-left:.5rem}#cqa-ui-root .cqa-pr-4{padding-right:1rem}#cqa-ui-root .cqa-pb-px{padding-bottom:1px}#cqa-ui-root .cqa-text-left{text-align:left}#cqa-ui-root .cqa-text-center{text-align:center}#cqa-ui-root .cqa-text-right{text-align:right}#cqa-ui-root .cqa-align-middle{vertical-align:middle}#cqa-ui-root .cqa-font-inter{font-family:Inter,sans-serif}#cqa-ui-root .cqa-font-geist{font-family:Geist,sans-serif}#cqa-ui-root .cqa-font-nunito-sans{font-family:Nunito Sans,sans-serif}#cqa-ui-root .cqa-text-sm{font-size:.875rem;line-height:1.25rem}#cqa-ui-root .\!cqa-text-\[18px\]{font-size:18px!important}#cqa-ui-root .cqa-text-lg{font-size:1.125rem;line-height:1.75rem}#cqa-ui-root .cqa-text-\[12\.3px\]{font-size:12.3px}#cqa-ui-root .cqa-text-\[14px\]{font-size:14px}#cqa-ui-root .cqa-text-3xl{font-size:1.875rem;line-height:2.25rem}#cqa-ui-root .cqa-text-2xl{font-size:1.5rem;line-height:2rem}#cqa-ui-root .cqa-text-xs{font-size:12px;line-height:12px}#cqa-ui-root .cqa-text-xl{font-size:1.25rem;line-height:1.75rem}#cqa-ui-root .cqa-text-base{font-size:1rem;line-height:1.5rem}#cqa-ui-root .\!cqa-text-\[16px\]{font-size:16px!important}#cqa-ui-root .cqa-text-\[12px\]{font-size:12px}#cqa-ui-root .cqa-text-\[18px\]{font-size:18px}#cqa-ui-root .cqa-text-\[32px\]{font-size:32px}#cqa-ui-root .cqa-text-\[16px\]{font-size:16px}#cqa-ui-root .\!cqa-text-\[20px\]{font-size:20px!important}#cqa-ui-root .cqa-text-\[20px\]{font-size:20px}#cqa-ui-root .cqa-text-\[10px\]{font-size:10px}#cqa-ui-root .cqa-text-\[30px\]{font-size:30px}#cqa-ui-root .cqa-text-\[28px\]{font-size:28px}#cqa-ui-root .cqa-text-\[13\.33px\]{font-size:13.33px}#cqa-ui-root .cqa-font-normal{font-weight:400}#cqa-ui-root .cqa-font-medium{font-weight:500}#cqa-ui-root .cqa-font-bold{font-weight:700}#cqa-ui-root .cqa-font-semibold{font-weight:600}#cqa-ui-root .cqa-font-extrabold{font-weight:800}#cqa-ui-root .cqa-uppercase{text-transform:uppercase}#cqa-ui-root .cqa-leading-\[17px\]{line-height:17px}#cqa-ui-root .cqa-leading-\[17\.5px\]{line-height:17.5px}#cqa-ui-root .cqa-leading-\[20px\]{line-height:20px}#cqa-ui-root .cqa-leading-6{line-height:1.5rem}#cqa-ui-root .cqa-leading-5{line-height:1.25rem}#cqa-ui-root .cqa-leading-4{line-height:1rem}#cqa-ui-root .cqa-leading-\[1\.4\]{line-height:1.4}#cqa-ui-root .cqa-leading-\[18px\]{line-height:18px}#cqa-ui-root .cqa-leading-\[14px\]{line-height:14px}#cqa-ui-root .cqa-leading-none{line-height:1}#cqa-ui-root .cqa-leading-\[12px\]{line-height:12px}#cqa-ui-root .cqa-leading-\[16px\]{line-height:16px}#cqa-ui-root .cqa-leading-\[21px\]{line-height:21px}#cqa-ui-root .cqa-leading-\[28px\]{line-height:28px}#cqa-ui-root .cqa-leading-\[1\]{line-height:1}#cqa-ui-root .cqa-leading-7{line-height:1.75rem}#cqa-ui-root .cqa-leading-\[36px\]{line-height:36px}#cqa-ui-root .cqa-tracking-wide{letter-spacing:.025em}#cqa-ui-root .cqa-tracking-normal{letter-spacing:0}#cqa-ui-root .cqa-tracking-\[-0\.449219px\]{letter-spacing:-.449219px}#cqa-ui-root .cqa-tracking-\[-0\.45px\]{letter-spacing:-.45px}#cqa-ui-root .cqa-tracking-\[0\.395508px\]{letter-spacing:.395508px}#cqa-ui-root .cqa-tracking-\[-0\.3px\]{letter-spacing:-.3px}#cqa-ui-root .cqa-text-red-800{--tw-text-opacity:1;color:rgba(153,27,27,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-yellow-800{--tw-text-opacity:1;color:rgba(146,64,14,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-blue-800{--tw-text-opacity:1;color:rgba(30,64,175,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-green-800{--tw-text-opacity:1;color:rgba(6,95,70,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-ink{--tw-text-opacity:1;color:rgba(11,11,12,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-ink-muted{--tw-text-opacity:1;color:rgba(22,22,23,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-surface-default{--tw-text-opacity:1;color:rgba(251,252,255,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-black-100{--tw-text-opacity:1;color:rgba(10,10,10,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-primary-hover{--tw-text-opacity:1;color:rgba(27,31,235,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-slate{--tw-text-opacity:1;color:rgba(65,65,70,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-priority-critical{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-priority-major{--tw-text-opacity:1;color:rgba(193,0,7,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-priority-medium{--tw-text-opacity:1;color:rgba(202,138,4,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-priority-minor{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-priority-not-set{--tw-text-opacity:1;color:rgba(16,24,40,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-result-passed{--tw-text-opacity:1;color:rgba(22,163,74,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-result-failed{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-result-aborted{--tw-text-opacity:1;color:rgba(234,88,12,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-result-in-review{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-result-not-executed{--tw-text-opacity:1;color:rgba(16,24,40,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-status-active{--tw-text-opacity:1;color:rgba(22,163,74,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-status-inactive{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-status-pending{--tw-text-opacity:1;color:rgba(202,138,4,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-status-completed{--tw-text-opacity:1;color:rgba(22,163,74,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-dialog{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-dialog-secondary{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-dialog-muted{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-primary{--tw-text-opacity:1;color:rgba(63,67,238,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-danger-hover{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#374151\]{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-neutral-900{--tw-text-opacity:1;color:rgba(22,22,23,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-neutral-500{--tw-text-opacity:1;color:rgba(109,109,116,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-danger{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-grey-300{--tw-text-opacity:1;color:rgba(113,113,130,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-muted{--tw-text-opacity:1;color:rgba(153,153,158,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-disabled{--tw-text-opacity:1;color:rgba(199,199,199,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#3F43EE\]{--tw-text-opacity:1;color:rgba(63,67,238,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#0A0A0A\]{--tw-text-opacity:1;color:rgba(10,10,10,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#111827\]{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-yellow-700{--tw-text-opacity:1;color:rgba(180,83,9,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-blue-700{--tw-text-opacity:1;color:rgba(29,78,216,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-green-700{--tw-text-opacity:1;color:rgba(4,120,87,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#101828\]{--tw-text-opacity:1;color:rgba(16,24,40,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#6A7282\]{--tw-text-opacity:1;color:rgba(106,114,130,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#10B981\]{--tw-text-opacity:1;color:rgba(16,185,129,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#EF4444\]{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#F59E0B\]{--tw-text-opacity:1;color:rgba(245,158,11,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#22223B\]{--tw-text-opacity:1;color:rgba(34,34,59,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#007A55\]{--tw-text-opacity:1;color:rgba(0,122,85,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#6B7280\]{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-gray-900{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-yellow-500{--tw-text-opacity:1;color:rgba(245,158,11,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-title{--tw-text-opacity:1;color:rgba(16,24,40,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-description{--tw-text-opacity:1;color:rgba(74,85,101,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-metadata-key{--tw-text-opacity:1;color:rgba(106,114,130,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-neutral-600{--tw-text-opacity:1;color:rgba(87,87,93,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-red-600{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#6F4EF2\]{--tw-text-opacity:1;color:rgba(111,78,242,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#A855F7\]{--tw-text-opacity:1;color:rgba(168,85,247,var(--tw-text-opacity))}#cqa-ui-root .cqa-text-\[\#0B0B0C\]{--tw-text-opacity:1;color:rgba(11,11,12,var(--tw-text-opacity))}#cqa-ui-root .cqa-underline{text-decoration:underline}#cqa-ui-root .cqa-opacity-60{opacity:.6}#cqa-ui-root .cqa-opacity-50{opacity:.5}#cqa-ui-root .cqa-opacity-10{opacity:.1}#cqa-ui-root .cqa-opacity-\[0\.815\]{opacity:.815}#cqa-ui-root .cqa-opacity-\[0\.695\]{opacity:.695}#cqa-ui-root .cqa-opacity-25{opacity:.25}#cqa-ui-root .cqa-opacity-75{opacity:.75}#cqa-ui-root .cqa-opacity-\[0\.38\]{opacity:.38}#cqa-ui-root .cqa-opacity-0{opacity:0}#cqa-ui-root .cqa-shadow-none{--tw-shadow:0 0 #0000}#cqa-ui-root .cqa-shadow-none,#cqa-ui-root .cqa-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#cqa-ui-root .cqa-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,0.05)}#cqa-ui-root .cqa-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}#cqa-ui-root .cqa-shadow-lg,#cqa-ui-root .cqa-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#cqa-ui-root .cqa-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}#cqa-ui-root .cqa-shadow-card{--tw-shadow:0px 1px 2px 0px #0000000d}#cqa-ui-root .cqa-shadow-card,#cqa-ui-root .cqa-shadow-header{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#cqa-ui-root .cqa-shadow-header{--tw-shadow:0px 1px 2px -1px #0000001a,0px 1px 3px 0px #0000001a}#cqa-ui-root .cqa-outline-none{outline:2px solid transparent;outline-offset:2px}#cqa-ui-root .cqa-filter{filter:var(--tw-filter)}#cqa-ui-root .cqa-backdrop-blur-\[4px\]{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-filter)}#cqa-ui-root .cqa-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}#cqa-ui-root .cqa-transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}#cqa-ui-root .cqa-transition-colors{transition-property:background-color,border-color,color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}#cqa-ui-root .cqa-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}#cqa-ui-root .cqa-duration-150{transition-duration:.15s}#cqa-ui-root .cqa-duration-200{transition-duration:.2s}#cqa-ui-root .cqa-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@import "../../../node_modules/@angular/material/prebuilt-themes/indigo-pink.css";@import url("https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,200..1000;1,6..12,200..1000&display=swap");@font-face{font-family:SF Pro Text;src:url(../../assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.ttf);font-weight:400}@font-face{font-family:SF Pro Text;src:url(../../assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.ttf);font-weight:500}#cqa-ui-root{font-family:SF Pro Text,sans-serif;color:#0a0a0a}.cdk-overlay-container{position:fixed;inset:0;width:100vw;height:100vh;z-index:10000;pointer-events:auto}.cdk-overlay-backdrop.cqa-dialog-backdrop{position:fixed;inset:0;background-color:rgba(17,24,39,.45)!important;opacity:1!important;overflow:hidden;pointer-events:auto}.cdk-overlay-backdrop.cqa-dialog-backdrop:before{content:"";position:absolute;inset:-40px;background:rgba(17,24,39,.55);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);pointer-events:none}.cdk-overlay-pane.cqa-dialog-panel{display:flex;align-items:center;justify-content:center;min-height:100vh;pointer-events:none;padding:24px;box-sizing:border-box}.cdk-overlay-pane.cqa-dialog-panel>*{pointer-events:auto}.cqa-dialog-btn-warn cqa-button button,.cqa-dialog-btn-warn ui-button button{background-color:#dc2626;color:#fff}.cqa-dialog-btn-warn cqa-button button:hover,.cqa-dialog-btn-warn ui-button button:hover{background-color:#b91c1c}.cdk-overlay-container .cdk-overlay-pane.cqa-dialog-panel{pointer-events:none}.cdk-overlay-container .cdk-overlay-pane.cqa-dialog-panel>*{pointer-events:auto}.cdk-global-overlay-wrapper{display:flex!important;align-items:center;justify-content:center;min-height:100vh;width:100%}#cqa-ui-root table{tr{th{border-bottom:1px solid #e5e7eb;&:first-child{border-top-left-radius:7px}&:last-child{border-top-right-radius:7px}}td{border-bottom:1px solid #e5e7eb;&:first-child{border-bottom-left-radius:7px}&:last-child{border-bottom-right-radius:7px}}}}.action-menu.mat-menu-panel{width:128px;min-width:128px;border:1px solid #e5e5e5;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);border-radius:8px}.action-menu .mat-menu-content{padding:6px!important}.action-menu .mat-menu-item{display:flex;align-items:center;gap:16px;height:auto;padding:6px 8px;border-radius:6px;font-size:14px;line-height:20px;color:#0a0a0a}.action-menu .mat-menu-item mat-icon{font-size:16px;width:16px;height:16px;color:#737373;margin-right:0}.action-menu .mat-menu-item:hover{background-color:#f9fafb}.action-menu .delete-menu-item{color:#e7000b!important}.action-menu .delete-menu-item:hover{background-color:#fef3f2}.mat-form-field-appearance-fill.mat-date-custom .mat-form-field-wrapper .mat-form-field-flex,.mat-form-field-appearance-fill.mat-select-custom .mat-form-field-wrapper .mat-form-field-flex{padding:7px 11px;background:hsla(0,0%,100%,.002);border:1px solid #e5e5e5;box-shadow:0 1px 2px rgba(0,0,0,.05);border-radius:8px;height:36px;align-items:center}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field-infix{padding:0!important;border:none;display:flex!important;align-items:center;gap:4px;width:100%!important}.mat-select{width:calc(100% - 24px)!important}.mat-date-range-input-container,.mat-select-placeholder{font-family:Geist,sans-serif;font-size:14px;font-weight:500;line-height:20px;color:#0a0a0a}.mat-form-field-suffix,.mat-form-field-underline,.mat-select-arrow-wrapper{display:none!important}.mat-date-range-input-inner::-moz-placeholder{color:#0a0a0a}.mat-date-range-input-inner::placeholder{color:#0a0a0a}.mat-select-panel{padding:6px!important;margin-left:6px;min-width:calc(100% + 38px)!important;margin-top:32px!important;border-radius:8px!important;border:1px solid #e5e5e5!important;box-shadow:0 1px 6px rgba(0,0,0,.08)!important}.mat-select-panel .mat-option:not(:last-child){margin-bottom:2px}.cqa-icon-btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid #e5e7eb;background:#f9fafb;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease}.cqa-icon-btn:hover{background:#f3f4f6;border-color:#cbd5f5;box-shadow:0 1px 4px rgba(0,0,0,.06)}.cqa-icon-gear{font-size:18px;width:18px;height:18px;color:#111827}.ctc-select-panel .mat-option{padding-left:8px!important;padding-right:8px!important;font-size:14px!important;line-height:32px!important;height:32px!important;border-radius:8px}.ctc-select-panel .mat-option.mat-option-multiple{padding-left:36px!important}.ctc-select-panel .mat-option.ts-select-search{padding:0!important;margin-bottom:4px}.ctc-select-panel .mat-option.ts-select-search .mat-option-pseudo-checkbox{display:none}.ctc-select-panel .mat-option.ts-select-search input{border-radius:8px}.ts-select-search{padding:6px 10px}.ts-select-search-input{width:100%;border:1px solid #e5e7eb;border-radius:4px;padding:6px 10px;outline:none;font-size:13px;height:31px}.mat-select-custom .mat-select-trigger{font-size:14px}.mat-primary .mat-option.mat-selected:not(.mat-option-disabled){color:#0a0a0a}.mat-datepicker-content{border:1px solid #e5e5e5;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);border-radius:8px!important;margin-top:5px}.mat-datepicker-content .mat-datepicker-content-container{align-items:center;padding:16px 16px 56px;position:relative;font-size:13px}.mat-datepicker-content .mat-datepicker-actions .btn-group{display:flex;flex-wrap:wrap;gap:5px;justify-content:space-between}.mat-datepicker-content .mat-datepicker-actions{order:0;max-width:300px;padding:0;flex-direction:column}.mat-datepicker-content .mat-datepicker-actions .btn-group .preset-btn{box-shadow:0 1px 2px rgba(0,0,0,.05);width:49%;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;padding:6px 10px;min-height:28px;background:#fff;border:1px solid #e5e5e5;border-radius:6px;cursor:pointer;transition:all .2s ease;font-size:12px;line-height:16px;color:#0a0a0a}.mat-datepicker-content .mat-datepicker-actions .btn-group .preset-btn:hover{border-color:#1976d2}.mat-datepicker-content .mat-calendar{order:1;height:auto!important;width:300px!important;border:1px solid #e5e5e5;border-radius:8px}.mat-calendar-table tr td,.mat-calendar-table tr th{border:0}.mat-calendar-table .mat-calendar-table-header-divider{display:none}.mat-datepicker-content .mat-calendar .mat-calendar-controls{margin-top:0}.ctc-date-range-panel .mat-calendar-body-in-range .mat-calendar-body-cell-content{background:#3f51b5!important;color:#fff!important;border-radius:0!important}.mat-option:focus:not(.mat-option-disabled),.mat-option:hover:not(.mat-option-disabled),.mat-primary .mat-option.mat-selected:not(.mat-option-disabled){background-color:#d8d9fc4d}.mat-option.mat-active{background-color:initial}.mat-select-panel-wrap .mat-select-panel.multiple .mat-selected:not(.mat-option-disabled):after{content:"";position:absolute;left:10px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.667 3.5 5.251 9.917 2.334 7' stroke='%233F43EE' stroke-width='1.167' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");width:14px;height:14px}.cdk-overlay-pane:has(.mat-select-panel-wrap){transform:translateX(-16px)!important}.table-settings-menu .mat-menu-content{padding:0!important}.table-settings-menu.mat-menu-panel{min-width:196px!important;max-width:196px!important;width:100%!important;border-radius:8px!important;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)!important}.table-settings-menu .settings-menu-content{padding:17px!important}.table-settings-menu .settings-section{margin-bottom:12px}.table-settings-menu .settings-title{font-weight:700;font-size:14px;line-height:20px;margin-bottom:8px}.table-settings-menu .refresh-options .mat-radio-group,.table-settings-menu .settings-options{display:flex;flex-direction:column;gap:8px;font-size:14px;line-height:20px}.table-settings-menu .mat-checkbox-layout{align-items:center}.table-settings-menu .mat-checkbox-inner-container{margin:0 8px 0 0!important}.mat-checkbox-background,.mat-checkbox-frame{border-radius:4px!important}.mat-checkbox.mat-checkbox-checked:not(.mat-checkbox-disabled) .mat-checkbox-background,.mat-checkbox.mat-checkbox-indeterminate:not(.mat-checkbox-disabled) .mat-checkbox-background{background-color:#3f43ee}.mat-radio-button.mat-radio-checked .mat-radio-container .mat-radio-outer-circle{border-color:#3f43ee}.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-accent .mat-radio-inner-circle,.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-accent:active .mat-radio-persistent-ripple{background-color:#3f43ee}.custom-checkbox .hidden-checkbox{position:absolute;opacity:0;width:0;height:0}.custom-checkbox .custom-checkbox-label{display:inline-block;width:14px;height:14px;border:1px solid #e5e7eb;border-radius:4px;cursor:pointer;position:relative;vertical-align:middle;box-shadow:0 1px 2px rgba(0,0,0,.05);background-color:#fff}.custom-checkbox .hidden-checkbox:checked+.custom-checkbox-label{background-color:#3f43ee;border-color:#3f43ee}.custom-checkbox .custom-checkbox-label:after{content:"";position:absolute;top:0;left:0;width:12px;height:13px;display:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='13' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10 3.125-5.5 5.5-2.5-2.5' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.custom-checkbox .hidden-checkbox:checked+.custom-checkbox-label:after{display:block}.custom-checkbox .custom-checkbox-label:hover{border-color:#999}@media (max-width:767.98px){.header-dropdown{max-width:unset!important;width:56px!important}.header-dropdown .mat-select{display:none}.header-dropdown .mat-form-field-flex{border:none!important;box-shadow:none!important}.header-dropdown .mat-form-field-infix{justify-content:center}.header-dropdown .mat-form-field-infix svg{width:24px;height:24px}}#cqa-ui-root .before\:cqa-absolute:before{content:"";position:absolute}#cqa-ui-root .before\:cqa-top-0:before{content:"";top:0}#cqa-ui-root .before\:cqa-left-0:before{content:"";left:0}#cqa-ui-root .before\:cqa-h-\[2px\]:before{content:"";height:2px}#cqa-ui-root .before\:cqa-w-full:before{content:"";width:100%}#cqa-ui-root .before\:cqa-bg-\[\#4C4C51\]:before{content:"";--tw-bg-opacity:1;background-color:rgba(76,76,81,var(--tw-bg-opacity))}#cqa-ui-root .before\:cqa-content-\[\'\'\]:before{content:""}#cqa-ui-root .hover\:cqa-bg-\[\#F7F8FA\]:hover{--tw-bg-opacity:1;background-color:rgba(247,248,250,var(--tw-bg-opacity))}#cqa-ui-root .hover\:cqa-bg-\[\#EEF2FF\]:hover{--tw-bg-opacity:1;background-color:rgba(238,242,255,var(--tw-bg-opacity))}#cqa-ui-root .hover\:cqa-bg-\[\#3730A3\]:hover{--tw-bg-opacity:1;background-color:rgba(55,48,163,var(--tw-bg-opacity))}#cqa-ui-root .hover\:cqa-bg-surface-hover:hover{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}#cqa-ui-root .hover\:cqa-underline:hover{text-decoration:underline}#cqa-ui-root .focus\:cqa-border-primary:focus{--tw-border-opacity:1;border-color:rgba(63,67,238,var(--tw-border-opacity))}#cqa-ui-root .focus\:cqa-outline-none:focus{outline:2px solid transparent;outline-offset:2px}#cqa-ui-root .focus\:cqa-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#cqa-ui-root .focus\:cqa-ring-primary\/40:focus{--tw-ring-color:rgba(63,67,238,0.4)}#cqa-ui-root .focus-visible\:cqa-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}#cqa-ui-root .focus-visible\:cqa-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#cqa-ui-root .focus-visible\:cqa-ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#cqa-ui-root .focus-visible\:cqa-ring-primary:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(63,67,238,var(--tw-ring-opacity))}#cqa-ui-root .focus-visible\:cqa-ring-offset-1:focus-visible{--tw-ring-offset-width:1px}#cqa-ui-root .focus-visible\:cqa-ring-offset-0:focus-visible{--tw-ring-offset-width:0px}#cqa-ui-root .disabled\:cqa-cursor-not-allowed:disabled{cursor:not-allowed}#cqa-ui-root .disabled\:cqa-text-gray-400:disabled{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}#cqa-ui-root .disabled\:cqa-text-gray-300:disabled{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}#cqa-ui-root .disabled\:cqa-opacity-50:disabled{opacity:.5}@media (min-width:640px){#cqa-ui-root .sm\:cqa-block{display:block}#cqa-ui-root .sm\:cqa-w-\[360px\]{width:360px}#cqa-ui-root .sm\:cqa-w-\[100\%\]{width:100%}#cqa-ui-root .sm\:cqa-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}#cqa-ui-root .sm\:cqa-border-r{border-right-width:1px}#cqa-ui-root .sm\:cqa-border-b-0{border-bottom-width:0}#cqa-ui-root .sm\:cqa-p-4{padding:1rem}#cqa-ui-root .sm\:cqa-p-5{padding:1.25rem}#cqa-ui-root .sm\:cqa-px-6{padding-left:1.5rem;padding-right:1.5rem}#cqa-ui-root .sm\:cqa-px-\[34px\]{padding-left:34px;padding-right:34px}#cqa-ui-root .sm\:cqa-text-\[32px\]{font-size:32px}#cqa-ui-root .sm\:cqa-text-\[20px\]{font-size:20px}}@media (min-width:768px){#cqa-ui-root .md\:cqa-flex{display:flex}#cqa-ui-root .md\:cqa-h-\[62px\]{height:62px}#cqa-ui-root .md\:cqa-h-\[53px\]{height:53px}#cqa-ui-root .md\:cqa-h-\[63px\]{height:63px}#cqa-ui-root .md\:cqa-h-\[61px\]{height:61px}#cqa-ui-root .md\:cqa-w-\[180px\]{width:180px}#cqa-ui-root .md\:cqa-w-\[240px\]{width:240px}#cqa-ui-root .md\:cqa-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}#cqa-ui-root .md\:cqa-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}#cqa-ui-root .md\:cqa-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}#cqa-ui-root .md\:cqa-flex-row{flex-direction:row}#cqa-ui-root .md\:cqa-gap-0{gap:0}#cqa-ui-root .md\:cqa-border-l-0{border-left-width:0}#cqa-ui-root .md\:cqa-border-l{border-left-width:1px}#cqa-ui-root .md\:cqa-border-r{border-right-width:1px}#cqa-ui-root .md\:cqa-border-b-0{border-bottom-width:0}#cqa-ui-root .md\:cqa-p-0{padding:0}#cqa-ui-root .md\:cqa-py-1{padding-top:.25rem;padding-bottom:.25rem}#cqa-ui-root .md\:cqa-pt-1{padding-top:.25rem}#cqa-ui-root .md\:cqa-pb-0\.5{padding-bottom:.125rem}#cqa-ui-root .md\:cqa-pb-0{padding-bottom:0}}@media (min-width:1024px){#cqa-ui-root .lg\:cqa-hidden{display:none}#cqa-ui-root .lg\:cqa-w-\[290px\]{width:290px}#cqa-ui-root .lg\:cqa-max-w-\[68\%\]{max-width:68%}#cqa-ui-root .lg\:cqa-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}#cqa-ui-root .lg\:cqa-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}#cqa-ui-root .lg\:cqa-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}#cqa-ui-root .lg\:cqa-px-6{padding-left:1.5rem;padding-right:1.5rem}#cqa-ui-root .lg\:cqa-py-\[6px\]{padding-top:6px;padding-bottom:6px}#cqa-ui-root .lg\:cqa-px-5{padding-left:1.25rem;padding-right:1.25rem}}
|
package/dist/cqa-ui/README.md
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
# CQA UI
|
|
2
|
-
|
|
3
|
-
Component library for Angular 13+, built with Tailwind CSS tokens and Storybook-driven documentation.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 📦 Installation
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npm install @cqa-lib/cqa-ui
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
### Peer dependencies
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
npm install @angular/common@^13.4.0 @angular/core@^13.4.0 @angular/forms@^13.4.0 @angular/material@^13.3.9 @angular/cdk@^13.3.9 rxjs@^6.6.7 || ^7.5.0
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## 🚀 Quick Start
|
|
22
|
-
|
|
23
|
-
### Step 1: Import the Module
|
|
24
|
-
|
|
25
|
-
```ts
|
|
26
|
-
// app.module.ts
|
|
27
|
-
import { NgModule } from '@angular/core';
|
|
28
|
-
import { BrowserModule } from '@angular/platform-browser';
|
|
29
|
-
import { UiKitModule } from '@cqa-lib/cqa-ui';
|
|
30
|
-
|
|
31
|
-
import { AppComponent } from './app.component';
|
|
32
|
-
|
|
33
|
-
@NgModule({
|
|
34
|
-
declarations: [AppComponent],
|
|
35
|
-
imports: [
|
|
36
|
-
BrowserModule,
|
|
37
|
-
UiKitModule
|
|
38
|
-
],
|
|
39
|
-
bootstrap: [AppComponent]
|
|
40
|
-
})
|
|
41
|
-
export class AppModule {}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### Step 2: Import the Styles
|
|
45
|
-
|
|
46
|
-
**Option A: In `angular.json`** (Recommended)
|
|
47
|
-
|
|
48
|
-
```json
|
|
49
|
-
{
|
|
50
|
-
"projects": {
|
|
51
|
-
"your-project": {
|
|
52
|
-
"architect": {
|
|
53
|
-
"build": {
|
|
54
|
-
"options": {
|
|
55
|
-
"styles": [
|
|
56
|
-
"node_modules/@cqa-lib/cqa-ui/styles.css",
|
|
57
|
-
"src/styles.css"
|
|
58
|
-
]
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
**Option B: In `styles.css`**
|
|
68
|
-
|
|
69
|
-
```css
|
|
70
|
-
@import '@cqa-lib/cqa-ui/styles.css';
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Step 3: Add Angular Material Icon Font
|
|
74
|
-
|
|
75
|
-
Add this to your `index.html`:
|
|
76
|
-
|
|
77
|
-
```html
|
|
78
|
-
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Or in `styles.css`:
|
|
82
|
-
|
|
83
|
-
```css
|
|
84
|
-
@import url('https://fonts.googleapis.com/icon?family=Material+Icons');
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## 💡 Usage Examples
|
|
90
|
-
|
|
91
|
-
### Button
|
|
92
|
-
|
|
93
|
-
```html
|
|
94
|
-
<cqa-button variant="filled" icon="save" (clicked)="onSave()">
|
|
95
|
-
Save changes
|
|
96
|
-
</cqa-button>
|
|
97
|
-
|
|
98
|
-
<cqa-button variant="outlined" [disabled]="isSubmitting">
|
|
99
|
-
Cancel
|
|
100
|
-
</cqa-button>
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Search bar
|
|
104
|
-
|
|
105
|
-
```html
|
|
106
|
-
<cqa-search-bar
|
|
107
|
-
placeholder="Search components"
|
|
108
|
-
[value]="query"
|
|
109
|
-
[showClear]="true"
|
|
110
|
-
(valueChange)="query = $event"
|
|
111
|
-
(search)="onSearch($event)"
|
|
112
|
-
></cqa-search-bar>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Segment control
|
|
116
|
-
|
|
117
|
-
```html
|
|
118
|
-
<cqa-segment-control
|
|
119
|
-
[segments]="[
|
|
120
|
-
{ label: 'Overview', value: 'overview' },
|
|
121
|
-
{ label: 'Analytics', value: 'analytics' },
|
|
122
|
-
{ label: 'Settings', value: 'settings', disabled: true }
|
|
123
|
-
]"
|
|
124
|
-
[value]="currentTab"
|
|
125
|
-
(valueChange)="currentTab = $event"
|
|
126
|
-
></cqa-segment-control>
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Dialog
|
|
130
|
-
|
|
131
|
-
```ts
|
|
132
|
-
import { DialogService } from '@cqa-lib/cqa-ui';
|
|
133
|
-
|
|
134
|
-
constructor(private readonly dialog: DialogService) {}
|
|
135
|
-
|
|
136
|
-
openDialog(): void {
|
|
137
|
-
this.dialog.open({
|
|
138
|
-
title: 'Delete dashboard',
|
|
139
|
-
description: 'Deleting this dashboard will remove it for all collaborators.',
|
|
140
|
-
warning: 'This action cannot be undone.',
|
|
141
|
-
content: {
|
|
142
|
-
type: 'text',
|
|
143
|
-
text: 'Are you sure you want to continue?'
|
|
144
|
-
},
|
|
145
|
-
buttons: [
|
|
146
|
-
{ label: 'Cancel', role: 'secondary' },
|
|
147
|
-
{ label: 'Delete', role: 'warn', handler: () => 'delete' }
|
|
148
|
-
]
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
## 🔧 Troubleshooting
|
|
156
|
-
|
|
157
|
-
### Component renders as empty tag (no inner HTML)
|
|
158
|
-
|
|
159
|
-
If you see `<cqa-search-bar></cqa-search-bar>` without any inner content, check:
|
|
160
|
-
|
|
161
|
-
1. **Missing styles import** - Add to `angular.json`:
|
|
162
|
-
```json
|
|
163
|
-
"styles": [
|
|
164
|
-
"node_modules/@cqa-lib/cqa-ui/styles.css",
|
|
165
|
-
"src/styles.css"
|
|
166
|
-
]
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
2. **Missing Angular Material Icon font** - Add to `index.html`:
|
|
170
|
-
```html
|
|
171
|
-
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
3. **Check browser console** for errors:
|
|
175
|
-
- Missing peer dependencies (`@angular/material`, `@angular/cdk`)
|
|
176
|
-
- Module import errors
|
|
177
|
-
- Template compilation errors
|
|
178
|
-
|
|
179
|
-
4. **Verify module import** in your `app.module.ts`:
|
|
180
|
-
```ts
|
|
181
|
-
import { UiKitModule } from '@cqa-lib/cqa-ui';
|
|
182
|
-
|
|
183
|
-
@NgModule({
|
|
184
|
-
imports: [UiKitModule, ...]
|
|
185
|
-
})
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
5. **Clear Angular cache and rebuild**:
|
|
189
|
-
```bash
|
|
190
|
-
rm -rf .angular
|
|
191
|
-
npm start # or ng serve
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## 📚 Storybook
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
npm run storybook
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
View component documentation and interactive examples at `http://localhost:6006`.
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## 🛠 Development
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
npm install
|
|
210
|
-
npm run build:cqa-ui # build the library bundle
|
|
211
|
-
npm run storybook # start Storybook
|
|
212
|
-
npm run build-storybook # static Storybook build
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### Publish workflow
|
|
216
|
-
|
|
217
|
-
1. Update version in `package.json`
|
|
218
|
-
2. `npm run build:cqa-ui`
|
|
219
|
-
3. `npm publish dist/cqa-ui`
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## 📄 License
|
|
224
|
-
|
|
225
|
-
MIT — contributions and issues welcome!
|
|
226
|
-
|