@adaas/are-html 0.0.11 → 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 (113) hide show
  1. package/dist/browser/index.d.mts +19 -4
  2. package/dist/browser/index.mjs +115 -8
  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/AreDirectiveFor.directive.js +11 -1
  17. package/dist/node/directives/AreDirectiveFor.directive.js.map +1 -1
  18. package/dist/node/directives/AreDirectiveFor.directive.mjs +11 -1
  19. package/dist/node/directives/AreDirectiveFor.directive.mjs.map +1 -1
  20. package/dist/node/directives/AreDirectiveIf.directive.d.mts +1 -1
  21. package/dist/node/directives/AreDirectiveIf.directive.d.ts +1 -1
  22. package/dist/node/engine/AreHTML.compiler.d.mts +8 -1
  23. package/dist/node/engine/AreHTML.compiler.d.ts +8 -1
  24. package/dist/node/engine/AreHTML.compiler.js +17 -0
  25. package/dist/node/engine/AreHTML.compiler.js.map +1 -1
  26. package/dist/node/engine/AreHTML.compiler.mjs +17 -0
  27. package/dist/node/engine/AreHTML.compiler.mjs.map +1 -1
  28. package/dist/node/engine/AreHTML.context.js +2 -2
  29. package/dist/node/engine/AreHTML.context.js.map +1 -1
  30. package/dist/node/engine/AreHTML.context.mjs +3 -3
  31. package/dist/node/engine/AreHTML.context.mjs.map +1 -1
  32. package/dist/node/engine/AreHTML.interpreter.d.mts +3 -0
  33. package/dist/node/engine/AreHTML.interpreter.d.ts +3 -0
  34. package/dist/node/engine/AreHTML.interpreter.js +44 -0
  35. package/dist/node/engine/AreHTML.interpreter.js.map +1 -1
  36. package/dist/node/engine/AreHTML.interpreter.mjs +44 -0
  37. package/dist/node/engine/AreHTML.interpreter.mjs.map +1 -1
  38. package/dist/node/engine/AreHTML.lifecycle.d.mts +2 -1
  39. package/dist/node/engine/AreHTML.lifecycle.d.ts +2 -1
  40. package/dist/node/engine/AreHTML.lifecycle.js +13 -1
  41. package/dist/node/engine/AreHTML.lifecycle.js.map +1 -1
  42. package/dist/node/engine/AreHTML.lifecycle.mjs +13 -1
  43. package/dist/node/engine/AreHTML.lifecycle.mjs.map +1 -1
  44. package/dist/node/engine/AreHTML.tokenizer.d.mts +1 -1
  45. package/dist/node/engine/AreHTML.tokenizer.d.ts +1 -1
  46. package/dist/node/engine/AreHTML.transformer.d.mts +1 -1
  47. package/dist/node/engine/AreHTML.transformer.d.ts +1 -1
  48. package/dist/node/index.d.mts +1 -1
  49. package/dist/node/index.d.ts +1 -1
  50. package/dist/node/instructions/AreHTML.instructions.types.d.mts +2 -4
  51. package/dist/node/instructions/AreHTML.instructions.types.d.ts +2 -4
  52. package/dist/node/lib/AreDirective/AreDirective.component.d.mts +1 -1
  53. package/dist/node/lib/AreDirective/AreDirective.component.d.ts +1 -1
  54. package/dist/node/lib/AreDirective/AreDirective.types.d.mts +1 -1
  55. package/dist/node/lib/AreDirective/AreDirective.types.d.ts +1 -1
  56. package/dist/node/lib/AreHTML/AreHTML.tokenizer.d.mts +1 -1
  57. package/dist/node/lib/AreHTML/AreHTML.tokenizer.d.ts +1 -1
  58. package/dist/node/lib/AreHTMLAttribute/AreHTML.attribute.d.mts +1 -1
  59. package/dist/node/lib/AreHTMLAttribute/AreHTML.attribute.d.ts +1 -1
  60. package/dist/node/lib/AreHTMLNode/AreHTMLNode.d.mts +1 -1
  61. package/dist/node/lib/AreHTMLNode/AreHTMLNode.d.ts +1 -1
  62. package/dist/node/lib/AreHTMLNode/AreHTMLNode.js +14 -0
  63. package/dist/node/lib/AreHTMLNode/AreHTMLNode.js.map +1 -1
  64. package/dist/node/lib/AreHTMLNode/AreHTMLNode.mjs +14 -0
  65. package/dist/node/lib/AreHTMLNode/AreHTMLNode.mjs.map +1 -1
  66. package/dist/node/lib/AreRoot/AreRoot.component.js +16 -3
  67. package/dist/node/lib/AreRoot/AreRoot.component.js.map +1 -1
  68. package/dist/node/lib/AreRoot/AreRoot.component.mjs +16 -3
  69. package/dist/node/lib/AreRoot/AreRoot.component.mjs.map +1 -1
  70. package/dist/node/nodes/AreComment.d.mts +1 -1
  71. package/dist/node/nodes/AreComment.d.ts +1 -1
  72. package/dist/node/nodes/AreComponent.d.mts +1 -1
  73. package/dist/node/nodes/AreComponent.d.ts +1 -1
  74. package/dist/node/nodes/AreInterpolation.d.mts +1 -1
  75. package/dist/node/nodes/AreInterpolation.d.ts +1 -1
  76. package/dist/node/nodes/AreRoot.d.mts +1 -1
  77. package/dist/node/nodes/AreRoot.d.ts +1 -1
  78. package/dist/node/nodes/AreText.d.mts +1 -1
  79. package/dist/node/nodes/AreText.d.ts +1 -1
  80. package/examples/component-styles/concept.ts +41 -0
  81. package/examples/component-styles/containers/UI.container.ts +122 -0
  82. package/examples/component-styles/dist/index.html +25 -0
  83. package/examples/{jumpstart/dist/mor90p6y-0plg7g.js → component-styles/dist/mpq29j47-owas2v.js} +8326 -5942
  84. package/examples/component-styles/public/index.html +25 -0
  85. package/examples/component-styles/src/components/AppPage.component.ts +74 -0
  86. package/examples/component-styles/src/components/TheAlert.component.ts +81 -0
  87. package/examples/component-styles/src/components/TheButton.component.ts +71 -0
  88. package/examples/component-styles/src/components/TheCard.component.ts +64 -0
  89. package/examples/component-styles/src/concept.ts +70 -0
  90. package/examples/dashboard/dist/index.html +1 -1
  91. package/examples/dashboard/dist/{mpmt0gys-1r9rcu.js → mppzjw80-9gwa4h.js} +1223 -863
  92. package/examples/jumpstart/dist/index.html +1 -1
  93. package/examples/jumpstart/dist/{mor90p7p-1898bz.js → mppwx932-xbmb0x.js} +4215 -1984
  94. package/examples/signal-routing/concept.ts +41 -0
  95. package/examples/signal-routing/containers/UI.container.ts +126 -0
  96. package/examples/signal-routing/dist/index.html +18 -0
  97. package/examples/signal-routing/dist/mpq6u1wz-2pkqe2.js +14002 -0
  98. package/examples/signal-routing/public/index.html +18 -0
  99. package/examples/signal-routing/src/components/AboutPage.component.ts +74 -0
  100. package/examples/signal-routing/src/components/AppShell.component.ts +42 -0
  101. package/examples/signal-routing/src/components/HomePage.component.ts +76 -0
  102. package/examples/signal-routing/src/components/NavBar.component.ts +104 -0
  103. package/examples/signal-routing/src/components/SettingsPage.component.ts +98 -0
  104. package/examples/signal-routing/src/concept.ts +114 -0
  105. package/package.json +7 -5
  106. package/src/directives/AreDirectiveFor.directive.ts +12 -1
  107. package/src/engine/AreHTML.compiler.ts +24 -7
  108. package/src/engine/AreHTML.context.ts +6 -4
  109. package/src/engine/AreHTML.interpreter.ts +54 -0
  110. package/src/engine/AreHTML.lifecycle.ts +16 -12
  111. package/src/instructions/AreHTML.instructions.types.ts +2 -4
  112. package/src/lib/AreHTMLNode/AreHTMLNode.ts +15 -0
  113. 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>