@ketvietlab/design-system 0.1.9 → 0.1.12
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/README.md +42 -3
- package/dist/atlas/README.md +35 -0
- package/dist/atlas/adapter.schema.json +78 -0
- package/dist/atlas/profile.json +43 -0
- package/dist/atlas-cli.d.ts +3 -0
- package/dist/atlas-cli.d.ts.map +1 -0
- package/dist/atlas-cli.js +213 -0
- package/dist/atlas-cli.js.map +1 -0
- package/dist/catalogue/catalogue.css +198 -5
- package/dist/catalogue/groups.d.ts +11 -0
- package/dist/catalogue/groups.d.ts.map +1 -0
- package/dist/catalogue/groups.js +47 -0
- package/dist/catalogue/groups.js.map +1 -0
- package/dist/catalogue/index.d.ts +16 -17
- package/dist/catalogue/index.d.ts.map +1 -1
- package/dist/catalogue/index.js +39 -751
- package/dist/catalogue/index.js.map +1 -1
- package/dist/catalogue/inventory-policy.json +554 -0
- package/dist/catalogue/inventory.css +574 -0
- package/dist/catalogue/inventory.d.ts +16 -0
- package/dist/catalogue/inventory.d.ts.map +1 -0
- package/dist/catalogue/inventory.generated.d.ts +42 -0
- package/dist/catalogue/inventory.generated.d.ts.map +1 -0
- package/dist/catalogue/inventory.generated.js +3 -0
- package/dist/catalogue/inventory.generated.js.map +1 -0
- package/dist/catalogue/inventory.generated.json +9743 -0
- package/dist/catalogue/inventory.js +48 -0
- package/dist/catalogue/inventory.js.map +1 -0
- package/dist/catalogue/registry.d.ts +12 -0
- package/dist/catalogue/registry.d.ts.map +1 -0
- package/dist/catalogue/registry.js +127 -0
- package/dist/catalogue/registry.js.map +1 -0
- package/dist/catalogue/specimens.d.ts +15 -0
- package/dist/catalogue/specimens.d.ts.map +1 -0
- package/dist/catalogue/specimens.js +1146 -0
- package/dist/catalogue/specimens.js.map +1 -0
- package/dist/catalogue/styles.css +1 -0
- package/dist/contract/index.d.ts.map +1 -1
- package/dist/contract/index.js +62 -18
- package/dist/contract/index.js.map +1 -1
- package/dist/data-display/data-grid/index.d.ts +22 -0
- package/dist/data-display/data-grid/index.d.ts.map +1 -0
- package/dist/data-display/data-grid/index.js +15 -0
- package/dist/data-display/data-grid/index.js.map +1 -0
- package/dist/data-display/data-grid/styles.css +49 -0
- package/dist/data-display/resource-list/index.d.ts +22 -0
- package/dist/data-display/resource-list/index.d.ts.map +1 -0
- package/dist/data-display/resource-list/index.js +21 -0
- package/dist/data-display/resource-list/index.js.map +1 -0
- package/dist/data-display/resource-list/styles.css +39 -0
- package/dist/data-display/tree/index.d.ts +33 -0
- package/dist/data-display/tree/index.d.ts.map +1 -0
- package/dist/data-display/tree/index.js +21 -0
- package/dist/data-display/tree/index.js.map +1 -0
- package/dist/data-display/tree/styles.css +45 -0
- package/dist/data-operations/inline-edit/index.d.ts +19 -0
- package/dist/data-operations/inline-edit/index.d.ts.map +1 -0
- package/dist/data-operations/inline-edit/index.js +5 -0
- package/dist/data-operations/inline-edit/index.js.map +1 -0
- package/dist/data-operations/inline-edit/styles.css +34 -0
- package/dist/data-operations/list-controls/index.d.ts +67 -0
- package/dist/data-operations/list-controls/index.d.ts.map +1 -0
- package/dist/data-operations/list-controls/index.js +35 -0
- package/dist/data-operations/list-controls/index.js.map +1 -0
- package/dist/data-operations/list-controls/styles.css +82 -0
- package/dist/forms/combobox/index.d.ts +39 -0
- package/dist/forms/combobox/index.d.ts.map +1 -0
- package/dist/forms/combobox/index.js +23 -0
- package/dist/forms/combobox/index.js.map +1 -0
- package/dist/forms/combobox/styles.css +76 -0
- package/dist/forms/date-time/index.d.ts +25 -0
- package/dist/forms/date-time/index.d.ts.map +1 -0
- package/dist/forms/date-time/index.js +15 -0
- package/dist/forms/date-time/index.js.map +1 -0
- package/dist/forms/date-time/styles.css +25 -0
- package/dist/forms/relation-picker/index.d.ts +12 -0
- package/dist/forms/relation-picker/index.d.ts.map +1 -0
- package/dist/forms/relation-picker/index.js +13 -0
- package/dist/forms/relation-picker/index.js.map +1 -0
- package/dist/forms/relation-picker/styles.css +5 -0
- package/dist/forms/scalar-fields/index.d.ts +24 -0
- package/dist/forms/scalar-fields/index.d.ts.map +1 -0
- package/dist/forms/scalar-fields/index.js +23 -0
- package/dist/forms/scalar-fields/index.js.map +1 -0
- package/dist/forms/scalar-fields/styles.css +52 -0
- package/dist/forms/shared.d.ts +19 -0
- package/dist/forms/shared.d.ts.map +1 -0
- package/dist/forms/shared.js +9 -0
- package/dist/forms/shared.js.map +1 -0
- package/dist/forms/upload/index.d.ts +20 -0
- package/dist/forms/upload/index.d.ts.map +1 -0
- package/dist/forms/upload/index.js +11 -0
- package/dist/forms/upload/index.js.map +1 -0
- package/dist/forms/upload/styles.css +21 -0
- package/dist/foundations/tokens.css +31 -4
- package/dist/index.d.ts +76 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -19
- package/dist/index.js.map +1 -1
- package/dist/interactions/dialog/index.d.ts +25 -0
- package/dist/interactions/dialog/index.d.ts.map +1 -0
- package/dist/interactions/dialog/index.js +10 -0
- package/dist/interactions/dialog/index.js.map +1 -0
- package/dist/interactions/dialog/styles.css +11 -0
- package/dist/interactions/menu/index.d.ts +27 -0
- package/dist/interactions/menu/index.d.ts.map +1 -0
- package/dist/interactions/menu/index.js +13 -0
- package/dist/interactions/menu/index.js.map +1 -0
- package/dist/interactions/menu/styles.css +82 -0
- package/dist/interactions/popover/index.d.ts +15 -0
- package/dist/interactions/popover/index.d.ts.map +1 -0
- package/dist/interactions/popover/index.js +4 -0
- package/dist/interactions/popover/index.js.map +1 -0
- package/dist/interactions/popover/styles.css +47 -0
- package/dist/interactions/skeleton/index.d.ts +7 -0
- package/dist/interactions/skeleton/index.d.ts.map +1 -0
- package/dist/interactions/skeleton/index.js +5 -0
- package/dist/interactions/skeleton/index.js.map +1 -0
- package/dist/interactions/skeleton/styles.css +32 -0
- package/dist/interactions/spinner/index.d.ts +7 -0
- package/dist/interactions/spinner/index.d.ts.map +1 -0
- package/dist/interactions/spinner/index.js +4 -0
- package/dist/interactions/spinner/index.js.map +1 -0
- package/dist/interactions/spinner/styles.css +38 -0
- package/dist/interactions/toast/index.d.ts +16 -0
- package/dist/interactions/toast/index.d.ts.map +1 -0
- package/dist/interactions/toast/index.js +13 -0
- package/dist/interactions/toast/index.js.map +1 -0
- package/dist/interactions/toast/styles.css +64 -0
- package/dist/interactions/tooltip/index.d.ts +9 -0
- package/dist/interactions/tooltip/index.d.ts.map +1 -0
- package/dist/interactions/tooltip/index.js +4 -0
- package/dist/interactions/tooltip/index.js.map +1 -0
- package/dist/interactions/tooltip/styles.css +65 -0
- package/dist/layouts/flat/styles.css +74 -0
- package/dist/layouts/flat.css +1 -74
- package/dist/layouts/grouped/styles.css +126 -0
- package/dist/layouts/grouped.css +1 -126
- package/dist/layouts/index.d.ts +1 -69
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +1 -68
- package/dist/layouts/index.js.map +1 -1
- package/dist/layouts/layout/index.d.ts +70 -0
- package/dist/layouts/layout/index.d.ts.map +1 -0
- package/dist/layouts/layout/index.js +71 -0
- package/dist/layouts/layout/index.js.map +1 -0
- package/dist/layouts/layout/styles.css +369 -0
- package/dist/layouts/layouts.css +1 -369
- package/dist/layouts/shell/index.d.ts +27 -0
- package/dist/layouts/shell/index.d.ts.map +1 -0
- package/dist/layouts/shell/index.js +24 -0
- package/dist/layouts/shell/index.js.map +1 -0
- package/dist/layouts/shell/styles.css +168 -0
- package/dist/layouts/shell.css +1 -168
- package/dist/layouts/shell.d.ts +1 -26
- package/dist/layouts/shell.d.ts.map +1 -1
- package/dist/layouts/shell.js +1 -23
- package/dist/layouts/shell.js.map +1 -1
- package/dist/patterns/board-page/index.d.ts +16 -0
- package/dist/patterns/board-page/index.d.ts.map +1 -0
- package/dist/patterns/board-page/index.js +30 -0
- package/dist/patterns/board-page/index.js.map +1 -0
- package/dist/patterns/board-page/styles.css +164 -0
- package/dist/patterns/board-page.d.ts +1 -13
- package/dist/patterns/board-page.d.ts.map +1 -1
- package/dist/patterns/board-page.js +1 -27
- package/dist/patterns/board-page.js.map +1 -1
- package/dist/patterns/dashboard-page/index.d.ts +15 -0
- package/dist/patterns/dashboard-page/index.d.ts.map +1 -0
- package/dist/patterns/dashboard-page/index.js +27 -0
- package/dist/patterns/dashboard-page/index.js.map +1 -0
- package/dist/patterns/dashboard-page/styles.css +169 -0
- package/dist/patterns/dashboard-page.d.ts +1 -12
- package/dist/patterns/dashboard-page.d.ts.map +1 -1
- package/dist/patterns/dashboard-page.js +1 -24
- package/dist/patterns/dashboard-page.js.map +1 -1
- package/dist/patterns/data-table/index.d.ts +74 -0
- package/dist/patterns/data-table/index.d.ts.map +1 -0
- package/dist/patterns/data-table/index.js +60 -0
- package/dist/patterns/data-table/index.js.map +1 -0
- package/dist/patterns/data-table/styles.css +269 -0
- package/dist/patterns/data-table.d.ts +1 -73
- package/dist/patterns/data-table.d.ts.map +1 -1
- package/dist/patterns/data-table.js +1 -59
- package/dist/patterns/data-table.js.map +1 -1
- package/dist/patterns/form-page/index.d.ts +8 -0
- package/dist/patterns/form-page/index.d.ts.map +1 -0
- package/dist/patterns/form-page/index.js +22 -0
- package/dist/patterns/form-page/index.js.map +1 -0
- package/dist/patterns/form-page/styles.css +237 -0
- package/dist/patterns/form-page.d.ts +1 -7
- package/dist/patterns/form-page.d.ts.map +1 -1
- package/dist/patterns/form-page.js +1 -21
- package/dist/patterns/form-page.js.map +1 -1
- package/dist/patterns/list-chrome/index.d.ts +80 -0
- package/dist/patterns/list-chrome/index.d.ts.map +1 -0
- package/dist/patterns/list-chrome/index.js +45 -0
- package/dist/patterns/list-chrome/index.js.map +1 -0
- package/dist/patterns/list-chrome/styles.css +245 -0
- package/dist/patterns/list-chrome.d.ts +1 -79
- package/dist/patterns/list-chrome.d.ts.map +1 -1
- package/dist/patterns/list-chrome.js +1 -44
- package/dist/patterns/list-chrome.js.map +1 -1
- package/dist/patterns/list-page/index.d.ts +31 -0
- package/dist/patterns/list-page/index.d.ts.map +1 -0
- package/dist/patterns/list-page/index.js +41 -0
- package/dist/patterns/list-page/index.js.map +1 -0
- package/dist/patterns/list-page/responsive.css +140 -0
- package/dist/patterns/list-page/styles.css +228 -0
- package/dist/patterns/list-page.d.ts +1 -30
- package/dist/patterns/list-page.d.ts.map +1 -1
- package/dist/patterns/list-page.js +1 -40
- package/dist/patterns/list-page.js.map +1 -1
- package/dist/patterns/modal-sheet/index.d.ts +16 -0
- package/dist/patterns/modal-sheet/index.d.ts.map +1 -0
- package/dist/patterns/modal-sheet/index.js +15 -0
- package/dist/patterns/modal-sheet/index.js.map +1 -0
- package/dist/patterns/modal-sheet/styles.css +219 -0
- package/dist/patterns/modal-sheet.d.ts +1 -15
- package/dist/patterns/modal-sheet.d.ts.map +1 -1
- package/dist/patterns/modal-sheet.js +1 -14
- package/dist/patterns/modal-sheet.js.map +1 -1
- package/dist/patterns/page-shell/index.d.ts +24 -0
- package/dist/patterns/page-shell/index.d.ts.map +1 -0
- package/dist/patterns/page-shell/index.js +11 -0
- package/dist/patterns/page-shell/index.js.map +1 -0
- package/dist/patterns/page-shell.d.ts +1 -23
- package/dist/patterns/page-shell.d.ts.map +1 -1
- package/dist/patterns/page-shell.js +1 -10
- package/dist/patterns/page-shell.js.map +1 -1
- package/dist/patterns/patterns.css +12 -2247
- package/dist/patterns/pipeline/index.d.ts +29 -0
- package/dist/patterns/pipeline/index.d.ts.map +1 -0
- package/dist/patterns/pipeline/index.js +26 -0
- package/dist/patterns/pipeline/index.js.map +1 -0
- package/dist/patterns/pipeline/styles.css +168 -0
- package/dist/patterns/pipeline.d.ts +1 -28
- package/dist/patterns/pipeline.d.ts.map +1 -1
- package/dist/patterns/pipeline.js +1 -25
- package/dist/patterns/pipeline.js.map +1 -1
- package/dist/patterns/record-form/index.d.ts +18 -0
- package/dist/patterns/record-form/index.d.ts.map +1 -0
- package/dist/patterns/record-form/index.js +14 -0
- package/dist/patterns/record-form/index.js.map +1 -0
- package/dist/patterns/record-form/styles.css +175 -0
- package/dist/patterns/record-form.d.ts +1 -17
- package/dist/patterns/record-form.d.ts.map +1 -1
- package/dist/patterns/record-form.js +1 -13
- package/dist/patterns/record-form.js.map +1 -1
- package/dist/patterns/record-page/index.d.ts +31 -0
- package/dist/patterns/record-page/index.d.ts.map +1 -0
- package/dist/patterns/record-page/index.js +29 -0
- package/dist/patterns/record-page/index.js.map +1 -0
- package/dist/patterns/record-page/styles.css +228 -0
- package/dist/patterns/record-page.d.ts +1 -30
- package/dist/patterns/record-page.d.ts.map +1 -1
- package/dist/patterns/record-page.js +1 -28
- package/dist/patterns/record-page.js.map +1 -1
- package/dist/patterns/workspace-page/index.d.ts +23 -0
- package/dist/patterns/workspace-page/index.d.ts.map +1 -0
- package/dist/patterns/workspace-page/index.js +26 -0
- package/dist/patterns/workspace-page/index.js.map +1 -0
- package/dist/patterns/workspace-page/styles.css +9 -0
- package/dist/patterns/workspace-page.d.ts +1 -22
- package/dist/patterns/workspace-page.d.ts.map +1 -1
- package/dist/patterns/workspace-page.js +1 -25
- package/dist/patterns/workspace-page.js.map +1 -1
- package/dist/primitives/actions/index.d.ts +36 -0
- package/dist/primitives/actions/index.d.ts.map +1 -0
- package/dist/primitives/actions/index.js +10 -0
- package/dist/primitives/actions/index.js.map +1 -0
- package/dist/primitives/actions/styles.css +149 -0
- package/dist/primitives/actions.d.ts +1 -35
- package/dist/primitives/actions.d.ts.map +1 -1
- package/dist/primitives/actions.js +1 -9
- package/dist/primitives/actions.js.map +1 -1
- package/dist/primitives/feedback/index.d.ts +19 -0
- package/dist/primitives/feedback/index.d.ts.map +1 -0
- package/dist/primitives/feedback/index.js +21 -0
- package/dist/primitives/feedback/index.js.map +1 -0
- package/dist/primitives/feedback/styles.css +117 -0
- package/dist/primitives/feedback.d.ts +1 -18
- package/dist/primitives/feedback.d.ts.map +1 -1
- package/dist/primitives/feedback.js +1 -22
- package/dist/primitives/feedback.js.map +1 -1
- package/dist/primitives/field/index.d.ts +35 -0
- package/dist/primitives/field/index.d.ts.map +1 -0
- package/dist/primitives/field/index.js +34 -0
- package/dist/primitives/field/index.js.map +1 -0
- package/dist/primitives/field/native-control.d.ts +4 -0
- package/dist/primitives/field/native-control.d.ts.map +1 -0
- package/dist/primitives/field/native-control.js +12 -0
- package/dist/primitives/field/native-control.js.map +1 -0
- package/dist/primitives/field/styles.css +160 -0
- package/dist/primitives/field.d.ts +1 -34
- package/dist/primitives/field.d.ts.map +1 -1
- package/dist/primitives/field.js +1 -41
- package/dist/primitives/field.js.map +1 -1
- package/dist/primitives/navigation/index.d.ts +26 -0
- package/dist/primitives/navigation/index.d.ts.map +1 -0
- package/dist/primitives/navigation/index.js +16 -0
- package/dist/primitives/navigation/index.js.map +1 -0
- package/dist/primitives/navigation.d.ts +1 -25
- package/dist/primitives/navigation.d.ts.map +1 -1
- package/dist/primitives/navigation.js +1 -15
- package/dist/primitives/navigation.js.map +1 -1
- package/dist/primitives/primitives.css +4 -570
- package/dist/primitives/progress/index.d.ts +10 -0
- package/dist/primitives/progress/index.d.ts.map +1 -0
- package/dist/primitives/progress/index.js +13 -0
- package/dist/primitives/progress/index.js.map +1 -0
- package/dist/primitives/progress.d.ts +1 -9
- package/dist/primitives/progress.d.ts.map +1 -1
- package/dist/primitives/progress.js +1 -12
- package/dist/primitives/progress.js.map +1 -1
- package/dist/primitives/status/index.d.ts +27 -0
- package/dist/primitives/status/index.d.ts.map +1 -0
- package/dist/primitives/status/index.js +16 -0
- package/dist/primitives/status/index.js.map +1 -0
- package/dist/primitives/status/styles.css +114 -0
- package/dist/primitives/status.d.ts +1 -26
- package/dist/primitives/status.d.ts.map +1 -1
- package/dist/primitives/status.js +1 -15
- package/dist/primitives/status.js.map +1 -1
- package/dist/record/activity/index.d.ts +26 -0
- package/dist/record/activity/index.d.ts.map +1 -0
- package/dist/record/activity/index.js +33 -0
- package/dist/record/activity/index.js.map +1 -0
- package/dist/record/activity/styles.css +38 -0
- package/dist/record/composition/index.d.ts +33 -0
- package/dist/record/composition/index.d.ts.map +1 -0
- package/dist/record/composition/index.js +10 -0
- package/dist/record/composition/index.js.map +1 -0
- package/dist/record/composition/styles.css +30 -0
- package/dist/record/display/index.d.ts +37 -0
- package/dist/record/display/index.d.ts.map +1 -0
- package/dist/record/display/index.js +23 -0
- package/dist/record/display/index.js.map +1 -0
- package/dist/record/display/styles.css +63 -0
- package/dist/record/formatted-values/index.d.ts +19 -0
- package/dist/record/formatted-values/index.d.ts.map +1 -0
- package/dist/record/formatted-values/index.js +21 -0
- package/dist/record/formatted-values/index.js.map +1 -0
- package/dist/record/formatted-values/styles.css +8 -0
- package/dist/record/media/index.d.ts +31 -0
- package/dist/record/media/index.d.ts.map +1 -0
- package/dist/record/media/index.js +19 -0
- package/dist/record/media/index.js.map +1 -0
- package/dist/record/media/styles.css +38 -0
- package/dist/runtime/auto.d.ts +2 -0
- package/dist/runtime/auto.d.ts.map +1 -0
- package/dist/runtime/auto.js +5 -0
- package/dist/runtime/auto.js.map +1 -0
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +205 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/styles.css +46 -8
- package/package.json +8 -2
- /package/dist/primitives/{navigation.css → navigation/styles.css} +0 -0
- /package/dist/primitives/{progress.css → progress/styles.css} +0 -0
package/README.md
CHANGED
|
@@ -50,6 +50,10 @@ inside the shell.
|
|
|
50
50
|
|
|
51
51
|
The catalogue is isolated behind `@ketvietlab/design-system/catalogue`, so the
|
|
52
52
|
production entry point does not load its specimen data or catalogue chrome.
|
|
53
|
+
Its registry connects every public component to an owner, maturity, supported
|
|
54
|
+
states and a rendered specimen. Component implementation and selector-bearing CSS
|
|
55
|
+
live below per-component-family directories; consumers still import only from the
|
|
56
|
+
package root.
|
|
53
57
|
|
|
54
58
|
Run the component catalogue from the repository root:
|
|
55
59
|
|
|
@@ -60,6 +64,20 @@ npm run design:system
|
|
|
60
64
|
|
|
61
65
|
Then open `http://127.0.0.1:4100`.
|
|
62
66
|
|
|
67
|
+
Open `http://127.0.0.1:4100/inventory` for the documentation-style governance
|
|
68
|
+
registry. It lists current public exports, the KetSuite compatibility kit, and
|
|
69
|
+
the planned component catalog with ownership, maturity, Wave, evidence posture,
|
|
70
|
+
and promotion decisions. Filters are URL-owned and work without client JavaScript.
|
|
71
|
+
|
|
72
|
+
Regenerate and verify its source snapshot with:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Run from: ketjs/
|
|
76
|
+
npm run design:inventory
|
|
77
|
+
npm run design:inventory:check
|
|
78
|
+
npm run design:governance:check
|
|
79
|
+
```
|
|
80
|
+
|
|
63
81
|
### Operational demo
|
|
64
82
|
|
|
65
83
|
Run the same app on a separate port to inspect a connected sales workflow:
|
|
@@ -143,6 +161,27 @@ open automatically. Give repeated search/sort controls unique IDs. Loading links
|
|
|
143
161
|
are disabled, and empty query rows do not occupy space.
|
|
144
162
|
|
|
145
163
|
Route-modal focus trapping, background inertness, Escape, focus restoration and
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
164
|
+
anchored positioning are provided by the optional `attachDesignSystemInteractions`
|
|
165
|
+
adapter. Route state, unsaved-change decisions and submit outcomes remain application
|
|
166
|
+
responsibilities. Menu, popover, tooltip, dialog, toast, spinner and skeleton renderers
|
|
167
|
+
retain native links/forms and useful no-script behavior. See the backend development
|
|
168
|
+
guide for the full composition and integration contract.
|
|
169
|
+
|
|
170
|
+
Typed form exports cover scalar and selection fields, controlled combobox/tag pickers,
|
|
171
|
+
civil date and local-time values, native file inputs, and a generic relation renderer.
|
|
172
|
+
Applications retain validation, query, permission, timezone, upload, and persistence
|
|
173
|
+
ownership; renderers preserve submitted text and expose native fallbacks.
|
|
174
|
+
|
|
175
|
+
Data-operation exports compose URL-owned search/filter/sort/view state, one-link
|
|
176
|
+
resource rows, bounded grids, hierarchy, and inline native forms. The package renders
|
|
177
|
+
state and carries version tokens; application adapters own persistence, conflicts,
|
|
178
|
+
permissions, cross-page selection, and dataset queries.
|
|
179
|
+
|
|
180
|
+
Record composition exports cover facts, people, formatted values, one identity summary,
|
|
181
|
+
one neutral rail, activity/audit, attachments, and media. Applications pass authorized,
|
|
182
|
+
redacted results and retain storage and mutation ownership. Catalogue recipes vary slots
|
|
183
|
+
within `ListPage`, `RecordPage`, and `WorkspacePage`; they do not add a fourth page pattern.
|
|
184
|
+
|
|
185
|
+
Before release, run `npm run design:release:check` from the repository root. It
|
|
186
|
+
requires zero planned components, current migration/rollback notes, and locked
|
|
187
|
+
deprecation admission. Publishing remains a post-merge operation from `master`.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# KetAtlas design-system adapter
|
|
2
|
+
|
|
3
|
+
KetAtlas is not coupled to Két. A design system can expose a generic
|
|
4
|
+
`ketatlas.design-system-adapter.v1` descriptor. Only its identity and assets are required. A descriptor
|
|
5
|
+
may additionally declare a materializer and verification lock, document-root requirements, a composition
|
|
6
|
+
API, or state ownership. This lets a CSS-only library, Web Components package, server renderer or
|
|
7
|
+
JavaScript component system implement the same protocol without pretending to expose Két's runtime.
|
|
8
|
+
The JSON Schema in this folder is the portable contract; `profile.json` is one Két implementation.
|
|
9
|
+
|
|
10
|
+
Without a materializer, asset paths resolve relative to the descriptor (and may be absolute URLs). With
|
|
11
|
+
a materializer, they resolve relative to the target atlas after the declared command runs. KetAtlas must
|
|
12
|
+
only consume optional capabilities that are actually declared.
|
|
13
|
+
|
|
14
|
+
KetAtlas screens run as self-contained HTML documents in an opaque iframe. This adapter therefore ships
|
|
15
|
+
a materializer instead of requiring module imports inside each screen.
|
|
16
|
+
|
|
17
|
+
From a built KetJS checkout or an installed package, run:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
ket-design-system-atlas materialize path/to/ui-mockups
|
|
21
|
+
ket-design-system-atlas check path/to/ui-mockups
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The command requires `atlas.json` in the target directory and manages four files:
|
|
25
|
+
|
|
26
|
+
- `assets/ket-design-system.css`: the public stylesheet with local imports inlined;
|
|
27
|
+
- `assets/ket-design-system-contracts.js`: canonical SSR page and layout templates;
|
|
28
|
+
- `assets/ket-design-system-runtime.js`: the classic-script keyboard, overlay and focus runtime;
|
|
29
|
+
- `design-system.lock.json`: package version, component count and SHA-256 hashes.
|
|
30
|
+
|
|
31
|
+
Consumers must read `profile.json` instead of assuming these Két-specific filenames or attributes. For
|
|
32
|
+
this adapter, link the declared CSS and classic scripts, add `data-kv-design-system` to the document root,
|
|
33
|
+
and compose page slots through `window.ATLAS_DESIGN_SYSTEM.templates` using the
|
|
34
|
+
`__ATLAS_SLOT_{NAME}__` pattern. Atlas-specific CSS may describe business content, but must not copy
|
|
35
|
+
component markup or override semantic design tokens.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://ketatlas.dev/schemas/design-system-adapter.v1.json",
|
|
4
|
+
"title": "KetAtlas design-system adapter",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "id", "assets"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"$schema": { "type": "string" },
|
|
10
|
+
"schemaVersion": { "const": "ketatlas.design-system-adapter.v1" },
|
|
11
|
+
"id": { "type": "string", "minLength": 1 },
|
|
12
|
+
"materializer": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": ["command", "writeArguments", "checkArguments", "lockFile"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"command": { "type": "string", "minLength": 1 },
|
|
18
|
+
"writeArguments": { "$ref": "#/$defs/arguments" },
|
|
19
|
+
"checkArguments": { "$ref": "#/$defs/arguments" },
|
|
20
|
+
"lockFile": { "type": "string", "minLength": 1 }
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"document": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"additionalProperties": false,
|
|
26
|
+
"minProperties": 1,
|
|
27
|
+
"properties": {
|
|
28
|
+
"rootAttribute": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"required": ["name"],
|
|
32
|
+
"properties": {
|
|
33
|
+
"name": { "type": "string", "minLength": 1 },
|
|
34
|
+
"value": { "type": "string" }
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"scriptMode": { "enum": ["classic", "module", "none"] }
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"assets": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"minItems": 1,
|
|
43
|
+
"items": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"additionalProperties": false,
|
|
46
|
+
"required": ["kind", "path", "load"],
|
|
47
|
+
"properties": {
|
|
48
|
+
"kind": { "enum": ["stylesheet", "script", "font", "image", "other"] },
|
|
49
|
+
"path": { "type": "string", "minLength": 1 },
|
|
50
|
+
"load": { "enum": ["head", "body-start", "body-end", "manual"] }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"composition": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"additionalProperties": false,
|
|
57
|
+
"minProperties": 1,
|
|
58
|
+
"properties": {
|
|
59
|
+
"global": { "type": "string", "minLength": 1 },
|
|
60
|
+
"templatesProperty": { "type": "string", "minLength": 1 },
|
|
61
|
+
"attachProperty": { "type": "string", "minLength": 1 },
|
|
62
|
+
"slotPattern": { "type": "string", "pattern": "\\{NAME\\}" },
|
|
63
|
+
"hookAttribute": { "type": "string", "minLength": 1 }
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"inventory": { "type": "string" },
|
|
67
|
+
"stateOwnership": { "enum": ["url", "memory", "storage", "host"] },
|
|
68
|
+
"rules": { "type": "array", "items": { "type": "string" } }
|
|
69
|
+
},
|
|
70
|
+
"$defs": {
|
|
71
|
+
"arguments": {
|
|
72
|
+
"type": "array",
|
|
73
|
+
"minItems": 1,
|
|
74
|
+
"items": { "type": "string" },
|
|
75
|
+
"contains": { "const": "{atlasDirectory}" }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./adapter.schema.json",
|
|
3
|
+
"schemaVersion": "ketatlas.design-system-adapter.v1",
|
|
4
|
+
"id": "@ketvietlab/design-system",
|
|
5
|
+
"materializer": {
|
|
6
|
+
"command": "ket-design-system-atlas",
|
|
7
|
+
"writeArguments": ["materialize", "{atlasDirectory}"],
|
|
8
|
+
"checkArguments": ["check", "{atlasDirectory}"],
|
|
9
|
+
"lockFile": "design-system.lock.json"
|
|
10
|
+
},
|
|
11
|
+
"document": {
|
|
12
|
+
"rootAttribute": { "name": "data-kv-design-system" },
|
|
13
|
+
"scriptMode": "classic"
|
|
14
|
+
},
|
|
15
|
+
"assets": [
|
|
16
|
+
{ "kind": "stylesheet", "path": "assets/ket-design-system.css", "load": "head" },
|
|
17
|
+
{
|
|
18
|
+
"kind": "script",
|
|
19
|
+
"path": "assets/ket-design-system-contracts.js",
|
|
20
|
+
"load": "body-end"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"kind": "script",
|
|
24
|
+
"path": "assets/ket-design-system-runtime.js",
|
|
25
|
+
"load": "body-end"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"composition": {
|
|
29
|
+
"global": "ATLAS_DESIGN_SYSTEM",
|
|
30
|
+
"templatesProperty": "templates",
|
|
31
|
+
"attachProperty": "attach",
|
|
32
|
+
"slotPattern": "__ATLAS_SLOT_{NAME}__",
|
|
33
|
+
"hookAttribute": "data-ui"
|
|
34
|
+
},
|
|
35
|
+
"inventory": "@ketvietlab/design-system/catalogue/inventory.json",
|
|
36
|
+
"stateOwnership": "url",
|
|
37
|
+
"rules": [
|
|
38
|
+
"Compose screens from generated page contracts and public hooks.",
|
|
39
|
+
"Keep business copy and domain-specific layout in the atlas.",
|
|
40
|
+
"Do not copy upstream component markup or override semantic design tokens.",
|
|
41
|
+
"Commit the generated lock and verify it before review."
|
|
42
|
+
]
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atlas-cli.d.ts","sourceRoot":"","sources":["../../../../packages/design-system/src/atlas-cli.ts"],"names":[],"mappings":";AAuNA,eAAO,MAAM,4BAA4B,cAC5B,MAAM,SACX,aAAa,GAAG,OAAO,KAC5B,IAwBF,CAAA"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
4
|
+
import { dirname, join, relative, resolve } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { renderToString } from '@ketvietlab/ketjs-view';
|
|
7
|
+
import { AppShell, ListPage, Metric, RecordPage, Section, Surface, WorkspacePage } from './index.js';
|
|
8
|
+
const sourceDirectory = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const packageJsonPath = [
|
|
10
|
+
resolve(sourceDirectory, '../package.json'),
|
|
11
|
+
resolve(sourceDirectory, '../../../../packages/design-system/package.json'),
|
|
12
|
+
].find((candidate) => existsSync(candidate));
|
|
13
|
+
if (!packageJsonPath)
|
|
14
|
+
throw new Error('Cannot locate @ketvietlab/design-system package.json');
|
|
15
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
|
|
16
|
+
const profile = JSON.parse(readFileSync(join(sourceDirectory, 'atlas/profile.json'), 'utf8'));
|
|
17
|
+
const inventory = JSON.parse(readFileSync(join(sourceDirectory, 'catalogue/inventory.generated.json'), 'utf8'));
|
|
18
|
+
const marker = (name) => profile.composition.slotPattern.replace('{NAME}', name.toUpperCase());
|
|
19
|
+
const markers = {
|
|
20
|
+
actions: marker('actions'),
|
|
21
|
+
aside: marker('aside'),
|
|
22
|
+
asideLabel: marker('aside_label'),
|
|
23
|
+
body: marker('body'),
|
|
24
|
+
context: marker('context'),
|
|
25
|
+
controls: marker('controls'),
|
|
26
|
+
description: marker('description'),
|
|
27
|
+
detail: marker('detail'),
|
|
28
|
+
label: marker('label'),
|
|
29
|
+
main: marker('main'),
|
|
30
|
+
meta: marker('meta'),
|
|
31
|
+
navigation: marker('navigation'),
|
|
32
|
+
sidebar: marker('sidebar'),
|
|
33
|
+
status: marker('status'),
|
|
34
|
+
title: marker('title'),
|
|
35
|
+
value: marker('value'),
|
|
36
|
+
};
|
|
37
|
+
const assetPath = (kind, name) => {
|
|
38
|
+
const asset = profile.assets.find((candidate) => candidate.kind === kind && candidate.path.includes(name));
|
|
39
|
+
if (!asset)
|
|
40
|
+
throw new Error(`Két adapter profile is missing its ${name} ${kind} asset`);
|
|
41
|
+
return asset.path;
|
|
42
|
+
};
|
|
43
|
+
const sha256 = (source) => createHash('sha256').update(source).digest('hex');
|
|
44
|
+
const normalizedRepository = (value) => value?.replace(/^git\+/u, '').replace(/\.git$/u, '') ?? null;
|
|
45
|
+
const bundleCss = (path, ancestors = []) => {
|
|
46
|
+
const absolute = resolve(path);
|
|
47
|
+
if (ancestors.includes(absolute))
|
|
48
|
+
throw new Error(`Circular design-system CSS import: ${[...ancestors, absolute].join(' -> ')}`);
|
|
49
|
+
const source = readFileSync(absolute, 'utf8');
|
|
50
|
+
return source.replace(/^@import\s+["']([^"']+)["'];\s*$/gmu, (_statement, request) => {
|
|
51
|
+
if (!request.startsWith('.'))
|
|
52
|
+
throw new Error(`External CSS import is not materializable: ${request}`);
|
|
53
|
+
const imported = resolve(dirname(absolute), request);
|
|
54
|
+
const label = relative(sourceDirectory, imported).replaceAll('\\', '/');
|
|
55
|
+
return `/* inlined: ${label} */\n${bundleCss(imported, [...ancestors, absolute]).trimEnd()}`;
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const renderContracts = () => {
|
|
59
|
+
const templates = {
|
|
60
|
+
list: renderToString(ListPage({
|
|
61
|
+
title: markers.title,
|
|
62
|
+
context: markers.context,
|
|
63
|
+
description: markers.description,
|
|
64
|
+
actions: markers.actions,
|
|
65
|
+
controls: markers.controls,
|
|
66
|
+
status: markers.status,
|
|
67
|
+
body: markers.body,
|
|
68
|
+
variant: 'operational',
|
|
69
|
+
})),
|
|
70
|
+
record: renderToString(RecordPage({
|
|
71
|
+
title: markers.title,
|
|
72
|
+
context: markers.context,
|
|
73
|
+
description: markers.description,
|
|
74
|
+
status: markers.status,
|
|
75
|
+
actions: markers.actions,
|
|
76
|
+
meta: markers.meta,
|
|
77
|
+
navigation: markers.navigation,
|
|
78
|
+
body: markers.body,
|
|
79
|
+
aside: markers.aside,
|
|
80
|
+
asideLabel: markers.asideLabel,
|
|
81
|
+
variant: 'operational',
|
|
82
|
+
})),
|
|
83
|
+
'record-solo': renderToString(RecordPage({
|
|
84
|
+
title: markers.title,
|
|
85
|
+
context: markers.context,
|
|
86
|
+
description: markers.description,
|
|
87
|
+
status: markers.status,
|
|
88
|
+
actions: markers.actions,
|
|
89
|
+
meta: markers.meta,
|
|
90
|
+
navigation: markers.navigation,
|
|
91
|
+
body: markers.body,
|
|
92
|
+
variant: 'operational',
|
|
93
|
+
})),
|
|
94
|
+
flow: renderToString(WorkspacePage({
|
|
95
|
+
title: markers.title,
|
|
96
|
+
context: markers.context,
|
|
97
|
+
description: markers.description,
|
|
98
|
+
status: markers.status,
|
|
99
|
+
actions: markers.actions,
|
|
100
|
+
controls: markers.controls,
|
|
101
|
+
body: markers.body,
|
|
102
|
+
layout: 'flow',
|
|
103
|
+
variant: 'operational',
|
|
104
|
+
})),
|
|
105
|
+
canvas: renderToString(WorkspacePage({
|
|
106
|
+
title: markers.title,
|
|
107
|
+
context: markers.context,
|
|
108
|
+
description: markers.description,
|
|
109
|
+
status: markers.status,
|
|
110
|
+
actions: markers.actions,
|
|
111
|
+
controls: markers.controls,
|
|
112
|
+
body: markers.body,
|
|
113
|
+
layout: 'canvas',
|
|
114
|
+
variant: 'operational',
|
|
115
|
+
})),
|
|
116
|
+
shell: renderToString(AppShell({ sidebar: markers.sidebar, main: markers.main, mode: 'viewport' })),
|
|
117
|
+
surface: renderToString(Surface({ body: markers.body })),
|
|
118
|
+
'surface-none': renderToString(Surface({ body: markers.body, padding: 'none' })),
|
|
119
|
+
section: renderToString(Surface({
|
|
120
|
+
body: Section({
|
|
121
|
+
title: markers.title,
|
|
122
|
+
description: markers.description,
|
|
123
|
+
actions: markers.actions,
|
|
124
|
+
body: markers.body,
|
|
125
|
+
}),
|
|
126
|
+
})),
|
|
127
|
+
metric: renderToString(Metric({ label: markers.label, value: markers.value, detail: markers.detail })),
|
|
128
|
+
};
|
|
129
|
+
const revision = process.env.KET_DESIGN_SYSTEM_REVISION ?? packageJson.version;
|
|
130
|
+
const global = JSON.stringify(profile.composition.global);
|
|
131
|
+
const property = JSON.stringify(profile.composition.templatesProperty);
|
|
132
|
+
return `/* Generated by ${packageJson.name}@${packageJson.version} (${revision}). Do not edit. */\nwindow[${global}] = window[${global}] || {};\nwindow[${global}][${property}] = ${JSON.stringify(templates)};\n`;
|
|
133
|
+
};
|
|
134
|
+
const renderRuntime = () => {
|
|
135
|
+
const moduleSource = readFileSync(join(sourceDirectory, 'runtime/index.js'), 'utf8');
|
|
136
|
+
const classicSource = moduleSource.replace('export const attachDesignSystemInteractions', 'const attachDesignSystemInteractions');
|
|
137
|
+
if (classicSource === moduleSource || /\bexport\s/u.test(classicSource))
|
|
138
|
+
throw new Error('Design-system runtime can no longer be converted to a classic KetAtlas script');
|
|
139
|
+
const global = JSON.stringify(profile.composition.global);
|
|
140
|
+
const property = JSON.stringify(profile.composition.attachProperty);
|
|
141
|
+
return `${classicSource.trimEnd()}\n\nwindow[${global}] = window[${global}] || {};\nwindow[${global}][${property}] = attachDesignSystemInteractions;\nif (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => attachDesignSystemInteractions(), { once: true })\n} else {\n attachDesignSystemInteractions()\n}\n`;
|
|
142
|
+
};
|
|
143
|
+
const expectedMaterialization = () => {
|
|
144
|
+
const css = `${bundleCss(join(sourceDirectory, 'styles.css')).trimEnd()}\n`;
|
|
145
|
+
const contracts = renderContracts();
|
|
146
|
+
const runtime = renderRuntime();
|
|
147
|
+
const files = [
|
|
148
|
+
{ path: assetPath('stylesheet', 'design-system'), content: css },
|
|
149
|
+
{ path: assetPath('script', 'contracts'), content: contracts },
|
|
150
|
+
{ path: assetPath('script', 'runtime'), content: runtime },
|
|
151
|
+
];
|
|
152
|
+
const lock = {
|
|
153
|
+
schemaVersion: 'ketatlas.design-system-lock.v1',
|
|
154
|
+
adapterSchemaVersion: profile.schemaVersion,
|
|
155
|
+
adapter: profile.id,
|
|
156
|
+
source: packageJson.name,
|
|
157
|
+
version: packageJson.version,
|
|
158
|
+
revision: process.env.KET_DESIGN_SYSTEM_REVISION ?? packageJson.version,
|
|
159
|
+
repository: normalizedRepository(packageJson.repository?.url),
|
|
160
|
+
materialization: 'Exact public CSS with local imports inlined; canonical SSR contracts; no token overrides.',
|
|
161
|
+
registeredComponents: inventory.summary.registeredComponents,
|
|
162
|
+
files: files.map((file) => ({ path: file.path, sha256: sha256(file.content) })),
|
|
163
|
+
};
|
|
164
|
+
return { files, lock: `${JSON.stringify(lock, null, 2)}\n` };
|
|
165
|
+
};
|
|
166
|
+
const requireAtlas = (directory) => {
|
|
167
|
+
const target = resolve(directory);
|
|
168
|
+
if (!existsSync(join(target, 'atlas.json')))
|
|
169
|
+
throw new Error(`KetAtlas project not found: ${join(target, 'atlas.json')}`);
|
|
170
|
+
return target;
|
|
171
|
+
};
|
|
172
|
+
export const materializeAtlasDesignSystem = (directory, mode = 'materialize') => {
|
|
173
|
+
const target = requireAtlas(directory);
|
|
174
|
+
const expected = expectedMaterialization();
|
|
175
|
+
const files = [...expected.files, { path: profile.materializer.lockFile, content: expected.lock }];
|
|
176
|
+
if (mode === 'check') {
|
|
177
|
+
const stale = files.filter(({ path, content }) => {
|
|
178
|
+
const destination = join(target, path);
|
|
179
|
+
return !existsSync(destination) || readFileSync(destination, 'utf8') !== content;
|
|
180
|
+
});
|
|
181
|
+
if (stale.length)
|
|
182
|
+
throw new Error(`KetAtlas design-system materialization is stale: ${stale.map((file) => file.path).join(', ')}`);
|
|
183
|
+
process.stdout.write(`KetAtlas design system is current (${packageJson.version}, ${files.length} files).\n`);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
for (const { path, content } of files) {
|
|
187
|
+
const destination = join(target, path);
|
|
188
|
+
mkdirSync(dirname(destination), { recursive: true });
|
|
189
|
+
writeFileSync(destination, content);
|
|
190
|
+
}
|
|
191
|
+
process.stdout.write(`Materialized ${packageJson.name}@${packageJson.version} into ${target}.\n`);
|
|
192
|
+
};
|
|
193
|
+
const help = `ket-design-system-atlas — materialize the Két design system for self-contained HTML mockups
|
|
194
|
+
|
|
195
|
+
ket-design-system-atlas materialize <atlas-directory>
|
|
196
|
+
ket-design-system-atlas check <atlas-directory>
|
|
197
|
+
`;
|
|
198
|
+
const main = () => {
|
|
199
|
+
const [, , command = 'help', directory] = process.argv;
|
|
200
|
+
if (command === 'help' || command === '--help' || command === '-h') {
|
|
201
|
+
process.stdout.write(help);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if ((command !== 'materialize' && command !== 'check') || !directory) {
|
|
205
|
+
process.stderr.write(help);
|
|
206
|
+
process.exitCode = 1;
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
materializeAtlasDesignSystem(directory, command);
|
|
210
|
+
};
|
|
211
|
+
if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url))
|
|
212
|
+
main();
|
|
213
|
+
//# sourceMappingURL=atlas-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atlas-cli.js","sourceRoot":"","sources":["../../../../../packages/design-system/src/atlas-cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEpG,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/D,MAAM,eAAe,GAAG;IACtB,OAAO,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAC3C,OAAO,CAAC,eAAe,EAAE,iDAAiD,CAAC;CAC5E,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;AAC5C,IAAI,CAAC,eAAe;IAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;AAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAInE,CAAA;AACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAW3F,CAAA;AACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC1B,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,oCAAoC,CAAC,EAAE,MAAM,CAAC,CACjC,CAAA;AAElD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;AAC9G,MAAM,OAAO,GAAG;IACd,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;CACd,CAAA;AAEV,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1G,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAA;IACvF,OAAO,KAAK,CAAC,IAAI,CAAA;AACnB,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5F,MAAM,oBAAoB,GAAG,CAAC,KAAyB,EAAiB,EAAE,CACxE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAA;AAE9D,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,SAAS,GAAsB,EAAE,EAAU,EAAE;IAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAChG,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,qCAAqC,EAAE,CAAC,UAAU,EAAE,OAAe,EAAE,EAAE;QAC3F,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAA;QACtG,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACvE,OAAO,eAAe,KAAK,QAAQ,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAA;IAC9F,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAW,EAAE;IACnC,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,cAAc,CAClB,QAAQ,CAAC;YACP,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,aAAa;SACvB,CAAC,CACH;QACD,MAAM,EAAE,cAAc,CACpB,UAAU,CAAC;YACT,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,aAAa;SACvB,CAAC,CACH;QACD,aAAa,EAAE,cAAc,CAC3B,UAAU,CAAC;YACT,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,aAAa;SACvB,CAAC,CACH;QACD,IAAI,EAAE,cAAc,CAClB,aAAa,CAAC;YACZ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,aAAa;SACvB,CAAC,CACH;QACD,MAAM,EAAE,cAAc,CACpB,aAAa,CAAC;YACZ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,aAAa;SACvB,CAAC,CACH;QACD,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACnG,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAChF,OAAO,EAAE,cAAc,CACrB,OAAO,CAAC;YACN,IAAI,EAAE,OAAO,CAAC;gBACZ,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC;SACH,CAAC,CACH;QACD,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;KACvG,CAAA;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,WAAW,CAAC,OAAO,CAAA;IAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;IACtE,OAAO,mBAAmB,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,KAAK,QAAQ,8BAA8B,MAAM,cAAc,MAAM,oBAAoB,MAAM,KAAK,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAA;AACpN,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,GAAW,EAAE;IACjC,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAA;IACpF,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CACxC,6CAA6C,EAC7C,sCAAsC,CACvC,CAAA;IACD,IAAI,aAAa,KAAK,YAAY,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAA;IAClG,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;IACnE,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,cAAc,MAAM,cAAc,MAAM,oBAAoB,MAAM,KAAK,QAAQ,2OAA2O,CAAA;AAC7V,CAAC,CAAA;AAID,MAAM,uBAAuB,GAAG,GAAgD,EAAE;IAChF,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAA;IAC3E,MAAM,SAAS,GAAG,eAAe,EAAE,CAAA;IACnC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG;QACZ,EAAE,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;QAChE,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE;QAC9D,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;KAC3D,CAAA;IACD,MAAM,IAAI,GAAG;QACX,aAAa,EAAE,gCAAgC;QAC/C,oBAAoB,EAAE,OAAO,CAAC,aAAa;QAC3C,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,MAAM,EAAE,WAAW,CAAC,IAAI;QACxB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,WAAW,CAAC,OAAO;QACvE,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC;QAC7D,eAAe,EACb,2FAA2F;QAC7F,oBAAoB,EAAE,SAAS,CAAC,OAAO,CAAC,oBAAoB;QAC5D,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAChF,CAAA;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAU,EAAE;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;IAC9E,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,SAAiB,EACjB,IAAI,GAA4B,aAAa,EACvC,EAAE;IACR,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAA;IAC1C,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAClG,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACtC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,OAAO,CAAA;QAClF,CAAC,CAAC,CAAA;QACF,IAAI,KAAK,CAAC,MAAM;YACd,MAAM,IAAI,KAAK,CACb,oDAAoD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChG,CAAA;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,WAAW,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,YAAY,CACvF,CAAA;QACD,OAAM;IACR,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACtC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,SAAS,MAAM,KAAK,CAAC,CAAA;AACnG,CAAC,CAAA;AAED,MAAM,IAAI,GAAG;;;;CAIZ,CAAA;AAED,MAAM,IAAI,GAAG,GAAS,EAAE;IACtB,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,GAAG,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAA;IACtD,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAM;IACR,CAAC;IACD,IAAI,CAAC,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACR,CAAC;IACD,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAClD,CAAC,CAAA;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC;IAAE,IAAI,EAAE,CAAA"}
|