@adaas/a-frame 0.1.1 → 0.1.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/.conf/tsconfig.browser.json +7 -1
- package/.conf/tsconfig.node.json +7 -1
- package/dist/browser/A-FrameBrowserStorageBlobs.context-CZTTvpn2.d.mts +53 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-CaGTyatz.d.mts +40 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-DjeEH8cn.d.mts +53 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-vCsuTea9.d.mts +40 -0
- package/dist/browser/A-FrameBundle.types-LzfgdMiQ.d.mts +71 -0
- package/dist/browser/A-FrameChannel.component-4mTNctXL.d.mts +704 -0
- package/dist/browser/A-FrameChannel.types-BXEKJK9t.d.mts +205 -0
- package/dist/browser/A-FrameChannel.types-Ba3wgUZj.d.mts +199 -0
- package/dist/browser/A-FrameChannel.types-BfINhQZe.d.mts +145 -0
- package/dist/browser/A-FrameChannel.types-DfacgYL1.d.mts +199 -0
- package/dist/browser/A-FrameCompletion.entity-Dzy9sIa8.d.mts +72 -0
- package/dist/browser/A-FrameDefinition.entity-C1aK-gdl.d.mts +370 -0
- package/dist/browser/A-FrameDefinition.entity-CKPXsarS.d.mts +358 -0
- package/dist/browser/A-FrameDefinition.entity-yA0GsBoe.d.mts +143 -0
- package/dist/browser/A-FrameDefinition.types-BT02yAhQ.d.mts +232 -0
- package/dist/browser/A-FrameDynamicContentOperation.context-CoViNb19.d.mts +297 -0
- package/dist/browser/A-FrameDynamicContentOperation.context-Dd7Lb7X2.d.mts +266 -0
- package/dist/browser/A-FrameDynamicPatch.entity-BRuF1tqs.d.mts +29 -0
- package/dist/browser/A-FrameDynamicStructure.entity-DMvI_EPT.d.mts +210 -0
- package/dist/browser/A-FrameDynamicStructure.entity-DxkPP9mR.d.mts +235 -0
- package/dist/browser/A-FrameEnv.types-DnK-CYVk.d.mts +21 -0
- package/dist/browser/A-FrameNamespace.entity-BDg1FUgo.d.mts +136 -0
- package/dist/browser/A-FrameSchema.entity-DjYIhsoj.d.mts +141 -0
- package/dist/browser/A-FrameSegment.entity-D1xjjWvG.d.mts +161 -0
- package/dist/browser/A-FrameSegment.entity-D7Aj39Wh.d.mts +146 -0
- package/dist/browser/bundle.d.mts +6 -2
- package/dist/browser/bundle.mjs +1 -1
- package/dist/browser/bundle.mjs.map +1 -1
- package/dist/browser/channel.d.mts +51 -74
- package/dist/browser/channel.mjs +1 -2
- package/dist/browser/channel.mjs.map +1 -1
- package/dist/browser/chunk-2RNFZSBL.mjs +2 -0
- package/dist/browser/chunk-2RNFZSBL.mjs.map +1 -0
- package/dist/browser/chunk-46LRNZRG.mjs +2 -0
- package/dist/browser/chunk-46LRNZRG.mjs.map +1 -0
- package/dist/browser/chunk-52HFO3OY.mjs +2 -0
- package/dist/browser/chunk-52HFO3OY.mjs.map +1 -0
- package/dist/browser/chunk-643KGQKR.mjs +3 -0
- package/dist/browser/chunk-643KGQKR.mjs.map +1 -0
- package/dist/browser/chunk-66BBIZAM.mjs +3 -0
- package/dist/browser/chunk-66BBIZAM.mjs.map +1 -0
- package/dist/browser/chunk-6NPQURSO.mjs +2 -0
- package/dist/browser/chunk-6NPQURSO.mjs.map +1 -0
- package/dist/browser/chunk-6WAOMX7M.mjs +2 -0
- package/dist/browser/chunk-6WAOMX7M.mjs.map +1 -0
- package/dist/browser/chunk-77HU5SRQ.mjs +2 -0
- package/dist/browser/chunk-77HU5SRQ.mjs.map +1 -0
- package/dist/browser/chunk-AET6XULU.mjs +2 -0
- package/dist/browser/chunk-AET6XULU.mjs.map +1 -0
- package/dist/browser/chunk-BIBPE2GT.mjs +3 -0
- package/dist/browser/chunk-BIBPE2GT.mjs.map +1 -0
- package/dist/browser/chunk-CDJKU4DK.mjs +2 -0
- package/dist/browser/chunk-CDJKU4DK.mjs.map +1 -0
- package/dist/browser/chunk-CT67Y46H.mjs +3 -0
- package/dist/browser/chunk-CT67Y46H.mjs.map +1 -0
- package/dist/browser/chunk-EFC7OUNO.mjs +2 -0
- package/dist/browser/chunk-EFC7OUNO.mjs.map +1 -0
- package/dist/browser/chunk-EJIX7H7A.mjs +2 -0
- package/dist/browser/chunk-EJIX7H7A.mjs.map +1 -0
- package/dist/browser/chunk-FHJ5ATND.mjs +3 -0
- package/dist/browser/chunk-FHJ5ATND.mjs.map +1 -0
- package/dist/browser/chunk-FVH2EEVP.mjs +3 -0
- package/dist/browser/chunk-FVH2EEVP.mjs.map +1 -0
- package/dist/browser/chunk-G6ULYKSU.mjs +2 -0
- package/dist/browser/chunk-G6ULYKSU.mjs.map +1 -0
- package/dist/browser/chunk-G7MKGKG5.mjs +2 -0
- package/dist/browser/chunk-G7MKGKG5.mjs.map +1 -0
- package/dist/browser/chunk-GOMJPGVB.mjs +3 -0
- package/dist/browser/chunk-GOMJPGVB.mjs.map +1 -0
- package/dist/browser/chunk-INQV5UZA.mjs +2 -0
- package/dist/browser/chunk-INQV5UZA.mjs.map +1 -0
- package/dist/browser/chunk-INXPVBTZ.mjs +2 -0
- package/dist/browser/chunk-INXPVBTZ.mjs.map +1 -0
- package/dist/browser/chunk-KFMVTZ7T.mjs +2 -0
- package/dist/browser/chunk-KFMVTZ7T.mjs.map +1 -0
- package/dist/browser/chunk-LK6C7C3S.mjs +2 -0
- package/dist/browser/chunk-LK6C7C3S.mjs.map +1 -0
- package/dist/browser/chunk-LOGRQOWP.mjs +3 -0
- package/dist/browser/chunk-LOGRQOWP.mjs.map +1 -0
- package/dist/browser/chunk-LZACYSUC.mjs +3 -0
- package/dist/browser/chunk-LZACYSUC.mjs.map +1 -0
- package/dist/browser/chunk-NTOIVRX3.mjs +2 -0
- package/dist/browser/chunk-NTOIVRX3.mjs.map +1 -0
- package/dist/browser/chunk-OES2N3X7.mjs +3 -0
- package/dist/browser/chunk-OES2N3X7.mjs.map +1 -0
- package/dist/browser/chunk-OFKV5GNB.mjs +1 -1
- package/dist/browser/chunk-OFKV5GNB.mjs.map +1 -1
- package/dist/browser/chunk-OVLM5A32.mjs +3 -0
- package/dist/browser/chunk-OVLM5A32.mjs.map +1 -0
- package/dist/browser/chunk-QATIN7CO.mjs +1 -1
- package/dist/browser/chunk-QATIN7CO.mjs.map +1 -1
- package/dist/browser/chunk-QOL7CAUZ.mjs +2 -0
- package/dist/browser/chunk-QOL7CAUZ.mjs.map +1 -0
- package/dist/browser/chunk-RCB3PX4V.mjs +2 -0
- package/dist/browser/chunk-RCB3PX4V.mjs.map +1 -0
- package/dist/browser/chunk-RWQSCROK.mjs +3 -0
- package/dist/browser/chunk-RWQSCROK.mjs.map +1 -0
- package/dist/browser/chunk-TIAUMK2X.mjs +2 -0
- package/dist/browser/chunk-TIAUMK2X.mjs.map +1 -0
- package/dist/browser/chunk-TQPC5MYM.mjs +3 -0
- package/dist/browser/chunk-TQPC5MYM.mjs.map +1 -0
- package/dist/browser/chunk-UNIKTCXL.mjs +3 -0
- package/dist/browser/chunk-UNIKTCXL.mjs.map +1 -0
- package/dist/browser/chunk-UULJJ5C5.mjs +3 -0
- package/dist/browser/chunk-UULJJ5C5.mjs.map +1 -0
- package/dist/browser/chunk-VSSANMPF.mjs +2 -0
- package/dist/browser/chunk-VSSANMPF.mjs.map +1 -0
- package/dist/browser/chunk-VW2BZYNY.mjs +2 -0
- package/dist/browser/chunk-VW2BZYNY.mjs.map +1 -0
- package/dist/browser/chunk-WAXBOWM6.mjs +3 -0
- package/dist/browser/chunk-WAXBOWM6.mjs.map +1 -0
- package/dist/browser/chunk-WXCQCHAX.mjs +2 -0
- package/dist/browser/chunk-WXCQCHAX.mjs.map +1 -0
- package/dist/browser/chunk-XKKBIIZG.mjs +3 -0
- package/dist/browser/chunk-XKKBIIZG.mjs.map +1 -0
- package/dist/browser/chunk-XR7FVA5M.mjs +3 -0
- package/dist/browser/chunk-XR7FVA5M.mjs.map +1 -0
- package/dist/browser/chunk-YQJFTBGV.mjs +1 -1
- package/dist/browser/chunk-YQJFTBGV.mjs.map +1 -1
- package/dist/browser/chunk-YTAMZDWC.mjs +3 -0
- package/dist/browser/chunk-YTAMZDWC.mjs.map +1 -0
- package/dist/browser/chunk-ZEONOTRL.mjs +2 -0
- package/dist/browser/chunk-ZEONOTRL.mjs.map +1 -0
- package/dist/browser/completion.d.mts +10 -0
- package/dist/browser/completion.mjs +2 -0
- package/dist/browser/completion.mjs.map +1 -0
- package/dist/browser/core.d.mts +7 -6
- package/dist/browser/core.mjs +1 -1
- package/dist/browser/core.mjs.map +1 -1
- package/dist/browser/credentials.d.mts +74 -0
- package/dist/browser/credentials.mjs +2 -0
- package/dist/browser/credentials.mjs.map +1 -0
- package/dist/browser/definition.d.mts +3 -2
- package/dist/browser/definition.mjs +1 -1
- package/dist/browser/dynamic-content.d.mts +13 -0
- package/dist/browser/dynamic-content.mjs +2 -0
- package/dist/browser/dynamic-content.mjs.map +1 -0
- package/dist/browser/dynamic-feature.d.mts +66 -6
- package/dist/browser/dynamic-feature.mjs +3 -1
- package/dist/browser/dynamic-feature.mjs.map +1 -1
- package/dist/browser/dynamic-structure.d.mts +77 -3
- package/dist/browser/dynamic-structure.mjs +1 -1
- package/dist/browser/dynamic-structure.mjs.map +1 -1
- package/dist/browser/env.d.mts +16 -2
- package/dist/browser/env.mjs +1 -1
- package/dist/browser/frame-index.d.mts +70 -9
- package/dist/browser/frame-index.mjs +1 -1
- package/dist/browser/models.d.mts +64 -0
- package/dist/browser/models.mjs +2 -0
- package/dist/browser/models.mjs.map +1 -0
- package/dist/browser/namespace.d.mts +1 -1
- package/dist/browser/namespace.mjs +1 -1
- package/dist/browser/schema.d.mts +10 -0
- package/dist/browser/schema.mjs +2 -0
- package/dist/browser/schema.mjs.map +1 -0
- package/dist/browser/segment.d.mts +13 -0
- package/dist/browser/segment.mjs +2 -0
- package/dist/browser/segment.mjs.map +1 -0
- package/dist/browser/storage.d.mts +13 -7
- package/dist/browser/storage.mjs +1 -1
- package/dist/browser/vector.d.mts +7 -0
- package/dist/browser/vector.mjs +1 -1
- package/dist/cli.cjs +5593 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/node/A-FrameChannel.component--YErPxf4.d.mts +97 -0
- package/dist/node/A-FrameChannel.component-BjgqMh1B.d.ts +97 -0
- package/dist/node/A-FrameChannel.component-C0O3TaRD.d.ts +679 -0
- package/dist/node/A-FrameChannel.component-CgBZYBz0.d.mts +379 -0
- package/dist/node/A-FrameChannel.component-CkZserv3.d.ts +97 -0
- package/dist/node/A-FrameChannel.component-DMA-3sUB.d.mts +679 -0
- package/dist/node/A-FrameChannel.component-DYV8omYR.d.ts +379 -0
- package/dist/node/A-FrameChannel.component-DwgYNfFn.d.mts +97 -0
- package/dist/node/A-FrameChannel.types-B3_xWKEO.d.mts +151 -0
- package/dist/node/A-FrameChannel.types-BGcVXTqa.d.ts +205 -0
- package/dist/node/A-FrameChannel.types-Boi8QqDK.d.mts +205 -0
- package/dist/node/A-FrameChannel.types-BsE6bNky.d.mts +205 -0
- package/dist/node/A-FrameChannel.types-C-gxXl8m.d.ts +151 -0
- package/dist/node/A-FrameChannel.types-DD2B11rf.d.ts +205 -0
- package/dist/node/A-FrameChannel.types-DYMgRiCF.d.mts +205 -0
- package/dist/node/A-FrameChannel.types-DwyZRsOy.d.ts +205 -0
- package/dist/node/A-FrameCompletion.entity-Brx11JMp.d.ts +72 -0
- package/dist/node/A-FrameCompletion.entity-Dzy9sIa8.d.mts +72 -0
- package/dist/node/A-FrameDefinition.entity-BIF0sclD.d.ts +370 -0
- package/dist/node/A-FrameDefinition.entity-Bt9ua6cn.d.ts +358 -0
- package/dist/node/A-FrameDefinition.entity-C0kzaGJ0.d.ts +143 -0
- package/dist/node/A-FrameDefinition.entity-C1aK-gdl.d.mts +370 -0
- package/dist/node/A-FrameDefinition.entity-CKPXsarS.d.mts +358 -0
- package/dist/node/A-FrameDefinition.entity-yA0GsBoe.d.mts +143 -0
- package/dist/node/A-FrameDefinition.types-BA_pLGpo.d.ts +232 -0
- package/dist/node/A-FrameDefinition.types-BT02yAhQ.d.mts +232 -0
- package/dist/node/A-FrameDynamicContentOperation.context-C_aH1gEn.d.ts +297 -0
- package/dist/node/A-FrameDynamicContentOperation.context-CoViNb19.d.mts +297 -0
- package/dist/node/A-FrameDynamicContentOperation.context-DRqH2c3o.d.ts +266 -0
- package/dist/node/A-FrameDynamicContentOperation.context-Dd7Lb7X2.d.mts +266 -0
- package/dist/node/A-FrameDynamicPatch.entity-BRuF1tqs.d.mts +29 -0
- package/dist/node/A-FrameDynamicPatch.entity-BRuF1tqs.d.ts +29 -0
- package/dist/node/A-FrameDynamicStructure.entity-BVCbolMd.d.ts +210 -0
- package/dist/node/A-FrameDynamicStructure.entity-DMvI_EPT.d.mts +210 -0
- package/dist/node/A-FrameDynamicStructure.entity-DxkPP9mR.d.mts +235 -0
- package/dist/node/A-FrameDynamicStructure.entity-DxkPP9mR.d.ts +235 -0
- package/dist/node/A-FrameLogger.component.env-node-DIDBeuiz.d.mts +114 -0
- package/dist/node/A-FrameLogger.component.env-node-DIDBeuiz.d.ts +114 -0
- package/dist/node/A-FrameNamespace.entity-BDg1FUgo.d.mts +136 -0
- package/dist/node/A-FrameNamespace.entity-HDXcLGcS.d.ts +136 -0
- package/dist/node/A-FrameSchema.entity-DjYIhsoj.d.mts +141 -0
- package/dist/node/A-FrameSchema.entity-DjYIhsoj.d.ts +141 -0
- package/dist/node/A-FrameSegment.entity-C0izuOmC.d.ts +161 -0
- package/dist/node/A-FrameSegment.entity-CMCgFCWU.d.ts +146 -0
- package/dist/node/A-FrameSegment.entity-D1xjjWvG.d.mts +161 -0
- package/dist/node/A-FrameSegment.entity-D7Aj39Wh.d.mts +146 -0
- package/dist/node/A-FrameStorage.component-BnNKzvpY.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-CDztogHV.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-CW0YgKDI.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-D4UEkIBx.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-DV_jwK6r.d.ts +107 -0
- package/dist/node/A-FrameStorage.component-Di4EvbtC.d.ts +107 -0
- package/dist/node/A-FrameStorage.component-emIH1a1M.d.ts +107 -0
- package/dist/node/A-FrameStorage.component-y-JPiIQ4.d.ts +107 -0
- package/dist/node/bundle.cjs +66 -21
- package/dist/node/bundle.cjs.map +1 -1
- package/dist/node/bundle.d.mts +88 -24
- package/dist/node/bundle.d.ts +88 -24
- package/dist/node/bundle.mjs +65 -20
- package/dist/node/bundle.mjs.map +1 -1
- package/dist/node/channel.cjs +33 -26
- package/dist/node/channel.d.mts +10 -6
- package/dist/node/channel.d.ts +10 -6
- package/dist/node/channel.mjs +13 -6
- package/dist/node/chunk-2HUSP34L.mjs +55 -0
- package/dist/node/chunk-2HUSP34L.mjs.map +1 -0
- package/dist/node/chunk-2KXGI2E5.cjs +474 -0
- package/dist/node/chunk-2KXGI2E5.cjs.map +1 -0
- package/dist/node/chunk-2OQMOIR5.mjs +170 -0
- package/dist/node/chunk-2OQMOIR5.mjs.map +1 -0
- package/dist/node/chunk-2UI7RJ4Q.mjs +207 -0
- package/dist/node/chunk-2UI7RJ4Q.mjs.map +1 -0
- package/dist/node/chunk-3SLICJ3L.cjs +265 -0
- package/dist/node/chunk-3SLICJ3L.cjs.map +1 -0
- package/dist/node/chunk-3ZDHQOIU.cjs +92 -0
- package/dist/node/chunk-3ZDHQOIU.cjs.map +1 -0
- package/dist/node/chunk-5BKCX2RO.mjs +1 -1
- package/dist/node/chunk-5BKCX2RO.mjs.map +1 -1
- package/dist/node/chunk-5NCGXLP2.mjs +6 -0
- package/dist/node/chunk-5NCGXLP2.mjs.map +1 -0
- package/dist/node/chunk-5OTXZ7BB.mjs +53 -0
- package/dist/node/chunk-5OTXZ7BB.mjs.map +1 -0
- package/dist/node/chunk-5PYIATGT.mjs +469 -0
- package/dist/node/chunk-5PYIATGT.mjs.map +1 -0
- package/dist/node/chunk-64QCZG53.cjs +57 -0
- package/dist/node/chunk-64QCZG53.cjs.map +1 -0
- package/dist/node/chunk-652OEICJ.cjs +4 -0
- package/dist/node/chunk-652OEICJ.cjs.map +1 -0
- package/dist/node/chunk-674ZX6XJ.mjs +187 -0
- package/dist/node/chunk-674ZX6XJ.mjs.map +1 -0
- package/dist/node/chunk-6ID2IXYX.mjs +6 -0
- package/dist/node/chunk-6ID2IXYX.mjs.map +1 -0
- package/dist/node/chunk-7EM3Q7HA.mjs +655 -0
- package/dist/node/chunk-7EM3Q7HA.mjs.map +1 -0
- package/dist/node/chunk-7MVVMISA.cjs +293 -0
- package/dist/node/chunk-7MVVMISA.cjs.map +1 -0
- package/dist/node/chunk-7NSLGCAZ.mjs +1395 -0
- package/dist/node/chunk-7NSLGCAZ.mjs.map +1 -0
- package/dist/node/chunk-7OLLATCC.mjs +1289 -0
- package/dist/node/chunk-7OLLATCC.mjs.map +1 -0
- package/dist/node/chunk-7SEZMRLI.cjs +183 -0
- package/dist/node/chunk-7SEZMRLI.cjs.map +1 -0
- package/dist/node/chunk-A4CVDMSV.mjs +608 -0
- package/dist/node/chunk-A4CVDMSV.mjs.map +1 -0
- package/dist/node/chunk-A7CJIUYY.cjs +4 -0
- package/dist/node/chunk-A7CJIUYY.cjs.map +1 -0
- package/dist/node/chunk-ALFFUJ2J.mjs +163 -0
- package/dist/node/chunk-ALFFUJ2J.mjs.map +1 -0
- package/dist/node/chunk-AMMQ76RJ.mjs +179 -0
- package/dist/node/chunk-AMMQ76RJ.mjs.map +1 -0
- package/dist/node/chunk-AUKWKGVA.cjs +688 -0
- package/dist/node/chunk-AUKWKGVA.cjs.map +1 -0
- package/dist/node/chunk-AY6UMDWD.cjs +270 -0
- package/dist/node/chunk-AY6UMDWD.cjs.map +1 -0
- package/dist/node/chunk-B7ZDJXD3.cjs +1 -1
- package/dist/node/chunk-B7ZDJXD3.cjs.map +1 -1
- package/dist/node/chunk-BBYOL3LM.cjs +1308 -0
- package/dist/node/chunk-BBYOL3LM.cjs.map +1 -0
- package/dist/node/chunk-BINGAHFW.cjs +1308 -0
- package/dist/node/chunk-BINGAHFW.cjs.map +1 -0
- package/dist/node/chunk-BSBY37MG.cjs +55 -0
- package/dist/node/chunk-BSBY37MG.cjs.map +1 -0
- package/dist/node/chunk-BWX7HFTH.cjs +209 -0
- package/dist/node/chunk-BWX7HFTH.cjs.map +1 -0
- package/dist/node/chunk-C37B34MH.cjs +188 -0
- package/dist/node/chunk-C37B34MH.cjs.map +1 -0
- package/dist/node/chunk-C6BBKHQG.cjs +250 -0
- package/dist/node/chunk-C6BBKHQG.cjs.map +1 -0
- package/dist/node/chunk-CLCAS67N.cjs +8 -0
- package/dist/node/chunk-CLCAS67N.cjs.map +1 -0
- package/dist/node/chunk-CNU3CRTR.mjs +43 -0
- package/dist/node/chunk-CNU3CRTR.mjs.map +1 -0
- package/dist/node/chunk-CV5FPKU6.mjs +6 -0
- package/dist/node/chunk-CV5FPKU6.mjs.map +1 -0
- package/dist/node/chunk-CZYOAFIR.mjs +129 -0
- package/dist/node/chunk-CZYOAFIR.mjs.map +1 -0
- package/dist/node/chunk-D2HTYEJZ.cjs +209 -0
- package/dist/node/chunk-D2HTYEJZ.cjs.map +1 -0
- package/dist/node/chunk-EMLZZPOT.cjs +1446 -0
- package/dist/node/chunk-EMLZZPOT.cjs.map +1 -0
- package/dist/node/chunk-EOIXXXBV.cjs +55 -0
- package/dist/node/chunk-EOIXXXBV.cjs.map +1 -0
- package/dist/node/chunk-F4UCOZW5.mjs +1 -1
- package/dist/node/chunk-F4UCOZW5.mjs.map +1 -1
- package/dist/node/chunk-F64CK4NI.mjs +53 -0
- package/dist/node/chunk-F64CK4NI.mjs.map +1 -0
- package/dist/node/chunk-FAV62EUG.cjs +35 -0
- package/dist/node/chunk-FAV62EUG.cjs.map +1 -0
- package/dist/node/chunk-GHSPKZUN.mjs +529 -0
- package/dist/node/chunk-GHSPKZUN.mjs.map +1 -0
- package/dist/node/chunk-GRNVK7DW.mjs +97 -0
- package/dist/node/chunk-GRNVK7DW.mjs.map +1 -0
- package/dist/node/chunk-H5VGRPD5.cjs +8 -0
- package/dist/node/chunk-H5VGRPD5.cjs.map +1 -0
- package/dist/node/chunk-HAMDDCPS.cjs +8 -0
- package/dist/node/chunk-HAMDDCPS.cjs.map +1 -0
- package/dist/node/chunk-HAORARSB.cjs +75 -0
- package/dist/node/chunk-HAORARSB.cjs.map +1 -0
- package/dist/node/chunk-HELNAM5Y.cjs +8 -0
- package/dist/node/chunk-HELNAM5Y.cjs.map +1 -0
- package/dist/node/chunk-HET6L5PD.mjs +530 -0
- package/dist/node/chunk-HET6L5PD.mjs.map +1 -0
- package/dist/node/chunk-HI5SEX53.mjs +264 -0
- package/dist/node/chunk-HI5SEX53.mjs.map +1 -0
- package/dist/node/chunk-HZGFXE4Q.mjs +6 -0
- package/dist/node/chunk-HZGFXE4Q.mjs.map +1 -0
- package/dist/node/chunk-IAL2NK2V.mjs +73 -0
- package/dist/node/chunk-IAL2NK2V.mjs.map +1 -0
- package/dist/node/chunk-IHELFDCW.mjs +327 -0
- package/dist/node/chunk-IHELFDCW.mjs.map +1 -0
- package/dist/node/chunk-ILD6OSYW.mjs +966 -0
- package/dist/node/chunk-ILD6OSYW.mjs.map +1 -0
- package/dist/node/chunk-IP6DFAO7.mjs +264 -0
- package/dist/node/chunk-IP6DFAO7.mjs.map +1 -0
- package/dist/node/chunk-IYEDO7OQ.cjs +276 -0
- package/dist/node/chunk-IYEDO7OQ.cjs.map +1 -0
- package/dist/node/chunk-JFPGFPQD.mjs +1413 -0
- package/dist/node/chunk-JFPGFPQD.mjs.map +1 -0
- package/dist/node/chunk-JHZGTVYF.cjs +999 -0
- package/dist/node/chunk-JHZGTVYF.cjs.map +1 -0
- package/dist/node/chunk-JN3UJBUH.mjs +608 -0
- package/dist/node/chunk-JN3UJBUH.mjs.map +1 -0
- package/dist/node/chunk-JNPDXCCN.mjs +530 -0
- package/dist/node/chunk-JNPDXCCN.mjs.map +1 -0
- package/dist/node/chunk-JQBYDEMW.mjs +1 -1
- package/dist/node/chunk-JQBYDEMW.mjs.map +1 -1
- package/dist/node/chunk-JQJ7N4NL.cjs +267 -0
- package/dist/node/chunk-JQJ7N4NL.cjs.map +1 -0
- package/dist/node/chunk-K4AJBPPY.cjs +174 -0
- package/dist/node/chunk-K4AJBPPY.cjs.map +1 -0
- package/dist/node/chunk-K7SXPJPK.cjs +131 -0
- package/dist/node/chunk-K7SXPJPK.cjs.map +1 -0
- package/dist/node/chunk-KFW4GE7H.mjs +1289 -0
- package/dist/node/chunk-KFW4GE7H.mjs.map +1 -0
- package/dist/node/chunk-KKL2DF2D.cjs +518 -0
- package/dist/node/chunk-KKL2DF2D.cjs.map +1 -0
- package/dist/node/chunk-KKMKQGTR.cjs +620 -0
- package/dist/node/chunk-KKMKQGTR.cjs.map +1 -0
- package/dist/node/chunk-KNTO7FCZ.mjs +207 -0
- package/dist/node/chunk-KNTO7FCZ.mjs.map +1 -0
- package/dist/node/chunk-KTKVW3PH.mjs +286 -0
- package/dist/node/chunk-KTKVW3PH.mjs.map +1 -0
- package/dist/node/chunk-KZPSF32W.mjs +33 -0
- package/dist/node/chunk-KZPSF32W.mjs.map +1 -0
- package/dist/node/chunk-LWKFCMA7.mjs +129 -0
- package/dist/node/chunk-LWKFCMA7.mjs.map +1 -0
- package/dist/node/chunk-M2ZSE6YJ.mjs +512 -0
- package/dist/node/chunk-M2ZSE6YJ.mjs.map +1 -0
- package/dist/node/chunk-M6DJYGDO.cjs +167 -0
- package/dist/node/chunk-M6DJYGDO.cjs.map +1 -0
- package/dist/node/chunk-MAHKDTOQ.mjs +3 -0
- package/dist/node/chunk-MAHKDTOQ.mjs.map +1 -0
- package/dist/node/chunk-MM2R2OM6.cjs +541 -0
- package/dist/node/chunk-MM2R2OM6.cjs.map +1 -0
- package/dist/node/chunk-MSOD5UQH.cjs +45 -0
- package/dist/node/chunk-MSOD5UQH.cjs.map +1 -0
- package/dist/node/chunk-MVAWR76Q.cjs +276 -0
- package/dist/node/chunk-MVAWR76Q.cjs.map +1 -0
- package/dist/node/chunk-MXUO7OR5.cjs +97 -0
- package/dist/node/chunk-MXUO7OR5.cjs.map +1 -0
- package/dist/node/chunk-N4THTV6P.cjs +131 -0
- package/dist/node/chunk-N4THTV6P.cjs.map +1 -0
- package/dist/node/chunk-NIXKAQVP.cjs +1 -1
- package/dist/node/chunk-NIXKAQVP.cjs.map +1 -1
- package/dist/node/chunk-NUPXUUPM.cjs +1428 -0
- package/dist/node/chunk-NUPXUUPM.cjs.map +1 -0
- package/dist/node/chunk-NWOUVAIS.cjs +45 -0
- package/dist/node/chunk-NWOUVAIS.cjs.map +1 -0
- package/dist/node/chunk-OK7I5OQ3.mjs +89 -0
- package/dist/node/chunk-OK7I5OQ3.mjs.map +1 -0
- package/dist/node/chunk-OMGYXCFM.mjs +248 -0
- package/dist/node/chunk-OMGYXCFM.mjs.map +1 -0
- package/dist/node/chunk-OYZAQMKD.mjs +263 -0
- package/dist/node/chunk-OYZAQMKD.mjs.map +1 -0
- package/dist/node/chunk-P2LULMNL.cjs +189 -0
- package/dist/node/chunk-P2LULMNL.cjs.map +1 -0
- package/dist/node/chunk-PABEFHCO.mjs +63 -0
- package/dist/node/chunk-PABEFHCO.mjs.map +1 -0
- package/dist/node/chunk-Q5NYJQP2.cjs +8 -0
- package/dist/node/chunk-Q5NYJQP2.cjs.map +1 -0
- package/dist/node/chunk-QCEWWJ3N.cjs +65 -0
- package/dist/node/chunk-QCEWWJ3N.cjs.map +1 -0
- package/dist/node/chunk-QW4AZ3Z2.cjs +542 -0
- package/dist/node/chunk-QW4AZ3Z2.cjs.map +1 -0
- package/dist/node/chunk-RK5WSZ5J.mjs +43 -0
- package/dist/node/chunk-RK5WSZ5J.mjs.map +1 -0
- package/dist/node/chunk-RPHYBPXT.mjs +30 -0
- package/dist/node/chunk-RPHYBPXT.mjs.map +1 -0
- package/dist/node/chunk-RVXASBMQ.mjs +273 -0
- package/dist/node/chunk-RVXASBMQ.mjs.map +1 -0
- package/dist/node/chunk-RVZTZD32.mjs +187 -0
- package/dist/node/chunk-RVZTZD32.mjs.map +1 -0
- package/dist/node/chunk-RWLKISZQ.mjs +273 -0
- package/dist/node/chunk-RWLKISZQ.mjs.map +1 -0
- package/dist/node/chunk-SESXQJDD.cjs +999 -0
- package/dist/node/chunk-SESXQJDD.cjs.map +1 -0
- package/dist/node/chunk-SKIEPTFS.mjs +6 -0
- package/dist/node/chunk-SKIEPTFS.mjs.map +1 -0
- package/dist/node/chunk-SL7FT5R5.mjs +94 -0
- package/dist/node/chunk-SL7FT5R5.mjs.map +1 -0
- package/dist/node/chunk-SXHQW74T.mjs +43 -0
- package/dist/node/chunk-SXHQW74T.mjs.map +1 -0
- package/dist/node/chunk-TEJKDVNT.cjs +620 -0
- package/dist/node/chunk-TEJKDVNT.cjs.map +1 -0
- package/dist/node/chunk-TQS5WYND.cjs +352 -0
- package/dist/node/chunk-TQS5WYND.cjs.map +1 -0
- package/dist/node/chunk-UCAWV2IG.mjs +184 -0
- package/dist/node/chunk-UCAWV2IG.mjs.map +1 -0
- package/dist/node/chunk-UDUJDEAO.cjs +189 -0
- package/dist/node/chunk-UDUJDEAO.cjs.map +1 -0
- package/dist/node/chunk-VMJDL4SS.cjs +542 -0
- package/dist/node/chunk-VMJDL4SS.cjs.map +1 -0
- package/dist/node/chunk-VNOZTB3B.cjs +8 -0
- package/dist/node/chunk-VNOZTB3B.cjs.map +1 -0
- package/dist/node/chunk-VPMBZGYR.mjs +327 -0
- package/dist/node/chunk-VPMBZGYR.mjs.map +1 -0
- package/dist/node/chunk-WEPNBKOA.mjs +6 -0
- package/dist/node/chunk-WEPNBKOA.mjs.map +1 -0
- package/dist/node/chunk-WTBRJXFG.cjs +100 -0
- package/dist/node/chunk-WTBRJXFG.cjs.map +1 -0
- package/dist/node/chunk-WXCQCHAX.mjs +3 -0
- package/dist/node/chunk-WXCQCHAX.mjs.map +1 -0
- package/dist/node/chunk-X3TRPYGV.cjs +352 -0
- package/dist/node/chunk-X3TRPYGV.cjs.map +1 -0
- package/dist/node/chunk-XFUF7SDO.cjs +1 -1
- package/dist/node/chunk-XFUF7SDO.cjs.map +1 -1
- package/dist/node/chunk-XP2EPEBM.mjs +966 -0
- package/dist/node/chunk-XP2EPEBM.mjs.map +1 -0
- package/dist/node/chunk-XPIJ6BKP.cjs +45 -0
- package/dist/node/chunk-XPIJ6BKP.cjs.map +1 -0
- package/dist/node/chunk-YRVBMP7I.cjs +542 -0
- package/dist/node/chunk-YRVBMP7I.cjs.map +1 -0
- package/dist/node/chunk-ZIHSN5EE.mjs +530 -0
- package/dist/node/chunk-ZIHSN5EE.mjs.map +1 -0
- package/dist/node/chunk-ZNQMUU7I.cjs +32 -0
- package/dist/node/chunk-ZNQMUU7I.cjs.map +1 -0
- package/dist/node/completion.cjs +23 -0
- package/dist/node/completion.cjs.map +1 -0
- package/dist/node/completion.d.mts +10 -0
- package/dist/node/completion.d.ts +10 -0
- package/dist/node/completion.mjs +6 -0
- package/dist/node/completion.mjs.map +1 -0
- package/dist/node/core.cjs +67 -38
- package/dist/node/core.cjs.map +1 -1
- package/dist/node/core.d.mts +13 -8
- package/dist/node/core.d.ts +13 -8
- package/dist/node/core.mjs +58 -29
- package/dist/node/core.mjs.map +1 -1
- package/dist/node/credentials.cjs +17 -0
- package/dist/node/credentials.cjs.map +1 -0
- package/dist/node/credentials.d.mts +74 -0
- package/dist/node/credentials.d.ts +74 -0
- package/dist/node/credentials.mjs +4 -0
- package/dist/node/credentials.mjs.map +1 -0
- package/dist/node/definition.cjs +6 -4
- package/dist/node/definition.d.mts +3 -2
- package/dist/node/definition.d.ts +3 -2
- package/dist/node/definition.mjs +4 -2
- package/dist/node/dynamic-content.cjs +30 -0
- package/dist/node/dynamic-content.cjs.map +1 -0
- package/dist/node/dynamic-content.d.mts +13 -0
- package/dist/node/dynamic-content.d.ts +13 -0
- package/dist/node/dynamic-content.mjs +9 -0
- package/dist/node/dynamic-content.mjs.map +1 -0
- package/dist/node/dynamic-feature.cjs +41 -7
- package/dist/node/dynamic-feature.cjs.map +1 -1
- package/dist/node/dynamic-feature.d.mts +66 -6
- package/dist/node/dynamic-feature.d.ts +66 -6
- package/dist/node/dynamic-feature.mjs +16 -9
- package/dist/node/dynamic-feature.mjs.map +1 -1
- package/dist/node/dynamic-structure.cjs +45 -136
- package/dist/node/dynamic-structure.cjs.map +1 -1
- package/dist/node/dynamic-structure.d.mts +77 -3
- package/dist/node/dynamic-structure.d.ts +77 -3
- package/dist/node/dynamic-structure.mjs +16 -135
- package/dist/node/dynamic-structure.mjs.map +1 -1
- package/dist/node/env.cjs +3 -3
- package/dist/node/env.d.mts +26 -0
- package/dist/node/env.d.ts +26 -0
- package/dist/node/env.mjs +2 -2
- package/dist/node/frame-index.cjs +7 -4
- package/dist/node/frame-index.d.mts +70 -9
- package/dist/node/frame-index.d.ts +70 -9
- package/dist/node/frame-index.mjs +6 -3
- package/dist/node/logger.d.mts +4 -113
- package/dist/node/logger.d.ts +4 -113
- package/dist/node/models.cjs +14 -0
- package/dist/node/models.cjs.map +1 -0
- package/dist/node/models.d.mts +64 -0
- package/dist/node/models.d.ts +64 -0
- package/dist/node/models.mjs +5 -0
- package/dist/node/models.mjs.map +1 -0
- package/dist/node/namespace.cjs +7 -5
- package/dist/node/namespace.d.mts +1 -1
- package/dist/node/namespace.d.ts +1 -1
- package/dist/node/namespace.mjs +4 -2
- package/dist/node/schema.cjs +22 -0
- package/dist/node/schema.cjs.map +1 -0
- package/dist/node/schema.d.mts +10 -0
- package/dist/node/schema.d.ts +10 -0
- package/dist/node/schema.mjs +5 -0
- package/dist/node/schema.mjs.map +1 -0
- package/dist/node/segment.cjs +25 -0
- package/dist/node/segment.cjs.map +1 -0
- package/dist/node/segment.d.mts +13 -0
- package/dist/node/segment.d.ts +13 -0
- package/dist/node/segment.mjs +8 -0
- package/dist/node/segment.mjs.map +1 -0
- package/dist/node/storage.cjs +17 -14
- package/dist/node/storage.d.mts +18 -6
- package/dist/node/storage.d.ts +18 -6
- package/dist/node/storage.mjs +11 -8
- package/dist/node/vector.cjs +2 -2
- package/dist/node/vector.d.mts +7 -0
- package/dist/node/vector.d.ts +7 -0
- package/dist/node/vector.mjs +1 -1
- package/examples/article/main.ts +358 -0
- package/examples/components.ts +660 -0
- package/examples/feature/file-system.components.ts +211 -0
- package/examples/feature/main.ts +374 -0
- package/examples/interaction/main.ts +426 -0
- package/examples/logger.ts +126 -0
- package/examples/structure/main.ts +195 -0
- package/examples/structure/renderer.ts +296 -0
- package/examples/structure/server-app.components.ts +387 -0
- package/jest.config.browser.ts +9 -0
- package/jest.config.examples.ts +49 -0
- package/jest.config.integration.ts +38 -0
- package/jest.config.ts +56 -27
- package/jest.config.unit.ts +38 -0
- package/package.json +75 -7
- package/src/index.ts +13 -0
- package/src/lib/A-Frame/A-Frame.component.env-browser.ts +14 -3
- package/src/lib/A-Frame/A-Frame.component.env-node.ts +45 -15
- package/src/lib/A-Frame/A-Frame.context.ts +9 -8
- package/src/lib/A-Frame/decorators/A-FrameDefine.decorator.ts +4 -4
- package/src/lib/A-FrameBundle/A-FrameBundle.builder.env-node.ts +95 -25
- package/src/lib/A-FrameBundle/A-FrameBundle.constants.ts +1 -1
- package/src/lib/A-FrameBundle/A-FrameBundle.types.ts +54 -13
- package/src/lib/A-FrameBundle/index.browser.ts +1 -1
- package/src/lib/A-FrameBundle/index.ts +1 -1
- package/src/lib/A-FrameCLI/A-FrameCLI.container.ts +18 -7
- package/src/lib/A-FrameChannel/A-FrameChannel.component.env-browser.ts +0 -2
- package/src/lib/A-FrameChannel/A-FrameChannel.component.env-node.ts +14 -15
- package/src/lib/A-FrameChannel/A-FrameChannel.component.ts +542 -7
- package/src/lib/A-FrameChannel/A-FrameChannel.constants.ts +2 -0
- package/src/lib/A-FrameChannel/A-FrameChannel.types.ts +65 -1
- package/src/lib/A-FrameChannel/A-FrameChannelDsgStream.entity.ts +112 -0
- package/src/lib/A-FrameChannel/A-FrameChannelStream.entity.ts +1 -0
- package/src/lib/A-FrameChannel/index.browser.ts +5 -0
- package/src/lib/A-FrameCompletion/A-FrameCompletion.constants.ts +3 -0
- package/src/lib/A-FrameCompletion/A-FrameCompletion.entity.ts +128 -0
- package/src/lib/A-FrameCompletion/A-FrameCompletion.types.ts +40 -0
- package/src/lib/A-FrameCompletion/index.ts +3 -0
- package/src/lib/A-FrameCredentials/A-FrameCredentials.constants.ts +5 -0
- package/src/lib/A-FrameCredentials/A-FrameCredentials.entity.ts +120 -0
- package/src/lib/A-FrameCredentials/A-FrameCredentials.types.ts +39 -0
- package/src/lib/A-FrameCredentials/index.ts +3 -0
- package/src/lib/A-FrameDefinition/A-FrameDefinition.entity.ts +23 -1
- package/src/lib/A-FrameDefinition/A-FrameDefinition.types.ts +34 -1
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.constants.ts +5 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.entity.ts +348 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.error.ts +10 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.types.ts +116 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContentIndex.context.ts +288 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContentOperation.context.ts +26 -0
- package/src/lib/A-FrameDynamicContent/index.ts +5 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.constants.ts +6 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.entity.ts +253 -4
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.error.ts +11 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.types.ts +188 -4
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeatureOperation.context.ts +33 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameMethodMapIndex.context.ts +99 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameMethodMapper.component.ts +182 -0
- package/src/lib/A-FrameDynamicFeature/index.ts +6 -1
- package/src/lib/A-FrameDynamicPatch/index.ts +2 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameComponentMapIndex.context.ts +99 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameComponentMapper.component.ts +320 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.constants.ts +2 -1
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.entity.ts +240 -128
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.types.ts +183 -87
- package/src/lib/A-FrameDynamicStructure/index.ts +3 -0
- package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-browser.ts +5 -1
- package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-node.ts +23 -1
- package/src/lib/A-FrameEnv/A-FrameEnv.types.ts +12 -0
- package/src/lib/A-FrameIndex/A-FrameIndex.context.ts +63 -13
- package/src/lib/A-FrameIndex/A-FrameIndex.types.ts +53 -0
- package/src/lib/A-FrameModels/A-FrameModels.constants.ts +75 -0
- package/src/lib/A-FrameModels/index.ts +1 -0
- package/src/lib/A-FrameNamespace/A-FrameNamespace.entity.ts +10 -3
- package/src/lib/A-FrameNamespace/A-FrameNamespace.types.ts +5 -0
- package/src/lib/A-FrameSchema/A-FrameSchema.constants.ts +4 -0
- package/src/lib/A-FrameSchema/A-FrameSchema.entity.ts +154 -0
- package/src/lib/A-FrameSchema/A-FrameSchema.types.ts +88 -0
- package/src/lib/A-FrameSchema/index.ts +3 -0
- package/src/lib/A-FrameSegment/A-FrameSegment.constants.ts +12 -0
- package/src/lib/A-FrameSegment/A-FrameSegment.entity.ts +221 -0
- package/src/lib/A-FrameSegment/A-FrameSegment.types.ts +91 -0
- package/src/lib/A-FrameSegment/index.ts +3 -0
- package/src/lib/A-FrameStorage/A-FrameStorage.codec.ts +10 -4
- package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorage.component.ts +21 -0
- package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorageBlobs.context.ts +39 -21
- package/src/lib/A-FrameStorage/node/A-FrameNodeStorage.component.ts +124 -42
- package/src/lib/A-FrameVector/A-FrameVector.entity.ts +24 -0
- package/tests/A-Frame.browser.test.ts +167 -57
- package/tests/A-FrameDynamicContent.browser.test.ts +74 -0
- package/tests/integration/A-Frame.integration.test.ts +272 -0
- package/tests/integration/A-FrameCompletion.integration.test.ts +88 -0
- package/tests/integration/A-FrameContentMapping.integration.test.ts +261 -0
- package/tests/integration/A-FrameDefinition.integration.test.ts +154 -0
- package/tests/integration/A-FrameDynamicContent.integration.test.ts +126 -0
- package/tests/integration/A-FrameDynamicFeature.integration.test.ts +337 -0
- package/tests/integration/A-FrameDynamicStructure.integration.test.ts +264 -0
- package/tests/integration/A-FrameNamespace.integration.test.ts +109 -0
- package/tests/integration/A-FrameSchema.integration.test.ts +74 -0
- package/tests/integration/A-FrameSegment.integration.test.ts +102 -0
- package/tests/integration/A-FrameStorage.integration.test.ts +598 -0
- package/tests/jest.setup.browser.ts +1 -1
- package/tests/jest.setup.ts +4 -0
- package/tests/jest.setup.unit.ts +30 -0
- package/tests/unit/A-FrameChannel.unit.test.ts +124 -0
- package/tests/unit/A-FrameCompletion.unit.test.ts +25 -0
- package/tests/unit/A-FrameDefinition.unit.test.ts +36 -0
- package/tests/unit/A-FrameDynamicContent.unit.test.ts +28 -0
- package/tests/unit/A-FrameNamespace.unit.test.ts +35 -0
- package/tests/unit/A-FrameSchema.unit.test.ts +31 -0
- package/tests/unit/A-FrameSegment.unit.test.ts +20 -0
- package/tests/unit/mocks/MockA_FrameChannel.ts +112 -0
- package/tsconfig.browser.json +2 -0
- package/tsconfig.json +6 -0
- package/tsup.config.ts +52 -0
- package/tests/A-Frame.test.ts +0 -98
|
@@ -0,0 +1,660 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal UI Component Library
|
|
3
|
+
*
|
|
4
|
+
* 20 stateless, visually rich terminal components designed for semantic
|
|
5
|
+
* matching via A_Frame's embedding index. Each component has:
|
|
6
|
+
*
|
|
7
|
+
* - A detailed `description` for accurate vector search matching
|
|
8
|
+
* - Typed `metadata.params` for structured param extraction
|
|
9
|
+
* - A static `render(params)` method that writes directly to stdout
|
|
10
|
+
*
|
|
11
|
+
* Components are grouped by purpose:
|
|
12
|
+
*
|
|
13
|
+
* Typography Title, Heading, Paragraph, Blockquote, CodeBlock
|
|
14
|
+
* Data BarChart, ProgressBars, ComparisonTable, StatsRow, Timeline
|
|
15
|
+
* Cards ProfileCard, FeatureCard, TestimonialCard, PricingCard
|
|
16
|
+
* Lists BulletList, NumberedList, CheckList
|
|
17
|
+
* Media & CTA ImageBlock, Divider, CallToAction
|
|
18
|
+
*
|
|
19
|
+
* Usage:
|
|
20
|
+
* import { ALL_COMPONENTS, RENDERERS } from './components';
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import { A_Component } from '@adaas/a-concept';
|
|
24
|
+
import { A_Frame } from '@adaas/a-frame/core';
|
|
25
|
+
|
|
26
|
+
// ─── Terminal primitives ──────────────────────────────────────────────────────
|
|
27
|
+
|
|
28
|
+
const ESC = '\x1b[';
|
|
29
|
+
const S = {
|
|
30
|
+
reset: `${ESC}0m`, bold: `${ESC}1m`, dim: `${ESC}2m`, italic: `${ESC}3m`,
|
|
31
|
+
underline: `${ESC}4m`,
|
|
32
|
+
cyan: `${ESC}36m`, bcyan: `${ESC}96m`, green: `${ESC}32m`, bgreen: `${ESC}92m`,
|
|
33
|
+
yellow: `${ESC}33m`, byellow: `${ESC}93m`, blue: `${ESC}34m`, bblue: `${ESC}94m`,
|
|
34
|
+
magenta: `${ESC}35m`, bmagenta: `${ESC}95m`,
|
|
35
|
+
red: `${ESC}31m`, gray: `${ESC}90m`, white: `${ESC}37m`, bwhite: `${ESC}97m`,
|
|
36
|
+
};
|
|
37
|
+
const c = (s: string, ...st: string[]) => st.join('') + s + S.reset;
|
|
38
|
+
|
|
39
|
+
function wrap(text: string, width = 68): string[] {
|
|
40
|
+
const words = text.split(/\s+/);
|
|
41
|
+
const lines: string[] = [];
|
|
42
|
+
let line = '';
|
|
43
|
+
for (const w of words) {
|
|
44
|
+
const next = line ? `${line} ${w}` : w;
|
|
45
|
+
if (next.length > width) { if (line) lines.push(line); line = w; } else line = next;
|
|
46
|
+
}
|
|
47
|
+
if (line) lines.push(line);
|
|
48
|
+
return lines;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Standard draw-params shape shared by all components. */
|
|
52
|
+
export type DrawParams = { content: string } & Record<string, string | undefined>;
|
|
53
|
+
|
|
54
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
55
|
+
// TYPOGRAPHY
|
|
56
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
57
|
+
|
|
58
|
+
@A_Frame.Define({
|
|
59
|
+
description: 'A large centered article title or page headline (H1). The primary top-level heading that introduces an entire article, blog post, or page.',
|
|
60
|
+
metadata: { params: { headline: 'The headline text to display' } },
|
|
61
|
+
})
|
|
62
|
+
export class Title extends A_Component {
|
|
63
|
+
static render(p: DrawParams): void {
|
|
64
|
+
const t = (p.headline ?? p.content).slice(0, 68);
|
|
65
|
+
const pad = ' '.repeat(Math.max(0, Math.floor((72 - t.length) / 2)));
|
|
66
|
+
console.log();
|
|
67
|
+
console.log(c(`${pad}${t}`, S.bold, S.bcyan));
|
|
68
|
+
console.log(c('═'.repeat(72), S.cyan));
|
|
69
|
+
console.log();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
74
|
+
|
|
75
|
+
@A_Frame.Define({
|
|
76
|
+
description: 'A section sub-heading (H2 or H3) that introduces a new topic, chapter, or content group within an article or page.',
|
|
77
|
+
metadata: { params: { heading: 'The sub-heading text' } },
|
|
78
|
+
})
|
|
79
|
+
export class Heading extends A_Component {
|
|
80
|
+
static render(p: DrawParams): void {
|
|
81
|
+
const t = (p.heading ?? p.content).slice(0, 68);
|
|
82
|
+
console.log();
|
|
83
|
+
console.log(c(` ▎ ${t}`, S.bold, S.bblue));
|
|
84
|
+
console.log(c(` ${'─'.repeat(Math.min(t.length + 3, 70))}`, S.blue));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
89
|
+
|
|
90
|
+
@A_Frame.Define({
|
|
91
|
+
description: 'A block of narrative prose — a paragraph of descriptive text, explanation, introduction, body content, or conclusion. Use for any general-purpose running text.',
|
|
92
|
+
metadata: { params: { text: 'The paragraph text to display' } },
|
|
93
|
+
})
|
|
94
|
+
export class Paragraph extends A_Component {
|
|
95
|
+
static render(p: DrawParams): void {
|
|
96
|
+
console.log();
|
|
97
|
+
for (const l of wrap(p.text ?? p.content)) {
|
|
98
|
+
console.log(c(` ${l}`, S.white));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
104
|
+
|
|
105
|
+
@A_Frame.Define({
|
|
106
|
+
description: 'A styled block quote, pull quote, or highlighted excerpt. Use for notable quotes, testimonials without attribution, key takeaways, or emphasized passages pulled from content.',
|
|
107
|
+
metadata: { params: { quote: 'The quoted or highlighted text' } },
|
|
108
|
+
})
|
|
109
|
+
export class Blockquote extends A_Component {
|
|
110
|
+
static render(p: DrawParams): void {
|
|
111
|
+
const lines = wrap(p.quote ?? p.content, 64);
|
|
112
|
+
console.log();
|
|
113
|
+
console.log(c(' ┃', S.magenta));
|
|
114
|
+
for (const l of lines) {
|
|
115
|
+
console.log(c(' ┃ ', S.magenta) + c(l, S.italic, S.white));
|
|
116
|
+
}
|
|
117
|
+
console.log(c(' ┃', S.magenta));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
122
|
+
|
|
123
|
+
@A_Frame.Define({
|
|
124
|
+
description: 'A formatted code block or code snippet with a language label. Use for source code examples, configuration samples, terminal commands, or technical code listings.',
|
|
125
|
+
metadata: {
|
|
126
|
+
params: {
|
|
127
|
+
code: 'The code or command text to display',
|
|
128
|
+
language: 'Programming language or context label (e.g. "python", "bash", "json")',
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
})
|
|
132
|
+
export class CodeBlock extends A_Component {
|
|
133
|
+
static render(p: DrawParams): void {
|
|
134
|
+
const lang = p.language ?? '';
|
|
135
|
+
const code = p.code ?? p.content;
|
|
136
|
+
const lines = code.split('\n').slice(0, 12);
|
|
137
|
+
const w = 70;
|
|
138
|
+
console.log();
|
|
139
|
+
console.log(c(` ┌${'─'.repeat(w)}┐`, S.gray));
|
|
140
|
+
if (lang) {
|
|
141
|
+
console.log(c(' │ ', S.gray) + c(lang.toUpperCase(), S.dim, S.bold) + ' '.repeat(Math.max(0, w - lang.length - 2)) + c(' │', S.gray));
|
|
142
|
+
console.log(c(` ├${'─'.repeat(w)}┤`, S.gray));
|
|
143
|
+
}
|
|
144
|
+
for (const line of lines) {
|
|
145
|
+
const display = line.slice(0, w - 2);
|
|
146
|
+
console.log(c(' │ ', S.gray) + c(display, S.green) + ' '.repeat(Math.max(0, w - display.length - 2)) + c(' │', S.gray));
|
|
147
|
+
}
|
|
148
|
+
console.log(c(` └${'─'.repeat(w)}┘`, S.gray));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
153
|
+
// DATA VISUALIZATION
|
|
154
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
155
|
+
|
|
156
|
+
@A_Frame.Define({
|
|
157
|
+
description: 'A horizontal bar chart comparing numeric values across named categories. Use for rankings, popularity comparisons, survey results, scores, or any data where items are ranked or compared by magnitude.',
|
|
158
|
+
metadata: {
|
|
159
|
+
params: {
|
|
160
|
+
labels: 'Comma-separated category names (e.g. "JavaScript, Python, Rust")',
|
|
161
|
+
values: 'Comma-separated numeric values matching labels (e.g. "68, 55, 23")',
|
|
162
|
+
title: 'Optional chart title or caption',
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
})
|
|
166
|
+
export class BarChart extends A_Component {
|
|
167
|
+
static render(p: DrawParams): void {
|
|
168
|
+
const lbls = p.labels?.split(',').map(s => s.trim()).filter(Boolean) ?? [];
|
|
169
|
+
const vals = p.values?.split(',').map(s => parseFloat(s.trim())).filter(n => !isNaN(n)) ?? [];
|
|
170
|
+
const max = Math.max(...vals, 1);
|
|
171
|
+
const barW = 28;
|
|
172
|
+
console.log();
|
|
173
|
+
if (p.title) console.log(c(` ${p.title}`, S.dim, S.bold));
|
|
174
|
+
console.log();
|
|
175
|
+
for (let i = 0; i < vals.length; i++) {
|
|
176
|
+
const filled = Math.round((vals[i] / max) * barW);
|
|
177
|
+
console.log(
|
|
178
|
+
` ${(lbls[i] ?? `#${i + 1}`).slice(0, 16).padEnd(16)} ` +
|
|
179
|
+
c('█'.repeat(filled), S.magenta) +
|
|
180
|
+
c('░'.repeat(barW - filled), S.gray) +
|
|
181
|
+
c(` ${vals[i]}`, S.dim),
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
188
|
+
|
|
189
|
+
@A_Frame.Define({
|
|
190
|
+
description: 'A set of labeled progress bars showing completion percentages or skill levels. Use for skill ratings, project progress, completion metrics, or any percentage-based comparison.',
|
|
191
|
+
metadata: {
|
|
192
|
+
params: {
|
|
193
|
+
labels: 'Comma-separated item names (e.g. "Frontend, Backend, DevOps")',
|
|
194
|
+
percents: 'Comma-separated percentage values 0–100 (e.g. "90, 75, 60")',
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
})
|
|
198
|
+
export class ProgressBars extends A_Component {
|
|
199
|
+
static render(p: DrawParams): void {
|
|
200
|
+
const lbls = p.labels?.split(',').map(s => s.trim()).filter(Boolean) ?? [];
|
|
201
|
+
const pcts = p.percents?.split(',').map(s => parseInt(s.trim(), 10)).filter(n => !isNaN(n)) ?? [];
|
|
202
|
+
const barW = 24;
|
|
203
|
+
console.log();
|
|
204
|
+
for (let i = 0; i < pcts.length; i++) {
|
|
205
|
+
const pct = Math.min(100, Math.max(0, pcts[i]));
|
|
206
|
+
const filled = Math.round((pct / 100) * barW);
|
|
207
|
+
const color = pct >= 75 ? S.bgreen : pct >= 40 ? S.byellow : S.red;
|
|
208
|
+
console.log(
|
|
209
|
+
` ${(lbls[i] ?? `Item ${i + 1}`).slice(0, 18).padEnd(18)} ` +
|
|
210
|
+
c('━'.repeat(filled), color) +
|
|
211
|
+
c('━'.repeat(barW - filled), S.gray) +
|
|
212
|
+
c(` ${pct}%`, S.dim),
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
219
|
+
|
|
220
|
+
@A_Frame.Define({
|
|
221
|
+
description: 'A structured data table with rows and columns for side-by-side comparisons, specifications, or attribute-value pairs. Use when information is best presented in tabular grid format.',
|
|
222
|
+
metadata: {
|
|
223
|
+
params: {
|
|
224
|
+
rows: 'JSON array of {attribute, value} objects (e.g. [{"attribute":"Size","value":"Large"}])',
|
|
225
|
+
caption: 'Optional table title or description',
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
})
|
|
229
|
+
export class ComparisonTable extends A_Component {
|
|
230
|
+
static render(p: DrawParams): void {
|
|
231
|
+
let data: Array<{ attribute: string; value: string }> = [];
|
|
232
|
+
try { if (p.rows) data = JSON.parse(p.rows); } catch { /* skip */ }
|
|
233
|
+
if (!data.length) {
|
|
234
|
+
// Fallback: parse "Key | Value" lines from content
|
|
235
|
+
p.content.split('\n').filter(l => l.includes('|')).forEach(l => {
|
|
236
|
+
const [a, v] = l.split('|').map(s => s.trim());
|
|
237
|
+
if (a && v) data.push({ attribute: a, value: v });
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
if (!data.length) return;
|
|
241
|
+
|
|
242
|
+
const c1 = 20, c2 = 38;
|
|
243
|
+
const hr = (l: string, m: string, r: string) =>
|
|
244
|
+
c(` ${l}${'─'.repeat(c1 + 2)}${m}${'─'.repeat(c2 + 2)}${r}`, S.gray);
|
|
245
|
+
|
|
246
|
+
console.log();
|
|
247
|
+
if (p.caption) console.log(c(` ${p.caption}`, S.dim, S.bold) + '\n');
|
|
248
|
+
console.log(hr('┌', '┬', '┐'));
|
|
249
|
+
for (const r of data.slice(0, 10)) {
|
|
250
|
+
const attr = String(r.attribute).slice(0, c1).padEnd(c1);
|
|
251
|
+
const val = String(r.value).slice(0, c2).padEnd(c2);
|
|
252
|
+
console.log(c(' │ ', S.gray) + c(attr, S.bold, S.cyan) + c(' │ ', S.gray) + c(val, S.white) + c(' │', S.gray));
|
|
253
|
+
}
|
|
254
|
+
console.log(hr('└', '┴', '┘'));
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
259
|
+
|
|
260
|
+
@A_Frame.Define({
|
|
261
|
+
description: 'A row of 2–4 key statistics or metrics displayed side by side in a compact horizontal layout. Use for KPI dashboards, quick stats summaries, or highlighting multiple numbers at once.',
|
|
262
|
+
metadata: {
|
|
263
|
+
params: {
|
|
264
|
+
stats: 'Comma-separated "value label" pairs (e.g. "1.2M users, 99.9% uptime, 50ms latency")',
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
})
|
|
268
|
+
export class StatsRow extends A_Component {
|
|
269
|
+
static render(p: DrawParams): void {
|
|
270
|
+
const items = p.stats?.split(',').map(s => s.trim()).filter(Boolean).slice(0, 4) ?? [];
|
|
271
|
+
if (!items.length) return;
|
|
272
|
+
|
|
273
|
+
const cellW = Math.floor(70 / items.length);
|
|
274
|
+
console.log();
|
|
275
|
+
console.log(c(` ${'┬'.padStart(1, '╶')}${'─'.repeat(cellW)}`.repeat(items.length).slice(0, 72), S.gray));
|
|
276
|
+
|
|
277
|
+
let valLine = '', lblLine = '';
|
|
278
|
+
for (const item of items) {
|
|
279
|
+
// Split on first whitespace: number + any non-whitespace suffix (e.g. "50ms", "99.9%") then label
|
|
280
|
+
const match = item.match(/^([\d.,]+\S*)\s+(.+)$/);
|
|
281
|
+
const val = match ? match[1] : item;
|
|
282
|
+
const label = match ? match[2] : '';
|
|
283
|
+
valLine += c(` ${val.slice(0, cellW - 2).padEnd(cellW - 2)}`, S.bold, S.bgreen);
|
|
284
|
+
lblLine += c(` ${label.slice(0, cellW - 2).padEnd(cellW - 2)}`, S.dim);
|
|
285
|
+
}
|
|
286
|
+
console.log(valLine);
|
|
287
|
+
console.log(lblLine);
|
|
288
|
+
console.log(c(` ${'┴'.padStart(1, '╶')}${'─'.repeat(cellW)}`.repeat(items.length).slice(0, 72), S.gray));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
293
|
+
|
|
294
|
+
@A_Frame.Define({
|
|
295
|
+
description: 'A vertical timeline showing events, milestones, or steps in chronological or sequential order. Use for history, roadmaps, project phases, step-by-step processes, or event sequences.',
|
|
296
|
+
metadata: {
|
|
297
|
+
params: {
|
|
298
|
+
events: 'Comma-separated "date/label: description" pairs (e.g. "2020: Founded the company, 2022: Series A funding, 2024: IPO")',
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
})
|
|
302
|
+
export class Timeline extends A_Component {
|
|
303
|
+
static render(p: DrawParams): void {
|
|
304
|
+
const items = p.events?.split(',').map(s => s.trim()).filter(Boolean) ?? [];
|
|
305
|
+
console.log();
|
|
306
|
+
for (let i = 0; i < items.length; i++) {
|
|
307
|
+
const isLast = i === items.length - 1;
|
|
308
|
+
const [label, ...rest] = items[i].split(':');
|
|
309
|
+
const desc = rest.join(':').trim();
|
|
310
|
+
const connector = isLast ? '╰' : '├';
|
|
311
|
+
const pipe = isLast ? ' ' : '│';
|
|
312
|
+
|
|
313
|
+
console.log(c(` ${connector}──`, S.cyan) + c(' ● ', S.bcyan, S.bold) + c(label.trim(), S.bold, S.white));
|
|
314
|
+
if (desc) {
|
|
315
|
+
console.log(c(` ${pipe}`, S.cyan) + c(` ${desc.slice(0, 62)}`, S.dim));
|
|
316
|
+
}
|
|
317
|
+
if (!isLast) console.log(c(' │', S.cyan));
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
323
|
+
// CARDS
|
|
324
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
325
|
+
|
|
326
|
+
@A_Frame.Define({
|
|
327
|
+
description: 'A compact profile or identity card showing labeled attributes for a person, breed, product, city, or any entity with key properties. Displays a name/title and a structured list of traits.',
|
|
328
|
+
metadata: {
|
|
329
|
+
params: {
|
|
330
|
+
name: 'The entity name or title',
|
|
331
|
+
traits: 'Comma-separated "Label: value" pairs (e.g. "Founded: 1998, HQ: Berlin, Employees: 450")',
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
})
|
|
335
|
+
export class ProfileCard extends A_Component {
|
|
336
|
+
static render(p: DrawParams): void {
|
|
337
|
+
const name = p.name ?? 'Profile';
|
|
338
|
+
const traits = p.traits?.split(',').map(s => s.trim()).filter(Boolean) ?? [];
|
|
339
|
+
const w = 62;
|
|
340
|
+
|
|
341
|
+
console.log();
|
|
342
|
+
console.log(c(` ╭${'─'.repeat(w)}╮`, S.yellow));
|
|
343
|
+
console.log(c(' │ ', S.yellow) + c(name.slice(0, w - 2).padEnd(w - 2), S.bold, S.bwhite) + c(' │', S.yellow));
|
|
344
|
+
console.log(c(` ├${'─'.repeat(w)}┤`, S.yellow));
|
|
345
|
+
for (const t of traits.slice(0, 6)) {
|
|
346
|
+
const [lbl, ...valParts] = t.split(':');
|
|
347
|
+
const val = valParts.join(':').trim();
|
|
348
|
+
if (val) {
|
|
349
|
+
// Compute padding from raw string lengths (ANSI codes must not influence padEnd)
|
|
350
|
+
const lbW = 16;
|
|
351
|
+
const lbl_raw = lbl.trim().slice(0, lbW).padEnd(lbW);
|
|
352
|
+
const val_raw = val.slice(0, w - lbW - 4); // w - lbl - ' ' - ' │'
|
|
353
|
+
const padding = ' '.repeat(Math.max(0, w - 2 - lbW - 2 - val_raw.length));
|
|
354
|
+
console.log(c(' │ ', S.yellow) + c(lbl_raw, S.dim) + ' ' + c(val_raw, S.white) + padding + c(' │', S.yellow));
|
|
355
|
+
} else {
|
|
356
|
+
console.log(c(' │ ', S.yellow) + c(t.slice(0, w - 2).padEnd(w - 2), S.white) + c(' │', S.yellow));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
console.log(c(` ╰${'─'.repeat(w)}╯`, S.yellow));
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
364
|
+
|
|
365
|
+
@A_Frame.Define({
|
|
366
|
+
description: 'A feature highlight card with an emoji icon, title, and short description. Use for showcasing product features, service benefits, capabilities, or key selling points.',
|
|
367
|
+
metadata: {
|
|
368
|
+
params: {
|
|
369
|
+
icon: 'An emoji representing the feature (e.g. "🚀", "🔒", "⚡")',
|
|
370
|
+
title: 'Short feature name or benefit',
|
|
371
|
+
description: 'One or two sentences explaining the feature',
|
|
372
|
+
},
|
|
373
|
+
},
|
|
374
|
+
})
|
|
375
|
+
export class FeatureCard extends A_Component {
|
|
376
|
+
static render(p: DrawParams): void {
|
|
377
|
+
const icon = p.icon ?? '◆';
|
|
378
|
+
const title = p.title ?? p.content.split('.')[0] ?? '';
|
|
379
|
+
const desc = p.description ?? p.content;
|
|
380
|
+
const w = 62;
|
|
381
|
+
|
|
382
|
+
console.log();
|
|
383
|
+
console.log(c(` ┌${'─'.repeat(w)}┐`, S.bblue));
|
|
384
|
+
// icon is assumed 2 terminal columns wide (emoji); add 2 spaces → 4 visual cols total
|
|
385
|
+
const iconBlock = `${icon.charAt(0)} `;
|
|
386
|
+
const titleRaw = title.slice(0, w - 6); // w - 2 (inner margin) - 4 (iconBlock visual)
|
|
387
|
+
const titlePad = ' '.repeat(Math.max(0, w - 2 - 4 - titleRaw.length));
|
|
388
|
+
console.log(c(' │ ', S.bblue) + iconBlock + c(titleRaw, S.bold, S.bwhite) + titlePad + c(' │', S.bblue));
|
|
389
|
+
console.log(c(` ├${'─'.repeat(w)}┤`, S.bblue));
|
|
390
|
+
for (const l of wrap(desc, w - 4).slice(0, 3)) {
|
|
391
|
+
console.log(c(' │ ', S.bblue) + c(l, S.dim) + ' '.repeat(Math.max(0, w - l.length - 2)) + c(' │', S.bblue));
|
|
392
|
+
}
|
|
393
|
+
console.log(c(` └${'─'.repeat(w)}┘`, S.bblue));
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
398
|
+
|
|
399
|
+
@A_Frame.Define({
|
|
400
|
+
description: 'A testimonial card displaying a quote with attribution — the person\'s name and role. Use for customer reviews, endorsements, user feedback, expert opinions, or any attributed quote.',
|
|
401
|
+
metadata: {
|
|
402
|
+
params: {
|
|
403
|
+
quote: 'The testimonial or review text',
|
|
404
|
+
author: 'Name of the person giving the testimonial',
|
|
405
|
+
role: 'Title, company, or context of the author (e.g. "CEO at Acme Corp")',
|
|
406
|
+
},
|
|
407
|
+
},
|
|
408
|
+
})
|
|
409
|
+
export class TestimonialCard extends A_Component {
|
|
410
|
+
static render(p: DrawParams): void {
|
|
411
|
+
const quote = p.quote ?? p.content;
|
|
412
|
+
const author = p.author ?? '';
|
|
413
|
+
const role = p.role ?? '';
|
|
414
|
+
const w = 62;
|
|
415
|
+
|
|
416
|
+
console.log();
|
|
417
|
+
console.log(c(` ┌${'─'.repeat(w)}┐`, S.magenta));
|
|
418
|
+
console.log(c(' │ ', S.magenta) + c('❝', S.bmagenta, S.bold) + ' '.repeat(w - 3) + c(' │', S.magenta));
|
|
419
|
+
for (const l of wrap(quote, w - 6).slice(0, 4)) {
|
|
420
|
+
console.log(c(' │ ', S.magenta) + c(` ${l}`, S.italic, S.white) + ' '.repeat(Math.max(0, w - l.length - 4)) + c(' │', S.magenta));
|
|
421
|
+
}
|
|
422
|
+
console.log(c(' │ ', S.magenta) + ' '.repeat(w - 2) + c(' │', S.magenta));
|
|
423
|
+
const attribution = author ? `— ${author}${role ? `, ${role}` : ''}` : '';
|
|
424
|
+
if (attribution) {
|
|
425
|
+
console.log(c(' │ ', S.magenta) + ' '.repeat(Math.max(0, w - attribution.length - 4)) + c(attribution.slice(0, w - 4), S.dim, S.bold) + ' ' + c(' │', S.magenta));
|
|
426
|
+
}
|
|
427
|
+
console.log(c(` └${'─'.repeat(w)}┘`, S.magenta));
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
432
|
+
|
|
433
|
+
@A_Frame.Define({
|
|
434
|
+
description: 'A pricing tier or plan card showing a plan name, price, and list of included features. Use for SaaS pricing pages, subscription tiers, plan comparisons, or package offerings.',
|
|
435
|
+
metadata: {
|
|
436
|
+
params: {
|
|
437
|
+
plan: 'Plan name (e.g. "Pro", "Enterprise")',
|
|
438
|
+
price: 'Price string (e.g. "$29/mo", "Free", "$199/year")',
|
|
439
|
+
features: 'Comma-separated feature list (e.g. "Unlimited users, Priority support, API access")',
|
|
440
|
+
},
|
|
441
|
+
},
|
|
442
|
+
})
|
|
443
|
+
export class PricingCard extends A_Component {
|
|
444
|
+
static render(p: DrawParams): void {
|
|
445
|
+
const plan = p.plan ?? 'Plan';
|
|
446
|
+
const price = p.price ?? '';
|
|
447
|
+
const features = p.features?.split(',').map(s => s.trim()).filter(Boolean) ?? [];
|
|
448
|
+
const w = 40;
|
|
449
|
+
|
|
450
|
+
console.log();
|
|
451
|
+
console.log(c(` ╔${'═'.repeat(w)}╗`, S.bcyan));
|
|
452
|
+
const planPad = ' '.repeat(Math.max(0, Math.floor((w - plan.length) / 2)));
|
|
453
|
+
console.log(c(' ║', S.bcyan) + c(`${planPad}${plan.slice(0, w)}`, S.bold, S.bwhite) + ' '.repeat(Math.max(0, w - planPad.length - plan.length)) + c('║', S.bcyan));
|
|
454
|
+
if (price) {
|
|
455
|
+
const pricePad = ' '.repeat(Math.max(0, Math.floor((w - price.length) / 2)));
|
|
456
|
+
console.log(c(' ║', S.bcyan) + c(`${pricePad}${price.slice(0, w)}`, S.bold, S.bgreen) + ' '.repeat(Math.max(0, w - pricePad.length - price.length)) + c('║', S.bcyan));
|
|
457
|
+
}
|
|
458
|
+
console.log(c(` ╠${'═'.repeat(w)}╣`, S.bcyan));
|
|
459
|
+
for (const f of features.slice(0, 6)) {
|
|
460
|
+
console.log(c(' ║', S.bcyan) + c(' ✓ ', S.green) + c(f.slice(0, w - 4), S.white) + ' '.repeat(Math.max(0, w - f.length - 4)) + c(' ║', S.bcyan));
|
|
461
|
+
}
|
|
462
|
+
console.log(c(` ╚${'═'.repeat(w)}╝`, S.bcyan));
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
467
|
+
// LISTS
|
|
468
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
469
|
+
|
|
470
|
+
@A_Frame.Define({
|
|
471
|
+
description: 'A bulleted list of items, traits, tips, characteristics, or enumerated points. Use when content is a set of parallel items without inherent ordering.',
|
|
472
|
+
metadata: { params: { items: 'Comma-separated list items (max 8)' } },
|
|
473
|
+
})
|
|
474
|
+
export class BulletList extends A_Component {
|
|
475
|
+
static render(p: DrawParams): void {
|
|
476
|
+
const items = p.items?.split(',').map(s => s.trim()).filter(Boolean) ?? [];
|
|
477
|
+
console.log();
|
|
478
|
+
for (const item of items.slice(0, 8)) {
|
|
479
|
+
console.log(c(' •', S.cyan) + c(` ${item.slice(0, 66)}`, S.white));
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
485
|
+
|
|
486
|
+
@A_Frame.Define({
|
|
487
|
+
description: 'A numbered list showing ordered steps, a ranked sequence, instructions, or a procedure. Use when the order or ranking of items matters.',
|
|
488
|
+
metadata: { params: { items: 'Comma-separated list items in order (max 8)' } },
|
|
489
|
+
})
|
|
490
|
+
export class NumberedList extends A_Component {
|
|
491
|
+
static render(p: DrawParams): void {
|
|
492
|
+
const items = p.items?.split(',').map(s => s.trim()).filter(Boolean) ?? [];
|
|
493
|
+
console.log();
|
|
494
|
+
for (let i = 0; i < Math.min(items.length, 8); i++) {
|
|
495
|
+
const num = c(` ${String(i + 1).padStart(2)}.`, S.bcyan, S.bold);
|
|
496
|
+
console.log(`${num} ${c(items[i].slice(0, 64), S.white)}`);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
502
|
+
|
|
503
|
+
@A_Frame.Define({
|
|
504
|
+
description: 'A checklist with completed and pending items. Use for task lists, requirements, feature comparisons showing what is and isn\'t included, or prerequisite checklists.',
|
|
505
|
+
metadata: {
|
|
506
|
+
params: {
|
|
507
|
+
done: 'Comma-separated completed items',
|
|
508
|
+
pending: 'Comma-separated pending or missing items',
|
|
509
|
+
},
|
|
510
|
+
},
|
|
511
|
+
})
|
|
512
|
+
export class CheckList extends A_Component {
|
|
513
|
+
static render(p: DrawParams): void {
|
|
514
|
+
const done = p.done?.split(',').map(s => s.trim()).filter(Boolean) ?? [];
|
|
515
|
+
const pending = p.pending?.split(',').map(s => s.trim()).filter(Boolean) ?? [];
|
|
516
|
+
console.log();
|
|
517
|
+
for (const item of done.slice(0, 6)) {
|
|
518
|
+
console.log(c(' ✔ ', S.green) + c(item.slice(0, 64), S.white));
|
|
519
|
+
}
|
|
520
|
+
for (const item of pending.slice(0, 4)) {
|
|
521
|
+
console.log(c(' ○ ', S.gray) + c(item.slice(0, 64), S.dim));
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
527
|
+
// MEDIA & CALL-TO-ACTION
|
|
528
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
529
|
+
|
|
530
|
+
@A_Frame.Define({
|
|
531
|
+
description: 'An image placeholder with a descriptive caption. Use when content references a photo, illustration, diagram, screenshot, map, or any visual asset.',
|
|
532
|
+
metadata: { params: { caption: 'Descriptive caption for the image' } },
|
|
533
|
+
})
|
|
534
|
+
export class ImageBlock extends A_Component {
|
|
535
|
+
static render(p: DrawParams): void {
|
|
536
|
+
const caption = (p.caption ?? p.content).slice(0, 56);
|
|
537
|
+
const w = 66;
|
|
538
|
+
console.log();
|
|
539
|
+
console.log(c(` ╭${'─'.repeat(w)}╮`, S.gray));
|
|
540
|
+
console.log(c(' │', S.gray) + ' '.repeat(w) + c('│', S.gray));
|
|
541
|
+
// Compute padding from raw string (never call padEnd on a colored string)
|
|
542
|
+
const captionRaw = ` ◻ ${caption}`;
|
|
543
|
+
console.log(c(' │', S.gray) + c(captionRaw, S.dim) + ' '.repeat(Math.max(0, w - captionRaw.length)) + c('│', S.gray));
|
|
544
|
+
console.log(c(' │', S.gray) + ' '.repeat(w) + c('│', S.gray));
|
|
545
|
+
console.log(c(` ╰${'─'.repeat(w)}╯`, S.gray));
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
550
|
+
|
|
551
|
+
@A_Frame.Define({
|
|
552
|
+
description: 'A visual divider or separator between content sections, optionally with a centered label. Use to create visual breaks or transitions between major parts of an article.',
|
|
553
|
+
metadata: { params: { label: 'Optional centered label text (e.g. "• • •", "Part Two")' } },
|
|
554
|
+
})
|
|
555
|
+
export class Divider extends A_Component {
|
|
556
|
+
static render(p: DrawParams): void {
|
|
557
|
+
const label = p.label ?? '';
|
|
558
|
+
console.log();
|
|
559
|
+
if (label) {
|
|
560
|
+
const side = Math.max(0, Math.floor((68 - label.length) / 2));
|
|
561
|
+
console.log(
|
|
562
|
+
c(` ${'─'.repeat(side)}`, S.gray) +
|
|
563
|
+
c(` ${label} `, S.dim) +
|
|
564
|
+
c('─'.repeat(Math.max(0, 68 - side - label.length)), S.gray),
|
|
565
|
+
);
|
|
566
|
+
} else {
|
|
567
|
+
console.log(c(` ${'· '.repeat(36)}`, S.gray));
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
573
|
+
|
|
574
|
+
@A_Frame.Define({
|
|
575
|
+
description: 'A prominent call-to-action button or banner with a short action label. Use for "Learn More", "Sign Up", "Get Started", "View Details", download links, or any clickable action prompt.',
|
|
576
|
+
metadata: {
|
|
577
|
+
params: {
|
|
578
|
+
label: 'Short action text (e.g. "Get Started Free", max 5 words)',
|
|
579
|
+
url: 'Optional URL or link target',
|
|
580
|
+
},
|
|
581
|
+
},
|
|
582
|
+
})
|
|
583
|
+
export class CallToAction extends A_Component {
|
|
584
|
+
static render(p: DrawParams): void {
|
|
585
|
+
const label = (p.label ?? p.content).slice(0, 36).trim();
|
|
586
|
+
const url = p.url ?? '';
|
|
587
|
+
const inner = ` ${label} `;
|
|
588
|
+
const w = inner.length;
|
|
589
|
+
const pad = ' '.repeat(Math.max(0, Math.floor((70 - w) / 2)));
|
|
590
|
+
|
|
591
|
+
console.log();
|
|
592
|
+
console.log(`${pad}${c(`╔${'═'.repeat(w)}╗`, S.bgreen)}`);
|
|
593
|
+
console.log(`${pad}${c('║', S.bgreen)}${c(inner, S.bold, S.bwhite)}${c('║', S.bgreen)}`);
|
|
594
|
+
console.log(`${pad}${c(`╚${'═'.repeat(w)}╝`, S.bgreen)}`);
|
|
595
|
+
if (url) {
|
|
596
|
+
console.log(`${pad}${c(` → ${url}`, S.dim)}`);
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
602
|
+
// STAT CALLOUT (standalone)
|
|
603
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
604
|
+
|
|
605
|
+
@A_Frame.Define({
|
|
606
|
+
description: 'A highlighted callout box for a single notable statistic, surprising number, fun fact, or key metric. Draws attention to one prominent data point with brief context.',
|
|
607
|
+
metadata: {
|
|
608
|
+
params: {
|
|
609
|
+
stat: 'The key number, percentage, or fact (e.g. "4.7 billion", "73%", "30 years")',
|
|
610
|
+
context: 'A brief label explaining what the stat means',
|
|
611
|
+
},
|
|
612
|
+
},
|
|
613
|
+
})
|
|
614
|
+
export class StatCallout extends A_Component {
|
|
615
|
+
static render(p: DrawParams): void {
|
|
616
|
+
const stat = (p.stat ?? '★').slice(0, 20);
|
|
617
|
+
const ctx = (p.context ?? p.content).slice(0, 48);
|
|
618
|
+
const w = 64;
|
|
619
|
+
|
|
620
|
+
console.log();
|
|
621
|
+
console.log(c(` ╔${'═'.repeat(w)}╗`, S.bgreen));
|
|
622
|
+
console.log(
|
|
623
|
+
c(' ║ ', S.bgreen) +
|
|
624
|
+
c(stat, S.bold, S.bwhite) +
|
|
625
|
+
c(' │ ', S.bgreen) +
|
|
626
|
+
c(ctx, S.dim) +
|
|
627
|
+
' '.repeat(Math.max(0, w - stat.length - ctx.length - 7)) +
|
|
628
|
+
c('║', S.bgreen),
|
|
629
|
+
);
|
|
630
|
+
console.log(c(` ╚${'═'.repeat(w)}╝`, S.bgreen));
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
635
|
+
// EXPORTS
|
|
636
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
637
|
+
|
|
638
|
+
/** All component classes — pass to A_Container({ components: ALL_COMPONENTS }) */
|
|
639
|
+
export const ALL_COMPONENTS = [
|
|
640
|
+
// Typography
|
|
641
|
+
Title, Heading, Paragraph, Blockquote, CodeBlock,
|
|
642
|
+
// Data
|
|
643
|
+
BarChart, ProgressBars, ComparisonTable, StatsRow, Timeline,
|
|
644
|
+
// Cards
|
|
645
|
+
ProfileCard, FeatureCard, TestimonialCard, PricingCard,
|
|
646
|
+
// Lists
|
|
647
|
+
BulletList, NumberedList, CheckList,
|
|
648
|
+
// Media & CTA
|
|
649
|
+
ImageBlock, Divider, CallToAction,
|
|
650
|
+
// Standalone
|
|
651
|
+
StatCallout,
|
|
652
|
+
];
|
|
653
|
+
|
|
654
|
+
/** Map of component name → render function for quick dispatch */
|
|
655
|
+
export const RENDERERS = new Map<string, (p: DrawParams) => void>(
|
|
656
|
+
ALL_COMPONENTS.map(Comp => [
|
|
657
|
+
Comp.name,
|
|
658
|
+
(p: DrawParams) => (Comp as any).render(p),
|
|
659
|
+
]),
|
|
660
|
+
);
|