@betterportal/hello-view 0.0.1

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 (86) hide show
  1. package/README.md +11 -0
  2. package/bsb-plugin.json +23 -0
  3. package/bsb-tests.json +14 -0
  4. package/lib/index.d.ts +2 -0
  5. package/lib/index.d.ts.map +1 -0
  6. package/lib/index.js +2 -0
  7. package/lib/index.js.map +1 -0
  8. package/lib/plugins/service-betterportal-hello-view/.bp-generated/registry.d.ts +3 -0
  9. package/lib/plugins/service-betterportal-hello-view/.bp-generated/registry.d.ts.map +1 -0
  10. package/lib/plugins/service-betterportal-hello-view/.bp-generated/registry.js +80 -0
  11. package/lib/plugins/service-betterportal-hello-view/.bp-generated/registry.js.map +1 -0
  12. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.d.ts +13 -0
  13. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.d.ts.map +1 -0
  14. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.js +11 -0
  15. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.js.map +1 -0
  16. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.stream.d.ts +12 -0
  17. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.stream.d.ts.map +1 -0
  18. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.stream.js +18 -0
  19. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.stream.js.map +1 -0
  20. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/index.d.ts +34 -0
  21. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/index.d.ts.map +1 -0
  22. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/index.js +50 -0
  23. package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/index.js.map +1 -0
  24. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.d.ts +5 -0
  25. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.d.ts.map +1 -0
  26. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.js +5 -0
  27. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.js.map +1 -0
  28. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.sse.d.ts +5 -0
  29. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.sse.d.ts.map +1 -0
  30. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.sse.js +6 -0
  31. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.sse.js.map +1 -0
  32. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.profile.d.ts +5 -0
  33. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.profile.d.ts.map +1 -0
  34. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.profile.js +15 -0
  35. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.profile.js.map +1 -0
  36. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/index.d.ts +5 -0
  37. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/index.d.ts.map +1 -0
  38. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/index.js +8 -0
  39. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/index.js.map +1 -0
  40. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-cards.d.ts +5 -0
  41. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-cards.d.ts.map +1 -0
  42. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-cards.js +13 -0
  43. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-cards.js.map +1 -0
  44. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-data.d.ts +5 -0
  45. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-data.d.ts.map +1 -0
  46. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-data.js +52 -0
  47. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-data.js.map +1 -0
  48. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-elements.d.ts +5 -0
  49. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-elements.d.ts.map +1 -0
  50. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-elements.js +8 -0
  51. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-elements.js.map +1 -0
  52. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-forms.d.ts +5 -0
  53. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-forms.d.ts.map +1 -0
  54. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-forms.js +8 -0
  55. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-forms.js.map +1 -0
  56. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-interactive.d.ts +5 -0
  57. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-interactive.d.ts.map +1 -0
  58. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-interactive.js +11 -0
  59. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-interactive.js.map +1 -0
  60. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-overlays.d.ts +5 -0
  61. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-overlays.d.ts.map +1 -0
  62. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-overlays.js +5 -0
  63. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-overlays.js.map +1 -0
  64. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-patterns.d.ts +5 -0
  65. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-patterns.d.ts.map +1 -0
  66. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-patterns.js +25 -0
  67. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-patterns.js.map +1 -0
  68. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.embedded/index.d.ts +5 -0
  69. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.embedded/index.d.ts.map +1 -0
  70. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.embedded/index.js +5 -0
  71. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.embedded/index.js.map +1 -0
  72. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/index.d.ts +23 -0
  73. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/index.d.ts.map +1 -0
  74. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/index.js +37 -0
  75. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/index.js.map +1 -0
  76. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/sse.d.ts +10 -0
  77. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/sse.d.ts.map +1 -0
  78. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/sse.js +20 -0
  79. package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/sse.js.map +1 -0
  80. package/lib/plugins/service-betterportal-hello-view/index.d.ts +57 -0
  81. package/lib/plugins/service-betterportal-hello-view/index.d.ts.map +1 -0
  82. package/lib/plugins/service-betterportal-hello-view/index.js +66 -0
  83. package/lib/plugins/service-betterportal-hello-view/index.js.map +1 -0
  84. package/lib/schemas/service-betterportal-hello-view.json +109 -0
  85. package/lib/schemas/service-betterportal-hello-view.plugin.json +122 -0
  86. package/package.json +65 -0
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # BetterPortal Hello View Example for Node.js
2
+
3
+ Reference business plugin for BetterPortal v10.
4
+
5
+ This package demonstrates:
6
+
7
+ - a single canonical view endpoint
8
+ - `application/json` and `text/html` negotiation
9
+ - metadata representation
10
+ - schema-first validation
11
+ - support for the `bootstrap1` and `embedded` themes
@@ -0,0 +1,23 @@
1
+ {
2
+ "nodejs": [
3
+ {
4
+ "id": "service-betterportal-hello-view",
5
+ "name": "service-betterportal-hello-view",
6
+ "basePath": "./",
7
+ "description": "Hello view example service for BetterPortal v10",
8
+ "tags": [
9
+ "betterportal",
10
+ "service",
11
+ "example",
12
+ "htmx"
13
+ ],
14
+ "documentation": [
15
+ "./README.md"
16
+ ],
17
+ "pluginPath": "src/plugins/service-betterportal-hello-view/",
18
+ "links": {
19
+ "github": "git+https://github.com/BetterCorp/BetterPortal.git"
20
+ }
21
+ }
22
+ ]
23
+ }
package/bsb-tests.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "nodejs": [
3
+ {
4
+ "id": "service-betterportal-hello-view",
5
+ "skip": true,
6
+ "default": {
7
+ "config": {},
8
+ "setup": null,
9
+ "dispose": null
10
+ },
11
+ "tests": []
12
+ }
13
+ ]
14
+ }
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./plugins/service-betterportal-hello-view/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oDAAoD,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./plugins/service-betterportal-hello-view/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oDAAoD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BetterPortalRegistry } from "@betterportal/framework";
2
+ export declare const registry: BetterPortalRegistry;
3
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-hello-view/.bp-generated/registry.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,eAAO,MAAM,QAAQ,EAAE,oBA4DtB,CAAC"}
@@ -0,0 +1,80 @@
1
+ // AUTO-GENERATED by BetterPortal codegen - DO NOT EDIT
2
+ import * as delayedRoute from "../bp-routes/delayed/index.js";
3
+ import * as delayedBootstrap1Page from "../bp-routes/delayed/_theme.bootstrap1/index.js";
4
+ import * as delayedBootstrap1Stream from "../bp-routes/delayed/_theme.bootstrap1/index.stream.js";
5
+ import * as helloRoute from "../bp-routes/hello/index.js";
6
+ import * as helloSse from "../bp-routes/hello/sse.js";
7
+ import * as helloBootstrap1Page from "../bp-routes/hello/_theme.bootstrap1/index.js";
8
+ import * as helloBootstrap1ShowcaseCards from "../bp-routes/hello/_theme.bootstrap1/showcase-cards.js";
9
+ import * as helloBootstrap1ShowcaseData from "../bp-routes/hello/_theme.bootstrap1/showcase-data.js";
10
+ import * as helloBootstrap1ShowcaseElements from "../bp-routes/hello/_theme.bootstrap1/showcase-elements.js";
11
+ import * as helloBootstrap1ShowcaseForms from "../bp-routes/hello/_theme.bootstrap1/showcase-forms.js";
12
+ import * as helloBootstrap1ShowcaseInteractive from "../bp-routes/hello/_theme.bootstrap1/showcase-interactive.js";
13
+ import * as helloBootstrap1ShowcaseOverlays from "../bp-routes/hello/_theme.bootstrap1/showcase-overlays.js";
14
+ import * as helloBootstrap1ShowcasePatterns from "../bp-routes/hello/_theme.bootstrap1/showcase-patterns.js";
15
+ import * as helloBootstrap1NavClock from "../bp-routes/hello/_theme.bootstrap1/_nav.clock.js";
16
+ import * as helloBootstrap1NavClockSse from "../bp-routes/hello/_theme.bootstrap1/_nav.clock.sse.js";
17
+ import * as helloBootstrap1NavProfile from "../bp-routes/hello/_theme.bootstrap1/_nav.profile.js";
18
+ import * as helloEmbeddedPage from "../bp-routes/hello/_theme.embedded/index.js";
19
+ export const registry = {
20
+ routes: [
21
+ {
22
+ viewId: "delayed.index",
23
+ path: "/delayed",
24
+ methods: ["GET"],
25
+ paramNames: [],
26
+ schemas: {
27
+ response: delayedRoute.handleGet.responseSchema,
28
+ query: delayedRoute.QuerySchema,
29
+ item: delayedRoute.ItemSchema,
30
+ summary: delayedRoute.SummarySchema
31
+ },
32
+ handlers: { GET: delayedRoute.handleGet },
33
+ title: delayedRoute.title,
34
+ description: delayedRoute.description,
35
+ auth: delayedRoute.auth,
36
+ cacheHints: delayedRoute.cacheHints,
37
+ demoScenarios: [],
38
+ themeRenderers: {
39
+ "bootstrap1": {
40
+ pages: [{ rendererId: "default", type: "page", render: delayedBootstrap1Page.render }],
41
+ components: [],
42
+ fragments: [],
43
+ stream: { renderShell: delayedBootstrap1Stream.renderShell, renderItem: delayedBootstrap1Stream.renderItem, renderSummary: delayedBootstrap1Stream.renderSummary, renderError: delayedBootstrap1Stream.renderError }
44
+ }
45
+ }
46
+ },
47
+ {
48
+ viewId: "hello.index",
49
+ path: "/hello",
50
+ methods: ["GET"],
51
+ paramNames: [],
52
+ schemas: {
53
+ response: helloRoute.ResponseSchema,
54
+ query: helloRoute.QuerySchema,
55
+ headers: helloRoute.HeadersSchema,
56
+ request: helloRoute.RequestSchema
57
+ },
58
+ handlers: { GET: helloRoute.handleGet },
59
+ title: helloRoute.title,
60
+ description: helloRoute.description,
61
+ auth: helloRoute.auth,
62
+ cacheHints: helloRoute.cacheHints,
63
+ demoScenarios: helloRoute.demoScenarios,
64
+ themeRenderers: {
65
+ "bootstrap1": {
66
+ pages: [{ rendererId: "default", type: "page", render: helloBootstrap1Page.render }],
67
+ components: [{ rendererId: "showcase-cards", type: "component", render: helloBootstrap1ShowcaseCards.render }, { rendererId: "showcase-data", type: "component", render: helloBootstrap1ShowcaseData.render }, { rendererId: "showcase-elements", type: "component", render: helloBootstrap1ShowcaseElements.render }, { rendererId: "showcase-forms", type: "component", render: helloBootstrap1ShowcaseForms.render }, { rendererId: "showcase-interactive", type: "component", render: helloBootstrap1ShowcaseInteractive.render }, { rendererId: "showcase-overlays", type: "component", render: helloBootstrap1ShowcaseOverlays.render }, { rendererId: "showcase-patterns", type: "component", render: helloBootstrap1ShowcasePatterns.render }],
68
+ fragments: [{ rendererId: "nav.clock", type: "fragment", fragmentLocation: "nav", fragmentId: "clock", render: helloBootstrap1NavClock.render, sseRender: helloBootstrap1NavClockSse.renderTick }, { rendererId: "nav.profile", type: "fragment", fragmentLocation: "nav", fragmentId: "profile", render: helloBootstrap1NavProfile.render }]
69
+ },
70
+ "embedded": {
71
+ pages: [{ rendererId: "default", type: "page", render: helloEmbeddedPage.render }],
72
+ components: [],
73
+ fragments: []
74
+ }
75
+ },
76
+ sse: { handler: helloSse.handleSSE, tickSchema: helloSse.tickSchema }
77
+ }
78
+ ]
79
+ };
80
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-hello-view/.bp-generated/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** @jsxImportSource jsx-htmx */
2
+ import type { HtmlRenderable } from "@betterportal/framework";
3
+ import type { DelayedItem, DelayedSummary } from "../index.js";
4
+ /**
5
+ * Buffered full-page render (spec/streaming.md section 4.2): the framework runs the
6
+ * stream to completion and hands the derived { items, summary } shape here.
7
+ * Reuses the per-frame renderers so streamed and buffered output match.
8
+ */
9
+ export declare function render(data: {
10
+ items: DelayedItem[];
11
+ summary?: DelayedSummary;
12
+ }): HtmlRenderable;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG/D;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,GAAG,cAAc,CAW/F"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
2
+ import { renderItem, renderSummary } from "./index.stream.js";
3
+ /**
4
+ * Buffered full-page render (spec/streaming.md section 4.2): the framework runs the
5
+ * stream to completion and hands the derived { items, summary } shape here.
6
+ * Reuses the per-frame renderers so streamed and buffered output match.
7
+ */
8
+ export function render(data) {
9
+ return (_jsxs("section", { class: "container-fluid", children: [_jsx("h1", { class: "h4", children: "Delayed stream" }), _jsx("p", { class: "text-body-secondary", children: "Buffered render - the server waited for the full stream before responding." }), _jsx("ul", { class: "list-group", children: data.items.map((item) => renderItem(item)) }), data.summary ? renderSummary(data.summary) : null] }));
10
+ }
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAAwD;IAC7E,OAAO,CACL,mBAAS,KAAK,EAAC,iBAAiB,aAC9B,aAAI,KAAK,EAAC,IAAI,+BAAoB,EAClC,YAAG,KAAK,EAAC,qBAAqB,2FAE1B,EACJ,aAAI,KAAK,EAAC,YAAY,YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAM,EACvE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAC1C,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** @jsxImportSource jsx-htmx */
2
+ import type { HtmlRenderable, StreamErrorFrame, StreamShellContext } from "@betterportal/framework";
3
+ import type { DelayedItem, DelayedSummary } from "../index.js";
4
+ /**
5
+ * Streaming renderers (spec/streaming.md section 4). The shell returns instantly with
6
+ * SSE wiring; each frame is rendered server-side and swapped in as it arrives.
7
+ */
8
+ export declare function renderShell(ctx: StreamShellContext): HtmlRenderable;
9
+ export declare function renderItem(item: DelayedItem): HtmlRenderable;
10
+ export declare function renderSummary(summary: DelayedSummary): HtmlRenderable;
11
+ export declare function renderError(error: StreamErrorFrame): HtmlRenderable;
12
+ //# sourceMappingURL=index.stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.stream.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.stream.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACpG,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/D;;;GAGG;AAEH,wBAAgB,WAAW,CAAC,GAAG,EAAE,kBAAkB,GAAG,cAAc,CAmBnE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc,CAO5D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAMrE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,cAAc,CAMnE"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
2
+ /**
3
+ * Streaming renderers (spec/streaming.md section 4). The shell returns instantly with
4
+ * SSE wiring; each frame is rendered server-side and swapped in as it arrives.
5
+ */
6
+ export function renderShell(ctx) {
7
+ return (_jsxs("section", { class: "container-fluid", children: [_jsx("h1", { class: "h4", children: "Delayed stream" }), _jsx("p", { class: "text-body-secondary", children: "Rows below stream in as the (deliberately slow) data source yields them." }), _jsxs("div", { "hx-ext": "sse", "hx-sse:connect": ctx.sseConnectPath, "hx-sse:close": "end", children: [_jsx("ul", { class: "list-group", "sse-swap": "item", "hx-swap": "beforeend", children: _jsxs("li", { class: "list-group-item text-body-secondary", "sse-swap": "end", "hx-swap": "delete", children: [_jsx("span", { class: "spinner-border spinner-border-sm me-2" }), "Waiting for data..."] }) }), _jsx("div", { "sse-swap": "summary", "hx-swap": "innerHTML" }), _jsx("div", { "sse-swap": "error", "hx-swap": "innerHTML" })] })] }));
8
+ }
9
+ export function renderItem(item) {
10
+ return (_jsxs("li", { class: "list-group-item d-flex justify-content-between align-items-center", children: [_jsx("span", { children: item.label }), _jsxs("span", { class: "badge text-bg-secondary", children: [item.elapsedMs, "ms"] })] }));
11
+ }
12
+ export function renderSummary(summary) {
13
+ return (_jsxs("p", { class: "text-body-secondary small mt-2 mb-0", children: [summary.total, " items in ", summary.totalMs, "ms total."] }));
14
+ }
15
+ export function renderError(error) {
16
+ return (_jsxs("div", { class: "alert alert-danger mt-2 mb-0", role: "alert", children: ["Stream failed: ", error.message] }));
17
+ }
18
+ //# sourceMappingURL=index.stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.stream.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/delayed/_theme.bootstrap1/index.stream.tsx"],"names":[],"mappings":";AAIA;;;GAGG;AAEH,MAAM,UAAU,WAAW,CAAC,GAAuB;IACjD,OAAO,CACL,mBAAS,KAAK,EAAC,iBAAiB,aAC9B,aAAI,KAAK,EAAC,IAAI,+BAAoB,EAClC,YAAG,KAAK,EAAC,qBAAqB,yFAE1B,EACJ,yBAAY,KAAK,oBAAiB,GAAG,CAAC,cAAc,kBAAe,KAAK,aACtE,aAAI,KAAK,EAAC,YAAY,cAAU,MAAM,aAAS,WAAW,YACxD,cAAI,KAAK,EAAC,qCAAqC,cAAU,KAAK,aAAS,QAAQ,aAC7E,eAAM,KAAK,EAAC,uCAAuC,GAAQ,2BAExD,GACF,EACL,0BAAc,SAAS,aAAS,WAAW,GAAO,EAClD,0BAAc,OAAO,aAAS,WAAW,GAAO,IAC5C,IACE,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAiB;IAC1C,OAAO,CACL,cAAI,KAAK,EAAC,mEAAmE,aAC3E,yBAAO,IAAI,CAAC,KAAK,GAAQ,EACzB,gBAAM,KAAK,EAAC,yBAAyB,aAAE,IAAI,CAAC,SAAS,UAAU,IAC5D,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAuB;IACnD,OAAO,CACL,aAAG,KAAK,EAAC,qCAAqC,aAC3C,OAAO,CAAC,KAAK,gBAAY,OAAO,CAAC,OAAO,iBACvC,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,CACL,eAAK,KAAK,EAAC,8BAA8B,EAAC,IAAI,EAAC,OAAO,gCACpC,KAAK,CAAC,OAAO,IACzB,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ import * as av from "anyvali";
2
+ import type { Infer } from "anyvali";
3
+ import { type ApiAuthRequirement, type CacheHints } from "@betterportal/framework";
4
+ export declare const QuerySchema: av.ObjectSchema<{
5
+ count: av.StringSchema;
6
+ delayMs: av.StringSchema;
7
+ }>;
8
+ export declare const ItemSchema: av.ObjectSchema<{
9
+ id: av.StringSchema;
10
+ label: av.StringSchema;
11
+ elapsedMs: av.IntSchema;
12
+ }>;
13
+ export type DelayedItem = Infer<typeof ItemSchema>;
14
+ export declare const SummarySchema: av.ObjectSchema<{
15
+ total: av.IntSchema;
16
+ totalMs: av.IntSchema;
17
+ }>;
18
+ export type DelayedSummary = Infer<typeof SummarySchema>;
19
+ export declare const title = "Delayed Stream";
20
+ export declare const description = "Example streaming view: items arrive one by one as a slow data source produces them. JSON buffers, NDJSON streams frames, HTML streams rendered rows over SSE.";
21
+ export declare const auth: ApiAuthRequirement;
22
+ export declare const cacheHints: CacheHints;
23
+ export declare const handleGet: import("@betterportal/framework").BpStreamHandler<{
24
+ id: string;
25
+ label: string;
26
+ elapsedMs: number;
27
+ }, {
28
+ total: number;
29
+ totalMs: number;
30
+ }, Record<string, string>, {
31
+ count: string;
32
+ delayMs: string;
33
+ }, Record<string, string>>;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/delayed/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,WAAW;;;EAGI,CAAC;AAE7B,eAAO,MAAM,UAAU;;;;EAIK,CAAC;AAC7B,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,eAAO,MAAM,aAAa;;;EAGE,CAAC;AAC7B,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAIzD,eAAO,MAAM,KAAK,mBAAmB,CAAC;AACtC,eAAO,MAAM,WAAW,mKAAmK,CAAC;AAE5L,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC;AAYF,eAAO,MAAM,SAAS;;;;;;;;;;0BAkBrB,CAAC"}
@@ -0,0 +1,50 @@
1
+ import * as av from "anyvali";
2
+ import { createStreamHandler } from "@betterportal/framework";
3
+ // -- Schemas (spec/streaming.md - item is the canonical contract) ----
4
+ export const QuerySchema = av.object({
5
+ count: av.string().default("5"),
6
+ delayMs: av.string().default("400")
7
+ }, { unknownKeys: "strip" });
8
+ export const ItemSchema = av.object({
9
+ id: av.string().minLength(1),
10
+ label: av.string().minLength(1),
11
+ elapsedMs: av.int().min(0)
12
+ }, { unknownKeys: "strip" });
13
+ export const SummarySchema = av.object({
14
+ total: av.int().min(0),
15
+ totalMs: av.int().min(0)
16
+ }, { unknownKeys: "strip" });
17
+ // -- Metadata --------------------------------------------------------
18
+ export const title = "Delayed Stream";
19
+ export const description = "Example streaming view: items arrive one by one as a slow data source produces them. JSON buffers, NDJSON streams frames, HTML streams rendered rows over SSE.";
20
+ export const auth = {
21
+ required: false,
22
+ permissions: []
23
+ };
24
+ export const cacheHints = {
25
+ ttlSeconds: 0,
26
+ varyBy: ["accept", "origin"]
27
+ };
28
+ // -- Handler - async generator; the framework drives representation --
29
+ function clampInt(raw, min, max, fallback) {
30
+ const parsed = Number.parseInt(raw, 10);
31
+ if (!Number.isFinite(parsed))
32
+ return fallback;
33
+ return Math.min(max, Math.max(min, parsed));
34
+ }
35
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
36
+ export const handleGet = createStreamHandler({ item: ItemSchema, summary: SummarySchema, query: QuerySchema }, async function* (ctx) {
37
+ const count = clampInt(ctx.query.count, 1, 25, 5);
38
+ const delayMs = clampInt(ctx.query.delayMs, 0, 2000, 400);
39
+ const startedAt = Date.now();
40
+ for (let i = 1; i <= count; i++) {
41
+ await sleep(delayMs);
42
+ yield {
43
+ id: `item-${i}`,
44
+ label: `Slow record #${i} of ${count}`,
45
+ elapsedMs: Date.now() - startedAt
46
+ };
47
+ }
48
+ return { total: count, totalMs: Date.now() - startedAt };
49
+ });
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/delayed/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** @jsxImportSource jsx-htmx */
2
+ import type { HtmlRenderable } from "@betterportal/framework";
3
+ import type { ResponseData } from "../index.js";
4
+ export declare function render(_data: ResponseData): HtmlRenderable;
5
+ //# sourceMappingURL=_nav.clock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_nav.clock.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAW1D"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
2
+ export function render(_data) {
3
+ return (_jsxs("div", { class: "d-inline-flex align-items-center gap-2 px-3 py-1 rounded-pill bg-body-tertiary border", children: [_jsx("span", { class: "badge bg-success rounded-circle p-1", style: "width:0.55rem;height:0.55rem;" }), _jsx("span", { class: "font-monospace small", "hx-ext": "sse", "hx-sse:connect": "/hello/__sse?_f=nav.clock", children: "--:--:--" })] }));
4
+ }
5
+ //# sourceMappingURL=_nav.clock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_nav.clock.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.tsx"],"names":[],"mappings":";AAIA,MAAM,UAAU,MAAM,CAAC,KAAmB;IACxC,OAAO,CACL,eAAK,KAAK,EAAC,uFAAuF,aAChG,eAAM,KAAK,EAAC,qCAAqC,EAAC,KAAK,EAAC,+BAA+B,GAAQ,EAC/F,eACE,KAAK,EAAC,sBAAsB,YACrB,KAAK,oBACG,2BAA2B,yBAC5B,IACZ,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** @jsxImportSource jsx-htmx */
2
+ import type { HtmlRenderable } from "@betterportal/framework";
3
+ import type { Tick } from "../sse.js";
4
+ export declare function renderTick(data: Tick): HtmlRenderable;
5
+ //# sourceMappingURL=_nav.clock.sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_nav.clock.sse.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.sse.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,CAGrD"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "jsx-htmx/jsx-runtime";
2
+ export function renderTick(data) {
3
+ //throw new Error('test');
4
+ return _jsx("span", { title: data.iso, children: data.time });
5
+ }
6
+ //# sourceMappingURL=_nav.clock.sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_nav.clock.sse.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.clock.sse.tsx"],"names":[],"mappings":";AAIA,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,0BAA0B;IAC1B,OAAO,eAAM,KAAK,EAAE,IAAI,CAAC,GAAG,YAAG,IAAI,CAAC,IAAI,GAAQ,CAAC;AACnD,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** @jsxImportSource jsx-htmx */
2
+ import type { HtmlRenderable } from "@betterportal/framework";
3
+ import type { ResponseData } from "../index.js";
4
+ export declare function render(data: ResponseData): HtmlRenderable;
5
+ //# sourceMappingURL=_nav.profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_nav.profile.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.profile.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAYhD,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CA+BzD"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
2
+ function greetingName(greeting) {
3
+ return greeting.replace(/^Hello,\s*/, "").trim();
4
+ }
5
+ function greetingInitials(greeting) {
6
+ const name = greetingName(greeting);
7
+ const parts = name.split(/\s+/).filter(Boolean).slice(0, 2);
8
+ return parts.map((part) => part[0]?.toUpperCase() ?? "").join("") || "BP";
9
+ }
10
+ export function render(data) {
11
+ const name = greetingName(data.greeting);
12
+ const initials = greetingInitials(data.greeting);
13
+ return (_jsxs("div", { class: "dropdown", children: [_jsxs("button", { class: "btn btn-light border shadow-sm dropdown-toggle d-inline-flex align-items-center gap-2 rounded-pill px-2 py-1 text-start", type: "button", "data-bs-toggle": "dropdown", "aria-expanded": "false", children: [_jsx("span", { class: "rounded-circle bg-primary text-white d-inline-flex align-items-center justify-content-center fw-semibold flex-shrink-0", style: "width:2rem;height:2rem;font-size:0.78rem;", children: initials }), _jsx("span", { class: "d-none d-sm-inline fw-semibold text-body", children: name })] }), _jsxs("ul", { class: "dropdown-menu dropdown-menu-end shadow-sm", children: [_jsx("li", { children: _jsx("div", { class: "dropdown-item-text", children: _jsx("div", { class: "fw-semibold text-body", children: name }) }) }), _jsx("li", { children: _jsx("hr", { class: "dropdown-divider" }) }), _jsx("li", { children: _jsx("a", { class: "dropdown-item", href: "/config-admin", children: "Settings" }) })] })] }));
14
+ }
15
+ //# sourceMappingURL=_nav.profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_nav.profile.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/_nav.profile.tsx"],"names":[],"mappings":";AAIA,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAkB;IACvC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEjD,OAAO,CACL,eAAK,KAAK,EAAC,UAAU,aACnB,kBACE,KAAK,EAAC,yHAAyH,EAC/H,IAAI,EAAC,QAAQ,oBACE,UAAU,mBACX,OAAO,aAErB,eACE,KAAK,EAAC,wHAAwH,EAC9H,KAAK,EAAC,2CAA2C,YAEhD,QAAQ,GACJ,EACP,eAAM,KAAK,EAAC,0CAA0C,YAAE,IAAI,GAAQ,IAC7D,EACT,cAAI,KAAK,EAAC,2CAA2C,aACnD,uBACE,cAAK,KAAK,EAAC,oBAAoB,YAC7B,cAAK,KAAK,EAAC,uBAAuB,YAAE,IAAI,GAAO,GAC3C,GACH,EACL,uBAAI,aAAI,KAAK,EAAC,kBAAkB,GAAG,GAAK,EACxC,uBAAI,YAAG,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,eAAe,yBAAa,GAAK,IAChE,IACD,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** @jsxImportSource jsx-htmx */
2
+ import type { HtmlRenderable } from "@betterportal/framework";
3
+ import type { ResponseData } from "../index.js";
4
+ export declare function render(data: ResponseData): HtmlRenderable;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/index.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkBhD,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAyGzD"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
2
+ function statCard(label, value, change, positive) {
3
+ return (_jsx("div", { class: "col", children: _jsx("div", { class: "card border-0 shadow-sm h-100", children: _jsxs("div", { class: "card-body", children: [_jsx("div", { class: "small text-body-secondary mb-1", children: label }), _jsx("div", { class: "h4 mb-1", children: value }), _jsxs("div", { class: `small ${positive ? "text-success" : "text-danger"}`, children: [positive ? "^" : "v", " ", change] })] }) }) }));
4
+ }
5
+ export function render(data) {
6
+ return (_jsx("section", { class: "container-fluid px-0", children: _jsxs("div", { class: "d-flex flex-column gap-4", children: [_jsxs("div", { children: [_jsx("h1", { class: "h3 mb-1", children: data.greeting }), _jsx("p", { class: "text-body-secondary mb-0", children: "This HTML representation is rendered from the same validated API output." })] }), _jsxs("div", { class: "row row-cols-1 row-cols-sm-2 row-cols-lg-4 g-3", children: [statCard("Total Users", "12,482", "14% vs last month", true), statCard("Revenue", "$48,290", "8.2% vs last month", true), statCard("Active Sessions", "1,847", "3.1% vs yesterday", false), statCard("Avg. Response", "124ms", "12% improvement", true)] }), _jsxs("div", { class: "row g-3", children: [_jsx("div", { class: "col-lg-8", children: _jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body", children: [_jsx("h2", { class: "h5 mb-3", children: "Platform Overview" }), _jsx("p", { class: "text-body-secondary", children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." }), _jsx("p", { class: "text-body-secondary", children: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo." }), _jsx("p", { class: "text-body-secondary mb-0", children: "Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem." })] }) }) }), _jsx("div", { class: "col-lg-4", children: _jsx("div", { class: "card border-0 shadow-sm h-100", children: _jsxs("div", { class: "card-body", children: [_jsx("h2", { class: "h5 mb-3", children: "Quick Actions" }), _jsxs("div", { class: "d-grid gap-2", children: [_jsx("button", { class: "btn btn-outline-primary btn-sm text-start", children: "View Analytics" }), _jsx("button", { class: "btn btn-outline-primary btn-sm text-start", children: "Manage Users" }), _jsx("button", { class: "btn btn-outline-primary btn-sm text-start", children: "System Settings" }), _jsx("button", { class: "btn btn-outline-primary btn-sm text-start", children: "Export Reports" })] })] }) }) })] }), _jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body", children: [_jsx("h2", { class: "h5 mb-3", children: "Recent Activity" }), _jsx("div", { class: "table-responsive", children: _jsxs("table", { class: "table table-sm table-hover mb-0", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { class: "text-body-secondary fw-semibold", children: "Event" }), _jsx("th", { class: "text-body-secondary fw-semibold", children: "User" }), _jsx("th", { class: "text-body-secondary fw-semibold", children: "Status" }), _jsx("th", { class: "text-body-secondary fw-semibold text-end", children: "Time" })] }) }), _jsxs("tbody", { children: [_jsxs("tr", { children: [_jsx("td", { children: "Deployment completed" }), _jsx("td", { children: "System" }), _jsx("td", { children: _jsx("span", { class: "badge text-bg-success", children: "Success" }) }), _jsx("td", { class: "text-end text-body-secondary", children: "2 min ago" })] }), _jsxs("tr", { children: [_jsx("td", { children: "User login" }), _jsx("td", { children: "jane@example.com" }), _jsx("td", { children: _jsx("span", { class: "badge text-bg-primary", children: "Active" }) }), _jsx("td", { class: "text-end text-body-secondary", children: "5 min ago" })] }), _jsxs("tr", { children: [_jsx("td", { children: "Config updated" }), _jsx("td", { children: "admin@example.com" }), _jsx("td", { children: _jsx("span", { class: "badge text-bg-warning text-dark", children: "Pending" }) }), _jsx("td", { class: "text-end text-body-secondary", children: "12 min ago" })] }), _jsxs("tr", { children: [_jsx("td", { children: "Backup initiated" }), _jsx("td", { children: "System" }), _jsx("td", { children: _jsx("span", { class: "badge text-bg-info", children: "Running" }) }), _jsx("td", { class: "text-end text-body-secondary", children: "18 min ago" })] }), _jsxs("tr", { children: [_jsx("td", { children: "Service restart" }), _jsx("td", { children: "ops@example.com" }), _jsx("td", { children: _jsx("span", { class: "badge text-bg-success", children: "Success" }) }), _jsx("td", { class: "text-end text-body-secondary", children: "32 min ago" })] }), _jsxs("tr", { children: [_jsx("td", { children: "Alert triggered" }), _jsx("td", { children: "monitoring" }), _jsx("td", { children: _jsx("span", { class: "badge text-bg-danger", children: "Critical" }) }), _jsx("td", { class: "text-end text-body-secondary", children: "45 min ago" })] }), _jsxs("tr", { children: [_jsx("td", { children: "User invited" }), _jsx("td", { children: "admin@example.com" }), _jsx("td", { children: _jsx("span", { class: "badge text-bg-primary", children: "Sent" }) }), _jsx("td", { class: "text-end text-body-secondary", children: "1 hr ago" })] }), _jsxs("tr", { children: [_jsx("td", { children: "Schema migration" }), _jsx("td", { children: "System" }), _jsx("td", { children: _jsx("span", { class: "badge text-bg-success", children: "Success" }) }), _jsx("td", { class: "text-end text-body-secondary", children: "2 hr ago" })] })] })] }) })] }) }), _jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body", children: [_jsx("h2", { class: "h5 mb-3", children: "Architecture Notes" }), _jsx("p", { class: "text-body-secondary", children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur. Donec sed odio dui. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus." }), _jsx("p", { class: "text-body-secondary", children: "Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Maecenas sed diam eget risus varius blandit sit amet non magna. Cras justo odio, dapibus ut facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Nullam quis risus eget urna mollis ornare vel eu leo." }), _jsx("p", { class: "text-body-secondary", children: "Etiam porta sem malesuada magna mollis euismod. Donec ullamcorper nulla non metus auctor fringilla. Maecenas faucibus mollis interdum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum." }), _jsx("p", { class: "text-body-secondary mb-0", children: "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Nullam id dolor id nibh ultricies vehicula ut id elit. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit." })] }) })] }) }));
7
+ }
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** @jsxImportSource jsx-htmx */
2
+ import type { HtmlRenderable } from "@betterportal/framework";
3
+ import type { ResponseData } from "../index.js";
4
+ export declare function render(data: ResponseData): HtmlRenderable;
5
+ //# sourceMappingURL=showcase-cards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-cards.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-cards.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CA6GzD"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
2
+ /*
3
+ Showcase: Cards & Containers
4
+ */
5
+ export function render(data) {
6
+ return (_jsx("section", { class: "container-fluid px-0", children: _jsxs("div", { class: "d-flex flex-column gap-4", children: [_jsxs("div", { children: [_jsx("h2", { class: "h4 mb-1", children: "Cards & Containers" }), _jsx("p", { class: "text-body-secondary", children: "Standard Bootstrap card variants styled with glass neumorphic defaults." })] }), _jsxs("div", { class: "row row-cols-1 row-cols-md-3 g-3", children: [_jsx("div", { class: "col", children: _jsx("div", { class: "card h-100", children: _jsxs("div", { class: "card-body", children: [_jsx("h5", { class: "card-title", children: "Basic Card" }), _jsx("p", { class: "card-text text-body-secondary", children: "Default card with no extra classes. Gets glass treatment automatically." })] }) }) }), _jsx("div", { class: "col", children: _jsxs("div", { class: "card h-100", children: [_jsx("div", { class: "card-header", children: "With Header" }), _jsx("div", { class: "card-body", children: _jsx("p", { class: "card-text text-body-secondary", children: "Card header and footer get transparent background with subtle separators." }) }), _jsx("div", { class: "card-footer text-body-secondary", children: "Footer content" })] }) }), _jsx("div", { class: "col", children: _jsx("div", { class: "card h-100", children: _jsxs("div", { class: "card-body", children: [_jsx("h5", { class: "card-title", children: "Action Card" }), _jsx("p", { class: "card-text text-body-secondary", children: "Card with primary action button at the bottom." }), _jsx("a", { href: "javascript:;", class: "btn btn-primary btn-sm", children: "Take Action" })] }) }) })] }), _jsx("h3", { class: "h5 mb-0", children: "Stat Cards" }), _jsx("div", { class: "row row-cols-1 row-cols-sm-2 row-cols-lg-4 g-3", children: [
7
+ { label: "Total Users", value: "12,482", change: "+14.2%", positive: true },
8
+ { label: "Revenue", value: "$48,290", change: "+8.1%", positive: true },
9
+ { label: "Bounce Rate", value: "23.4%", change: "+3.1%", positive: false },
10
+ { label: "Avg. Response", value: "124ms", change: "-12%", positive: true }
11
+ ].map((stat) => (_jsx("div", { class: "col", children: _jsx("div", { class: "card h-100", children: _jsxs("div", { class: "card-body", children: [_jsx("div", { class: "small text-body-secondary mb-1", children: stat.label }), _jsx("div", { class: "h4 mb-1", children: stat.value }), _jsxs("div", { class: `small ${stat.positive ? "text-success" : "text-danger"}`, children: [stat.positive ? "^" : "v", " ", stat.change] })] }) }) }))) }), _jsx("h3", { class: "h5 mb-0", children: "Nested Content" }), _jsx("div", { class: "card", children: _jsxs("div", { class: "card-body", children: [_jsx("h5", { class: "card-title mb-3", children: "Parent Container" }), _jsxs("div", { class: "row g-3", children: [_jsx("div", { class: "col-md-6", children: _jsx("div", { class: "card", children: _jsxs("div", { class: "card-body", children: [_jsx("h6", { class: "card-title", children: "Nested Card A" }), _jsx("p", { class: "card-text text-body-secondary mb-0", children: "Cards inside cards maintain glass depth." })] }) }) }), _jsx("div", { class: "col-md-6", children: _jsx("div", { class: "card", children: _jsxs("div", { class: "card-body", children: [_jsx("h6", { class: "card-title", children: "Nested Card B" }), _jsx("p", { class: "card-text text-body-secondary mb-0", children: "Consistent styling regardless of nesting level." })] }) }) })] })] }) }), _jsx("h3", { class: "h5 mb-0", children: "Horizontal Layout" }), _jsx("div", { class: "card", children: _jsxs("div", { class: "row g-0", children: [_jsx("div", { class: "col-md-3 d-flex align-items-center justify-content-center p-4", children: _jsx("div", { class: "rounded-circle bg-primary text-white d-flex align-items-center justify-content-center", style: "width:4rem;height:4rem;font-size:1.5rem;", children: "BP" }) }), _jsx("div", { class: "col-md-9", children: _jsxs("div", { class: "card-body", children: [_jsx("h5", { class: "card-title", children: "Horizontal Card" }), _jsx("p", { class: "card-text text-body-secondary", children: "Useful for profile cards, feature highlights, or list items that need more visual weight." }), _jsx("p", { class: "card-text", children: _jsx("small", { class: "text-body-secondary", children: "Last updated 3 mins ago" }) })] }) })] }) })] }) }));
12
+ }
13
+ //# sourceMappingURL=showcase-cards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-cards.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-cards.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** @jsxImportSource jsx-htmx */
2
+ import type { HtmlRenderable } from "@betterportal/framework";
3
+ import type { ResponseData } from "../index.js";
4
+ export declare function render(data: ResponseData, page?: number): HtmlRenderable;
5
+ //# sourceMappingURL=showcase-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-data.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_theme.bootstrap1/showcase-data.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAwGhD,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,SAAI,GAAG,cAAc,CAoGnE"}