desy-html 15.0.2 → 16.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/AGENTS.md +180 -0
- package/README.md +22 -4
- package/TESTING_PLAN.md +369 -0
- package/branding/BRANDING.md +369 -0
- package/branding/branding.config.js +69 -0
- package/branding/branding.config.yourorganization.js +65 -0
- package/branding/logos/aragon-compact.svg +1 -0
- package/branding/logos/aragon-expanded.svg +1 -0
- package/branding/logos/aragon-mini.svg +1 -0
- package/branding/logos/yourlogo-compact.svg +13 -0
- package/branding/logos/yourlogo-expanded.svg +17 -0
- package/branding/logos/yourlogo-mini.svg +17 -0
- package/branding/vite-branding-plugin.js +128 -0
- package/docs/_global.head.njk +12 -4
- package/docs/_macro.example-render.njk +6 -0
- package/docs/catalogo.html +2 -2
- package/docs/componentes.html +2 -2
- package/docs/estilos.html +1 -1
- package/docs/examples-accordion-history.html +1 -1
- package/docs/examples-accordion.html +1 -1
- package/docs/examples-alert.html +1 -1
- package/docs/examples-breadcrumbs.html +1 -1
- package/docs/examples-button-loader.html +1 -1
- package/docs/examples-button.html +1 -1
- package/docs/examples-card.html +2 -2
- package/docs/examples-character-count.html +1 -1
- package/docs/examples-checkboxes.html +2 -2
- package/docs/examples-collapsible.html +2 -2
- package/docs/examples-date-input.html +1 -1
- package/docs/examples-datepicker.html +1 -1
- package/docs/examples-description-list.html +1 -1
- package/docs/examples-details.html +1 -1
- package/docs/examples-dialog.html +2 -2
- package/docs/examples-dropdown.html +1 -1
- package/docs/examples-error-message.html +1 -1
- package/docs/examples-error-summary.html +1 -1
- package/docs/examples-fieldset.html +1 -1
- package/docs/examples-file-upload.html +1 -1
- package/docs/examples-footer.html +1 -1
- package/docs/examples-header-advanced.html +1 -1
- package/docs/examples-header-mini.html +1 -1
- package/docs/examples-header.html +1 -1
- package/docs/examples-hint.html +1 -1
- package/docs/examples-input-group.html +1 -1
- package/docs/examples-input.html +1 -1
- package/docs/examples-item.html +1 -1
- package/docs/examples-label.html +1 -1
- package/docs/examples-links-list.html +2 -2
- package/docs/examples-listbox.html +1 -1
- package/docs/examples-media-object.html +2 -2
- package/docs/examples-menu-horizontal.html +1 -1
- package/docs/examples-menu-navigation.html +1 -1
- package/docs/examples-menu-vertical.html +2 -2
- package/docs/examples-menubar.html +2 -2
- package/docs/examples-modal.html +2 -2
- package/docs/examples-nav.html +1 -1
- package/docs/examples-notification.html +1 -1
- package/docs/examples-pagination.html +1 -1
- package/docs/examples-pill.html +1 -1
- package/docs/examples-radios.html +1 -1
- package/docs/examples-searchbar.html +1 -1
- package/docs/examples-select.html +1 -2
- package/docs/examples-skip-link.html +1 -1
- package/docs/examples-spinner.html +1 -1
- package/docs/examples-status-item.html +1 -1
- package/docs/examples-status.html +1 -1
- package/docs/examples-table-advanced.html +1 -1
- package/docs/examples-table.html +1 -1
- package/docs/examples-tabs.html +1 -1
- package/docs/examples-textarea.html +1 -1
- package/docs/examples-toggle.html +1 -1
- package/docs/examples-tooltip.html +1 -1
- package/docs/examples-tree.html +1 -1
- package/docs/examples-treegrid.html +1 -1
- package/docs/index.html +14 -3
- package/docs/pagina-accesibilidad.html +4 -4
- package/docs/pagina-mapa-web.html +3 -3
- package/docs/pagina-prueba.html +2 -2
- package/docs/plantilla-con-header-advanced.html +2 -2
- package/docs/plantilla-editar-con-cabecera-fija-y-sidebar-sticky.html +2 -2
- package/docs/plantilla-editar-con-cabecera-fija.html +2 -2
- package/docs/plantilla-logueado-con-cabecera-fija-headroom.html +2 -2
- package/docs/plantilla-logueado-con-cabecera-fija.html +2 -2
- package/docs/plantilla-logueado-con-selector-de-app-y-sidebar.html +2 -2
- package/docs/plantilla-logueado-con-selector-de-app-y-subheader.html +2 -2
- package/docs/plantilla-logueado-con-selector-de-app.html +2 -2
- package/docs/plantilla-logueado-con-titulo-de-app.html +2 -2
- package/docs/plantilla-sin-loguear.html +2 -2
- package/docs/plantillas.html +3 -3
- package/docs/spinner-plantilla-con-header-advanced.html +2 -2
- package/docs/spinner-plantilla-editar-con-cabecera-fija.html +1 -2
- package/docs/spinner-plantilla-logueado-con-cabecera-fija.html +2 -2
- package/docs/spinner-plantilla-logueado-con-selector-de-app-y-subheader.html +1 -3
- package/docs/spinner-plantilla-logueado-con-titulo-de-app.html +2 -2
- package/docs/spinner-plantilla-sin-loguear.html +2 -2
- package/package.json +10 -5
- package/replit.md +2 -2
- package/src/css/branding-variables.css +37 -0
- package/src/css/component.text.css +5 -0
- package/src/css/styles.css +18 -3
- package/src/js/aria/MenuHorizontal.js +3 -1
- package/src/js/aria/notification.js +6 -6
- package/src/js/desy-html.js +5 -0
- package/src/templates/components/accordion/_examples.accordion.njk +84 -0
- package/src/templates/components/accordion-history/_examples.accordion-history.njk +90 -0
- package/src/templates/components/alert/_examples.alert.njk +12 -0
- package/src/templates/components/breadcrumbs/_examples.breadcrumbs.njk +90 -0
- package/src/templates/components/breadcrumbs/_template.breadcrumbs.njk +1 -1
- package/src/templates/components/button/_examples.button.njk +216 -0
- package/src/templates/components/button-loader/_examples.button-loader.njk +204 -0
- package/src/templates/components/card/_examples.card.njk +78 -0
- package/src/templates/components/character-count/_examples.character-count.njk +60 -0
- package/src/templates/components/checkboxes/_examples.checkboxes.njk +120 -0
- package/src/templates/components/collapsible/_examples.collapsible.njk +30 -0
- package/src/templates/components/date-input/_examples.date-input.njk +78 -0
- package/src/templates/components/datepicker/_examples.datepicker.njk +84 -0
- package/src/templates/components/datepicker/_template.datepicker.njk +1 -1
- package/src/templates/components/description-list/_examples.description-list.njk +66 -0
- package/src/templates/components/details/_examples.details.njk +24 -0
- package/src/templates/components/dialog/_examples.dialog.njk +18 -0
- package/src/templates/components/dropdown/_examples.dropdown.njk +90 -0
- package/src/templates/components/error-message/_examples.error-message.njk +12 -0
- package/src/templates/components/error-summary/_examples.error-summary.njk +30 -0
- package/src/templates/components/fieldset/_examples.fieldset.njk +18 -0
- package/src/templates/components/file-upload/_examples.file-upload.njk +30 -0
- package/src/templates/components/footer/_examples.footer.njk +108 -0
- package/src/templates/components/footer/_styles.footer.css +20 -20
- package/src/templates/components/footer/_template.footer.njk +21 -6
- package/src/templates/components/footer/params.footer.yaml +4 -4
- package/src/templates/components/header/_examples.header.njk +85 -1
- package/src/templates/components/header/_template.header.njk +20 -4
- package/src/templates/components/header/params.header.yaml +2 -2
- package/src/templates/components/header-advanced/_examples.header-advanced.njk +84 -7
- package/src/templates/components/header-advanced/_template.header-advanced.njk +3 -1
- package/src/templates/components/header-mini/_examples.header-mini.njk +15 -3
- package/src/templates/components/header-mini/_template.header-mini.njk +14 -2
- package/src/templates/components/header-mini/params.header-mini.yaml +1 -1
- package/src/templates/components/hint/_examples.hint.njk +12 -0
- package/src/templates/components/input/_examples.input.njk +120 -0
- package/src/templates/components/input/_template.input.njk +1 -1
- package/src/templates/components/input-group/_examples.input-group.njk +54 -0
- package/src/templates/components/item/_examples.item.njk +96 -0
- package/src/templates/components/label/_examples.label.njk +24 -0
- package/src/templates/components/links-list/_examples.links-list.njk +114 -0
- package/src/templates/components/listbox/_examples.listbox.njk +140 -20
- package/src/templates/components/media-object/_examples.media-object.njk +30 -0
- package/src/templates/components/menu-horizontal/_examples.menu-horizontal.njk +84 -0
- package/src/templates/components/menu-navigation/_examples.menu-navigation.njk +102 -0
- package/src/templates/components/menu-vertical/_examples.menu-vertical.njk +96 -0
- package/src/templates/components/menubar/_examples.menubar.njk +66 -0
- package/src/templates/components/modal/_examples.modal.njk +78 -0
- package/src/templates/components/nav/_examples.nav.njk +66 -0
- package/src/templates/components/notification/_examples.notification.njk +78 -0
- package/src/templates/components/pagination/_examples.pagination.njk +42 -0
- package/src/templates/components/pill/_examples.pill.njk +78 -0
- package/src/templates/components/radios/_examples.radios.njk +96 -0
- package/src/templates/components/searchbar/_examples.searchbar.njk +48 -0
- package/src/templates/components/searchbar/_template.searchbar.njk +1 -1
- package/src/templates/components/select/_examples.select.njk +54 -0
- package/src/templates/components/select/_template.select.njk +1 -1
- package/src/templates/components/skip-link/_examples.skip-link.njk +12 -0
- package/src/templates/components/spinner/_examples.spinner.njk +49 -1
- package/src/templates/components/status/_examples.status.njk +31 -1
- package/src/templates/components/status-item/_examples.status-item.njk +73 -1
- package/src/templates/components/table/_examples.table.njk +37 -1
- package/src/templates/components/table-advanced/_examples.table-advanced.njk +54 -0
- package/src/templates/components/table-advanced/_styles.table-advanced.css +0 -2
- package/src/templates/components/tabs/_examples.tabs.njk +72 -0
- package/src/templates/components/textarea/_examples.textarea.njk +54 -0
- package/src/templates/components/textarea/_template.textarea.njk +1 -1
- package/src/templates/components/toggle/_examples.toggle.njk +60 -0
- package/src/templates/components/tooltip/_examples.tooltip.njk +48 -0
- package/src/templates/components/tree/_examples.tree.njk +150 -0
- package/src/templates/components/treegrid/_examples.treegrid.njk +30 -0
- package/src/templates/components/treegrid/_template.treegrid.njk +1 -1
- package/src/templates/pages/_page.head.njk +11 -3
- package/vite.config.js +215 -0
- package/attached_assets/Pasted--desy-html-starter-Node-Version-https-img-shields-io-ba_1765448923362.txt +0 -431
- /package/{public/images/general-lg.svg → branding/images/header-background-lg.svg} +0 -0
- /package/{public/images/general.svg → branding/images/header-background.svg} +0 -0
- /package/{public/images/logo-ue.svg → branding/logos/eu/logo-eu.svg} +0 -0
- /package/{public/images → branding/logos/eu}/logo-feader.svg +0 -0
- /package/{public/images → branding/logos/eu}/logo-feder.svg +0 -0
- /package/{public/images → branding/logos/eu}/logo-fse.svg +0 -0
- /package/{public/images → branding/logos/eu}/logo-plurifondo.svg +0 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# AGENTS.md - Developer Guide for desy-html
|
|
2
|
+
|
|
3
|
+
This file provides guidance for AI agents working on the desy-html codebase.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
desy-html is a design system library for Government of Aragón web applications. It uses:
|
|
8
|
+
- **Vite** - Build tool and dev server
|
|
9
|
+
- **Tailwind CSS v4** - Utility-first CSS framework
|
|
10
|
+
- **Nunjucks** - Templating engine for HTML components
|
|
11
|
+
- **JavaScript** - Vanilla ES modules for ARIA components
|
|
12
|
+
|
|
13
|
+
## Build Commands
|
|
14
|
+
|
|
15
|
+
| Command | Description |
|
|
16
|
+
|---------|-------------|
|
|
17
|
+
| `npm run dev` | Start development server with HMR |
|
|
18
|
+
| `npm run build` | Build for production (outputs to `/dist`) |
|
|
19
|
+
| `npm run preview` | Preview production build locally |
|
|
20
|
+
|
|
21
|
+
### Running a Single Test
|
|
22
|
+
|
|
23
|
+
**There are no test commands configured** in this project. The codebase does not currently have a test framework (Jest, Vitest, etc.) set up.
|
|
24
|
+
|
|
25
|
+
## Code Style Guidelines
|
|
26
|
+
|
|
27
|
+
### JavaScript
|
|
28
|
+
|
|
29
|
+
- **Use ES Modules**: All JavaScript uses `import`/`export` syntax
|
|
30
|
+
```js
|
|
31
|
+
import { accordion } from './aria/accordion.js';
|
|
32
|
+
export function accordionComponent(aria) { ... }
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- **Prefer `const`/`let` over `var`**: Newer code should use `const` by default, `let` for mutable variables
|
|
36
|
+
|
|
37
|
+
- **Naming Conventions**:
|
|
38
|
+
- Functions: `camelCase` (e.g., `accordionComponent`, `createFloatingElement`)
|
|
39
|
+
- Classes/Constructor functions: `PascalCase` (e.g., `TreeGrid`, `MenubarAction`)
|
|
40
|
+
- Constants: `SCREAMING_SNAKE_CASE`
|
|
41
|
+
- Files: `kebab-case.js`
|
|
42
|
+
|
|
43
|
+
- **Component Pattern**: Components follow a factory pattern accepting an `aria` namespace
|
|
44
|
+
```js
|
|
45
|
+
export function accordionComponent(aria) {
|
|
46
|
+
accordion(aria);
|
|
47
|
+
// Initialize modules
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
- **Use strict mode**: Include `'use strict';` in new ARIA/component files
|
|
52
|
+
|
|
53
|
+
- **Event handling**: Use modern event listeners
|
|
54
|
+
```js
|
|
55
|
+
element.addEventListener('click', (event) => { ... });
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Nunjucks Templates
|
|
59
|
+
|
|
60
|
+
- **File naming**: Use kebab-case with descriptive prefixes
|
|
61
|
+
- Macros: `_macro.{component}.njk`
|
|
62
|
+
- Templates: `_template.{component}.njk`
|
|
63
|
+
- Examples: `_examples.{component}.njk`
|
|
64
|
+
- Params: `params.{component}.yaml`
|
|
65
|
+
|
|
66
|
+
- **Macro structure**:
|
|
67
|
+
```njk
|
|
68
|
+
{% macro componentName(params) %}
|
|
69
|
+
{% include "./_template.component.njk" %}
|
|
70
|
+
{% endmacro %}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
- **Parameters**: Define all component parameters in `params.{component}.yaml` files
|
|
74
|
+
|
|
75
|
+
### CSS / Tailwind CSS
|
|
76
|
+
|
|
77
|
+
- **Tailwind v4**: Uses `@import "tailwindcss"` and `@theme` for custom properties
|
|
78
|
+
- **Component styles**: Each component has its own `_styles.{component}.css` file
|
|
79
|
+
- **CSS Variables**: Use custom properties for theming
|
|
80
|
+
```css
|
|
81
|
+
:root {
|
|
82
|
+
--color-primary-base: #00607a;
|
|
83
|
+
--color-success-base: #24d14c;
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- **Class naming**: Follow BEM-like pattern with component prefix `c-`
|
|
88
|
+
- `.c-accordion__trigger`
|
|
89
|
+
- `.c-accordion__panel`
|
|
90
|
+
|
|
91
|
+
### Accessibility (ARIA)
|
|
92
|
+
|
|
93
|
+
- All components must follow WAI-ARIA patterns
|
|
94
|
+
- Include proper ARIA attributes: `role`, `aria-expanded`, `aria-controls`, `aria-label`, etc.
|
|
95
|
+
- Ensure keyboard navigation support
|
|
96
|
+
- Reference W3C ARIA Authoring Practices when implementing complex components
|
|
97
|
+
|
|
98
|
+
### Import Conventions
|
|
99
|
+
|
|
100
|
+
- **Absolute imports** for internal modules (handled by Vite aliases):
|
|
101
|
+
```js
|
|
102
|
+
import { utils } from '@ds/components/utils';
|
|
103
|
+
```
|
|
104
|
+
- **Relative imports** for local files:
|
|
105
|
+
```js
|
|
106
|
+
import { accordion } from './aria/accordion.js';
|
|
107
|
+
```
|
|
108
|
+
- **External packages**:
|
|
109
|
+
```js
|
|
110
|
+
import "cally";
|
|
111
|
+
import * as computePosition from '@floating-ui/dom';
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Error Handling
|
|
115
|
+
|
|
116
|
+
- Use `try/catch` for async operations
|
|
117
|
+
- Log meaningful error messages
|
|
118
|
+
- Provide fallback behavior when possible
|
|
119
|
+
|
|
120
|
+
### Vite Configuration
|
|
121
|
+
|
|
122
|
+
- **Aliases** defined in `vite.config.js`:
|
|
123
|
+
- `@` → `src`
|
|
124
|
+
- `/src` → `src`
|
|
125
|
+
- `@css` → `src/css`
|
|
126
|
+
- `@components` → `src/templates/components`
|
|
127
|
+
- `@ds` → `docs/ds`
|
|
128
|
+
- `@images` → `public/images`
|
|
129
|
+
|
|
130
|
+
## Project Structure
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
desy-html/
|
|
134
|
+
├── src/
|
|
135
|
+
│ ├── css/ # Global stylesheets
|
|
136
|
+
│ ├── js/ # JavaScript files
|
|
137
|
+
│ │ ├── aria/ # ARIA component implementations
|
|
138
|
+
│ │ ├── desy-html.js # Main component exports
|
|
139
|
+
│ │ ├── headroom.min.js # Headroom.js library
|
|
140
|
+
│ │ └── index.js # Entry point
|
|
141
|
+
│ ├── templates/
|
|
142
|
+
│ │ ├── components/ # Nunjucks component macros
|
|
143
|
+
│ │ ├── includes/ # Reusable partials
|
|
144
|
+
│ │ └── pages/ # Page templates
|
|
145
|
+
│ ├── main.js # Main entry point
|
|
146
|
+
│ └── EUPL-1.2.txt # License file
|
|
147
|
+
├── docs/ # Documentation (built to /dist)
|
|
148
|
+
├── public/ # Static assets
|
|
149
|
+
├── branding/ # Branding assets
|
|
150
|
+
├── vite.config.js # Vite configuration
|
|
151
|
+
└── package.json
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Branding
|
|
155
|
+
|
|
156
|
+
To customize for different organizations:
|
|
157
|
+
1. Edit `branding/branding.config.js` or create `branding/branding.config.{name}.js`
|
|
158
|
+
2. Replace logos in `branding/logos/`
|
|
159
|
+
3. Run `BRANDING_CONFIG={name} npm run build`
|
|
160
|
+
|
|
161
|
+
## Common Patterns
|
|
162
|
+
|
|
163
|
+
### Creating a New Component
|
|
164
|
+
|
|
165
|
+
1. Create `src/templates/components/{name}/_macro.{name}.njk`
|
|
166
|
+
2. Create `src/templates/components/{name}/_template.{name}.njk`
|
|
167
|
+
3. Create `src/templates/components/{name}/_styles.{name}.css`
|
|
168
|
+
4. Create `src/templates/components/{name}/params.{name}.yaml`
|
|
169
|
+
5. Add import to `src/css/styles.css`
|
|
170
|
+
6. Add JS initialization in `src/js/desy-html.js` if needed
|
|
171
|
+
|
|
172
|
+
### Adding a New ARIA Component
|
|
173
|
+
|
|
174
|
+
1. Create `src/js/aria/{component}.js` with WAI-ARIA implementation
|
|
175
|
+
2. Export function that accepts `aria` namespace
|
|
176
|
+
3. Register in `src/js/desy-html.js`
|
|
177
|
+
|
|
178
|
+
## License
|
|
179
|
+
|
|
180
|
+
This project uses EUPL-1.2 license. See EUPL-1.2.txt for details.
|
package/README.md
CHANGED
|
@@ -85,16 +85,34 @@ desy-html/
|
|
|
85
85
|
├── src/
|
|
86
86
|
│ ├── css/ # Stylesheets
|
|
87
87
|
│ ├── js/ # JavaScript files
|
|
88
|
-
│
|
|
89
|
-
│
|
|
90
|
-
│
|
|
91
|
-
│
|
|
88
|
+
│ │ ├── aria/ # ARIA component implementations
|
|
89
|
+
│ │ ├── desy-html.js # Main component exports
|
|
90
|
+
│ │ ├── headroom.min.js # Headroom.js library
|
|
91
|
+
│ │ └── index.js # Entry point
|
|
92
|
+
│ ├── templates/
|
|
93
|
+
│ │ ├── components/ # UI component macros
|
|
94
|
+
│ │ ├── includes/ # Reusable template partials
|
|
95
|
+
│ │ └── pages/ # Page templates
|
|
96
|
+
│ ├── main.js # Main entry point
|
|
97
|
+
│ └── EUPL-1.2.txt # License file
|
|
92
98
|
├── docs/ # Documentation files
|
|
99
|
+
├── branding/ # Branding assets and configuration
|
|
93
100
|
├── vite.config.js # Vite configuration
|
|
94
101
|
├── package.json
|
|
95
102
|
└── README.md
|
|
96
103
|
```
|
|
97
104
|
|
|
105
|
+
## Branding Customization
|
|
106
|
+
|
|
107
|
+
desy-html can be customized for different government organizations.
|
|
108
|
+
|
|
109
|
+
To customize:
|
|
110
|
+
1. Edit `branding/branding.config.js` with your organization's information
|
|
111
|
+
2. Replace logos in `/branding/logos/`
|
|
112
|
+
3. Run `npm run build`
|
|
113
|
+
|
|
114
|
+
See [branding/BRANDING.md](branding/BRANDING.md) for complete documentation.
|
|
115
|
+
|
|
98
116
|
## Styling
|
|
99
117
|
|
|
100
118
|
### Using Tailwind CSS
|
package/TESTING_PLAN.md
ADDED
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
# Testing Plan for npm Publishing - desy-html
|
|
2
|
+
|
|
3
|
+
This document defines the complete testing plan to execute before publishing the `desy-html` project to npm. The goal is to verify that all components, the branding system, the build, and interaction work correctly.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Pre-Build Checks
|
|
8
|
+
|
|
9
|
+
### 1.1. File and Structure Review
|
|
10
|
+
|
|
11
|
+
- [ ] Verify all required files exist:
|
|
12
|
+
- `package.json` with correct version, name, exports
|
|
13
|
+
- `vite.config.js` exists with proper configuration
|
|
14
|
+
- `branding/branding.config.js` exists with default configuration
|
|
15
|
+
- `branding/vite-branding-plugin.js` exists
|
|
16
|
+
- `src/js/index.js` JS entry point
|
|
17
|
+
- `src/css/styles.css` main stylesheet
|
|
18
|
+
- [ ] Verify logo files exist:
|
|
19
|
+
- `branding/logos/aragon-compact.svg`
|
|
20
|
+
- `branding/logos/aragon-expanded.svg`
|
|
21
|
+
- `branding/logos/aragon-mini.svg`
|
|
22
|
+
- `branding/logos/eu/logo-eu.svg`
|
|
23
|
+
- `branding/logos/eu/logo-feder.svg`
|
|
24
|
+
- `branding/logos/eu/logo-fse.svg`
|
|
25
|
+
- `branding/logos/eu/logo-feader.svg`
|
|
26
|
+
- `branding/logos/eu/logo-plurifondo.svg`
|
|
27
|
+
- [ ] Verify background images exist:
|
|
28
|
+
- `branding/images/header-background.svg`
|
|
29
|
+
- `branding/images/header-background-lg.svg`
|
|
30
|
+
|
|
31
|
+
### 1.2. package.json Exports Review
|
|
32
|
+
|
|
33
|
+
- [ ] Verify `exports["./branding"]` points to `./branding/branding.config.js`
|
|
34
|
+
- [ ] Verify `exports["./branding/plugin"]` points to `./branding/vite-branding-plugin.js`
|
|
35
|
+
- [ ] Verify version in `package.json` is correct
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 2. Production Build
|
|
40
|
+
|
|
41
|
+
### 2.1. Build Execution
|
|
42
|
+
|
|
43
|
+
- [ ] Run `npm run build` without errors
|
|
44
|
+
- [ ] Verify `dist/` folder is generated
|
|
45
|
+
- [ ] Verify no errors in console output
|
|
46
|
+
|
|
47
|
+
### 2.2. Generated Files Verification
|
|
48
|
+
|
|
49
|
+
- [ ] Verify `dist/index.html` exists
|
|
50
|
+
- [ ] Verify `dist/css/styles.css` exists
|
|
51
|
+
- [ ] Verify `dist/js/index.js` (or similar) exists
|
|
52
|
+
- [ ] Verify `dist/images/` contains copied images:
|
|
53
|
+
- Organization logos (aragon-*.svg)
|
|
54
|
+
- EU logos (*.svg in subfolder or root)
|
|
55
|
+
- Background images (header-background*.svg)
|
|
56
|
+
|
|
57
|
+
### 2.3. Production Paths Verification
|
|
58
|
+
|
|
59
|
+
- [ ] Verify CSS paths correctly point to `../images/`
|
|
60
|
+
- [ ] Verify HTML image paths correctly point to `../images/`
|
|
61
|
+
- [ ] Verify no references to `/src/` remain in generated files
|
|
62
|
+
- [ ] Verify scripts have correct relative paths
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 3. Default Branding Tests
|
|
67
|
+
|
|
68
|
+
### 3.1. Browser Visual Verification
|
|
69
|
+
|
|
70
|
+
Using the browser agent, test the following pages:
|
|
71
|
+
|
|
72
|
+
#### Homepage
|
|
73
|
+
|
|
74
|
+
- [ ] Load `docs/index.html` (or after build, `dist/index.html`)
|
|
75
|
+
- [ ] Verify organization logo displays (not broken, no 404)
|
|
76
|
+
- [ ] Verify primary colors are Aragón's (#00607a)
|
|
77
|
+
- [ ] Verify typography is correct (Open Sans)
|
|
78
|
+
|
|
79
|
+
#### Header
|
|
80
|
+
|
|
81
|
+
- [ ] `docs/examples-header.html` - Verify logo visible
|
|
82
|
+
- [ ] `docs/examples-header.html` - Verify navigation menu
|
|
83
|
+
- [ ] `docs/examples-header-advanced.html` - Verify advanced header
|
|
84
|
+
- [ ] `docs/examples-header-mini.html` - Verify mini header
|
|
85
|
+
|
|
86
|
+
#### Footer
|
|
87
|
+
|
|
88
|
+
- [ ] `docs/examples-footer.html` - Verify EU logos visible
|
|
89
|
+
- [ ] `docs/examples-footer.html` - Verify license information
|
|
90
|
+
- [ ] `docs/examples-footer.html` - Verify correct colors
|
|
91
|
+
|
|
92
|
+
#### Background Images
|
|
93
|
+
|
|
94
|
+
- [ ] Verify `header-background.svg` displays in header
|
|
95
|
+
- [ ] Verify `header-background-lg.svg` displays on desktop
|
|
96
|
+
|
|
97
|
+
### 3.2. JavaScript Verification
|
|
98
|
+
|
|
99
|
+
- [ ] Verify `index.js` loads correctly (no 404 errors)
|
|
100
|
+
- [ ] Verify no JavaScript errors in console
|
|
101
|
+
- [ ] Verify JS modules resolve correctly
|
|
102
|
+
|
|
103
|
+
### 3.3. Interactive Components
|
|
104
|
+
|
|
105
|
+
Test each interactive component:
|
|
106
|
+
|
|
107
|
+
#### Navigation
|
|
108
|
+
|
|
109
|
+
- [ ] Accordion: `docs/examples-accordion.html` - Open/close items
|
|
110
|
+
- [ ] Tabs: `docs/examples-tabs.html` - Switch between tabs
|
|
111
|
+
- [ ] Modal: `docs/examples-modal.html` - Open/close modal
|
|
112
|
+
- [ ] Dialog: `docs/examples-dialog.html` - Interact with dialog
|
|
113
|
+
- [ ] Tooltip: `docs/examples-tooltip.html` - Show tooltip
|
|
114
|
+
- [ ] Dropdown: `docs/examples-dropdown.html` - Open/close dropdown
|
|
115
|
+
|
|
116
|
+
#### Forms
|
|
117
|
+
|
|
118
|
+
- [ ] Input: `docs/examples-input.html` - Write in inputs
|
|
119
|
+
- [ ] Select: `docs/examples-select.html` - Select options
|
|
120
|
+
- [ ] Checkboxes: `docs/examples-checkboxes.html` - Check/uncheck
|
|
121
|
+
- [ ] Radios: `docs/examples-radios.html` - Select option
|
|
122
|
+
- [ ] Toggle: `docs/examples-toggle.html` - Change state
|
|
123
|
+
- [ ] Datepicker: `docs/examples-datepicker.html` - Select date
|
|
124
|
+
|
|
125
|
+
#### Other Interactive
|
|
126
|
+
|
|
127
|
+
- [ ] Details/Collapsible: `docs/examples-details.html` / `examples-collapsible.html` - Open/close
|
|
128
|
+
- [ ] Notification: `docs/examples-notification.html` - Close notifications
|
|
129
|
+
- [ ] Pagination: `docs/examples-pagination.html` - Change pages
|
|
130
|
+
- [ ] Menu Horizontal: `docs/examples-menu-horizontal.html` - Navigate menus
|
|
131
|
+
- [ ] Menu Vertical: `docs/examples-menu-vertical.html` - Navigate menus
|
|
132
|
+
- [ ] Menubar: `docs/examples-menubar.html` - Navigate with keyboard
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 4. yourorganization Branding Tests
|
|
137
|
+
|
|
138
|
+
### 4.1. Alternative Configuration Build
|
|
139
|
+
|
|
140
|
+
- [ ] Run `BRANDING_CONFIG=yourorganization npm run build`
|
|
141
|
+
- [ ] Verify no errors
|
|
142
|
+
|
|
143
|
+
### 4.2. Visual Verification
|
|
144
|
+
|
|
145
|
+
- [ ] Verify organization name changes (YourOrganization)
|
|
146
|
+
- [ ] Verify logo changes (yourlogo-*.svg)
|
|
147
|
+
- [ ] Verify typography changes (Inter/Nunito)
|
|
148
|
+
- [ ] Verify color changes (if configured)
|
|
149
|
+
|
|
150
|
+
### 4.3. EU Logos Verification
|
|
151
|
+
|
|
152
|
+
- [ ] Verify EU logos display correctly
|
|
153
|
+
- [ ] Verify EU logo paths are correct
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## 5. Responsive Tests
|
|
158
|
+
|
|
159
|
+
### 5.1. Mobile Viewport
|
|
160
|
+
|
|
161
|
+
- [ ] Test with 375px wide viewport
|
|
162
|
+
- [ ] Verify hamburger menu works
|
|
163
|
+
- [ ] Verify compact logo displays
|
|
164
|
+
- [ ] Verify correct background images (header-background.svg)
|
|
165
|
+
|
|
166
|
+
### 5.2. Tablet Viewport
|
|
167
|
+
|
|
168
|
+
- [ ] Test with 768px wide viewport
|
|
169
|
+
- [ ] Verify layout changes
|
|
170
|
+
|
|
171
|
+
### 5.3. Desktop Viewport
|
|
172
|
+
|
|
173
|
+
- [ ] Test with 1280px wide viewport
|
|
174
|
+
- [ ] Verify expanded logo displays
|
|
175
|
+
- [ ] Verify correct background images (header-background-lg.svg)
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 6. Accessibility Tests
|
|
180
|
+
|
|
181
|
+
### 6.1. Automated Checks
|
|
182
|
+
|
|
183
|
+
- [ ] No critical accessibility errors in console
|
|
184
|
+
- [ ] Images have alt attribute
|
|
185
|
+
- [ ] Forms have associated labels
|
|
186
|
+
- [ ] Buttons have text or aria-label
|
|
187
|
+
|
|
188
|
+
### 6.2. Keyboard Navigation
|
|
189
|
+
|
|
190
|
+
- [ ] Can navigate with Tab through elements
|
|
191
|
+
- [ ] Modals can be closed with Escape
|
|
192
|
+
- [ ] Dropdowns can be opened with Enter/Space
|
|
193
|
+
- [ ] Accordions can be expanded with Enter/Space
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 7. Performance Tests
|
|
198
|
+
|
|
199
|
+
### 7.1. Page Load
|
|
200
|
+
|
|
201
|
+
- [ ] Page loads without 404 errors
|
|
202
|
+
- [ ] Images exist and load
|
|
203
|
+
- [ ] CSS loads correctly
|
|
204
|
+
- [ ] JS loads correctly
|
|
205
|
+
|
|
206
|
+
### 7.2. Build Size
|
|
207
|
+
|
|
208
|
+
- [ ] Minified CSS has no syntax errors
|
|
209
|
+
- [ ] Minified JS has no syntax errors
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 8. Plugins and Exports Tests
|
|
214
|
+
|
|
215
|
+
### 8.1. Exports Verification
|
|
216
|
+
|
|
217
|
+
- [ ] `branding/branding.config.js` file can be imported
|
|
218
|
+
- [ ] `branding/vite-branding-plugin.js` file can be imported
|
|
219
|
+
- [ ] `brandingPlugin` and `loadBrandingConfig` functions are correctly exported
|
|
220
|
+
|
|
221
|
+
### 8.2. External Usage Verification
|
|
222
|
+
|
|
223
|
+
- [ ] Verify plugin can load a configuration
|
|
224
|
+
- [ ] Verify plugin can inject CSS variables
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 9. Pages to Test List
|
|
229
|
+
|
|
230
|
+
### Main Pages
|
|
231
|
+
|
|
232
|
+
| Page | File | Priority |
|
|
233
|
+
|------|------|----------|
|
|
234
|
+
| Homepage | `index.html` | High |
|
|
235
|
+
| Catalog | `catalogo.html` | High |
|
|
236
|
+
| Components | `componentes.html` | High |
|
|
237
|
+
| Styles | `estilos.html` | Medium |
|
|
238
|
+
|
|
239
|
+
### Component Examples
|
|
240
|
+
|
|
241
|
+
| Component | File | Interactive |
|
|
242
|
+
|-----------|------|-------------|
|
|
243
|
+
| Header | `examples-header.html` | No |
|
|
244
|
+
| Header Advanced | `examples-header-advanced.html` | No |
|
|
245
|
+
| Header Mini | `examples-header-mini.html` | No |
|
|
246
|
+
| Footer | `examples-footer.html` | No |
|
|
247
|
+
| Accordion | `examples-accordion.html` | Yes |
|
|
248
|
+
| Alert | `examples-alert.html` | Yes |
|
|
249
|
+
| Breadcrumbs | `examples-breadcrumbs.html` | No |
|
|
250
|
+
| Button | `examples-button.html` | No |
|
|
251
|
+
| Card | `examples-card.html` | No |
|
|
252
|
+
| Checkboxes | `examples-checkboxes.html` | Yes |
|
|
253
|
+
| Collapsible | `examples-collapsible.html` | Yes |
|
|
254
|
+
| Date Input | `examples-date-input.html` | Yes |
|
|
255
|
+
| Datepicker | `examples-datepicker.html` | Yes |
|
|
256
|
+
| Description List | `examples-description-list.html` | No |
|
|
257
|
+
| Details | `examples-details.html` | Yes |
|
|
258
|
+
| Dialog | `examples-dialog.html` | Yes |
|
|
259
|
+
| Dropdown | `examples-dropdown.html` | Yes |
|
|
260
|
+
| Error Message | `examples-error-message.html` | No |
|
|
261
|
+
| Error Summary | `examples-error-summary.html` | Yes |
|
|
262
|
+
| Fieldset | `examples-fieldset.html` | No |
|
|
263
|
+
| File Upload | `examples-file-upload.html` | Yes |
|
|
264
|
+
| Hint | `examples-hint.html` | No |
|
|
265
|
+
| Input | `examples-input.html` | Yes |
|
|
266
|
+
| Input Group | `examples-input-group.html` | Yes |
|
|
267
|
+
| Item | `examples-item.html` | No |
|
|
268
|
+
| Label | `examples-label.html` | No |
|
|
269
|
+
| Links List | `examples-links-list.html` | Yes |
|
|
270
|
+
| Listbox | `examples-listbox.html` | Yes |
|
|
271
|
+
| Media Object | `examples-media-object.html` | No |
|
|
272
|
+
| Menu Horizontal | `examples-menu-horizontal.html` | Yes |
|
|
273
|
+
| Menu Navigation | `examples-menu-navigation.html` | Yes |
|
|
274
|
+
| Menu Vertical | `examples-menu-vertical.html` | Yes |
|
|
275
|
+
| Menubar | `examples-menubar.html` | Yes |
|
|
276
|
+
| Modal | `examples-modal.html` | Yes |
|
|
277
|
+
| Nav | `examples-nav.html` | No |
|
|
278
|
+
| Notification | `examples-notification.html` | Yes |
|
|
279
|
+
| Pagination | `examples-pagination.html` | Yes |
|
|
280
|
+
| Pill | `examples-pill.html` | No |
|
|
281
|
+
| Radios | `examples-radios.html` | Yes |
|
|
282
|
+
| Searchbar | `examples-searchbar.html` | Yes |
|
|
283
|
+
| Select | `examples-select.html` | Yes |
|
|
284
|
+
| Skip Link | `examples-skip-link.html` | No |
|
|
285
|
+
| Spinner | `examples-spinner.html` | No |
|
|
286
|
+
| Status | `examples-status.html` | No |
|
|
287
|
+
| Status Item | `examples-status-item.html` | No |
|
|
288
|
+
| Table | `examples-table.html` | No |
|
|
289
|
+
| Table Advanced | `examples-table-advanced.html` | No |
|
|
290
|
+
| Tabs | `examples-tabs.html` | Yes |
|
|
291
|
+
| Textarea | `examples-textarea.html` | Yes |
|
|
292
|
+
| Toggle | `examples-toggle.html` | Yes |
|
|
293
|
+
| Tooltip | `examples-tooltip.html` | Yes |
|
|
294
|
+
| Tree | `examples-tree.html` | Yes |
|
|
295
|
+
| Treegrid | `examples-treegrid.html` | Yes |
|
|
296
|
+
|
|
297
|
+
### Templates
|
|
298
|
+
|
|
299
|
+
| Template | File |
|
|
300
|
+
|----------|------|
|
|
301
|
+
| Logged with fixed header | `plantilla-logueado-con-cabecera-fija.html` |
|
|
302
|
+
| Logged with app selector | `plantilla-logueado-con-selector-de-app.html` |
|
|
303
|
+
| Logged with app title | `plantilla-logueado-con-titulo-de-app.html` |
|
|
304
|
+
| Not logged in | `plantilla-sin-loguear.html` |
|
|
305
|
+
| With advanced header | `plantilla-con-header-advanced.html` |
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## 10. Execution Commands
|
|
310
|
+
|
|
311
|
+
### Environment Setup
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
# Install dependencies
|
|
315
|
+
npm install
|
|
316
|
+
|
|
317
|
+
# Production build with default branding
|
|
318
|
+
npm run build
|
|
319
|
+
|
|
320
|
+
# Production build with yourorganization branding
|
|
321
|
+
BRANDING_CONFIG=yourorganization npm run build
|
|
322
|
+
|
|
323
|
+
# Start preview server
|
|
324
|
+
npm run preview
|
|
325
|
+
|
|
326
|
+
# Start development server
|
|
327
|
+
npm run dev
|
|
328
|
+
|
|
329
|
+
# Start development server with yourorganization branding
|
|
330
|
+
npm run dev:yourorganization
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Browser Agent Test Execution
|
|
334
|
+
|
|
335
|
+
1. Build the project: `npm run build`
|
|
336
|
+
2. Start preview: `npm run preview`
|
|
337
|
+
3. Use browser agent to navigate through listed pages
|
|
338
|
+
4. Verify visual elements, images, and console errors
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## 11. Success Criteria
|
|
343
|
+
|
|
344
|
+
The project is ready for npm publishing when:
|
|
345
|
+
|
|
346
|
+
- [ ] Build runs without errors
|
|
347
|
+
- [ ] All required files are in `dist/`
|
|
348
|
+
- [ ] Production paths are correct
|
|
349
|
+
- [ ] Default branding works correctly
|
|
350
|
+
- [ ] yourorganization branding works correctly
|
|
351
|
+
- [ ] Organization logos display correctly
|
|
352
|
+
- [ ] EU logos display correctly
|
|
353
|
+
- [ ] Header background images display correctly
|
|
354
|
+
- [ ] All interactive components work correctly
|
|
355
|
+
- [ ] No 404 errors in console
|
|
356
|
+
- [ ] No JavaScript errors in console
|
|
357
|
+
- [ ] Responsive design works correctly
|
|
358
|
+
- [ ] npm exports work correctly
|
|
359
|
+
- [ ] Keyboard navigation works on interactive components
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## 12. Additional Notes
|
|
364
|
+
|
|
365
|
+
- This testing plan covers 50+ example pages
|
|
366
|
+
- Tests 20+ interactive components
|
|
367
|
+
- Verifies complete branding system (default and yourorganization)
|
|
368
|
+
- Verifies all resource paths (images, CSS, JS)
|
|
369
|
+
- Verifies basic accessibility and keyboard navigation
|