@adaas/are-html 0.0.12 → 0.0.13

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 (108) hide show
  1. package/dist/browser/index.d.mts +19 -4
  2. package/dist/browser/index.mjs +104 -7
  3. package/dist/browser/index.mjs.map +1 -1
  4. package/dist/node/{AreBinding.attribute-C6JasbJL.d.ts → AreBinding.attribute-Bm5LlOyE.d.ts} +7 -0
  5. package/dist/node/{AreBinding.attribute-C6qrxN8K.d.mts → AreBinding.attribute-doUvtOjc.d.mts} +7 -0
  6. package/dist/node/attributes/AreBinding.attribute.d.mts +1 -1
  7. package/dist/node/attributes/AreBinding.attribute.d.ts +1 -1
  8. package/dist/node/attributes/AreDirective.attribute.d.mts +1 -1
  9. package/dist/node/attributes/AreDirective.attribute.d.ts +1 -1
  10. package/dist/node/attributes/AreEvent.attribute.d.mts +1 -1
  11. package/dist/node/attributes/AreEvent.attribute.d.ts +1 -1
  12. package/dist/node/attributes/AreStatic.attribute.d.mts +1 -1
  13. package/dist/node/attributes/AreStatic.attribute.d.ts +1 -1
  14. package/dist/node/directives/AreDirectiveFor.directive.d.mts +1 -1
  15. package/dist/node/directives/AreDirectiveFor.directive.d.ts +1 -1
  16. package/dist/node/directives/AreDirectiveIf.directive.d.mts +1 -1
  17. package/dist/node/directives/AreDirectiveIf.directive.d.ts +1 -1
  18. package/dist/node/engine/AreHTML.compiler.d.mts +8 -1
  19. package/dist/node/engine/AreHTML.compiler.d.ts +8 -1
  20. package/dist/node/engine/AreHTML.compiler.js +17 -0
  21. package/dist/node/engine/AreHTML.compiler.js.map +1 -1
  22. package/dist/node/engine/AreHTML.compiler.mjs +17 -0
  23. package/dist/node/engine/AreHTML.compiler.mjs.map +1 -1
  24. package/dist/node/engine/AreHTML.context.js +2 -2
  25. package/dist/node/engine/AreHTML.context.js.map +1 -1
  26. package/dist/node/engine/AreHTML.context.mjs +3 -3
  27. package/dist/node/engine/AreHTML.context.mjs.map +1 -1
  28. package/dist/node/engine/AreHTML.interpreter.d.mts +3 -0
  29. package/dist/node/engine/AreHTML.interpreter.d.ts +3 -0
  30. package/dist/node/engine/AreHTML.interpreter.js +44 -0
  31. package/dist/node/engine/AreHTML.interpreter.js.map +1 -1
  32. package/dist/node/engine/AreHTML.interpreter.mjs +44 -0
  33. package/dist/node/engine/AreHTML.interpreter.mjs.map +1 -1
  34. package/dist/node/engine/AreHTML.lifecycle.d.mts +2 -1
  35. package/dist/node/engine/AreHTML.lifecycle.d.ts +2 -1
  36. package/dist/node/engine/AreHTML.lifecycle.js +13 -1
  37. package/dist/node/engine/AreHTML.lifecycle.js.map +1 -1
  38. package/dist/node/engine/AreHTML.lifecycle.mjs +13 -1
  39. package/dist/node/engine/AreHTML.lifecycle.mjs.map +1 -1
  40. package/dist/node/engine/AreHTML.tokenizer.d.mts +1 -1
  41. package/dist/node/engine/AreHTML.tokenizer.d.ts +1 -1
  42. package/dist/node/engine/AreHTML.transformer.d.mts +1 -1
  43. package/dist/node/engine/AreHTML.transformer.d.ts +1 -1
  44. package/dist/node/index.d.mts +1 -1
  45. package/dist/node/index.d.ts +1 -1
  46. package/dist/node/instructions/AreHTML.instructions.types.d.mts +2 -4
  47. package/dist/node/instructions/AreHTML.instructions.types.d.ts +2 -4
  48. package/dist/node/lib/AreDirective/AreDirective.component.d.mts +1 -1
  49. package/dist/node/lib/AreDirective/AreDirective.component.d.ts +1 -1
  50. package/dist/node/lib/AreDirective/AreDirective.types.d.mts +1 -1
  51. package/dist/node/lib/AreDirective/AreDirective.types.d.ts +1 -1
  52. package/dist/node/lib/AreHTML/AreHTML.tokenizer.d.mts +1 -1
  53. package/dist/node/lib/AreHTML/AreHTML.tokenizer.d.ts +1 -1
  54. package/dist/node/lib/AreHTMLAttribute/AreHTML.attribute.d.mts +1 -1
  55. package/dist/node/lib/AreHTMLAttribute/AreHTML.attribute.d.ts +1 -1
  56. package/dist/node/lib/AreHTMLNode/AreHTMLNode.d.mts +1 -1
  57. package/dist/node/lib/AreHTMLNode/AreHTMLNode.d.ts +1 -1
  58. package/dist/node/lib/AreHTMLNode/AreHTMLNode.js +14 -0
  59. package/dist/node/lib/AreHTMLNode/AreHTMLNode.js.map +1 -1
  60. package/dist/node/lib/AreHTMLNode/AreHTMLNode.mjs +14 -0
  61. package/dist/node/lib/AreHTMLNode/AreHTMLNode.mjs.map +1 -1
  62. package/dist/node/lib/AreRoot/AreRoot.component.js +16 -3
  63. package/dist/node/lib/AreRoot/AreRoot.component.js.map +1 -1
  64. package/dist/node/lib/AreRoot/AreRoot.component.mjs +16 -3
  65. package/dist/node/lib/AreRoot/AreRoot.component.mjs.map +1 -1
  66. package/dist/node/nodes/AreComment.d.mts +1 -1
  67. package/dist/node/nodes/AreComment.d.ts +1 -1
  68. package/dist/node/nodes/AreComponent.d.mts +1 -1
  69. package/dist/node/nodes/AreComponent.d.ts +1 -1
  70. package/dist/node/nodes/AreInterpolation.d.mts +1 -1
  71. package/dist/node/nodes/AreInterpolation.d.ts +1 -1
  72. package/dist/node/nodes/AreRoot.d.mts +1 -1
  73. package/dist/node/nodes/AreRoot.d.ts +1 -1
  74. package/dist/node/nodes/AreText.d.mts +1 -1
  75. package/dist/node/nodes/AreText.d.ts +1 -1
  76. package/examples/component-styles/concept.ts +41 -0
  77. package/examples/component-styles/containers/UI.container.ts +122 -0
  78. package/examples/component-styles/dist/index.html +25 -0
  79. package/examples/{jumpstart/dist/mor90p6y-0plg7g.js → component-styles/dist/mpq29j47-owas2v.js} +8326 -5942
  80. package/examples/component-styles/public/index.html +25 -0
  81. package/examples/component-styles/src/components/AppPage.component.ts +74 -0
  82. package/examples/component-styles/src/components/TheAlert.component.ts +81 -0
  83. package/examples/component-styles/src/components/TheButton.component.ts +71 -0
  84. package/examples/component-styles/src/components/TheCard.component.ts +64 -0
  85. package/examples/component-styles/src/concept.ts +70 -0
  86. package/examples/dashboard/dist/index.html +1 -1
  87. package/examples/dashboard/dist/{mpmt0gys-1r9rcu.js → mppzjw80-9gwa4h.js} +1223 -863
  88. package/examples/jumpstart/dist/index.html +1 -1
  89. package/examples/jumpstart/dist/{mor90p7p-1898bz.js → mppwx932-xbmb0x.js} +4215 -1984
  90. package/examples/signal-routing/concept.ts +41 -0
  91. package/examples/signal-routing/containers/UI.container.ts +126 -0
  92. package/examples/signal-routing/dist/index.html +18 -0
  93. package/examples/signal-routing/dist/mpq6u1wz-2pkqe2.js +14002 -0
  94. package/examples/signal-routing/public/index.html +18 -0
  95. package/examples/signal-routing/src/components/AboutPage.component.ts +74 -0
  96. package/examples/signal-routing/src/components/AppShell.component.ts +42 -0
  97. package/examples/signal-routing/src/components/HomePage.component.ts +76 -0
  98. package/examples/signal-routing/src/components/NavBar.component.ts +104 -0
  99. package/examples/signal-routing/src/components/SettingsPage.component.ts +98 -0
  100. package/examples/signal-routing/src/concept.ts +114 -0
  101. package/package.json +7 -5
  102. package/src/engine/AreHTML.compiler.ts +24 -7
  103. package/src/engine/AreHTML.context.ts +6 -4
  104. package/src/engine/AreHTML.interpreter.ts +54 -0
  105. package/src/engine/AreHTML.lifecycle.ts +16 -12
  106. package/src/instructions/AreHTML.instructions.types.ts +2 -4
  107. package/src/lib/AreHTMLNode/AreHTMLNode.ts +15 -0
  108. package/src/lib/AreRoot/AreRoot.component.ts +31 -7
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>ARE – Component Styles</title>
7
+ <style>
8
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
9
+
10
+ body {
11
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
12
+ background: #f4f6f9;
13
+ min-height: 100vh;
14
+ display: flex;
15
+ align-items: center;
16
+ justify-content: center;
17
+ }
18
+ </style>
19
+ </head>
20
+ <body>
21
+ <are-root id="app" default="app-page"></are-root>
22
+
23
+ <script type="module" src="/{{BUNDLE_ID}}.js"></script>
24
+ </body>
25
+ </html>
@@ -0,0 +1,74 @@
1
+ import { A_Caller, A_Inject } from "@adaas/a-concept";
2
+ import { Are, AreNode, AreStore } from "@adaas/are";
3
+ import { AreHTMLNode } from "@adaas/are-html/node";
4
+
5
+
6
+ /**
7
+ * AppPage — the shell component mounted at <are-root id="app">.
8
+ * Owns the page layout styles and composes TheCard, TheButton, TheAlert.
9
+ */
10
+ export class AppPage extends Are {
11
+
12
+ @Are.Styles
13
+ styles(
14
+ @A_Inject(A_Caller) node: AreHTMLNode,
15
+ ): void {
16
+ node.setStyles(`
17
+ .app-page {
18
+ display: flex;
19
+ flex-direction: column;
20
+ align-items: center;
21
+ gap: 24px;
22
+ padding: 48px 24px;
23
+ min-height: 100vh;
24
+ }
25
+
26
+ .app-page__heading {
27
+ font-size: 1.9rem;
28
+ font-weight: 700;
29
+ color: #1a1a2e;
30
+ text-align: center;
31
+ }
32
+
33
+ .app-page__sub {
34
+ font-size: 1rem;
35
+ color: #6b7280;
36
+ text-align: center;
37
+ max-width: 500px;
38
+ }
39
+
40
+ .app-page__row {
41
+ display: flex;
42
+ gap: 12px;
43
+ flex-wrap: wrap;
44
+ justify-content: center;
45
+ }
46
+ `);
47
+ }
48
+
49
+ @Are.Template
50
+ template(
51
+ @A_Inject(A_Caller) node: AreNode,
52
+ ): void {
53
+ node.setContent(`
54
+ <div class="app-page">
55
+ <h1 class="app-page__heading">@Are.Styles Pipeline</h1>
56
+ <p class="app-page__sub">
57
+ Each component below owns its CSS — injected as a scoped
58
+ &lt;style&gt; block in &lt;head&gt; when the component mounts.
59
+ </p>
60
+
61
+ <the-card></the-card>
62
+
63
+ <the-alert :type="'success'" :message="'Styles injected from TheAlert component ✓'"></the-alert>
64
+ <the-alert :type="'warning'" :message="'A second TheAlert with a different type variant'"></the-alert>
65
+
66
+ <div class="app-page__row">
67
+ <the-button :label="'Primary'" :variant="'primary'"></the-button>
68
+ <the-button :label="'Secondary'" :variant="'secondary'"></the-button>
69
+ <the-button :label="'Danger'" :variant="'danger'"></the-button>
70
+ </div>
71
+ </div>
72
+ `);
73
+ }
74
+ }
@@ -0,0 +1,81 @@
1
+ import { A_Caller, A_Inject } from "@adaas/a-concept";
2
+ import { Are, AreNode, AreStore } from "@adaas/are";
3
+ import { AreHTMLNode } from "@adaas/are-html/node";
4
+
5
+
6
+ /**
7
+ * TheAlert — a styled status banner.
8
+ * Shows how @Are.Styles can produce conditional-looking CSS
9
+ * by injecting all variant rules and switching via class.
10
+ */
11
+ export class TheAlert extends Are {
12
+
13
+ props: Record<string, any> = {
14
+ type: {
15
+ type: 'string',
16
+ default: 'info', // 'info' | 'success' | 'warning' | 'error'
17
+ },
18
+ message: {
19
+ type: 'string',
20
+ default: '',
21
+ },
22
+ };
23
+
24
+ @Are.Styles
25
+ styles(
26
+ @A_Inject(A_Caller) node: AreHTMLNode,
27
+ ): void {
28
+ node.setStyles(`
29
+ .are-alert {
30
+ display: flex;
31
+ align-items: flex-start;
32
+ gap: 12px;
33
+ padding: 14px 18px;
34
+ border-radius: 8px;
35
+ font-size: 0.9rem;
36
+ line-height: 1.5;
37
+ border-left: 4px solid transparent;
38
+ }
39
+
40
+ .are-alert__icon { font-size: 1.1rem; flex-shrink: 0; }
41
+ .are-alert__text { flex: 1; }
42
+
43
+ .are-alert--info { background: #eff6ff; border-color: #3b82f6; color: #1e40af; }
44
+ .are-alert--success { background: #f0fdf4; border-color: #22c55e; color: #166534; }
45
+ .are-alert--warning { background: #fffbeb; border-color: #f59e0b; color: #92400e; }
46
+ .are-alert--error { background: #fef2f2; border-color: #ef4444; color: #991b1b; }
47
+ `);
48
+ }
49
+
50
+ @Are.Template
51
+ template(
52
+ @A_Inject(A_Caller) node: AreNode,
53
+ @A_Inject(AreStore) store: AreStore,
54
+ ): void {
55
+ node.setContent(`
56
+ <div class="are-alert are-alert--{{type}}">
57
+ <span class="are-alert__icon">{{icon}}</span>
58
+ <span class="are-alert__text">{{message}}</span>
59
+ </div>
60
+ `);
61
+ }
62
+
63
+ @Are.Data
64
+ data(
65
+ @A_Inject(A_Caller) node: AreNode,
66
+ @A_Inject(AreStore) store: AreStore,
67
+ ): void {
68
+ const type = store.get('type') ?? 'info';
69
+ const icons: Record<string, string> = {
70
+ info: 'ℹ️',
71
+ success: '✅',
72
+ warning: '⚠️',
73
+ error: '❌',
74
+ };
75
+ store.set({
76
+ type,
77
+ icon: icons[type] ?? icons.info,
78
+ message: store.get('message') ?? 'This is an alert message.',
79
+ });
80
+ }
81
+ }
@@ -0,0 +1,71 @@
1
+ import { A_Caller, A_Inject } from "@adaas/a-concept";
2
+ import { Are, AreNode, AreStore } from "@adaas/are";
3
+ import { AreHTMLNode } from "@adaas/are-html/node";
4
+
5
+
6
+ /**
7
+ * TheButton — a styled button component.
8
+ * Uses @Are.Styles to scope its own CSS so it never leaks into other components.
9
+ */
10
+ export class TheButton extends Are {
11
+
12
+ props: Record<string, any> = {
13
+ label: {
14
+ type: 'string',
15
+ default: 'Click me',
16
+ },
17
+ variant: {
18
+ type: 'string',
19
+ default: 'primary', // 'primary' | 'secondary' | 'danger'
20
+ },
21
+ };
22
+
23
+ @Are.Styles
24
+ styles(
25
+ @A_Inject(A_Caller) node: AreHTMLNode,
26
+ ): void {
27
+ node.setStyles(`
28
+ .are-btn {
29
+ display: inline-flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ padding: 10px 22px;
33
+ font-size: 0.9rem;
34
+ font-weight: 600;
35
+ border: none;
36
+ border-radius: 8px;
37
+ cursor: pointer;
38
+ transition: opacity .15s, transform .1s;
39
+ letter-spacing: 0.02em;
40
+ }
41
+
42
+ .are-btn:hover { opacity: .88; }
43
+ .are-btn:active { transform: scale(.97); }
44
+
45
+ .are-btn--primary { background: #4f46e5; color: #fff; }
46
+ .are-btn--secondary { background: #e5e7eb; color: #374151; }
47
+ .are-btn--danger { background: #ef4444; color: #fff; }
48
+ `);
49
+ }
50
+
51
+ @Are.Template
52
+ template(
53
+ @A_Inject(A_Caller) node: AreNode,
54
+ @A_Inject(AreStore) store: AreStore,
55
+ ): void {
56
+ node.setContent(`
57
+ <button class="are-btn are-btn--{{variant}}">{{label}}</button>
58
+ `);
59
+ }
60
+
61
+ @Are.Data
62
+ data(
63
+ @A_Inject(A_Caller) node: AreNode,
64
+ @A_Inject(AreStore) store: AreStore,
65
+ ): void {
66
+ store.set({
67
+ label: store.get('label') ?? 'Click Me',
68
+ variant: store.get('variant') ?? 'primary',
69
+ });
70
+ }
71
+ }
@@ -0,0 +1,64 @@
1
+ import { A_Caller, A_Inject } from "@adaas/a-concept";
2
+ import { Are, AreNode, AreStore } from "@adaas/are";
3
+ import { AreHTMLNode } from "@adaas/are-html/node";
4
+
5
+
6
+ /**
7
+ * TheCard — a styled card container.
8
+ * Demonstrates @Are.Styles injecting a <style> block into <head>.
9
+ */
10
+ export class TheCard extends Are {
11
+
12
+ @Are.Styles
13
+ styles(
14
+ @A_Inject(A_Caller) node: AreHTMLNode,
15
+ ): void {
16
+ node.setStyles(`
17
+ .are-card {
18
+ background: #ffffff;
19
+ border-radius: 12px;
20
+ box-shadow: 0 2px 12px rgba(0, 0, 0, .08);
21
+ padding: 24px 28px;
22
+ max-width: 480px;
23
+ width: 100%;
24
+ }
25
+
26
+ .are-card__title {
27
+ font-size: 1.25rem;
28
+ font-weight: 600;
29
+ color: #1a1a2e;
30
+ margin-bottom: 8px;
31
+ }
32
+
33
+ .are-card__body {
34
+ font-size: 0.95rem;
35
+ color: #5a5a7a;
36
+ line-height: 1.6;
37
+ }
38
+ `);
39
+ }
40
+
41
+ @Are.Template
42
+ template(
43
+ @A_Inject(A_Caller) node: AreNode,
44
+ @A_Inject(AreStore) store: AreStore,
45
+ ): void {
46
+ node.setContent(`
47
+ <div class="are-card">
48
+ <div class="are-card__title">{{title}}</div>
49
+ <div class="are-card__body">{{body}}</div>
50
+ </div>
51
+ `);
52
+ }
53
+
54
+ @Are.Data
55
+ data(
56
+ @A_Inject(A_Caller) node: AreNode,
57
+ @A_Inject(AreStore) store: AreStore,
58
+ ): void {
59
+ store.set({
60
+ title: 'Component Styles Demo',
61
+ body: 'Each component below injects its own <style> block into the document <head> through the @Are.Styles pipeline.',
62
+ });
63
+ }
64
+ }
@@ -0,0 +1,70 @@
1
+ import { A_Concept, A_Context } from "@adaas/a-concept";
2
+ import { A_Config, ConfigReader } from "@adaas/a-utils/a-config";
3
+ import { A_Logger, A_LOGGER_ENV_KEYS } from "@adaas/a-utils/a-logger";
4
+ import { A_SignalBus, A_SignalState } from "@adaas/a-utils/a-signal";
5
+ import { A_Polyfill } from "@adaas/a-utils/a-polyfill";
6
+ import { AreContainer, AreInit, AreRoute } from "@adaas/are";
7
+ import { AreRoot, AreHTMLEngine, AreHTMLEngineContext, AreDirectiveIf, AreDirectiveFor } from "src";
8
+
9
+ // ── Components ─────────────────────────────────────────────────────────────
10
+ import { AppPage } from "./components/AppPage.component";
11
+ import { TheCard } from "./components/TheCard.component";
12
+ import { TheButton } from "./components/TheButton.component";
13
+ import { TheAlert } from "./components/TheAlert.component";
14
+
15
+
16
+ (async () => {
17
+ try {
18
+ const container = new AreContainer({
19
+ name: 'ARE Component Styles',
20
+ components: [
21
+ // ── UI Components ─────────────────────────────────────────
22
+ AppPage,
23
+ TheCard,
24
+ TheButton,
25
+ TheAlert,
26
+ // ── Directives ────────────────────────────────────────────
27
+ AreDirectiveIf,
28
+ AreDirectiveFor,
29
+ // ── Engine ────────────────────────────────────────────────
30
+ A_SignalBus,
31
+ AreRoot,
32
+ ConfigReader,
33
+ AreHTMLEngine,
34
+ A_Logger,
35
+ ],
36
+ entities: [
37
+ AreInit,
38
+ AreRoute,
39
+ ],
40
+ fragments: [
41
+ new AreHTMLEngineContext({ container: document }),
42
+ new A_SignalState([AreRoute]),
43
+ new A_Config({
44
+ defaults: {
45
+ [A_LOGGER_ENV_KEYS.LOG_LEVEL]: 'debug',
46
+ },
47
+ }),
48
+ ],
49
+ });
50
+
51
+ const concept = new A_Concept({
52
+ name: 'adaas-are-example-component-styles',
53
+ fragments: [
54
+ new A_Config({
55
+ variables: ['CONFIG_VERBOSE', 'DEV_MODE'] as const,
56
+ defaults: { CONFIG_VERBOSE: true, DEV_MODE: true },
57
+ }),
58
+ ],
59
+ components: [A_Logger, ConfigReader, A_Polyfill],
60
+ containers: [container],
61
+ });
62
+
63
+ await concept.load();
64
+ await concept.start();
65
+
66
+ } catch (error) {
67
+ const logger = A_Context.root.resolve<A_Logger>(A_Logger)!;
68
+ logger.error(error);
69
+ }
70
+ })();
@@ -16,7 +16,7 @@
16
16
  <dashboard-app></dashboard-app>
17
17
  </are-root>
18
18
 
19
- <script type="module" src="./mpmt0gys-1r9rcu.js"></script>
19
+ <script type="module" src="./mppzjw80-9gwa4h.js"></script>
20
20
  </body>
21
21
 
22
22
  </html>