@supersoniks/concorde 5.1.2 → 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.
Files changed (130) hide show
  1. package/.agents/skills/concorde-docs/SKILL.md +1 -1
  2. package/README.md +1 -1
  3. package/ai/README.md +29 -41
  4. package/ai/skills/concorde/SKILL.md +54 -324
  5. package/ai/skills/concorde/rules/composition.md +32 -0
  6. package/ai/skills/concorde/rules/data.md +47 -0
  7. package/ai/skills/concorde/rules/http.md +25 -0
  8. package/ai/skills/concorde/rules/lists-forms.md +35 -0
  9. package/ai/skills/concorde/rules/styling.md +46 -0
  10. package/ai/skills/concorde/rules/troubleshooting.md +45 -0
  11. package/build-infos.json +1 -1
  12. package/concorde-core.bundle.js +21 -21
  13. package/concorde-core.es.js +977 -980
  14. package/custom-elements-manifest.public.config.mjs +8 -0
  15. package/{.tmp-cem/custom-elements.json → custom-elements.json} +11722 -8868
  16. package/dist/concorde-core.bundle.js +21 -21
  17. package/dist/concorde-core.es.js +977 -980
  18. package/dist/docs-mock-api-sw.js +58 -223
  19. package/dist/docs-mock-api-sw.js.map +4 -4
  20. package/dist/img/concorde/plane_01.jpg +0 -0
  21. package/dist/img/concorde/plane_02.jpg +0 -0
  22. package/dist/img/concorde/plane_03.jpg +0 -0
  23. package/dist/img/concorde/plane_04.jpg +0 -0
  24. package/dist/img/concorde/plane_05.jpg +0 -0
  25. package/dist/img/concorde/plane_06.jpg +0 -0
  26. package/dist/img/concorde/plane_07.jpg +0 -0
  27. package/dist/img/concorde/plane_08.jpg +0 -0
  28. package/dist/img/concorde/plane_09.jpg +0 -0
  29. package/dist/img/concorde/plane_10.jpg +0 -0
  30. package/dist/img/concorde/plane_11.jpg +0 -0
  31. package/dist/img/concorde/plane_12.jpg +0 -0
  32. package/dist/img/concorde/plane_13.jpg +0 -0
  33. package/dist/img/og-concorde.jpg +0 -0
  34. package/dist/robots.txt +11 -10
  35. package/docs/.htaccess +7 -0
  36. package/docs/about.html +111 -0
  37. package/docs/about.md +22 -0
  38. package/docs/assets/{index-BgG6FFPt.js → index-6sS76xWj.js} +482 -500
  39. package/docs/assets/{index-x89XINSG.css → index-DkdPbH0F.css} +1 -1
  40. package/docs/core/components/functional/date/date.md +1 -1
  41. package/docs/core/components/functional/list/list.html +7 -5
  42. package/docs/core/components/functional/list/list.md +6 -2
  43. package/docs/core/components/ui/card/card.html +1 -1
  44. package/docs/core/components/ui/card/card.md +1 -1
  45. package/docs/core/components/ui/image/image.html +17 -17
  46. package/docs/core/components/ui/image/image.md +17 -17
  47. package/docs/core/components/ui/modal/modal.html +2 -2
  48. package/docs/core/components/ui/modal/modal.md +2 -2
  49. package/docs/custom-elements.json +16559 -0
  50. package/docs/docs/decorators/bind.html +22 -21
  51. package/docs/docs/decorators/bind.md +23 -24
  52. package/docs/docs/getting-started/ai-agents.html +50 -94
  53. package/docs/docs/getting-started/ai-agents.md +29 -55
  54. package/docs/docs/getting-started/dataFlow.html +1 -1
  55. package/docs/docs/getting-started/dataFlow.md +1 -1
  56. package/docs/docs/index.html +1 -1
  57. package/docs/hubs/decorators.html +11 -16
  58. package/docs/hubs/remote-data.html +5 -9
  59. package/docs/img/og-concorde.jpg +0 -0
  60. package/docs/index.html +91 -2
  61. package/docs/index.md +2 -2
  62. package/docs/llms-full.txt +58 -74
  63. package/docs/llms.txt +6 -4
  64. package/docs/privacy.html +122 -0
  65. package/docs/privacy.md +32 -0
  66. package/docs/sitemap.xml +6 -0
  67. package/docs/src/core/components/functional/date/date.md +1 -1
  68. package/docs/src/core/components/functional/list/list.md +6 -2
  69. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  70. package/docs/src/core/components/functional/sdui/component-catalog.json +1 -1
  71. package/docs/src/core/components/ui/card/card.md +1 -1
  72. package/docs/src/core/components/ui/image/image.md +17 -17
  73. package/docs/src/core/components/ui/modal/modal.md +2 -2
  74. package/docs/src/docs/decorators/bind.md +23 -24
  75. package/docs/src/docs/getting-started/ai-agents.md +29 -55
  76. package/docs/src/docs/getting-started/dataFlow.md +1 -1
  77. package/docs/src/docs/search/docs-search.json +100 -55
  78. package/docs/src/tsconfig.json +11 -5
  79. package/index.html +89 -0
  80. package/package.json +8 -4
  81. package/public/img/og-concorde.jpg +0 -0
  82. package/scripts/ai-init.mjs +104 -379
  83. package/scripts/ai-init.test.mjs +81 -239
  84. package/scripts/docs-markdown-vite-plugin.ts +11 -5
  85. package/scripts/docs-public-url.mjs +6 -0
  86. package/scripts/docs.htaccess +7 -0
  87. package/scripts/generate-cem.mjs +244 -0
  88. package/scripts/generate-cem.test.mjs +122 -0
  89. package/scripts/generate-crawl-docs.mjs +29 -5
  90. package/scripts/generate-sdui-catalog.mjs +11 -10
  91. package/scripts/post-build-docs.js +3 -0
  92. package/scripts/pre-publish.mjs +2 -1
  93. package/scripts/site-pages.mjs +212 -0
  94. package/scripts/site-pages.test.mjs +116 -0
  95. package/site-pages/about.md +22 -0
  96. package/site-pages/privacy.md +32 -0
  97. package/src/core/components/functional/date/date.md +1 -1
  98. package/src/core/components/functional/list/list.md +6 -2
  99. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  100. package/src/core/components/functional/sdui/component-catalog.json +1 -1
  101. package/src/core/components/ui/card/card.md +1 -1
  102. package/src/core/components/ui/image/image.md +17 -17
  103. package/src/core/components/ui/modal/modal.md +2 -2
  104. package/src/core/decorators/subscriber/bind.ts +9 -14
  105. package/src/docs/components/docs-demo-sources.ts +3 -3
  106. package/src/docs/decorators/bind.md +23 -24
  107. package/src/docs/docs-location.spec.ts +10 -0
  108. package/src/docs/docs-location.ts +10 -0
  109. package/src/docs/example/decorators-demo-bind-demos.ts +11 -28
  110. package/src/docs/example/docs-toggle-demos.ts +1 -1
  111. package/src/docs/getting-started/ai-agents.md +29 -55
  112. package/src/docs/getting-started/dataFlow.md +1 -1
  113. package/src/docs/home/home.ts +3 -1
  114. package/src/docs/navigation/navigation.ts +1 -1
  115. package/src/docs/search/docs-search.json +100 -55
  116. package/src/docs/search/markdown-renderer.ts +6 -1
  117. package/src/docs/tailwind/css/docs/content.css +4 -5
  118. package/src/tsconfig.json +11 -5
  119. package/src/tsconfig.tsbuildinfo +1 -1
  120. package/ai/AGENTS.md +0 -56
  121. package/ai/cursor/rules/concorde-menu.mdc +0 -15
  122. package/ai/cursor/rules/concorde-scope.mdc +0 -14
  123. package/ai/cursor/rules/concorde-theme.mdc +0 -13
  124. package/ai/cursor/rules/concorde.mdc +0 -66
  125. package/ai/jetbrains/rules/concorde.md +0 -53
  126. package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
  127. package/ai/skills/concorde-imports/SKILL.md +0 -78
  128. package/ai/skills/concorde-menu/SKILL.md +0 -74
  129. package/ai/skills/concorde-scope/SKILL.md +0 -70
  130. package/ai/skills/concorde-theme/SKILL.md +0 -57
@@ -780,7 +780,7 @@
780
780
  }
781
781
  },
782
782
  {
783
- "search": "sonic-list renders one row per entry of its props array, either set directly or loaded with fetch. From Lit, pass a row renderer on the items property; in plain HTML, declare <template> children. Each row gets its own data provider at <dataProvider>/list-item/<index>.\n",
783
+ "search": "sonic-list renders one row per entry of its props array, either set directly or loaded with fetch. In TypeScript, prefer the .items row renderer (with .separator · .noItems · .skeleton); <template> children are for plain HTML hosts without Lit. Each row gets its own data provider at <dataProvider>/list-item/<index>.\n",
784
784
  "files": {
785
785
  "core/components/functional/list/list.md": {
786
786
  "title": "List",
@@ -810,7 +810,7 @@
810
810
  }
811
811
  },
812
812
  {
813
- "search": "Fetch attributes (lazyload · refetchEveryMs · headers · authentication) are shared with Fetch.\n",
813
+ "search": "This example uses HTML templates; from Lit, use the row renderer instead. Fetch attributes (lazyload · refetchEveryMs · headers · authentication) are shared with Fetch.\n",
814
814
  "files": {
815
815
  "core/components/functional/list/list.md": {
816
816
  "title": "List",
@@ -914,6 +914,36 @@
914
914
  }
915
915
  }
916
916
  },
917
+ {
918
+ "search": "Properties (TypeScript / Lit, preferred):\n",
919
+ "files": {
920
+ "core/components/functional/list/list.md": {
921
+ "title": "List",
922
+ "hashes": {
923
+ "api-reference": {
924
+ "count": 1,
925
+ "title": "API reference",
926
+ "type": "paragraph"
927
+ }
928
+ }
929
+ }
930
+ }
931
+ },
932
+ {
933
+ "search": "Templates (plain HTML hosts):\n",
934
+ "files": {
935
+ "core/components/functional/list/list.md": {
936
+ "title": "List",
937
+ "hashes": {
938
+ "api-reference": {
939
+ "count": 1,
940
+ "title": "API reference",
941
+ "type": "paragraph"
942
+ }
943
+ }
944
+ }
945
+ }
946
+ },
917
947
  {
918
948
  "search": "Mix",
919
949
  "files": {
@@ -1290,7 +1320,7 @@
1290
1320
  }
1291
1321
  },
1292
1322
  {
1293
- "search": "Aide-mémoire pour les dépôts externes (adaptateurs, shells).Pas une page de la doc site — à lire dans le package npm(node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md).La doc utilisateur / crawl reste sdui.md (auto-suffisante).\n",
1323
+ "search": "Aide-mémoire pour les dépôts externes (adaptateurs, shells).Pas une page de la doc site — à lire dans le package npm(node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md).La doc utilisateur reste sdui.md (auto-suffisante).\n",
1294
1324
  "files": {
1295
1325
  "core/components/functional/sdui/sdui-extension-points.md": {
1296
1326
  "title": "SDUI — points d’extension publics",
@@ -6020,7 +6050,7 @@
6020
6050
  }
6021
6051
  },
6022
6052
  {
6023
- "search": "Keeps a class property in sync with a path of the DataProvider store, in both directions when needed. Pass a dot-notation string or a DataProviderKey; add { reflect: true } to push local writes back to the store. For read-only sync prefer @subscribe, and see Data flow for the overall model.\n",
6053
+ "search": "@bind(key) keeps a class property and one path of the DataProvider store in sync. With { reflect: true } the sync goes both ways: the property follows the store, and each assignment is written back to it. For one direction only, use the complementary decorators: @subscribe to read, @publish to write. See Data flow for the overall model.\n",
6024
6054
  "files": {
6025
6055
  "docs/decorators/bind.md": {
6026
6056
  "title": "@bind",
@@ -6035,7 +6065,7 @@
6035
6065
  }
6036
6066
  },
6037
6067
  {
6038
- "search": "@bind("flight.gate")\n@state()\ngate = "";\n \n\n",
6068
+ "search": "type Flight = { flight: string; gate: string; boarded: number };\nconst flightKey = new DataProviderKey<Flight>("flight");\n",
6039
6069
  "files": {
6040
6070
  "docs/decorators/bind.md": {
6041
6071
  "title": "@bind",
@@ -6050,29 +6080,14 @@
6050
6080
  }
6051
6081
  },
6052
6082
  {
6053
- "search": "The first path segment is the data provider id, the rest is dot notation (array items use a numeric index: passengers.0). The property updates each time the store value changes. Add @state() so Lit re-renders.\n",
6054
- "files": {
6055
- "docs/decorators/bind.md": {
6056
- "title": "@bind",
6057
- "hashes": {
6058
- "basic-usage": {
6059
- "count": 1,
6060
- "title": "Basic usage",
6061
- "type": "paragraph"
6062
- }
6063
- }
6064
- }
6065
- }
6066
- },
6067
- {
6068
- "search": "With a DataProviderKey<T>, TypeScript checks that the property type matches T at that path.\n",
6083
+ "search": "@bind(flightKey.boarded, { reflect: true })\n@state()\nboarded = 0;\n \n\n",
6069
6084
  "files": {
6070
6085
  "docs/decorators/bind.md": {
6071
6086
  "title": "@bind",
6072
6087
  "hashes": {
6073
- "typed-key": {
6088
+ "import": {
6074
6089
  "count": 1,
6075
- "title": "Typed key",
6090
+ "title": "Import",
6076
6091
  "type": "paragraph"
6077
6092
  }
6078
6093
  }
@@ -6080,14 +6095,14 @@
6080
6095
  }
6081
6096
  },
6082
6097
  {
6083
- "search": "type Flight = { flight: string; gate: string; boarded: number };\nconst flightKey = new DataProviderKey<Flight>("flight");\n",
6098
+ "search": "The key is a DataProviderKey: TypeScript checks that the property type matches T at that path. The property updates each time the store value changes. Add @state() so Lit re-renders.\n",
6084
6099
  "files": {
6085
6100
  "docs/decorators/bind.md": {
6086
6101
  "title": "@bind",
6087
6102
  "hashes": {
6088
- "typed-key": {
6103
+ "basic-usage": {
6089
6104
  "count": 1,
6090
- "title": "Typed key",
6105
+ "title": "Basic usage",
6091
6106
  "type": "paragraph"
6092
6107
  }
6093
6108
  }
@@ -6095,14 +6110,14 @@
6095
6110
  }
6096
6111
  },
6097
6112
  {
6098
- "search": "@bind(flightKey.boarded, { reflect: true })\n@state()\nboarded = 0;\n \n\n",
6113
+ "search": "With reflect: true, each assignment to the property calls set() at the key path, so every other subscriber sees the new value. An internal guard prevents update loops. Without reflect (the default), assigning the property does not touch the store, and @bind behaves like @subscribe.\n",
6099
6114
  "files": {
6100
6115
  "docs/decorators/bind.md": {
6101
6116
  "title": "@bind",
6102
6117
  "hashes": {
6103
- "typed-key": {
6118
+ "reflect": {
6104
6119
  "count": 1,
6105
- "title": "Typed key",
6120
+ "title": "Reflect",
6106
6121
  "type": "paragraph"
6107
6122
  }
6108
6123
  }
@@ -6110,14 +6125,14 @@
6110
6125
  }
6111
6126
  },
6112
6127
  {
6113
- "search": "By default (reflect: false) the binding is one-way: assigning the property does not touch the store. With reflect: true, each assignment calls set() on the publisher, so every other subscriber sees the new value. An internal guard prevents update loops.\n",
6128
+ "search": "Placeholders such as ${index} are resolved from properties of the same component, and @bind re-subscribes when they change. Declare them in the key's second generic and write them in a plain string, not a backtick template literal. While a placeholder is null or undefined the binding is inactive; { skipEmptyPlaceholder: true } also waits on "". Full rules: Dynamic paths.\n",
6114
6129
  "files": {
6115
6130
  "docs/decorators/bind.md": {
6116
6131
  "title": "@bind",
6117
6132
  "hashes": {
6118
- "reflect": {
6133
+ "dynamic-path": {
6119
6134
  "count": 1,
6120
- "title": "Reflect",
6135
+ "title": "Dynamic path",
6121
6136
  "type": "paragraph"
6122
6137
  }
6123
6138
  }
@@ -6125,7 +6140,7 @@
6125
6140
  }
6126
6141
  },
6127
6142
  {
6128
- "search": "Placeholders such as ${index} are resolved from properties of the same component, and @bind re-subscribes when they change. Write them in a plain string, not a backtick template literal. While a placeholder is null or undefined the binding is inactive; { skipEmptyPlaceholder: true } also waits on "". Full rules: Dynamic paths.\n",
6143
+ "search": "@bind(personKey)\n@state()\nperson: Person | null = null;\n \n\n",
6129
6144
  "files": {
6130
6145
  "docs/decorators/bind.md": {
6131
6146
  "title": "@bind",
@@ -8135,12 +8150,12 @@
8135
8150
  }
8136
8151
  },
8137
8152
  {
8138
- "search": "AI agents (skills & AGENTS.md)",
8153
+ "search": "AI agents (skill)",
8139
8154
  "files": {
8140
8155
  "docs/getting-started/ai-agents.md": {
8141
- "title": "AI agents (skills & AGENTS.md)",
8156
+ "title": "AI agents (skill)",
8142
8157
  "hashes": {
8143
- "ai-agents-skills--agentsmd": {
8158
+ "ai-agents-skill": {
8144
8159
  "count": 1,
8145
8160
  "title": "",
8146
8161
  "type": "page"
@@ -8150,12 +8165,12 @@
8150
8165
  }
8151
8166
  },
8152
8167
  {
8153
- "search": "Concorde ships skills, rules, and a root AGENTS.md so Cursor, JetBrains AI Assistant, and other coding agents follow framework patterns (DataProvider, decorators, short imports, scope, theme, migrations).\n",
8168
+ "search": "Concorde ships one Agent Skill, concorde, so coding agents follow the framework patterns. Cursor, Claude Code, JetBrains Junie and other agents load it on their own when they work on Concorde code; there is nothing to add to your AGENTS.md.\n",
8154
8169
  "files": {
8155
8170
  "docs/getting-started/ai-agents.md": {
8156
- "title": "AI agents (skills & AGENTS.md)",
8171
+ "title": "AI agents (skill)",
8157
8172
  "hashes": {
8158
- "ai-agents-skills--agentsmd": {
8173
+ "ai-agents-skill": {
8159
8174
  "count": 1,
8160
8175
  "title": "",
8161
8176
  "type": "paragraph"
@@ -8165,12 +8180,12 @@
8165
8180
  }
8166
8181
  },
8167
8182
  {
8168
- "search": "On a starter project, run yarn ai:sync after install. On an existing project, install Concorde first, then use ai-init below.\n",
8183
+ "search": "On a starter project, run yarn ai:sync after install. On an existing project, install Concorde first, then run ai-init.\n",
8169
8184
  "files": {
8170
8185
  "docs/getting-started/ai-agents.md": {
8171
- "title": "AI agents (skills & AGENTS.md)",
8186
+ "title": "AI agents (skill)",
8172
8187
  "hashes": {
8173
- "ai-agents-skills--agentsmd": {
8188
+ "ai-agents-skill": {
8174
8189
  "count": 1,
8175
8190
  "title": "",
8176
8191
  "type": "paragraph"
@@ -8180,14 +8195,44 @@
8180
8195
  }
8181
8196
  },
8182
8197
  {
8183
- "search": "node node_modules/@supersoniks/concorde/scripts/ai-init.mjs\n \n\n",
8198
+ "search": "Re-run the same command after each Concorde upgrade to refresh the skill.\n",
8199
+ "files": {
8200
+ "docs/getting-started/ai-agents.md": {
8201
+ "title": "AI agents (skill)",
8202
+ "hashes": {
8203
+ "commands": {
8204
+ "count": 1,
8205
+ "title": "Commands",
8206
+ "type": "paragraph"
8207
+ }
8208
+ }
8209
+ }
8210
+ }
8211
+ },
8212
+ {
8213
+ "search": "SKILL.md is the entry point: where to find the truth (the project, these docs, custom-elements.json), the critical rules and the imports. Details live in rules/ files that the agent reads only for the topic at hand.\n",
8214
+ "files": {
8215
+ "docs/getting-started/ai-agents.md": {
8216
+ "title": "AI agents (skill)",
8217
+ "hashes": {
8218
+ "the-skill": {
8219
+ "count": 1,
8220
+ "title": "The skill",
8221
+ "type": "paragraph"
8222
+ }
8223
+ }
8224
+ }
8225
+ }
8226
+ },
8227
+ {
8228
+ "search": "Where symlinks are not allowed (some Windows setups), the skill is copied instead. Your own skills in these folders are never touched. Commit .agents/ and the links if your team shares agent settings.\n",
8184
8229
  "files": {
8185
8230
  "docs/getting-started/ai-agents.md": {
8186
- "title": "AI agents (skills & AGENTS.md)",
8231
+ "title": "AI agents (skill)",
8187
8232
  "hashes": {
8188
- "manual--existing-project": {
8233
+ "what-gets-installed": {
8189
8234
  "count": 1,
8190
- "title": "Manual / existing project",
8235
+ "title": "What gets installed",
8191
8236
  "type": "paragraph"
8192
8237
  }
8193
8238
  }
@@ -8195,14 +8240,14 @@
8195
8240
  }
8196
8241
  },
8197
8242
  {
8198
- "search": "Everything after <!-- concorde-ai --> is replaced on each ai-init run (idempotent). Do not paste a full copy of the Concorde guide above the marker — put project-specific notes in AGENTS.concorde.md (overlay). If the preamble duplicates package AGENTS.md, ai-init slims or drops it and prints a warning. Legacy filenames AGENTS.overlay.md / AGENTS.starter.md are still accepted with a deprecation warning.\n",
8243
+ "search": "AGENTS.md stays yours: ai-init never reads or writes it.\n",
8199
8244
  "files": {
8200
8245
  "docs/getting-started/ai-agents.md": {
8201
- "title": "AI agents (skills & AGENTS.md)",
8246
+ "title": "AI agents (skill)",
8202
8247
  "hashes": {
8203
- "agentsmd-policy-non-invasive": {
8248
+ "what-gets-installed": {
8204
8249
  "count": 1,
8205
- "title": "`AGENTS.md` policy (non-invasive)",
8250
+ "title": "What gets installed",
8206
8251
  "type": "paragraph"
8207
8252
  }
8208
8253
  }
@@ -8210,14 +8255,14 @@
8210
8255
  }
8211
8256
  },
8212
8257
  {
8213
- "search": "Source files in the npm package: node_modules/@supersoniks/concorde/ai/ (see also ai/README.md in the Concorde repository).\n",
8258
+ "search": "Source files in the npm package: node_modules/@supersoniks/concorde/ai/skills/concorde/.\n",
8214
8259
  "files": {
8215
8260
  "docs/getting-started/ai-agents.md": {
8216
- "title": "AI agents (skills & AGENTS.md)",
8261
+ "title": "AI agents (skill)",
8217
8262
  "hashes": {
8218
- "workflow": {
8263
+ "flags": {
8219
8264
  "count": 1,
8220
- "title": "Workflow",
8265
+ "title": "Flags",
8221
8266
  "type": "paragraph"
8222
8267
  }
8223
8268
  }
@@ -8570,7 +8615,7 @@
8570
8615
  }
8571
8616
  },
8572
8617
  {
8573
- "search": "Skill: concorde-get-set-dp in the package ai/ folder.\n",
8618
+ "search": "Agent skill: concorde (rules/data.md), see AI agents.\n",
8574
8619
  "files": {
8575
8620
  "docs/getting-started/dataFlow.md": {
8576
8621
  "title": "Data flow",
@@ -1074,6 +1074,9 @@
1074
1074
  "./utils/HTML": [
1075
1075
  "/sites/concorde/src/core/utils/HTML.ts"
1076
1076
  ],
1077
+ "./utils/LocationHandler.spec": [
1078
+ "/sites/concorde/src/core/utils/LocationHandler.spec.ts"
1079
+ ],
1077
1080
  "./utils/LocationHandler": [
1078
1081
  "/sites/concorde/src/core/utils/LocationHandler.ts"
1079
1082
  ],
@@ -1185,6 +1188,9 @@
1185
1188
  "./undefined/docs-source-raw": [
1186
1189
  "/sites/concorde/src/docs/components/docs-source-raw.ts"
1187
1190
  ],
1191
+ "./docs-location.spec": [
1192
+ "/sites/concorde/src/docs/docs-location.spec.ts"
1193
+ ],
1188
1194
  "./docs-location": [
1189
1195
  "/sites/concorde/src/docs/docs-location.ts"
1190
1196
  ],
@@ -1215,11 +1221,8 @@
1215
1221
  "./example/docs-boarding-pass-demo": [
1216
1222
  "/sites/concorde/src/docs/example/docs-boarding-pass-demo.ts"
1217
1223
  ],
1218
- "./example/docs-input-autocomplete-demos": [
1219
- "/sites/concorde/src/docs/example/docs-input-autocomplete-demos.ts"
1220
- ],
1221
- "./example/docs-joke-demos": [
1222
- "/sites/concorde/src/docs/example/docs-joke-demos.ts"
1224
+ "./example/docs-flight-demos": [
1225
+ "/sites/concorde/src/docs/example/docs-flight-demos.ts"
1223
1226
  ],
1224
1227
  "./example/docs-jsonata-demos": [
1225
1228
  "/sites/concorde/src/docs/example/docs-jsonata-demos.ts"
@@ -1275,6 +1278,9 @@
1275
1278
  "./mock-api/fixtures": [
1276
1279
  "/sites/concorde/src/docs/mock-api/fixtures.ts"
1277
1280
  ],
1281
+ "./mock-api/flights": [
1282
+ "/sites/concorde/src/docs/mock-api/flights.ts"
1283
+ ],
1278
1284
  "./mock-api/register": [
1279
1285
  "/sites/concorde/src/docs/mock-api/register.ts"
1280
1286
  ],
package/index.html CHANGED
@@ -16,6 +16,94 @@
16
16
  <link rel="canonical" href="https://concorde.supersoniks.org/" />
17
17
  <link rel="alternate" type="text/markdown" href="/index.md" title="Markdown" />
18
18
  <link rel="alternate" type="text/plain" href="/llms.txt" title="llms.txt" />
19
+ <meta property="og:type" content="website" />
20
+ <meta property="og:site_name" content="Concorde by Supersoniks" />
21
+ <meta property="og:title" content="Concorde by Supersoniks — Web components for every stack" />
22
+ <meta property="og:description" content="Open-source Lit web components framework: UI, data binding, forms and themes for React, Vue, PHP or plain HTML." />
23
+ <meta property="og:url" content="https://concorde.supersoniks.org/" />
24
+ <meta property="og:image" content="https://concorde.supersoniks.org/img/og-concorde.jpg" />
25
+ <meta property="og:image:width" content="1200" />
26
+ <meta property="og:image:height" content="630" />
27
+ <meta property="og:image:alt" content="Five Concorde aircraft parked nose to nose, black and white photo" />
28
+ <meta name="twitter:card" content="summary_large_image" />
29
+ <script type="application/ld+json">
30
+ {
31
+ "@context": "https://schema.org",
32
+ "@graph": [
33
+ {
34
+ "@type": "WebSite",
35
+ "@id": "https://concorde.supersoniks.org/#website",
36
+ "name": "Concorde",
37
+ "alternateName": "Concorde by Supersoniks",
38
+ "url": "https://concorde.supersoniks.org/",
39
+ "inLanguage": "en",
40
+ "publisher": {
41
+ "@id": "https://supersoniks.com/#organization"
42
+ }
43
+ },
44
+ {
45
+ "@type": "SoftwareApplication",
46
+ "@id": "https://concorde.supersoniks.org/#software",
47
+ "name": "Concorde",
48
+ "alternateName": "@supersoniks/concorde",
49
+ "description": "Concorde is an open-source web components framework built on Lit: UI components, data binding, forms, routing helpers and theming that work in React, Vue, PHP or plain HTML.",
50
+ "url": "https://concorde.supersoniks.org/",
51
+ "applicationCategory": "DeveloperApplication",
52
+ "applicationSubCategory": "Web components framework",
53
+ "operatingSystem": "Any (web browser)",
54
+ "programmingLanguage": "TypeScript",
55
+ "license": "https://opensource.org/licenses/MIT",
56
+ "downloadUrl": "https://www.npmjs.com/package/@supersoniks/concorde",
57
+ "softwareHelp": "https://concorde.supersoniks.org/docs/getting-started/start",
58
+ "image": "https://concorde.supersoniks.org/img/og-concorde.jpg",
59
+ "offers": {
60
+ "@type": "Offer",
61
+ "price": "0",
62
+ "priceCurrency": "EUR"
63
+ },
64
+ "author": {
65
+ "@id": "https://supersoniks.com/#organization"
66
+ },
67
+ "publisher": {
68
+ "@id": "https://supersoniks.com/#organization"
69
+ },
70
+ "sameAs": [
71
+ "https://www.npmjs.com/package/@supersoniks/concorde"
72
+ ]
73
+ },
74
+ {
75
+ "@type": "Organization",
76
+ "@id": "https://supersoniks.com/#organization",
77
+ "name": "Supersoniks",
78
+ "legalName": "SUPERSONIKS",
79
+ "url": "https://supersoniks.com/",
80
+ "telephone": "+33 2 47 68 93 25",
81
+ "address": {
82
+ "@type": "PostalAddress",
83
+ "streetAddress": "22 rue du Docteur Bretonneau",
84
+ "postalCode": "37000",
85
+ "addressLocality": "Tours",
86
+ "addressCountry": "FR"
87
+ },
88
+ "contactPoint": {
89
+ "@type": "ContactPoint",
90
+ "contactType": "customer service",
91
+ "telephone": "+33 2 47 68 93 25",
92
+ "url": "https://supersoniks.com/un-projet",
93
+ "availableLanguage": [
94
+ "fr",
95
+ "en"
96
+ ]
97
+ },
98
+ "sameAs": [
99
+ "https://www.linkedin.com/company/supersoniks/",
100
+ "https://www.facebook.com/supersoniks",
101
+ "https://www.instagram.com/agencesupersoniks/"
102
+ ]
103
+ }
104
+ ]
105
+ }
106
+ </script>
19
107
  <link rel="preconnect" href="https://fonts.googleapis.com" />
20
108
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
21
109
  <link
@@ -78,6 +166,7 @@
78
166
  wire components to a shared DataProvider without framework lock-in.
79
167
  Concorde is MIT-licensed and maintained by Supersoniks for production
80
168
  stacks that need one component set across many hosts.
169
+ <a href="/about">About</a> · <a href="/privacy">Privacy</a>
81
170
  </p>
82
171
  </section>
83
172
 
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@supersoniks/concorde",
3
- "version": "5.1.2",
3
+ "version": "5.1.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "",
7
+ "customElements": "custom-elements.json",
7
8
  "scripts": {
8
9
  "dev": "node scripts/create-search.js && LIB_NAME=docs vite --host 0.0.0.0 --port 3000",
9
10
  "prebuild": "node scripts/pre-build.mjs",
@@ -11,8 +12,9 @@
11
12
  "build": "tsc --build src/tsconfig.json && vite build",
12
13
  "build-docs": "LIB_NAME=docs vite build",
13
14
  "postbuild-docs": "node scripts/post-build-docs.js",
14
- "prepublishOnly": "node scripts/pre-publish.mjs",
15
+ "prepublishOnly": "node scripts/generate-cem.mjs && node scripts/pre-publish.mjs",
15
16
  "generate:sdui-catalog": "node scripts/generate-sdui-catalog.mjs",
17
+ "generate:cem": "node scripts/generate-cem.mjs",
16
18
  "test": "vitest --reporter verbose --watch",
17
19
  "test:ci": "vitest run --reporter verbose",
18
20
  "ai-init": "node scripts/ai-init.mjs"
@@ -379,6 +381,7 @@
379
381
  "./utils/Electron": "./src/core/utils/Electron.ts",
380
382
  "./utils/Format": "./src/core/utils/Format.ts",
381
383
  "./utils/HTML": "./src/core/utils/HTML.ts",
384
+ "./utils/LocationHandler.spec": "./src/core/utils/LocationHandler.spec.ts",
382
385
  "./utils/LocationHandler": "./src/core/utils/LocationHandler.ts",
383
386
  "./utils/Objects": "./src/core/utils/Objects.ts",
384
387
  "./utils/PublisherProxy": "./src/core/utils/PublisherProxy.ts",
@@ -416,6 +419,7 @@
416
419
  "./undefined/docs-source-link": "./src/docs/components/docs-source-link.ts",
417
420
  "./docs-source-raw": "./src/docs/components/docs-source-raw.ts",
418
421
  "./undefined/docs-source-raw": "./src/docs/components/docs-source-raw.ts",
422
+ "./docs-location.spec": "./src/docs/docs-location.spec.ts",
419
423
  "./docs-location": "./src/docs/docs-location.ts",
420
424
  "./docs": "./src/docs/docs.ts",
421
425
  "./example/decorators-demo-bind-demos": "./src/docs/example/decorators-demo-bind-demos.ts",
@@ -426,8 +430,7 @@
426
430
  "./example/decorators-demo": "./src/docs/example/decorators-demo.ts",
427
431
  "./example/docs-api-config-demos": "./src/docs/example/docs-api-config-demos.ts",
428
432
  "./example/docs-boarding-pass-demo": "./src/docs/example/docs-boarding-pass-demo.ts",
429
- "./example/docs-input-autocomplete-demos": "./src/docs/example/docs-input-autocomplete-demos.ts",
430
- "./example/docs-joke-demos": "./src/docs/example/docs-joke-demos.ts",
433
+ "./example/docs-flight-demos": "./src/docs/example/docs-flight-demos.ts",
431
434
  "./example/docs-jsonata-demos": "./src/docs/example/docs-jsonata-demos.ts",
432
435
  "./example/docs-list-demos": "./src/docs/example/docs-list-demos.ts",
433
436
  "./example/docs-provider-keys": "./src/docs/example/docs-provider-keys.ts",
@@ -446,6 +449,7 @@
446
449
  "./mock-api/api-config-mock": "./src/docs/mock-api/api-config-mock.ts",
447
450
  "./mock-api/fixtures-jsonata": "./src/docs/mock-api/fixtures-jsonata.ts",
448
451
  "./mock-api/fixtures": "./src/docs/mock-api/fixtures.ts",
452
+ "./mock-api/flights": "./src/docs/mock-api/flights.ts",
449
453
  "./mock-api/register": "./src/docs/mock-api/register.ts",
450
454
  "./mock-api/router": "./src/docs/mock-api/router.ts",
451
455
  "./mock-api/service-worker": "./src/docs/mock-api/service-worker.ts",
Binary file