Skip to content

Commit fb65e3a

Browse files
committed
Release v1.8.0: clipboard/tabs IIFEs and Stimulus peers.
Ship optional nowo-ui-clipboard and nowo-ui-tabs no-build scripts plus Stimulus peer TypeScript sources for hosts that already use Symfony UX.
1 parent c064a34 commit fb65e3a

29 files changed

Lines changed: 1556 additions & 13 deletions

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ install: ensure-up
5757
assets: ensure-up
5858
@$(COMPOSE) exec -T -e CI=true $(SERVICE_PHP) pnpm install
5959
@$(COMPOSE) exec -T $(SERVICE_PHP) pnpm run build
60-
@echo "Assets: src/Resources/public/js/nowo-ui-{modal,shell,toast,confirm,page-loader,theme,orb}.js"
60+
@echo "Assets: src/Resources/public/js/nowo-ui-{modal,shell,toast,confirm,page-loader,theme,orb,clipboard,tabs}.js"
6161

6262
test-ts: ensure-up
6363
@$(COMPOSE) exec -T $(SERVICE_PHP) pnpm run test:coverage | tee coverage-ts.txt

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ This bundle is **FrankenPHP worker mode friendly**.
3636

3737
- Twig macros (`@NowoUiKitBundle/macros/ui.html.twig`) with optional per-call `framework` override
3838
- Semantic stylesheet `css/nowo-ui.css` (asset package `nowo_ui_kit`), including dark `[data-theme="dark"]` tokens
39-
- TypeScript → IIFEs: modal, shell, toast, confirm, page-loader, theme, orb
39+
- TypeScript → IIFEs: modal, shell, toast, confirm, page-loader, theme, orb, clipboard, tabs
40+
- Optional Stimulus peers under `src/Resources/assets/stimulus-peers/` (see [docs/STIMULUS.md](docs/STIMULUS.md))
4041
- Thinking Orbs: `_thinking_orb` + `nowo-ui-orb.js`; page loader `visual: orb|spinner` ([THIRD_PARTY.md](docs/THIRD_PARTY.md))
4142
- Config: `css_framework`, `icon_set`, `row_actions_display`; i18n domain `NowoUiKitBundle` (`en`, `es`, `it`, `fr`, `pt`, `de`, `nl`)
4243
- Twig namespace overrides under `templates/bundles/NowoUiKitBundle/`

demo/symfony8-tailwind/config/reference.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,7 @@
783783
* @psalm-type NowoUiKitConfig = array{
784784
* css_framework?: "bootstrap"|"bootstrap5"|"bootstrap4"|"tailwind"|"foundation"|"custom"|"tabler"|"none"|Param, // Host CSS stack: bootstrap5|bootstrap4|tailwind|foundation|custom|none|tabler (bootstrap alias → bootstrap5). // Default: "bootstrap5"
785785
* icon_set?: "bootstrap-icons"|"tabler-icons"|"ux_icon"|"svg_inline"|"none"|Param, // Icon rendering: bootstrap-icons|tabler-icons|ux_icon|svg_inline|none. // Default: "bootstrap-icons"
786+
* row_actions_display?: "icon"|"text"|"icon_text"|Param, // Table/list row actions: icon (glyph only) | text (label only) | icon_text (both). // Default: "icon"
786787
* }
787788
* @psalm-type WebProfilerConfig = array{
788789
* toolbar?: bool|array{ // Profiler toolbar configuration

demo/symfony8/config/reference.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,7 @@
783783
* @psalm-type NowoUiKitConfig = array{
784784
* css_framework?: "bootstrap"|"bootstrap5"|"bootstrap4"|"tailwind"|"foundation"|"custom"|"tabler"|"none"|Param, // Host CSS stack: bootstrap5|bootstrap4|tailwind|foundation|custom|none|tabler (bootstrap alias → bootstrap5). // Default: "bootstrap5"
785785
* icon_set?: "bootstrap-icons"|"tabler-icons"|"ux_icon"|"svg_inline"|"none"|Param, // Icon rendering: bootstrap-icons|tabler-icons|ux_icon|svg_inline|none. // Default: "bootstrap-icons"
786+
* row_actions_display?: "icon"|"text"|"icon_text"|Param, // Table/list row actions: icon (glyph only) | text (label only) | icon_text (both). // Default: "icon"
786787
* }
787788
* @psalm-type WebProfilerConfig = array{
788789
* toolbar?: bool|array{ // Profiler toolbar configuration

docs/ADOPTION.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ Recommended migration order:
3939
1. Depend on UiKit; keep Beacon `app-shell` as the product chrome initially.
4040
2. Point kit admin layouts at UiKit macros/partials; remap `--nowo-ui-*` under `.kit-admin` (already started).
4141
3. Swap Beacon `_toasts` / confirm / page-loader markup for kit partials when contracts match ([STIMULUS.md](STIMULUS.md)).
42-
4. Optionally thin `_tabs`, filters, cards toward kit equivalents.
43-
5. Leave product-only pieces in Beacon (Mercure, charts, product tour). Thinking Orb is available in the kit via `_thinking_orb` / page loader `visual: orb` + `nowo-ui-orb.js` ([THIRD_PARTY.md](THIRD_PARTY.md)).
42+
4. Prefer kit IIFEs **or** re-export Stimulus peers from `vendor/nowo-tech/ui-kit-bundle/src/Resources/assets/stimulus-peers/` and delete duplicated host controllers (`clipboard_copy`, `confirm_*`, `page_loader`, `toast_stack`, `tabs`).
43+
5. Optionally thin `_tabs`, filters, cards toward kit equivalents.
44+
6. Leave product-only pieces in Beacon (Mercure, charts, product tour, `password-confirm-mirror`). Thinking Orb is available in the kit via `_thinking_orb` / page loader `visual: orb` + `nowo-ui-orb.js` ([THIRD_PARTY.md](THIRD_PARTY.md)).
4445

4546
## Config alignment
4647

docs/CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
88
## Table of contents
99

1010
- [Unreleased](#unreleased)
11+
- [1.8.0 - 2026-08-15](#180---2026-08-15)
1112
- [1.7.0 - 2026-08-05](#170---2026-08-05)
1213
- [1.6.0 - 2026-08-04](#160---2026-08-04)
1314
- [Added](#added)
@@ -35,6 +36,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
3536

3637
## [Unreleased]
3738

39+
## [1.8.0] - 2026-08-15
40+
41+
### Added
42+
43+
- **Clipboard IIFE:** `nowo-ui-clipboard.js` (`data-nowo-ui-clipboard*`) → `nowoUiCopyText`.
44+
- **In-page tabs IIFE:** `nowo-ui-tabs.js` (`data-nowo-ui-tabs*`) → `nowoUiActivateTab`. Twig `_tabs` remains link-based navigation.
45+
- **Stimulus peer sources** under `src/Resources/assets/stimulus-peers/`: `clipboard_copy`, `confirm_dialog`, `confirm_submit`, `page_loader`, `toast_stack`, `tabs` (optional; hosts import via AssetMapper/Vite). Docs: [STIMULUS.md](STIMULUS.md).
46+
47+
### Changed
48+
49+
- Vite/`pnpm run build` emits **nine** IIFEs (adds `clipboard`, `tabs`).
50+
- [STIMULUS.md](STIMULUS.md): peer import examples + Beacon attribute migration notes.
51+
52+
[1.8.0]: https://github.com/nowo-tech/UiKitBundle/releases/tag/v1.8.0
53+
3854
## [1.7.0] - 2026-08-05
3955

4056
### Changed

docs/COVERAGE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Published README percentage must match the latest `coverage-output.txt` / CI art
1919

2020
`make test-ts` / `pnpm run test:coverage` reports Vitest v8 coverage for `src/Resources/assets/src/*.ts` (top-level IIFE entrypoints; excluding `*.test.ts`). Thresholds: lines/statements/functions ≥ 90%, branches ≥ 85%.
2121

22-
Latest local run: **~95.5%** lines / **~88.1%** branches (seven IIFE entrypoints).
22+
Latest local run: **~95.5%** lines / **~88.1%** branches (nine IIFE entrypoints as of 1.8.0).
2323

2424
## Justified exclusions
2525

docs/RELEASE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Before tagging, confirm each item in [SECURITY.md — Release security checklist
5454

5555
4. Create an **annotated** tag: `git tag -a vX.Y.Z -m "Release vX.Y.Z"`.
5656
5. Run `make check-no-cursor-coauthor` again **before** `git push` (REQ-GIT-001). The release commit itself is not covered by an earlier `release-check` run.
57-
6. Push: `git push origin main` and `git push origin vX.Y.Z`.
57+
6. Push: `git push origin main` and `git push origin vX.Y.Z` (remote: `git@github.com:nowo-tech/UiKitBundle.git`).
5858
7. Confirm GitHub workflows `release.yml` and `sync-releases.yml` completed successfully.
5959
8. Prefer `gh -R nowo-tech/UiKitBundle …` if the local remote hostname is not recognized by `gh`.
6060

docs/ROADMAP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Shipped through **v1.4.x** (phases A–D implemented in the kit):
2828
|------|---------|
2929
| Class macros | `btn`, `toolbar`, `page_header`, `search_*`, `list*`, `table*`, `row_actions`, `badge` (+ variants), `flash`, `empty`, `tabs`, modal/confirm attrs, shell/header/aside/avatar/user_menu/burger/footer, `card*`, `filters`, `progress*`, `spinner` |
3030
| Partials | pagination, empty, flashes, **toasts**, row actions, page header, tabs, **filters**, **card**, modal shell, **confirm**, **page loader** (`spinner`/`orb`), **thinking orb**, **brand**, **theme toggle**, **width toggle**, **locale switcher**, **kebab**, icon, burger, avatar, aside (**nested groups**), user menu, footer, composed `_shell` |
31-
| Assets | `nowo-ui.css` (+ dark tokens); Vite/pnpm IIFEs: modal, shell, **toast**, **confirm**, **page-loader**, **theme**, **orb** |
31+
| Assets | `nowo-ui.css` (+ dark tokens); Vite/pnpm IIFEs: modal, shell, **toast**, **confirm**, **page-loader**, **theme**, **orb**, **clipboard**, **tabs**; optional Stimulus peers |
3232
| Config | `css_framework`, `icon_set` |
3333
| Docs | [ADOPTION.md](ADOPTION.md), [STIMULUS.md](STIMULUS.md), [THIRD_PARTY.md](THIRD_PARTY.md) |
3434

docs/SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ If you discover a security-related issue, please report it privately (e.g. by em
1616
| --- | --- |
1717
| **Twig macros / partials** | Labels, hrefs, and optional HTML fragments passed by the host app |
1818
| **Configuration** | `nowo_ui_kit.css_framework` / `icon_set` / `row_actions_display` (compile-time enums) |
19-
| **Frontend JS** | IIFEs: `nowo-ui-modal.js`, `nowo-ui-shell.js`, `nowo-ui-toast.js`, `nowo-ui-confirm.js`, `nowo-ui-page-loader.js`, `nowo-ui-theme.js`, `nowo-ui-orb.js` (DOM / canvas only; no network I/O) |
19+
| **Frontend JS** | IIFEs: `nowo-ui-modal.js`, `nowo-ui-shell.js`, `nowo-ui-toast.js`, `nowo-ui-confirm.js`, `nowo-ui-page-loader.js`, `nowo-ui-theme.js`, `nowo-ui-orb.js`, `nowo-ui-clipboard.js`, `nowo-ui-tabs.js` (DOM / canvas; clipboard may `fetch` same-origin URL bodies) |
2020
| **Translations** | Domain `NowoUiKitBundle` strings rendered in Twig |
2121

2222
The bundle does **not** expose CLI commands that mutate production data, outbound HTTP integrations, file uploads, or cookie writers.

0 commit comments

Comments
 (0)