acinguiux-preact-components 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +535 -0
  2. package/package.json +11 -9
package/README.md ADDED
@@ -0,0 +1,535 @@
1
+ # acinguiux-preact-components
2
+
3
+ A Preact component library providing atoms, molecules, organisms, and web components for building branded digital experiences across multiple themes.
4
+
5
+ **Package size:** ~663 kB (tarball) · **Unpacked:** ~1.4 MB · **20 built-in themes**
6
+
7
+ ---
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npm install acinguiux-preact-components
13
+ ```
14
+
15
+ > **Peer dependency:** Preact `^10.28.2` must be installed in your project.
16
+
17
+ ```bash
18
+ npm install preact
19
+ ```
20
+
21
+ ---
22
+
23
+ ## Import Paths
24
+
25
+ | Import path | What it provides |
26
+ |---|---|
27
+ | `acinguiux-preact-components` | Core utilities (routing, renderer, consent, i18n, etc.) |
28
+ | `acinguiux-preact-components/matter` | All UI components (atoms, molecules, organisms) |
29
+ | `acinguiux-preact-components/preact` | Re-exported Preact |
30
+ | `acinguiux-preact-components/preact/hooks` | Re-exported Preact hooks |
31
+
32
+ ---
33
+
34
+ ## Quick Start
35
+
36
+ ```js
37
+ import { renderPage } from 'acinguiux-preact-components'
38
+ import { Page, Container, Heading } from 'acinguiux-preact-components/matter'
39
+ import { h } from 'acinguiux-preact-components'
40
+ ```
41
+
42
+ ### Apply a Theme
43
+
44
+ Copy the theme CSS from `node_modules/acinguiux-preact-components/src/content/themes/` into your build, or reference it directly:
45
+
46
+ ```html
47
+ <link rel="stylesheet" href="./node_modules/acinguiux-preact-components/src/content/themes/theme-base2/theme-base2.css">
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Core API (`acinguiux-preact-components`)
53
+
54
+ ### Rendering
55
+
56
+ | Export | Description |
57
+ |---|---|
58
+ | `renderPage(model, el)` | Render a full page component into a DOM element |
59
+ | `renderComponent(model, el)` | Render a single component into a DOM element |
60
+
61
+ ### Routing
62
+
63
+ | Export | Description |
64
+ |---|---|
65
+ | `dataset` | Access the current page dataset |
66
+ | `componentModels` | Map of registered component models |
67
+ | `ValidationError` | Error class for model validation failures |
68
+
69
+ ### Utilities
70
+
71
+ | Export | Description |
72
+ |---|---|
73
+ | `h` | Preact `h` (JSX factory) |
74
+ | `t(key)` | i18n translation helper |
75
+ | `i18n` | i18n configuration object |
76
+ | `tw(classes)` | Twind utility-first class helper |
77
+ | `injectStyles(css)` | Inject styles into the document |
78
+ | `LARGE`, `MEDIUM` | Breakpoint constants for `tw` |
79
+ | `getUserId()` | Get anonymous analytics user ID |
80
+ | `getConsent()` | Get current consent state |
81
+ | `setConsent(value)` | Set consent state |
82
+ | `waitForConsent()` | Promise that resolves when consent is granted |
83
+ | `deepSelector` | Deep DOM selector utility |
84
+ | `register(name, component)` | Register a web component |
85
+ | `customElement` | Custom element decorator/helper |
86
+
87
+ ---
88
+
89
+ ## Components (`acinguiux-preact-components/matter`)
90
+
91
+ ### Atoms
92
+
93
+ Basic building blocks with no dependencies on other components.
94
+
95
+ | Component | Description |
96
+ |---|---|
97
+ | `Audio` | Audio player element |
98
+ | `Box` | Generic container box |
99
+ | `Button` | Styled button |
100
+ | `Card` | Card container |
101
+ | `Form` | Form wrapper |
102
+ | `Heading` | Heading with configurable level |
103
+ | `Icon` | SVG icon renderer |
104
+ | `Img` | Responsive image |
105
+ | `Input` | Form input field |
106
+ | `Link` | Anchor link |
107
+ | `LinkText` | Inline text link |
108
+ | `List` | Ordered / unordered list |
109
+ | `Logo` | Brand logo |
110
+ | `Menu` | Navigation menu |
111
+ | `Message` | Alert / status message |
112
+ | `NavLink` | Navigation link with active state |
113
+ | `Popup` | Modal / popup overlay |
114
+ | `RichText` | HTML rich text renderer |
115
+ | `Scroller` | Horizontal scroll container |
116
+ | `SVG` | Raw SVG renderer |
117
+ | `Table` | Data table |
118
+ | `Time` | Formatted date/time |
119
+ | `Video` | Video player element |
120
+
121
+ ### Molecules
122
+
123
+ Composed of atoms.
124
+
125
+ | Component | Description |
126
+ |---|---|
127
+ | `Asset` | File / media asset display |
128
+ | `Glossary` | Term and definition list |
129
+ | `Links` | Group of links |
130
+ | `PromoText` | Promotional text block |
131
+ | `Tags` | Tag / label list |
132
+ | `Tree` | Hierarchical tree view |
133
+
134
+ ### Organisms
135
+
136
+ Full-featured page sections.
137
+
138
+ | Component | Description |
139
+ |---|---|
140
+ | `AccordionItem` | Collapsible accordion section |
141
+ | `Author` | Author bio block |
142
+ | `Breadcrumb` | Page breadcrumb trail |
143
+ | `CallToAction` | CTA block |
144
+ | `Carousel` | Image / content carousel |
145
+ | `Cart` | Shopping cart |
146
+ | `CartItem` | Single cart item |
147
+ | `ContactForm` | Contact form with validation |
148
+ | `Container` | Page section container |
149
+ | `ContentOwner` | Content ownership metadata |
150
+ | `DateEntry` | Date input group |
151
+ | `ExternalSearch` | External search integration |
152
+ | `FilteredItem` | Filterable list item |
153
+ | `FooterItem` | Footer link / content block |
154
+ | `ImageGallery` | Image gallery grid |
155
+ | `LastModified` | Last-modified date display |
156
+ | `LegalFooter` | Legal / compliance footer |
157
+ | `ListItem` | Styled list item |
158
+ | `Metadata` | Page metadata block |
159
+ | `Navigation` | Site navigation |
160
+ | `Notification` | Toast / notification banner |
161
+ | `OrderTracker` | Order status tracker |
162
+ | `Page` | Full page shell (handles favicons, theme, analytics) |
163
+ | `PageHeader` | Page title header |
164
+ | `PageHeaderBanner` | Hero banner header |
165
+ | `PageTags` | Page taxonomy tags |
166
+ | `PressRelease` | Press release layout |
167
+ | `ProductAdmin` | Product admin panel |
168
+ | `PromoBanner` | Full-width promo banner |
169
+ | `PromoBottom` | Bottom-of-page promo |
170
+ | `PromoButton` | Button-style promo |
171
+ | `PromoCard` | Card-style promo |
172
+ | `PromoCardCover` | Full-cover promo card |
173
+ | `PromoFull` | Full-page promo layout |
174
+ | `PromoImage` | Image-led promo block |
175
+ | `PromoLure` | Teaser / lure promo |
176
+ | `PromoProductCard` | Product promo card |
177
+ | `PromoProductFull` | Full product promo |
178
+ | `PromoSimple` | Minimal promo block |
179
+ | `Quote` | Pull quote |
180
+ | `SearchForm` | Search input form |
181
+ | `SearchNav` | Search with navigation |
182
+ | `SearchResult` | Single search result |
183
+ | `Slider` | Slide / range input |
184
+ | `StandaloneAsset` | Full-page asset display |
185
+ | `Tabs` | Tabbed content panel |
186
+ | `Topbar` | Site top bar |
187
+ | `WebComponent` | Generic web component wrapper |
188
+
189
+ ### Routing
190
+
191
+ | Export | Description |
192
+ |---|---|
193
+ | `Component` | Base component class for routing |
194
+ | `Router` | Client-side router |
195
+
196
+ ---
197
+
198
+ ## Web Components (`src/wcs/components`)
199
+
200
+ Pre-built custom elements for embedding third-party integrations and self-contained widgets. Register and use via `<acinguiux-*>` tags.
201
+
202
+ | Component | Tag / File | Description |
203
+ |---|---|---|
204
+ | `BazaarVoice` | `bazaar-voice.js` | Bazaarvoice reviews integration |
205
+ | `ChatbotKoreai` | `chatbot-koreai.js` | Kore.ai chatbot |
206
+ | `ChatbotMs` | `chatbot-ms.js` | Microsoft chatbot |
207
+ | `ComparisonChart` | `comparison-chart.js` | Side-by-side comparison chart |
208
+ | `ConsentBanner` | `consent-banner.js` | GDPR / consent management banner |
209
+ | `DecisionTree` | `decision-tree.js` | Interactive decision tree |
210
+ | `DynamicContactDetails` | `dynamic-contact-details.js` | Location-aware contact details |
211
+ | `FloatingButton` | `floating-button.js` | Floating action button |
212
+ | `FormstackForm` | `formstack-form.js` | Formstack form embed |
213
+ | `FuelPrices` | `fuel-prices.js` | Live fuel price display |
214
+ | `FurnitureOverview` | `furniture-overview.js` | Furniture product overview |
215
+ | `GaugeValue` | `gauge-value.js` | Gauge / metric display |
216
+ | `HelpCentre` | `help-centre.js` | Help centre widget |
217
+ | `ImageGen` | `image-gen.js` | AI image generation widget |
218
+ | `InspiredGallery` | `inspired-gallery.js` | Curated image gallery |
219
+ | `LaunchContainer` | `launch-container.js` | App launch container |
220
+ | `LngMap` | `lng-map.js` | LNG station map |
221
+ | `MouseflowAnalytics` | `mouseflow-analytics.js` | Mouseflow session recording |
222
+ | `MsdsSearch` | `msds-search.js` | MSDS / safety data search |
223
+ | `ProductCatalogue` | `product-catalogue.js` | Product catalogue browser |
224
+ | `ProductLinks` | `product-links.js` | Related product links |
225
+ | `RioIframe` | `rio-iframe.js` | RIO iframe embed |
226
+ | `SalsifyProducts` | `salsify-products.js` | Salsify product data |
227
+ | `ShoutOut` | `shout-out.js` | Highlighted callout block |
228
+ | `SimpleChart` | `simple-chart.js` | Lightweight chart |
229
+ | `SingleStat` | `single-stat.js` | Single metric / KPI display |
230
+ | `SiteFeedback` | `site-feedback.js` | User feedback widget |
231
+ | `SkdsSearch` | `skds-search.js` | SKDS search integration |
232
+ | `SmartBanner` | `smart-banner.js` | Mobile app smart banner |
233
+ | `StandaloneTable` | `standalone-table.js` | Standalone data table |
234
+ | `StationLocator` | `station-locator.js` | Fuel station locator |
235
+ | `StoreBadges` | `store-badges.js` | App Store / Play Store badges |
236
+ | `TopbarButton` | `topbar-button.js` | Topbar action button |
237
+ | `ZendeskChat` | `zendesk-chat.js` | Zendesk live chat widget |
238
+
239
+ ---
240
+
241
+ ## Themes
242
+
243
+ 20 pre-built themes are included under `src/content/themes/`. Each theme provides:
244
+
245
+ - **CSS custom properties** for colors, typography, spacing, and logo ratios
246
+ - **Web fonts** (shared from `theme-base2` — one copy, all themes reference it)
247
+ - **Favicon set** (unique branding for `theme-vegetable`, `theme-aurvana`, `theme-nam-2025`; all others share `theme-base2`)
248
+
249
+ | Theme | Directory |
250
+ |---|---|
251
+ | Base | `theme-base` |
252
+ | Base 2 *(default / shared assets)* | `theme-base2` |
253
+ | AMG | `theme-acinguiux-amg` |
254
+ | Café | `theme-acinguiux-cafe` |
255
+ | Energy | `theme-acinguiux-energy` |
256
+ | Livewire | `theme-acinguiux-livewire` |
257
+ | Livewire Italy | `theme-acinguiux-livewire-italy` |
258
+ | Recharge | `theme-acinguiux-recharge` |
259
+ | Allon | `theme-allon` |
260
+ | Atlas | `theme-atlas` |
261
+ | Aurvana | `theme-aurvana` |
262
+ | Eco-Marathon | `theme-eco-marathon` |
263
+ | Energy Transition Campus Amsterdam | `theme-energy-transition-campus-amsterdam` |
264
+ | EVPass | `theme-evpass` |
265
+ | NAM 2025 | `theme-nam-2025` |
266
+ | Pennzoil | `theme-pennzoil` |
267
+ | Quaker State | `theme-quaker-state` |
268
+ | Tafawoq | `theme-tafawoq` |
269
+ | Vegetable | `theme-vegetable` |
270
+ | Zeolyst | `theme-zeolyst` |
271
+
272
+ ### Using a Theme
273
+
274
+ ```js
275
+ // Dynamically apply a theme at runtime (handled by the Page component)
276
+ // Set the theme path via the page model's links:
277
+ const model = {
278
+ links: [
279
+ { name: 'theme', value: '/themes/theme-base2' }
280
+ ]
281
+ }
282
+ ```
283
+
284
+ Or reference the CSS directly in your HTML:
285
+
286
+ ```html
287
+ <link rel="stylesheet" href="path/to/themes/theme-base2/theme-base2.css">
288
+ ```
289
+
290
+ ---
291
+
292
+ ## Build Scripts
293
+
294
+ | Script | Command | Description |
295
+ |---|---|---|
296
+ | `start` | `npm start` | Build in watch/dev mode |
297
+ | `build` | `npm run build` | Production build |
298
+ | `pack:check` | `npm run pack:check` | Dry-run pack (see included files) |
299
+ | `pack:check:size` | `npm run pack:check:size` | Validate package stays under size limit |
300
+
301
+ ---
302
+
303
+ ## Testing
304
+
305
+ Tests are written with [Playwright](https://playwright.dev/) and run against the locally built dev server. 88 spec files cover all atoms, molecules, organisms, and web components.
306
+
307
+ ### Run tests
308
+
309
+ ```bash
310
+ # Start the dev server in a separate terminal first
311
+ npm start
312
+
313
+ # Then in another terminal
314
+ npm test
315
+ ```
316
+
317
+ ### Environment variables (`.env`)
318
+
319
+ | Variable | Default | Description |
320
+ |---|---|---|
321
+ | `DEV_HOSTNAME` | `localhost` | Dev server hostname |
322
+ | `DEV_PORT` | `3000` | Dev server port |
323
+ | `TEST_CONCURRENCY` | `4` | Parallel worker count |
324
+ | `TEST_TIMEOUT` | `30000` | Per-test timeout (ms) |
325
+ | `TEST_USER` | `admin` | Admin user for auth tests |
326
+ | `TEST_PASS` | `admin` | Admin password for auth tests |
327
+
328
+ Create a `.env` file in the project root to override defaults:
329
+
330
+ ```
331
+ DEV_PORT=3001
332
+ TEST_CONCURRENCY=2
333
+ ```
334
+
335
+ ### Test files
336
+
337
+ <details>
338
+ <summary>88 spec files</summary>
339
+
340
+ | Spec file | Area |
341
+ |---|---|
342
+ | `ab-test.spec.js` | A/B testing |
343
+ | `accordion.spec.js` | Accordion organism |
344
+ | `analytics.spec.js` | Adobe Analytics integration |
345
+ | `anchors.spec.js` | Anchor link behaviour |
346
+ | `author.spec.js` | Author organism |
347
+ | `bazaar-voice.spec.js` | BazaarVoice web component |
348
+ | `breadcrumb.spec.js` | Breadcrumb organism |
349
+ | `call-to-action.spec.js` | CTA organism |
350
+ | `chatbot-test.spec.js` | Chatbot web component |
351
+ | `comparison-chart.spec.js` | Comparison chart web component |
352
+ | `consent-banner.spec.js` | Consent banner web component |
353
+ | `container.spec.js` | Container organism |
354
+ | `content-owner.spec.js` | Content owner organism |
355
+ | `date-entry.spec.js` | Date entry organism |
356
+ | `decision-tree.spec.js` | Decision tree web component |
357
+ | `dynamic-contact-details.spec.js` | Dynamic contact details web component |
358
+ | `empty.spec.js` | Empty page guard |
359
+ | `external-search.spec.js` | External search organism |
360
+ | `filtered-item.spec.js` | Filtered item organism |
361
+ | `floating-button.spec.js` | Floating button web component |
362
+ | `footer-item.spec.js` | Footer item organism |
363
+ | `formstack-form.spec.js` | Formstack form web component |
364
+ | `fuel-prices.spec.js` | Fuel prices web component |
365
+ | `furniture-overview.spec.js` | Furniture overview web component |
366
+ | `gauge-values.spec.js` | Gauge value web component |
367
+ | `help-centre.spec.js` | Help centre web component |
368
+ | `image-gallery.spec.js` | Image gallery organism |
369
+ | `image-gen.spec.js` | Image generation web component |
370
+ | `image-lazy-loading.spec.js` | Lazy loading behaviour |
371
+ | `inspired-gallery.spec.js` | Inspired gallery web component |
372
+ | `last-modified.spec.js` | Last modified organism |
373
+ | `launch-container.spec.js` | Launch container web component |
374
+ | `legal-footer.spec.js` | Legal footer organism |
375
+ | `links.spec.js` | Links molecule |
376
+ | `list-item.spec.js` | List item organism |
377
+ | `lng-map.spec.js` | LNG map web component |
378
+ | `metadata.spec.js` | Metadata organism |
379
+ | `metas.spec.js` | Page meta tags |
380
+ | `misc.spec.js` | Miscellaneous behaviours |
381
+ | `mouseflow-analytics.spec.js` | Mouseflow analytics web component |
382
+ | `msds-search.spec.js` | MSDS search web component |
383
+ | `navigation.spec.js` | Navigation organism |
384
+ | `notification.spec.js` | Notification organism |
385
+ | `page.spec.js` | Page organism |
386
+ | `page-header.spec.js` | Page header organism |
387
+ | `page-header-banner.spec.js` | Page header banner organism |
388
+ | `page-tags.spec.js` | Page tags organism |
389
+ | `press-release.spec.js` | Press release organism |
390
+ | `product-catalogue.spec.js` | Product catalogue web component |
391
+ | `product-links.spec.js` | Product links web component |
392
+ | `promo-banner.spec.js` | Promo banner organism |
393
+ | `promo-bottom.spec.js` | Promo bottom organism |
394
+ | `promo-card.spec.js` | Promo card organism |
395
+ | `promo-full.spec.js` | Promo full organism |
396
+ | `promo-image.spec.js` | Promo image organism |
397
+ | `promo-lure.spec.js` | Promo lure organism |
398
+ | `promo-simple.spec.js` | Promo simple organism |
399
+ | `quote.spec.js` | Quote organism |
400
+ | `redirect.spec.js` | Client-side redirect |
401
+ | `rio-iframe.spec.js` | RIO iframe web component |
402
+ | `rtl.spec.js` | Right-to-left layout |
403
+ | `salsify-products.spec.js` | Salsify products web component |
404
+ | `search.spec.js` | Search organism |
405
+ | `search-nav.spec.js` | Search nav organism |
406
+ | `section.spec.js` | Section layout |
407
+ | `shout-out.spec.js` | Shout-out web component |
408
+ | `simple-chart.spec.js` | Simple chart web component |
409
+ | `simple-consent-api.spec.js` | Consent API |
410
+ | `single-stat.spec.js` | Single stat web component |
411
+ | `site-feedback.spec.js` | Site feedback web component |
412
+ | `siteimprove.spec.js` | Siteimprove accessibility integration |
413
+ | `skds-search.spec.js` | SKDS search web component |
414
+ | `slider.spec.js` | Slider organism |
415
+ | `smart-banner.spec.js` | Smart banner web component |
416
+ | `standalone-asset.spec.js` | Standalone asset organism |
417
+ | `standalone-table.spec.js` | Standalone table web component |
418
+ | `state.spec.js` | Component state management |
419
+ | `station-locator.spec.js` | Station locator web component |
420
+ | `store-badges.spec.js` | Store badges web component |
421
+ | `t.spec.js` | i18n translation helper |
422
+ | `tabs.spec.js` | Tabs organism |
423
+ | `themes.spec.js` | Theme switching |
424
+ | `topbar.spec.js` | Topbar organism |
425
+ | `topbar-button.spec.js` | Topbar button web component |
426
+ | `web-component.spec.js` | Web component wrapper |
427
+ | `zendesk-chat.spec.js` | Zendesk chat web component |
428
+
429
+ </details>
430
+
431
+ ---
432
+
433
+ ## Code Coverage
434
+
435
+ Coverage is collected via [Istanbul](https://istanbul.js.org/) instrumentation injected at build time, then reported after the Playwright test run.
436
+
437
+ ### Run tests with coverage
438
+
439
+ ```bash
440
+ # Start the instrumented dev server
441
+ npm start -- -i
442
+
443
+ # In a second terminal, run tests (they collect coverage automatically)
444
+ npm test
445
+ ```
446
+
447
+ Or use the combined script:
448
+
449
+ ```bash
450
+ npm run test:coverage
451
+ ```
452
+
453
+ > `test:coverage` passes the `-i` flag to the build which instruments all JS files before Playwright tests run.
454
+
455
+ ### Coverage output
456
+
457
+ Reports are written to `target/playwright/coverage/` after the test run completes.
458
+
459
+ | Format | File | Use with |
460
+ |---|---|---|
461
+ | **LCOV** | `coverage/lcov.info` | VS Code Coverage Gutters, Codecov, Coveralls |
462
+ | **Clover** | `coverage/clover.xml` | Jenkins, Bamboo |
463
+ | **Cobertura** | `coverage/cobertura-coverage.xml` | Azure DevOps, GitLab CI |
464
+
465
+ ### Viewing coverage locally
466
+
467
+ **VS Code** — install the [Coverage Gutters](https://marketplace.visualstudio.com/items?itemName=ryanluker.vscode-coverage-gutters) extension, then point it at `target/playwright/coverage/lcov.info`. Covered/uncovered lines appear in the editor gutter.
468
+
469
+ **HTML report** — generate a human-readable HTML report with:
470
+
471
+ ```bash
472
+ npx nyc report --reporter=html --temp-dir=target/playwright/coverage --report-dir=target/playwright/coverage/html
473
+ ```
474
+
475
+ Then open `target/playwright/coverage/html/index.html` in a browser.
476
+
477
+ **CI integration example (GitHub Actions):**
478
+
479
+ ```yaml
480
+ - name: Run tests with coverage
481
+ run: |
482
+ npm start -- -i &
483
+ sleep 5
484
+ npm test
485
+
486
+ - name: Upload coverage to Codecov
487
+ uses: codecov/codecov-action@v4
488
+ with:
489
+ files: target/playwright/coverage/lcov.info
490
+ ```
491
+
492
+ ### What is instrumented
493
+
494
+ All JS files under `src/main/` and `src/wcs/` are instrumented. The following are excluded from coverage:
495
+
496
+ - Third-party vendor bundles
497
+ - Build tool scripts (`src/tools/`)
498
+ - Test utility files (`src/test/utils/`)
499
+
500
+ ---
501
+
502
+ ## Build Scripts
503
+
504
+ | Script | Command | Description |
505
+ |---|---|---|
506
+ | `start` | `npm start` | Build in watch/dev mode |
507
+ | `build` | `npm run build` | Production build |
508
+ | `test` | `npm test` | Run Playwright test suite |
509
+ | `test:coverage` | `npm run test:coverage` | Run tests with Istanbul coverage |
510
+ | `pack:check` | `npm run pack:check` | Dry-run pack (see included files) |
511
+ | `pack:check:size` | `npm run pack:check:size` | Validate package stays under size limit |
512
+
513
+ ---
514
+
515
+ ## More Information
516
+
517
+ ### 💁 More information at the [Preact Website ➞](https://preactjs.com/)
518
+
519
+ - [NPM (Preact)](https://www.npmjs.com/package/preact)
520
+ - [Preact Chat](https://chat.preactjs.com/)
521
+ - [Preact Backers](https://www.npmjs.com/package/preact?activeTab=readme#backers)
522
+ - [Preact Sponsors](https://www.npmjs.com/package/preact?activeTab=readme#sponsors)
523
+ - [Preact Coveralls](https://coveralls.io/github/preactjs/preact)
524
+ - [Preact CDN (UNPKG)](https://unpkg.com/preact/dist/preact.min.js)
525
+
526
+ ### 📚 acinguiux-preact-components Links
527
+
528
+ - [acinguiuxpreactdoc | Home](https://acinguiux-preact-components.vercel.app/acinguiuxpreactdoc.html)
529
+ - [Home](https://acinguiux-preact-components.vercel.app/en_gb.html)
530
+
531
+ ---
532
+
533
+ ## License
534
+
535
+ See [LICENSE](LICENSE) file.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "acinguiux-preact-components",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Sample extracted acinguiux-preact component library package",
5
5
  "type": "module",
6
6
  "main": "./src/main/export-main.js",
@@ -15,28 +15,29 @@
15
15
  "#acinguiux-preact/*.js": "./src/*.js"
16
16
  },
17
17
  "files": [
18
+ "README.md",
18
19
  "src/main",
19
20
  "src/wcs",
20
21
  "src/content/themes"
21
22
  ],
22
23
  "peerDependencies": {
23
- "preact": "^10.28.2"
24
+ "preact": "^10.29.2"
24
25
  },
25
26
  "dependencies": {
26
27
  "chart.js": "^4.5.1",
27
28
  "exceljs": "^4.4.0",
28
- "marked": "^16.1.2",
29
- "nodemailer": "^8.0.7",
30
- "preact": "^10.28.2",
31
- "qr": "^0.5.4"
29
+ "marked": "^18.0.5",
30
+ "nodemailer": "^9.0.0",
31
+ "preact": "^10.29.2",
32
+ "qr": "^0.6.0"
32
33
  },
33
34
  "devDependencies": {
34
- "@playwright/test": "^1.59.1",
35
+ "@playwright/test": "^1.60.0",
35
36
  "@siteimprove/alfa-playwright": "^0.82.1",
36
37
  "@siteimprove/alfa-test-utils": "^0.82.1",
37
38
  "convert-source-map": "^2.0.0",
38
39
  "dotenv": "^17.2.3",
39
- "esbuild": "^0.27.2",
40
+ "esbuild": "^0.28.1",
40
41
  "istanbul-lib-coverage": "^3.2.2",
41
42
  "istanbul-lib-instrument": "^6.0.3",
42
43
  "istanbul-lib-report": "^3.0.1",
@@ -51,6 +52,7 @@
51
52
  "pack:check": "npm pack --dry-run",
52
53
  "pack:check:size": "node src/tools/check-pack-size.js",
53
54
  "pack:with-themes:check": "npm pack --dry-run --json --pack-destination .",
54
- "test": "echo \"Add library test pipeline here\""
55
+ "test": "npx playwright test",
56
+ "test:coverage": "npx playwright test -- -i"
55
57
  }
56
58
  }