@wenathlan/saddle 2.0.154 → 2.0.159

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 (314) hide show
  1. package/Dockerfile +167 -1334
  2. package/README.md +59 -60
  3. package/biome.jsonc +3 -3
  4. package/browser.ts +482 -0
  5. package/cli.ts +274 -0
  6. package/distribution.ts +731 -0
  7. package/docker.config +29 -8
  8. package/docs/{architecture.1.8.19.mmd → architecture1819.md} +6 -0
  9. package/docs/artifactavailability.md +2 -2
  10. package/docs/browser.md +18 -1
  11. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  12. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  13. package/docs/extension.md +13 -2
  14. package/docs/features.md +5 -0
  15. package/docs/libraryapi.md +1 -1
  16. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  17. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  18. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  19. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  20. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  21. package/docs/todo.md +2 -2
  22. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  23. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  24. package/execution.ts +677 -0
  25. package/foundation.ts +314 -0
  26. package/index.ts +36 -34
  27. package/isolation.ts +84 -0
  28. package/modalityregistry.ts +189 -145
  29. package/modes.ts +170 -0
  30. package/mttg.config +1 -1
  31. package/orchestrator.ts +49 -15
  32. package/package.json +105 -89
  33. package/qemu.config +2 -2
  34. package/sandbox.ts +3279 -0
  35. package/scheduler.ts +1 -1
  36. package/server.ts +52 -0
  37. package/tsconfig.json +12 -13
  38. package/virtual.ts +7528 -0
  39. package/workloadlaw.ts +293 -0
  40. package/dist/App.d.ts +0 -5
  41. package/dist/App.js +0 -52
  42. package/dist/Sol/Sol.d.ts +0 -3
  43. package/dist/Sol/Sol.js +0 -46
  44. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  45. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  46. package/dist/Sol/architecture/architecture.d.ts +0 -9
  47. package/dist/Sol/architecture/architecture.js +0 -93
  48. package/dist/Sol/compute/compute.d.ts +0 -9
  49. package/dist/Sol/compute/compute.js +0 -22
  50. package/dist/Sol/console/console.d.ts +0 -15
  51. package/dist/Sol/console/console.js +0 -292
  52. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  53. package/dist/Sol/dashboard/dashboard.js +0 -181
  54. package/dist/Sol/docs/docs.d.ts +0 -9
  55. package/dist/Sol/docs/docs.js +0 -28
  56. package/dist/Sol/home/home.d.ts +0 -35
  57. package/dist/Sol/home/home.js +0 -239
  58. package/dist/Sol/integrations/integrations.d.ts +0 -9
  59. package/dist/Sol/integrations/integrations.js +0 -83
  60. package/dist/Sol/intro/intro.d.ts +0 -7
  61. package/dist/Sol/intro/intro.js +0 -102
  62. package/dist/Sol/login/login.d.ts +0 -16
  63. package/dist/Sol/login/login.js +0 -49
  64. package/dist/Sol/notfound/notfound.d.ts +0 -9
  65. package/dist/Sol/notfound/notfound.js +0 -15
  66. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  67. package/dist/Sol/onboarding/onboarding.js +0 -60
  68. package/dist/Sol/playground/playground.d.ts +0 -9
  69. package/dist/Sol/playground/playground.js +0 -127
  70. package/dist/Sol/register/register.d.ts +0 -16
  71. package/dist/Sol/register/register.js +0 -193
  72. package/dist/Sol/shell/Shell.d.ts +0 -124
  73. package/dist/Sol/shell/Shell.js +0 -335
  74. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  75. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  76. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  77. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  78. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  79. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  80. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  81. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  82. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  83. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  84. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  85. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  86. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  87. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  88. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  89. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  90. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  91. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  92. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  93. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  94. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  95. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  96. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  97. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  98. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  100. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  102. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  103. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  104. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  105. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  106. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  107. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  108. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  109. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  110. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  111. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  112. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  113. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  114. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  115. package/dist/Sol/wingets/LoginForm.js +0 -141
  116. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  117. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  118. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  119. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  120. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  121. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  122. package/dist/Sol/wingets/index.d.ts +0 -39
  123. package/dist/Sol/wingets/index.js +0 -39
  124. package/dist/alternatives.d.ts +0 -508
  125. package/dist/alternatives.js +0 -950
  126. package/dist/api.d.ts +0 -154
  127. package/dist/api.js +0 -174
  128. package/dist/auth.d.ts +0 -268
  129. package/dist/auth.js +0 -476
  130. package/dist/automation.d.ts +0 -425
  131. package/dist/automation.js +0 -566
  132. package/dist/browser.d.ts +0 -561
  133. package/dist/browser.js +0 -1058
  134. package/dist/capacitor.config.d.ts +0 -45
  135. package/dist/capacitor.config.js +0 -48
  136. package/dist/catalog.d.ts +0 -43
  137. package/dist/catalog.js +0 -44
  138. package/dist/cli.d.ts +0 -16
  139. package/dist/cli.js +0 -168
  140. package/dist/communication.d.ts +0 -181
  141. package/dist/communication.js +0 -376
  142. package/dist/compute.d.ts +0 -1160
  143. package/dist/compute.js +0 -2272
  144. package/dist/dashboardlib.d.ts +0 -58
  145. package/dist/dashboardlib.js +0 -161
  146. package/dist/db.d.ts +0 -569
  147. package/dist/db.js +0 -1080
  148. package/dist/distribution.d.ts +0 -528
  149. package/dist/distribution.js +0 -810
  150. package/dist/drizzle.config.d.ts +0 -20
  151. package/dist/drizzle.config.js +0 -18
  152. package/dist/edgelandes.d.ts +0 -70
  153. package/dist/edgelandes.host.d.ts +0 -26
  154. package/dist/edgelandes.host.js +0 -1089
  155. package/dist/edgelandes.inproc.d.ts +0 -27
  156. package/dist/edgelandes.inproc.js +0 -952
  157. package/dist/edgelandes.js +0 -1133
  158. package/dist/edgelandes.ninety.d.ts +0 -31
  159. package/dist/edgelandes.ninety.js +0 -174
  160. package/dist/edgelandes.virtual.d.ts +0 -25
  161. package/dist/edgelandes.virtual.js +0 -629
  162. package/dist/edgeplane.d.ts +0 -121
  163. package/dist/edgeplane.js +0 -341
  164. package/dist/examplelocaljob.d.ts +0 -1
  165. package/dist/examplelocaljob.js +0 -14
  166. package/dist/execution.d.ts +0 -529
  167. package/dist/execution.js +0 -760
  168. package/dist/family.d.ts +0 -16
  169. package/dist/family.js +0 -42
  170. package/dist/familyurl.d.ts +0 -21
  171. package/dist/familyurl.js +0 -24
  172. package/dist/format.d.ts +0 -18
  173. package/dist/format.js +0 -59
  174. package/dist/foundation.d.ts +0 -172
  175. package/dist/foundation.js +0 -312
  176. package/dist/index.d.ts +0 -735
  177. package/dist/index.js +0 -1020
  178. package/dist/integration.d.ts +0 -235
  179. package/dist/integration.js +0 -228
  180. package/dist/intelligence.d.ts +0 -93
  181. package/dist/intelligence.js +0 -144
  182. package/dist/isolation.d.ts +0 -128
  183. package/dist/isolation.js +0 -95
  184. package/dist/labels.d.ts +0 -665
  185. package/dist/labels.js +0 -707
  186. package/dist/localauth.d.ts +0 -127
  187. package/dist/localauth.js +0 -413
  188. package/dist/media.d.ts +0 -343
  189. package/dist/media.js +0 -985
  190. package/dist/mesh.d.ts +0 -177
  191. package/dist/mesh.js +0 -468
  192. package/dist/modalityregistry.d.ts +0 -109
  193. package/dist/modalityregistry.js +0 -1386
  194. package/dist/modes.d.ts +0 -358
  195. package/dist/modes.js +0 -133
  196. package/dist/onboardingstate.d.ts +0 -79
  197. package/dist/onboardingstate.js +0 -282
  198. package/dist/orchestrator.d.ts +0 -1338
  199. package/dist/orchestrator.js +0 -4310
  200. package/dist/packager/targetcli.js +0 -4
  201. package/dist/paths.d.ts +0 -2
  202. package/dist/paths.js +0 -14
  203. package/dist/performance.d.ts +0 -415
  204. package/dist/performance.js +0 -826
  205. package/dist/quantum.d.ts +0 -809
  206. package/dist/quantum.js +0 -2072
  207. package/dist/render.d.ts +0 -380
  208. package/dist/render.js +0 -1072
  209. package/dist/runall.d.ts +0 -2
  210. package/dist/runall.js +0 -39
  211. package/dist/runtimeprobe.d.ts +0 -4
  212. package/dist/runtimeprobe.js +0 -8
  213. package/dist/sandbox.d.ts +0 -355
  214. package/dist/sandbox.js +0 -1721
  215. package/dist/sandboxenvprofile.d.ts +0 -29
  216. package/dist/sandboxenvprofile.js +0 -89
  217. package/dist/sandboxprofile.d.ts +0 -137
  218. package/dist/sandboxprofile.js +0 -241
  219. package/dist/sandboxqueue.d.ts +0 -108
  220. package/dist/sandboxqueue.js +0 -201
  221. package/dist/sandboxquota.d.ts +0 -121
  222. package/dist/sandboxquota.js +0 -236
  223. package/dist/scheduler.d.ts +0 -595
  224. package/dist/scheduler.js +0 -1258
  225. package/dist/scriptlanes.d.ts +0 -182
  226. package/dist/scriptlanes.js +0 -660
  227. package/dist/scripts.buildengine.d.ts +0 -1
  228. package/dist/scripts.buildengine.js +0 -39
  229. package/dist/scripts.securitygate.d.ts +0 -1
  230. package/dist/scripts.securitygate.js +0 -68
  231. package/dist/scripts.validateflatnative.d.ts +0 -1
  232. package/dist/scripts.validateflatnative.js +0 -72
  233. package/dist/security.d.ts +0 -500
  234. package/dist/security.js +0 -1169
  235. package/dist/seedcatalog.d.ts +0 -13
  236. package/dist/seedcatalog.js +0 -46
  237. package/dist/server.d.ts +0 -20
  238. package/dist/server.js +0 -53
  239. package/dist/speccatalog.d.ts +0 -31
  240. package/dist/speccatalog.js +0 -163
  241. package/dist/tiers.d.ts +0 -1001
  242. package/dist/tiers.js +0 -2169
  243. package/dist/utils.d.ts +0 -2
  244. package/dist/utils.js +0 -5
  245. package/dist/vaulthandoff.d.ts +0 -141
  246. package/dist/vaulthandoff.js +0 -444
  247. package/dist/virtual.d.ts +0 -640
  248. package/dist/virtual.js +0 -1284
  249. package/dist/virtualcpu.d.ts +0 -315
  250. package/dist/virtualcpu.js +0 -1180
  251. package/dist/virtualgpu.d.ts +0 -344
  252. package/dist/virtualgpu.js +0 -1000
  253. package/dist/virtualization.d.ts +0 -606
  254. package/dist/virtualization.js +0 -1186
  255. package/dist/virtualmemory.d.ts +0 -817
  256. package/dist/virtualmemory.js +0 -1795
  257. package/dist/vite.config.d.ts +0 -3
  258. package/dist/vite.config.js +0 -48
  259. package/dist/vitest.config.d.ts +0 -2
  260. package/dist/vitest.config.js +0 -25
  261. package/dist/webserver.d.ts +0 -166
  262. package/dist/webserver.js +0 -2226
  263. package/dist/workloadlaw.d.ts +0 -133
  264. package/dist/workloadlaw.js +0 -193
  265. package/docs/.gitkeep +0 -0
  266. package/docs/architecture.1.8.19.md +0 -76
  267. package/docs/logs/examplesession.json +0 -54
  268. package/docs/repo.analysis.1.8.21.json +0 -2617
  269. package/docs/repo.candidates.1.8.21.jsonl +0 -666
  270. package/docs/repo.selected.1.8.21.json +0 -786
  271. package/manifest.json +0 -20
  272. package/media.ts +0 -1337
  273. package/virtualcpu.ts +0 -1274
  274. package/virtualgpu.ts +0 -1182
  275. package/virtualization.ts +0 -1628
  276. package/virtualmemory.ts +0 -2303
  277. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  278. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  279. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  280. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  281. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  282. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  283. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  284. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  285. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  286. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  287. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  288. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  289. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  290. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  291. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  292. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  293. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  294. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  295. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  296. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  297. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  298. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  299. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  300. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  301. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  302. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  303. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  304. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  305. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  306. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  307. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  308. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  309. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  310. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  311. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  312. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  313. /package/docs/{web.ideas.md → webideas.md} +0 -0
  314. /package/docs/{workflowimprovements.2026.08.19.md → workflowimprovements20260819.md} +0 -0
@@ -1,25 +0,0 @@
1
- /**
2
- * onboarding.tsx — the first-run steps of the APPLICATION (the family
3
- * window recipe): three short frames presented like a Windows 11 first-run
4
- * dialog over the canvas backdrop — what the app IS (the honest role: the
5
- * sandbox engine of the family, not an operating system), what it DOES
6
- * (the surfaces the window hosts — console, playground, compute and the
7
- * agent browser over the storage == compute engine — read straight from
8
- * the rail map) and the ENTER frame with the hand-over button. The finish
9
- * AND the skip mark onboarding seen through the one accessor
10
- * (onboardingstate.ts — seen = may skip; the flow is never forced again)
11
- * and navigate to "/" so the window takes over. Frames remount on step
12
- * change so the 250ms entry plays each time; reduced motion rides the
13
- * stylesheet hard stop. No opt-in switches here: the app holds no account
14
- * write and no visitor storage beyond the shared onboarding state. Every
15
- * word of the dialog rides the label store (labels.ts — the copy law):
16
- * the three frame names arrive as the onboarding.steps row the page
17
- * splits, so no fixed step array lives in the component.
18
- */
19
- /**
20
- * The onboarding page: a three-step first-run dialog that hands the
21
- * surface to the home of the window.
22
- *
23
- * @returns the onboarding element.
24
- */
25
- export default function Onboarding(): import("react").JSX.Element;
@@ -1,60 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- // the saddle onboarding of the theme.
3
- /**
4
- * onboarding.tsx — the first-run steps of the APPLICATION (the family
5
- * window recipe): three short frames presented like a Windows 11 first-run
6
- * dialog over the canvas backdrop — what the app IS (the honest role: the
7
- * sandbox engine of the family, not an operating system), what it DOES
8
- * (the surfaces the window hosts — console, playground, compute and the
9
- * agent browser over the storage == compute engine — read straight from
10
- * the rail map) and the ENTER frame with the hand-over button. The finish
11
- * AND the skip mark onboarding seen through the one accessor
12
- * (onboardingstate.ts — seen = may skip; the flow is never forced again)
13
- * and navigate to "/" so the window takes over. Frames remount on step
14
- * change so the 250ms entry plays each time; reduced motion rides the
15
- * stylesheet hard stop. No opt-in switches here: the app holds no account
16
- * write and no visitor storage beyond the shared onboarding state. Every
17
- * word of the dialog rides the label store (labels.ts — the copy law):
18
- * the three frame names arrive as the onboarding.steps row the page
19
- * splits, so no fixed step array lives in the component.
20
- */
21
- import { ArrowLeftRegular as ArrowLeft, ArrowRightRegular as ArrowRight, TableRegular as LayoutDashboard, } from '@fluentui/react-icons';
22
- import { useCallback, useState } from 'react';
23
- import { useLocation } from 'wouter';
24
- import { markOnboardingSeen } from '../../onboardingstate.ts';
25
- import { label, labelfill } from '../../labels.ts';
26
- import { SaddleMark, START_APPS } from '../shell/Shell.tsx';
27
- /** the three frames of the first run, in order — one config row of the
28
- * label store the page splits (the onboarding.steps precedent of the
29
- * provider chain row of the architecture page). */
30
- const steps = label('onboarding.steps').split(' · ');
31
- /**
32
- * The onboarding page: a three-step first-run dialog that hands the
33
- * surface to the home of the window.
34
- *
35
- * @returns the onboarding element.
36
- */
37
- export default function Onboarding() {
38
- const [, navigate] = useLocation();
39
- const [step, setStep] = useState(0);
40
- const last = step === steps.length - 1;
41
- /** the hand-over: the onboarding counts as seen (finish and skip alike —
42
- * seen = may skip; never forced again) and the window opens on the home. */
43
- const enterHome = useCallback(() => {
44
- markOnboardingSeen();
45
- navigate('/');
46
- }, [navigate]);
47
- return (_jsx("div", { className: "winonboard", children: _jsxs("section", { className: "winonboard__card", "aria-label": label('onboarding.cardAria'), children: [_jsxs("header", { className: "winonboard__head", children: [_jsx(SaddleMark, { size: 18, hidden: true }), _jsx("span", { className: "winonboard__title", children: label('onboarding.title') }), _jsx("button", { type: "button", className: "winonboard__skip", onClick: enterHome, children: label('onboarding.skip') })] }), _jsxs("div", { className: "winonboard__body", children: [step === 0 && (_jsxs("article", { className: "winonboard__step", children: [_jsx("p", { className: "winonboard__eyebrow", children: labelfill('onboarding.eyebrow', {
48
- index: String(step + 1),
49
- step: steps[step],
50
- }) }), _jsx("h2", { className: "winonboard__lead", children: label('onboarding.what.title') }), _jsx("p", { className: "winonboard__lede", children: label('onboarding.what.body') })] }, "what")), step === 1 && (_jsxs("article", { className: "winonboard__step", children: [_jsx("p", { className: "winonboard__eyebrow", children: labelfill('onboarding.eyebrow', {
51
- index: String(step + 1),
52
- step: steps[step],
53
- }) }), _jsx("h2", { className: "winonboard__lead", children: label('onboarding.does.title') }), _jsx("ul", { className: "winonboard__facts", children: START_APPS.map((app) => {
54
- const Icon = app.icon ?? LayoutDashboard;
55
- return (_jsxs("li", { className: "winonboard__fact", children: [_jsx(Icon, { fontSize: 16, strokeWidth: 1.7, "aria-hidden": "true" }), _jsxs("span", { children: [_jsx("strong", { children: app.label }), " \u2014 ", app.detail] })] }, app.href));
56
- }) })] }, "does")), step === 2 && (_jsxs("article", { className: "winonboard__step", children: [_jsx("p", { className: "winonboard__eyebrow", children: labelfill('onboarding.eyebrow', {
57
- index: String(step + 1),
58
- step: steps[step],
59
- }) }), _jsx("h2", { className: "winonboard__lead", children: label('onboarding.enter.title') }), _jsx("p", { className: "winonboard__lede", children: label('onboarding.enter.body') })] }, "enter"))] }), _jsxs("footer", { className: "winonboard__foot", children: [_jsx("div", { className: "winonboard__ladder", "aria-hidden": "true", children: steps.map((stepname, index) => (_jsx("span", { className: "winonboard__segrun", "data-active": index === step ? 'true' : undefined }, stepname))) }), _jsxs("div", { className: "winonboard__actions", children: [step > 0 && (_jsxs("button", { type: "button", className: "winonboard__act", onClick: () => setStep((value) => value - 1), children: [_jsx(ArrowLeft, { fontSize: 14, "aria-hidden": "true" }), label('onboarding.back')] })), last ? (_jsxs("button", { type: "button", className: "winonboard__act winonboard__act--primary", onClick: enterHome, children: [label('onboarding.enterCta'), _jsx(ArrowRight, { fontSize: 14, "aria-hidden": "true" })] })) : (_jsxs("button", { type: "button", className: "winonboard__act winonboard__act--primary", onClick: () => setStep((value) => value + 1), children: [label('onboarding.continue'), _jsx(ArrowRight, { fontSize: 14, "aria-hidden": "true" })] }))] })] })] }) }));
60
- }
@@ -1,9 +0,0 @@
1
- /**
2
- * playground page anchor — layer 3 of the anchor architecture.
3
- * The file carrying the folder's own name is the path manager of the page:
4
- * it imports the loose components beside it, mounts the page and re-exports
5
- * the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
6
- * this file. This anchor carries the former main component of the folder,
7
- * which now lives here as the page mount itself.
8
- */
9
- export default function Playground(): import("react").JSX.Element;
@@ -1,127 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * playground page anchor — layer 3 of the anchor architecture.
4
- * The file carrying the folder's own name is the path manager of the page:
5
- * it imports the loose components beside it, mounts the page and re-exports
6
- * the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
7
- * this file. This anchor carries the former main component of the folder,
8
- * which now lives here as the page mount itself.
9
- */
10
- import { internalapi } from '@saddle/isolation';
11
- // Signal & Ledger: playground as the ledger of internal plans, never a console that executes bytes.
12
- // Every word of the page rides the label store (labels.ts — the copy law);
13
- // the fixture and the stage states stay the honest data of the projection.
14
- import { PulseRegular as Activity, ProhibitedRegular as Ban, CubeRegular as Blocks, BracesRegular as Braces, DatabaseRegular as Database, DocumentErrorRegular as FileWarning, CommunicationRegular as Network, ShieldTaskRegular as ShieldCheck, } from '@fluentui/react-icons';
15
- import { useMemo, useState } from 'react';
16
- import { PageShell } from '../shell/Shell.tsx';
17
- import { label, labelfill } from '../../labels.ts';
18
- const fixture = Object.freeze({
19
- id: 'fixture.binary.001',
20
- effect: 'binary-execution',
21
- target: 'remote',
22
- // biome-ignore lint/security/noSecrets: a deterministic demo payload digest for the sandbox spec fixture, not a credential
23
- source: '8c3d2e7b6a5f4c1d0e9b8a7f6c5d4e3b2a1908172635445566778899aabbccdd',
24
- budget: { maxbytes: 65536, maxmilliseconds: 250 },
25
- });
26
- /** the six boundaries of the projection: the glyph and the two-digit index
27
- * are presentation code, the words ride the store (playground.boundary.*). */
28
- const boundaries = [
29
- {
30
- index: '01',
31
- namekey: 'playground.boundary.gateway.name',
32
- detailkey: 'playground.boundary.gateway.detail',
33
- icon: Braces,
34
- },
35
- {
36
- index: '02',
37
- namekey: 'playground.boundary.plan.name',
38
- detailkey: 'playground.boundary.plan.detail',
39
- icon: Blocks,
40
- },
41
- {
42
- index: '03',
43
- namekey: 'playground.boundary.policy.name',
44
- detailkey: 'playground.boundary.policy.detail',
45
- icon: ShieldCheck,
46
- },
47
- {
48
- index: '04',
49
- namekey: 'playground.boundary.materialize.name',
50
- detailkey: 'playground.boundary.materialize.detail',
51
- icon: Database,
52
- },
53
- {
54
- index: '05',
55
- namekey: 'playground.boundary.execute.name',
56
- detailkey: 'playground.boundary.execute.detail',
57
- icon: Activity,
58
- },
59
- {
60
- index: '06',
61
- namekey: 'playground.boundary.evidence.name',
62
- detailkey: 'playground.boundary.evidence.detail',
63
- icon: FileWarning,
64
- },
65
- ];
66
- /** the two policy modalities of the projection: each is one card, and each
67
- * card walks the six boundaries as its own stage ladder (the windows
68
- * stepper — the ::after indicator: 0 closed, 6px #858585 done, 12px accent
69
- * active). the card words ride the store (playground.card.*). */
70
- const modalitycards = [
71
- {
72
- id: 'default',
73
- index: '01',
74
- namekey: 'playground.card.default.name',
75
- codekey: 'playground.card.default.code',
76
- verdictkey: 'playground.card.default.verdict',
77
- tipkey: 'playground.card.default.tip',
78
- },
79
- {
80
- id: 'delegated',
81
- index: '02',
82
- namekey: 'playground.card.delegated.name',
83
- codekey: 'playground.card.delegated.code',
84
- verdictkey: 'playground.card.delegated.verdict',
85
- tipkey: 'playground.card.delegated.tip',
86
- },
87
- ];
88
- /** the stage states per modality, boundary order: done (6px gray), active
89
- * (12px accent), denied (12px gray), armed (6px gray) and closed (0). */
90
- const stageladder = {
91
- default: ['done', 'done', 'done', 'done', 'denied', 'closed'],
92
- delegated: ['done', 'done', 'done', 'done', 'active', 'armed'],
93
- };
94
- /** walks the six boundaries of one modality into the stage rows. */
95
- function walkstages(modality) {
96
- return boundaries.map((boundary, index) => ({
97
- index: boundary.index,
98
- namekey: boundary.namekey,
99
- state: stageladder[modality][index],
100
- }));
101
- }
102
- function fixtureenvelope(boundary, configuration = {}) {
103
- if (boundary === 'planning')
104
- return { boundary, requestid: 'web.fixture.plan', payload: fixture };
105
- if (boundary === 'policy' || boundary === 'execution')
106
- return {
107
- boundary,
108
- requestid: `web.fixture.${boundary}`,
109
- payload: { request: fixture, configuration },
110
- };
111
- return { boundary, requestid: `web.fixture.${boundary}`, payload: {} };
112
- }
113
- export default function Playground() {
114
- const [mode, setMode] = useState('default');
115
- const configuration = useMemo(() => mode === 'delegated'
116
- ? {
117
- policy: { alloweffects: ['binary-execution'], allowtargets: ['remote'] },
118
- approval: { effects: ['binary-execution'], targets: ['remote'] },
119
- adapter: { owner: 'operator', capabilities: ['binary-execution'] },
120
- }
121
- : {}, [mode]);
122
- const projection = useMemo(() => internalapi().handle(fixtureenvelope('execution', configuration)), [configuration]);
123
- const handoff = projection.data.handoff;
124
- return (_jsxs(PageShell, { section: label('playground.shell.section'), label: label('playground.shell.label'), title: label('playground.shell.title'), intro: label('playground.shell.intro'), children: [_jsxs("section", { className: "content-section split-content", children: [_jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: label('playground.split.eyebrow') }), _jsxs("h2", { className: "section-title", children: [label('playground.split.title1'), _jsx("br", {}), _jsx("span", { children: label('playground.split.title2') })] })] }), _jsxs("div", { className: "prose-copy", children: [_jsx("p", { children: label('playground.split.body1') }), _jsx("p", { children: label('playground.split.body2') })] })] }), _jsxs("section", { className: "content-section", children: [_jsxs("div", { className: "content-section-heading", children: [_jsx("p", { className: "eyebrow", children: label('playground.boundaries.eyebrow') }), _jsx("span", { className: "mono-label", children: label('playground.boundaries.mono') })] }), _jsx("div", { className: "playground-boundaries", children: boundaries.map(({ index, namekey, detailkey, icon: Icon }, cardindex) => (_jsxs("article", { className: "playground-boundary", style: { '--stagger-i': cardindex }, children: [_jsx("span", { children: index }), _jsx(Icon, { fontSize: 18 }), _jsx("strong", { children: label(namekey) }), _jsx("small", { children: label(detailkey) })] }, namekey))) })] }), _jsxs("section", { className: "content-section", "aria-label": label('playground.modalities.aria'), children: [_jsxs("div", { className: "content-section-heading", children: [_jsx("p", { className: "eyebrow", children: label('playground.modalities.eyebrow') }), _jsx("span", { className: "mono-label", children: label('playground.modalities.mono') })] }), _jsx("div", { className: "r3-modality", children: modalitycards.map((card, cardindex) => (_jsxs("article", { className: mode === card.id ? 'r3-modality-card is-on' : 'r3-modality-card', style: { '--stagger-i': cardindex }, children: [_jsxs("button", { type: "button", className: "r3-modality-key", "aria-pressed": mode === card.id, "data-tip": label(card.tipkey), onClick: () => setMode(card.id), children: [_jsx("span", { className: "r3-modality-index", children: card.index }), _jsx("span", { className: "r3-modality-name", children: label(card.namekey) }), _jsx("span", { className: "r3-modality-code", children: label(card.codekey) })] }), _jsx("p", { className: "r3-modality-verdict", children: label(card.verdictkey) }), _jsx("ol", { className: "r3-walk", "aria-label": labelfill('playground.walkAria', { name: label(card.namekey) }), children: walkstages(card.id).map((stage) => (_jsxs("li", { className: "r3-walkstage", "data-state": stage.state, children: [_jsx("span", { className: "r3-walkstage-index", children: stage.index }), _jsx("span", { className: "r3-walkstage-name", children: label(stage.namekey) }), _jsx("span", { className: "r3-walkstage-state", children: stage.state })] }, stage.namekey))) })] }, card.id))) })] }), _jsxs("section", { className: "content-section playground-layout", children: [_jsxs("div", { className: "playground-console", children: [_jsxs("div", { className: "console-head", children: [_jsxs("span", { children: [_jsx(Activity, { fontSize: 14 }), " ", label('playground.projection.title')] }), _jsxs("span", { className: handoff.state === 'execution-disabled' ? 'console-denied' : 'console-pass', children: [handoff.state === 'execution-disabled' ? (_jsx(Ban, { fontSize: 13 })) : (_jsx(ShieldCheck, { fontSize: 13 })), ' ', handoff.code] })] }), _jsxs("div", { className: "playground-console-body", children: [_jsxs("div", { className: "playground-row", children: [_jsx("span", { children: label('playground.row.request') }), _jsx("b", { children: fixture.id })] }), _jsxs("div", { className: "playground-row", children: [_jsx("span", { children: label('playground.row.effect') }), _jsx("b", { children: fixture.effect })] }), _jsxs("div", { className: "playground-row", children: [_jsx("span", { children: label('playground.row.target') }), _jsx("b", { children: fixture.target })] }), _jsxs("div", { className: "playground-row", children: [_jsx("span", { children: label('playground.row.outcome') }), _jsx("b", { children: handoff.state })] }), _jsxs("div", { className: "playground-row", children: [_jsx("span", { children: label('playground.row.effects') }), _jsx("b", { children: JSON.stringify(projection.effects) })] }), _jsx("pre", { children: JSON.stringify(handoff, null, 2) })] }), _jsxs("div", { className: "console-footer", children: [_jsx("span", { children: label('playground.footer.fixture') }), _jsx("span", { children: label('playground.footer.adapter') })] })] }), _jsxs("aside", { className: "playground-controls", children: [_jsx("p", { className: "eyebrow", children: label('playground.controls.eyebrow') }), _jsx("h3", { children: label('playground.controls.title') }), _jsx("p", { children: label('playground.controls.body') }), _jsx("p", { className: "r3-modality-note", role: "status", children: label(mode === 'delegated'
125
- ? 'playground.controls.projectingDelegated'
126
- : 'playground.controls.projectingDefault') })] })] }), _jsxs("section", { className: "content-section note-band", children: [_jsx(Network, { fontSize: 21 }), _jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: label('playground.note.eyebrow') }), _jsx("p", { children: label('playground.note.body') })] })] })] }));
127
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * register page anchor — layer 3 of the anchor architecture.
3
- * The file carrying the folder's own name is the path manager of the page:
4
- * it imports the loose components beside it, mounts the page and re-exports
5
- * the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
6
- * this file. This anchor carries the former main component of the folder,
7
- * which now lives here as the page mount itself.
8
- */
9
- export * from '../wingets';
10
- /** meta description carried by the absorbed static page. */
11
- export declare const registerpagedescription = "saddle account creation: username and password only, no e-mail by project policy";
12
- /**
13
- * the create-account page: brand lockup, the instrument card (form beside
14
- * the live trust rail) and the policy footer.
15
- */
16
- export default function Register(): import("react").JSX.Element;
@@ -1,193 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * register page anchor — layer 3 of the anchor architecture.
4
- * The file carrying the folder's own name is the path manager of the page:
5
- * it imports the loose components beside it, mounts the page and re-exports
6
- * the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
7
- * this file. This anchor carries the former main component of the folder,
8
- * which now lives here as the page mount itself.
9
- */
10
- // Account creation page: faithful absorption of register.html + register.js —
11
- // username charset validation (3-32 of [a-z0-9.-], lowercased as the visitor
12
- // types), password strength meter, confirmation match, then POST
13
- // /api/v1/auth/register with the localauth fallback for the static edge.
14
- // R3-saddle: one instrument card with an asymmetric interior — the form
15
- // (1.2fr) beside the trust rail (1fr) that carries the live rules checklist,
16
- // the strength meter and the real policy facts; 44px inputs, sand focus ring.
17
- import { useEffect, useRef, useState } from 'react';
18
- import { Link, useLocation } from 'wouter';
19
- import { apibase, apierrormessage, apifetch, apistatustext } from '../../api';
20
- import { label } from '../../labels.ts';
21
- import { PasswordConfirm as PasswordConfirm } from '../wingets';
22
- import { PasswordMeter as PasswordMeter } from '../wingets';
23
- import { UsernameRules as UsernameRules, usernamere } from '../wingets';
24
- export * from '../wingets';
25
- /** meta description carried by the absorbed static page. */
26
- export const registerpagedescription = 'saddle account creation: username and password only, no e-mail by project policy';
27
- /** the real policy facts of the trust rail: the labels ride the store. */
28
- function trustfacts() {
29
- return [
30
- {
31
- label: label('register.trust.identityLabel'),
32
- body: label('register.trust.identityBody'),
33
- },
34
- {
35
- label: label('register.trust.hashingLabel'),
36
- body: label('register.trust.hashingBody'),
37
- },
38
- {
39
- label: label('register.trust.charsetLabel'),
40
- body: label('register.trust.charsetBody'),
41
- },
42
- {
43
- label: label('register.trust.sessionLabel'),
44
- body: label('register.trust.sessionBody'),
45
- },
46
- ];
47
- }
48
- /**
49
- * the create-account page: brand lockup, the instrument card (form beside
50
- * the live trust rail) and the policy footer.
51
- */
52
- export default function Register() {
53
- const [, navigate] = useLocation();
54
- const usernameref = useRef(null);
55
- const [username, setUsername] = useState('');
56
- const [password, setPassword] = useState('');
57
- const [confirmation, setConfirmation] = useState('');
58
- const [usernameinvalid, setUsernameinvalid] = useState(false);
59
- const [passwordinvalid, setPasswordinvalid] = useState(false);
60
- const [confirminvalid, setConfirminvalid] = useState(false);
61
- const [error, setError] = useState('');
62
- const [pending, setPending] = useState(false);
63
- const [succeeded, setSucceeded] = useState(false);
64
- const [apimode, setApimode] = useState('probing');
65
- const [statusline, setStatusline] = useState(apistatustext());
66
- /** static edge detection: probe the api once; no answer -> local mode. */
67
- useEffect(() => {
68
- let cancelled = false;
69
- const detect = async () => {
70
- const base = apibase();
71
- const localauth = await import('../../localauth.ts');
72
- const apianswers = await localauth.probe(base);
73
- if (cancelled)
74
- return;
75
- if (!apianswers) {
76
- setApimode('local');
77
- setStatusline(label('register.status.local'));
78
- }
79
- else {
80
- setApimode('remote');
81
- }
82
- };
83
- detect().catch(() => {
84
- if (!cancelled)
85
- setApimode('local');
86
- });
87
- return () => {
88
- cancelled = true;
89
- };
90
- }, []);
91
- /** username field focus, like the static page controller. */
92
- useEffect(() => {
93
- usernameref.current?.focus();
94
- }, []);
95
- /** auto-lowercase the username while typing (selection restored). */
96
- const onusernamechange = (event) => {
97
- const input = event.target;
98
- const lowered = input.value.toLowerCase();
99
- if (lowered !== input.value) {
100
- const start = input.selectionStart ?? input.value.length;
101
- const position = start - (input.value.length - lowered.length);
102
- input.value = lowered;
103
- try {
104
- input.setSelectionRange(position, position);
105
- }
106
- catch {
107
- /* selection restore is cosmetic */
108
- }
109
- }
110
- setUsername(input.value);
111
- };
112
- const onsubmit = async (event) => {
113
- event.preventDefault();
114
- setError('');
115
- let valid = true;
116
- if (!usernamere.test(username)) {
117
- setUsernameinvalid(true);
118
- valid = false;
119
- }
120
- else {
121
- setUsernameinvalid(false);
122
- }
123
- if (password.length < 8) {
124
- setPasswordinvalid(true);
125
- valid = false;
126
- }
127
- else {
128
- setPasswordinvalid(false);
129
- }
130
- if (password !== confirmation) {
131
- setConfirminvalid(true);
132
- valid = false;
133
- }
134
- else {
135
- setConfirminvalid(false);
136
- }
137
- if (!valid) {
138
- setError(label('register.error.fixFields'));
139
- return;
140
- }
141
- setPending(true);
142
- /* static edge: no api at this base -> browser-local account */
143
- if (apimode === 'local') {
144
- try {
145
- const localauth = await import('../../localauth.ts');
146
- await localauth.register(username, password);
147
- setSucceeded(true);
148
- navigate('/dashboard');
149
- }
150
- catch (registererror) {
151
- const message = registererror instanceof Error ? registererror.message : label('register.error.localFailed');
152
- setError(message);
153
- setPending(false);
154
- }
155
- return;
156
- }
157
- try {
158
- const response = await apifetch('/api/v1/auth/register', {
159
- method: 'POST',
160
- body: JSON.stringify({ username, password }),
161
- });
162
- if (response.ok) {
163
- /* the backend sets the saddlesession cookie: straight to the dashboard */
164
- setSucceeded(true);
165
- navigate('/dashboard');
166
- return;
167
- }
168
- if (response.status === 404) {
169
- setError(label('register.error.noRegister'));
170
- }
171
- else {
172
- let message = label('register.error.generic');
173
- if (response.status === 400 || response.status === 409 || response.status === 429) {
174
- const payloadmessage = await apierrormessage(response);
175
- if (payloadmessage !== null) {
176
- message = payloadmessage;
177
- }
178
- }
179
- setError(message);
180
- }
181
- }
182
- catch {
183
- setError(label('register.error.unreachable'));
184
- }
185
- setPending(false);
186
- };
187
- const hintstate = username.length > 0 && !usernamere.test(username)
188
- ? 'auth-hint bad'
189
- : usernamere.test(username)
190
- ? 'auth-hint ok'
191
- : 'auth-hint';
192
- return (_jsx("div", { className: "auth-frame", children: _jsxs("div", { className: "r3-authcard r3-authcard-wide", children: [_jsxs("header", { className: "auth-head", children: [_jsx(Link, { href: "/", className: "brand-lockup", children: _jsx("span", { className: "brand-wordmark", children: label('register.brand') }) }), _jsx("span", { className: "auth-tagline", children: label('register.tagline') })] }), _jsxs("main", { className: "r3-authgrid", children: [_jsxs("section", { className: "auth-panel", "aria-labelledby": "formtitle", children: [_jsx("h2", { className: "auth-panel-title", id: "formtitle", children: label('register.panel.title') }), succeeded ? (_jsxs("div", { className: "auth-success", children: [_jsx("p", { className: "auth-success-title", role: "status", "aria-live": "polite", children: label('register.success.title') }), _jsxs("p", { className: "auth-statusline", children: [label('register.success.continue'), ' ', _jsx(Link, { href: "/dashboard", children: label('register.success.dashboardLink') }), _jsx("span", { "aria-hidden": "true", children: " \u00B7 " }), _jsx(Link, { href: "/login", children: label('register.success.signinLink') })] })] })) : (_jsxs("form", { className: "auth-form", noValidate: true, onSubmit: onsubmit, children: [_jsxs("div", { className: "auth-field", children: [_jsx("label", { htmlFor: "username", children: label('register.field.username') }), _jsx("input", { ref: usernameref, className: "auth-input", id: "username", name: "username", type: "text", autoComplete: "username", spellCheck: false, autoCapitalize: "none", required: true, minLength: 3, maxLength: 32, pattern: "[a-z0-9.-]{3,32}", "aria-invalid": usernameinvalid ? 'true' : undefined, "aria-describedby": "usernamehint", value: username, onChange: onusernamechange }), _jsx("p", { className: hintstate, id: "usernamehint", children: label('register.hint.username') })] }), _jsxs("div", { className: "auth-field", children: [_jsx("label", { htmlFor: "password", children: label('register.field.password') }), _jsx("input", { className: "auth-input", id: "password", name: "password", type: "password", autoComplete: "new-password", required: true, minLength: 8, "aria-invalid": passwordinvalid ? 'true' : undefined, "aria-describedby": "passwordhint", value: password, onChange: (event) => setPassword(event.target.value) })] }), _jsx(PasswordConfirm, { password: password, value: confirmation, invalid: confirminvalid, onChange: setConfirmation }), error !== '' && (_jsx("p", { className: "auth-formerror", role: "alert", "aria-live": "polite", children: error })), _jsx("button", { className: "button button-primary auth-submit", type: "submit", disabled: pending, children: pending ? label('register.submitPending') : label('register.submit') })] }))] }), _jsxs("aside", { className: "r3-authtrust", "aria-label": label('register.trust.aria'), children: [_jsx("p", { className: "eyebrow", children: label('register.trust.eyebrow') }), _jsx(UsernameRules, { value: username }), _jsx("div", { className: "r3-trustmeter", children: _jsx(PasswordMeter, { password: password }) }), _jsx("ul", { className: "r3-trustlist", children: trustfacts().map((fact) => (_jsxs("li", { className: "r3-trustfact", children: [_jsx("span", { className: "r3-trustlabel", children: fact.label }), _jsx("span", { className: "r3-trustbody", children: fact.body })] }, fact.label))) })] })] }), _jsx("p", { className: "auth-statusline", children: statusline }), _jsxs("p", { className: "auth-statusline", children: [label('register.already'), " ", _jsx(Link, { href: "/login", children: label('register.signinLink') }), _jsx("span", { "aria-hidden": "true", children: " \u00B7 " }), _jsx(Link, { href: "/console", children: label('register.backConsole') })] }), _jsxs("footer", { className: "auth-foot", children: [_jsx("span", { children: label('register.footer.policy') }), _jsx("span", { className: "auth-foot-right", children: label('register.footer.hashing') })] })] }) }));
193
- }
@@ -1,124 +0,0 @@
1
- import * as TooltipPrimitive from '@radix-ui/react-tooltip';
2
- import { type VariantProps } from 'class-variance-authority';
3
- import { TableRegular as LayoutDashboard } from '@fluentui/react-icons';
4
- import type * as React from 'react';
5
- import { Component, type ReactNode } from 'react';
6
- import { type ToasterProps } from 'sonner';
7
- import type { MediaSlot } from '../../catalog.ts';
8
- type Theme = 'light' | 'dark';
9
- interface ThemeContextType {
10
- theme: Theme;
11
- toggleTheme?: () => void;
12
- switchable: boolean;
13
- }
14
- interface ThemeProviderProps {
15
- children: React.ReactNode;
16
- defaultTheme?: Theme;
17
- switchable?: boolean;
18
- }
19
- export declare function ThemeProvider({ children, defaultTheme, switchable, }: ThemeProviderProps): React.JSX.Element;
20
- export declare function useTheme(): ThemeContextType;
21
- interface ErrorBoundaryProps {
22
- children: ReactNode;
23
- }
24
- interface ErrorBoundaryState {
25
- hasError: boolean;
26
- error: Error | null;
27
- }
28
- export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
29
- constructor(props: ErrorBoundaryProps);
30
- static getDerivedStateFromError(error: Error): ErrorBoundaryState;
31
- render(): string | number | bigint | boolean | React.JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | React.ReactPortal>;
32
- }
33
- type SaddleMarkProps = {
34
- className?: string;
35
- label?: string;
36
- /** rendered square size in px; omitted, the mark is sized by the class */
37
- size?: number;
38
- /** hides the mark from the accessibility tree (decorative placements) */
39
- hidden?: boolean;
40
- /** the hero flow: the light band riding INSIDE the glyph strokes (spec §9);
41
- * only the landing hero consumes it — the chrome and intro sizes stay still */
42
- flow?: boolean;
43
- };
44
- export declare function SaddleMark({ className, label, size, hidden, flow }: SaddleMarkProps): React.JSX.Element;
45
- type SectionRailProps = {
46
- number: string;
47
- label: string;
48
- };
49
- export declare function SectionRail({ number, label }: SectionRailProps): React.JSX.Element;
50
- /** one legacy nav entry (the prop shape the page anchors type against) */
51
- export type NavLink = {
52
- label: string;
53
- href: string;
54
- };
55
- /** one entry of the window rail: a page surface of the app with its glyph. */
56
- export type StartApp = {
57
- href: string;
58
- label: string;
59
- detail: string;
60
- icon: typeof LayoutDashboard;
61
- };
62
- /** one rail SECTION: a mono-labelled group of page entries. */
63
- export type RailSection = {
64
- id: string;
65
- label: string;
66
- apps: readonly StartApp[];
67
- };
68
- /** the rail of the app, SECTIONED: workspace, platform, library and
69
- * account — one entry per page route, the apex home first. exported for
70
- * the onboarding copy beside this folder. */
71
- export declare const NAV_SECTIONS: readonly RailSection[];
72
- /** the pages the window hosts, flattened (the onboarding facts read this). */
73
- export declare const START_APPS: readonly StartApp[];
74
- /** the app surface props: the routed page plus the legacy page props the
75
- * anchors still pass (name, nav, cta, footer links, container width) — the
76
- * app grammar names itself, so only the theme toggle switch is consumed. */
77
- type ShellProps = {
78
- children: ReactNode;
79
- name?: string;
80
- nav?: readonly NavLink[];
81
- cta?: NavLink;
82
- contained?: boolean;
83
- footerLinks?: readonly NavLink[];
84
- themeButton?: boolean;
85
- domain?: string;
86
- };
87
- /**
88
- * the app surface: the SECTIONED page rail and the routed stage beside it,
89
- * owning the whole viewport.
90
- *
91
- * @param children the routed page.
92
- * @returns the app surface element.
93
- */
94
- export declare function Shell({ children, themeButton }: ShellProps): React.JSX.Element;
95
- export default Shell;
96
- type PageShellProps = {
97
- section: string;
98
- label: string;
99
- title: string;
100
- intro: string;
101
- children: ReactNode;
102
- media?: MediaSlot;
103
- };
104
- export declare function PageShell({ section, label: pagelabel, title, intro, children, media }: PageShellProps): React.JSX.Element;
105
- declare const buttonVariants: (props?: {
106
- variant?: "default" | "destructive" | "ghost" | "link" | "outline" | "secondary";
107
- size?: "default" | "icon" | "icon-lg" | "icon-sm" | "lg" | "sm";
108
- } & import("class-variance-authority/types").ClassProp) => string;
109
- declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
110
- asChild?: boolean;
111
- }): React.JSX.Element;
112
- declare function Card({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
113
- declare function CardHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
114
- declare function CardTitle({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
115
- declare function CardDescription({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
116
- declare function CardAction({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
117
- declare function CardContent({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
118
- declare function CardFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
119
- declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): React.JSX.Element;
120
- declare function Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>): React.JSX.Element;
121
- declare function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>): React.JSX.Element;
122
- declare function TooltipContent({ className, sideOffset, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>): React.JSX.Element;
123
- declare const Toaster: ({ ...props }: ToasterProps) => React.JSX.Element;
124
- export { Button, buttonVariants, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, };