@origostudio/origo-design 0.0.37 → 0.0.39

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 (137) hide show
  1. package/CHANGELOG.md +3 -2
  2. package/dist/packages/angular-renderer/CHANGELOG.md +21 -0
  3. package/dist/packages/angular-renderer/package.json +7 -6
  4. package/dist/packages/angular-renderer/src/adapters/web/experience-adapter.service.d.ts +2 -0
  5. package/dist/packages/angular-renderer/src/adapters/web/experience-adapter.service.js +11 -0
  6. package/dist/packages/angular-renderer/src/adapters/web/experience-adapter.service.js.map +1 -1
  7. package/dist/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.js.map +1 -1
  8. package/dist/packages/angular-renderer/src/components/primitives/chip/chip.component.js.map +1 -1
  9. package/dist/packages/angular-renderer/src/components/primitives/switch/switch.component.js.map +1 -1
  10. package/dist/packages/angular-renderer/src/devtools/devtools-bridge.js +2 -0
  11. package/dist/packages/angular-renderer/src/devtools/devtools-bridge.js.map +1 -1
  12. package/dist/packages/angular-renderer/src/index.d.ts +1 -0
  13. package/dist/packages/angular-renderer/src/index.js +1 -0
  14. package/dist/packages/angular-renderer/src/index.js.map +1 -1
  15. package/dist/packages/angular-renderer/src/lib/primitives.provider.js +26 -20
  16. package/dist/packages/angular-renderer/src/lib/primitives.provider.js.map +1 -1
  17. package/dist/packages/cli/CHANGELOG.md +8 -0
  18. package/dist/packages/cli/package.json +2 -2
  19. package/dist/packages/cli/package.json.bak +2 -2
  20. package/dist/packages/core/CHANGELOG.md +14 -0
  21. package/dist/packages/core/package.json +2 -2
  22. package/dist/packages/core/package.json.bak +2 -2
  23. package/dist/packages/design-tokens/CHANGELOG.md +8 -0
  24. package/dist/packages/design-tokens/package.json +1 -1
  25. package/dist/packages/playground/browser/{chunk-iSLqhP12.js → chunk-B1z-uVFi.js} +1 -1
  26. package/dist/packages/playground/browser/{chunk-BxusNwwt.js → chunk-BGZXpmBQ.js} +1 -1
  27. package/dist/packages/playground/browser/{chunk-B0HlAWSR.js → chunk-ByrswSrM.js} +1 -1
  28. package/dist/packages/playground/browser/{chunk-rK1aqCb7.js → chunk-CFbPXTNr.js} +1 -1
  29. package/dist/packages/playground/browser/{chunk-Dd9ht4SU.js → chunk-CSecAR9q.js} +1 -1
  30. package/dist/packages/playground/browser/{chunk-BkTn1FbH.js → chunk-D-8Zr5zg.js} +1 -1
  31. package/dist/packages/playground/browser/{chunk-DbylCYBP.js → chunk-D2kcCG-o.js} +1 -1
  32. package/dist/packages/playground/browser/{chunk-zg5PqW0l.js → chunk-DQx5lQqG.js} +1 -1
  33. package/dist/packages/playground/browser/{chunk-DXxUFvGw.js → chunk-Dac2dp5T.js} +1 -1
  34. package/dist/packages/playground/browser/{chunk-CXHFI87Z.js → chunk-DiZkmwKl.js} +1 -1
  35. package/dist/packages/playground/browser/{chunk-BI1AmKI_.js → chunk-DwU-a89u.js} +1 -1
  36. package/dist/packages/playground/browser/{chunk-D2bm1B8y.js → chunk-JF8ksHJn.js} +1 -1
  37. package/dist/packages/playground/browser/{chunk-ZeGfaGFy.js → chunk-_TRKH8kG.js} +1 -1
  38. package/dist/packages/playground/browser/{chunk-DT7GQcHj.js → chunk-e5kB8V0v.js} +1 -1
  39. package/dist/packages/playground/browser/{chunk-94bHXqp1.js → chunk-zJLityDb.js} +1 -1
  40. package/dist/packages/playground/browser/index.html +1 -1
  41. package/dist/packages/playground/browser/main-33XWGVNC.js +731 -0
  42. package/eslint.config.js +2 -1
  43. package/generate_prompts.ps1 +10 -0
  44. package/package.json +3 -2
  45. package/packages/angular-renderer/CHANGELOG.md +21 -0
  46. package/packages/angular-renderer/package.json +7 -6
  47. package/packages/angular-renderer/playwright/.cache/assets/adapter-iYml3Kk6.js +121 -0
  48. package/packages/angular-renderer/playwright/.cache/assets/adapter-iYml3Kk6.js.map +1 -0
  49. package/packages/angular-renderer/playwright/.cache/assets/breadcrumbs.component-DqZwZwH1.js +200 -0
  50. package/packages/angular-renderer/playwright/.cache/assets/breadcrumbs.component-DqZwZwH1.js.map +1 -0
  51. package/packages/angular-renderer/playwright/.cache/assets/button.component-Dnc1mP3D.js +112 -0
  52. package/packages/angular-renderer/playwright/.cache/assets/button.component-Dnc1mP3D.js.map +1 -0
  53. package/packages/angular-renderer/playwright/.cache/assets/card.component-0WWaDbUV.js +180 -0
  54. package/packages/angular-renderer/playwright/.cache/assets/card.component-0WWaDbUV.js.map +1 -0
  55. package/packages/angular-renderer/playwright/.cache/assets/checkbox.component-JGpevUFG.js +150 -0
  56. package/packages/angular-renderer/playwright/.cache/assets/checkbox.component-JGpevUFG.js.map +1 -0
  57. package/packages/angular-renderer/playwright/.cache/assets/chip.component-DHGk3h8k.js +121 -0
  58. package/packages/angular-renderer/playwright/.cache/assets/chip.component-DHGk3h8k.js.map +1 -0
  59. package/packages/angular-renderer/playwright/.cache/assets/data-grid.component-DDZZ4enP.js +352 -0
  60. package/packages/angular-renderer/playwright/.cache/assets/data-grid.component-DDZZ4enP.js.map +1 -0
  61. package/packages/angular-renderer/playwright/.cache/assets/experience-adapter.service-CJxHLpWN.js +38 -0
  62. package/packages/angular-renderer/playwright/.cache/assets/experience-adapter.service-CJxHLpWN.js.map +1 -0
  63. package/packages/angular-renderer/playwright/.cache/assets/form-field.component-DZA0NfB7.js +184 -0
  64. package/packages/angular-renderer/playwright/.cache/assets/form-field.component-DZA0NfB7.js.map +1 -0
  65. package/packages/angular-renderer/playwright/.cache/assets/hbox.component-D5YHn6Vu.js +125 -0
  66. package/packages/angular-renderer/playwright/.cache/assets/hbox.component-D5YHn6Vu.js.map +1 -0
  67. package/packages/angular-renderer/playwright/.cache/assets/index-DRoHZv2r.js +92806 -0
  68. package/packages/angular-renderer/playwright/.cache/assets/index-DRoHZv2r.js.map +1 -0
  69. package/packages/angular-renderer/playwright/.cache/assets/label.component-DDKtYvrS.js +105 -0
  70. package/packages/angular-renderer/playwright/.cache/assets/label.component-DDKtYvrS.js.map +1 -0
  71. package/packages/angular-renderer/playwright/.cache/assets/list.component-DSP5wzI4.js +195 -0
  72. package/packages/angular-renderer/playwright/.cache/assets/list.component-DSP5wzI4.js.map +1 -0
  73. package/packages/angular-renderer/playwright/.cache/assets/radio-group.component-BzVciXZu.js +171 -0
  74. package/packages/angular-renderer/playwright/.cache/assets/radio-group.component-BzVciXZu.js.map +1 -0
  75. package/packages/angular-renderer/playwright/.cache/assets/select.component-BC_aoLNt.js +180 -0
  76. package/packages/angular-renderer/playwright/.cache/assets/select.component-BC_aoLNt.js.map +1 -0
  77. package/packages/angular-renderer/playwright/.cache/assets/sidebar.component-CY_vKSCu.js +217 -0
  78. package/packages/angular-renderer/playwright/.cache/assets/sidebar.component-CY_vKSCu.js.map +1 -0
  79. package/packages/angular-renderer/playwright/.cache/assets/switch.component-BtfhJxLp.js +144 -0
  80. package/packages/angular-renderer/playwright/.cache/assets/switch.component-BtfhJxLp.js.map +1 -0
  81. package/packages/angular-renderer/playwright/.cache/assets/tabs.component-DGcKkhH_.js +218 -0
  82. package/packages/angular-renderer/playwright/.cache/assets/tabs.component-DGcKkhH_.js.map +1 -0
  83. package/packages/angular-renderer/playwright/.cache/assets/text-input.component-IyHHKpW-.js +121 -0
  84. package/packages/angular-renderer/playwright/.cache/assets/text-input.component-IyHHKpW-.js.map +1 -0
  85. package/packages/angular-renderer/playwright/.cache/assets/textarea.component-Bpvh81yV.js +141 -0
  86. package/packages/angular-renderer/playwright/.cache/assets/textarea.component-Bpvh81yV.js.map +1 -0
  87. package/packages/angular-renderer/playwright/.cache/assets/vbox.component-DRe59FUF.js +127 -0
  88. package/packages/angular-renderer/playwright/.cache/assets/vbox.component-DRe59FUF.js.map +1 -0
  89. package/packages/angular-renderer/playwright/.cache/index.html +11 -0
  90. package/packages/angular-renderer/playwright/.cache/metainfo.json +5416 -0
  91. package/packages/angular-renderer/playwright/index.html +11 -0
  92. package/packages/angular-renderer/playwright/index.ts +1 -0
  93. package/packages/angular-renderer/playwright-ct.config.ts +13 -3
  94. package/packages/angular-renderer/src/adapters/web/experience-adapter.service.ts +15 -1
  95. package/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.pw.ts +37 -0
  96. package/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.ts +0 -1
  97. package/packages/angular-renderer/src/components/primitives/button/button.component.pw.ts +17 -4
  98. package/packages/angular-renderer/src/components/primitives/card/card.component.pw.ts +32 -0
  99. package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.pw.ts +38 -0
  100. package/packages/angular-renderer/src/components/primitives/chip/chip.component.pw.ts +56 -0
  101. package/packages/angular-renderer/src/components/primitives/chip/chip.component.ts +1 -1
  102. package/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.pw.ts +37 -0
  103. package/packages/angular-renderer/src/components/primitives/form-field/form-field.component.pw.ts +38 -0
  104. package/packages/angular-renderer/src/components/primitives/hbox/hbox.component.pw.ts +32 -0
  105. package/packages/angular-renderer/src/components/primitives/label/label.component.pw.ts +32 -0
  106. package/packages/angular-renderer/src/components/primitives/list/list.component.pw.ts +37 -0
  107. package/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.pw.ts +38 -0
  108. package/packages/angular-renderer/src/components/primitives/select/select.component.pw.ts +32 -0
  109. package/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.pw.ts +37 -0
  110. package/packages/angular-renderer/src/components/primitives/switch/switch.component.pw.ts +62 -0
  111. package/packages/angular-renderer/src/components/primitives/switch/switch.component.ts +1 -1
  112. package/packages/angular-renderer/src/components/primitives/tabs/tabs.component.pw.ts +37 -0
  113. package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.pw.ts +16 -7
  114. package/packages/angular-renderer/src/components/primitives/textarea/textarea.component.pw.ts +38 -0
  115. package/packages/angular-renderer/src/components/primitives/vbox/vbox.component.pw.ts +17 -4
  116. package/packages/angular-renderer/src/devtools/devtools-bridge.ts +2 -0
  117. package/packages/angular-renderer/src/index.ts +1 -0
  118. package/packages/angular-renderer/src/lib/primitives.provider.ts +29 -21
  119. package/packages/cli/CHANGELOG.md +8 -0
  120. package/packages/cli/package.json +2 -2
  121. package/packages/core/CHANGELOG.md +14 -0
  122. package/packages/core/package.json +2 -2
  123. package/packages/design-tokens/CHANGELOG.md +8 -0
  124. package/packages/design-tokens/package.json +1 -1
  125. package/packages/devtools/CHANGELOG.md +8 -0
  126. package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/deps___vitest_vm__/_metadata.json +3 -3
  127. package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  128. package/packages/devtools/package.json +1 -1
  129. package/packages/playground/CHANGELOG.md +14 -0
  130. package/packages/playground/netlify.toml +6 -0
  131. package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/deps___vitest_vm__/_metadata.json +3 -3
  132. package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  133. package/packages/playground/package.json +3 -3
  134. package/packages/playground/src/app/app.config.ts +6 -1
  135. package/packages/playground/src/preview/preview-root.component.ts +173 -12
  136. package/dist/packages/playground/browser/main-BBGOLU74.js +0 -711
  137. package/packages/angular-renderer/src/components/primitives/primitives.a11y.pw.ts +0 -382
@@ -0,0 +1,37 @@
1
+ import { test, expect } from '@jscutlery/playwright-ct-angular';
2
+ import { TabsComponent, TabsProps } from './tabs.component';
3
+ import { InteractionContract } from '@origo/core';
4
+ import AxeBuilder from '@axe-core/playwright';
5
+
6
+ test.describe('TabsComponent Accessibility', () => {
7
+ test('should not have any automatically detectable accessibility issues', async ({
8
+ mount,
9
+ page,
10
+ }) => {
11
+ await mount(TabsComponent, {
12
+ props: {
13
+ contract: {
14
+ id: 'test-id',
15
+ type: 'tabs',
16
+ props: {
17
+ columns: [{ key: 'name', label: 'Name' }],
18
+ rows: [{ name: 'Test' }],
19
+ items: [{ label: 'Item 1', id: '1', href: '/' }],
20
+ tabs: [{ label: 'Tab 1', id: 'tab-1' }],
21
+ },
22
+ } as InteractionContract<TabsProps>,
23
+ },
24
+ });
25
+
26
+ const accessibilityScanResults = await new AxeBuilder({ page })
27
+ .disableRules([
28
+ 'document-title',
29
+ 'html-has-lang',
30
+ 'landmark-one-main',
31
+ 'page-has-heading-one',
32
+ 'region',
33
+ ])
34
+ .analyze();
35
+ expect(accessibilityScanResults.violations).toEqual([]);
36
+ });
37
+ });
@@ -1,4 +1,4 @@
1
- import { test, expect } from '@playwright/experimental-ct-angular';
1
+ import { test, expect } from '@jscutlery/playwright-ct-angular';
2
2
  import { TextInputComponent, TextInputProps } from './text-input.component';
3
3
  import { InteractionContract } from '@origo/core';
4
4
  import AxeBuilder from '@axe-core/playwright';
@@ -11,19 +11,28 @@ test.describe('TextInputComponent Accessibility', () => {
11
11
  await mount(TextInputComponent, {
12
12
  props: {
13
13
  contract: {
14
- id: '2',
14
+ id: 'test-id',
15
15
  type: 'textInput',
16
16
  props: {
17
- placeholder: 'Enter name',
18
- value: 'Jane',
19
- 'aria-label': 'Name input',
20
- 'aria-describedby': 'name-hint',
17
+ label: 'Test Label',
18
+ placeholder: 'Test',
19
+ 'aria-label': 'Test',
20
+ options: [{ label: 'Option 1', value: '1' }],
21
+ items: [{ label: 'Item 1' }],
21
22
  },
22
23
  } as InteractionContract<TextInputProps>,
23
24
  },
24
25
  });
25
26
 
26
- const accessibilityScanResults = await new AxeBuilder({ page }).analyze();
27
+ const accessibilityScanResults = await new AxeBuilder({ page })
28
+ .disableRules([
29
+ 'document-title',
30
+ 'html-has-lang',
31
+ 'landmark-one-main',
32
+ 'page-has-heading-one',
33
+ 'region',
34
+ ])
35
+ .analyze();
27
36
  expect(accessibilityScanResults.violations).toEqual([]);
28
37
  });
29
38
  });
@@ -0,0 +1,38 @@
1
+ import { test, expect } from '@jscutlery/playwright-ct-angular';
2
+ import { TextareaComponent, TextareaProps } from './textarea.component';
3
+ import { InteractionContract } from '@origo/core';
4
+ import AxeBuilder from '@axe-core/playwright';
5
+
6
+ test.describe('TextareaComponent Accessibility', () => {
7
+ test('should not have any automatically detectable accessibility issues', async ({
8
+ mount,
9
+ page,
10
+ }) => {
11
+ await mount(TextareaComponent, {
12
+ props: {
13
+ contract: {
14
+ id: 'test-id',
15
+ type: 'textarea',
16
+ props: {
17
+ label: 'Test Label',
18
+ placeholder: 'Test',
19
+ 'aria-label': 'Test',
20
+ options: [{ label: 'Option 1', value: '1' }],
21
+ items: [{ label: 'Item 1' }],
22
+ },
23
+ } as InteractionContract<TextareaProps>,
24
+ },
25
+ });
26
+
27
+ const accessibilityScanResults = await new AxeBuilder({ page })
28
+ .disableRules([
29
+ 'document-title',
30
+ 'html-has-lang',
31
+ 'landmark-one-main',
32
+ 'page-has-heading-one',
33
+ 'region',
34
+ ])
35
+ .analyze();
36
+ expect(accessibilityScanResults.violations).toEqual([]);
37
+ });
38
+ });
@@ -1,5 +1,6 @@
1
- import { test, expect } from '@playwright/experimental-ct-angular';
2
- import { VBoxComponent } from './vbox.component';
1
+ import { test, expect } from '@jscutlery/playwright-ct-angular';
2
+ import { VBoxComponent, VBoxProps } from './vbox.component';
3
+ import { InteractionContract } from '@origo/core';
3
4
  import AxeBuilder from '@axe-core/playwright';
4
5
 
5
6
  test.describe('VBoxComponent Accessibility', () => {
@@ -9,11 +10,23 @@ test.describe('VBoxComponent Accessibility', () => {
9
10
  }) => {
10
11
  await mount(VBoxComponent, {
11
12
  props: {
12
- contract: { id: '1', type: 'vbox', props: { gap: '10px' } } as never,
13
+ contract: {
14
+ id: 'test-id',
15
+ type: 'vbox',
16
+ props: {},
17
+ } as InteractionContract<VBoxProps>,
13
18
  },
14
19
  });
15
20
 
16
- const accessibilityScanResults = await new AxeBuilder({ page }).analyze();
21
+ const accessibilityScanResults = await new AxeBuilder({ page })
22
+ .disableRules([
23
+ 'document-title',
24
+ 'html-has-lang',
25
+ 'landmark-one-main',
26
+ 'page-has-heading-one',
27
+ 'region',
28
+ ])
29
+ .analyze();
17
30
  expect(accessibilityScanResults.violations).toEqual([]);
18
31
  });
19
32
  });
@@ -1,3 +1,5 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-unused-vars */
1
3
  import { isDevMode } from '@angular/core';
2
4
 
3
5
  export interface MetadataSource {
@@ -20,3 +20,4 @@ export * from './components/primitives/card/card.component';
20
20
  export * from './components/primitives/sidebar/sidebar.component';
21
21
  export * from './components/primitives/tabs/tabs.component';
22
22
  export * from './components/primitives/breadcrumbs/breadcrumbs.component';
23
+ export * from './adapters/web/experience-adapter.service';
@@ -1,4 +1,4 @@
1
- import { EnvironmentProviders, makeEnvironmentProviders, Type } from '@angular/core';
1
+ import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';
2
2
  import { RENDERER_REGISTRY } from './renderer.tokens';
3
3
  import { SelectComponent } from '../components/primitives/select/select.component';
4
4
  import { CheckboxComponent } from '../components/primitives/checkbox/checkbox.component';
@@ -15,30 +15,38 @@ import { TabsComponent } from '../components/primitives/tabs/tabs.component';
15
15
  import { BreadcrumbsComponent } from '../components/primitives/breadcrumbs/breadcrumbs.component';
16
16
  import { SwitchComponent } from '../components/primitives/switch/switch.component';
17
17
  import { ChipComponent } from '../components/primitives/chip/chip.component';
18
+ import { TextInputComponent } from '../components/primitives/text-input/text-input.component';
19
+ import { ButtonComponent } from '../components/primitives/button/button.component';
20
+ import { VBoxComponent } from '../components/primitives/vbox/vbox.component';
21
+
18
22
  export function provideOrigo9Primitives(): EnvironmentProviders {
23
+ const registryMap = new Map<string, unknown>([
24
+ ['Select', SelectComponent],
25
+ ['Checkbox', CheckboxComponent],
26
+ ['RadioGroup', RadioGroupComponent],
27
+ ['Textarea', TextareaComponent],
28
+ ['HBox', HBoxComponent],
29
+ ['Label', LabelComponent],
30
+ ['FormField', FormFieldComponent],
31
+ ['DataGrid', DataGridComponent],
32
+ ['List', ListComponent],
33
+ ['Card', CardComponent],
34
+ ['Sidebar', SidebarComponent],
35
+ ['Tabs', TabsComponent],
36
+ ['Breadcrumbs', BreadcrumbsComponent],
37
+ ['Navigation', SidebarComponent],
38
+ ['Switch', SwitchComponent],
39
+ ['Chip', ChipComponent],
40
+ ['TextInput', TextInputComponent],
41
+ ['Button', ButtonComponent],
42
+ ['VBox', VBoxComponent],
43
+ ['vbox', VBoxComponent], // For backward compatibility with 'vbox' in preview-root
44
+ ]);
45
+
19
46
  return makeEnvironmentProviders([
20
47
  {
21
48
  provide: RENDERER_REGISTRY,
22
- useFactory: (m: Map<string, Type<unknown>>) => {
23
- m.set('Select', SelectComponent);
24
- m.set('Checkbox', CheckboxComponent);
25
- m.set('RadioGroup', RadioGroupComponent);
26
- m.set('Textarea', TextareaComponent);
27
- m.set('HBox', HBoxComponent);
28
- m.set('Label', LabelComponent);
29
- m.set('FormField', FormFieldComponent);
30
- m.set('DataGrid', DataGridComponent);
31
- m.set('List', ListComponent);
32
- m.set('Card', CardComponent);
33
- m.set('Sidebar', SidebarComponent);
34
- m.set('Tabs', TabsComponent);
35
- m.set('Breadcrumbs', BreadcrumbsComponent);
36
- m.set('Navigation', SidebarComponent);
37
- m.set('Switch', SwitchComponent);
38
- m.set('Chip', ChipComponent);
39
- return m;
40
- },
41
- deps: [RENDERER_REGISTRY],
49
+ useValue: registryMap,
42
50
  },
43
51
  ]);
44
52
  }
@@ -1,3 +1,11 @@
1
+ ## 0.0.39 (2026-09-29)
2
+
3
+ This was a version bump only for cli to align it with other projects, there were no code changes.
4
+
5
+ ## 0.0.38 (2026-09-28)
6
+
7
+ This was a version bump only for cli to align it with other projects, there were no code changes.
8
+
1
9
  ## 0.0.37 (2026-09-24)
2
10
 
3
11
  This was a version bump only for cli to align it with other projects, there were no code changes.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@origostudio/cli",
3
- "version": "0.0.37",
3
+ "version": "0.0.39",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -9,7 +9,7 @@
9
9
  "origo": "./src/main.js"
10
10
  },
11
11
  "dependencies": {
12
- "@origo/core": "0.0.37",
12
+ "@origo/core": "0.0.39",
13
13
  "commander": "^15.0.0",
14
14
  "tslib": "^2.3.0"
15
15
  },
@@ -1,3 +1,17 @@
1
+ ## 0.0.39 (2026-09-29)
2
+
3
+ ### 🚀 Features
4
+
5
+ - add GitHub Actions release workflow and package configurations for core and angular-renderer ([d80abc7](https://github.com/OrigoStudio/origo-design/commit/d80abc7))
6
+
7
+ ### ❤️ Thank You
8
+
9
+ - Hardik Patel @hardikpatelse
10
+
11
+ ## 0.0.38 (2026-09-28)
12
+
13
+ This was a version bump only for core to align it with other projects, there were no code changes.
14
+
1
15
  ## 0.0.37 (2026-09-24)
2
16
 
3
17
  This was a version bump only for core to align it with other projects, there were no code changes.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@origo/core",
3
- "version": "0.0.37",
4
- "private": true,
3
+ "version": "0.0.39",
4
+ "private": false,
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
7
7
  "types": "./src/index.d.ts",
@@ -1,3 +1,11 @@
1
+ ## 0.0.39 (2026-09-29)
2
+
3
+ This was a version bump only for design-tokens to align it with other projects, there were no code changes.
4
+
5
+ ## 0.0.38 (2026-09-28)
6
+
7
+ This was a version bump only for design-tokens to align it with other projects, there were no code changes.
8
+
1
9
  ## 0.0.37 (2026-09-24)
2
10
 
3
11
  This was a version bump only for design-tokens to align it with other projects, there were no code changes.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@origo/design-tokens",
3
- "version": "0.0.37",
3
+ "version": "0.0.39",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -1,3 +1,11 @@
1
+ ## 0.0.39 (2026-09-29)
2
+
3
+ This was a version bump only for devtools to align it with other projects, there were no code changes.
4
+
5
+ ## 0.0.38 (2026-09-28)
6
+
7
+ This was a version bump only for devtools to align it with other projects, there were no code changes.
8
+
1
9
  ## 0.0.37 (2026-09-24)
2
10
 
3
11
  This was a version bump only for devtools to align it with other projects, there were no code changes.
@@ -1,8 +1,8 @@
1
1
  {
2
- "hash": "d1897329",
2
+ "hash": "d8002cf1",
3
3
  "configHash": "5adf1e88",
4
- "lockfileHash": "9e4a8fc3",
5
- "browserHash": "ab12f760",
4
+ "lockfileHash": "a351d80c",
5
+ "browserHash": "5c23877d",
6
6
  "optimized": {},
7
7
  "chunks": {}
8
8
  }
@@ -1 +1 @@
1
- {"version":"4.1.11","results":[[":src/devtools-panel/app.component.spec.ts",{"duration":186.03909399999975,"failed":false}]]}
1
+ {"version":"4.1.11","results":[[":src/devtools-panel/app.component.spec.ts",{"duration":180.89486299999953,"failed":false}]]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@origo/devtools",
3
- "version": "0.0.37",
3
+ "version": "0.0.39",
4
4
  "type": "module",
5
5
  "dependencies": {
6
6
  "@origo/core": "0.0.30",
@@ -1,3 +1,17 @@
1
+ ## 0.0.39 (2026-09-29)
2
+
3
+ This was a version bump only for playground to align it with other projects, there were no code changes.
4
+
5
+ ## 0.0.38 (2026-09-28)
6
+
7
+ ### 🚀 Features
8
+
9
+ - integrate Epic 9 primitives into playground application config and preview root component ([9775c0b](https://github.com/OrigoStudio/origo-design/commit/9775c0b))
10
+
11
+ ### ❤️ Thank You
12
+
13
+ - Hardik Patel @hardikpatelse
14
+
1
15
  ## 0.0.37 (2026-09-24)
2
16
 
3
17
  This was a version bump only for playground to align it with other projects, there were no code changes.
@@ -0,0 +1,6 @@
1
+ [build]
2
+ command = "npx nx build playground"
3
+ publish = "../../dist/packages/playground/browser"
4
+
5
+ [build.environment]
6
+ NODE_VERSION = "20"
@@ -1,8 +1,8 @@
1
1
  {
2
- "hash": "2e658804",
2
+ "hash": "94abad82",
3
3
  "configHash": "1e17074a",
4
- "lockfileHash": "9e4a8fc3",
5
- "browserHash": "bdfc56e5",
4
+ "lockfileHash": "a351d80c",
5
+ "browserHash": "0f2883ef",
6
6
  "optimized": {},
7
7
  "chunks": {}
8
8
  }
@@ -1 +1 @@
1
- {"version":"4.1.11","results":[[":src/workers/compiler.worker.spec.ts",{"duration":4351.962877999998,"failed":false}],[":src/editor/badl-editor.component.spec.ts",{"duration":758.8180159999974,"failed":false}],[":src/editor/schema-registry.spec.ts",{"duration":46.5824649999995,"failed":false}],[":src/preview/preview.service.spec.ts",{"duration":146.99058499999956,"failed":false}],[":src/preview/preview-pane.component.spec.ts",{"duration":209.5323270000008,"failed":false}],[":src/preview/preview-root.component.spec.ts",{"duration":184.9373110000015,"failed":false}],[":src/app/app.component.spec.ts",{"duration":183.36756700000115,"failed":false}]]}
1
+ {"version":"4.1.11","results":[[":src/workers/compiler.worker.spec.ts",{"duration":4081.863498999999,"failed":false}],[":src/editor/badl-editor.component.spec.ts",{"duration":512.2351859999981,"failed":false}],[":src/editor/schema-registry.spec.ts",{"duration":50.38799400000062,"failed":false}],[":src/preview/preview.service.spec.ts",{"duration":123.91644499999893,"failed":false}],[":src/preview/preview-pane.component.spec.ts",{"duration":240.91410800000085,"failed":false}],[":src/preview/preview-root.component.spec.ts",{"duration":178.30596200000218,"failed":false}],[":src/app/app.component.spec.ts",{"duration":193.94169600000168,"failed":false}]]}
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@origo/playground",
3
- "version": "0.0.37",
3
+ "version": "0.0.39",
4
4
  "private": true,
5
5
  "dependencies": {
6
- "@origo/core": "0.0.37",
7
- "@origostudio/cli": "0.0.37"
6
+ "@origo/core": "0.0.39",
7
+ "@origostudio/cli": "0.0.39"
8
8
  },
9
9
  "peerDependencies": {
10
10
  "@angular/common": "^18.0.0",
@@ -3,7 +3,12 @@ import {
3
3
  provideBrowserGlobalErrorListeners,
4
4
  provideZonelessChangeDetection,
5
5
  } from '@angular/core';
6
+ import { provideOrigo9Primitives } from '@origo/angular-renderer';
6
7
 
7
8
  export const appConfig: ApplicationConfig = {
8
- providers: [provideBrowserGlobalErrorListeners(), provideZonelessChangeDetection()],
9
+ providers: [
10
+ provideBrowserGlobalErrorListeners(),
11
+ provideZonelessChangeDetection(),
12
+ provideOrigo9Primitives(),
13
+ ],
9
14
  };
@@ -1,18 +1,14 @@
1
- import { Component, HostListener, signal, computed } from '@angular/core';
1
+ import { Component, HostListener, signal, computed, inject } from '@angular/core';
2
2
  import { CanonicalAST, ASTNode } from '@origo/core';
3
- import { CommonModule, JsonPipe } from '@angular/common';
4
- import { OrigoRendererComponent } from '@origo/angular-renderer';
3
+ import { CommonModule } from '@angular/common';
4
+ import { OrigoRendererComponent, WebExperienceAdapterService } from '@origo/angular-renderer';
5
5
 
6
6
  @Component({
7
7
  selector: 'origo-root',
8
8
  standalone: true,
9
- imports: [CommonModule, JsonPipe, OrigoRendererComponent],
9
+ imports: [CommonModule, OrigoRendererComponent],
10
10
  template: `
11
11
  @if (ast(); as validAst) {
12
- <div class="debug-ast">
13
- <h3>Compiled AST (No UI Primitives Registered Yet)</h3>
14
- <pre>{{ validAst | json }}</pre>
15
- </div>
16
12
  @if (uiNode(); as node) {
17
13
  <origo-renderer [node]="node" />
18
14
  }
@@ -24,14 +20,179 @@ import { OrigoRendererComponent } from '@origo/angular-renderer';
24
20
  })
25
21
  export class PreviewRootComponent {
26
22
  public ast = signal<CanonicalAST | null>(null);
23
+ private experience = inject(WebExperienceAdapterService);
27
24
 
28
25
  public uiNode = computed<ASTNode | null>(() => {
29
26
  const data = this.ast();
30
- if (!data) return null;
27
+ if (!data || !data.domains || data.domains.length === 0) return null;
28
+
29
+ const domain = data.domains[0];
30
+ const entities = domain.entities || [];
31
+ const fields = entities[0]?.fields || [];
32
+
33
+ const activeOutcome =
34
+ (this.experience.getState('main-sidebar', 'activeOutcome') as string) || 'home';
35
+ const activeTab = (this.experience.getState('tabs', 'activeTab') as string) || 'overview';
36
+
37
+ // Create a showcase UI AST that uses Epic 9 primitives to visualize the BADL Domain
31
38
  return {
32
- id: 'root-vbox',
33
- type: 'vbox',
34
- children: [],
39
+ id: 'root-hbox',
40
+ type: 'HBox',
41
+ props: { gap: '0', alignment: 'stretch' },
42
+ children: [
43
+ {
44
+ id: 'main-sidebar',
45
+ type: 'Sidebar',
46
+ props: {
47
+ 'aria-label': 'Main Navigation',
48
+ activeOutcome: activeOutcome,
49
+ items: [
50
+ { key: 'nav-1', label: domain.name || 'Domain', outcomeRef: 'home' },
51
+ { key: 'nav-2', label: 'Entities', outcomeRef: 'entities' },
52
+ { key: 'nav-3', label: 'Capabilities', outcomeRef: 'capabilities' },
53
+ ],
54
+ },
55
+ },
56
+ {
57
+ id: 'content-vbox',
58
+ type: 'vbox',
59
+ props: { padding: '20px', gap: '20px', flex: 1 },
60
+ children: [
61
+ {
62
+ id: 'breadcrumbs',
63
+ type: 'Breadcrumbs',
64
+ props: {
65
+ items: [
66
+ { label: 'Home', outcomeRef: 'home' },
67
+ { label: domain.domain || 'Domain', outcomeRef: 'domain' },
68
+ ],
69
+ },
70
+ },
71
+ {
72
+ id: 'tabs',
73
+ type: 'Tabs',
74
+ props: {
75
+ activeTab: activeTab,
76
+ tabs: [
77
+ { key: 'overview', label: 'Overview' },
78
+ { key: 'settings', label: 'Settings' },
79
+ ],
80
+ },
81
+ },
82
+ {
83
+ id: 'entity-grid',
84
+ type: 'DataGrid',
85
+ props: {
86
+ 'aria-label': 'Entities Grid',
87
+ columns: [
88
+ { key: 'name', label: 'Name' },
89
+ { key: 'type', label: 'Type' },
90
+ { key: 'label', label: 'Label' },
91
+ ],
92
+ rows: fields.map(f => ({ name: f.name, type: f.type, label: f.label || '-' })),
93
+ },
94
+ },
95
+ {
96
+ id: 'entity-card',
97
+ type: 'Card',
98
+ props: {
99
+ title: 'Domain Configuration',
100
+ subtitle: 'Manage core settings for this domain',
101
+ },
102
+ },
103
+ {
104
+ id: 'form-vbox',
105
+ type: 'vbox',
106
+ props: { gap: '15px' },
107
+ children: [
108
+ {
109
+ id: 'form-hbox',
110
+ type: 'HBox',
111
+ props: { gap: '15px' },
112
+ children: [
113
+ {
114
+ id: 'ff-status',
115
+ type: 'FormField',
116
+ props: { label: 'Status' },
117
+ children: [{ id: 'switch-status', type: 'Switch', props: { checked: true } }],
118
+ },
119
+ {
120
+ id: 'ff-version',
121
+ type: 'FormField',
122
+ props: { label: 'Version' },
123
+ children: [
124
+ {
125
+ id: 'chip-version',
126
+ type: 'Chip',
127
+ props: { text: domain.version || '1.0' },
128
+ },
129
+ ],
130
+ },
131
+ ],
132
+ },
133
+ {
134
+ id: 'ff-desc',
135
+ type: 'FormField',
136
+ props: { label: 'Description' },
137
+ children: [
138
+ {
139
+ id: 'textarea-desc',
140
+ type: 'Textarea',
141
+ props: { placeholder: 'Enter description' },
142
+ },
143
+ ],
144
+ },
145
+ {
146
+ id: 'ff-type',
147
+ type: 'FormField',
148
+ props: { label: 'Type' },
149
+ children: [
150
+ {
151
+ id: 'select-type',
152
+ type: 'Select',
153
+ props: {
154
+ options: [
155
+ { value: 'core', label: 'Core' },
156
+ { value: 'plugin', label: 'Plugin' },
157
+ ],
158
+ },
159
+ },
160
+ ],
161
+ },
162
+ {
163
+ id: 'ff-radio',
164
+ type: 'FormField',
165
+ props: { label: 'Environment' },
166
+ children: [
167
+ {
168
+ id: 'radio-env',
169
+ type: 'RadioGroup',
170
+ props: {
171
+ options: [
172
+ { value: 'dev', label: 'Development' },
173
+ { value: 'prod', label: 'Production' },
174
+ ],
175
+ },
176
+ },
177
+ ],
178
+ },
179
+ {
180
+ id: 'ff-check',
181
+ type: 'FormField',
182
+ props: { label: 'Enable Validation' },
183
+ children: [
184
+ {
185
+ id: 'check-val',
186
+ type: 'Checkbox',
187
+ props: { checked: true, label: 'Strict mode' },
188
+ },
189
+ ],
190
+ },
191
+ ],
192
+ },
193
+ ],
194
+ },
195
+ ],
35
196
  };
36
197
  });
37
198