@tmorrow/cre8-wc 2.1.1 → 2.2.2
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/a2ui/catalog-kg.json +441 -299
- package/a2ui/catalog.compact.json +27 -3
- package/a2ui/catalog.json +88 -2
- package/a2ui/demo.html +11 -2
- package/a2ui/generate-catalog-kg.mjs +122 -0
- package/cdn/cre8-wc.esm.js +2081 -1863
- package/cdn/cre8-wc.esm.js.map +1 -1
- package/cdn/cre8-wc.min.js +275 -257
- package/cdn/cre8-wc.min.js.map +1 -1
- package/dist/assets/{Changelog-Documentation-CeOetLxK.js → Changelog-Documentation-DAkpnvjl.js} +1 -1
- package/dist/assets/{Code-Guidelines-BjdezAjj.js → Code-Guidelines-BaDD3Qt-.js} +1 -1
- package/dist/assets/{Color-6AOWCN3U-DPFGZitI.js → Color-6AOWCN3U-Br-VT4Nz.js} +1 -1
- package/dist/assets/{Contributing-Guidelines-B1M2V1hW.js → Contributing-Guidelines-CcP9zakB.js} +1 -1
- package/dist/assets/{DocsRenderer-JROSPFPF-BBy8KWNl.js → DocsRenderer-JROSPFPF-yAlipAFi.js} +1 -1
- package/dist/assets/{Tokens-Documentation-CdTxFDLe.js → Tokens-Documentation-C7AoT8M_.js} +1 -1
- package/dist/assets/{WithTooltip-7X4HQR7L-DZzTNMQ7.js → WithTooltip-7X4HQR7L-DGAfa3Vb.js} +1 -1
- package/dist/assets/{accordion-item.stories-Bl26JlHp.js → accordion-item.stories-BZFx3mtU.js} +9 -1
- package/dist/assets/{accordion.stories-DjoLApQw.js → accordion.stories-Bvj-QGNl.js} +22 -14
- package/dist/assets/address-form.stories-CseRFoqX.js +71 -0
- package/dist/assets/{alert.stories-pO1y3YCQ.js → alert.stories-CbICvjHf.js} +31 -15
- package/dist/assets/{badge-BTxW3bN2.js → badge-UrvSTJon.js} +11 -3
- package/dist/assets/{badge.stories-vqh63RJ2.js → badge.stories-DOZqQX5K.js} +7 -8
- package/dist/assets/{band.stories-CjKRppSb.js → band.stories-CK_yg4DT.js} +9 -1
- package/dist/assets/{blocks-1be_-L6v.js → blocks-Du1uvPRr.js} +5 -5
- package/dist/assets/{breadcrumbs.stories-Doyfy3V9.js → breadcrumbs.stories-D7yO08QU.js} +25 -9
- package/dist/assets/{button-CgaWukz0.js → button-BCRNRwfX.js} +9 -1
- package/dist/assets/{button-group-G7qN4MwM.js → button-group-CwodvBV3.js} +9 -1
- package/dist/assets/{button-group.stories-cL3Kay6M.js → button-group.stories-DqUGrtzO.js} +1 -1
- package/dist/assets/{button.stories-C9HSpxWb.js → button.stories-CsEf8OvS.js} +1 -1
- package/dist/assets/{card.stories-BbU8YymD.js → card-DSDkldbr.js} +14 -50
- package/dist/assets/card.stories-DBa0yvbU.js +45 -0
- package/dist/assets/{chart.stories-BL4FxIA_.js → chart.stories-DS4mwVqy.js} +3 -3
- package/dist/assets/{checkbox-field-item-DIMHcWM0.js → checkbox-field-item-sISvPESD.js} +9 -1
- package/dist/assets/{checkbox-field-item.stories-XbB4x_lO.js → checkbox-field-item.stories-BCvdJgaW.js} +1 -1
- package/dist/assets/{checkbox-field.stories-YnqFUI4K.js → checkbox-field.stories-DnG0eNYV.js} +20 -12
- package/dist/assets/cre8-element-q82VmUgi.js +1 -0
- package/dist/assets/cre8-form-element-Bk9Cy3PA.js +1 -0
- package/dist/assets/{danger-button.stories-xh25hmfd.js → danger-button.stories-UbeDkyI-.js} +9 -1
- package/dist/assets/{date-picker.stories-DD_ctzEF.js → date-picker.stories-B1SKYMVQ.js} +51 -3
- package/dist/assets/{divider-xZ2KARHf.js → divider-Bci4ZIK6.js} +10 -2
- package/dist/assets/{divider.stories-Bk9oF-OV.js → divider.stories-BhUpwAzD.js} +1 -1
- package/dist/assets/{dropdown-BEP5x3CW.js → dropdown-CbkVYKEV.js} +25 -9
- package/dist/assets/dropdown-item.stories-C3cFlIXo.js +26 -0
- package/dist/assets/{dropdown.stories-B0OlKD7h.js → dropdown.stories-DNo1ezrT.js} +2 -2
- package/dist/assets/{f-po-BdPzDRD-.js → f-po-CGwWqyus.js} +1 -1
- package/dist/assets/{feature.stories-DYE1Js70.js → feature.stories-B1bhPf5C.js} +9 -1
- package/dist/assets/field-V4dGu-vp.js +44 -0
- package/dist/assets/{field-note-fccBckVl.js → field-note-CI4Ca7JE.js} +11 -3
- package/dist/assets/{field-note.stories-BH9AZMbF.js → field-note.stories-qXAywEeq.js} +1 -1
- package/dist/assets/{field.stories-BQPtmziK.js → field.stories-CQf9a7bv.js} +6 -6
- package/dist/assets/{field-BpUYyRW1.js → field.styles-CiOFAoAG.js} +12 -45
- package/dist/assets/{footer.stories-DCWEciqD.js → footer.stories-C7TG2Cky.js} +9 -1
- package/dist/assets/form-DHk8aePA.js +17 -0
- package/dist/assets/form.stories-CJ9sqwpA.js +75 -0
- package/dist/assets/{formatter-L2YTDE3Q-B9u1AOWn.js → formatter-L2YTDE3Q-B-Ee-OPm.js} +1 -1
- package/dist/assets/{global-nav-item-T4htN-yO.js → global-nav-item-pjd1OC7i.js} +14 -6
- package/dist/assets/{global-nav-item.stories-2dWRfCXv.js → global-nav-item.stories-D6N0iKNQ.js} +1 -1
- package/dist/assets/{global-nav.stories-Fh1gScqg.js → global-nav.stories-CwJ0cKW_.js} +10 -2
- package/dist/assets/{grid-C5CKMXNe.js → grid-item-WCDk_zGh.js} +573 -557
- package/dist/assets/{grid.stories-BLmCNdeA.js → grid.stories-DR4e60eQ.js} +1 -1
- package/dist/assets/{header.stories-BkDrjJtj.js → header.stories-BUO2t2KS.js} +9 -1
- package/dist/assets/{heading-Dbka33DK.js → heading-Cux7lJt-.js} +10 -2
- package/dist/assets/{heading.stories-Be40_bmG.js → heading.stories-BlgEi0dB.js} +1 -1
- package/dist/assets/{hero.stories-vRu7PZG9.js → hero.stories-C853F5_Y.js} +9 -1
- package/dist/assets/{icon-ChfRWXWy.js → icon-ByzQuB0Z.js} +9 -1
- package/dist/assets/{icon.stories-Cj4U7L5G.js → icon.stories-DYCuJ4Rv.js} +1 -1
- package/dist/assets/if-defined-DWVEXvB4.js +1 -0
- package/dist/assets/{iframe-BNJP6ovU.js → iframe-CTa_pRc7.js} +142 -142
- package/dist/assets/iframe-CWwoGI65.css +1 -0
- package/dist/assets/{inline-alert.stories-CygBYI02.js → inline-alert.stories-C_R0hcQ4.js} +9 -1
- package/dist/assets/{layout-container.stories-TMyIJteJ.js → layout-container.stories-Bywbzd_L.js} +10 -2
- package/dist/assets/{layout.stories-ylRM-ANL.js → layout.stories-CI7XD-aG.js} +23 -7
- package/dist/assets/light-children-DDjBxt3J.js +1 -0
- package/dist/assets/{linelength-container.stories-Br2v8jXE.js → linelength-container.stories-DvwrIt8x.js} +9 -1
- package/dist/assets/{link-CRE0Eqdo.js → link-CkyZrqNv.js} +9 -1
- package/dist/assets/{link-list.stories--y-urrVo.js → link-list.stories-BrOT-y5d.js} +39 -23
- package/dist/assets/{link.stories-C3WQOgkY.js → link.stories-DvGexqBV.js} +1 -1
- package/dist/assets/{list.stories-Bd2bxkxn.js → list.stories-B2PmqPK-.js} +29 -13
- package/dist/assets/{loading-spinner-C52KNq6y.js → loading-spinner-D_r3kfYs.js} +12 -4
- package/dist/assets/{loading-spinner.stories-DPRGEeHT.js → loading-spinner.stories-B2GCLqqq.js} +1 -1
- package/dist/assets/{logo.stories-2LBqqraT.js → logo.stories-BK37XQOB.js} +9 -1
- package/dist/assets/{main.stories-BQzD7iWD.js → main.stories-DzXRavXL.js} +10 -2
- package/dist/assets/{modal-CCfbY4fF.js → modal-CRGEVzx5.js} +10 -2
- package/dist/assets/{modal-GglWRNJp.js → modal-frjOZV7F.js} +3 -3
- package/dist/assets/{modal.stories-CpybCs79.js → modal.stories-DPTsnRPI.js} +1 -1
- package/dist/assets/{multi-select.stories-BhzEKRui.js → multi-select.stories-DoNFngx3.js} +12 -4
- package/dist/assets/{nav-container.stories-Be1YlegP.js → nav-container.stories-BV0DiV1z.js} +11 -3
- package/dist/assets/{page-header.stories-BOVLQ0YF.js → page-header.stories-DGqzeCVS.js} +9 -1
- package/dist/assets/{pagination.stories-D62sa_1K.js → pagination.stories-DymlgiVw.js} +28 -12
- package/dist/assets/{percent-bar.stories-CYi4El7T.js → percent-bar.stories-BJd3Qi90.js} +11 -3
- package/dist/assets/{popover.stories-B9O8F4yv.js → popover.stories-0CnGKfM7.js} +11 -3
- package/dist/assets/{primary-nav.stories-Bt-o7h45.js → primary-nav.stories-DoEjkNEW.js} +17 -1
- package/dist/assets/{progress-meter-Dit59091.js → progress-meter-Ca-xdNNC.js} +9 -1
- package/dist/assets/{progress-meter.stories-CYnOCmjo.js → progress-meter.stories-CiwBm4ND.js} +1 -1
- package/dist/assets/{progress-steps-item-CWJsad0s.js → progress-steps-item-XkO_k158.js} +9 -1
- package/dist/assets/{progress-steps-item.stories-ePn_6bPn.js → progress-steps-item.stories-ikJlzkED.js} +1 -1
- package/dist/assets/{progress-steps.stories-CblrEcXF.js → progress-steps.stories-ezsJjY7f.js} +37 -29
- package/dist/assets/{radio-field-item-Bm-0RWPe.js → radio-field-item-gOof1xz7.js} +31 -15
- package/dist/assets/{radio-field-item.stories-y_TrTRIW.js → radio-field-item.stories-Bg7NJuid.js} +6 -6
- package/dist/assets/{radio-field.stories-CSWrbUrn.js → radio-field.stories-CwqXSLAA.js} +2 -2
- package/dist/assets/{remove-tag-lCr57c5r.js → remove-tag-tJrDexqV.js} +10 -2
- package/dist/assets/{remove-tag.stories-CDfwCdvZ.js → remove-tag.stories-CANJ3xUD.js} +1 -1
- package/dist/assets/{sample-modal.stories-BZ4N2R2Z.js → sample-modal.stories-CAZBmR1N.js} +4 -4
- package/dist/assets/{section.stories-D_1InThX.js → section.stories-Dbw4FBo8.js} +9 -1
- package/dist/assets/{select-tile-BqqB3ZtE.js → select-tile-DbEfRqPZ.js} +10 -2
- package/dist/assets/{select-tile-list.stories-Di4ILgV8.js → select-tile-list.stories-BWIbF_U7.js} +9 -1
- package/dist/assets/{select-tile.stories-D3h_6zlV.js → select-tile.stories-DWzrgGaK.js} +1 -1
- package/dist/assets/{select.stories-BB2phP9A.js → select.stories-DP29QG7D.js} +9 -1
- package/dist/assets/sign-in.stories-BYo2rxIQ.js +63 -0
- package/dist/assets/{skeleton-loader.stories-y4uml_kV.js → skeleton-loader.stories-B1cPTECY.js} +13 -5
- package/dist/assets/{split-button.stories-C_82I4ME.js → split-button.stories-DlxT6EYF.js} +12 -4
- package/dist/assets/{spread-CnPic3C2.js → spread-B518TqwY.js} +1 -1
- package/dist/assets/state-C6YC-MeJ.js +1 -0
- package/dist/assets/{submenu.stories-UDtaREr1.js → submenu.stories-BT13dETW.js} +18 -2
- package/dist/assets/{syntaxhighlighter-T5IQBZDB-D-I_s_yD.js → syntaxhighlighter-T5IQBZDB-DkhjPTlq.js} +1 -1
- package/dist/assets/{table-header-2837i43H.js → table-header-DMiTn2zX.js} +81 -33
- package/dist/assets/{table-object.stories-D4KoI-wA.js → table-object.stories-D2dcUZ2O.js} +11 -3
- package/dist/assets/{table.stories-DUJDibEp.js → table.stories-BXu1RY5-.js} +2 -2
- package/dist/assets/{tabs.stories-C06SngOF.js → tabs.stories-B9tPcDRI.js} +34 -10
- package/dist/assets/{tag-oHGdclJl.js → tag-AWpjXoCW.js} +9 -1
- package/dist/assets/{tag-list.stories-Du-IoYzu.js → tag-list.stories-CiqM7sIX.js} +21 -13
- package/dist/assets/{tag.stories-C5D5IbuK.js → tag.stories-BcbkBkLR.js} +1 -1
- package/dist/assets/{tertiary-nav.stories-B1GU8Zi4.js → tertiary-nav.stories-CuP_odo_.js} +19 -3
- package/dist/assets/{text-link-B3m3KEqY.js → text-link-DWpfqc0H.js} +9 -1
- package/dist/assets/{text-link.stories-4O6qn82H.js → text-link.stories-BSQQ8Bf8.js} +1 -1
- package/dist/assets/{text-passage-xQVosjOr.js → text-passage-C-tu1uRd.js} +19 -3
- package/dist/assets/{text-passage.stories-Da1nspwG.js → text-passage.stories-qCVobGhn.js} +1 -1
- package/dist/assets/{tooltip.stories-DLKyyeKn.js → tooltip.stories-CcxLUUaE.js} +16 -8
- package/dist/assets/{utility-nav.stories-B6xBFe7z.js → utility-nav.stories-CmUYbo0J.js} +21 -5
- package/dist/design-tokens/brands/cre8-a2ui/css/tokens_brand.css +4 -4
- package/dist/design-tokens/core/scss/theming/component.css +1 -1
- package/dist/design-tokens/core/scss/theming/variables.css +7 -1
- package/dist/design-tokens/core/scss/theming/variables.scss +11 -0
- package/dist/fonts/PlusJakartaSans-Bold.woff2 +0 -0
- package/dist/fonts/PlusJakartaSans-Medium.woff2 +0 -0
- package/dist/fonts/PlusJakartaSans-Regular.woff2 +0 -0
- package/dist/fonts/PlusJakartaSans-SemiBold.woff2 +0 -0
- package/dist/iframe.html +25 -2
- package/dist/index.html +82 -26
- package/dist/index.json +1 -1
- package/dist/logo.svg +1 -0
- package/dist/manifests/components.html +766 -0
- package/dist/manifests/docs.json +37 -0
- package/dist/project.json +1 -1
- package/dist/sb-addons/storybook-5/manager-bundle.js +8 -0
- package/dist/sb-addons/vitest-4/manager-bundle.js +3 -0
- package/lib/cdn-entry.d.ts +2 -1
- package/lib/cdn-entry.d.ts.map +1 -1
- package/lib/cdn-entry.js +2 -1
- package/lib/cdn-entry.js.map +1 -1
- package/lib/components/cre8-field.js +1 -1
- package/lib/components/cre8-form-element.d.ts +27 -0
- package/lib/components/cre8-form-element.d.ts.map +1 -1
- package/lib/components/cre8-form-element.js +65 -1
- package/lib/components/cre8-form-element.js.map +1 -1
- package/lib/components/field/field.styles.d.ts.map +1 -1
- package/lib/components/field/field.styles.js +4 -2
- package/lib/components/field/field.styles.js.map +1 -1
- package/lib/components/form/form.d.ts +87 -0
- package/lib/components/form/form.d.ts.map +1 -0
- package/lib/components/form/form.js +209 -0
- package/lib/components/form/form.js.map +1 -0
- package/lib/components/form/form.styles.d.ts +14 -0
- package/lib/components/form/form.styles.d.ts.map +1 -0
- package/lib/components/form/form.styles.js +31 -0
- package/lib/components/form/form.styles.js.map +1 -0
- package/lib/{cre8-form-element-BymRdQUC.js → cre8-form-element-CCzBYtDm.js} +85 -32
- package/lib/design-tokens/brands/cre8-a2ui/css/tokens_brand.css +4 -4
- package/lib/design-tokens/brands/cre8-a2ui/css/tokens_cre8-a2ui.module.d.ts +1 -1
- package/lib/design-tokens/brands/cre8-a2ui/css/tokens_cre8-a2ui.module.d.ts.map +1 -1
- package/lib/design-tokens/brands/cre8-a2ui/css/tokens_cre8-a2ui.module.js +4 -4
- package/lib/design-tokens/brands/cre8-a2ui/css/tokens_cre8-a2ui.module.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/scripts/generate-mcp-manifest.js +1 -0
- package/lib/scripts/generate-mcp-manifest.js.map +1 -1
- package/lib/toBeAccessible.d.ts +6 -5
- package/lib/toBeAccessible.d.ts.map +1 -1
- package/lib/toBeAccessible.js +1 -1
- package/lib/toBeAccessible.js.map +1 -1
- package/mcp-manifest.json +44 -1
- package/package.json +16 -13
- package/react-manifest.json +40 -2
- package/dist/assets/cre8-element-B35i4Lyg.js +0 -1
- package/dist/assets/cre8-form-element-Cfc5VeYV.js +0 -1
- package/dist/assets/dropdown-item.stories-Iaw_UrEP.js +0 -26
- package/dist/assets/example-drug-card.stories-Bp5JIeE_.js +0 -10
- package/dist/assets/form-example.stories-9IDC0AgX.js +0 -49
- package/dist/assets/icon-description-BBSwDykJ.js +0 -45
- package/dist/assets/icon-description.stories-Cg6ekOme.js +0 -3
- package/dist/assets/if-defined-Bxnzk64Q.js +0 -1
- package/dist/assets/medication-card.stories-Wc-hA0-s.js +0 -165
- package/dist/assets/medication-form.stories-DfFOCDaU.js +0 -57
- package/dist/assets/request-prescription.stories-O4zqokfb.js +0 -24
- package/dist/assets/state-DkQhleoO.js +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"contractVersion": 1,
|
|
3
|
-
"sourceCatalog": "https://cre8.dev/a2ui/catalogs/cre8-wc/2.
|
|
4
|
-
"libraryVersion": "2.
|
|
5
|
-
"componentCount":
|
|
3
|
+
"sourceCatalog": "https://cre8.dev/a2ui/catalogs/cre8-wc/2.2.0",
|
|
4
|
+
"libraryVersion": "2.2.0",
|
|
5
|
+
"componentCount": 86,
|
|
6
6
|
"components": [
|
|
7
7
|
{
|
|
8
8
|
"name": "cre8-accordion",
|
|
@@ -887,6 +887,30 @@
|
|
|
887
887
|
"bottom"
|
|
888
888
|
]
|
|
889
889
|
},
|
|
890
|
+
{
|
|
891
|
+
"name": "cre8-form",
|
|
892
|
+
"category": "Forms",
|
|
893
|
+
"props": {
|
|
894
|
+
"novalidate": {
|
|
895
|
+
"type": "boolean"
|
|
896
|
+
},
|
|
897
|
+
"disabled": {
|
|
898
|
+
"type": "boolean"
|
|
899
|
+
},
|
|
900
|
+
"controls": {
|
|
901
|
+
"type": "string"
|
|
902
|
+
},
|
|
903
|
+
"values": {
|
|
904
|
+
"type": "string"
|
|
905
|
+
}
|
|
906
|
+
},
|
|
907
|
+
"acceptsChildren": true,
|
|
908
|
+
"events": [
|
|
909
|
+
"form-submit",
|
|
910
|
+
"form-reset",
|
|
911
|
+
"form-invalid"
|
|
912
|
+
]
|
|
913
|
+
},
|
|
890
914
|
{
|
|
891
915
|
"name": "cre8-global-nav",
|
|
892
916
|
"category": "Navigation",
|
package/a2ui/catalog.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://cre8.dev/a2ui/catalogs/cre8-wc/2.
|
|
3
|
+
"$id": "https://cre8.dev/a2ui/catalogs/cre8-wc/2.2.0",
|
|
4
4
|
"title": "cre8-wc A2UI Catalog",
|
|
5
5
|
"description": "cre8 Web Components is a library of presentational UI web components to be consumed by # web applications.",
|
|
6
6
|
"x-native-events": [
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"x-a2ui": {
|
|
55
55
|
"catalogId": "cre8-wc",
|
|
56
56
|
"library": "@tmorrow/cre8-wc",
|
|
57
|
-
"libraryVersion": "2.
|
|
57
|
+
"libraryVersion": "2.2.0",
|
|
58
58
|
"tagPrefix": "cre8",
|
|
59
59
|
"framework": "Lit 3.3.1"
|
|
60
60
|
},
|
|
@@ -188,6 +188,9 @@
|
|
|
188
188
|
{
|
|
189
189
|
"$ref": "#/$defs/components/cre8-field-note"
|
|
190
190
|
},
|
|
191
|
+
{
|
|
192
|
+
"$ref": "#/$defs/components/cre8-form"
|
|
193
|
+
},
|
|
191
194
|
{
|
|
192
195
|
"$ref": "#/$defs/components/cre8-multi-select"
|
|
193
196
|
},
|
|
@@ -4102,6 +4105,89 @@
|
|
|
4102
4105
|
},
|
|
4103
4106
|
"additionalProperties": false
|
|
4104
4107
|
},
|
|
4108
|
+
"cre8-form": {
|
|
4109
|
+
"type": "object",
|
|
4110
|
+
"title": "cre8-form",
|
|
4111
|
+
"x-category": "Forms",
|
|
4112
|
+
"description": "The form component groups form-associated Cre8 controls, aggregates their\nvalidation on submit, and orchestrates submit and reset.\n\n# How to Use\n1. Place any Cre8 form controls inside `cre8-form`. They may be nested inside\n layout components such as `cre8-grid` or `cre8-layout`.\n2. Add a `cre8-button` with `type=\"submit\"` to submit the form.\n3. Listen for `form-submit` to receive the collected `FormData`.\n\nNote: this component renders to light DOM. A form-associated control's form\nowner is the nearest `<form>` in its own node tree, so a shadow-DOM `<form>`\nwould own nothing and `new FormData(form)` would come back empty.",
|
|
4113
|
+
"required": [
|
|
4114
|
+
"component"
|
|
4115
|
+
],
|
|
4116
|
+
"properties": {
|
|
4117
|
+
"component": {
|
|
4118
|
+
"const": "cre8-form",
|
|
4119
|
+
"description": "Component tag name"
|
|
4120
|
+
},
|
|
4121
|
+
"props": {
|
|
4122
|
+
"type": "object",
|
|
4123
|
+
"additionalProperties": false,
|
|
4124
|
+
"properties": {
|
|
4125
|
+
"novalidate": {
|
|
4126
|
+
"description": "Skips aggregate validation on submit.",
|
|
4127
|
+
"type": "boolean",
|
|
4128
|
+
"x-kind": "attribute"
|
|
4129
|
+
},
|
|
4130
|
+
"disabled": {
|
|
4131
|
+
"description": "Disables every control in the form, for example while submitting.",
|
|
4132
|
+
"type": "boolean",
|
|
4133
|
+
"x-kind": "attribute"
|
|
4134
|
+
},
|
|
4135
|
+
"controls": {
|
|
4136
|
+
"description": "Every form-associated Cre8 control owned by this form, in document order.\nReaches through layout components because slotting does not move nodes\nout of the light-DOM tree.",
|
|
4137
|
+
"type": "string",
|
|
4138
|
+
"x-tsType": "Cre8FormElement[]",
|
|
4139
|
+
"x-kind": "property"
|
|
4140
|
+
},
|
|
4141
|
+
"values": {
|
|
4142
|
+
"description": "The form's current values, derived from FormData.",
|
|
4143
|
+
"type": "string",
|
|
4144
|
+
"x-tsType": "Record<string, FormDataEntryValue | FormDataEntryValue[]>",
|
|
4145
|
+
"x-kind": "property"
|
|
4146
|
+
}
|
|
4147
|
+
}
|
|
4148
|
+
},
|
|
4149
|
+
"children": {
|
|
4150
|
+
"type": "array",
|
|
4151
|
+
"description": "The form's controls and layout.",
|
|
4152
|
+
"items": {
|
|
4153
|
+
"$ref": "#/$defs/Child"
|
|
4154
|
+
}
|
|
4155
|
+
},
|
|
4156
|
+
"events": {
|
|
4157
|
+
"type": "object",
|
|
4158
|
+
"description": "Event bindings. Each key is an event name; the value names the handler to emit.",
|
|
4159
|
+
"propertyNames": {
|
|
4160
|
+
"anyOf": [
|
|
4161
|
+
{
|
|
4162
|
+
"$ref": "#/$defs/NativeEventName"
|
|
4163
|
+
},
|
|
4164
|
+
{
|
|
4165
|
+
"enum": [
|
|
4166
|
+
"form-invalid",
|
|
4167
|
+
"form-reset",
|
|
4168
|
+
"form-submit"
|
|
4169
|
+
]
|
|
4170
|
+
}
|
|
4171
|
+
]
|
|
4172
|
+
},
|
|
4173
|
+
"additionalProperties": {
|
|
4174
|
+
"$ref": "#/$defs/EventBinding"
|
|
4175
|
+
}
|
|
4176
|
+
}
|
|
4177
|
+
},
|
|
4178
|
+
"additionalProperties": false,
|
|
4179
|
+
"x-events": {
|
|
4180
|
+
"form-submit": {
|
|
4181
|
+
"detail": {}
|
|
4182
|
+
},
|
|
4183
|
+
"form-reset": {
|
|
4184
|
+
"detail": {}
|
|
4185
|
+
},
|
|
4186
|
+
"form-invalid": {
|
|
4187
|
+
"detail": {}
|
|
4188
|
+
}
|
|
4189
|
+
}
|
|
4190
|
+
},
|
|
4105
4191
|
"cre8-multi-select": {
|
|
4106
4192
|
"type": "object",
|
|
4107
4193
|
"title": "cre8-multi-select",
|
package/a2ui/demo.html
CHANGED
|
@@ -8,13 +8,22 @@
|
|
|
8
8
|
rel="stylesheet"
|
|
9
9
|
href="../design-tokens/brands/cre8-a2ui/css/tokens_cre8-a2ui.css"
|
|
10
10
|
/>
|
|
11
|
+
<link
|
|
12
|
+
rel="stylesheet"
|
|
13
|
+
href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&family=Plus+Jakarta+Sans:wght@400;600&display=swap"
|
|
14
|
+
/>
|
|
15
|
+
<link
|
|
16
|
+
rel="stylesheet"
|
|
17
|
+
href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;600&family=Plus+Jakarta+Sans:wght@400;600&display=swap"
|
|
18
|
+
/>
|
|
19
|
+
|
|
11
20
|
<style>
|
|
12
21
|
html,
|
|
13
22
|
body {
|
|
14
23
|
margin: 0;
|
|
15
24
|
font-family:
|
|
16
|
-
|
|
17
|
-
|
|
25
|
+
'Plus Jakarta Sans',
|
|
26
|
+
'Open Sans',
|
|
18
27
|
sans-serif;
|
|
19
28
|
height: 100vh;
|
|
20
29
|
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates catalog-kg.json - the knowledge-graph projection of the a2ui
|
|
3
|
+
* catalog that cre8-mcp's KG-backed handlers serve.
|
|
4
|
+
*
|
|
5
|
+
* Deterministic: same catalog.json in, same graph out. Runs after
|
|
6
|
+
* generate-catalog.mjs (which derives catalog.json from mcp-manifest.json),
|
|
7
|
+
* so `build:a2ui` keeps manifest -> catalog -> catalog-kg aligned.
|
|
8
|
+
*
|
|
9
|
+
* Graph shape (consumed by packages/cre8-mcp/src/handlers.ts and
|
|
10
|
+
* surface-routes.ts):
|
|
11
|
+
* nodes: category (cat:<Name>), component (<tag>), slot (slot:<tag>:<name>),
|
|
12
|
+
* enum_prop (prop:<tag>:<prop>)
|
|
13
|
+
* edges: BELONGS_TO, HAS_SLOT, HAS_ENUM_PROP
|
|
14
|
+
*/
|
|
15
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
16
|
+
import { fileURLToPath } from 'node:url';
|
|
17
|
+
import { dirname, resolve } from 'node:path';
|
|
18
|
+
|
|
19
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
20
|
+
|
|
21
|
+
const catalogPath = resolve(__dirname, 'catalog.json');
|
|
22
|
+
const pkgPath = resolve(__dirname, '..', 'package.json');
|
|
23
|
+
const outPath = resolve(__dirname, 'catalog-kg.json');
|
|
24
|
+
|
|
25
|
+
const catalog = JSON.parse(readFileSync(catalogPath, 'utf8'));
|
|
26
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
27
|
+
|
|
28
|
+
const components = catalog.$defs?.components ?? {};
|
|
29
|
+
|
|
30
|
+
/** Collapses whitespace/newlines and truncates with an ellipsis. */
|
|
31
|
+
const summarize = (text, max) => {
|
|
32
|
+
if (text == null) return null;
|
|
33
|
+
const flat = String(text).replace(/\s+/g, ' ').trim();
|
|
34
|
+
return flat.length > max ? `${flat.slice(0, max)}…` : flat;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const nodes = [];
|
|
38
|
+
const edges = [];
|
|
39
|
+
|
|
40
|
+
// Category nodes, alphabetical. Components without x-category land in Other.
|
|
41
|
+
const categories = new Set();
|
|
42
|
+
for (const def of Object.values(components)) {
|
|
43
|
+
categories.add(def['x-category'] || 'Other');
|
|
44
|
+
}
|
|
45
|
+
for (const label of [...categories].sort()) {
|
|
46
|
+
nodes.push({ id: `cat:${label}`, type: 'category', label });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Component, slot, and enum-prop nodes in catalog order.
|
|
50
|
+
for (const [tag, def] of Object.entries(components)) {
|
|
51
|
+
const category = def['x-category'] || 'Other';
|
|
52
|
+
const propDefs = def.properties?.props?.properties ?? {};
|
|
53
|
+
const slotNames = Object.keys(def.properties?.slots?.properties ?? {});
|
|
54
|
+
const slotDescriptions = def['x-slot-descriptions'] ?? {};
|
|
55
|
+
|
|
56
|
+
const props = {};
|
|
57
|
+
for (const [name, p] of Object.entries(propDefs)) {
|
|
58
|
+
props[name] = {
|
|
59
|
+
type: p.type ?? null,
|
|
60
|
+
enum: p.enum ?? null,
|
|
61
|
+
default: p.default ?? null,
|
|
62
|
+
description: summarize(p.description, 80),
|
|
63
|
+
'x-kind': p['x-kind'] ?? null,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
nodes.push({
|
|
68
|
+
id: tag,
|
|
69
|
+
type: 'component',
|
|
70
|
+
category,
|
|
71
|
+
description: summarize(def.description, 120),
|
|
72
|
+
props,
|
|
73
|
+
slots: slotNames,
|
|
74
|
+
accepts_children: Boolean(def.properties?.children),
|
|
75
|
+
});
|
|
76
|
+
edges.push({ from: tag, to: `cat:${category}`, rel: 'BELONGS_TO' });
|
|
77
|
+
|
|
78
|
+
for (const slotName of slotNames) {
|
|
79
|
+
const id = `slot:${tag}:${slotName}`;
|
|
80
|
+
nodes.push({
|
|
81
|
+
id,
|
|
82
|
+
type: 'slot',
|
|
83
|
+
name: slotName,
|
|
84
|
+
component: tag,
|
|
85
|
+
description: slotDescriptions[slotName] ?? null,
|
|
86
|
+
});
|
|
87
|
+
edges.push({ from: tag, to: id, rel: 'HAS_SLOT' });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
for (const [propName, p] of Object.entries(propDefs)) {
|
|
91
|
+
if (!Array.isArray(p.enum) || p.enum.length === 0) continue;
|
|
92
|
+
const id = `prop:${tag}:${propName}`;
|
|
93
|
+
nodes.push({
|
|
94
|
+
id,
|
|
95
|
+
type: 'enum_prop',
|
|
96
|
+
name: propName,
|
|
97
|
+
component: tag,
|
|
98
|
+
enum: p.enum,
|
|
99
|
+
description: summarize(p.description, 80),
|
|
100
|
+
});
|
|
101
|
+
edges.push({ from: tag, to: id, rel: 'HAS_ENUM_PROP' });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const kg = {
|
|
106
|
+
meta: {
|
|
107
|
+
generated_from: 'catalog.json',
|
|
108
|
+
catalog_id: 'cre8-wc',
|
|
109
|
+
library: pkg.name,
|
|
110
|
+
library_version: pkg.version,
|
|
111
|
+
total_nodes: nodes.length,
|
|
112
|
+
total_edges: edges.length,
|
|
113
|
+
},
|
|
114
|
+
nodes,
|
|
115
|
+
edges,
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
writeFileSync(outPath, `${JSON.stringify(kg, null, 2)}\n`, 'utf8');
|
|
119
|
+
console.log(
|
|
120
|
+
`catalog-kg.json: ${nodes.length} nodes, ${edges.length} edges `
|
|
121
|
+
+ `(${Object.keys(components).length} components, ${categories.size} categories)`,
|
|
122
|
+
);
|