@betterportal/theme-embedded 10.7.1 → 11.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.
@@ -1,3 +1,5 @@
1
+ > Routing contract: prefer `BPRoute` for links, actions, forms and embedded components/fragments. Use `ctx.route()` only when a destination value is specifically required. Service-view defaults use `viewPath`; the theme owns UI mounting/history. See [the detailed BPRoute contract](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/bp-route.md).
2
+
1
3
  ---
2
4
  name: betterportal-embedded-ui
3
5
  description: Build compact BetterPortal service UI for the Embedded theme.
@@ -8,10 +10,12 @@ description: Build compact BetterPortal service UI for the Embedded theme.
8
10
  1. Read `/llms-api.txt`, `/llms-ui.txt` and the Embedded UI guide.
9
11
  2. Keep the view single-column and self-contained.
10
12
  3. Use semantic HTML and server-rendered HTMX fragments.
11
- 4. Use the same `ctx.routeUrl(input?)` in API handlers and renderers. Omit the target for self. Select `apiPath`/`absoluteApiPath` for API requests, `viewPath`/`absoluteViewPath` for HTML requests, and `uiPath`/`absoluteUiPath` for theme navigation/public links. Pass a declared dependency alias in `serviceId`; renderers resolve links from domain data and cursors. API handlers must not add internal URL fields to their response for views. Resolve POST/PUT/DELETE destinations with the corresponding method in the renderer, and use `sse: true` with `absoluteViewPath` for HTML streams.
13
+ 4. Use the same `ctx.route(input?)` in API handlers and renderers. Omit the target for self. Select `apiPath`/`absoluteApiPath` for API requests, `viewPath`/`absoluteViewPath` for HTML requests, and `uiPath` only for explicit shell navigation/history and `absoluteUiPath` for public links; never prefer UI fields in service-renderer controls. Pass a declared dependency alias in `serviceId`; renderers resolve links from domain data and cursors. API handlers must not add internal URL fields to their response for views. Resolve POST/PUT/DELETE destinations with the corresponding method in the renderer, and use `sse: true` with `absoluteViewPath` for HTML streams.
12
14
  5. Include loading, empty, validation and failure states.
13
15
  6. Verify keyboard use, labels, responsive wrapping and the published schemas.
14
16
 
15
17
  Do not recreate Bootstrap components or a second app shell. Recommend Bootstrap1 when the requested interface genuinely needs those primitives.
16
18
 
17
19
  Read the UI guide's colors/appearance section and linked BetterPortal documentation; use the active theme's semantic roles and installed API version. Before delivery, follow its view boundaries and defect-reporting rules. Keep domain work in handlers, never submit during initialization or draft restoration, and never register HTMX extensions from service markup. Preserve schema-backed HTML5 constraints: use native submission or `requestSubmit()`, gate custom triggers with `reportValidity()`, and never disable validation to post an invalid form. Use project reporting tools for reproducible theme/framework defects. Verify failed POST followed by navigation, preload, history and repeated swaps without mutation replay or duplicate listeners.
20
+
21
+ BPRoute specifics: outer `as` supplies a default; each state can override `as` and HTML/HTMX attributes. Use bp-ok/bp-loading/bp-noauth/bp-noperm/bp-error; failures replace the active root and do not inherit generated actions. Valueless hx-get/post/put/patch/delete selects the effective method and resolved service destination; explicit values override it. Component or fragment selects GET embedding, never a link; bp-ok attributes optionally wrap fetched HTML, its children/URL actions are ignored, and no authored template placeholder is needed. Use @betterportal/framework as jsxImportSource. See docs/building/bp-route.md and routing-lint.md for complete examples and invalid usages.
@@ -1,4 +1,4 @@
1
- /** @jsxImportSource jsx-htmx */
1
+ /* @jsxImportSource @betterportal/framework */
2
2
  import type { RegisteredViewRenderer } from "@betterportal/framework";
3
3
 
4
4
  export const render: RegisteredViewRenderer["render"] = (data) => (
@@ -1,3 +1,5 @@
1
+ > Routing contract: prefer `BPRoute` for links, actions, forms and embedded components/fragments. Use `ctx.route()` only when a destination value is specifically required. Service-view defaults use `viewPath`; the theme owns UI mounting/history. See [the detailed BPRoute contract](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/bp-route.md).
2
+
1
3
  # Embedded theme UI guide
2
4
 
3
5
  The Embedded theme renders BetterPortal service content inside a lightweight host without an iframe. Keep UI narrow, self-contained and dependent only on native HTML, HTMX and the theme's existing variables.
@@ -7,7 +9,7 @@ The Embedded theme renders BetterPortal service content inside a lightweight hos
7
9
  - Return service content only; the theme owns the host document and main outlet.
8
10
  - Use semantic HTML, visible labels, keyboard-operable controls and responsive wrapping.
9
11
  - Prefer one column. Avoid persistent navigation, wide tables, fixed positioning and viewport-sized panels.
10
- - Use the same `ctx.routeUrl(input?)` in API handlers and renderers. Omit the target for self. Select `apiPath`/`absoluteApiPath` for API requests, `viewPath`/`absoluteViewPath` for HTML requests, and `uiPath`/`absoluteUiPath` for theme navigation/public links. Pass a declared dependency alias in `serviceId`; renderers resolve links from domain data and cursors. API handlers must not add internal URL fields to their response for views. Resolve POST/PUT/DELETE destinations with the corresponding method in the renderer, and use `sse: true` with `absoluteViewPath` for HTML streams.
12
+ - Use the same `ctx.route(input?)` in API handlers and renderers. Omit the target for self. Select `apiPath`/`absoluteApiPath` for API requests, `viewPath`/`absoluteViewPath` for HTML requests, and `uiPath` only for explicit shell navigation/history and `absoluteUiPath` for public links; never prefer UI fields in service-renderer controls. Pass a declared dependency alias in `serviceId`; renderers resolve links from domain data and cursors. API handlers must not add internal URL fields to their response for views. Resolve POST/PUT/DELETE destinations with the corresponding method in the renderer, and use `sse: true` with `absoluteViewPath` for HTML streams.
11
13
  - Plain internal `<a href="/route">` links and GET/POST forms are automatically upgraded to HTMX and routed through the owning service. A bare `<form>` posts to the current service view. Use `bp-no-override` or `data-bp-no-override` on an element or ancestor only when native browser behavior is intentional.
12
14
  - Use normal forms and HTMX swaps. Provide loading, empty, validation and error states.
13
15
  - Use `hx-download` for authenticated files and `HX-Trigger` events for passive refresh.
@@ -43,3 +45,5 @@ Read the shared `/llms-ui.txt` rules before implementing a view.
43
45
  - Use project issue/reporting tools for reproducible theme/framework defects. Include versions, minimal reproduction, expected/actual behavior and relevant request initiators or computed styles without credentials or customer data. Check existing reports; if access is unavailable, provide a ready-to-file report. Do not replace theme defaults with hardcoded palettes, `!important` patches, duplicate navigation or runtime workarounds.
44
46
  - Service errors use handler-side `ctx.diagnostic({ code, reason, attributes? })` before responses outside HTTP 200-399; the view displays a safe error state. Diagnostics do not replace upstream defect reports.
45
47
  - Verify failed POST then navigation, Back/Forward, preload, repeated swaps and stale drafts. Inspect request initiators and confirm navigation/restoration never mutates or leaves controls disabled.
48
+
49
+ BPRoute specifics: outer `as` supplies a default; each state can override `as` and HTML/HTMX attributes. Use bp-ok/bp-loading/bp-noauth/bp-noperm/bp-error; failures replace the active root and do not inherit generated actions. Valueless hx-get/post/put/patch/delete selects the effective method and resolved service destination; explicit values override it. Component or fragment selects GET embedding, never a link; bp-ok attributes optionally wrap fetched HTML, its children/URL actions are ignored, and no authored template placeholder is needed. Use @betterportal/framework as jsxImportSource. See docs/building/bp-route.md and routing-lint.md for complete examples and invalid usages.
@@ -4,7 +4,7 @@
4
4
  "pluginId": "org.betterportal.theme.embedded",
5
5
  "title": "Embedded Theme",
6
6
  "description": "Minimal htmx theme for embedding BetterPortal content without iframes.",
7
- "version": "10.7.1",
7
+ "version": "11.0.0",
8
8
  "category": "theme",
9
9
  "deploymentModes": [
10
10
  "self-hosted"
@@ -33,7 +33,7 @@
33
33
  "title": "Embedded UI guide",
34
34
  "description": "Compact layout, HTMX and accessibility rules for embedded views.",
35
35
  "mediaType": "text/markdown; charset=utf-8",
36
- "content": "# Embedded theme UI guide\n\nThe Embedded theme renders BetterPortal service content inside a lightweight host without an iframe. Keep UI narrow, self-contained and dependent only on native HTML, HTMX and the theme's existing variables.\n\n## Rules\n\n- Return service content only; the theme owns the host document and main outlet.\n- Use semantic HTML, visible labels, keyboard-operable controls and responsive wrapping.\n- Prefer one column. Avoid persistent navigation, wide tables, fixed positioning and viewport-sized panels.\n- Use the same `ctx.routeUrl(input?)` in API handlers and renderers. Omit the target for self. Select `apiPath`/`absoluteApiPath` for API requests, `viewPath`/`absoluteViewPath` for HTML requests, and `uiPath`/`absoluteUiPath` for theme navigation/public links. Pass a declared dependency alias in `serviceId`; renderers resolve links from domain data and cursors. API handlers must not add internal URL fields to their response for views. Resolve POST/PUT/DELETE destinations with the corresponding method in the renderer, and use `sse: true` with `absoluteViewPath` for HTML streams.\n- Plain internal `<a href=\"/route\">` links and GET/POST forms are automatically upgraded to HTMX and routed through the owning service. A bare `<form>` posts to the current service view. Use `bp-no-override` or `data-bp-no-override` on an element or ancestor only when native browser behavior is intentional.\n- Use normal forms and HTMX swaps. Provide loading, empty, validation and error states.\n- Use `hx-download` for authenticated files and `HX-Trigger` events for passive refresh.\n- Do not add a SPA framework, iframe, client router, state library or hardcoded service URL.\n\nThe Embedded theme deliberately offers fewer visual primitives than Bootstrap1. If a workflow needs a complex application shell, use Bootstrap1 instead of recreating a shell inside service content.\n\n## Colors and appearance\n\nEmbedded is a minimal host with a transparent document background. It does not declare the Bootstrap1/2 palette configuration or their `--bp-*` token contract. A `bootstrap5` component example or a brand hex value from another theme is not a portable Embedded styling API.\n\nUse native controls and inherit available host typography/colors; keep necessary service-specific CSS local to the component. Do not load Bootstrap, add global branding, redefine document colors or install a separate appearance controller. If a richer palette/component contract is required, implement it in the owning theme or select a suitable theme, rather than reproducing its shell in a view.\n\nRead the [BetterPortal theme contract](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/themes.md), [routes/views](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/routes-and-views.md) and active `/llms-ui.txt`. Match documentation examples to installed package versions; master may describe newer APIs.\n\n## Form validation before requests\n\nThe backend input schema is the source of truth. Render its applicable HTML5 constraints (`type`, `required`, `min`, `max`, `step`, `minlength`, `maxlength`, `pattern`) and preserve them after swaps. The browser validates the returned HTML controls; it does not execute AnyVali/JSON schema automatically. Numeric inputs use range/step constraints, not `pattern`. Hidden inputs and controls barred from constraint validation are not checked by these APIs; validate computed payloads against the published input contract and always on the server.\n\nPrefer native submit buttons or `form.requestSubmit(submitter)`. For a necessary custom trigger, stop if `form.reportValidity()` is false; `form.checkValidity()` checks without showing validation messages. Never bypass invalid controls with `form.submit()`, synthetic submit events, custom fetch/HTMX posts, `noValidate`/`formNoValidate`, `novalidate`/`formnovalidate` or disabled HTMX validation. Recalculation that accepts fewer fields needs a separate non-nested form/component with its own constraints, not a bypass on the full form. The backend validates every submission, including rules HTML cannot express.\n\nCheck invalid submissions by button, Enter and custom triggers: no POST is sent; a valid form submits once. See [HTML form validation and view guidance](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/themes.md#preserve-html5-form-validation).\n\n## View boundaries and defect reporting\n\nRead the shared `/llms-ui.txt` rules before implementing a view.\n\n- Render typed handler data. Keep business defaults, validation, calculations, persistence and report generation in handlers/domain helpers; HTML constraints are presentation hints.\n- Initialization, history navigation, prefetched insertion and draft restoration must not submit forms or replay mutations. Keep recalculation and final submission explicit; do not retain one-shot action flags after failure or cancellation.\n- The shell owns HTMX 4 and its bundled `bp-shell, sse` extensions. Do not inject extension assets, register extensions or add unsupported `hx-ext` values. Use supported form encoding and report schema/serialization gaps upstream.\n- Prefer native controls, HTMX triggers, `hx-indicator` and HTMX 4 `hx-disable`. Necessary local scripts use typed `js(() => ...)`, component-scoped selectors, idempotent binding and cleanup on removal. Do not add global submit functions or repeated document-wide listeners. HTMX 2 camelCase lifecycle events are incompatible with the installed HTMX 4 runtime.\n- Browser drafts require an explicit schema, allowed fields, tenant/app/service/user scope, version, expiry and clearing rules. Validate restoration, exclude action/auth fields, and never generate hidden inputs from arbitrary stored keys. Restore without submitting; browser owner metadata is not authorization.\n- Use project issue/reporting tools for reproducible theme/framework defects. Include versions, minimal reproduction, expected/actual behavior and relevant request initiators or computed styles without credentials or customer data. Check existing reports; if access is unavailable, provide a ready-to-file report. Do not replace theme defaults with hardcoded palettes, `!important` patches, duplicate navigation or runtime workarounds.\n- Service errors use handler-side `ctx.diagnostic({ code, reason, attributes? })` before responses outside HTTP 200-399; the view displays a safe error state. Diagnostics do not replace upstream defect reports.\n- Verify failed POST then navigation, Back/Forward, preload, repeated swaps and stale drafts. Inspect request initiators and confirm navigation/restoration never mutates or leaves controls disabled.\n"
36
+ "content": "> Routing contract: prefer `BPRoute` for links, actions, forms and embedded components/fragments. Use `ctx.route()` only when a destination value is specifically required. Service-view defaults use `viewPath`; the theme owns UI mounting/history. See [the detailed BPRoute contract](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/bp-route.md).\n\n# Embedded theme UI guide\n\nThe Embedded theme renders BetterPortal service content inside a lightweight host without an iframe. Keep UI narrow, self-contained and dependent only on native HTML, HTMX and the theme's existing variables.\n\n## Rules\n\n- Return service content only; the theme owns the host document and main outlet.\n- Use semantic HTML, visible labels, keyboard-operable controls and responsive wrapping.\n- Prefer one column. Avoid persistent navigation, wide tables, fixed positioning and viewport-sized panels.\n- Use the same `ctx.route(input?)` in API handlers and renderers. Omit the target for self. Select `apiPath`/`absoluteApiPath` for API requests, `viewPath`/`absoluteViewPath` for HTML requests, and `uiPath` only for explicit shell navigation/history and `absoluteUiPath` for public links; never prefer UI fields in service-renderer controls. Pass a declared dependency alias in `serviceId`; renderers resolve links from domain data and cursors. API handlers must not add internal URL fields to their response for views. Resolve POST/PUT/DELETE destinations with the corresponding method in the renderer, and use `sse: true` with `absoluteViewPath` for HTML streams.\n- Plain internal `<a href=\"/route\">` links and GET/POST forms are automatically upgraded to HTMX and routed through the owning service. A bare `<form>` posts to the current service view. Use `bp-no-override` or `data-bp-no-override` on an element or ancestor only when native browser behavior is intentional.\n- Use normal forms and HTMX swaps. Provide loading, empty, validation and error states.\n- Use `hx-download` for authenticated files and `HX-Trigger` events for passive refresh.\n- Do not add a SPA framework, iframe, client router, state library or hardcoded service URL.\n\nThe Embedded theme deliberately offers fewer visual primitives than Bootstrap1. If a workflow needs a complex application shell, use Bootstrap1 instead of recreating a shell inside service content.\n\n## Colors and appearance\n\nEmbedded is a minimal host with a transparent document background. It does not declare the Bootstrap1/2 palette configuration or their `--bp-*` token contract. A `bootstrap5` component example or a brand hex value from another theme is not a portable Embedded styling API.\n\nUse native controls and inherit available host typography/colors; keep necessary service-specific CSS local to the component. Do not load Bootstrap, add global branding, redefine document colors or install a separate appearance controller. If a richer palette/component contract is required, implement it in the owning theme or select a suitable theme, rather than reproducing its shell in a view.\n\nRead the [BetterPortal theme contract](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/themes.md), [routes/views](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/routes-and-views.md) and active `/llms-ui.txt`. Match documentation examples to installed package versions; master may describe newer APIs.\n\n## Form validation before requests\n\nThe backend input schema is the source of truth. Render its applicable HTML5 constraints (`type`, `required`, `min`, `max`, `step`, `minlength`, `maxlength`, `pattern`) and preserve them after swaps. The browser validates the returned HTML controls; it does not execute AnyVali/JSON schema automatically. Numeric inputs use range/step constraints, not `pattern`. Hidden inputs and controls barred from constraint validation are not checked by these APIs; validate computed payloads against the published input contract and always on the server.\n\nPrefer native submit buttons or `form.requestSubmit(submitter)`. For a necessary custom trigger, stop if `form.reportValidity()` is false; `form.checkValidity()` checks without showing validation messages. Never bypass invalid controls with `form.submit()`, synthetic submit events, custom fetch/HTMX posts, `noValidate`/`formNoValidate`, `novalidate`/`formnovalidate` or disabled HTMX validation. Recalculation that accepts fewer fields needs a separate non-nested form/component with its own constraints, not a bypass on the full form. The backend validates every submission, including rules HTML cannot express.\n\nCheck invalid submissions by button, Enter and custom triggers: no POST is sent; a valid form submits once. See [HTML form validation and view guidance](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/themes.md#preserve-html5-form-validation).\n\n## View boundaries and defect reporting\n\nRead the shared `/llms-ui.txt` rules before implementing a view.\n\n- Render typed handler data. Keep business defaults, validation, calculations, persistence and report generation in handlers/domain helpers; HTML constraints are presentation hints.\n- Initialization, history navigation, prefetched insertion and draft restoration must not submit forms or replay mutations. Keep recalculation and final submission explicit; do not retain one-shot action flags after failure or cancellation.\n- The shell owns HTMX 4 and its bundled `bp-shell, sse` extensions. Do not inject extension assets, register extensions or add unsupported `hx-ext` values. Use supported form encoding and report schema/serialization gaps upstream.\n- Prefer native controls, HTMX triggers, `hx-indicator` and HTMX 4 `hx-disable`. Necessary local scripts use typed `js(() => ...)`, component-scoped selectors, idempotent binding and cleanup on removal. Do not add global submit functions or repeated document-wide listeners. HTMX 2 camelCase lifecycle events are incompatible with the installed HTMX 4 runtime.\n- Browser drafts require an explicit schema, allowed fields, tenant/app/service/user scope, version, expiry and clearing rules. Validate restoration, exclude action/auth fields, and never generate hidden inputs from arbitrary stored keys. Restore without submitting; browser owner metadata is not authorization.\n- Use project issue/reporting tools for reproducible theme/framework defects. Include versions, minimal reproduction, expected/actual behavior and relevant request initiators or computed styles without credentials or customer data. Check existing reports; if access is unavailable, provide a ready-to-file report. Do not replace theme defaults with hardcoded palettes, `!important` patches, duplicate navigation or runtime workarounds.\n- Service errors use handler-side `ctx.diagnostic({ code, reason, attributes? })` before responses outside HTTP 200-399; the view displays a safe error state. Diagnostics do not replace upstream defect reports.\n- Verify failed POST then navigation, Back/Forward, preload, repeated swaps and stale drafts. Inspect request initiators and confirm navigation/restoration never mutates or leaves controls disabled.\n\nBPRoute specifics: outer `as` supplies a default; each state can override `as` and HTML/HTMX attributes. Use bp-ok/bp-loading/bp-noauth/bp-noperm/bp-error; failures replace the active root and do not inherit generated actions. Valueless hx-get/post/put/patch/delete selects the effective method and resolved service destination; explicit values override it. Component or fragment selects GET embedding, never a link; bp-ok attributes optionally wrap fetched HTML, its children/URL actions are ignored, and no authored template placeholder is needed. Use @betterportal/framework as jsxImportSource. See docs/building/bp-route.md and routing-lint.md for complete examples and invalid usages.\n"
37
37
  },
38
38
  {
39
39
  "id": "embedded.skill",
@@ -41,7 +41,7 @@
41
41
  "title": "Embedded UI skill",
42
42
  "description": "Agent workflow for producing Embedded-compatible service UI.",
43
43
  "mediaType": "text/markdown; charset=utf-8",
44
- "content": "---\nname: betterportal-embedded-ui\ndescription: Build compact BetterPortal service UI for the Embedded theme.\n---\n\n# BetterPortal Embedded UI\n\n1. Read `/llms-api.txt`, `/llms-ui.txt` and the Embedded UI guide.\n2. Keep the view single-column and self-contained.\n3. Use semantic HTML and server-rendered HTMX fragments.\n4. Use the same `ctx.routeUrl(input?)` in API handlers and renderers. Omit the target for self. Select `apiPath`/`absoluteApiPath` for API requests, `viewPath`/`absoluteViewPath` for HTML requests, and `uiPath`/`absoluteUiPath` for theme navigation/public links. Pass a declared dependency alias in `serviceId`; renderers resolve links from domain data and cursors. API handlers must not add internal URL fields to their response for views. Resolve POST/PUT/DELETE destinations with the corresponding method in the renderer, and use `sse: true` with `absoluteViewPath` for HTML streams.\n5. Include loading, empty, validation and failure states.\n6. Verify keyboard use, labels, responsive wrapping and the published schemas.\n\nDo not recreate Bootstrap components or a second app shell. Recommend Bootstrap1 when the requested interface genuinely needs those primitives.\n\nRead the UI guide's colors/appearance section and linked BetterPortal documentation; use the active theme's semantic roles and installed API version. Before delivery, follow its view boundaries and defect-reporting rules. Keep domain work in handlers, never submit during initialization or draft restoration, and never register HTMX extensions from service markup. Preserve schema-backed HTML5 constraints: use native submission or `requestSubmit()`, gate custom triggers with `reportValidity()`, and never disable validation to post an invalid form. Use project reporting tools for reproducible theme/framework defects. Verify failed POST followed by navigation, preload, history and repeated swaps without mutation replay or duplicate listeners.\n"
44
+ "content": "> Routing contract: prefer `BPRoute` for links, actions, forms and embedded components/fragments. Use `ctx.route()` only when a destination value is specifically required. Service-view defaults use `viewPath`; the theme owns UI mounting/history. See [the detailed BPRoute contract](https://github.com/BetterCorp/BetterPortal/blob/master/docs/building/bp-route.md).\n\n---\nname: betterportal-embedded-ui\ndescription: Build compact BetterPortal service UI for the Embedded theme.\n---\n\n# BetterPortal Embedded UI\n\n1. Read `/llms-api.txt`, `/llms-ui.txt` and the Embedded UI guide.\n2. Keep the view single-column and self-contained.\n3. Use semantic HTML and server-rendered HTMX fragments.\n4. Use the same `ctx.route(input?)` in API handlers and renderers. Omit the target for self. Select `apiPath`/`absoluteApiPath` for API requests, `viewPath`/`absoluteViewPath` for HTML requests, and `uiPath` only for explicit shell navigation/history and `absoluteUiPath` for public links; never prefer UI fields in service-renderer controls. Pass a declared dependency alias in `serviceId`; renderers resolve links from domain data and cursors. API handlers must not add internal URL fields to their response for views. Resolve POST/PUT/DELETE destinations with the corresponding method in the renderer, and use `sse: true` with `absoluteViewPath` for HTML streams.\n5. Include loading, empty, validation and failure states.\n6. Verify keyboard use, labels, responsive wrapping and the published schemas.\n\nDo not recreate Bootstrap components or a second app shell. Recommend Bootstrap1 when the requested interface genuinely needs those primitives.\n\nRead the UI guide's colors/appearance section and linked BetterPortal documentation; use the active theme's semantic roles and installed API version. Before delivery, follow its view boundaries and defect-reporting rules. Keep domain work in handlers, never submit during initialization or draft restoration, and never register HTMX extensions from service markup. Preserve schema-backed HTML5 constraints: use native submission or `requestSubmit()`, gate custom triggers with `reportValidity()`, and never disable validation to post an invalid form. Use project reporting tools for reproducible theme/framework defects. Verify failed POST followed by navigation, preload, history and repeated swaps without mutation replay or duplicate listeners.\n\nBPRoute specifics: outer `as` supplies a default; each state can override `as` and HTML/HTMX attributes. Use bp-ok/bp-loading/bp-noauth/bp-noperm/bp-error; failures replace the active root and do not inherit generated actions. Valueless hx-get/post/put/patch/delete selects the effective method and resolved service destination; explicit values override it. Component or fragment selects GET embedding, never a link; bp-ok attributes optionally wrap fetched HTML, its children/URL actions are ignored, and no authored template placeholder is needed. Use @betterportal/framework as jsxImportSource. See docs/building/bp-route.md and routing-lint.md for complete examples and invalid usages.\n"
45
45
  },
46
46
  {
47
47
  "id": "embedded.page-template",
@@ -50,7 +50,7 @@
50
50
  "description": "Minimal server-rendered JSX page structure.",
51
51
  "mediaType": "text/plain; charset=utf-8",
52
52
  "language": "typescript",
53
- "content": "/** @jsxImportSource jsx-htmx */\nimport type { RegisteredViewRenderer } from \"@betterportal/framework\";\n\nexport const render: RegisteredViewRenderer[\"render\"] = (data) => (\n <section aria-labelledby=\"page-title\">\n <h1 id=\"page-title\">Page title</h1>\n <p>Explain the task in one sentence.</p>\n <div>{JSON.stringify(data)}</div>\n </section>\n);\n"
53
+ "content": "/* @jsxImportSource @betterportal/framework */\nimport type { RegisteredViewRenderer } from \"@betterportal/framework\";\n\nexport const render: RegisteredViewRenderer[\"render\"] = (data) => (\n <section aria-labelledby=\"page-title\">\n <h1 id=\"page-title\">Page title</h1>\n <p>Explain the task in one sentence.</p>\n <div>{JSON.stringify(data)}</div>\n </section>\n);\n"
54
54
  }
55
55
  ],
56
56
  "shell": {
@@ -1,5 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
2
- /** @jsxImportSource jsx-htmx */
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@betterportal/framework/jsx-runtime";
2
+ /* @jsxImportSource @betterportal/framework */
3
3
  import { css } from "jsx-htmx";
4
4
  import { createPluginManifest } from "@betterportal/framework";
5
5
  import { betterPortalChromeAttributes } from "@betterportal/theme-runtime";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-theme-embedded/shell/index.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAA4C,MAAM,yBAAyB,CAAC;AACzG,OAAO,EACL,4BAA4B,EAE7B,MAAM,6BAA6B,CAAC;AA4CrC,MAAM,CAAC,MAAM,gBAAgB,GAAmB,oBAAoB,CAAC;IACnE,QAAQ,EAAE,iCAAiC;IAC3C,KAAK,EAAE,6BAA6B;IACpC,WAAW,EAAE,yDAAyD;IACtE,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,OAAO;IACjB,eAAe,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC;IAChE,YAAY,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC;IACpD,kBAAkB,EAAE,CAAC,UAAU,CAAC;IAChC,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE;IACnE,oBAAoB,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC3C,KAAK,EAAE,EAAE;IACT,aAAa,EAAE,EAAE;IACjB,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,UAAU,EAAE;QACV,kBAAkB,EAAE,IAAI;KACzB;CACF,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,OAA6B;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,OAAO,CACL,gBAAM,IAAI,EAAC,IAAI,aACb,2BACE,eAAM,OAAO,EAAC,OAAO,GAAG,EACxB,eAAM,IAAI,EAAC,UAAU,EAAC,OAAO,EAAC,qCAAqC,GAAG,EACtE,eAAM,IAAI,EAAC,aAAa,EAAC,OAAO,EAAC,4FAA4F,GAAG,EAChI,eAAM,GAAG,EAAC,MAAM,EAAC,IAAI,EAAC,WAAW,GAAG,EACpC,eAAM,GAAG,EAAC,WAAW,EAAC,IAAI,EAAC,kBAAkB,EAAC,KAAK,EAAC,0BAA0B,EAAC,IAAI,EAAE,OAAO,CAAC,aAAa,IAAI,yBAAyB,GAAI,EAC3I,eAAM,IAAI,EAAC,0BAA0B,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,IAAI,yBAAyB,GAAI,EACpG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAM,IAAI,EAAC,iCAAiC,EAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,GAAI,CAAC,CAAC,CAAC,EAAE,EAC1H,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAM,IAAI,EAAC,mCAAmC,EAAC,OAAO,EAAE,OAAO,CAAC,sBAAsB,GAAI,CAAC,CAAC,CAAC,EAAE,EAChI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,eAAM,IAAI,EAAC,yBAAyB,EAAC,OAAO,EAAE,OAAO,CAAC,SAAS,GAAI,CAAC,CAAC,CAAC,EAAE,EAC7F,0BAAQ,OAAO,CAAC,KAAK,GAAS,EAC9B,iBAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,oBAAoB,OAAO,EAAE,EAAE,aAAa,EAAC,MAAM,EAAC,KAAK,SAAU,EACvG,0BAAQ,GAAG,CAAC;4BACV,YAAY,EAAE;gCACZ,KAAK,EAAE,MAAM;gCACb,MAAM,EAAE,MAAM;gCACd,MAAM,EAAE,CAAC;gCACT,OAAO,EAAE,CAAC;gCACV,UAAU,EAAE,aAAa;6BAC1B;4BACD,kBAAkB,EAAE;gCAClB,KAAK,EAAE,MAAM;gCACb,SAAS,EAAE,MAAM;gCACjB,QAAQ,EAAE,QAAQ;6BACnB;4BACD,cAAc,EAAE;gCACd,KAAK,EAAE,MAAM;gCACb,MAAM,EAAE,MAAM;gCACd,SAAS,EAAE,MAAM;gCACjB,QAAQ,EAAE,UAAU;6BACrB;4BACD,oBAAoB,EAAE;gCACpB,KAAK,EAAE,MAAM;gCACb,MAAM,EAAE,MAAM;gCACd,SAAS,EAAE,MAAM;gCACjB,QAAQ,EAAE,UAAU;6BACrB;4BACD,sBAAsB,EAAE;gCACtB,KAAK,EAAE,MAAM;gCACb,SAAS,EAAE,OAAO;gCAClB,OAAO,EAAE,MAAM;gCACf,UAAU,EAAE,QAAQ;gCACpB,KAAK,EAAE,SAAS;gCAChB,IAAI,EAAE,+EAA+E;6BACtF;4BACD,qBAAqB,EAAE;gCACrB,SAAS,EAAE,YAAY;gCACvB,KAAK,EAAE,MAAM;gCACb,OAAO,EAAE,MAAM;gCACf,KAAK,EAAE,SAAS;gCAChB,UAAU,EAAE,SAAS;gCACrB,MAAM,EAAE,mBAAmB;gCAC3B,IAAI,EAAE,+EAA+E;6BACtF;4BACD,uBAAuB,EAAE;gCACvB,OAAO,EAAE,MAAM;gCACf,UAAU,EAAE,oBAAoB;6BACjC;yBACF,CAAC,GAAS,IACN,EACP,eAAM,KAAK,EAAC,aAAa,YAAE,OAAO,CAAC,QAAQ,GAAQ,IAC9C,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,OAAO,kBAAkB,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,UAA+B;IACtD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,UAAU;oBAAE,SAAS;gBAChC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,OAAgC;IACpD,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjF,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChE,OAAO,CACL,cACE,KAAK,EAAC,aAAa,wBACA,EAAE,2BACC,EAAE,sBACN,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,oBAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,0BAC5B,OAAO,CAAC,aAAa,6BAClB,OAAO,CAAC,gBAAgB,yBAC7B,OAAO,KACvB,4BAA4B,CAAC,OAAO,CAAC,MAAM,CAAC,YACzC,UAAU,YAEjB,cACE,EAAE,EAAC,SAAS,EACZ,KAAK,EAAC,mBAAmB,yBACL,EAAE,qBACL,OAAO,CAAC,gBAAgB,YACjC,OAAO,CAAC,eAAe,IAAI,EAAE,gBACzB,OAAO,CAAC,eAAe,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,eACvE,MAAM,aACR,WAAW,YAElB,oBAAoB,CAAC,CAAC,CAAC,CACtB,cAAK,KAAK,EAAC,oBAAoB,YAAE,OAAO,CAAC,iBAAiB,GAAO,CAClE,CAAC,CAAC,CAAC,CACF,cAAK,KAAK,EAAC,qBAAqB,wBAAc,CAC/C,GACG,GACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgC;IACrE,OAAO,mBAAmB,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;QACtD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC;KAChC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-theme-embedded/shell/index.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  "pluginId": "service-betterportal-theme-embedded",
3
3
  "pluginName": "service-betterportal-theme-embedded",
4
4
  "events": {},
5
- "version": "10.7.1",
5
+ "version": "11.0.0",
6
6
  "configSchema": {
7
7
  "anyvaliVersion": "1.0",
8
8
  "schemaVersion": "1.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "service-betterportal-theme-embedded",
3
3
  "name": "service-betterportal-theme-embedded",
4
- "version": "10.7.1",
4
+ "version": "11.0.0",
5
5
  "description": "Embedded BetterPortal theme",
6
6
  "category": "service",
7
7
  "tags": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@betterportal/theme-embedded",
3
- "version": "10.7.1",
3
+ "version": "11.0.0",
4
4
  "description": "BetterPortal v10 embedded theme plugin for Node.js",
5
5
  "main": "lib/index.js",
6
6
  "types": "src/index.ts",
@@ -33,9 +33,9 @@
33
33
  "typescript": "^6.0.3"
34
34
  },
35
35
  "dependencies": {
36
- "@betterportal/framework": "10.7.1",
37
- "@betterportal/plugin-bsb": "10.7.1",
38
- "@betterportal/theme-runtime": "10.7.1",
36
+ "@betterportal/framework": "11.0.0",
37
+ "@betterportal/plugin-bsb": "11.0.0",
38
+ "@betterportal/theme-runtime": "11.0.0",
39
39
  "@bsb/base": "^9.7.4",
40
40
  "anyvali": "^1.1.6",
41
41
  "jsx-htmx": "4.0.100"