@origostudio/origo-design 0.0.44 → 0.0.46
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.
- package/CHANGELOG.md +2 -2
- package/dist/packages/angular-renderer/CHANGELOG.md +8 -0
- package/dist/packages/angular-renderer/package.json +3 -3
- package/dist/packages/cli/CHANGELOG.md +14 -0
- package/dist/packages/cli/package.json +2 -2
- package/dist/packages/cli/package.json.bak +2 -2
- package/dist/packages/cli/src/templates/entity.json +2 -1
- package/dist/packages/core/CHANGELOG.md +14 -0
- package/dist/packages/core/package.json +1 -1
- package/dist/packages/core/package.json.bak +1 -1
- package/dist/packages/core/src/schemas/entity.schema.json +6 -0
- package/dist/packages/core/src/types/domain.d.ts +14 -10
- package/dist/packages/core/src/validator/ast-validator.js.map +1 -1
- package/dist/packages/design-tokens/CHANGELOG.md +8 -0
- package/dist/packages/design-tokens/package.json +1 -1
- package/dist/packages/playground/browser/{chunk-DMbwtBDd.js → chunk-7aXhMYht.js} +1 -1
- package/dist/packages/playground/browser/{chunk-C6iPMtzJ.js → chunk-Bnpjwr-7.js} +1 -1
- package/dist/packages/playground/browser/{chunk-DXXddjUH.js → chunk-CoC5zYQK.js} +1 -1
- package/dist/packages/playground/browser/{chunk-DMpPs9rA.js → chunk-D8NS9RS7.js} +1 -1
- package/dist/packages/playground/browser/{chunk-DIvlPnvJ.js → chunk-D8xCSUn8.js} +1 -1
- package/dist/packages/playground/browser/{chunk-fFOvmhYq.js → chunk-DOh0X2ps.js} +1 -1
- package/dist/packages/playground/browser/{chunk-BfIxRyPQ.js → chunk-DQXI3hQ7.js} +1 -1
- package/dist/packages/playground/browser/{chunk-BtVNMDJq.js → chunk-Ds2pJNq1.js} +1 -1
- package/dist/packages/playground/browser/{chunk-Brp3g7bK.js → chunk-KjK48aB_.js} +1 -1
- package/dist/packages/playground/browser/{chunk-CLB0SPwG.js → chunk-M-QQ6mOa.js} +1 -1
- package/dist/packages/playground/browser/{chunk-CGAcVhTp.js → chunk-NvAbwArG.js} +1 -1
- package/dist/packages/playground/browser/{chunk-BcBYX837.js → chunk-Vi7LKue9.js} +1 -1
- package/dist/packages/playground/browser/{chunk-DuZs2s4F.js → chunk-hQe37O_T.js} +1 -1
- package/dist/packages/playground/browser/{chunk-C1ijo43w.js → chunk-iW-WwSbU.js} +1 -1
- package/dist/packages/playground/browser/{chunk-BqfAumJ-.js → chunk-pi5vOCVu.js} +1 -1
- package/dist/packages/playground/browser/index.html +1 -1
- package/dist/packages/playground/browser/logo.png +0 -0
- package/dist/packages/playground/browser/main-HYTU6AQS.js +731 -0
- package/dist/packages/playground/browser/{worker-GYB3RGDW.js → worker-XLWIYXAF.js} +1 -1
- package/package.json +1 -1
- package/packages/angular-renderer/CHANGELOG.md +8 -0
- package/packages/angular-renderer/package.json +3 -3
- package/packages/cli/CHANGELOG.md +14 -0
- package/packages/cli/package.json +2 -2
- package/packages/cli/src/templates/entity.json +2 -1
- package/packages/core/CHANGELOG.md +14 -0
- package/packages/core/package.json +1 -1
- package/packages/core/src/schemas/entity.schema.json +6 -0
- package/packages/core/src/types/domain.ts +14 -12
- package/packages/core/src/validator/ast-validator.ts +2 -2
- package/packages/design-tokens/CHANGELOG.md +8 -0
- package/packages/design-tokens/package.json +1 -1
- package/packages/devtools/CHANGELOG.md +8 -0
- package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/devtools/package.json +3 -3
- package/packages/playground/CHANGELOG.md +20 -0
- package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/playground/package.json +3 -3
- package/packages/playground/public/logo.png +0 -0
- package/packages/playground/src/app/app.component.html +7 -0
- package/packages/playground/src/app/app.component.scss +57 -2
- package/packages/playground/src/app/app.component.ts +2 -0
- package/packages/playground/src/app/app.config.ts +4 -0
- package/packages/playground/src/editor/badl-editor.component.scss +2 -2
- package/packages/playground/src/editor/badl-editor.component.ts +56 -7
- package/packages/playground/src/preview/preview-pane.component.html +1 -1
- package/packages/playground/src/preview/preview-pane.component.scss +8 -7
- package/packages/playground/src/preview/preview-root.component.ts +1 -1
- package/packages/playground/src/schemas/entity.schema.json +6 -0
- package/dist/packages/playground/browser/main-7B3SBKCW.js +0 -731
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
.playground-layout {
|
|
9
9
|
display: grid;
|
|
10
10
|
grid-template-columns: 1fr;
|
|
11
|
-
grid-template-rows: 1fr 1fr;
|
|
11
|
+
grid-template-rows: auto 1fr 1fr;
|
|
12
12
|
height: 100%;
|
|
13
13
|
width: 100%;
|
|
14
14
|
|
|
15
15
|
@media (min-width: 768px) {
|
|
16
16
|
grid-template-columns: 1fr 1fr;
|
|
17
|
-
grid-template-rows: 1fr;
|
|
17
|
+
grid-template-rows: auto 1fr;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -27,3 +27,58 @@
|
|
|
27
27
|
min-width: 0;
|
|
28
28
|
height: 100%;
|
|
29
29
|
}
|
|
30
|
+
|
|
31
|
+
.playground-header {
|
|
32
|
+
grid-column: 1 / -1;
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
justify-content: space-between;
|
|
36
|
+
padding: 0 1rem;
|
|
37
|
+
height: 3rem;
|
|
38
|
+
background: var(--origo-color-surface, #ffffff);
|
|
39
|
+
border-bottom: 1px solid var(--origo-color-border, #e0e0e0);
|
|
40
|
+
|
|
41
|
+
.branding {
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: 0.5rem;
|
|
45
|
+
|
|
46
|
+
.origo-icon {
|
|
47
|
+
width: 32px;
|
|
48
|
+
height: 32px;
|
|
49
|
+
object-fit: contain;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
h1 {
|
|
53
|
+
margin: 0;
|
|
54
|
+
font-size: 1.125rem;
|
|
55
|
+
font-weight: 600;
|
|
56
|
+
color: var(--origo-color-text, #333333);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
a.help-link {
|
|
61
|
+
font-size: 0.875rem;
|
|
62
|
+
color: var(--origo-color-on-primary, #ffffff);
|
|
63
|
+
background-color: var(--origo-color-primary, #389bff);
|
|
64
|
+
padding: 0.375rem 0.75rem;
|
|
65
|
+
border-radius: 4px;
|
|
66
|
+
text-decoration: none;
|
|
67
|
+
font-weight: 500;
|
|
68
|
+
display: inline-flex;
|
|
69
|
+
align-items: center;
|
|
70
|
+
justify-content: center;
|
|
71
|
+
transition: background-color 0.2s ease;
|
|
72
|
+
border: 1px solid transparent;
|
|
73
|
+
|
|
74
|
+
&:hover {
|
|
75
|
+
background-color: var(--origo-color-primary-dark, #0c86ff);
|
|
76
|
+
text-decoration: none;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&:focus-visible {
|
|
80
|
+
outline: 2px solid var(--origo-color-primary, #0066cc);
|
|
81
|
+
outline-offset: 2px;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -2,6 +2,7 @@ import { Component, inject } from '@angular/core';
|
|
|
2
2
|
import { PreviewService } from '../preview/preview.service';
|
|
3
3
|
import { BadlEditorComponent } from '../editor/badl-editor.component';
|
|
4
4
|
import { PreviewPaneComponent } from '../preview/preview-pane.component';
|
|
5
|
+
import { ORIGO_DOCS_URL } from './app.config';
|
|
5
6
|
|
|
6
7
|
@Component({
|
|
7
8
|
standalone: true,
|
|
@@ -12,6 +13,7 @@ import { PreviewPaneComponent } from '../preview/preview-pane.component';
|
|
|
12
13
|
})
|
|
13
14
|
export class AppComponent {
|
|
14
15
|
protected title = 'playground';
|
|
16
|
+
protected docsUrl = inject(ORIGO_DOCS_URL) + '/reference/schemas/';
|
|
15
17
|
private previewService = inject(PreviewService);
|
|
16
18
|
|
|
17
19
|
public onContentChange(content: string) {
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ApplicationConfig,
|
|
3
|
+
InjectionToken,
|
|
3
4
|
provideBrowserGlobalErrorListeners,
|
|
4
5
|
provideZonelessChangeDetection,
|
|
5
6
|
} from '@angular/core';
|
|
6
7
|
import { provideOrigo9Primitives } from '@origostudio/angular-renderer';
|
|
7
8
|
|
|
9
|
+
export const ORIGO_DOCS_URL = new InjectionToken<string>('ORIGO_DOCS_URL');
|
|
10
|
+
|
|
8
11
|
export const appConfig: ApplicationConfig = {
|
|
9
12
|
providers: [
|
|
10
13
|
provideBrowserGlobalErrorListeners(),
|
|
11
14
|
provideZonelessChangeDetection(),
|
|
12
15
|
provideOrigo9Primitives(),
|
|
16
|
+
{ provide: ORIGO_DOCS_URL, useValue: 'https://origo-design-docs.netlify.app' },
|
|
13
17
|
],
|
|
14
18
|
};
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
.editor-header {
|
|
9
|
-
padding:
|
|
9
|
+
padding: 5px 24px;
|
|
10
10
|
background: var(--origo-color-surface, #1e1e1e);
|
|
11
11
|
border-bottom: 1px solid var(--origo-color-border-subtle, rgba(255, 255, 255, 0.1));
|
|
12
12
|
display: flex;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
.editor-title {
|
|
17
17
|
color: var(--origo-color-text-secondary, #cccccc);
|
|
18
|
-
font-size: 0.
|
|
18
|
+
font-size: 0.75rem;
|
|
19
19
|
font-weight: 600;
|
|
20
20
|
letter-spacing: 0.05em;
|
|
21
21
|
text-transform: uppercase;
|
|
@@ -80,12 +80,16 @@ export class BadlEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
80
80
|
console.warn('Could not restore playground draft, falling back to initialValue', e);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
const modelUri = monaco.Uri.parse('inmemory://model/domain.json');
|
|
84
|
+
let model = monaco.editor.getModel(modelUri);
|
|
85
|
+
if (model) {
|
|
86
|
+
model.setValue(savedState);
|
|
87
|
+
} else {
|
|
88
|
+
model = monaco.editor.createModel(savedState, 'json', modelUri);
|
|
89
|
+
}
|
|
90
|
+
|
|
83
91
|
this.editor = monaco.editor.create(this.editorContainer.nativeElement, {
|
|
84
|
-
model:
|
|
85
|
-
savedState,
|
|
86
|
-
'json',
|
|
87
|
-
monaco.Uri.parse('inmemory://model/domain.json')
|
|
88
|
-
),
|
|
92
|
+
model: model,
|
|
89
93
|
theme: this.theme(),
|
|
90
94
|
readOnly: this.readOnly(),
|
|
91
95
|
automaticLayout: true, // Required for split-pane resize in Story 7.2
|
|
@@ -191,6 +195,48 @@ export class BadlEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
191
195
|
],
|
|
192
196
|
},
|
|
193
197
|
],
|
|
198
|
+
capabilities: [
|
|
199
|
+
{
|
|
200
|
+
id: 'cap-create-user',
|
|
201
|
+
name: 'Create',
|
|
202
|
+
description: 'Create a new user in the system',
|
|
203
|
+
type: 'Command',
|
|
204
|
+
entityId: 'ent-user',
|
|
205
|
+
outcome_ref: [],
|
|
206
|
+
preconditions: ['User does not already exist'],
|
|
207
|
+
postconditions: ['User is saved to database'],
|
|
208
|
+
permissions: [
|
|
209
|
+
{
|
|
210
|
+
role: 'admin',
|
|
211
|
+
access: 'grant',
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
risk_level: 'medium',
|
|
215
|
+
async: false,
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
id: 'cap-read-user',
|
|
219
|
+
name: 'Read',
|
|
220
|
+
description: 'Read user details by ID',
|
|
221
|
+
type: 'Query',
|
|
222
|
+
entityId: 'ent-user',
|
|
223
|
+
outcome_ref: [],
|
|
224
|
+
preconditions: [],
|
|
225
|
+
postconditions: [],
|
|
226
|
+
permissions: [
|
|
227
|
+
{
|
|
228
|
+
role: 'admin',
|
|
229
|
+
access: 'grant',
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
role: 'user',
|
|
233
|
+
access: 'grant',
|
|
234
|
+
},
|
|
235
|
+
],
|
|
236
|
+
risk_level: 'low',
|
|
237
|
+
async: false,
|
|
238
|
+
},
|
|
239
|
+
],
|
|
194
240
|
};
|
|
195
241
|
|
|
196
242
|
const formatted = JSON.stringify(sample, null, 2);
|
|
@@ -200,7 +246,10 @@ export class BadlEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
200
246
|
}
|
|
201
247
|
|
|
202
248
|
ngOnDestroy(): void {
|
|
203
|
-
this.editor
|
|
204
|
-
|
|
249
|
+
if (this.editor) {
|
|
250
|
+
this.editor.getModel()?.dispose();
|
|
251
|
+
this.editor.dispose(); // CRITICAL — prevents Monaco timer memory leak
|
|
252
|
+
this.editor = null;
|
|
253
|
+
}
|
|
205
254
|
}
|
|
206
255
|
}
|
|
@@ -14,26 +14,27 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
.preview-header {
|
|
17
|
-
padding:
|
|
17
|
+
padding: 13px 24px;
|
|
18
18
|
background: rgba(255, 255, 255, 0.8);
|
|
19
19
|
backdrop-filter: blur(8px);
|
|
20
20
|
border-bottom: 1px solid var(--origo-color-border, #eaeaea);
|
|
21
21
|
display: flex;
|
|
22
22
|
align-items: center;
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
font-size:
|
|
24
|
+
.preview-title {
|
|
25
|
+
color: var(--origo-color-text-primary, #323232);
|
|
26
|
+
font-size: 0.75rem;
|
|
27
27
|
font-weight: 600;
|
|
28
|
-
letter-spacing:
|
|
29
|
-
|
|
28
|
+
letter-spacing: 0.05em;
|
|
29
|
+
text-transform: uppercase;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.iframe-wrapper {
|
|
34
34
|
flex: 1;
|
|
35
35
|
position: relative;
|
|
36
|
-
min-height: 0;
|
|
36
|
+
min-height: 0;
|
|
37
|
+
/* Important for flex child to not overflow */
|
|
37
38
|
overflow: hidden;
|
|
38
39
|
|
|
39
40
|
iframe {
|
|
@@ -74,7 +74,7 @@ export class PreviewRootComponent {
|
|
|
74
74
|
props: {
|
|
75
75
|
'aria-label': 'Capabilities',
|
|
76
76
|
columns: [{ key: 'name', label: 'Capability Name' }],
|
|
77
|
-
rows: capabilities.map(c => ({ name: c?.name || '-' })),
|
|
77
|
+
rows: capabilities.map((c: any) => ({ name: c?.name || '-' })),
|
|
78
78
|
},
|
|
79
79
|
},
|
|
80
80
|
]
|