@supersoniks/concorde 4.6.0 → 4.7.0
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/.gitlab-ci.yml +23 -0
- package/README.md +106 -55
- package/ai/AGENTS.md +52 -0
- package/ai/README.md +30 -0
- package/ai/cursor/rules/concorde-menu.mdc +15 -0
- package/ai/cursor/rules/concorde-scope.mdc +14 -0
- package/ai/cursor/rules/concorde-theme.mdc +13 -0
- package/ai/cursor/rules/concorde.mdc +49 -0
- package/ai/jetbrains/rules/concorde.md +39 -0
- package/ai/skills/concorde/SKILL.md +220 -0
- package/ai/skills/concorde-get-set-dp/SKILL.md +194 -0
- package/ai/skills/concorde-imports/SKILL.md +78 -0
- package/ai/skills/concorde-menu/SKILL.md +74 -0
- package/ai/skills/concorde-scope/SKILL.md +70 -0
- package/ai/skills/concorde-theme/SKILL.md +46 -0
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +127 -127
- package/concorde-core.es.js +1435 -1364
- package/dist/altcha-widget.js +2662 -0
- package/dist/concorde-core.bundle.js +127 -127
- package/dist/concorde-core.es.js +1435 -1364
- package/dist/docs-mock-api-sw.js +589 -0
- package/dist/docs-mock-api-sw.js.map +7 -0
- package/docs/altcha-widget.js +2662 -0
- package/docs/assets/index-D9pxaQYK.js +7508 -0
- package/docs/assets/index-t0-i22oI.css +1 -0
- package/docs/docs-mock-api-sw.js +589 -0
- package/docs/docs-mock-api-sw.js.map +7 -0
- package/docs/index.html +2 -2
- package/docs/src/core/components/functional/fetch/fetch.md +13 -11
- package/docs/src/core/components/functional/if/if.md +4 -11
- package/docs/src/core/components/functional/list/list.md +60 -194
- package/docs/src/core/components/functional/queue/queue.md +70 -85
- package/docs/src/core/components/functional/router/router.md +62 -97
- package/docs/src/core/components/functional/states/states.md +2 -2
- package/docs/src/core/components/functional/submit/submit.md +86 -55
- package/docs/src/core/components/ui/captcha/captcha.md +2 -2
- package/docs/src/core/components/ui/card/card.md +1 -1
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +5 -32
- package/docs/src/core/components/ui/form/input/input.md +5 -30
- package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +6 -4
- package/docs/src/core/components/ui/form/radio/radio.md +5 -32
- package/docs/src/core/components/ui/form/select/select.md +5 -31
- package/docs/src/core/components/ui/form/switch/switch.md +5 -32
- package/docs/src/core/components/ui/loader/loader.md +1 -13
- package/docs/src/core/components/ui/table/table.md +3 -3
- package/docs/src/docs/_core-concept/dataFlow.md +73 -0
- package/docs/src/docs/_core-concept/subscriber.md +9 -10
- package/docs/src/docs/_decorators/ancestor-attribute.md +4 -3
- package/docs/src/docs/_decorators/auto-subscribe.md +19 -16
- package/docs/src/docs/_decorators/bind.md +20 -17
- package/docs/src/docs/_decorators/get.md +7 -4
- package/docs/src/docs/_decorators/handle.md +171 -0
- package/docs/src/docs/_decorators/on-assign.md +99 -73
- package/docs/src/docs/_decorators/publish.md +2 -1
- package/docs/src/docs/_decorators/subscribe.md +70 -9
- package/docs/src/docs/_decorators/wait-for-ancestors.md +13 -10
- package/docs/src/docs/_directives/sub.md +91 -0
- package/docs/src/docs/_getting-started/ai-agents.md +56 -0
- package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
- package/docs/src/docs/_getting-started/concorde-outside.md +13 -123
- package/docs/src/docs/_getting-started/create-a-component.md +2 -0
- package/docs/src/docs/_getting-started/my-first-component.md +236 -0
- package/docs/src/docs/_getting-started/my-first-subscriber.md +29 -83
- package/docs/src/docs/_getting-started/pubsub.md +21 -134
- package/docs/src/docs/_getting-started/start.md +26 -18
- package/docs/src/docs/_misc/api-configuration.md +79 -0
- package/docs/src/docs/_misc/dataProviderKey.md +38 -5
- package/docs/src/docs/_misc/docs-mock-api.md +60 -0
- package/docs/src/docs/_misc/endpoint.md +2 -1
- package/docs/src/docs/_misc/html-integration.md +13 -0
- package/docs/src/docs/search/docs-search.json +4163 -873
- package/docs/src/tsconfig.json +380 -317
- package/gitlab/job_tests.sh +55 -0
- package/package.json +34 -3
- package/public/altcha-widget.js +2662 -0
- package/public/docs-mock-api-sw.js +589 -0
- package/public/docs-mock-api-sw.js.map +7 -0
- package/scripts/ai-init.mjs +167 -0
- package/scripts/docs-mock-api-vite-plugin.ts +116 -0
- package/scripts/docs-open-in-editor-plugin.ts +130 -0
- package/scripts/pre-publish.mjs +2 -1
- package/src/core/components/functional/example/example.ts +1 -1
- package/src/core/components/functional/fetch/fetch.md +13 -11
- package/src/core/components/functional/if/if.md +4 -11
- package/src/core/components/functional/list/list.demo.ts +4 -4
- package/src/core/components/functional/list/list.md +60 -194
- package/src/core/components/functional/list/list.ts +8 -7
- package/src/core/components/functional/queue/queue.demo.ts +1 -1
- package/src/core/components/functional/queue/queue.md +70 -85
- package/src/core/components/functional/queue/queue.ts +4 -4
- package/src/core/components/functional/router/router.md +62 -97
- package/src/core/components/functional/router/router.ts +1 -1
- package/src/core/components/functional/states/states.md +2 -2
- package/src/core/components/functional/submit/submit.md +86 -55
- package/src/core/components/functional/submit/submit.ts +10 -3
- package/src/core/components/ui/captcha/captcha.md +2 -2
- package/src/core/components/ui/card/card.md +1 -1
- package/src/core/components/ui/form/checkbox/checkbox.md +5 -32
- package/src/core/components/ui/form/input/input.md +5 -30
- package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +6 -4
- package/src/core/components/ui/form/radio/radio.md +5 -32
- package/src/core/components/ui/form/select/select.md +5 -31
- package/src/core/components/ui/form/switch/switch.md +5 -32
- package/src/core/components/ui/loader/loader.md +1 -13
- package/src/core/components/ui/table/table.md +3 -3
- package/src/core/directives/DataProvider.sub.spec.ts +96 -0
- package/src/core/directives/DataProvider.ts +109 -40
- package/src/core/utils/PublisherProxy.ts +33 -18
- package/src/core/utils/dataProviderKey.ts +23 -0
- package/src/core/utils/publisherPathKey.spec.ts +58 -0
- package/src/docs/_core-concept/dataFlow.md +73 -0
- package/src/docs/_core-concept/subscriber.md +9 -10
- package/src/docs/_decorators/ancestor-attribute.md +4 -3
- package/src/docs/_decorators/auto-subscribe.md +19 -16
- package/src/docs/_decorators/bind.md +19 -16
- package/src/docs/_decorators/get.md +7 -4
- package/src/docs/_decorators/handle.md +15 -13
- package/src/docs/_decorators/on-assign.md +53 -53
- package/src/docs/_decorators/publish.md +2 -1
- package/src/docs/_decorators/subscribe.md +70 -9
- package/src/docs/_decorators/wait-for-ancestors.md +13 -10
- package/src/docs/_directives/sub.md +91 -0
- package/src/docs/_getting-started/ai-agents.md +56 -0
- package/src/docs/_getting-started/concorde-manual-install.md +133 -0
- package/src/docs/_getting-started/concorde-outside.md +13 -123
- package/src/docs/_getting-started/create-a-component.md +2 -0
- package/src/docs/_getting-started/my-first-component.md +236 -0
- package/src/docs/_getting-started/my-first-subscriber.md +29 -83
- package/src/docs/_getting-started/pubsub.md +21 -134
- package/src/docs/_getting-started/start.md +26 -18
- package/src/docs/_misc/api-configuration.md +79 -0
- package/src/docs/_misc/dataProviderKey.md +34 -1
- package/src/docs/_misc/docs-mock-api.md +60 -0
- package/src/docs/_misc/endpoint.md +2 -1
- package/src/docs/_misc/html-integration.md +13 -0
- package/src/docs/code.ts +58 -12
- package/src/docs/components/docs-demo-sources.ts +397 -0
- package/src/docs/components/docs-lit-demo-raw.ts +28 -0
- package/src/docs/components/docs-lit-demo.ts +166 -0
- package/src/docs/components/docs-source-link.ts +72 -0
- package/src/docs/docs-location.ts +54 -0
- package/src/docs/docs.ts +12 -0
- package/src/docs/example/decorators-demo-bind-demos.ts +41 -46
- package/src/docs/example/decorators-demo-geo.ts +16 -11
- package/src/docs/example/decorators-demo-init.ts +2 -228
- package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +54 -14
- package/src/docs/example/decorators-demo.ts +71 -70
- package/src/docs/example/docs-api-config-demos.ts +234 -0
- package/src/docs/example/docs-joke-demos.ts +297 -0
- package/src/docs/example/docs-list-demos.ts +179 -0
- package/src/docs/example/docs-provider-keys.ts +315 -0
- package/src/docs/example/docs-queue-demos.ts +114 -0
- package/src/docs/example/docs-router-demos.ts +89 -0
- package/src/docs/example/docs-submit-demos.ts +455 -0
- package/src/docs/example/docs-toggle-demos.ts +73 -0
- package/src/docs/example/docs-user-two-scopes.ts +37 -0
- package/src/docs/example/docs-users-list.ts +71 -0
- package/src/docs/example/users.ts +41 -24
- package/src/docs/mock-api/api-config-mock.ts +152 -0
- package/src/docs/mock-api/fixtures.ts +377 -0
- package/src/docs/mock-api/register.ts +25 -0
- package/src/docs/mock-api/router.ts +234 -0
- package/src/docs/mock-api/service-worker.ts +23 -0
- package/src/docs/mock-api/urls.ts +11 -0
- package/src/docs/navigation/navigation.ts +39 -7
- package/src/docs/search/docs-search.json +4021 -936
- package/src/docs/search/markdown-renderer.ts +7 -3
- package/src/docs/search/page.ts +11 -14
- package/src/docs/search/sonic-code-markdown.spec.ts +29 -0
- package/src/docs/search/sonic-code-markdown.ts +28 -0
- package/src/docs.ts +4 -0
- package/src/tsconfig.json +87 -0
- package/src/tsconfig.tsbuildinfo +1 -1
- package/vite.config.mts +8 -0
- package/docs/assets/index-CaysOMFz.js +0 -5046
- package/docs/assets/index-D8mGoXzF.css +0 -1
- package/docs/src/docs/_misc/templates-demo.md +0 -19
- package/src/docs/_misc/templates-demo.md +0 -19
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { handleApiConfigMockRequest } from "./api-config-mock";
|
|
2
|
+
import {
|
|
3
|
+
DOCS_GEO_COMMUNES,
|
|
4
|
+
DOCS_REQRES_USERS,
|
|
5
|
+
buildJokeApiResponse,
|
|
6
|
+
filterDocsUsers,
|
|
7
|
+
type GeoCommuneRow,
|
|
8
|
+
type ReqresUserResponse,
|
|
9
|
+
type ReqresUsersListResponse,
|
|
10
|
+
} from "./fixtures";
|
|
11
|
+
|
|
12
|
+
export const DOCS_MOCK_API_PREFIX = "/docs-mock-api";
|
|
13
|
+
|
|
14
|
+
function json(
|
|
15
|
+
body: unknown,
|
|
16
|
+
init: ResponseInit & { delayMs?: number } = {},
|
|
17
|
+
): Promise<Response> {
|
|
18
|
+
const { delayMs = 0, ...responseInit } = init;
|
|
19
|
+
const headers = new Headers(responseInit.headers);
|
|
20
|
+
headers.set("Content-Type", "application/json; charset=utf-8");
|
|
21
|
+
headers.set("Access-Control-Allow-Origin", "*");
|
|
22
|
+
headers.set("X-Docs-Mock-Api", "concorde");
|
|
23
|
+
|
|
24
|
+
const build = () =>
|
|
25
|
+
new Response(JSON.stringify(body), { ...responseInit, headers });
|
|
26
|
+
|
|
27
|
+
if (delayMs <= 0) return Promise.resolve(build());
|
|
28
|
+
return new Promise((resolve) =>
|
|
29
|
+
setTimeout(() => resolve(build()), delayMs),
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Liste utilisateurs type ReqRes.
|
|
35
|
+
* - `offset` + `per_page` / `limit` : pagination indexée (sonic-queue avec `$offset` / `$limit`)
|
|
36
|
+
* - `page` + `per_page` : numéro de page 1-based (sonic-fetch, ex. `?page=2`)
|
|
37
|
+
* - `q` : recherche sur prénom, nom, email (sonic-queue + `dataFilterProvider`, champ `name="q"`)
|
|
38
|
+
*/
|
|
39
|
+
export function paginateUsers(url: URL): ReqresUsersListResponse {
|
|
40
|
+
const perPage = Math.max(
|
|
41
|
+
1,
|
|
42
|
+
parseInt(
|
|
43
|
+
url.searchParams.get("per_page") ||
|
|
44
|
+
url.searchParams.get("limit") ||
|
|
45
|
+
"6",
|
|
46
|
+
10,
|
|
47
|
+
),
|
|
48
|
+
);
|
|
49
|
+
const pool = filterDocsUsers(DOCS_REQRES_USERS, url.searchParams.get("q"));
|
|
50
|
+
const total = pool.length;
|
|
51
|
+
|
|
52
|
+
let start: number;
|
|
53
|
+
let page: number;
|
|
54
|
+
|
|
55
|
+
if (url.searchParams.has("offset")) {
|
|
56
|
+
start = Math.max(0, parseInt(url.searchParams.get("offset") || "0", 10));
|
|
57
|
+
page = Math.floor(start / perPage) + 1;
|
|
58
|
+
} else {
|
|
59
|
+
page = Math.max(1, parseInt(url.searchParams.get("page") || "1", 10));
|
|
60
|
+
start = (page - 1) * perPage;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const data = pool.slice(start, start + perPage);
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
page,
|
|
67
|
+
per_page: perPage,
|
|
68
|
+
total,
|
|
69
|
+
total_pages: Math.max(1, Math.ceil(total / perPage)),
|
|
70
|
+
data,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async function parseRegisterFields(
|
|
75
|
+
request: Request,
|
|
76
|
+
): Promise<{ email?: string; password?: string }> {
|
|
77
|
+
const contentType = (request.headers.get("content-type") || "").toLowerCase();
|
|
78
|
+
|
|
79
|
+
if (contentType.includes("multipart/form-data")) {
|
|
80
|
+
const fd = await request.formData();
|
|
81
|
+
return {
|
|
82
|
+
email: String(fd.get("email") ?? ""),
|
|
83
|
+
password: String(fd.get("password") ?? ""),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (contentType.includes("application/x-www-form-urlencoded")) {
|
|
88
|
+
const text = await request.text();
|
|
89
|
+
const params = new URLSearchParams(text);
|
|
90
|
+
return {
|
|
91
|
+
email: params.get("email") ?? "",
|
|
92
|
+
password: params.get("password") ?? "",
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const text = await request.text();
|
|
97
|
+
if (!text.trim()) return {};
|
|
98
|
+
|
|
99
|
+
try {
|
|
100
|
+
const parsed = JSON.parse(text) as { email?: unknown; password?: unknown };
|
|
101
|
+
return {
|
|
102
|
+
email: parsed.email != null ? String(parsed.email) : "",
|
|
103
|
+
password: parsed.password != null ? String(parsed.password) : "",
|
|
104
|
+
};
|
|
105
|
+
} catch {
|
|
106
|
+
const params = new URLSearchParams(text);
|
|
107
|
+
if (params.has("email") || params.has("password")) {
|
|
108
|
+
return {
|
|
109
|
+
email: params.get("email") ?? "",
|
|
110
|
+
password: params.get("password") ?? "",
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
return {};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function registerOkBody(
|
|
118
|
+
fields: { email: string; password: string },
|
|
119
|
+
nested = false,
|
|
120
|
+
) {
|
|
121
|
+
const payload = {
|
|
122
|
+
id: 4,
|
|
123
|
+
token: "docs-mock-register-token",
|
|
124
|
+
email: fields.email,
|
|
125
|
+
};
|
|
126
|
+
return nested ? { data: payload } : payload;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function geoCommunes(url: URL): GeoCommuneRow[] {
|
|
130
|
+
const limit = Math.max(
|
|
131
|
+
1,
|
|
132
|
+
parseInt(url.searchParams.get("limit") || "5", 10),
|
|
133
|
+
);
|
|
134
|
+
const offset = Math.max(0, parseInt(url.searchParams.get("offset") || "0", 10));
|
|
135
|
+
return DOCS_GEO_COMMUNES.slice(offset, offset + limit);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Intercepte les requêtes vers /docs-mock-api/* (Service Worker ou middleware Vite).
|
|
140
|
+
*/
|
|
141
|
+
export async function handleDocsMockApiRequest(
|
|
142
|
+
request: Request,
|
|
143
|
+
): Promise<Response | null> {
|
|
144
|
+
const url = new URL(request.url);
|
|
145
|
+
if (!url.pathname.startsWith(DOCS_MOCK_API_PREFIX)) return null;
|
|
146
|
+
|
|
147
|
+
const subPath = url.pathname.slice(DOCS_MOCK_API_PREFIX.length) || "/";
|
|
148
|
+
const method = request.method.toUpperCase();
|
|
149
|
+
|
|
150
|
+
if (subPath === "/health") {
|
|
151
|
+
return json({ ok: true, service: "concorde-docs-mock-api" });
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const apiConfigResponse = handleApiConfigMockRequest(request, subPath, method);
|
|
155
|
+
if (apiConfigResponse) return apiConfigResponse;
|
|
156
|
+
|
|
157
|
+
if (
|
|
158
|
+
(subPath === "/api/register" || subPath === "/api/register/nested") &&
|
|
159
|
+
method === "POST"
|
|
160
|
+
) {
|
|
161
|
+
const body = await parseRegisterFields(request);
|
|
162
|
+
if (!body.email?.trim() || !body.password?.trim()) {
|
|
163
|
+
return json(
|
|
164
|
+
{
|
|
165
|
+
messages: [
|
|
166
|
+
{
|
|
167
|
+
content: "email and password are required",
|
|
168
|
+
status: "error",
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
},
|
|
172
|
+
{ status: 400 },
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
return json(
|
|
176
|
+
registerOkBody(
|
|
177
|
+
{ email: body.email!.trim(), password: body.password!.trim() },
|
|
178
|
+
subPath === "/api/register/nested",
|
|
179
|
+
),
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (subPath === "/api/register/echo" && method === "GET") {
|
|
184
|
+
const email = url.searchParams.get("email") ?? "";
|
|
185
|
+
const password = url.searchParams.get("password") ?? "";
|
|
186
|
+
if (!email.trim() || !password.trim()) {
|
|
187
|
+
return json(
|
|
188
|
+
{
|
|
189
|
+
messages: [
|
|
190
|
+
{
|
|
191
|
+
content: "email and password query params are required",
|
|
192
|
+
status: "error",
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
{ status: 400 },
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
return json({
|
|
200
|
+
method: "GET",
|
|
201
|
+
query: { email, password },
|
|
202
|
+
email,
|
|
203
|
+
note: "sonic-submit method=\"get\" appends form fields to the endpoint URL",
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
if (method !== "GET") {
|
|
208
|
+
return json({ error: "Method not allowed" }, { status: 405 });
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
const userMatch = subPath.match(/^\/api\/users\/(\d+)$/);
|
|
212
|
+
if (userMatch) {
|
|
213
|
+
const id = parseInt(userMatch[1], 10);
|
|
214
|
+
const user =
|
|
215
|
+
DOCS_REQRES_USERS.find((u) => u.id === id) ?? DOCS_REQRES_USERS[0];
|
|
216
|
+
const body: ReqresUserResponse = { data: { ...user, id } };
|
|
217
|
+
return json(body);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (subPath === "/api/users") {
|
|
221
|
+
return json(paginateUsers(url));
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (subPath === "/geo/communes" || subPath.startsWith("/geo/communes")) {
|
|
225
|
+
return json(geoCommunes(url));
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const jokeMatch = subPath.match(/^\/jokes\/joke\/([^/]+)$/);
|
|
229
|
+
if (jokeMatch) {
|
|
230
|
+
return json(buildJokeApiResponse(url));
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return json({ error: "Not found", path: subPath }, { status: 404 });
|
|
234
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference lib="webworker" />
|
|
2
|
+
import { handleDocsMockApiRequest} from "./router";
|
|
3
|
+
|
|
4
|
+
declare const self: ServiceWorkerGlobalScope;
|
|
5
|
+
|
|
6
|
+
self.addEventListener("install", (event) => {
|
|
7
|
+
event.waitUntil(self.skipWaiting());
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
self.addEventListener("activate", (event) => {
|
|
11
|
+
event.waitUntil(self.clients.claim());
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
self.addEventListener("fetch", (event) => {
|
|
15
|
+
const {request} = event;
|
|
16
|
+
event.respondWith(
|
|
17
|
+
(async () => {
|
|
18
|
+
const mocked = await handleDocsMockApiRequest(request);
|
|
19
|
+
if (mocked) return mocked;
|
|
20
|
+
return fetch(request);
|
|
21
|
+
})(),
|
|
22
|
+
);
|
|
23
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Base same-origin pour les démos doc (Service Worker + middleware Vite). */
|
|
2
|
+
export const DOCS_MOCK_API_BASE = "/docs-mock-api";
|
|
3
|
+
|
|
4
|
+
/** Remplace https://reqres.in — chemins `api/users`, `api/users/2`, etc. */
|
|
5
|
+
export const DOCS_MOCK_REQRES_SERVICE = DOCS_MOCK_API_BASE;
|
|
6
|
+
|
|
7
|
+
/** Remplace https://geo.api.gouv.fr/ — chemins `communes?…`. */
|
|
8
|
+
export const DOCS_MOCK_GEO_SERVICE = `${DOCS_MOCK_API_BASE}/geo/`;
|
|
9
|
+
|
|
10
|
+
/** Remplace https://v2.jokeapi.dev — chemins `joke/Any?…`. */
|
|
11
|
+
export const DOCS_MOCK_JOKES_SERVICE = `${DOCS_MOCK_API_BASE}/jokes`;
|
|
@@ -11,22 +11,25 @@ export class DocsNavigation extends LitElement {
|
|
|
11
11
|
href: "#docs/_getting-started/concorde-outside.md/concorde-outside",
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
label: "
|
|
15
|
-
href: "#docs/_getting-started/
|
|
14
|
+
label: "AI agents (skills)",
|
|
15
|
+
href: "#docs/_getting-started/ai-agents.md/ai-agents",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
label: "My first component",
|
|
19
|
+
href: "#docs/_getting-started/my-first-component.md/my-first-component",
|
|
16
20
|
},
|
|
17
21
|
{
|
|
18
22
|
label: "Adding styles",
|
|
19
23
|
href: "#docs/_getting-started/theming.md/theming",
|
|
20
24
|
},
|
|
21
|
-
{ label: "Sharing data", href: "#docs/_getting-started/pubsub.md/pubsub" },
|
|
22
25
|
"Core concept",
|
|
23
26
|
{
|
|
24
27
|
label: "Lit + Tailwind + Vite",
|
|
25
28
|
href: "#docs/_core-concept/overview.md/overview",
|
|
26
29
|
},
|
|
27
30
|
{
|
|
28
|
-
label: "
|
|
29
|
-
href: "#docs/_core-concept/
|
|
31
|
+
label: "Data flow",
|
|
32
|
+
href: "#docs/_core-concept/dataFlow.md/dataFlow",
|
|
30
33
|
},
|
|
31
34
|
"Functionnal components",
|
|
32
35
|
{ label: "Date", href: "#core/components/functional/date/date.md/date" },
|
|
@@ -172,8 +175,37 @@ export class DocsNavigation extends LitElement {
|
|
|
172
175
|
href: "#docs/_misc/endpoint.md/endpoint",
|
|
173
176
|
},
|
|
174
177
|
{
|
|
175
|
-
label: "
|
|
176
|
-
href: "#docs/_misc/
|
|
178
|
+
label: "API configuration",
|
|
179
|
+
href: "#docs/_misc/api-configuration.md/api-configuration",
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
label: "sub()",
|
|
183
|
+
href: "#docs/_directives/sub.md/sub",
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
label: "HTML integration",
|
|
187
|
+
href: "#docs/_misc/html-integration.md/html-integration",
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
label: "Local API demos",
|
|
191
|
+
href: "#docs/_misc/docs-mock-api.md/docs-mock-api",
|
|
192
|
+
},
|
|
193
|
+
"Legacy",
|
|
194
|
+
{
|
|
195
|
+
label: "Manual installation (Vite)",
|
|
196
|
+
href: "#docs/_getting-started/concorde-manual-install.md/concorde-manual-install",
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
label: "Subscriber mixin",
|
|
200
|
+
href: "#docs/_core-concept/subscriber.md/subscriber",
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
label: "Sharing data (Publisher)",
|
|
204
|
+
href: "#docs/_getting-started/pubsub.md/pubsub",
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
label: "My first subscriber",
|
|
208
|
+
href: "#docs/_getting-started/my-first-subscriber.md/my-first-subscriber",
|
|
177
209
|
},
|
|
178
210
|
];
|
|
179
211
|
|