@solidxai/core-ui 0.1.11 → 0.1.12-beta.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 (105) hide show
  1. package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts +1 -1
  2. package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts.map +1 -1
  3. package/dist/adapters/auth/signInWithOAuthAccessCode.js.map +1 -1
  4. package/dist/adapters/auth/signInWithOAuthAccessCode.ts +1 -1
  5. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  6. package/dist/components/auth/SolidLogin.js +10 -6
  7. package/dist/components/auth/SolidLogin.js.map +1 -1
  8. package/dist/components/auth/SolidLogin.tsx +19 -3
  9. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  10. package/dist/components/auth/SolidRegister.js +12 -8
  11. package/dist/components/auth/SolidRegister.js.map +1 -1
  12. package/dist/components/auth/SolidRegister.tsx +19 -3
  13. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  14. package/dist/components/common/GeneralSettings.js +46 -43
  15. package/dist/components/common/GeneralSettings.js.map +1 -1
  16. package/dist/components/common/GeneralSettings.tsx +22 -0
  17. package/dist/components/common/SocialMediaLogin.d.ts +2 -1
  18. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
  19. package/dist/components/common/SocialMediaLogin.js +6 -6
  20. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  21. package/dist/components/common/SocialMediaLogin.tsx +36 -8
  22. package/dist/components/common/SolidLoadingState.d.ts +10 -0
  23. package/dist/components/common/SolidLoadingState.d.ts.map +1 -0
  24. package/dist/components/common/SolidLoadingState.js +8 -0
  25. package/dist/components/common/SolidLoadingState.js.map +1 -0
  26. package/dist/components/common/SolidLoadingState.module.css +56 -0
  27. package/dist/components/common/SolidLoadingState.tsx +28 -0
  28. package/dist/components/core/json/SolidJsonEditor.css +195 -0
  29. package/dist/components/core/json/SolidJsonEditor.d.ts +19 -0
  30. package/dist/components/core/json/SolidJsonEditor.d.ts.map +1 -0
  31. package/dist/components/core/json/SolidJsonEditor.js +109 -0
  32. package/dist/components/core/json/SolidJsonEditor.js.map +1 -0
  33. package/dist/components/core/json/SolidJsonEditor.tsx +150 -0
  34. package/dist/components/core/module/CreateModule.css +70 -2
  35. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  36. package/dist/components/core/module/CreateModule.js +2 -2
  37. package/dist/components/core/module/CreateModule.js.map +1 -1
  38. package/dist/components/core/module/CreateModule.tsx +13 -1
  39. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
  40. package/dist/components/shad-cn-ui/SolidTabs.js +1 -1
  41. package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
  42. package/dist/components/shad-cn-ui/SolidTabs.tsx +1 -0
  43. package/dist/index.d.ts +5 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +5 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/index.ts +16 -0
  48. package/dist/redux/api/datasourceIntrospectionApi.d.ts +203 -0
  49. package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -0
  50. package/dist/redux/api/datasourceIntrospectionApi.js +71 -0
  51. package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -0
  52. package/dist/redux/api/datasourceIntrospectionApi.ts +261 -0
  53. package/dist/redux/api/datasourceManagementApi.d.ts +46 -0
  54. package/dist/redux/api/datasourceManagementApi.d.ts.map +1 -0
  55. package/dist/redux/api/datasourceManagementApi.js +35 -0
  56. package/dist/redux/api/datasourceManagementApi.js.map +1 -0
  57. package/dist/redux/api/datasourceManagementApi.ts +86 -0
  58. package/dist/redux/store/StoreProvider.d.ts.map +1 -1
  59. package/dist/redux/store/StoreProvider.js +4 -2
  60. package/dist/redux/store/StoreProvider.js.map +1 -1
  61. package/dist/redux/store/StoreProvider.tsx +9 -1
  62. package/dist/redux/store/defaultStoreConfig.d.ts +23 -0
  63. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  64. package/dist/redux/store/defaultStoreConfig.js +4 -0
  65. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  66. package/dist/redux/store/defaultStoreConfig.ts +4 -0
  67. package/dist/resources/solid-custom.css +72 -18
  68. package/dist/routes/guards/AdminGuard.d.ts.map +1 -1
  69. package/dist/routes/guards/AdminGuard.js +2 -1
  70. package/dist/routes/guards/AdminGuard.js.map +1 -1
  71. package/dist/routes/guards/AdminGuard.tsx +7 -1
  72. package/dist/routes/guards/AuthGuard.d.ts.map +1 -1
  73. package/dist/routes/guards/AuthGuard.js +2 -1
  74. package/dist/routes/guards/AuthGuard.js.map +1 -1
  75. package/dist/routes/guards/AuthGuard.tsx +8 -2
  76. package/dist/routes/guards/GuestGuard.d.ts.map +1 -1
  77. package/dist/routes/guards/GuestGuard.js +2 -1
  78. package/dist/routes/guards/GuestGuard.js.map +1 -1
  79. package/dist/routes/guards/GuestGuard.tsx +8 -2
  80. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  81. package/dist/routes/pages/admin/core/DashboardPage.js +7 -5
  82. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  83. package/dist/routes/pages/admin/core/DashboardPage.module.css +18 -0
  84. package/dist/routes/pages/admin/core/DashboardPage.tsx +50 -32
  85. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +828 -0
  86. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts +3 -0
  87. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -0
  88. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +947 -0
  89. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -0
  90. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +1719 -0
  91. package/dist/routes/pages/admin/core/DatasourcesPage.css +337 -0
  92. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts +3 -0
  93. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts.map +1 -0
  94. package/dist/routes/pages/admin/core/DatasourcesPage.js +221 -0
  95. package/dist/routes/pages/admin/core/DatasourcesPage.js.map +1 -0
  96. package/dist/routes/pages/admin/core/DatasourcesPage.tsx +540 -0
  97. package/dist/routes/solidRoutes.d.ts.map +1 -1
  98. package/dist/routes/solidRoutes.js +7 -1
  99. package/dist/routes/solidRoutes.js.map +1 -1
  100. package/dist/routes/solidRoutes.tsx +6 -0
  101. package/dist/routes/types.d.ts +1 -1
  102. package/dist/routes/types.d.ts.map +1 -1
  103. package/dist/routes/types.js.map +1 -1
  104. package/dist/routes/types.ts +1 -0
  105. package/package.json +1 -1
@@ -0,0 +1,540 @@
1
+ import { Database, Plus, RefreshCw } from "lucide-react";
2
+ import { useEffect, useState } from "react";
3
+ import { useDispatch } from "react-redux";
4
+ import { showToast } from "../../../../redux/features/toastSlice";
5
+ import {
6
+ type CreateDatasourceManagementPayload,
7
+ type DatasourceManagementRecord,
8
+ useCreateDatasourceMutation,
9
+ useGetDatasourcesQuery,
10
+ } from "../../../../redux/api/datasourceManagementApi";
11
+ import {
12
+ SolidButton,
13
+ SolidDialog,
14
+ SolidDialogBody,
15
+ SolidDialogDescription,
16
+ SolidDialogFooter,
17
+ SolidDialogHeader,
18
+ SolidDialogSeparator,
19
+ SolidDialogTitle,
20
+ SolidInput,
21
+ SolidPanel,
22
+ SolidSelect,
23
+ SolidSpinner,
24
+ SolidSwitch,
25
+ } from "../../../../components/shad-cn-ui";
26
+ import "./DatasourcesPage.css";
27
+
28
+ const providerOptions = [
29
+ { label: "PostgreSQL", value: "postgres" },
30
+ { label: "MySQL", value: "mysql" },
31
+ { label: "MS SQL Server", value: "mssql" },
32
+ ] as const;
33
+
34
+ const defaultFormState: CreateDatasourceManagementPayload = {
35
+ name: "",
36
+ displayName: "",
37
+ type: "postgres",
38
+ host: "",
39
+ port: 5432,
40
+ database: "",
41
+ username: "",
42
+ password: "",
43
+ synchronize: false,
44
+ logging: false,
45
+ ssl: false,
46
+ sslRejectUnauthorized: true,
47
+ poolMax: 20,
48
+ connectionTimeoutMs: 60000,
49
+ idleTimeoutMs: 30000,
50
+ statementTimeoutMs: 60000,
51
+ idleInTxTimeoutMs: 60000,
52
+ retryAttempts: 0,
53
+ retryDelayMs: 0,
54
+ encrypt: false,
55
+ trustServerCertificate: true,
56
+ };
57
+
58
+ function slugifyDatasourceName(value: string) {
59
+ return value
60
+ .toLowerCase()
61
+ .trim()
62
+ .replace(/[^a-z0-9]+/g, "-")
63
+ .replace(/^-+|-+$/g, "")
64
+ .slice(0, 48);
65
+ }
66
+
67
+ function getDefaultPort(type: CreateDatasourceManagementPayload["type"]) {
68
+ if (type === "mysql") return 3306;
69
+ if (type === "mssql") return 1433;
70
+ return 5432;
71
+ }
72
+
73
+ function providerLabel(type: string) {
74
+ return providerOptions.find((option) => option.value === type)?.label || type;
75
+ }
76
+
77
+ function providerTone(type: string) {
78
+ if (type === "postgres") return "sdm-provider-mark--postgres";
79
+ if (type === "mysql") return "sdm-provider-mark--mysql";
80
+ return "sdm-provider-mark--mssql";
81
+ }
82
+
83
+ function providerGlyph(type: string) {
84
+ if (type === "postgres") return "PG";
85
+ if (type === "mysql") return "MY";
86
+ return "MS";
87
+ }
88
+
89
+ function readMutationError(error: any) {
90
+ return (
91
+ error?.data?.message
92
+ || error?.error
93
+ || error?.message
94
+ || "Unable to save the datasource."
95
+ );
96
+ }
97
+
98
+ function sanitizePayload(formState: CreateDatasourceManagementPayload): CreateDatasourceManagementPayload {
99
+ const payload: CreateDatasourceManagementPayload = {
100
+ ...formState,
101
+ name: slugifyDatasourceName(formState.name),
102
+ };
103
+
104
+ if (payload.type === "mssql") {
105
+ delete payload.ssl;
106
+ delete payload.sslRejectUnauthorized;
107
+ delete payload.statementTimeoutMs;
108
+ delete payload.idleInTxTimeoutMs;
109
+ } else {
110
+ delete payload.encrypt;
111
+ delete payload.trustServerCertificate;
112
+ }
113
+
114
+ if (payload.type !== "postgres") {
115
+ delete payload.statementTimeoutMs;
116
+ delete payload.idleInTxTimeoutMs;
117
+ }
118
+
119
+ return payload;
120
+ }
121
+
122
+ function DatasourceProviderMark({ type }: { type: string }) {
123
+ return (
124
+ <div className={`sdm-provider-mark ${providerTone(type)}`}>
125
+ <span>{providerGlyph(type)}</span>
126
+ </div>
127
+ );
128
+ }
129
+
130
+ export function DatasourcesPage() {
131
+ const dispatch = useDispatch();
132
+ const {
133
+ data: datasources = [],
134
+ isLoading,
135
+ isFetching,
136
+ error,
137
+ refetch,
138
+ } = useGetDatasourcesQuery();
139
+ const [createDatasource, { isLoading: isCreating }] = useCreateDatasourceMutation();
140
+ const [dialogOpen, setDialogOpen] = useState(false);
141
+ const [nameTouched, setNameTouched] = useState(false);
142
+ const [formState, setFormState] = useState<CreateDatasourceManagementPayload>(defaultFormState);
143
+
144
+ useEffect(() => {
145
+ if (!dialogOpen) {
146
+ setFormState(defaultFormState);
147
+ setNameTouched(false);
148
+ }
149
+ }, [dialogOpen]);
150
+
151
+ const handleFieldChange = <K extends keyof CreateDatasourceManagementPayload>(
152
+ key: K,
153
+ value: CreateDatasourceManagementPayload[K],
154
+ ) => {
155
+ setFormState((current) => ({
156
+ ...current,
157
+ [key]: value,
158
+ }));
159
+ };
160
+
161
+ const handleDisplayNameChange = (value: string) => {
162
+ setFormState((current) => ({
163
+ ...current,
164
+ displayName: value,
165
+ name: nameTouched ? current.name : slugifyDatasourceName(value),
166
+ }));
167
+ };
168
+
169
+ const handleTypeChange = (value: CreateDatasourceManagementPayload["type"]) => {
170
+ handleFieldChange("type", value);
171
+ handleFieldChange("port", getDefaultPort(value));
172
+ };
173
+
174
+ const handleSubmit = async () => {
175
+ if (!formState.name || !formState.host || !formState.database || !formState.username || !formState.password) {
176
+ dispatch(showToast({
177
+ severity: "warn",
178
+ summary: "Missing details",
179
+ detail: "Fill in the datasource name, host, database, username, and password.",
180
+ }));
181
+ return;
182
+ }
183
+
184
+ try {
185
+ const payload = sanitizePayload(formState);
186
+ await createDatasource(payload).unwrap();
187
+ setDialogOpen(false);
188
+ dispatch(showToast({
189
+ severity: "success",
190
+ summary: "Datasource created",
191
+ detail: `${payload.displayName || payload.name} is now registered in SolidX.`,
192
+ }));
193
+ } catch (mutationError: any) {
194
+ dispatch(showToast({
195
+ severity: "error",
196
+ summary: "Datasource creation failed",
197
+ detail: readMutationError(mutationError),
198
+ }));
199
+ }
200
+ };
201
+
202
+ return (
203
+ <div className="sdm-page">
204
+ <div className="sdm-header">
205
+ <div className="sdm-title-block">
206
+ <h1 className="sdm-title">Datasource Management</h1>
207
+ <p className="sdm-subtitle">Review and manage the datasources configured for this SolidX application.</p>
208
+ </div>
209
+
210
+ <div className="sdm-header-actions">
211
+ {isFetching && !isLoading ? (
212
+ <div className="sdm-inline-status">
213
+ <SolidSpinner size={16} />
214
+ <span>Refreshing</span>
215
+ </div>
216
+ ) : null}
217
+
218
+ <SolidButton
219
+ className="sdm-icon-button"
220
+ leftIcon={<Plus size={16} />}
221
+ onClick={() => setDialogOpen(true)}
222
+ tooltip="Add datasource"
223
+ aria-label="Add datasource"
224
+ />
225
+
226
+ <SolidButton
227
+ className="sdm-icon-button"
228
+ leftIcon={<RefreshCw size={16} />}
229
+ onClick={() => void refetch()}
230
+ tooltip="Refresh"
231
+ aria-label="Refresh"
232
+ />
233
+ </div>
234
+ </div>
235
+
236
+ {isLoading ? (
237
+ <div className="sdm-loading">
238
+ <SolidSpinner size={28} />
239
+ <p>Loading datasource configuration...</p>
240
+ </div>
241
+ ) : error ? (
242
+ <div className="sdm-error">
243
+ <span>Unable to load datasource configuration.</span>
244
+ <SolidButton size="small" variant="outline" onClick={() => void refetch()}>
245
+ Retry
246
+ </SolidButton>
247
+ </div>
248
+ ) : datasources.length ? (
249
+ <div className="sdm-grid">
250
+ {datasources.map((datasource) => (
251
+ <article key={datasource.name} className="sdm-card">
252
+ <div className="sdm-card__top">
253
+ <div className="sdm-card__identity">
254
+ <DatasourceProviderMark type={datasource.type} />
255
+ <div>
256
+ <h3>{datasource.displayName}</h3>
257
+ <p>{datasource.name}</p>
258
+ </div>
259
+ </div>
260
+ <div className="sdm-card__badges">
261
+ <span className="sdm-badge sdm-badge--provider">{providerLabel(datasource.type)}</span>
262
+ {datasource.isDefault ? <span className="sdm-badge sdm-badge--default">Default</span> : null}
263
+ </div>
264
+ </div>
265
+
266
+ <div className="sdm-card__facts">
267
+ <div className="sdm-card__row">
268
+ <span>Host</span>
269
+ <strong>{datasource.host || "Not configured"}</strong>
270
+ </div>
271
+ <div className="sdm-card__row">
272
+ <span>Port</span>
273
+ <strong>{datasource.port ?? "Not configured"}</strong>
274
+ </div>
275
+ <div className="sdm-card__row">
276
+ <span>Database</span>
277
+ <strong>{datasource.database || "Not configured"}</strong>
278
+ </div>
279
+ <div className="sdm-card__row">
280
+ <span>User</span>
281
+ <strong>{datasource.username || "Not configured"}</strong>
282
+ </div>
283
+ <div className="sdm-card__row">
284
+ <span>Env prefix</span>
285
+ <strong>{datasource.envPrefix}</strong>
286
+ </div>
287
+ <div className="sdm-card__row">
288
+ <span>Password</span>
289
+ <strong>{datasource.passwordConfigured ? "Configured" : "Missing"}</strong>
290
+ </div>
291
+ </div>
292
+
293
+ <div className="sdm-card__footer">
294
+ <div className="sdm-meta-pill">sync: {datasource.synchronize === null ? "n/a" : String(datasource.synchronize)}</div>
295
+ <div className="sdm-meta-pill">logging: {datasource.logging === null ? "n/a" : String(datasource.logging)}</div>
296
+ {datasource.advanced?.poolMax ? <div className="sdm-meta-pill">pool: {datasource.advanced.poolMax}</div> : null}
297
+ </div>
298
+ </article>
299
+ ))}
300
+ </div>
301
+ ) : (
302
+ <div className="sdm-empty">
303
+ <Database size={22} />
304
+ <div>
305
+ <h3>No datasources configured</h3>
306
+ <p>Create one here and SolidX will wire the module and environment variables for you.</p>
307
+ </div>
308
+ <SolidButton size="small" onClick={() => setDialogOpen(true)} leftIcon={<Plus size={14} />}>
309
+ Add datasource
310
+ </SolidButton>
311
+ </div>
312
+ )}
313
+
314
+ <SolidDialog open={dialogOpen} onOpenChange={setDialogOpen} style={{ width: "min(860px, calc(100vw - 32px))" }}>
315
+ <SolidDialogHeader>
316
+ <div>
317
+ <SolidDialogTitle>Add datasource</SolidDialogTitle>
318
+ <SolidDialogDescription>
319
+ Create a new datasource module, register it in `app.module.ts`, and persist its env variables to disk.
320
+ </SolidDialogDescription>
321
+ </div>
322
+ </SolidDialogHeader>
323
+ <SolidDialogSeparator />
324
+ <SolidDialogBody>
325
+ <div className="sdm-form-grid">
326
+ <label className="sdm-form-field">
327
+ <span>Display name</span>
328
+ <SolidInput
329
+ value={formState.displayName || ""}
330
+ placeholder="Applications"
331
+ onChange={(event) => handleDisplayNameChange(event.target.value)}
332
+ />
333
+ </label>
334
+
335
+ <label className="sdm-form-field">
336
+ <span>Datasource key</span>
337
+ <SolidInput
338
+ value={formState.name}
339
+ placeholder="applications"
340
+ onChange={(event) => {
341
+ setNameTouched(true);
342
+ handleFieldChange("name", slugifyDatasourceName(event.target.value));
343
+ }}
344
+ />
345
+ </label>
346
+
347
+ <label className="sdm-form-field">
348
+ <span>Provider</span>
349
+ <SolidSelect
350
+ value={formState.type}
351
+ options={providerOptions as any}
352
+ onChange={(event) => handleTypeChange(event.value)}
353
+ />
354
+ </label>
355
+
356
+ <label className="sdm-form-field">
357
+ <span>Port</span>
358
+ <SolidInput
359
+ type="number"
360
+ value={formState.port}
361
+ onChange={(event) => handleFieldChange("port", Number(event.target.value) || getDefaultPort(formState.type))}
362
+ />
363
+ </label>
364
+
365
+ <label className="sdm-form-field">
366
+ <span>Host</span>
367
+ <SolidInput
368
+ value={formState.host}
369
+ placeholder="localhost"
370
+ onChange={(event) => handleFieldChange("host", event.target.value)}
371
+ />
372
+ </label>
373
+
374
+ <label className="sdm-form-field">
375
+ <span>Database</span>
376
+ <SolidInput
377
+ value={formState.database}
378
+ placeholder="solidx_app"
379
+ onChange={(event) => handleFieldChange("database", event.target.value)}
380
+ />
381
+ </label>
382
+
383
+ <label className="sdm-form-field">
384
+ <span>Username</span>
385
+ <SolidInput
386
+ value={formState.username}
387
+ placeholder="postgres"
388
+ onChange={(event) => handleFieldChange("username", event.target.value)}
389
+ />
390
+ </label>
391
+
392
+ <label className="sdm-form-field">
393
+ <span>Password</span>
394
+ <SolidInput
395
+ type="password"
396
+ value={formState.password}
397
+ onChange={(event) => handleFieldChange("password", event.target.value)}
398
+ />
399
+ </label>
400
+ </div>
401
+
402
+ <div className="sdm-switch-row">
403
+ <label className="sdm-switch-field">
404
+ <div>
405
+ <strong>Synchronize</strong>
406
+ <span>Write `*_DATABASE_SYNCHRONIZE` for this datasource.</span>
407
+ </div>
408
+ <SolidSwitch checked={!!formState.synchronize} onChange={(checked) => handleFieldChange("synchronize", checked)} />
409
+ </label>
410
+
411
+ <label className="sdm-switch-field">
412
+ <div>
413
+ <strong>Logging</strong>
414
+ <span>Enable TypeORM logging through the generated datasource module.</span>
415
+ </div>
416
+ <SolidSwitch checked={!!formState.logging} onChange={(checked) => handleFieldChange("logging", checked)} />
417
+ </label>
418
+ </div>
419
+
420
+ <SolidPanel header="Advanced options" toggleable className="solid-column-panel sdm-advanced-panel">
421
+ <div className="sdm-advanced-grid">
422
+ {formState.type === "mssql" ? (
423
+ <>
424
+ <label className="sdm-switch-field sdm-switch-field--inline">
425
+ <div>
426
+ <strong>Encrypt</strong>
427
+ <span>MSSQL connection option.</span>
428
+ </div>
429
+ <SolidSwitch checked={!!formState.encrypt} onChange={(checked) => handleFieldChange("encrypt", checked)} />
430
+ </label>
431
+
432
+ <label className="sdm-switch-field sdm-switch-field--inline">
433
+ <div>
434
+ <strong>Trust certificate</strong>
435
+ <span>Allow self-signed development certificates.</span>
436
+ </div>
437
+ <SolidSwitch checked={!!formState.trustServerCertificate} onChange={(checked) => handleFieldChange("trustServerCertificate", checked)} />
438
+ </label>
439
+ </>
440
+ ) : (
441
+ <>
442
+ <label className="sdm-switch-field sdm-switch-field--inline">
443
+ <div>
444
+ <strong>SSL</strong>
445
+ <span>Enable SSL for PostgreSQL or MySQL.</span>
446
+ </div>
447
+ <SolidSwitch checked={!!formState.ssl} onChange={(checked) => handleFieldChange("ssl", checked)} />
448
+ </label>
449
+
450
+ <label className="sdm-switch-field sdm-switch-field--inline">
451
+ <div>
452
+ <strong>Reject unauthorized</strong>
453
+ <span>Keep certificate validation strict when SSL is enabled.</span>
454
+ </div>
455
+ <SolidSwitch checked={!!formState.sslRejectUnauthorized} onChange={(checked) => handleFieldChange("sslRejectUnauthorized", checked)} />
456
+ </label>
457
+ </>
458
+ )}
459
+
460
+ <label className="sdm-form-field">
461
+ <span>Pool max</span>
462
+ <SolidInput
463
+ type="number"
464
+ value={formState.poolMax ?? ""}
465
+ onChange={(event) => handleFieldChange("poolMax", Number(event.target.value) || 0)}
466
+ />
467
+ </label>
468
+
469
+ <label className="sdm-form-field">
470
+ <span>Connection timeout (ms)</span>
471
+ <SolidInput
472
+ type="number"
473
+ value={formState.connectionTimeoutMs ?? ""}
474
+ onChange={(event) => handleFieldChange("connectionTimeoutMs", Number(event.target.value) || 0)}
475
+ />
476
+ </label>
477
+
478
+ <label className="sdm-form-field">
479
+ <span>Idle timeout (ms)</span>
480
+ <SolidInput
481
+ type="number"
482
+ value={formState.idleTimeoutMs ?? ""}
483
+ onChange={(event) => handleFieldChange("idleTimeoutMs", Number(event.target.value) || 0)}
484
+ />
485
+ </label>
486
+
487
+ {formState.type === "postgres" ? (
488
+ <>
489
+ <label className="sdm-form-field">
490
+ <span>Statement timeout (ms)</span>
491
+ <SolidInput
492
+ type="number"
493
+ value={formState.statementTimeoutMs ?? ""}
494
+ onChange={(event) => handleFieldChange("statementTimeoutMs", Number(event.target.value) || 0)}
495
+ />
496
+ </label>
497
+
498
+ <label className="sdm-form-field">
499
+ <span>Idle in transaction timeout (ms)</span>
500
+ <SolidInput
501
+ type="number"
502
+ value={formState.idleInTxTimeoutMs ?? ""}
503
+ onChange={(event) => handleFieldChange("idleInTxTimeoutMs", Number(event.target.value) || 0)}
504
+ />
505
+ </label>
506
+ </>
507
+ ) : null}
508
+
509
+ <label className="sdm-form-field">
510
+ <span>Retry attempts</span>
511
+ <SolidInput
512
+ type="number"
513
+ value={formState.retryAttempts ?? ""}
514
+ onChange={(event) => handleFieldChange("retryAttempts", Number(event.target.value) || 0)}
515
+ />
516
+ </label>
517
+
518
+ <label className="sdm-form-field">
519
+ <span>Retry delay (ms)</span>
520
+ <SolidInput
521
+ type="number"
522
+ value={formState.retryDelayMs ?? ""}
523
+ onChange={(event) => handleFieldChange("retryDelayMs", Number(event.target.value) || 0)}
524
+ />
525
+ </label>
526
+ </div>
527
+ </SolidPanel>
528
+ </SolidDialogBody>
529
+ <SolidDialogFooter>
530
+ <SolidButton variant="outline" onClick={() => setDialogOpen(false)}>
531
+ Cancel
532
+ </SolidButton>
533
+ <SolidButton onClick={() => void handleSubmit()} loading={isCreating}>
534
+ Create datasource
535
+ </SolidButton>
536
+ </SolidDialogFooter>
537
+ </SolidDialog>
538
+ </div>
539
+ );
540
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"solidRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/solidRoutes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA8BpD,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,SAAS,CAAC;AAOjE,wBAAgB,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,EAAE,CAkG9E"}
1
+ {"version":3,"file":"solidRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/solidRoutes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAiCpD,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,SAAS,CAAC;AAOjE,wBAAgB,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,EAAE,CAqG9E"}
@@ -24,6 +24,8 @@ import { CardPage } from "./pages/admin/core/CardPage";
24
24
  import { FormPage } from "./pages/admin/core/FormPage";
25
25
  import { SettingsPage } from "./pages/admin/core/SettingsPage";
26
26
  import { DashboardPage } from "./pages/admin/core/DashboardPage";
27
+ import { DatasourcesPage } from "./pages/admin/core/DatasourcesPage";
28
+ import { DatasourceIntrospectionPage } from "./pages/admin/core/DatasourceIntrospectionPage";
27
29
  import { LoginPage } from "./pages/auth/LoginPage";
28
30
  import { RegisterPage } from "./pages/auth/RegisterPage";
29
31
  import { ForgotPasswordPage } from "./pages/auth/ForgotPasswordPage";
@@ -36,6 +38,7 @@ import { InitiateRegisterPage } from "./pages/auth/InitiateRegisterPage";
36
38
  import { InitiateGoogleOauthPage } from "./pages/auth/InitiateGoogleOauthPage";
37
39
  import { InitiateFacebookOauthPage } from "./pages/auth/InitiateFacebookOauthPage";
38
40
  import { InitiateMicrosoftOauthPage } from "./pages/auth/InitiateMicrosoftOauthPage";
41
+ import { InitiateMicrosoftActiveDirectoryOauthPage } from "./pages/auth/InitiateMicrosoftActiveDirectoryOauthPage";
39
42
  import { SsoPage } from "./pages/auth/SsoPage";
40
43
  import { TreePage } from "./pages/admin/core/TreePage";
41
44
  import { StudioHomePage } from "./pages/studio/StudioHomePage";
@@ -70,6 +73,7 @@ export function getSolidRoutes(options) {
70
73
  { path: "/auth/initiate-google-oauth", element: pick("initiateGoogleOauth", _jsx(InitiateGoogleOauthPage, {})), handle: { title: "Google Sign In", manageDocumentMeta: true } },
71
74
  { path: "/auth/initiate-facebook-oauth", element: pick("initiateFacebookOauth", _jsx(InitiateFacebookOauthPage, {})), handle: { title: "Facebook Sign In", manageDocumentMeta: true } },
72
75
  { path: "/auth/initiate-microsoft-oauth", element: pick("initiateMicrosoftOauth", _jsx(InitiateMicrosoftOauthPage, {})), handle: { title: "Microsoft Sign In", manageDocumentMeta: true } },
76
+ { path: "/auth/initiate-microsoft-active-directory-oauth", element: pick("initiateMicrosoftActiveDirectoryOauth", _jsx(InitiateMicrosoftActiveDirectoryOauthPage, {})), handle: { title: "Microsoft Active Directory Sign In", manageDocumentMeta: true } },
73
77
  { path: "/auth/sso", element: pick("sso", _jsx(SsoPage, {})), handle: { title: "Single Sign-On", manageDocumentMeta: true } }
74
78
  ], extraAuthRoutes, true);
75
79
  var adminChildren = __spreadArray([
@@ -81,7 +85,9 @@ export function getSolidRoutes(options) {
81
85
  { path: "/admin/core/:moduleName/:modelName/card", element: pick("card", _jsx(CardPage, {})), handle: { title: "Card", manageDocumentMeta: true } },
82
86
  { path: "/admin/core/:moduleName/dashboard/:dashboardName", element: pick("dashboard", _jsx(DashboardPage, {})), handle: { title: "Dashboard", manageDocumentMeta: true } },
83
87
  { path: "/admin/core/:moduleName/:modelName/form/:id", element: pick("form", _jsx(FormPage, {})), handle: { title: "Form", manageDocumentMeta: true } },
84
- { path: "/admin/core/settings", element: pick("settings", _jsx(SettingsPage, {})), handle: { title: "Settings", manageDocumentMeta: true } }
88
+ { path: "/admin/core/settings", element: pick("settings", _jsx(SettingsPage, {})), handle: { title: "Settings", manageDocumentMeta: true } },
89
+ { path: "/admin/core/solid-core/datasources", element: _jsx(DatasourcesPage, {}), handle: { title: "Datasources", manageDocumentMeta: true } },
90
+ { path: "/admin/core/solid-core/modules/:moduleId/datasource-introspection", element: _jsx(DatasourceIntrospectionPage, {}), handle: { title: "Datasource Introspection", manageDocumentMeta: true } }
85
91
  ], extraAdminRoutes, true);
86
92
  return __spreadArray(__spreadArray([
87
93
  { path: "/error", element: pick("error", _jsx(ErrorPage, {})) },
@@ -1 +1 @@
1
- {"version":3,"file":"solidRoutes.js","sourceRoot":"","sources":["../../src/routes/solidRoutes.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { RouteObject } from \"react-router-dom\";\nimport { Navigate } from \"react-router-dom\";\nimport { AuthGuard } from \"./guards/AuthGuard\";\nimport { AdminGuard } from \"./guards/AdminGuard\";\nimport { GuestGuard } from \"./guards/GuestGuard\";\nimport { AdminLayoutWrapper } from \"../layouts/AdminLayoutWrapper\";\nimport { AuthLayoutWrapper } from \"../layouts/AuthLayoutWrapper\";\nimport { ErrorPage } from \"./pages/ErrorPage\";\nimport { NotFoundPage } from \"./pages/NotFoundPage\";\nimport { AdminPage } from \"./pages/admin/AdminPage\";\nimport { ModuleHomePage } from \"./pages/admin/core/ModuleHomePage\";\nimport { ListPage } from \"./pages/admin/core/ListPage\";\nimport { KanbanPage } from \"./pages/admin/core/KanbanPage\";\nimport { CardPage } from \"./pages/admin/core/CardPage\";\nimport { FormPage } from \"./pages/admin/core/FormPage\";\nimport { SettingsPage } from \"./pages/admin/core/SettingsPage\";\nimport { DashboardPage } from \"./pages/admin/core/DashboardPage\";\nimport { LoginPage } from \"./pages/auth/LoginPage\";\nimport { RegisterPage } from \"./pages/auth/RegisterPage\";\nimport { ForgotPasswordPage } from \"./pages/auth/ForgotPasswordPage\";\nimport { InitiateForgotPasswordPage } from \"./pages/auth/InitiateForgotPasswordPage\";\nimport { InitiateForgotPasswordThankYouPage } from \"./pages/auth/InitiateForgotPasswordThankYouPage\";\nimport { ConfirmForgotPasswordPage } from \"./pages/auth/ConfirmForgotPasswordPage\";\nimport { ResetPasswordPage } from \"./pages/auth/ResetPasswordPage\";\nimport { InitiateLoginPage } from \"./pages/auth/InitiateLoginPage\";\nimport { InitiateRegisterPage } from \"./pages/auth/InitiateRegisterPage\";\nimport { InitiateGoogleOauthPage } from \"./pages/auth/InitiateGoogleOauthPage\";\nimport { InitiateFacebookOauthPage } from \"./pages/auth/InitiateFacebookOauthPage\";\nimport { InitiateMicrosoftOauthPage } from \"./pages/auth/InitiateMicrosoftOauthPage\";\nimport { SsoPage } from \"./pages/auth/SsoPage\";\nimport type { SolidRoutesOptions, SolidRouteKey } from \"./types\";\nimport { TreePage } from \"./pages/admin/core/TreePage\";\nimport { StudioHomePage } from \"./pages/studio/StudioHomePage\";\nimport { StudioLandingPage } from \"./pages/studio/StudioLandingPage\";\nimport { _solidRegisterExtraRoutes } from \"./SolidLayoutRegistry\";\nimport { SolidRouteMetadataBoundary } from \"./SolidRouteMetadataBoundary\";\n\nexport function getSolidRoutes(options: SolidRoutesOptions = {}): RouteObject[] {\n const {\n extraAuthRoutes = [],\n extraAdminRoutes = [],\n extraRoutes = [],\n elementOverrides = {},\n } = options;\n\n // Auto-register layout routes so StudioLandingPage can discover them\n // without any changes in the consuming project.\n _solidRegisterExtraRoutes(extraRoutes);\n\n const pick = (key: SolidRouteKey, fallback: JSX.Element) =>\n (elementOverrides[key] as JSX.Element) || fallback;\n\n const authChildren: RouteObject[] = [\n // Password based login, Passwordless login initiate otp\n { path: \"/auth/login\", element: pick(\"login\", <LoginPage />), handle: { title: \"Login\", manageDocumentMeta: true } },\n // Password based registration, Passwordless registration initiate otp\n { path: \"/auth/register\", element: pick(\"register\", <RegisterPage />), handle: { title: \"Register\", manageDocumentMeta: true } },\n // Passwordless login confirm otp\n { path: \"/auth/initiate-login\", element: pick(\"initiateLogin\", <InitiateLoginPage />), handle: { title: \"Verify Login\", manageDocumentMeta: true } },\n // Passwordless registration confirm otp\n { path: \"/auth/initiate-register\", element: pick(\"initiateRegister\", <InitiateRegisterPage />), handle: { title: \"Verify Registration\", manageDocumentMeta: true } },\n\n // Forgot password flow\n { path: \"/auth/forgot-password\", element: pick(\"forgotPassword\", <ForgotPasswordPage />), handle: { title: \"Forgot Password\", manageDocumentMeta: true } },\n { path: \"/auth/initiate-forgot-password\", element: pick(\"initiateForgotPassword\", <InitiateForgotPasswordPage />), handle: { title: \"Send Reset Code\", manageDocumentMeta: true } },\n { path: \"/auth/initiate-forgot-password-thank-you\", element: pick(\"initiateForgotPasswordThankYou\", <InitiateForgotPasswordThankYouPage />), handle: { title: \"Check Your Email\", manageDocumentMeta: true } },\n { path: \"/auth/confirm-forgot-password\", element: pick(\"confirmForgotPassword\", <ConfirmForgotPasswordPage />), handle: { title: \"Confirm Reset Code\", manageDocumentMeta: true } },\n\n // ??? not used ???\n { path: \"/auth/reset-password\", element: pick(\"resetPassword\", <ResetPasswordPage />), handle: { title: \"Reset Password\", manageDocumentMeta: true } },\n\n { path: \"/auth/initiate-google-oauth\", element: pick(\"initiateGoogleOauth\", <InitiateGoogleOauthPage />), handle: { title: \"Google Sign In\", manageDocumentMeta: true } },\n { path: \"/auth/initiate-facebook-oauth\", element: pick(\"initiateFacebookOauth\", <InitiateFacebookOauthPage />), handle: { title: \"Facebook Sign In\", manageDocumentMeta: true } },\n { path: \"/auth/initiate-microsoft-oauth\", element: pick(\"initiateMicrosoftOauth\", <InitiateMicrosoftOauthPage />), handle: { title: \"Microsoft Sign In\", manageDocumentMeta: true } },\n { path: \"/auth/sso\", element: pick(\"sso\", <SsoPage />), handle: { title: \"Single Sign-On\", manageDocumentMeta: true } },\n ...extraAuthRoutes,\n ];\n\n const adminChildren: RouteObject[] = [\n { path: \"/admin\", element: pick(\"admin\", <AdminPage />), handle: { title: \"Admin\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/home\", element: pick(\"moduleHome\", <ModuleHomePage />), handle: { title: \"Module Home\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/list\", element: pick(\"list\", <ListPage />), handle: { title: \"List\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/tree\", element: pick(\"tree\", <TreePage />), handle: { title: \"Tree\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/kanban\", element: pick(\"kanban\", <KanbanPage />), handle: { title: \"Kanban\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/card\", element: pick(\"card\", <CardPage />), handle: { title: \"Card\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/dashboard/:dashboardName\", element: pick(\"dashboard\", <DashboardPage />), handle: { title: \"Dashboard\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/form/:id\", element: pick(\"form\", <FormPage />), handle: { title: \"Form\", manageDocumentMeta: true } },\n { path: \"/admin/core/settings\", element: pick(\"settings\", <SettingsPage />), handle: { title: \"Settings\", manageDocumentMeta: true } },\n ...extraAdminRoutes,\n ];\n\n return [\n { path: \"/error\", element: pick(\"error\", <ErrorPage />) },\n { path: \"/not-found\", element: pick(\"notFound\", <NotFoundPage />) },\n {\n element: <GuestGuard />,\n children: [\n {\n element: pick(\"authLayout\", <AuthLayoutWrapper />),\n children: [\n {\n element: <SolidRouteMetadataBoundary routes={authChildren} />,\n handle: { title: \"Auth\", description: \"Authentication pages\", manageDocumentMeta: true },\n children: authChildren,\n },\n ],\n },\n ],\n },\n {\n element: pick(\"authGuard\", <AuthGuard />),\n children: [\n {\n element: pick(\"adminLayout\", <AdminLayoutWrapper />),\n children: [\n {\n element: <SolidRouteMetadataBoundary routes={adminChildren} />,\n handle: { title: \"Admin\", description: \"Administration pages\", manageDocumentMeta: true },\n children: adminChildren,\n },\n ],\n },\n {\n element: pick(\"adminGuard\", <AdminGuard />),\n children: [\n { path: \"/studio\", element: pick(\"studioHome\", <StudioHomePage />), handle: { title: \"Studio\", manageDocumentMeta: true } },\n { path: \"/landing\", element: pick(\"landing\", <StudioLandingPage />), handle: { title: \"Landing\", manageDocumentMeta: true } },\n ],\n },\n ],\n },\n ...extraRoutes,\n { path: \"/\", element: <Navigate to=\"/auth/login\" replace /> },\n { path: \"*\", element: <Navigate to=\"/not-found\" replace /> },\n ];\n}\n"]}
1
+ {"version":3,"file":"solidRoutes.js","sourceRoot":"","sources":["../../src/routes/solidRoutes.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { RouteObject } from \"react-router-dom\";\nimport { Navigate } from \"react-router-dom\";\nimport { AuthGuard } from \"./guards/AuthGuard\";\nimport { AdminGuard } from \"./guards/AdminGuard\";\nimport { GuestGuard } from \"./guards/GuestGuard\";\nimport { AdminLayoutWrapper } from \"../layouts/AdminLayoutWrapper\";\nimport { AuthLayoutWrapper } from \"../layouts/AuthLayoutWrapper\";\nimport { ErrorPage } from \"./pages/ErrorPage\";\nimport { NotFoundPage } from \"./pages/NotFoundPage\";\nimport { AdminPage } from \"./pages/admin/AdminPage\";\nimport { ModuleHomePage } from \"./pages/admin/core/ModuleHomePage\";\nimport { ListPage } from \"./pages/admin/core/ListPage\";\nimport { KanbanPage } from \"./pages/admin/core/KanbanPage\";\nimport { CardPage } from \"./pages/admin/core/CardPage\";\nimport { FormPage } from \"./pages/admin/core/FormPage\";\nimport { SettingsPage } from \"./pages/admin/core/SettingsPage\";\nimport { DashboardPage } from \"./pages/admin/core/DashboardPage\";\nimport { DatasourcesPage } from \"./pages/admin/core/DatasourcesPage\";\nimport { DatasourceIntrospectionPage } from \"./pages/admin/core/DatasourceIntrospectionPage\";\nimport { LoginPage } from \"./pages/auth/LoginPage\";\nimport { RegisterPage } from \"./pages/auth/RegisterPage\";\nimport { ForgotPasswordPage } from \"./pages/auth/ForgotPasswordPage\";\nimport { InitiateForgotPasswordPage } from \"./pages/auth/InitiateForgotPasswordPage\";\nimport { InitiateForgotPasswordThankYouPage } from \"./pages/auth/InitiateForgotPasswordThankYouPage\";\nimport { ConfirmForgotPasswordPage } from \"./pages/auth/ConfirmForgotPasswordPage\";\nimport { ResetPasswordPage } from \"./pages/auth/ResetPasswordPage\";\nimport { InitiateLoginPage } from \"./pages/auth/InitiateLoginPage\";\nimport { InitiateRegisterPage } from \"./pages/auth/InitiateRegisterPage\";\nimport { InitiateGoogleOauthPage } from \"./pages/auth/InitiateGoogleOauthPage\";\nimport { InitiateFacebookOauthPage } from \"./pages/auth/InitiateFacebookOauthPage\";\nimport { InitiateMicrosoftOauthPage } from \"./pages/auth/InitiateMicrosoftOauthPage\";\nimport { InitiateMicrosoftActiveDirectoryOauthPage } from \"./pages/auth/InitiateMicrosoftActiveDirectoryOauthPage\";\nimport { SsoPage } from \"./pages/auth/SsoPage\";\nimport type { SolidRoutesOptions, SolidRouteKey } from \"./types\";\nimport { TreePage } from \"./pages/admin/core/TreePage\";\nimport { StudioHomePage } from \"./pages/studio/StudioHomePage\";\nimport { StudioLandingPage } from \"./pages/studio/StudioLandingPage\";\nimport { _solidRegisterExtraRoutes } from \"./SolidLayoutRegistry\";\nimport { SolidRouteMetadataBoundary } from \"./SolidRouteMetadataBoundary\";\n\nexport function getSolidRoutes(options: SolidRoutesOptions = {}): RouteObject[] {\n const {\n extraAuthRoutes = [],\n extraAdminRoutes = [],\n extraRoutes = [],\n elementOverrides = {},\n } = options;\n\n // Auto-register layout routes so StudioLandingPage can discover them\n // without any changes in the consuming project.\n _solidRegisterExtraRoutes(extraRoutes);\n\n const pick = (key: SolidRouteKey, fallback: JSX.Element) =>\n (elementOverrides[key] as JSX.Element) || fallback;\n\n const authChildren: RouteObject[] = [\n // Password based login, Passwordless login initiate otp\n { path: \"/auth/login\", element: pick(\"login\", <LoginPage />), handle: { title: \"Login\", manageDocumentMeta: true } },\n // Password based registration, Passwordless registration initiate otp\n { path: \"/auth/register\", element: pick(\"register\", <RegisterPage />), handle: { title: \"Register\", manageDocumentMeta: true } },\n // Passwordless login confirm otp\n { path: \"/auth/initiate-login\", element: pick(\"initiateLogin\", <InitiateLoginPage />), handle: { title: \"Verify Login\", manageDocumentMeta: true } },\n // Passwordless registration confirm otp\n { path: \"/auth/initiate-register\", element: pick(\"initiateRegister\", <InitiateRegisterPage />), handle: { title: \"Verify Registration\", manageDocumentMeta: true } },\n\n // Forgot password flow\n { path: \"/auth/forgot-password\", element: pick(\"forgotPassword\", <ForgotPasswordPage />), handle: { title: \"Forgot Password\", manageDocumentMeta: true } },\n { path: \"/auth/initiate-forgot-password\", element: pick(\"initiateForgotPassword\", <InitiateForgotPasswordPage />), handle: { title: \"Send Reset Code\", manageDocumentMeta: true } },\n { path: \"/auth/initiate-forgot-password-thank-you\", element: pick(\"initiateForgotPasswordThankYou\", <InitiateForgotPasswordThankYouPage />), handle: { title: \"Check Your Email\", manageDocumentMeta: true } },\n { path: \"/auth/confirm-forgot-password\", element: pick(\"confirmForgotPassword\", <ConfirmForgotPasswordPage />), handle: { title: \"Confirm Reset Code\", manageDocumentMeta: true } },\n\n // ??? not used ???\n { path: \"/auth/reset-password\", element: pick(\"resetPassword\", <ResetPasswordPage />), handle: { title: \"Reset Password\", manageDocumentMeta: true } },\n\n { path: \"/auth/initiate-google-oauth\", element: pick(\"initiateGoogleOauth\", <InitiateGoogleOauthPage />), handle: { title: \"Google Sign In\", manageDocumentMeta: true } },\n { path: \"/auth/initiate-facebook-oauth\", element: pick(\"initiateFacebookOauth\", <InitiateFacebookOauthPage />), handle: { title: \"Facebook Sign In\", manageDocumentMeta: true } },\n { path: \"/auth/initiate-microsoft-oauth\", element: pick(\"initiateMicrosoftOauth\", <InitiateMicrosoftOauthPage />), handle: { title: \"Microsoft Sign In\", manageDocumentMeta: true } },\n { path: \"/auth/initiate-microsoft-active-directory-oauth\", element: pick(\"initiateMicrosoftActiveDirectoryOauth\", <InitiateMicrosoftActiveDirectoryOauthPage />), handle: { title: \"Microsoft Active Directory Sign In\", manageDocumentMeta: true } },\n { path: \"/auth/sso\", element: pick(\"sso\", <SsoPage />), handle: { title: \"Single Sign-On\", manageDocumentMeta: true } },\n ...extraAuthRoutes,\n ];\n\n const adminChildren: RouteObject[] = [\n { path: \"/admin\", element: pick(\"admin\", <AdminPage />), handle: { title: \"Admin\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/home\", element: pick(\"moduleHome\", <ModuleHomePage />), handle: { title: \"Module Home\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/list\", element: pick(\"list\", <ListPage />), handle: { title: \"List\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/tree\", element: pick(\"tree\", <TreePage />), handle: { title: \"Tree\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/kanban\", element: pick(\"kanban\", <KanbanPage />), handle: { title: \"Kanban\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/card\", element: pick(\"card\", <CardPage />), handle: { title: \"Card\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/dashboard/:dashboardName\", element: pick(\"dashboard\", <DashboardPage />), handle: { title: \"Dashboard\", manageDocumentMeta: true } },\n { path: \"/admin/core/:moduleName/:modelName/form/:id\", element: pick(\"form\", <FormPage />), handle: { title: \"Form\", manageDocumentMeta: true } },\n { path: \"/admin/core/settings\", element: pick(\"settings\", <SettingsPage />), handle: { title: \"Settings\", manageDocumentMeta: true } },\n { path: \"/admin/core/solid-core/datasources\", element: <DatasourcesPage />, handle: { title: \"Datasources\", manageDocumentMeta: true } },\n { path: \"/admin/core/solid-core/modules/:moduleId/datasource-introspection\", element: <DatasourceIntrospectionPage />, handle: { title: \"Datasource Introspection\", manageDocumentMeta: true } },\n ...extraAdminRoutes,\n ];\n\n return [\n { path: \"/error\", element: pick(\"error\", <ErrorPage />) },\n { path: \"/not-found\", element: pick(\"notFound\", <NotFoundPage />) },\n {\n element: <GuestGuard />,\n children: [\n {\n element: pick(\"authLayout\", <AuthLayoutWrapper />),\n children: [\n {\n element: <SolidRouteMetadataBoundary routes={authChildren} />,\n handle: { title: \"Auth\", description: \"Authentication pages\", manageDocumentMeta: true },\n children: authChildren,\n },\n ],\n },\n ],\n },\n {\n element: pick(\"authGuard\", <AuthGuard />),\n children: [\n {\n element: pick(\"adminLayout\", <AdminLayoutWrapper />),\n children: [\n {\n element: <SolidRouteMetadataBoundary routes={adminChildren} />,\n handle: { title: \"Admin\", description: \"Administration pages\", manageDocumentMeta: true },\n children: adminChildren,\n },\n ],\n },\n {\n element: pick(\"adminGuard\", <AdminGuard />),\n children: [\n { path: \"/studio\", element: pick(\"studioHome\", <StudioHomePage />), handle: { title: \"Studio\", manageDocumentMeta: true } },\n { path: \"/landing\", element: pick(\"landing\", <StudioLandingPage />), handle: { title: \"Landing\", manageDocumentMeta: true } },\n ],\n },\n ],\n },\n ...extraRoutes,\n { path: \"/\", element: <Navigate to=\"/auth/login\" replace /> },\n { path: \"*\", element: <Navigate to=\"/not-found\" replace /> },\n ];\n}\n"]}