@supersoniks/concorde 5.1.1 → 5.1.3
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/.agents/skills/concorde-docs/SKILL.md +153 -0
- package/.agents/skills/{concorde-component-docs/template.md → concorde-docs/templates/component.md} +6 -2
- package/.agents/skills/concorde-docs/templates/decorator.md +43 -0
- package/.agents/skills/concorde-docs/templates/guide.md +25 -0
- package/PLAN-DOCS-AGENTS.md +80 -0
- package/README.md +4 -4
- package/ai/README.md +29 -41
- package/ai/skills/concorde/SKILL.md +54 -324
- package/ai/skills/concorde/rules/composition.md +32 -0
- package/ai/skills/concorde/rules/data.md +47 -0
- package/ai/skills/concorde/rules/http.md +25 -0
- package/ai/skills/concorde/rules/lists-forms.md +35 -0
- package/ai/skills/concorde/rules/styling.md +46 -0
- package/ai/skills/concorde/rules/troubleshooting.md +45 -0
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +21 -21
- package/concorde-core.es.js +977 -980
- package/custom-elements-manifest.public.config.mjs +8 -0
- package/{.tmp-cem/custom-elements.json → custom-elements.json} +11758 -8904
- package/dist/concorde-core.bundle.js +21 -21
- package/dist/concorde-core.es.js +977 -980
- package/dist/docs-mock-api-sw.js +58 -223
- package/dist/docs-mock-api-sw.js.map +4 -4
- package/dist/img/concorde/plane_01.jpg +0 -0
- package/dist/img/concorde/plane_02.jpg +0 -0
- package/dist/img/concorde/plane_03.jpg +0 -0
- package/dist/img/concorde/plane_04.jpg +0 -0
- package/dist/img/concorde/plane_05.jpg +0 -0
- package/dist/img/concorde/plane_06.jpg +0 -0
- package/dist/img/concorde/plane_07.jpg +0 -0
- package/dist/img/concorde/plane_08.jpg +0 -0
- package/dist/img/concorde/plane_09.jpg +0 -0
- package/dist/img/concorde/plane_10.jpg +0 -0
- package/dist/img/concorde/plane_11.jpg +0 -0
- package/dist/img/concorde/plane_12.jpg +0 -0
- package/dist/img/concorde/plane_13.jpg +0 -0
- package/dist/img/og-concorde.jpg +0 -0
- package/dist/robots.txt +11 -10
- package/docs/.htaccess +82 -0
- package/docs/404.html +15 -0
- package/docs/404.md +5 -0
- package/docs/about.html +111 -0
- package/docs/about.md +22 -0
- package/docs/assets/{index-Bb-_LRyY.js → index-6sS76xWj.js} +2625 -3158
- package/docs/assets/index-DkdPbH0F.css +1 -0
- package/docs/core/components/functional/date/date.html +211 -0
- package/docs/core/components/functional/date/date.md +150 -0
- package/docs/core/components/functional/fetch/fetch.html +180 -0
- package/docs/core/components/functional/fetch/fetch.md +108 -0
- package/docs/core/components/functional/if/if.html +65 -0
- package/docs/core/components/functional/if/if.md +34 -0
- package/docs/core/components/functional/jsonata/jsonata.html +110 -0
- package/docs/core/components/functional/jsonata/jsonata.md +61 -0
- package/docs/core/components/functional/list/list.html +200 -0
- package/docs/core/components/functional/list/list.md +125 -0
- package/docs/core/components/functional/mix/mix.html +78 -0
- package/docs/core/components/functional/mix/mix.md +46 -0
- package/docs/core/components/functional/queue/queue.html +155 -0
- package/docs/core/components/functional/queue/queue.md +51 -0
- package/docs/core/components/functional/router/router.html +154 -0
- package/docs/core/components/functional/router/router.md +93 -0
- package/docs/core/components/functional/sdui/sdui-extension-points.html +127 -0
- package/docs/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/core/components/functional/sdui/sdui.html +397 -0
- package/docs/core/components/functional/sdui/sdui.md +307 -0
- package/docs/core/components/functional/states/states.html +141 -0
- package/docs/core/components/functional/states/states.md +112 -0
- package/docs/core/components/functional/submit/submit.html +178 -0
- package/docs/core/components/functional/submit/submit.md +106 -0
- package/docs/core/components/functional/subscriber/subscriber.html +68 -0
- package/docs/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/core/components/functional/translation/translation.html +60 -0
- package/docs/core/components/functional/translation/translation.md +38 -0
- package/docs/core/components/functional/value/value.html +81 -0
- package/docs/core/components/functional/value/value.md +47 -0
- package/docs/core/components/ui/alert/alert.html +201 -0
- package/docs/core/components/ui/alert/alert.md +186 -0
- package/docs/core/components/ui/alert-messages/alert-messages.html +132 -0
- package/docs/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/core/components/ui/badge/badge.html +197 -0
- package/docs/core/components/ui/badge/badge.md +181 -0
- package/docs/core/components/ui/button/button.html +309 -0
- package/docs/core/components/ui/button/button.md +216 -0
- package/docs/core/components/ui/captcha/captcha.html +80 -0
- package/docs/core/components/ui/captcha/captcha.md +56 -0
- package/docs/core/components/ui/card/card.html +254 -0
- package/docs/core/components/ui/card/card.md +215 -0
- package/docs/core/components/ui/divider/divider.html +144 -0
- package/docs/core/components/ui/divider/divider.md +126 -0
- package/docs/core/components/ui/form/checkbox/checkbox.html +200 -0
- package/docs/core/components/ui/form/checkbox/checkbox.md +125 -0
- package/docs/core/components/ui/form/fieldset/fieldset.html +238 -0
- package/docs/core/components/ui/form/fieldset/fieldset.md +161 -0
- package/docs/core/components/ui/form/form-actions/form-actions.html +122 -0
- package/docs/core/components/ui/form/form-actions/form-actions.md +98 -0
- package/docs/core/components/ui/form/form-layout/form-layout.html +115 -0
- package/docs/core/components/ui/form/form-layout/form-layout.md +109 -0
- package/docs/core/components/ui/form/input/input.html +235 -0
- package/docs/core/components/ui/form/input/input.md +142 -0
- package/docs/core/components/ui/form/radio/radio.html +144 -0
- package/docs/core/components/ui/form/radio/radio.md +78 -0
- package/docs/core/components/ui/form/select/select.html +178 -0
- package/docs/core/components/ui/form/select/select.md +86 -0
- package/docs/core/components/ui/form/switch/switch.html +146 -0
- package/docs/core/components/ui/form/switch/switch.md +80 -0
- package/docs/core/components/ui/form/textarea/textarea.html +162 -0
- package/docs/core/components/ui/form/textarea/textarea.md +82 -0
- package/docs/core/components/ui/group/group.html +113 -0
- package/docs/core/components/ui/group/group.md +77 -0
- package/docs/core/components/ui/icon/icon.html +223 -0
- package/docs/core/components/ui/icon/icon.md +214 -0
- package/docs/core/components/ui/image/image.html +194 -0
- package/docs/core/components/ui/image/image.md +167 -0
- package/docs/core/components/ui/link/link.html +101 -0
- package/docs/core/components/ui/link/link.md +81 -0
- package/docs/core/components/ui/loader/loader.html +114 -0
- package/docs/core/components/ui/loader/loader.md +87 -0
- package/docs/core/components/ui/menu/menu.html +395 -0
- package/docs/core/components/ui/menu/menu.md +370 -0
- package/docs/core/components/ui/modal/modal.html +324 -0
- package/docs/core/components/ui/modal/modal.md +211 -0
- package/docs/core/components/ui/pop/pop.html +250 -0
- package/docs/core/components/ui/pop/pop.md +216 -0
- package/docs/core/components/ui/progress/progress.html +132 -0
- package/docs/core/components/ui/progress/progress.md +109 -0
- package/docs/core/components/ui/table/table.html +333 -0
- package/docs/core/components/ui/table/table.md +267 -0
- package/docs/core/components/ui/theme/theme.html +116 -0
- package/docs/core/components/ui/theme/theme.md +97 -0
- package/docs/core/components/ui/toast/toast.html +185 -0
- package/docs/core/components/ui/toast/toast.md +147 -0
- package/docs/core/components/ui/tooltip/tooltip.html +112 -0
- package/docs/core/components/ui/tooltip/tooltip.md +89 -0
- package/docs/custom-elements.json +16559 -0
- package/docs/docs/decorators/ancestor-attribute.html +71 -0
- package/docs/docs/decorators/ancestor-attribute.md +59 -0
- package/docs/docs/decorators/auto-subscribe.html +61 -0
- package/docs/docs/decorators/auto-subscribe.md +40 -0
- package/docs/docs/decorators/bind.html +87 -0
- package/docs/docs/decorators/bind.md +76 -0
- package/docs/docs/decorators/get.html +166 -0
- package/docs/docs/decorators/get.md +160 -0
- package/docs/docs/decorators/handle.html +139 -0
- package/docs/docs/decorators/handle.md +119 -0
- package/docs/docs/decorators/on-assign.html +72 -0
- package/docs/docs/decorators/on-assign.md +63 -0
- package/docs/docs/decorators/patch.html +76 -0
- package/docs/docs/decorators/patch.md +44 -0
- package/docs/docs/decorators/post.html +150 -0
- package/docs/docs/decorators/post.md +134 -0
- package/docs/docs/decorators/publish.html +74 -0
- package/docs/docs/decorators/publish.md +56 -0
- package/docs/docs/decorators/put.html +83 -0
- package/docs/docs/decorators/put.md +51 -0
- package/docs/docs/decorators/subscribe.html +91 -0
- package/docs/docs/decorators/subscribe.md +87 -0
- package/docs/docs/decorators/wait-for-ancestors.html +82 -0
- package/docs/docs/decorators/wait-for-ancestors.md +76 -0
- package/docs/docs/directives/sub.html +79 -0
- package/docs/docs/directives/sub.md +75 -0
- package/docs/docs/directives/t.html +91 -0
- package/docs/docs/directives/t.md +73 -0
- package/docs/docs/getting-started/ai-agents.html +130 -0
- package/docs/docs/getting-started/ai-agents.md +50 -0
- package/docs/docs/getting-started/components.html +27 -0
- package/docs/docs/getting-started/create-a-component.html +108 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/create-a-component.md +3 -6
- package/docs/docs/getting-started/dataFlow.html +174 -0
- package/{src/docs/_core-concept → docs/docs/getting-started}/dataFlow.md +18 -19
- package/docs/docs/getting-started/installation.html +69 -0
- package/docs/docs/getting-started/installation.md +36 -0
- package/docs/docs/getting-started/my-first-component.html +180 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/my-first-component.md +5 -14
- package/docs/docs/getting-started/start.html +47 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/start.md +1 -13
- package/docs/docs/getting-started/theming.html +334 -0
- package/docs/docs/index.html +99 -0
- package/docs/docs/misc/api-configuration.html +149 -0
- package/{src/docs/_misc → docs/docs/misc}/api-configuration.md +10 -12
- package/docs/docs/misc/dataProviderKey.html +136 -0
- package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
- package/docs/docs/misc/docs-mock-api.html +155 -0
- package/{src/docs/_misc → docs/docs/misc}/docs-mock-api.md +12 -13
- package/docs/docs/misc/dynamic-path.html +181 -0
- package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
- package/docs/docs/misc/endpoint.html +51 -0
- package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
- package/docs/docs/misc/html-integration.html +45 -0
- package/{src/docs/_misc → docs/docs/misc}/html-integration.md +4 -5
- package/docs/docs-mock-api-sw.js +58 -223
- package/docs/docs-mock-api-sw.js.map +4 -4
- package/docs/hubs/decorators.html +438 -0
- package/docs/hubs/form-components.html +404 -0
- package/docs/hubs/remote-data.html +367 -0
- package/docs/img/archive/concorde-001-2cv.webp +0 -0
- package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
- package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
- package/docs/img/archive/credits.json +28 -0
- package/docs/img/concorde/plane_01.jpg +0 -0
- package/docs/img/concorde/plane_02.jpg +0 -0
- package/docs/img/concorde/plane_03.jpg +0 -0
- package/docs/img/concorde/plane_04.jpg +0 -0
- package/docs/img/concorde/plane_05.jpg +0 -0
- package/docs/img/concorde/plane_06.jpg +0 -0
- package/docs/img/concorde/plane_07.jpg +0 -0
- package/docs/img/concorde/plane_08.jpg +0 -0
- package/docs/img/concorde/plane_09.jpg +0 -0
- package/docs/img/concorde/plane_10.jpg +0 -0
- package/docs/img/concorde/plane_11.jpg +0 -0
- package/docs/img/concorde/plane_12.jpg +0 -0
- package/docs/img/concorde/plane_13.jpg +0 -0
- package/docs/img/og-concorde.jpg +0 -0
- package/docs/index.html +184 -68
- package/docs/index.md +22 -0
- package/docs/llms-full.txt +5779 -0
- package/docs/llms.txt +108 -0
- package/docs/privacy.html +122 -0
- package/docs/privacy.md +32 -0
- package/docs/robots.txt +11 -10
- package/docs/sitemap.xml +243 -0
- package/docs/src/core/components/functional/date/date.md +150 -0
- package/docs/src/core/components/functional/fetch/fetch.md +108 -0
- package/docs/src/core/components/functional/if/if.md +34 -0
- package/docs/src/core/components/functional/jsonata/jsonata.md +61 -0
- package/docs/src/core/components/functional/list/list.md +125 -0
- package/docs/src/core/components/functional/mix/mix.md +46 -0
- package/docs/src/core/components/functional/queue/queue.md +51 -0
- package/docs/src/core/components/functional/router/router.md +93 -0
- package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
- package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
- package/docs/src/core/components/functional/sdui/default-library.json +108 -0
- package/docs/src/core/components/functional/sdui/example.json +32 -0
- package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/src/core/components/functional/sdui/sdui.md +307 -0
- package/docs/src/core/components/functional/states/states.md +112 -0
- package/docs/src/core/components/functional/submit/submit.md +106 -0
- package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/src/core/components/functional/translation/translation.md +38 -0
- package/docs/src/core/components/functional/value/value.md +47 -0
- package/docs/src/core/components/ui/alert/alert.md +186 -0
- package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/src/core/components/ui/badge/badge.md +181 -0
- package/docs/src/core/components/ui/button/button.md +216 -0
- package/docs/src/core/components/ui/captcha/captcha.md +56 -0
- package/docs/src/core/components/ui/card/card.md +215 -0
- package/docs/src/core/components/ui/divider/divider.md +126 -0
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +125 -0
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +161 -0
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +98 -0
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +109 -0
- package/docs/src/core/components/ui/form/input/input.md +142 -0
- package/docs/src/core/components/ui/form/radio/radio.md +78 -0
- package/docs/src/core/components/ui/form/select/select.md +86 -0
- package/docs/src/core/components/ui/form/switch/switch.md +80 -0
- package/docs/src/core/components/ui/form/textarea/textarea.md +82 -0
- package/docs/src/core/components/ui/group/group.md +77 -0
- package/docs/src/core/components/ui/icon/icon.md +214 -0
- package/docs/src/core/components/ui/icon/icons.json +1 -0
- package/docs/src/core/components/ui/image/image.md +167 -0
- package/docs/src/core/components/ui/link/link.md +81 -0
- package/docs/src/core/components/ui/loader/loader.md +87 -0
- package/docs/src/core/components/ui/menu/menu.md +370 -0
- package/docs/src/core/components/ui/modal/modal.md +211 -0
- package/docs/src/core/components/ui/pop/pop.md +216 -0
- package/docs/src/core/components/ui/progress/progress.md +109 -0
- package/docs/src/core/components/ui/table/table.md +267 -0
- package/docs/src/core/components/ui/theme/theme.md +97 -0
- package/docs/src/core/components/ui/toast/toast.md +147 -0
- package/docs/src/core/components/ui/tooltip/tooltip.md +89 -0
- package/docs/src/docs/decorators/ancestor-attribute.md +59 -0
- package/docs/src/docs/decorators/auto-subscribe.md +40 -0
- package/docs/src/docs/decorators/bind.md +76 -0
- package/docs/src/docs/decorators/get.md +160 -0
- package/docs/src/docs/decorators/handle.md +119 -0
- package/docs/src/docs/decorators/on-assign.md +63 -0
- package/docs/src/docs/decorators/patch.md +44 -0
- package/docs/src/docs/decorators/post.md +134 -0
- package/docs/src/docs/decorators/publish.md +56 -0
- package/docs/src/docs/decorators/put.md +51 -0
- package/docs/src/docs/decorators/subscribe.md +87 -0
- package/docs/src/docs/decorators/wait-for-ancestors.md +76 -0
- package/docs/src/docs/directives/sub.md +75 -0
- package/docs/src/docs/directives/t.md +73 -0
- package/docs/src/docs/getting-started/ai-agents.md +50 -0
- package/docs/src/docs/getting-started/components.md +5 -0
- package/docs/src/docs/getting-started/create-a-component.md +136 -0
- package/docs/src/docs/getting-started/dataFlow.md +87 -0
- package/docs/src/docs/getting-started/installation.md +36 -0
- package/docs/src/docs/getting-started/my-first-component.md +227 -0
- package/docs/src/docs/getting-started/start.md +35 -0
- package/docs/src/docs/getting-started/theming.md +253 -0
- package/docs/src/docs/misc/api-configuration.md +79 -0
- package/docs/src/docs/misc/dataProviderKey.md +168 -0
- package/docs/src/docs/misc/docs-mock-api.md +62 -0
- package/docs/src/docs/misc/dynamic-path.md +71 -0
- package/docs/src/docs/misc/endpoint.md +45 -0
- package/docs/src/docs/misc/html-integration.md +14 -0
- package/docs/src/docs/search/docs-search.json +10332 -0
- package/docs/src/tag-list.json +1 -0
- package/docs/src/tsconfig-model.json +23 -0
- package/docs/src/tsconfig.json +1359 -0
- package/index.html +157 -5
- package/package.json +8 -4
- package/public/docs-mock-api-sw.js +58 -223
- package/public/docs-mock-api-sw.js.map +4 -4
- package/public/img/concorde/plane_01.jpg +0 -0
- package/public/img/concorde/plane_02.jpg +0 -0
- package/public/img/concorde/plane_03.jpg +0 -0
- package/public/img/concorde/plane_04.jpg +0 -0
- package/public/img/concorde/plane_05.jpg +0 -0
- package/public/img/concorde/plane_06.jpg +0 -0
- package/public/img/concorde/plane_07.jpg +0 -0
- package/public/img/concorde/plane_08.jpg +0 -0
- package/public/img/concorde/plane_09.jpg +0 -0
- package/public/img/concorde/plane_10.jpg +0 -0
- package/public/img/concorde/plane_11.jpg +0 -0
- package/public/img/concorde/plane_12.jpg +0 -0
- package/public/img/concorde/plane_13.jpg +0 -0
- package/public/img/og-concorde.jpg +0 -0
- package/public/robots.txt +11 -10
- package/scripts/ai-init.mjs +104 -379
- package/scripts/ai-init.test.mjs +81 -239
- package/scripts/docs-markdown-vite-plugin.ts +43 -0
- package/scripts/docs-public-url.mjs +56 -0
- package/scripts/docs.htaccess +82 -0
- package/scripts/generate-cem.mjs +244 -0
- package/scripts/generate-cem.test.mjs +122 -0
- package/scripts/generate-crawl-docs.mjs +233 -118
- package/scripts/generate-crawl-docs.test.mjs +124 -0
- package/scripts/generate-sdui-catalog.mjs +11 -10
- package/scripts/post-build-docs.js +37 -50
- package/scripts/pre-publish.mjs +2 -1
- package/scripts/site-pages.mjs +212 -0
- package/scripts/site-pages.test.mjs +116 -0
- package/site-pages/about.md +22 -0
- package/site-pages/privacy.md +32 -0
- package/src/core/components/functional/date/date.md +91 -231
- package/src/core/components/functional/fetch/fetch.md +66 -83
- package/src/core/components/functional/if/if.md +28 -3
- package/src/core/components/functional/jsonata/jsonata.md +42 -37
- package/src/core/components/functional/list/list.md +103 -43
- package/src/core/components/functional/mix/mix.md +31 -26
- package/src/core/components/functional/queue/queue.demo.ts +10 -7
- package/src/core/components/functional/queue/queue.md +40 -61
- package/src/core/components/functional/router/router.demo.ts +16 -16
- package/src/core/components/functional/router/router.md +64 -65
- package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
- package/src/core/components/functional/sdui/component-catalog.json +1 -1
- package/src/core/components/functional/sdui/example.json +19 -86
- package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
- package/src/core/components/functional/sdui/sdui.md +187 -358
- package/src/core/components/functional/states/states.demo.ts +21 -22
- package/src/core/components/functional/states/states.md +86 -61
- package/src/core/components/functional/states/states.ts +1 -1
- package/src/core/components/functional/submit/submit.md +64 -72
- package/src/core/components/functional/translation/translation.md +38 -0
- package/src/core/components/functional/value/value.md +34 -22
- package/src/core/components/ui/alert/alert.md +48 -58
- package/src/core/components/ui/badge/badge.md +27 -34
- package/src/core/components/ui/button/button.md +139 -106
- package/src/core/components/ui/captcha/captcha.md +17 -32
- package/src/core/components/ui/card/card.md +6 -6
- package/src/core/components/ui/divider/divider.md +8 -11
- package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
- package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
- package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
- package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
- package/src/core/components/ui/form/input/input.md +95 -95
- package/src/core/components/ui/form/radio/radio.md +55 -34
- package/src/core/components/ui/form/select/select.md +60 -45
- package/src/core/components/ui/form/switch/switch.md +57 -34
- package/src/core/components/ui/form/textarea/textarea.md +55 -38
- package/src/core/components/ui/group/group.md +35 -33
- package/src/core/components/ui/icon/icon.md +4 -4
- package/src/core/components/ui/image/image.md +41 -107
- package/src/core/components/ui/link/link.md +6 -6
- package/src/core/components/ui/loader/loader.md +30 -55
- package/src/core/components/ui/menu/menu.md +27 -27
- package/src/core/components/ui/modal/modal.md +72 -96
- package/src/core/components/ui/pop/pop.md +80 -158
- package/src/core/components/ui/progress/progress.md +2 -2
- package/src/core/components/ui/table/table.md +91 -255
- package/src/core/components/ui/theme/theme.md +11 -36
- package/src/core/components/ui/toast/toast.md +48 -117
- package/src/core/components/ui/tooltip/tooltip.md +27 -62
- package/src/core/decorators/subscriber/bind.ts +9 -14
- package/src/core/utils/LocationHandler.spec.ts +80 -0
- package/src/core/utils/LocationHandler.ts +5 -9
- package/src/docs/components/docs-demo-sources.ts +55 -140
- package/src/docs/components/docs-lit-demo.ts +1 -3
- package/src/docs/components/docs-source-link.ts +0 -82
- package/src/docs/decorators/ancestor-attribute.md +59 -0
- package/src/docs/decorators/auto-subscribe.md +40 -0
- package/src/docs/decorators/bind.md +76 -0
- package/src/docs/decorators/get.md +160 -0
- package/src/docs/decorators/handle.md +119 -0
- package/src/docs/decorators/on-assign.md +63 -0
- package/src/docs/decorators/patch.md +44 -0
- package/src/docs/decorators/post.md +134 -0
- package/src/docs/decorators/publish.md +56 -0
- package/src/docs/decorators/put.md +51 -0
- package/src/docs/decorators/subscribe.md +87 -0
- package/src/docs/decorators/wait-for-ancestors.md +76 -0
- package/src/docs/directives/sub.md +75 -0
- package/src/docs/directives/t.md +73 -0
- package/src/docs/docs-location.spec.ts +56 -0
- package/src/docs/docs-location.ts +133 -32
- package/src/docs/docs.ts +1 -2
- package/src/docs/example/decorators-demo-bind-demos.ts +83 -135
- package/src/docs/example/decorators-demo-geo.ts +30 -19
- package/src/docs/example/decorators-demo-post.ts +88 -186
- package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
- package/src/docs/example/decorators-demo.ts +85 -98
- package/src/docs/example/docs-api-config-demos.ts +19 -20
- package/src/docs/example/docs-flight-demos.ts +147 -0
- package/src/docs/example/docs-jsonata-demos.ts +52 -52
- package/src/docs/example/docs-list-demos.ts +43 -123
- package/src/docs/example/docs-provider-keys.ts +21 -28
- package/src/docs/example/docs-queue-demos.ts +37 -77
- package/src/docs/example/docs-router-demos.ts +20 -25
- package/src/docs/example/docs-submit-demos.ts +48 -48
- package/src/docs/example/docs-toggle-demos.ts +4 -3
- package/src/docs/getting-started/ai-agents.md +50 -0
- package/src/docs/getting-started/components.md +5 -0
- package/src/docs/getting-started/create-a-component.md +136 -0
- package/src/docs/getting-started/dataFlow.md +87 -0
- package/src/docs/getting-started/installation.md +36 -0
- package/src/docs/getting-started/my-first-component.md +227 -0
- package/src/docs/getting-started/start.md +35 -0
- package/src/docs/getting-started/theming.md +253 -0
- package/src/docs/header/header.ts +11 -6
- package/src/docs/home/catalog.ts +1 -1
- package/src/docs/home/home.ts +20 -11
- package/src/docs/layout.ts +12 -13
- package/src/docs/misc/api-configuration.md +79 -0
- package/src/docs/misc/dataProviderKey.md +168 -0
- package/src/docs/misc/docs-mock-api.md +62 -0
- package/src/docs/misc/dynamic-path.md +71 -0
- package/src/docs/misc/endpoint.md +45 -0
- package/src/docs/misc/html-integration.md +14 -0
- package/src/docs/mock-api/api-config-mock.ts +5 -0
- package/src/docs/mock-api/fixtures.ts +0 -278
- package/src/docs/mock-api/flights.ts +89 -0
- package/src/docs/mock-api/router.ts +3 -4
- package/src/docs/mock-api/urls.ts +1 -2
- package/src/docs/navigation/navigation.ts +82 -103
- package/src/docs/navigation/toc.ts +7 -4
- package/src/docs/search/docs-search.json +2804 -5024
- package/src/docs/search/markdown-renderer.ts +31 -8
- package/src/docs/search/page.ts +9 -6
- package/src/docs/search/search.ts +154 -122
- package/src/docs/tailwind/css/docs/content.css +4 -5
- package/src/tsconfig.json +11 -5
- package/src/tsconfig.tsbuildinfo +1 -1
- package/vite.config.mts +11 -2
- package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
- package/ai/AGENTS.md +0 -56
- package/ai/cursor/rules/concorde-menu.mdc +0 -15
- package/ai/cursor/rules/concorde-scope.mdc +0 -14
- package/ai/cursor/rules/concorde-theme.mdc +0 -13
- package/ai/cursor/rules/concorde.mdc +0 -66
- package/ai/jetbrains/rules/concorde.md +0 -53
- package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
- package/ai/skills/concorde-imports/SKILL.md +0 -78
- package/ai/skills/concorde-menu/SKILL.md +0 -74
- package/ai/skills/concorde-scope/SKILL.md +0 -70
- package/ai/skills/concorde-theme/SKILL.md +0 -57
- package/docs/assets/index-CD4WyL6o.css +0 -1
- package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
- package/src/docs/_core-concept/overview.md +0 -57
- package/src/docs/_core-concept/subscriber.md +0 -75
- package/src/docs/_decorators/ancestor-attribute.md +0 -128
- package/src/docs/_decorators/auto-subscribe.md +0 -202
- package/src/docs/_decorators/bind.md +0 -167
- package/src/docs/_decorators/get.md +0 -162
- package/src/docs/_decorators/handle.md +0 -175
- package/src/docs/_decorators/on-assign.md +0 -390
- package/src/docs/_decorators/patch.md +0 -70
- package/src/docs/_decorators/post.md +0 -146
- package/src/docs/_decorators/publish.md +0 -55
- package/src/docs/_decorators/put.md +0 -70
- package/src/docs/_decorators/subscribe.md +0 -100
- package/src/docs/_decorators/wait-for-ancestors.md +0 -163
- package/src/docs/_directives/sub.md +0 -91
- package/src/docs/_getting-started/ai-agents.md +0 -76
- package/src/docs/_getting-started/concorde-manual-install.md +0 -133
- package/src/docs/_getting-started/concorde-outside.md +0 -33
- package/src/docs/_getting-started/my-first-subscriber.md +0 -120
- package/src/docs/_getting-started/pubsub.md +0 -37
- package/src/docs/_misc/formelement-subscriber-removal.md +0 -115
- package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
- package/src/docs/example/docs-joke-demos.ts +0 -297
- /package/{src/docs/_getting-started → docs/docs/getting-started}/components.md +0 -0
- /package/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +0 -0
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: concorde-component-docs
|
|
3
|
-
description: >-
|
|
4
|
-
Writes and edits Concorde UI component documentation pages (*.md) in English
|
|
5
|
-
with consistent structure, tone, sonic-code examples, and API tables. Use when
|
|
6
|
-
creating or updating component docs under src/core/components/ui/, when
|
|
7
|
-
uniformizing documentation, or when the user references alert.md-style docs.
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Concorde component documentation
|
|
11
|
-
|
|
12
|
-
Apply this skill when **creating** or **editing** a component doc page (typically `src/core/components/ui/<component>/<component>.md`).
|
|
13
|
-
|
|
14
|
-
Canonical examples: `alert.md`, `badge.md`, `link.md`, `image.md`.
|
|
15
|
-
|
|
16
|
-
## Workflow
|
|
17
|
-
|
|
18
|
-
### Creating a new page
|
|
19
|
-
|
|
20
|
-
1. Read the component implementation (`.ts` / props, slots, reflected attributes, defaults).
|
|
21
|
-
2. Draft the **intro** (what it does, when to use it, 1–2 critical APIs).
|
|
22
|
-
3. Add **feature sections** in order of reader need (basic → variants → composition → edge cases → a11y).
|
|
23
|
-
4. Add one **`<sonic-code>`** example per section; group enum variants in a single demo when practical.
|
|
24
|
-
5. End with **`## API reference`** (attributes table, slots table if any).
|
|
25
|
-
6. Run the [quality checklist](#quality-checklist).
|
|
26
|
-
|
|
27
|
-
### Editing an existing page
|
|
28
|
-
|
|
29
|
-
1. Preserve working examples; only change prose/structure to match this guide.
|
|
30
|
-
2. Do not duplicate `## API reference` blocks—merge into one.
|
|
31
|
-
3. Align intro tone and section titles with sibling docs; add missing API rows from source.
|
|
32
|
-
4. Keep demo markup valid; avoid unrelated refactors in examples.
|
|
33
|
-
|
|
34
|
-
## Page structure
|
|
35
|
-
|
|
36
|
-
```markdown
|
|
37
|
-
# ComponentName
|
|
38
|
-
|
|
39
|
-
[Intro paragraph: 1–3 sentences. Purpose, primary use case, key props/slots.]
|
|
40
|
-
|
|
41
|
-
## Basic example
|
|
42
|
-
[or first topical section, e.g. ## Type, ## Href, ## Rounded]
|
|
43
|
-
|
|
44
|
-
[Optional short prose before the example.]
|
|
45
|
-
|
|
46
|
-
<sonic-code>
|
|
47
|
-
<template>
|
|
48
|
-
...
|
|
49
|
-
</template>
|
|
50
|
-
</sonic-code>
|
|
51
|
-
|
|
52
|
-
## [Feature or variant name]
|
|
53
|
-
|
|
54
|
-
...
|
|
55
|
-
|
|
56
|
-
## API reference
|
|
57
|
-
|
|
58
|
-
| Attribute | Values | Description |
|
|
59
|
-
|----------|---------|-------------|
|
|
60
|
-
| ... | ... | ... |
|
|
61
|
-
|
|
62
|
-
| Slot | Description |
|
|
63
|
-
|------|-------------|
|
|
64
|
-
| ... | ... |
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Title (`#`)
|
|
68
|
-
|
|
69
|
-
- Singular component name, Title Case: `# Alert`, `# Badge`, `# Link`, `# Image`.
|
|
70
|
-
- Match the public tag name conceptually (`sonic-alert` → Alert).
|
|
71
|
-
|
|
72
|
-
### Intro (required for new-style docs)
|
|
73
|
-
|
|
74
|
-
One tight paragraph immediately after the title:
|
|
75
|
-
|
|
76
|
-
- State **what** the component does and **when** to choose it.
|
|
77
|
-
- Call out **defaults** and **constraints** only if they prevent misuse.
|
|
78
|
-
- Formatting:
|
|
79
|
-
- **Bold** for emphasis on behavior (not for every noun).
|
|
80
|
-
- API names and tags in backticks; when listing several, **do not put commas between inline-code spans** (rendered as adjacent `<code>`). Join with **`/`**, **`and`**, or separate clauses—e.g. `` `label` `` / `` `text` ``, not `` `label` ``, `` `text` ``.
|
|
81
|
-
- Cross-link related components in prose: “aligned with **`sonic-button`**”, “pair with **`ratio="1/1"`**”.
|
|
82
|
-
|
|
83
|
-
Avoid marketing fluff, long tutorials, and repeating the API table in the intro.
|
|
84
|
-
|
|
85
|
-
### Section headings (`##` / `###`)
|
|
86
|
-
|
|
87
|
-
- **Sentence case** or short Title Case; be consistent within one file.
|
|
88
|
-
- Name sections after **one concern**: `Status`, `Size`, `Dismissible`, `Accessibility (\`announce\`)`, `Prefix and suffix slots`.
|
|
89
|
-
- Use `###` for sub-variants of the same feature (e.g. `### AutoActive Strict vs partial`).
|
|
90
|
-
- Put **`## API reference`** last—never in the middle.
|
|
91
|
-
|
|
92
|
-
Suggested order (omit what does not apply):
|
|
93
|
-
|
|
94
|
-
1. Basic example / primary API
|
|
95
|
-
2. Visual variants (`type` / `status` / `variant` / `size` / …)
|
|
96
|
-
3. Content model (slots, `label` / `text`, rich content)
|
|
97
|
-
4. Composition patterns (inside buttons, with links, …)
|
|
98
|
-
5. Behavioral flags (`dismissible` / `announce` / `cover` / …)
|
|
99
|
-
6. Accessibility (dedicated section when non-obvious)
|
|
100
|
-
7. API reference
|
|
101
|
-
|
|
102
|
-
### Prose before examples
|
|
103
|
-
|
|
104
|
-
- **Default first**: “With no `status`, behavior is `default`.” “Default **`loading`** is `lazy`.”
|
|
105
|
-
- **Enums inline** when short: `` `outline` `` — border and text in the `type` color.
|
|
106
|
-
- **Requirements**: stable `` `id` `` required for `dismissForever`; parent must constrain width for `ellipsis`.
|
|
107
|
-
- **Implementation notes** only when they change usage: `localStorage`; `role="alert"`; remount to replay transitions.
|
|
108
|
-
- Length: 0–4 sentences per section; longer only for accessibility or non-obvious behavior.
|
|
109
|
-
|
|
110
|
-
## Live examples (`<sonic-code>`)
|
|
111
|
-
|
|
112
|
-
Wrap all demos:
|
|
113
|
-
|
|
114
|
-
```html
|
|
115
|
-
<sonic-code>
|
|
116
|
-
<template>
|
|
117
|
-
<!-- demo markup -->
|
|
118
|
-
</template>
|
|
119
|
-
</sonic-code>
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Conventions:
|
|
123
|
-
|
|
124
|
-
- Use Tailwind layout utilities already used in the design system docs: `grid gap-4` / `flex flex-wrap gap-2` / `items-center`.
|
|
125
|
-
- Show **all enum values** in one row/grid when demonstrating `type`, `status`, or `size`.
|
|
126
|
-
- Label variants in the UI (badge text, caption `<p class="mt-2">`) when comparison matters.
|
|
127
|
-
- Prefer realistic copy over “Lorem ipsum” unless demonstrating truncation or length.
|
|
128
|
-
- Interactive demos (buttons that mutate DOM) are allowed when they teach behavior—add one sentence explaining what to click.
|
|
129
|
-
- Do not wrap API tables or long prose inside `<sonic-code>`.
|
|
130
|
-
|
|
131
|
-
## API reference
|
|
132
|
-
|
|
133
|
-
### Attributes table
|
|
134
|
-
|
|
135
|
-
```markdown
|
|
136
|
-
| Attribute | Values | Description |
|
|
137
|
-
|----------|---------|-------------|
|
|
138
|
-
| `name` | `a` · `b` (default `a`) | One line: behavior + default + interaction with other props |
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
- Column headers exactly: **Attribute**, **Values**, **Description**.
|
|
142
|
-
- **Values**: list allowed literals separated by **middle dot (` · `)** or **`…`** for ranges (`2xs` … `2xl`)—**never commas between backtick spans**. Put **(default `…`)** in this column or in Description—be consistent within the file.
|
|
143
|
-
- **Description**: imperative, factual; mention side effects (`removes from DOM`, `ignored when \`cover\` is set`).
|
|
144
|
-
- Document boolean attributes as boolean in the table; no need to say “true/false” unless ambiguous.
|
|
145
|
-
|
|
146
|
-
### Slots table
|
|
147
|
-
|
|
148
|
-
```markdown
|
|
149
|
-
| Slot | Description |
|
|
150
|
-
|------|-------------|
|
|
151
|
-
| *(default)* | Main label / message body |
|
|
152
|
-
| `icon` | Replaces the default `sonic-icon` |
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
- If the component has **no slots**, state it in prose under the attributes table (see `image.md`).
|
|
156
|
-
- Use *(default)* for the unnamed slot.
|
|
157
|
-
|
|
158
|
-
### Single API block
|
|
159
|
-
|
|
160
|
-
One `## API reference` section per file. If the source doc has duplicates, consolidate without losing rows.
|
|
161
|
-
|
|
162
|
-
## Voice and language
|
|
163
|
-
|
|
164
|
-
- **English only** for user-facing doc text.
|
|
165
|
-
- Present tense, second person avoided; address the integrator (“Set **`announce`** when…”).
|
|
166
|
-
- Prefer precise verbs: surface, navigate, truncate, persist, intercept.
|
|
167
|
-
- Do not document internal CSS class names unless the doc already uses them for styling hooks (`[&[active]]:text-success` in examples is OK).
|
|
168
|
-
|
|
169
|
-
## Quality checklist
|
|
170
|
-
|
|
171
|
-
Before finishing, verify:
|
|
172
|
-
|
|
173
|
-
- [ ] `#` title + intro paragraph present (for new or modernized pages).
|
|
174
|
-
- [ ] Every `##` section (except API) has a `<sonic-code>` example unless it is pure sub-prose under a parent demo.
|
|
175
|
-
- [ ] Defaults and required attributes are stated in prose or API table.
|
|
176
|
-
- [ ] Accessibility called out where behavior affects AT (roles, `alt`, decorative icons).
|
|
177
|
-
- [ ] Exactly one `## API reference`; attributes and slots match the component source.
|
|
178
|
-
- [ ] No duplicate sections; heading levels skip only when using `###` under `##`.
|
|
179
|
-
- [ ] Attribute/slot names match the implementation (camelCase in docs).
|
|
180
|
-
- [ ] No comma-separated lists of inline-code terms in prose or API **Values** cells.
|
|
181
|
-
|
|
182
|
-
## Anti-patterns
|
|
183
|
-
|
|
184
|
-
- Long narrative guides, installation steps, or changelog in component `.md` files.
|
|
185
|
-
- Examples without `<sonic-code>` wrappers.
|
|
186
|
-
- API tables at the top of the page.
|
|
187
|
-
- Mixing French and English in the same page.
|
|
188
|
-
- Vague intros (“This component is very useful”) without API hints.
|
|
189
|
-
- Separate micro-sections per enum value when one grid demo suffices.
|
|
190
|
-
- Comma chains of inline code: `` `a` ``, `` `b` ``, and `` `c` `` (use `/`, ` · `, or `and` instead).
|
|
191
|
-
|
|
192
|
-
## Reference template
|
|
193
|
-
|
|
194
|
-
See [template.md](template.md) for a copy-paste skeleton.
|
package/ai/AGENTS.md
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Agents — Concorde
|
|
2
|
-
|
|
3
|
-
Guide pour les agents IA sur un projet **Concorde** (Lit + DataProvider).
|
|
4
|
-
|
|
5
|
-
## Skills / rules (après installation)
|
|
6
|
-
|
|
7
|
-
| Fichier | Rôle |
|
|
8
|
-
|---------|------|
|
|
9
|
-
| `.cursor/skills/concorde/SKILL.md` | Patterns framework |
|
|
10
|
-
| `.cursor/skills/concorde-imports/SKILL.md` | Imports courts |
|
|
11
|
-
| `.cursor/skills/concorde-scope/SKILL.md` | Scope + APIConfiguration |
|
|
12
|
-
| `.cursor/skills/concorde-theme/SKILL.md` | Design tokens sonic-theme |
|
|
13
|
-
| `.cursor/skills/concorde-menu/SKILL.md` | Navigation sonic-menu |
|
|
14
|
-
| `.cursor/skills/concorde-get-set-dp/SKILL.md` | Migration get/set/dp + DataProviderKey statique |
|
|
15
|
-
| `.cursor/rules/concorde.mdc` | Règles Cursor (patterns) |
|
|
16
|
-
| `.aiassistant/rules/concorde.md` | Règles JetBrains AI Assistant |
|
|
17
|
-
|
|
18
|
-
Installation :
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
node node_modules/@supersoniks/concorde/scripts/ai-init.mjs
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Source : `@supersoniks/concorde/ai/`
|
|
25
|
-
|
|
26
|
-
## Imports dans ce dépôt (lib + doc)
|
|
27
|
-
|
|
28
|
-
Les chemins courts (`@supersoniks/concorde/list`, `/menu`, `/queue`, …) sont des **exports npm** pour les apps **externes**. Dans le repo Concorde (`src/docs`, `src/core`, démos), utiliser les chemins **réels** :
|
|
29
|
-
|
|
30
|
-
- Composants : `@supersoniks/concorde/core/components/…` ou import relatif (`../../core/components/functional/list/list`)
|
|
31
|
-
- Décorateurs : `@supersoniks/concorde/core/decorators/Subscriber` (ou `src/decorators.ts` via `@supersoniks/concorde/decorators` si résolu par l’alias Vite racine)
|
|
32
|
-
- `DataProviderKey` : `@supersoniks/concorde/core/utils/dataProviderKey`
|
|
33
|
-
|
|
34
|
-
Skill **`concorde-imports`** : section « Dans le dépôt Concorde ».
|
|
35
|
-
|
|
36
|
-
## Conventions impératives
|
|
37
|
-
|
|
38
|
-
- Toujours **DataProvider**, accès via **`get` / `set`**
|
|
39
|
-
- Pas de **`sonic-fetch`**, pas de **`PublisherManager`**
|
|
40
|
-
- Pas de `@onAssign` — **`@handle`** + `DataProviderKey`
|
|
41
|
-
- Pas de **`@bind`** sur les composants métier — **`@subscribe`** + `DataProviderKey<T, U>` (type + contraintes hôte `${…}`)
|
|
42
|
-
- Formulaires : **`formDataProvider`** + `name` sur `sonic-input`
|
|
43
|
-
- Listes : templates **Lit** (`.items`, `.separator`, `.noItems`, `.skeleton`) — pas de promotion des `<template>` HTML
|
|
44
|
-
- **Scope** (API/forms) ≠ **theme** (couleurs) — skills `concorde-scope` / `concorde-theme`
|
|
45
|
-
|
|
46
|
-
## Migration get / set / dp
|
|
47
|
-
|
|
48
|
-
Skill **`concorde-get-set-dp`** : chemins sans placeholder **`${…}`** / **`{$…}`** pour `get` / `set` / `dp` ; chemins JS évalués OK ; clés dynamiques → décorateurs, `dp(idRésolu)`, ou **`sub(clé)`** dans les templates Lit.
|
|
49
|
-
|
|
50
|
-
## Migration Subscriber / sonic-fetch
|
|
51
|
-
|
|
52
|
-
Skill **`concorde`** — section **« Piège migration Subscriber → LitElement »** : ne pas laisser des `@property` orphelines après retrait du mixin ; `@get` + `@subscribe` feuille ; `apiConfigKey` en modale ; sync des noms de props pour les `Endpoint` dynamiques.
|
|
53
|
-
|
|
54
|
-
## Documentation
|
|
55
|
-
|
|
56
|
-
Fichiers `.md` dans le package : `node_modules/@supersoniks/concorde/src/` (composants, décorateurs, getting-started).
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Navigation Concorde — sonic-menu, sonic-menu-item, sonic-divider
|
|
3
|
-
globs: **/{layout,sidebar,nav,docs-shell,routes}/**
|
|
4
|
-
alwaysApply: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Navigation Concorde
|
|
8
|
-
|
|
9
|
-
1. **`sonic-menu`** + **`sonic-menu-item`** — pas une liste de boutons ghost.
|
|
10
|
-
2. Sections : **`sonic-divider`** (`label`, `align="left"`, `size="sm"`).
|
|
11
|
-
3. Liens internes : `pushstate` + `href` + `autoActive="strict"`.
|
|
12
|
-
|
|
13
|
-
Référence : `.cursor/skills/concorde-menu/SKILL.md`
|
|
14
|
-
|
|
15
|
-
Pas de tirets dans les noms de dossiers de routes (générateur Concorde).
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Scope — inherited API, form, icon defaults (not theme)
|
|
3
|
-
globs: **/*.{ts,tsx,html}
|
|
4
|
-
alwaysApply: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Scope
|
|
8
|
-
|
|
9
|
-
Skill **`concorde-scope`**
|
|
10
|
-
|
|
11
|
-
- `<sonic-scope>` — light DOM, attributes inherited by descendants
|
|
12
|
-
- API: `serviceURL`, `token`, `credentials` → `@get`, list, queue
|
|
13
|
-
- Or: `DataProviderKey<APIConfiguration>` as 2nd arg to `@get`
|
|
14
|
-
- Not for colors/fonts — use **`concorde-theme`**
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: sonic-theme — design tokens, not API scope
|
|
3
|
-
globs: **/*.{ts,tsx,css,html}
|
|
4
|
-
alwaysApply: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Theme
|
|
8
|
-
|
|
9
|
-
Skill **`concorde-theme`**
|
|
10
|
-
|
|
11
|
-
- `<sonic-theme color font class="block bg-base">` + `--sc-*` CSS variables
|
|
12
|
-
- `theme="dark"` for built-in dark palette
|
|
13
|
-
- Not for `serviceURL` / API — use **`concorde-scope`**
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Patterns Concorde — DataProvider, décorateurs, templates Lit list/queue, pas sonic-fetch
|
|
3
|
-
globs: **/*.{ts,tsx,js,mjs}
|
|
4
|
-
alwaysApply: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Concorde — patterns
|
|
8
|
-
|
|
9
|
-
Référence : `.cursor/skills/concorde/SKILL.md` + `.cursor/skills/concorde-imports/SKILL.md`
|
|
10
|
-
Migration get/set/dp : `.cursor/skills/concorde-get-set-dp/SKILL.md`
|
|
11
|
-
|
|
12
|
-
## Imports
|
|
13
|
-
|
|
14
|
-
**Apps externes** : chemins courts (`@supersoniks/concorde/list`, `/menu`, `/decorators`, …) — voir skill `concorde-imports`.
|
|
15
|
-
|
|
16
|
-
**Dépôt Concorde (lib + doc)** : chemins longs ou relatifs — ex. `core/components/functional/list/list`, `core/decorators/Subscriber`, `core/utils/dataProviderKey`. Pas `@supersoniks/concorde/list` ici.
|
|
17
|
-
|
|
18
|
-
## Vocabulaire
|
|
19
|
-
|
|
20
|
-
- **DataProvider** (jamais « publisher »)
|
|
21
|
-
- Accès impératif : **`dp(clé).get()` / `.set()` / `.invalidate()`** ou `get(clé)` / `set(clé, v)` — **jamais** `PublisherManager.getInstance()` ni `PublisherManager.get()` dans le code métier (bootstrap `dp.ts` excepté)
|
|
22
|
-
|
|
23
|
-
## Interdits (nouveau code)
|
|
24
|
-
|
|
25
|
-
- `sonic-fetch` → `sonic-queue` + filtre, ou `@get`
|
|
26
|
-
- Les décorateurs API (`@get`, `@post`, `@put`, `@patch`) s'adaptent aux
|
|
27
|
-
propriétés et aux méthodes
|
|
28
|
-
- `@onAssign` → `@handle` + `DataProviderKey`
|
|
29
|
-
- `@bind` → `@subscribe` + `DataProviderKey<T, U>` (pas sur composants métier)
|
|
30
|
-
- `data-bind` HTML → `@subscribe` / `sub()`
|
|
31
|
-
- `sonic-input` + `@input` → `formDataProvider` + `name`
|
|
32
|
-
- Templates HTML sur list/queue → `.items`, `.separator`, `.noItems`, `.skeleton`
|
|
33
|
-
|
|
34
|
-
## DataProviderKey dynamique
|
|
35
|
-
|
|
36
|
-
```typescript
|
|
37
|
-
new DataProviderKey<T, { userIndex: number }>("users.${userIndex}")
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Placeholder `${prop}` = chaîne normale, résolu depuis le composant hôte.
|
|
41
|
-
|
|
42
|
-
## get / set / dp vs sub()
|
|
43
|
-
|
|
44
|
-
- **`get` / `set` / `dp`** : pas de `${` / `{$` dans la string passée (clé statique ou chemin JS évalué).
|
|
45
|
-
- **`sub(chemin | DataProviderKey)`** : dynamique OK dans les templates (placeholders `${…}` sur l’hôte).
|
|
46
|
-
- Clé dynamique → décorateur ou `dp(idRésolu)`, pas `dp(cléAvecPlaceholder)`.
|
|
47
|
-
|
|
48
|
-
## Scope / theme
|
|
49
|
-
|
|
50
|
-
- **Scope** : `<sonic-scope serviceURL="…">` · `@get(endpoint)` ou `@get(endpoint, apiConfigKey)` — skills `concorde-scope`
|
|
51
|
-
- **GET + handler** : `@get(endpoint)` sur une méthode ; le handler reçoit
|
|
52
|
-
`result`, `response`, `request`, ou `undefined`. Conserver le handle retourné
|
|
53
|
-
par `get` pour `refetch`.
|
|
54
|
-
- **Write + handler** : même modèle avec `post`, `put`, `patch` ; `@send`
|
|
55
|
-
reste le déclencheur explicite.
|
|
56
|
-
- **Theme** : `<sonic-theme color font class="block bg-base">` · `--sc-*` — skill `concorde-theme`
|
|
57
|
-
|
|
58
|
-
## Migration Subscriber / sonic-fetch (piège fréquent)
|
|
59
|
-
|
|
60
|
-
- Retirer `extends Subscriber` **sans** `@subscribe` sur chaque champ affiché → UI vide (props orphelines).
|
|
61
|
-
- Remplacer `sonic-fetch` : `@get` + alimenter le DP ; UI en `@subscribe` feuille ou hôte `Subscriber` + `dataProvider`/`subDataProvider`.
|
|
62
|
-
- `@get` + placeholders `${prop}` : propriétés homonymes sur l'hôte (ou sync dans `willUpdate`).
|
|
63
|
-
- Modale / portal : `@get(endpoint, apiConfigKey)` si pas de `serviceURL` ascendant.
|
|
64
|
-
- `@subscribe` → préférer `@state()`, pas `@property`.
|
|
65
|
-
|
|
66
|
-
Détail : skill `concorde` — section « Piège migration Subscriber → LitElement ».
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Concorde — patterns agent
|
|
2
|
-
|
|
3
|
-
Référence doc : fichiers `.md` dans `node_modules/@supersoniks/concorde/src/`.
|
|
4
|
-
|
|
5
|
-
## Imports
|
|
6
|
-
|
|
7
|
-
**Apps externes** : chemins courts (`/menu`, `/list`, `/decorators`, `/dataProviderKey`, …).
|
|
8
|
-
|
|
9
|
-
**Dépôt Concorde (lib + doc)** : `core/components/functional/list/list`, `core/decorators/Subscriber`, `core/utils/dataProviderKey` — pas `@supersoniks/concorde/list` ici.
|
|
10
|
-
|
|
11
|
-
## Vocabulaire
|
|
12
|
-
|
|
13
|
-
- **DataProvider** (jamais « publisher »)
|
|
14
|
-
- Accès : **get / set** — pas PublisherManager
|
|
15
|
-
|
|
16
|
-
## Interdits (nouveau code)
|
|
17
|
-
|
|
18
|
-
- sonic-fetch → sonic-queue + filtre, ou @get
|
|
19
|
-
- Les décorateurs API (@get, @post, @put, @patch) s'adaptent aux propriétés
|
|
20
|
-
et aux méthodes
|
|
21
|
-
- @onAssign → @handle + DataProviderKey
|
|
22
|
-
- data-bind HTML → @subscribe / sub()
|
|
23
|
-
- sonic-input + @input → formDataProvider + name
|
|
24
|
-
- Templates HTML list/queue → .items, .separator, .noItems, .skeleton
|
|
25
|
-
- Chemins longs ui/…, functional/…, core/… quand un alias racine existe
|
|
26
|
-
|
|
27
|
-
## DataProviderKey dynamique
|
|
28
|
-
|
|
29
|
-
Placeholder `${prop}` dans une chaîne normale : `"users.${userIndex}"`.
|
|
30
|
-
|
|
31
|
-
## Scope vs theme
|
|
32
|
-
|
|
33
|
-
- **Scope** (`sonic-scope`) : `serviceURL`, `formDataProvider`, icônes — skill `concorde-scope`
|
|
34
|
-
- **Theme** (`sonic-theme`) : `--sc-*` tokens, dark mode — skill `concorde-theme`
|
|
35
|
-
- `@get(endpoint)` sans clé config → hérite scope ; `@get(endpoint, apiConfigKey)` → DataProvider
|
|
36
|
-
- `@get(endpoint)` sur une méthode reçoit `result`, `response`, `request`, ou
|
|
37
|
-
`undefined` ; conserver le handle retourné par `get` pour `refetch`
|
|
38
|
-
- Même modèle avec `post`, `put`, `patch` ; `@send` reste le déclencheur
|
|
39
|
-
explicite de l'opération
|
|
40
|
-
- Modale / portal : préférer `apiConfigKey` si pas de scope DOM fiable
|
|
41
|
-
|
|
42
|
-
## Migration Subscriber / sonic-fetch
|
|
43
|
-
|
|
44
|
-
- Ne pas retirer `Subscriber` sans `@subscribe` feuille par feuille sur chaque champ du `render()`.
|
|
45
|
-
- `sonic-fetch` → `@get` + DP ; `@subscribe` ou hôte `Subscriber` avec `dataProvider`/`subDataProvider`.
|
|
46
|
-
- Placeholders Endpoint = propriétés homonymes sur l'hôte (`checkCode` → copier vers `code` si besoin).
|
|
47
|
-
- `@subscribe` + `@state()`, pas `@property` pour la lecture DP.
|
|
48
|
-
|
|
49
|
-
## Navigation
|
|
50
|
-
|
|
51
|
-
sonic-menu + sonic-menu-item + sonic-divider. pushstate + autoActive="strict".
|
|
52
|
-
|
|
53
|
-
Pas de tirets dans les noms de dossiers routes.
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: concorde-get-set-dp
|
|
3
|
-
description: >-
|
|
4
|
-
Migration et usage de get/set/dp avec DataProviderKey statique.
|
|
5
|
-
Rejet des placeholders ${} par resolveStaticPublisherPath ; sub() et
|
|
6
|
-
décorateurs pour le dynamique.
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Concorde — get / set / dp (chemins statiques)
|
|
10
|
-
|
|
11
|
-
Skill de **migration** vers Concorde ≥ 4.6 avec `resolveStaticPublisherPath`.
|
|
12
|
-
À activer quand un projet monte de version ou refactorise vers `DataProviderKey`.
|
|
13
|
-
|
|
14
|
-
Référence framework : skill **`concorde`**, doc `src/docs/_misc/dataProviderKey.md`.
|
|
15
|
-
|
|
16
|
-
## Quand utiliser cette skill
|
|
17
|
-
|
|
18
|
-
- Monter `@supersoniks/concorde` avec garde statique sur `get` / `set` / `dp`.
|
|
19
|
-
- Auditer un codebase TypeScript existant avant/après upgrade.
|
|
20
|
-
- Distinguer **chemin évalué en JS** vs **placeholder Concorde** `${prop}` / `{$prop}`.
|
|
21
|
-
- Choisir entre API programmatique (`get/set/dp`) et réactivité (`sub`, décorateurs).
|
|
22
|
-
|
|
23
|
-
## Règle de rejet (runtime)
|
|
24
|
-
|
|
25
|
-
`resolveStaticPublisherPath` lève une erreur si la string passée à `get`, `set` ou `dp` contient **`${`** ou **`{$`** :
|
|
26
|
-
|
|
27
|
-
| Appel | Résultat |
|
|
28
|
-
|-------|----------|
|
|
29
|
-
| `dp(new DataProviderKey("users.${userIndex}"))` | **throw** |
|
|
30
|
-
| `get("users.${userIndex}")` | **throw** |
|
|
31
|
-
| `dp(staticKey.path)` si `.path` contient `${` | **throw** |
|
|
32
|
-
|
|
33
|
-
**OK** — le chemin est résolu **avant** l'appel (pas de placeholder littéral) :
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
set(`app.pages.${index}.isComplete`, true); // → "app.pages.2.isComplete"
|
|
37
|
-
dp(`${this.formDataProvider}/fieldName`); // → "checkoutForm/email"
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
**Faux positif fréquent** : grep `${` dans les sources TS ne suffit pas — vérifier la **valeur runtime** passée à `get/set/dp`.
|
|
41
|
-
|
|
42
|
-
## Rétrocompatibilité
|
|
43
|
-
|
|
44
|
-
| Avant | Après (recommandé) | Statut |
|
|
45
|
-
|-------|-------------------|--------|
|
|
46
|
-
| `dp(key.path)` | `dp(key)` | Équivalent si clé statique |
|
|
47
|
-
| `set(key.path, v)` | `set(key, v)` | Équivalent |
|
|
48
|
-
| `get("myCounter.count")` | `get(key.count)` | Typage amélioré |
|
|
49
|
-
| `key.path` dans attribut HTML | Inchangé | Toujours valide |
|
|
50
|
-
| `@onAssign(key.path)` | `@handle(key.leaf)` | Migration parallèle (skill `concorde`) |
|
|
51
|
-
|
|
52
|
-
Aucune rupture pour le code qui passait déjà des **strings résolues** ou des clés **statiques**.
|
|
53
|
-
|
|
54
|
-
## Trois niveaux d'accès DataProvider
|
|
55
|
-
|
|
56
|
-
| Mécanisme | Contexte | Dynamique |
|
|
57
|
-
|-----------|----------|-----------|
|
|
58
|
-
| **`get` / `set` / `dp`** | Code impératif, snapshot instant T | **Non** (placeholder `${` interdit) |
|
|
59
|
-
| **`sub(chemin \| clé)`** | Template Lit, réactivité | **Oui** — string, concat JS, ou `DataProviderKey` avec `${prop}` |
|
|
60
|
-
| **`@subscribe` / `@publish` / `@handle`** | Propriétés composant | **Oui** — `DataProviderKey<T, U>` avec `"base.${prop}"` |
|
|
61
|
-
| **`@bind`** | Legacy / bidirectionnel | Éviter sur composants métier — préférer `@subscribe` |
|
|
62
|
-
|
|
63
|
-
### `sub()` — dynamique OK (clés incluses), ne pas migrer vers `get()`
|
|
64
|
-
|
|
65
|
-
`sub()` accepte `string | DataProviderKey`, résout les placeholders `${prop}` depuis le **composant hôte** du template (comme `@subscribe`), et se ré-abonne quand les props observées changent.
|
|
66
|
-
|
|
67
|
-
```typescript
|
|
68
|
-
const userKey = new DataProviderKey<User, { userIndex: number }>("users.${userIndex}");
|
|
69
|
-
|
|
70
|
-
html`<p>${sub(userKey.name)}</p>`
|
|
71
|
-
html`<p>${sub(counterKey.count)}</p>`
|
|
72
|
-
html`<p>${sub(this.formDataProvider + ".email")}</p>`
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
Doc : `src/docs/_directives/sub.md`.
|
|
76
|
-
|
|
77
|
-
**Anti-pattern** : remplacer `sub(…)` par `get(…)` dans un template → perte de réactivité (snapshot unique).
|
|
78
|
-
|
|
79
|
-
### Clé dynamique Concorde → décorateur ou factory
|
|
80
|
-
|
|
81
|
-
```typescript
|
|
82
|
-
export const resourceKey = new DataProviderKey<ResourceData, { resourceId: string }>(
|
|
83
|
-
"${resourceId}",
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
// ❌ dp(resourceKey) ou dp(resourceKey.path) → throw
|
|
87
|
-
export const resourceProvider = (id: string) => dp<ResourceData>(id);
|
|
88
|
-
|
|
89
|
-
@handle(resourceKey.conf.mode)
|
|
90
|
-
onMode(mode: Mode) { /* … */ }
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Patterns avant / après
|
|
94
|
-
|
|
95
|
-
### Statique typé (nouveau code)
|
|
96
|
-
|
|
97
|
-
```typescript
|
|
98
|
-
const cartKey = new DataProviderKey<Cart>("cart");
|
|
99
|
-
set(cartKey, { items: [] });
|
|
100
|
-
dp(cartKey.items[0].qty).set(1);
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### ID runtime (string pure, pas placeholder Concorde)
|
|
104
|
-
|
|
105
|
-
```typescript
|
|
106
|
-
dp(resolvedId); // ex. "resource-abc123"
|
|
107
|
-
set(`forms/${formId}`, formData);
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### Index ou segment dynamique via JS (compatible)
|
|
111
|
-
|
|
112
|
-
**Avant** :
|
|
113
|
-
|
|
114
|
-
```typescript
|
|
115
|
-
set(`app.pages.${index}.isComplete`, isComplete);
|
|
116
|
-
return get(`app.labels.${language}.${key}`);
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
**Après** (option typée, même runtime) :
|
|
120
|
-
|
|
121
|
-
```typescript
|
|
122
|
-
const pagesKey = new DataProviderKey<AppState["pages"]>("app.pages");
|
|
123
|
-
set(pagesKey[index].isComplete, isComplete);
|
|
124
|
-
|
|
125
|
-
const labelsKey = new DataProviderKey<AppState["labels"]>("app.labels");
|
|
126
|
-
return get(labelsKey[language][key]);
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
**Helper générique** — conserver si le suffixe ne contient jamais `${` :
|
|
130
|
-
|
|
131
|
-
```typescript
|
|
132
|
-
export const appSet = <P extends string>(path: P, value: AppValue<P>) => {
|
|
133
|
-
set(`app.${path}`, value);
|
|
134
|
-
};
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
### Chemins entièrement statiques
|
|
138
|
-
|
|
139
|
-
**Avant** :
|
|
140
|
-
|
|
141
|
-
```typescript
|
|
142
|
-
set("app.widget.computed", value);
|
|
143
|
-
const publisher = dp("app.widget.distance");
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
**Après** :
|
|
147
|
-
|
|
148
|
-
```typescript
|
|
149
|
-
const widgetKey = new DataProviderKey<AppState["widget"]>("app.widget");
|
|
150
|
-
set(widgetKey.computed, value);
|
|
151
|
-
const publisher = dp(widgetKey.distance);
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## Profils de risque (générique)
|
|
155
|
-
|
|
156
|
-
| Profil codebase | Risque | Indice |
|
|
157
|
-
|-----------------|--------|--------|
|
|
158
|
-
| Strings JS uniquement, pas de `DataProviderKey` | Très faible | Chemins déjà résolus avant `get/set/dp` |
|
|
159
|
-
| Mix `DataProviderKey` statique + `.path` | Faible | Simplifier `dp(key)` progressivement |
|
|
160
|
-
| Clés avec `"${prop}"` passées à `dp()` | **Élevé** | Remplacer par factory `dp(idRésolu)` ou décorateur |
|
|
161
|
-
| Templates avec `sub()` | Aucun | Ne pas « migrer » vers `get()` |
|
|
162
|
-
|
|
163
|
-
Migrations **distinctes** (hors scope) : `PublisherManager`, `@onAssign` → `@handle`.
|
|
164
|
-
|
|
165
|
-
## Checklist migration (agent)
|
|
166
|
-
|
|
167
|
-
1. [ ] Confirmer version Concorde avec `resolveStaticPublisherPath` dans `dataProviderKey.ts`.
|
|
168
|
-
2. [ ] Chercher `DataProviderKey(` dont le constructeur contient `${` ou `{$`.
|
|
169
|
-
3. [ ] Pour chaque hit : si `get` / `set` / `dp` reçoit la clé → factory `dp(idRésolu)` ou décorateur.
|
|
170
|
-
4. [ ] Simplifier `dp(staticKey.path)` → `dp(staticKey)` sur clés statiques.
|
|
171
|
-
5. [ ] **Ne pas** toucher `sub(...)` ni décorateurs dynamiques sans raison.
|
|
172
|
-
6. [ ] Distinguer grep `${` (source) vs valeur runtime.
|
|
173
|
-
7. [ ] Tests manuels sur les flux métier qui utilisent clés dynamiques et formulaires `sub()`.
|
|
174
|
-
|
|
175
|
-
## Anti-patterns
|
|
176
|
-
|
|
177
|
-
| Anti-pattern | Pourquoi |
|
|
178
|
-
|--------------|----------|
|
|
179
|
-
| `dp(key)` sur clé `"${resourceId}"` | Throw immédiat |
|
|
180
|
-
| `sub()` → `get()` dans template | Perte réactivité |
|
|
181
|
-
| Refactor global `.path` → clé sur toutes les clés sans tri statique/dynamique | Régressions |
|
|
182
|
-
| Confondre migration get/set/dp et suppression `PublisherManager` | Périmètres différents |
|
|
183
|
-
|
|
184
|
-
## Fichiers de référence (package Concorde)
|
|
185
|
-
|
|
186
|
-
- `src/core/utils/dataProviderKey.ts` — `resolveStaticPublisherPath`
|
|
187
|
-
- `src/core/utils/PublisherProxy.ts` — overloads `get` / `set` / `dp`
|
|
188
|
-
- `src/core/utils/publisherPathKey.spec.ts` — tests
|
|
189
|
-
- `src/core/directives/DataProvider.ts` — `sub()`
|
|
190
|
-
- `src/docs/_misc/dataProviderKey.md`
|
|
191
|
-
|
|
192
|
-
## Maintenance
|
|
193
|
-
|
|
194
|
-
Mettre à jour quand l'API Concorde évolue ou que de nouveaux cas edge sont documentés dans les specs.
|