@supersoniks/concorde 5.0.0 → 5.0.1

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 (287) hide show
  1. package/.gitlab-ci.yml +0 -13
  2. package/build-infos.json +1 -1
  3. package/concorde-core.bundle.js +257 -273
  4. package/concorde-core.es.js +4127 -4039
  5. package/dist/concorde-core.bundle.js +257 -273
  6. package/dist/concorde-core.es.js +4127 -4039
  7. package/gitlab/job_tests.sh +25 -12
  8. package/index.html +1 -1
  9. package/package.json +3 -1
  10. package/scripts/post-build-docs.js +0 -0
  11. package/scripts/post-build.mjs +0 -0
  12. package/src/core/components/functional/fetch/fetch.md +0 -0
  13. package/src/core/components/functional/if/if.md +0 -0
  14. package/src/core/components/functional/list/list.demo.ts +0 -0
  15. package/src/core/components/functional/list/list.md +0 -0
  16. package/src/core/components/functional/list/list.ts +0 -0
  17. package/src/core/components/functional/router/router.md +0 -0
  18. package/src/core/components/functional/router/router.ts +0 -0
  19. package/src/core/components/functional/sdui/sdui.md +0 -0
  20. package/src/core/components/functional/states/states.md +0 -0
  21. package/src/core/components/functional/submit/submit.md +0 -0
  22. package/src/core/components/ui/_css/size.ts +0 -0
  23. package/src/core/components/ui/alert/alert.ts +0 -0
  24. package/src/core/components/ui/button/button.md +0 -0
  25. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  26. package/src/core/components/ui/captcha/captcha.md +0 -0
  27. package/src/core/components/ui/card/card.md +0 -0
  28. package/src/core/components/ui/divider/divider.ts +0 -0
  29. package/src/core/components/ui/form/input/input.md +0 -0
  30. package/src/core/components/ui/form/radio/radio.md +0 -0
  31. package/src/core/components/ui/form/select/select.md +0 -0
  32. package/src/core/components/ui/form/switch/switch.md +0 -0
  33. package/src/core/components/ui/loader/loader.md +0 -0
  34. package/src/core/components/ui/menu/menu.md +0 -0
  35. package/src/core/components/ui/modal/modal-close.ts +0 -0
  36. package/src/core/components/ui/modal/modal.md +0 -0
  37. package/src/core/components/ui/pop/pop.md +103 -1
  38. package/src/core/components/ui/pop/pop.ts +70 -115
  39. package/src/core/components/ui/table/table-caption.ts +0 -0
  40. package/src/core/components/ui/table/table.md +0 -0
  41. package/src/core/components/ui/theme/theme.ts +1 -1
  42. package/src/core/components/ui/tooltip/tooltip.ts +178 -154
  43. package/src/core/utils/positioning.spec.ts +180 -0
  44. package/src/core/utils/positioning.ts +164 -0
  45. package/src/core/utils/route.ts +0 -0
  46. package/src/directives.ts +2 -3
  47. package/src/docs/_core-concept/subscriber.md +0 -0
  48. package/src/docs/_getting-started/concorde-outside.md +0 -0
  49. package/src/docs/_getting-started/my-first-subscriber.md +0 -0
  50. package/src/docs/_getting-started/pubsub.md +0 -0
  51. package/src/docs/_getting-started/start.md +0 -0
  52. package/src/docs/example/users.ts +0 -0
  53. package/src/docs/search/docs-search.json +90 -0
  54. package/src/docs/search/page.ts +0 -0
  55. package/src/docs/tailwind/css/tailwind.css +7 -6
  56. package/src/tsconfig.json +387 -381
  57. package/src/tsconfig.tsbuildinfo +1 -1
  58. package/vitest.setup.ts +49 -13
  59. package/.github/workflows/ci.yml +0 -21
  60. package/.github-export-ignore +0 -30
  61. package/CONTRIBUTING.md +0 -59
  62. package/DEV.md +0 -54
  63. package/LICENSE +0 -21
  64. package/OPEN_SOURCE_CHECKPOINT.md +0 -133
  65. package/concorde-3d.bundle.js +0 -3960
  66. package/concorde-3d.es.js +0 -33433
  67. package/concorde-hugging-face-infer.bundle.js +0 -32
  68. package/concorde-hugging-face-infer.es.js +0 -2952
  69. package/concorde-shader.bundle.js +0 -116
  70. package/concorde-shader.es.js +0 -8353
  71. package/concorde-webgpu.bundle.js +0 -307
  72. package/concorde-webgpu.es.js +0 -8627
  73. package/docs/altcha-widget.js +0 -2662
  74. package/docs/assets/index-BZiZXMU-.css +0 -1
  75. package/docs/assets/index-FmK4JaIM.js +0 -11992
  76. package/docs/crawl/core/components/functional/date/date.html +0 -190
  77. package/docs/crawl/core/components/functional/fetch/fetch.html +0 -109
  78. package/docs/crawl/core/components/functional/if/if.html +0 -27
  79. package/docs/crawl/core/components/functional/jsonata/jsonata.html +0 -79
  80. package/docs/crawl/core/components/functional/list/list.html +0 -70
  81. package/docs/crawl/core/components/functional/mix/mix.html +0 -45
  82. package/docs/crawl/core/components/functional/queue/queue.html +0 -96
  83. package/docs/crawl/core/components/functional/router/router.html +0 -106
  84. package/docs/crawl/core/components/functional/sdui/sdui.html +0 -269
  85. package/docs/crawl/core/components/functional/states/states.html +0 -66
  86. package/docs/crawl/core/components/functional/submit/submit.html +0 -160
  87. package/docs/crawl/core/components/functional/subscriber/subscriber.html +0 -67
  88. package/docs/crawl/core/components/functional/value/value.html +0 -51
  89. package/docs/crawl/core/components/ui/alert/alert.html +0 -110
  90. package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +0 -23
  91. package/docs/crawl/core/components/ui/badge/badge.html +0 -119
  92. package/docs/crawl/core/components/ui/button/button.html +0 -149
  93. package/docs/crawl/core/components/ui/captcha/captcha.html +0 -30
  94. package/docs/crawl/core/components/ui/card/card.html +0 -99
  95. package/docs/crawl/core/components/ui/divider/divider.html +0 -58
  96. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +0 -73
  97. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +0 -135
  98. package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +0 -79
  99. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +0 -62
  100. package/docs/crawl/core/components/ui/form/input/input.html +0 -109
  101. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +0 -106
  102. package/docs/crawl/core/components/ui/form/radio/radio.html +0 -56
  103. package/docs/crawl/core/components/ui/form/select/select.html +0 -73
  104. package/docs/crawl/core/components/ui/form/switch/switch.html +0 -56
  105. package/docs/crawl/core/components/ui/form/textarea/textarea.html +0 -59
  106. package/docs/crawl/core/components/ui/group/group.html +0 -82
  107. package/docs/crawl/core/components/ui/icon/icon.html +0 -133
  108. package/docs/crawl/core/components/ui/image/image.html +0 -110
  109. package/docs/crawl/core/components/ui/link/link.html +0 -42
  110. package/docs/crawl/core/components/ui/loader/loader.html +0 -50
  111. package/docs/crawl/core/components/ui/menu/menu.html +0 -322
  112. package/docs/crawl/core/components/ui/modal/modal.html +0 -117
  113. package/docs/crawl/core/components/ui/pop/pop.html +0 -102
  114. package/docs/crawl/core/components/ui/progress/progress.html +0 -58
  115. package/docs/crawl/core/components/ui/table/table.html +0 -413
  116. package/docs/crawl/core/components/ui/toast/toast.html +0 -122
  117. package/docs/crawl/core/components/ui/tooltip/tooltip.html +0 -79
  118. package/docs/crawl/docs/_core-concept/dataFlow.html +0 -177
  119. package/docs/crawl/docs/_core-concept/overview.html +0 -66
  120. package/docs/crawl/docs/_core-concept/subscriber.html +0 -75
  121. package/docs/crawl/docs/_decorators/ancestor-attribute.html +0 -116
  122. package/docs/crawl/docs/_decorators/auto-subscribe.html +0 -202
  123. package/docs/crawl/docs/_decorators/bind.html +0 -141
  124. package/docs/crawl/docs/_decorators/get.html +0 -149
  125. package/docs/crawl/docs/_decorators/handle.html +0 -165
  126. package/docs/crawl/docs/_decorators/on-assign.html +0 -355
  127. package/docs/crawl/docs/_decorators/patch.html +0 -78
  128. package/docs/crawl/docs/_decorators/post.html +0 -139
  129. package/docs/crawl/docs/_decorators/publish.html +0 -61
  130. package/docs/crawl/docs/_decorators/put.html +0 -78
  131. package/docs/crawl/docs/_decorators/subscribe.html +0 -109
  132. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +0 -137
  133. package/docs/crawl/docs/_directives/sub.html +0 -93
  134. package/docs/crawl/docs/_getting-started/ai-agents.html +0 -173
  135. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +0 -100
  136. package/docs/crawl/docs/_getting-started/concorde-outside.html +0 -58
  137. package/docs/crawl/docs/_getting-started/create-a-component.html +0 -111
  138. package/docs/crawl/docs/_getting-started/my-first-component.html +0 -189
  139. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +0 -110
  140. package/docs/crawl/docs/_getting-started/pubsub.html +0 -62
  141. package/docs/crawl/docs/_getting-started/start.html +0 -76
  142. package/docs/crawl/docs/_getting-started/theming.html +0 -85
  143. package/docs/crawl/docs/_misc/api-configuration.html +0 -149
  144. package/docs/crawl/docs/_misc/dataProviderKey.html +0 -135
  145. package/docs/crawl/docs/_misc/docs-mock-api.html +0 -158
  146. package/docs/crawl/docs/_misc/dynamic-path.html +0 -180
  147. package/docs/crawl/docs/_misc/endpoint.html +0 -50
  148. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +0 -138
  149. package/docs/crawl/docs/_misc/html-integration.html +0 -48
  150. package/docs/crawl/hubs/decorators.html +0 -547
  151. package/docs/crawl/hubs/form-components.html +0 -357
  152. package/docs/crawl/hubs/remote-data.html +0 -452
  153. package/docs/crawl/index.html +0 -101
  154. package/docs/css/docs.css +0 -0
  155. package/docs/docs-mock-api-sw.js +0 -720
  156. package/docs/docs-mock-api-sw.js.map +0 -7
  157. package/docs/fonts/ClashGrotesk-Bold.eot +0 -0
  158. package/docs/fonts/ClashGrotesk-Bold.ttf +0 -0
  159. package/docs/fonts/ClashGrotesk-Bold.woff +0 -0
  160. package/docs/fonts/ClashGrotesk-Bold.woff2 +0 -0
  161. package/docs/fonts/ClashGrotesk-Extralight.eot +0 -0
  162. package/docs/fonts/ClashGrotesk-Extralight.ttf +0 -0
  163. package/docs/fonts/ClashGrotesk-Extralight.woff +0 -0
  164. package/docs/fonts/ClashGrotesk-Extralight.woff2 +0 -0
  165. package/docs/fonts/ClashGrotesk-Light.eot +0 -0
  166. package/docs/fonts/ClashGrotesk-Light.ttf +0 -0
  167. package/docs/fonts/ClashGrotesk-Light.woff +0 -0
  168. package/docs/fonts/ClashGrotesk-Light.woff2 +0 -0
  169. package/docs/fonts/ClashGrotesk-Medium.eot +0 -0
  170. package/docs/fonts/ClashGrotesk-Medium.ttf +0 -0
  171. package/docs/fonts/ClashGrotesk-Medium.woff +0 -0
  172. package/docs/fonts/ClashGrotesk-Medium.woff2 +0 -0
  173. package/docs/fonts/ClashGrotesk-Regular.eot +0 -0
  174. package/docs/fonts/ClashGrotesk-Regular.ttf +0 -0
  175. package/docs/fonts/ClashGrotesk-Regular.woff +0 -0
  176. package/docs/fonts/ClashGrotesk-Regular.woff2 +0 -0
  177. package/docs/fonts/ClashGrotesk-Semibold.eot +0 -0
  178. package/docs/fonts/ClashGrotesk-Semibold.ttf +0 -0
  179. package/docs/fonts/ClashGrotesk-Semibold.woff +0 -0
  180. package/docs/fonts/ClashGrotesk-Semibold.woff2 +0 -0
  181. package/docs/fonts/ClashGrotesk-Variable.eot +0 -0
  182. package/docs/fonts/ClashGrotesk-Variable.ttf +0 -0
  183. package/docs/fonts/ClashGrotesk-Variable.woff +0 -0
  184. package/docs/fonts/ClashGrotesk-Variable.woff2 +0 -0
  185. package/docs/img/concorde-icon.svg +0 -5
  186. package/docs/img/concorde-logo.svg +0 -1
  187. package/docs/img/concorde.png +0 -0
  188. package/docs/img/concorde_def.png +0 -0
  189. package/docs/img/concorde_seuil.png.webp +0 -0
  190. package/docs/img/concorde_seuil_invert.png +0 -0
  191. package/docs/img/paul_metrand.jpg +0 -0
  192. package/docs/img/paul_metrand_xs.jpg +0 -0
  193. package/docs/index.html +0 -93
  194. package/docs/llms-full.txt +0 -5787
  195. package/docs/llms.txt +0 -104
  196. package/docs/robots.txt +0 -16
  197. package/docs/sitemap.xml +0 -237
  198. package/docs/src/core/components/functional/date/date.md +0 -290
  199. package/docs/src/core/components/functional/fetch/fetch.md +0 -125
  200. package/docs/src/core/components/functional/if/if.md +0 -9
  201. package/docs/src/core/components/functional/jsonata/jsonata.md +0 -56
  202. package/docs/src/core/components/functional/list/list.md +0 -65
  203. package/docs/src/core/components/functional/mix/mix.md +0 -41
  204. package/docs/src/core/components/functional/queue/queue.md +0 -72
  205. package/docs/src/core/components/functional/router/router.md +0 -94
  206. package/docs/src/core/components/functional/sdui/default-library.json +0 -108
  207. package/docs/src/core/components/functional/sdui/example.json +0 -99
  208. package/docs/src/core/components/functional/sdui/sdui.md +0 -356
  209. package/docs/src/core/components/functional/states/states.md +0 -87
  210. package/docs/src/core/components/functional/submit/submit.md +0 -114
  211. package/docs/src/core/components/functional/subscriber/subscriber.md +0 -91
  212. package/docs/src/core/components/functional/value/value.md +0 -35
  213. package/docs/src/core/components/ui/alert/alert.md +0 -121
  214. package/docs/src/core/components/ui/alert-messages/alert-messages.md +0 -0
  215. package/docs/src/core/components/ui/badge/badge.md +0 -127
  216. package/docs/src/core/components/ui/button/button.md +0 -182
  217. package/docs/src/core/components/ui/captcha/captcha.md +0 -12
  218. package/docs/src/core/components/ui/card/card.md +0 -97
  219. package/docs/src/core/components/ui/divider/divider.md +0 -35
  220. package/docs/src/core/components/ui/form/checkbox/checkbox.md +0 -77
  221. package/docs/src/core/components/ui/form/fieldset/fieldset.md +0 -129
  222. package/docs/src/core/components/ui/form/form-actions/form-actions.md +0 -77
  223. package/docs/src/core/components/ui/form/form-layout/form-layout.md +0 -44
  224. package/docs/src/core/components/ui/form/input/input.md +0 -142
  225. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -133
  226. package/docs/src/core/components/ui/form/radio/radio.md +0 -57
  227. package/docs/src/core/components/ui/form/select/select.md +0 -71
  228. package/docs/src/core/components/ui/form/switch/switch.md +0 -57
  229. package/docs/src/core/components/ui/form/textarea/textarea.md +0 -65
  230. package/docs/src/core/components/ui/group/group.md +0 -75
  231. package/docs/src/core/components/ui/icon/icon.md +0 -125
  232. package/docs/src/core/components/ui/icon/icons.json +0 -1
  233. package/docs/src/core/components/ui/image/image.md +0 -107
  234. package/docs/src/core/components/ui/link/link.md +0 -43
  235. package/docs/src/core/components/ui/loader/loader.md +0 -55
  236. package/docs/src/core/components/ui/menu/menu.md +0 -329
  237. package/docs/src/core/components/ui/modal/modal.md +0 -119
  238. package/docs/src/core/components/ui/pop/pop.md +0 -96
  239. package/docs/src/core/components/ui/progress/progress.md +0 -63
  240. package/docs/src/core/components/ui/table/table.md +0 -455
  241. package/docs/src/core/components/ui/toast/toast.md +0 -166
  242. package/docs/src/core/components/ui/tooltip/tooltip.md +0 -82
  243. package/docs/src/docs/_core-concept/dataFlow.md +0 -88
  244. package/docs/src/docs/_core-concept/overview.md +0 -57
  245. package/docs/src/docs/_core-concept/subscriber.md +0 -75
  246. package/docs/src/docs/_decorators/ancestor-attribute.md +0 -127
  247. package/docs/src/docs/_decorators/auto-subscribe.md +0 -202
  248. package/docs/src/docs/_decorators/bind.md +0 -167
  249. package/docs/src/docs/_decorators/get.md +0 -162
  250. package/docs/src/docs/_decorators/handle.md +0 -175
  251. package/docs/src/docs/_decorators/on-assign.md +0 -390
  252. package/docs/src/docs/_decorators/patch.md +0 -70
  253. package/docs/src/docs/_decorators/post.md +0 -146
  254. package/docs/src/docs/_decorators/publish.md +0 -55
  255. package/docs/src/docs/_decorators/put.md +0 -70
  256. package/docs/src/docs/_decorators/subscribe.md +0 -100
  257. package/docs/src/docs/_decorators/wait-for-ancestors.md +0 -163
  258. package/docs/src/docs/_directives/sub.md +0 -91
  259. package/docs/src/docs/_getting-started/ai-agents.md +0 -76
  260. package/docs/src/docs/_getting-started/concorde-manual-install.md +0 -133
  261. package/docs/src/docs/_getting-started/concorde-outside.md +0 -33
  262. package/docs/src/docs/_getting-started/create-a-component.md +0 -139
  263. package/docs/src/docs/_getting-started/my-first-component.md +0 -236
  264. package/docs/src/docs/_getting-started/my-first-subscriber.md +0 -120
  265. package/docs/src/docs/_getting-started/pubsub.md +0 -37
  266. package/docs/src/docs/_getting-started/start.md +0 -47
  267. package/docs/src/docs/_getting-started/theming.md +0 -91
  268. package/docs/src/docs/_misc/api-configuration.md +0 -81
  269. package/docs/src/docs/_misc/dataProviderKey.md +0 -168
  270. package/docs/src/docs/_misc/docs-mock-api.md +0 -63
  271. package/docs/src/docs/_misc/dynamic-path.md +0 -71
  272. package/docs/src/docs/_misc/endpoint.md +0 -45
  273. package/docs/src/docs/_misc/formelement-subscriber-removal.md +0 -115
  274. package/docs/src/docs/_misc/html-integration.md +0 -15
  275. package/docs/src/docs/search/docs-search.json +0 -9512
  276. package/docs/src/tag-list.json +0 -1
  277. package/docs/src/tsconfig-model.json +0 -23
  278. package/docs/src/tsconfig.declarations.json +0 -22
  279. package/docs/src/tsconfig.emit.json +0 -23
  280. package/docs/src/tsconfig.json +0 -858
  281. package/docs/svg/regular/plane.svg +0 -1
  282. package/docs/svg/solid/plane.svg +0 -1
  283. package/gitlab/job_github_mirror.sh +0 -39
  284. package/scripts/github-export.mjs +0 -150
  285. package/src/css.d.ts +0 -19
  286. package/src/tsconfig.declarations.json +0 -22
  287. package/src/tsconfig.emit.json +0 -23
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/docs/mock-api/urls.ts", "../src/docs/mock-api/api-config-mock.ts", "../src/docs/mock-api/fixtures.ts", "../src/docs/mock-api/fixtures-jsonata.ts", "../src/docs/mock-api/router.ts", "../src/docs/mock-api/service-worker.ts"],
4
- "sourcesContent": ["/** Base same-origin pour les d\u00E9mos doc (Service Worker + middleware Vite). */\nexport const DOCS_MOCK_API_BASE = \"/docs-mock-api\";\n\n/** Remplace https://reqres.in \u2014 chemins `api/users`, `api/users/2`, etc. */\nexport const DOCS_MOCK_REQRES_SERVICE = DOCS_MOCK_API_BASE;\n\n/** Remplace https://geo.api.gouv.fr/ \u2014 chemins `communes?\u2026`. */\nexport const DOCS_MOCK_GEO_SERVICE = `${DOCS_MOCK_API_BASE}/geo/`;\n\n/** Remplace https://v2.jokeapi.dev \u2014 chemins `joke/Any?\u2026`. */\nexport const DOCS_MOCK_JOKES_SERVICE = `${DOCS_MOCK_API_BASE}/jokes`;\n", "import { DOCS_MOCK_API_BASE } from \"./urls\";\n\n/** Bearer accept\u00E9 par GET /api/config/protected */\nexport const DOCS_MOCK_TOKEN_VALID = \"docs-mock-valid-token\";\n/** D\u00E9clenche HTTP 498 \u2192 renouvellement via tokenProvider */\nexport const DOCS_MOCK_TOKEN_STALE = \"docs-mock-stale-token\";\n/** \u00C9mis par GET /auth/token apr\u00E8s Basic auth ou eventsApiToken */\nexport const DOCS_MOCK_TOKEN_FRESH = \"docs-mock-fresh-token\";\n\nconst DOCS_MOCK_BASIC_USER = \"demo\";\nconst DOCS_MOCK_BASIC_PASSWORD = \"secret\";\n/** Valeur de l\u2019attribut anc\u00EAtre `eventsApiToken` (Bearer pour /auth/token) */\nexport const DOCS_MOCK_EVENTS_API_TOKEN = \"docs-mock-events-token\";\n\nconst WORDING_CATALOG: Record<string, Record<string, string>> = {\n \"api-config.greeting\": { fr: \"Bonjour\", en: \"Hello\" },\n \"api-config.farewell\": { fr: \"Au revoir\", en: \"Goodbye\" },\n \"api-config.hint\": {\n fr: \"Libell\u00E9s servis par le mock /wording/labels\",\n en: \"Labels served by mock /wording/labels\",\n },\n};\n\nfunction json(body: unknown, init: ResponseInit = {}): Response {\n const headers = new Headers(init.headers);\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n headers.set(\"Access-Control-Allow-Origin\", \"*\");\n headers.set(\"X-Docs-Mock-Api\", \"concorde-api-config\");\n return new Response(JSON.stringify(body), { ...init, headers });\n}\n\ntype ParsedAuth =\n | { kind: \"none\" }\n | { kind: \"basic\"; user: string; password: string }\n | { kind: \"bearer\"; token: string };\n\nfunction parseAuthorization(request: Request): ParsedAuth {\n const header = request.headers.get(\"authorization\");\n if (!header) return { kind: \"none\" };\n const basic = header.match(/^Basic\\s+(.+)$/i);\n if (basic) {\n try {\n const decoded = atob(basic[1]);\n const sep = decoded.indexOf(\":\");\n if (sep < 0) return { kind: \"none\" };\n return {\n kind: \"basic\",\n user: decoded.slice(0, sep),\n password: decoded.slice(sep + 1),\n };\n } catch {\n return { kind: \"none\" };\n }\n }\n const bearer = header.match(/^Bearer\\s+(.+)$/i);\n if (bearer) return { kind: \"bearer\", token: bearer[1].trim() };\n return { kind: \"none\" };\n}\n\nfunction isValidBasic(auth: ParsedAuth): boolean {\n return (\n auth.kind === \"basic\" &&\n auth.user === DOCS_MOCK_BASIC_USER &&\n auth.password === DOCS_MOCK_BASIC_PASSWORD\n );\n}\n\nfunction wordingLabels(url: URL): Response {\n const lang = url.searchParams.get(\"lang\") || \"fr\";\n const labels = url.searchParams.getAll(\"labels[]\").length\n ? url.searchParams.getAll(\"labels[]\")\n : url.searchParams.getAll(\"labels\");\n const result: Record<string, string> = {};\n for (const key of labels) {\n const entry = WORDING_CATALOG[key];\n result[key] =\n entry?.[lang] ?? entry?.en ?? `[missing:${key}]`;\n }\n return json({ lang, labels: result, ...result });\n}\n\n/**\n * Routes mock pour la page doc APIConfiguration (token, 498, wording).\n */\nexport function handleApiConfigMockRequest(\n request: Request,\n subPath: string,\n method: string,\n): Response | null {\n if (subPath === \"/auth/token\" && method === \"GET\") {\n const auth = parseAuthorization(request);\n if (isValidBasic(auth)) {\n return json({\n token: DOCS_MOCK_TOKEN_FRESH,\n source: \"basic\",\n serviceHost: new URL(request.url).searchParams.get(\"serviceHost\"),\n });\n }\n if (\n auth.kind === \"bearer\" &&\n auth.token === DOCS_MOCK_EVENTS_API_TOKEN\n ) {\n return json({\n token: DOCS_MOCK_TOKEN_FRESH,\n source: \"eventsApiToken\",\n });\n }\n return json({ error: \"Unauthorized\" }, { status: 401 });\n }\n\n if (subPath === \"/api/config/protected\" && method === \"GET\") {\n const auth = parseAuthorization(request);\n if (auth.kind === \"bearer\") {\n if (auth.token === DOCS_MOCK_TOKEN_STALE) {\n return json({ error: \"Token expired\", code: \"token_stale\" }, { status: 498 });\n }\n if (\n auth.token === DOCS_MOCK_TOKEN_VALID ||\n auth.token === DOCS_MOCK_TOKEN_FRESH\n ) {\n return json({\n ok: true,\n message: \"Protected resource\",\n tokenUsed: auth.token,\n });\n }\n }\n if (isValidBasic(auth)) {\n return json({\n ok: true,\n message: \"Protected resource (basic)\",\n tokenUsed: null,\n });\n }\n return json({ error: \"Unauthorized\" }, { status: 401 });\n }\n\n if (\n (subPath === \"/wording/labels\" || subPath.startsWith(\"/wording/labels\")) &&\n method === \"GET\"\n ) {\n return wordingLabels(new URL(request.url));\n }\n\n return null;\n}\n\nexport const API_CONFIG_MOCK_PATHS = [\n `${DOCS_MOCK_API_BASE}/auth/token`,\n `${DOCS_MOCK_API_BASE}/api/config/protected`,\n `${DOCS_MOCK_API_BASE}/wording/labels`,\n] as const;\n", "/** Donn\u00E9es type ReqRes pour les d\u00E9mos doc (sans appel externe). */\n\nexport type ReqresUser = {\n id: number;\n email: string;\n first_name: string;\n last_name: string;\n avatar: string;\n};\n\nconst reqresAvatar = (seed: string) =>\n `https://i.pravatar.cc/150?u=${encodeURIComponent(seed)}`;\n\nconst REQRES_EXTRA_NAMES: [string, string][] = [\n [\"Michael\", \"Lawson\"],\n [\"Tobias\", \"Funke\"],\n [\"Lindsay\", \"Funke\"],\n [\"Maeby\", \"Funke\"],\n [\"George\", \"Michael\"],\n [\"Annye\", \"Vang\"],\n [\"Rachel\", \"Howe\"],\n [\"Terry\", \"Medhurst\"],\n [\"Bette\", \"Haag\"],\n [\"Lester\", \"Solomon\"],\n [\"April\", \"Douglas\"],\n [\"Marian\", \"Roberts\"],\n [\"Kathryn\", \"Murphy\"],\n [\"Gloria\", \"Armstrong\"],\n [\"Adam\", \"Bradley\"],\n [\"Angela\", \"Hicks\"],\n [\"Rose\", \"Wheeler\"],\n [\"Sara\", \"Berry\"],\n [\"Glen\", \"Kuhn\"],\n [\"Roger\", \"Cox\"],\n];\n\nfunction buildReqresUser(\n id: number,\n first_name: string,\n last_name: string,\n): ReqresUser {\n const slug = `${first_name}-${last_name}`.toLowerCase();\n return {\n id,\n email: `${first_name.toLowerCase()}.${last_name.toLowerCase()}@example.com`,\n first_name,\n last_name,\n avatar: reqresAvatar(slug),\n };\n}\n\n/** Jeu \u00E9tendu pour d\u00E9mos queue / lazyload (pagination par offset). */\nexport const DOCS_REQRES_USERS: ReqresUser[] = [\n buildReqresUser(1, \"George\", \"Bluth\"),\n buildReqresUser(2, \"Janet\", \"Weaver\"),\n buildReqresUser(3, \"Emma\", \"Wong\"),\n buildReqresUser(4, \"Eve\", \"Holt\"),\n ...REQRES_EXTRA_NAMES.map(([first_name, last_name], index) =>\n buildReqresUser(5 + index, first_name, last_name),\n ),\n];\n\nexport type ReqresUserResponse = { data: ReqresUser };\nexport type ReqresUsersListResponse = {\n page: number;\n per_page: number;\n total: number;\n total_pages: number;\n data: ReqresUser[];\n};\n\n/** Filter users for mock search (`q` \u2014 first name, last name, email). Same logic as the TS starter. */\nexport function filterDocsUsers(\n users: ReqresUser[],\n query: string | null | undefined,\n): ReqresUser[] {\n const q = query?.trim().toLowerCase();\n if (!q) return users;\n return users.filter((user) => {\n const haystack =\n `${user.first_name} ${user.last_name} ${user.email}`.toLowerCase();\n return haystack.includes(q);\n });\n}\n\nexport type GeoCommuneRow = { nom: string; code: string };\n\nexport const DOCS_GEO_COMMUNES: GeoCommuneRow[] = [\n { nom: \"Paris\", code: \"75056\" },\n { nom: \"Lyon\", code: \"69123\" },\n { nom: \"Marseille\", code: \"13055\" },\n { nom: \"Toulouse\", code: \"31555\" },\n { nom: \"Lille\", code: \"59350\" },\n { nom: \"Bordeaux\", code: \"33063\" },\n { nom: \"Nantes\", code: \"44109\" },\n { nom: \"Strasbourg\", code: \"67482\" },\n { nom: \"Montpellier\", code: \"34172\" },\n { nom: \"Rennes\", code: \"35238\" },\n];\n\n/** JokeAPI-style content flags (checkbox / radio / switch blacklist demos). */\nexport type DocsJokeFlagKey =\n | \"nsfw\"\n | \"religious\"\n | \"political\"\n | \"racist\"\n | \"sexist\"\n | \"explicit\";\n\n/** Forme proche de JokeAPI v2 (`key=\"jokes\"` sur sonic-queue / list). */\nexport type DocsJokeItem = {\n categories: string[];\n createdAt: string;\n id: number;\n joke: string;\n lang: \"fr\" | \"en\";\n flags: Record<DocsJokeFlagKey, boolean>;\n safe: boolean;\n type: string;\n setup?: string;\n delivery?: string;\n};\n\nconst jokeFlags = (\n partial: Partial<Record<DocsJokeFlagKey, boolean>> = {},\n): Record<DocsJokeFlagKey, boolean> => ({\n nsfw: false,\n religious: false,\n political: false,\n racist: false,\n sexist: false,\n explicit: false,\n ...partial,\n});\n\nexport type DocsJokeApiResponse = {\n error: boolean;\n amount: number;\n jokes: DocsJokeItem[];\n};\n\nconst SAMPLE_JOKES: DocsJokeItem[] = [\n {\n categories: [\"Programming\"],\n createdAt: \"2020-01-01 00:00:00\",\n id: 1,\n lang: \"en\",\n joke: \"Why do programmers prefer dark mode? Because light attracts bugs.\",\n flags: jokeFlags(),\n safe: true,\n type: \"single\",\n },\n {\n categories: [\"Misc\"],\n createdAt: \"2020-01-02 00:00:00\",\n id: 2,\n lang: \"en\",\n joke: \"I told my computer I needed a break \u2014 it said: no problem, I'll go to sleep.\",\n flags: jokeFlags({ nsfw: true }),\n safe: false,\n type: \"single\",\n },\n {\n categories: [\"Pun\"],\n createdAt: \"2020-01-03 00:00:00\",\n id: 3,\n lang: \"en\",\n joke: \"Concorde docs run offline: even the API is a local joke.\",\n flags: jokeFlags(),\n safe: true,\n type: \"single\",\n },\n {\n categories: [\"Animals\"],\n createdAt: \"2020-01-04 00:00:00\",\n id: 4,\n lang: \"en\",\n joke: \"The dog ate my homework and my pull request.\",\n flags: jokeFlags({ political: true }),\n safe: true,\n type: \"single\",\n },\n {\n categories: [\"Animals\", \"Pun\"],\n createdAt: \"2020-01-05 00:00:00\",\n id: 5,\n lang: \"fr\",\n joke: \"Quel est le chien pr\u00E9f\u00E9r\u00E9 des d\u00E9veloppeurs ? Le labrador Retriever.\",\n flags: jokeFlags(),\n safe: true,\n type: \"single\",\n },\n {\n categories: [\"Animals\"],\n createdAt: \"2020-01-06 00:00:00\",\n id: 6,\n lang: \"fr\",\n joke: \"Un chat et un chien discutent de TypeScript : le chien dit \u00AB woof \u00BB, le chat compile.\",\n flags: jokeFlags({ racist: true }),\n safe: false,\n type: \"single\",\n },\n {\n categories: [\"Misc\"],\n createdAt: \"2020-01-07 00:00:00\",\n id: 7,\n lang: \"fr\",\n joke: \"Pourquoi les blagues offline sont-elles fiables ? Parce qu'elles passent par le Service Worker.\",\n flags: jokeFlags({ religious: true }),\n safe: true,\n type: \"single\",\n },\n {\n categories: [\"Programming\"],\n createdAt: \"2020-01-08 00:00:00\",\n id: 8,\n lang: \"fr\",\n joke: \"Mon compilateur et mon chien : tous deux ignorent mes commandes jusqu'au build.\",\n flags: jokeFlags({ sexist: true }),\n safe: false,\n type: \"single\",\n },\n {\n categories: [\"Misc\"],\n createdAt: \"2020-01-09 00:00:00\",\n id: 9,\n lang: \"en\",\n joke: \"A SQL query walks into a bar, walks up to two tables and asks: Can I join you?\",\n flags: jokeFlags({ explicit: true }),\n safe: false,\n type: \"single\",\n },\n {\n categories: [\"Pun\"],\n createdAt: \"2020-01-10 00:00:00\",\n id: 10,\n lang: \"fr\",\n joke: \"J'ai cherch\u00E9 \u00AB chien \u00BB dans la doc : le mock API a r\u00E9pondu.\",\n flags: jokeFlags(),\n safe: true,\n type: \"single\",\n },\n {\n categories: [\"Misc\"],\n createdAt: \"2020-01-11 00:00:00\",\n id: 11,\n lang: \"en\",\n joke: \"There are only two hard things in Computer Science: cache invalidation and naming things.\",\n flags: jokeFlags({ political: true, explicit: true }),\n safe: false,\n type: \"single\",\n },\n {\n categories: [\"Animals\"],\n createdAt: \"2020-01-12 00:00:00\",\n id: 12,\n lang: \"fr\",\n joke: \"Le golden retriever a r\u00E9cup\u00E9r\u00E9 la donn\u00E9e du publisher.\",\n flags: jokeFlags({ racist: true, sexist: true }),\n safe: false,\n type: \"two-liner\",\n setup: \"Pourquoi le chien aime Concorde ?\",\n delivery: \"Parce qu'il sait fetch.\",\n },\n {\n categories: [\"Misc\"],\n createdAt: \"2020-01-13 00:00:00\",\n id: 13,\n lang: \"en\",\n joke: \"My code and my conscience: both have too many warnings.\",\n flags: jokeFlags(),\n safe: true,\n type: \"single\",\n },\n {\n categories: [\"Programming\"],\n createdAt: \"2020-01-14 00:00:00\",\n id: 14,\n lang: \"en\",\n joke: \"Git blame is just a mirror.\",\n flags: jokeFlags({ religious: true, political: true }),\n safe: false,\n type: \"single\",\n },\n];\n\n/** `blacklistFlags` from queue filter form (comma-separated or repeated param). */\nexport function parseBlacklistFlags(url: URL): DocsJokeFlagKey[] {\n const keys = new Set<DocsJokeFlagKey>();\n const valid: DocsJokeFlagKey[] = [\n \"nsfw\",\n \"religious\",\n \"political\",\n \"racist\",\n \"sexist\",\n \"explicit\",\n ];\n const add = (raw: string) => {\n raw\n .split(\",\")\n .map((s) => s.trim().toLowerCase())\n .forEach((part) => {\n if (valid.includes(part as DocsJokeFlagKey)) keys.add(part as DocsJokeFlagKey);\n });\n };\n url.searchParams.getAll(\"blacklistFlags\").forEach(add);\n const single = url.searchParams.get(\"blacklistFlags\");\n if (single) add(single);\n return [...keys];\n}\n\n/** Exclude jokes that match any blacklisted flag (JokeAPI-style). */\nexport function applyJokeBlacklist(\n jokes: DocsJokeItem[],\n blacklist: DocsJokeFlagKey[],\n): DocsJokeItem[] {\n if (!blacklist.length) return jokes;\n return jokes.filter(\n (j) => !blacklist.some((flag) => j.flags[flag] === true),\n );\n}\n\n/** Filtre doc joke queue (`contains`, `lang`, `blacklistFlags` via `dataFilterProvider`). */\nexport function filterDocsJokes(\n jokes: DocsJokeItem[],\n url: URL,\n): DocsJokeItem[] {\n let pool = jokes;\n const contains = url.searchParams.get(\"contains\")?.trim().toLowerCase();\n if (contains) {\n pool = pool.filter((j) => {\n const haystack = [j.joke, j.setup, j.delivery, ...j.categories]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n return haystack.includes(contains);\n });\n }\n const lang = url.searchParams.get(\"lang\")?.trim().toLowerCase();\n if (lang === \"fr\" || lang === \"en\") {\n pool = pool.filter((j) => j.lang === lang);\n }\n pool = applyJokeBlacklist(pool, parseBlacklistFlags(url));\n return pool;\n}\n\n/**\n * R\u00E9ponse type JokeAPI v2.\n * - `amount` : taille du lot si pas de `offset`\n * - `offset` + `limit` / `per_page` : pagination (sonic-queue lazy)\n * - `contains`, `lang`, `blacklistFlags` : filtres formulaire (queue \u00AB Remove following jokes \u00BB)\n */\nexport function buildJokeApiResponse(url: URL): DocsJokeApiResponse {\n const pool = filterDocsJokes(SAMPLE_JOKES, url);\n const amount = Math.max(\n 1,\n parseInt(url.searchParams.get(\"amount\") || \"10\", 10),\n );\n const hasOffset = url.searchParams.has(\"offset\");\n const limit = Math.max(\n 1,\n parseInt(\n url.searchParams.get(\"limit\") ||\n url.searchParams.get(\"per_page\") ||\n String(amount),\n 10,\n ),\n );\n const offset = Math.max(0, parseInt(url.searchParams.get(\"offset\") || \"0\", 10));\n const start = hasOffset ? offset : 0;\n const count = hasOffset ? limit : amount;\n const jokes = pool.slice(start, start + count).map((j, i) => ({\n ...j,\n id: start + i + 1,\n }));\n return { error: false, amount: jokes.length, jokes };\n}\n", "/**\n * Fixtures fun pour d\u00E9mos / tests sonic-jsonata (hors billetterie).\n */\n\nconst avatar = (seed: string) =>\n `https://i.pravatar.cc/150?u=${encodeURIComponent(seed)}`;\n\n/** Missions de chats spatiaux \u2014 groupby name + top N points. */\nexport type SpaceCatMission = {\n id: number;\n name: string;\n planet: string;\n mission: string;\n points: number;\n avatar: string;\n};\n\nexport const DOCS_SPACE_CAT_MISSIONS: SpaceCatMission[] = [\n {\n id: 1,\n name: \"Captain Whiskers\",\n planet: \"Mars\",\n mission: \"Laser hunt\",\n points: 40,\n avatar: avatar(\"captain-whiskers\"),\n },\n {\n id: 2,\n name: \"Captain Whiskers\",\n planet: \"Mars\",\n mission: \"Dust nap\",\n points: 25,\n avatar: avatar(\"captain-whiskers\"),\n },\n {\n id: 3,\n name: \"Nebula Paws\",\n planet: \"Europa\",\n mission: \"Ice fishing\",\n points: 55,\n avatar: avatar(\"nebula-paws\"),\n },\n {\n id: 4,\n name: \"Astro Mittens\",\n planet: \"Titan\",\n mission: \"Methane surf\",\n points: 33,\n avatar: avatar(\"astro-mittens\"),\n },\n {\n id: 5,\n name: \"Nebula Paws\",\n planet: \"Europa\",\n mission: \"Comet chase\",\n points: 20,\n avatar: avatar(\"nebula-paws\"),\n },\n {\n id: 6,\n name: \"Professor Meowington\",\n planet: \"Venus\",\n mission: \"Cloud tasting\",\n points: 48,\n avatar: avatar(\"prof-meowington\"),\n },\n {\n id: 7,\n name: \"Astro Mittens\",\n planet: \"Titan\",\n mission: \"Antenna polish\",\n points: 12,\n avatar: avatar(\"astro-mittens\"),\n },\n {\n id: 8,\n name: \"Zero-G Socks\",\n planet: \"Moon\",\n mission: \"Flag knitting\",\n points: 61,\n avatar: avatar(\"zero-g-socks\"),\n },\n];\n\n/** Sacs de caf\u00E9 \u2014 groupby origin + filtre roast. */\nexport type CoffeeBag = {\n id: number;\n origin: string;\n roast: \"light\" | \"medium\" | \"dark\";\n kg: number;\n farm: string;\n};\n\nexport const DOCS_COFFEE_BAGS: CoffeeBag[] = [\n { id: 1, origin: \"Ethiopia\", roast: \"light\", kg: 12, farm: \"Yirgacheffe Hills\" },\n { id: 2, origin: \"Ethiopia\", roast: \"medium\", kg: 8, farm: \"Sidamo Ridge\" },\n { id: 3, origin: \"Colombia\", roast: \"medium\", kg: 15, farm: \"Huila Valley\" },\n { id: 4, origin: \"Colombia\", roast: \"dark\", kg: 6, farm: \"Cauca Peak\" },\n { id: 5, origin: \"Brazil\", roast: \"dark\", kg: 22, farm: \"Minas Gerais\" },\n { id: 6, origin: \"Brazil\", roast: \"medium\", kg: 10, farm: \"Cerrado\" },\n { id: 7, origin: \"Guatemala\", roast: \"light\", kg: 9, farm: \"Antigua\" },\n { id: 8, origin: \"Guatemala\", roast: \"dark\", kg: 5, farm: \"Huehuetenango\" },\n { id: 9, origin: \"Ethiopia\", roast: \"light\", kg: 4, farm: \"Guji Forest\" },\n];\n\nexport function filterCoffeeBags(\n bags: CoffeeBag[],\n roast: string | null | undefined,\n): CoffeeBag[] {\n const r = roast?.trim().toLowerCase();\n if (!r || r === \"all\") return bags;\n return bags.filter((b) => b.roast === r);\n}\n\n/** Lignes de commande (table) \u2014 total / moyenne par ligne. */\nexport type MarketOrderLine = {\n id: number;\n name: string;\n qty: number;\n unitPrice: number;\n category: string;\n};\n\nexport const DOCS_MARKET_ORDER_LINES: MarketOrderLine[] = [\n { id: 1, name: \"Heirloom tomatoes\", qty: 4, unitPrice: 3.5, category: \"veg\" },\n { id: 2, name: \"Sourdough loaf\", qty: 2, unitPrice: 6.0, category: \"bakery\" },\n { id: 3, name: \"Goat cheese\", qty: 1, unitPrice: 8.5, category: \"dairy\" },\n { id: 4, name: \"Honey jar\", qty: 3, unitPrice: 5.2, category: \"pantry\" },\n { id: 5, name: \"Sunflowers\", qty: 5, unitPrice: 2.0, category: \"flowers\" },\n { id: 6, name: \"Free-range eggs\", qty: 2, unitPrice: 4.8, category: \"dairy\" },\n];\n", "import { handleApiConfigMockRequest } from \"./api-config-mock\";\nimport {\n DOCS_GEO_COMMUNES,\n DOCS_REQRES_USERS,\n buildJokeApiResponse,\n filterDocsUsers,\n type GeoCommuneRow,\n type ReqresUserResponse,\n type ReqresUsersListResponse,\n} from \"./fixtures\";\nimport {\n DOCS_COFFEE_BAGS,\n DOCS_MARKET_ORDER_LINES,\n DOCS_SPACE_CAT_MISSIONS,\n filterCoffeeBags,\n} from \"./fixtures-jsonata\";\n\nexport const DOCS_MOCK_API_PREFIX = \"/docs-mock-api\";\n\nfunction json(\n body: unknown,\n init: ResponseInit & { delayMs?: number } = {},\n): Promise<Response> {\n const { delayMs = 0, ...responseInit } = init;\n const headers = new Headers(responseInit.headers);\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n headers.set(\"Access-Control-Allow-Origin\", \"*\");\n headers.set(\"X-Docs-Mock-Api\", \"concorde\");\n\n const build = () =>\n new Response(JSON.stringify(body), { ...responseInit, headers });\n\n if (delayMs <= 0) return Promise.resolve(build());\n return new Promise((resolve) =>\n setTimeout(() => resolve(build()), delayMs),\n );\n}\n\n/**\n * Liste utilisateurs type ReqRes.\n * - `offset` + `per_page` / `limit` : pagination index\u00E9e (sonic-queue avec `$offset` / `$limit`)\n * - `page` + `per_page` : num\u00E9ro de page 1-based (sonic-fetch, ex. `?page=2`)\n * - `q` : recherche sur pr\u00E9nom, nom, email (sonic-queue + `dataFilterProvider`, champ `name=\"q\"`)\n */\nexport function paginateUsers(url: URL): ReqresUsersListResponse {\n const perPage = Math.max(\n 1,\n parseInt(\n url.searchParams.get(\"per_page\") ||\n url.searchParams.get(\"limit\") ||\n \"6\",\n 10,\n ),\n );\n const pool = filterDocsUsers(DOCS_REQRES_USERS, url.searchParams.get(\"q\"));\n const total = pool.length;\n\n let start: number;\n let page: number;\n\n if (url.searchParams.has(\"offset\")) {\n start = Math.max(0, parseInt(url.searchParams.get(\"offset\") || \"0\", 10));\n page = Math.floor(start / perPage) + 1;\n } else {\n page = Math.max(1, parseInt(url.searchParams.get(\"page\") || \"1\", 10));\n start = (page - 1) * perPage;\n }\n\n const data = pool.slice(start, start + perPage);\n\n return {\n page,\n per_page: perPage,\n total,\n total_pages: Math.max(1, Math.ceil(total / perPage)),\n data,\n };\n}\n\nasync function parseRegisterFields(\n request: Request,\n): Promise<{ email?: string; password?: string }> {\n const contentType = (request.headers.get(\"content-type\") || \"\").toLowerCase();\n\n if (contentType.includes(\"multipart/form-data\")) {\n const fd = await request.formData();\n return {\n email: String(fd.get(\"email\") ?? \"\"),\n password: String(fd.get(\"password\") ?? \"\"),\n };\n }\n\n if (contentType.includes(\"application/x-www-form-urlencoded\")) {\n const text = await request.text();\n const params = new URLSearchParams(text);\n return {\n email: params.get(\"email\") ?? \"\",\n password: params.get(\"password\") ?? \"\",\n };\n }\n\n const text = await request.text();\n if (!text.trim()) return {};\n\n try {\n const parsed = JSON.parse(text) as { email?: unknown; password?: unknown };\n return {\n email: parsed.email != null ? String(parsed.email) : \"\",\n password: parsed.password != null ? String(parsed.password) : \"\",\n };\n } catch {\n const params = new URLSearchParams(text);\n if (params.has(\"email\") || params.has(\"password\")) {\n return {\n email: params.get(\"email\") ?? \"\",\n password: params.get(\"password\") ?? \"\",\n };\n }\n return {};\n }\n}\n\nfunction registerOkBody(\n fields: { email: string; password: string },\n nested = false,\n) {\n const payload = {\n id: 4,\n token: \"docs-mock-register-token\",\n email: fields.email,\n };\n return nested ? { data: payload } : payload;\n}\n\nfunction geoCommunes(url: URL): GeoCommuneRow[] {\n const limit = Math.max(\n 1,\n parseInt(url.searchParams.get(\"limit\") || \"5\", 10),\n );\n const offset = Math.max(0, parseInt(url.searchParams.get(\"offset\") || \"0\", 10));\n return DOCS_GEO_COMMUNES.slice(offset, offset + limit);\n}\n\n/**\n * Intercepte les requ\u00EAtes vers /docs-mock-api/* (Service Worker ou middleware Vite).\n */\nexport async function handleDocsMockApiRequest(\n request: Request,\n): Promise<Response | null> {\n const url = new URL(request.url);\n if (!url.pathname.startsWith(DOCS_MOCK_API_PREFIX)) return null;\n\n const subPath = url.pathname.slice(DOCS_MOCK_API_PREFIX.length) || \"/\";\n const method = request.method.toUpperCase();\n\n if (subPath === \"/health\") {\n return json({ ok: true, service: \"concorde-docs-mock-api\" });\n }\n\n const apiConfigResponse = handleApiConfigMockRequest(request, subPath, method);\n if (apiConfigResponse) return apiConfigResponse;\n\n if (\n (subPath === \"/api/register\" || subPath === \"/api/register/nested\") &&\n method === \"POST\"\n ) {\n const body = await parseRegisterFields(request);\n if (!body.email?.trim() || !body.password?.trim()) {\n return json(\n {\n messages: [\n {\n content: \"email and password are required\",\n status: \"error\",\n },\n ],\n },\n { status: 400 },\n );\n }\n return json(\n registerOkBody(\n { email: body.email!.trim(), password: body.password!.trim() },\n subPath === \"/api/register/nested\",\n ),\n );\n }\n\n const sessionSyncMatch = subPath.match(/^\\/api\\/sessions\\/([^/]+)\\/sync$/);\n if (sessionSyncMatch && method === \"POST\") {\n const sessionId = decodeURIComponent(sessionSyncMatch[1]);\n let body: Record<string, unknown> = {};\n try {\n const text = await request.text();\n if (text.trim()) {\n body = JSON.parse(text) as Record<string, unknown>;\n }\n } catch {\n body = {};\n }\n return json({\n ok: true,\n sessionId,\n serverTime: Date.now(),\n echo: body,\n });\n }\n\n if (subPath === \"/api/register/echo\" && method === \"GET\") {\n const email = url.searchParams.get(\"email\") ?? \"\";\n const password = url.searchParams.get(\"password\") ?? \"\";\n if (!email.trim() || !password.trim()) {\n return json(\n {\n messages: [\n {\n content: \"email and password query params are required\",\n status: \"error\",\n },\n ],\n },\n { status: 400 },\n );\n }\n return json({\n method: \"GET\",\n query: { email, password },\n email,\n note: \"sonic-submit method=\\\"get\\\" appends form fields to the endpoint URL\",\n });\n }\n\n if (method !== \"GET\") {\n return json({ error: \"Method not allowed\" }, { status: 405 });\n }\n\n const userMatch = subPath.match(/^\\/api\\/users\\/(\\d+)$/);\n if (userMatch) {\n const id = parseInt(userMatch[1], 10);\n const user =\n DOCS_REQRES_USERS.find((u) => u.id === id) ?? DOCS_REQRES_USERS[0];\n const body: ReqresUserResponse = { data: { ...user, id } };\n return json(body);\n }\n\n if (subPath === \"/api/users\") {\n return json(paginateUsers(url));\n }\n\n if (subPath === \"/api/space-cats\") {\n return json({\n data: DOCS_SPACE_CAT_MISSIONS,\n total: DOCS_SPACE_CAT_MISSIONS.length,\n });\n }\n\n if (subPath === \"/api/coffee-bags\") {\n const roast = url.searchParams.get(\"roast\");\n const data = filterCoffeeBags(DOCS_COFFEE_BAGS, roast);\n return json({ data, total: data.length });\n }\n\n if (subPath === \"/api/market-order\") {\n return json({\n data: DOCS_MARKET_ORDER_LINES,\n total: DOCS_MARKET_ORDER_LINES.length,\n });\n }\n\n if (subPath === \"/geo/communes\" || subPath.startsWith(\"/geo/communes\")) {\n return json(geoCommunes(url), {\n headers: { \"X-Fetched-At\": new Date().toISOString() },\n });\n }\n\n const jokeMatch = subPath.match(/^\\/jokes\\/joke\\/([^/]+)$/);\n if (jokeMatch) {\n return json(buildJokeApiResponse(url));\n }\n\n return json({ error: \"Not found\", path: subPath }, { status: 404 });\n}\n", "/// <reference lib=\"webworker\" />\nimport { handleDocsMockApiRequest} from \"./router\";\n\ndeclare const self: ServiceWorkerGlobalScope;\n\nself.addEventListener(\"install\", (event) => {\n event.waitUntil(self.skipWaiting());\n});\n\nself.addEventListener(\"activate\", (event) => {\n event.waitUntil(self.clients.claim());\n});\n\nself.addEventListener(\"fetch\", (event) => {\n const {request} = event;\n event.respondWith(\n (async () => {\n const mocked = await handleDocsMockApiRequest(request);\n if (mocked) return mocked;\n return fetch(request);\n })(),\n );\n});\n"],
5
- "mappings": "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",
6
- "names": ["json", "text"]
7
- }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,5 +0,0 @@
1
- <svg width="66" height="66" viewBox="0 0 66 66" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M33 62C49.0163 62 62 49.0163 62 33C62 16.9837 49.0163 4 33 4C16.9837 4 4 16.9837 4 33C4 49.0163 16.9837 62 33 62Z" fill="black"/>
3
- <path d="M33 0C14.77 0 0 14.77 0 33C0 51.23 14.77 66 33 66C51.22 65.98 65.98 51.22 66 33.01C66 14.78 51.23 0.01 33 0ZM33 64.5C15.6 64.5 1.5 50.4 1.5 33C1.5 15.6 15.6 1.5 33 1.5C50.39 1.52 64.49 15.61 64.5 33.01C64.5 50.4 50.4 64.5 33 64.5Z" fill="black"/>
4
- <path d="M33.2499 62.03C33.8799 59.24 34.26 56.17 34.39 53.08C34.57 52.78 34.9099 52.6 35.2599 52.64H35.39C35.48 52.64 35.5799 52.64 35.6899 52.64H35.7599C35.7599 52.64 35.7999 52.64 35.8299 52.64C36.2499 52.62 36.6799 52.58 36.9099 52.56C36.9399 52.56 36.9599 52.56 36.9799 52.56C37.0099 52.56 37.0299 52.56 37.0499 52.56H37.0899L37.2099 51.93H37.4799L37.5799 52.4L37.6899 52.49H39.2699L39.39 52.38L39.5099 51.93H39.7899L39.8399 52.21L39.9999 52.29L45.2099 51.86L46.2799 51.29C46.2799 51.29 46.2799 50.85 46.2399 50.25V50.18C46.2399 50.18 46.2399 50.13 46.2399 50.11C46.2099 49.62 46.1399 49.13 46.0399 48.65C45.7899 47.45 45.29 46 42.2 41.58C39.11 37.16 38.04 35.52 35.89 27.63C35.85 27.48 35.8199 27.35 35.7899 27.2C35.1399 24.53 34.6899 22.95 34.5199 22.38V10.89C34.4999 9.60996 34.3999 8.33996 34.2099 7.07996C34.0499 5.97996 33.6099 4.89996 33.3499 3.95996H32.6299C32.3599 4.89996 31.9299 5.97996 31.7699 7.06996C31.5799 8.33996 31.4799 9.60996 31.4599 10.89V22.38C31.2899 22.95 30.8299 24.52 30.1899 27.2C30.1599 27.35 30.1199 27.49 30.0899 27.63C27.9499 35.52 26.8699 37.16 23.7799 41.58C20.6899 46 20.1899 47.45 19.9399 48.65C19.8399 49.13 19.7799 49.62 19.7399 50.11C19.7399 50.13 19.7399 50.16 19.7399 50.18V50.25C19.6999 50.85 19.7 51.29 19.7 51.29L20.7699 51.86L25.9799 52.29L26.14 52.21L26.1899 51.93H26.4799L26.5999 52.38L26.7299 52.49H28.2999L28.4099 52.4L28.5099 51.93H28.7699L28.89 52.56H28.9399C28.9399 52.56 28.9799 52.56 29.0099 52.56C29.0299 52.56 29.0499 52.56 29.0799 52.56C29.3099 52.58 29.7499 52.63 30.1599 52.64C30.1799 52.64 30.2099 52.64 30.2299 52.64H30.2999C30.4099 52.64 30.5099 52.64 30.5999 52.64H30.7299C31.0799 52.6 31.4299 52.77 31.6099 53.08C31.7299 56.17 32.1099 59.24 32.7399 62.03H33.2499Z" fill="#FF0A0A"/>
5
- </svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="222.442" height="47.558" viewBox="0 0 222.442 47.558"><g transform="translate(-51.885 -25)"><path d="M11.045.384A9.984,9.984,0,0,1,5.862-.9,8.546,8.546,0,0,1,2.538-4.474,11.519,11.519,0,0,1,1.381-9.741a11.462,11.462,0,0,1,1.17-5.3,8.651,8.651,0,0,1,3.33-3.567,9.872,9.872,0,0,1,5.139-1.285,10.228,10.228,0,0,1,4.5.933,7.522,7.522,0,0,1,3.055,2.621,7.7,7.7,0,0,1,1.24,3.963H14.676a4.017,4.017,0,0,0-1.144-2.371,3.328,3.328,0,0,0-2.423-.9,3.647,3.647,0,0,0-2.205.684A4.416,4.416,0,0,0,7.44-12.976a8.472,8.472,0,0,0-.524,3.158,8.75,8.75,0,0,0,.518,3.2A4.393,4.393,0,0,0,8.9-4.615a3.651,3.651,0,0,0,2.212.69,3.63,3.63,0,0,0,1.681-.384,3.279,3.279,0,0,0,1.24-1.119A4.261,4.261,0,0,0,14.676-7.2h5.139a8.049,8.049,0,0,1-1.221,3.957A7.443,7.443,0,0,1,15.584-.575,10.038,10.038,0,0,1,11.045.384Zm19.7,0A9.985,9.985,0,0,1,25.6-.888a8.6,8.6,0,0,1-3.343-3.554,11.411,11.411,0,0,1-1.176-5.3,11.469,11.469,0,0,1,1.176-5.325A8.6,8.6,0,0,1,25.6-18.62a9.985,9.985,0,0,1,5.146-1.272A9.985,9.985,0,0,1,35.9-18.62a8.6,8.6,0,0,1,3.343,3.554,11.469,11.469,0,0,1,1.176,5.325,11.411,11.411,0,0,1-1.176,5.3A8.6,8.6,0,0,1,35.9-.888,9.985,9.985,0,0,1,30.75.384Zm.026-4.219a3.367,3.367,0,0,0,2.263-.773,4.757,4.757,0,0,0,1.374-2.116A9.279,9.279,0,0,0,34.88-9.78a9.279,9.279,0,0,0-.467-3.055,4.8,4.8,0,0,0-1.374-2.122,3.35,3.35,0,0,0-2.263-.78,3.443,3.443,0,0,0-2.295.78,4.726,4.726,0,0,0-1.393,2.122,9.279,9.279,0,0,0-.467,3.055,9.279,9.279,0,0,0,.467,3.055,4.681,4.681,0,0,0,1.393,2.116A3.461,3.461,0,0,0,30.776-3.835Zm17.2-7.517V0H42.529V-19.636h5.19v3.464h.23a5.512,5.512,0,0,1,2.186-2.717,6.647,6.647,0,0,1,3.72-1A6.906,6.906,0,0,1,57.423-19a6.091,6.091,0,0,1,2.365,2.55,8.589,8.589,0,0,1,.844,3.944V0H55.185V-11.531a3.968,3.968,0,0,0-.92-2.819,3.315,3.315,0,0,0-2.57-1.016,3.87,3.87,0,0,0-1.937.473,3.253,3.253,0,0,0-1.3,1.374A4.769,4.769,0,0,0,47.975-11.352ZM72.346.384A9.985,9.985,0,0,1,67.162-.9a8.546,8.546,0,0,1-3.324-3.573,11.519,11.519,0,0,1-1.157-5.267,11.462,11.462,0,0,1,1.17-5.3,8.651,8.651,0,0,1,3.33-3.567,9.872,9.872,0,0,1,5.139-1.285,10.228,10.228,0,0,1,4.5.933,7.522,7.522,0,0,1,3.055,2.621,7.7,7.7,0,0,1,1.24,3.963H75.977a4.017,4.017,0,0,0-1.144-2.371,3.328,3.328,0,0,0-2.423-.9,3.647,3.647,0,0,0-2.205.684,4.416,4.416,0,0,0-1.464,1.988,8.472,8.472,0,0,0-.524,3.158,8.75,8.75,0,0,0,.518,3.2A4.393,4.393,0,0,0,70.2-4.615a3.651,3.651,0,0,0,2.212.69,3.63,3.63,0,0,0,1.681-.384,3.279,3.279,0,0,0,1.24-1.119A4.261,4.261,0,0,0,75.977-7.2h5.139A8.049,8.049,0,0,1,79.9-3.241,7.443,7.443,0,0,1,76.885-.575,10.038,10.038,0,0,1,72.346.384Zm19.7,0A9.985,9.985,0,0,1,86.905-.888a8.6,8.6,0,0,1-3.343-3.554,11.411,11.411,0,0,1-1.176-5.3,11.469,11.469,0,0,1,1.176-5.325,8.6,8.6,0,0,1,3.343-3.554,9.985,9.985,0,0,1,5.146-1.272A9.985,9.985,0,0,1,97.2-18.62a8.6,8.6,0,0,1,3.343,3.554,11.469,11.469,0,0,1,1.176,5.325,11.411,11.411,0,0,1-1.176,5.3A8.6,8.6,0,0,1,97.2-.888,9.985,9.985,0,0,1,92.051.384Zm.026-4.219a3.367,3.367,0,0,0,2.263-.773,4.757,4.757,0,0,0,1.374-2.116A9.279,9.279,0,0,0,96.18-9.78a9.279,9.279,0,0,0-.467-3.055,4.8,4.8,0,0,0-1.374-2.122,3.35,3.35,0,0,0-2.263-.78,3.443,3.443,0,0,0-2.295.78,4.726,4.726,0,0,0-1.393,2.122,9.278,9.278,0,0,0-.467,3.055,9.278,9.278,0,0,0,.467,3.055,4.681,4.681,0,0,0,1.393,2.116A3.461,3.461,0,0,0,92.077-3.835ZM103.83,0V-19.636h5.28v3.426h.2a5.1,5.1,0,0,1,1.8-2.768,4.76,4.76,0,0,1,2.915-.94,8.238,8.238,0,0,1,.882.051,6.212,6.212,0,0,1,.831.141v4.832a7.115,7.115,0,0,0-1.061-.2,9.532,9.532,0,0,0-1.24-.089,4.363,4.363,0,0,0-2.141.518,3.847,3.847,0,0,0-1.483,1.438,4.1,4.1,0,0,0-.543,2.122V0Zm19.59.32a7.351,7.351,0,0,1-4.046-1.157,7.876,7.876,0,0,1-2.864-3.413,13.041,13.041,0,0,1-1.055-5.542,12.858,12.858,0,0,1,1.087-5.619,7.829,7.829,0,0,1,2.9-3.362,7.4,7.4,0,0,1,3.969-1.119,6.1,6.1,0,0,1,2.755.556,5.484,5.484,0,0,1,1.79,1.381,7.22,7.22,0,0,1,1.042,1.617h.166v-9.844h5.433V0h-5.369V-3.145h-.23a7,7,0,0,1-1.08,1.617,5.443,5.443,0,0,1-1.8,1.323A6.249,6.249,0,0,1,123.42.32Zm1.726-4.334a3.487,3.487,0,0,0,2.231-.722,4.56,4.56,0,0,0,1.406-2.026,8.637,8.637,0,0,0,.492-3.055,8.632,8.632,0,0,0-.486-3.043,4.367,4.367,0,0,0-1.406-1.994,3.577,3.577,0,0,0-2.237-.7,3.532,3.532,0,0,0-2.263.729,4.456,4.456,0,0,0-1.393,2.02,8.677,8.677,0,0,0-.473,2.991,8.776,8.776,0,0,0,.479,3.023,4.56,4.56,0,0,0,1.393,2.045A3.485,3.485,0,0,0,125.146-4.014Zm21.418,4.4a10.412,10.412,0,0,1-5.21-1.234A8.345,8.345,0,0,1,138-4.353a11.538,11.538,0,0,1-1.176-5.376A11.479,11.479,0,0,1,138-15.047a8.681,8.681,0,0,1,3.317-3.567,9.628,9.628,0,0,1,5.031-1.278,10.393,10.393,0,0,1,3.624.62,8.169,8.169,0,0,1,2.94,1.86,8.473,8.473,0,0,1,1.962,3.113,12.434,12.434,0,0,1,.7,4.379v1.5H139V-11.8H150.45a4.172,4.172,0,0,0-.511-2.084,3.721,3.721,0,0,0-1.413-1.425,4.122,4.122,0,0,0-2.09-.518,4.193,4.193,0,0,0-2.192.569,4.08,4.08,0,0,0-1.489,1.521,4.333,4.333,0,0,0-.55,2.116v3.209a5.462,5.462,0,0,0,.543,2.518,3.889,3.889,0,0,0,1.54,1.636,4.653,4.653,0,0,0,2.365.575,5.15,5.15,0,0,0,1.662-.256,3.449,3.449,0,0,0,1.291-.767,3.335,3.335,0,0,0,.818-1.253l5.037.332A6.866,6.866,0,0,1,153.9-2.461a7.868,7.868,0,0,1-3.043,2.1A11.435,11.435,0,0,1,146.563.384Zm14.31-.051a2.954,2.954,0,0,1-2.167-.9,2.954,2.954,0,0,1-.9-2.167,2.919,2.919,0,0,1,.9-2.148,2.965,2.965,0,0,1,2.167-.895,2.985,2.985,0,0,1,2.148.895,2.889,2.889,0,0,1,.92,2.148,2.884,2.884,0,0,1-.428,1.54,3.286,3.286,0,0,1-1.119,1.112A2.9,2.9,0,0,1,160.873.332Z" transform="translate(110.385 62)" fill="#2a282d"/><g transform="translate(51.885 25)"><g transform="translate(2.6 2.209)"><path d="M52.661,65.423h-1.4l-.091-.468h-.208l-.078.351-.078.065H49.646l-.065-.169-.091-.338h-.221v.208l-.118.065-3.859-.326L44.5,64.4v-.871a7.436,7.436,0,0,1,.156-1.079c.182-.883.546-1.962,2.833-5.224s3.08-4.481,4.665-10.3l.078-.324c.468-1.975.806-3.132.936-3.547V34.524a25.625,25.625,0,0,1,.312-2.82h0c.143-.923.312-1.754.468-2.4a21.623,21.623,0,0,0,.195,43.218,41.171,41.171,0,0,1-.845-6.8.668.668,0,0,0-.637-.3Z" transform="translate(-33.181 -29.3)" fill="#2a282d"/><path d="M34.658,65.423h1.4l.091-.468h.209l.078.351.078.065h1.157l.065-.169.091-.338h.221v.208l.118.065,3.857-.326.793-.416v-.871a7.436,7.436,0,0,0-.156-1.079c-.182-.883-.546-1.962-2.833-5.224s-3.08-4.481-4.665-10.3l-.078-.324c-.468-1.975-.806-3.132-.936-3.547V34.524a25.63,25.63,0,0,0-.312-2.82h0c-.143-.923-.312-1.754-.468-2.4a21.623,21.623,0,0,1-.195,43.218,41.171,41.171,0,0,0,.845-6.8.668.668,0,0,1,.637-.3Z" transform="translate(-11.738 -29.3)" fill="#2a282d"/></g><path d="M23.779,1.169a22.61,22.61,0,1,0,22.61,22.61,22.61,22.61,0,0,0-22.61-22.61m0-1.169A23.779,23.779,0,1,1,0,23.779,23.779,23.779,0,0,1,23.779,0Z" transform="translate(0 0)" fill="#2a282d"/></g></g></svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/docs/index.html DELETED
@@ -1,93 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="fr">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <link rel="icon" type="image/svg+xml" href="./svg/favicon.svg" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <meta name="robots" content="noindex, nofollow" />
8
- <title>Concorde - A supersonic design system</title>
9
- <script src="https://cdn.jsdelivr.net/npm/fuzzysort@2.0.1/fuzzysort.min.js"></script>
10
- <!-- <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
11
- -->
12
- <script src="https://cdn.jsdelivr.net/npm/marked@13.0.3"></script>
13
- <script type="module" crossorigin src="./assets/index-FmK4JaIM.js"></script>
14
- <link rel="stylesheet" crossorigin href="./assets/index-BZiZXMU-.css">
15
- </head>
16
- <body class="px-6 lg:px-20">
17
- <sonic-theme
18
- customIconLibraryPath="https://cdn.supersoniks.com/concorde/icons/fontawesome/v6/$prefix/$name.svg"
19
- customIconDefaultPrefix="regular"
20
- markdownsURL="src"
21
- >
22
- <sonic-docs-header></sonic-docs-header>
23
- <sonic-router>
24
- <template data-route="^((?!.md).)*$">
25
- <div class="col-span-full">
26
- <div
27
- class="font-headings text-4xl leading-none md:text-5xl lg:text-7xl xl:text-8xl max-w-[29ch] lg:max-w-[19ch] mt-9 mb-10 text-neutral-900"
28
- >
29
- webcomponents for
30
- <div class="animated-text font-medium">
31
- &nbsp;
32
- <span> scoped </span>
33
- <span> consistent </span>
34
- <span> shareable </span>
35
- </div>
36
- user interfaces
37
- </div>
38
- <div class="text-base mt-6 relative z-2 mb-40">
39
- <div class="inline-flex items-center gap-3 text-lg leading-none">
40
- <sonic-button
41
- size="2xl"
42
- variant="outline"
43
- type="primary"
44
- href="#docs/_getting-started/start.md/start"
45
- >
46
- <sonic-icon
47
- name="airplane"
48
- library="iconoir"
49
- class="rotate-90 inline-block mr-1"
50
- ></sonic-icon
51
- ><span class="font-bold">Get Started</span>
52
- </sonic-button>
53
- <sonic-code language="bash" inline noEdit>
54
- <template>
55
- npx @supersoniks/create-concorde-ts-starter "MyProject"
56
- </template></sonic-code
57
- >
58
- </div>
59
- </div>
60
- <img
61
- src="./img/concorde_seuil.png.webp"
62
- alt=""
63
- loading="lazy"
64
- class="w-full block dark:hidden"
65
- />
66
- <img
67
- src="./img/concorde_seuil_invert.png"
68
- alt=""
69
- loading="lazy"
70
- class="w-full hidden dark:block dark:opacity-60"
71
- />
72
- </div>
73
- </template>
74
- </sonic-router>
75
-
76
- <div
77
- class="[[data-home]_&]:hidden grid grid-cols-[minmax(10rem,15rem)_minmax(0,1fr)] gap-8"
78
- >
79
- <div>
80
- <docs-navigation
81
- class="sticky top-[4.2rem] max-h-[calc(100vh_-_4.2rem)] block overflow-auto py-4 custom-scroll"
82
- ></docs-navigation>
83
- </div>
84
- <div class="min-h-[100vh] pt-3">
85
- <docs-page
86
- noShadowDom
87
- class="prose lg:prose-lg max-w-prose block py-8 prose-li:my-[.2em] leading-[1.5] lg:leading-[1.5] prose-h1:font-normal prose-h1:text-[4.2em]"
88
- ></docs-page>
89
- </div>
90
- </div>
91
- </sonic-theme>
92
- </body>
93
- </html>