@wenathlan/saddle 2.0.154 → 2.0.155

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 (307) hide show
  1. package/Dockerfile +112 -41
  2. package/README.md +58 -59
  3. package/browser.ts +482 -0
  4. package/cli.ts +274 -0
  5. package/distribution.ts +731 -0
  6. package/docker.config +29 -8
  7. package/docs/artifactavailability.md +2 -2
  8. package/docs/browser.md +18 -1
  9. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  10. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  11. package/docs/extension.md +13 -2
  12. package/docs/libraryapi.md +1 -1
  13. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  14. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  15. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  16. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  17. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  18. package/docs/todo.md +2 -2
  19. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  20. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  21. package/execution.ts +677 -0
  22. package/foundation.ts +314 -0
  23. package/index.ts +35 -27
  24. package/isolation.ts +84 -0
  25. package/modes.ts +170 -0
  26. package/mttg.config +1 -1
  27. package/orchestrator.ts +49 -15
  28. package/package.json +90 -75
  29. package/qemu.config +2 -2
  30. package/sandbox.ts +2094 -0
  31. package/scheduler.ts +1 -1
  32. package/server.ts +52 -0
  33. package/tsconfig.json +11 -12
  34. package/virtual.ts +1105 -0
  35. package/virtualgpu.ts +1 -1
  36. package/virtualization.ts +1 -1
  37. package/workloadlaw.ts +293 -0
  38. package/dist/App.d.ts +0 -5
  39. package/dist/App.js +0 -52
  40. package/dist/Sol/Sol.d.ts +0 -3
  41. package/dist/Sol/Sol.js +0 -46
  42. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  43. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  44. package/dist/Sol/architecture/architecture.d.ts +0 -9
  45. package/dist/Sol/architecture/architecture.js +0 -93
  46. package/dist/Sol/compute/compute.d.ts +0 -9
  47. package/dist/Sol/compute/compute.js +0 -22
  48. package/dist/Sol/console/console.d.ts +0 -15
  49. package/dist/Sol/console/console.js +0 -292
  50. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  51. package/dist/Sol/dashboard/dashboard.js +0 -181
  52. package/dist/Sol/docs/docs.d.ts +0 -9
  53. package/dist/Sol/docs/docs.js +0 -28
  54. package/dist/Sol/home/home.d.ts +0 -35
  55. package/dist/Sol/home/home.js +0 -239
  56. package/dist/Sol/integrations/integrations.d.ts +0 -9
  57. package/dist/Sol/integrations/integrations.js +0 -83
  58. package/dist/Sol/intro/intro.d.ts +0 -7
  59. package/dist/Sol/intro/intro.js +0 -102
  60. package/dist/Sol/login/login.d.ts +0 -16
  61. package/dist/Sol/login/login.js +0 -49
  62. package/dist/Sol/notfound/notfound.d.ts +0 -9
  63. package/dist/Sol/notfound/notfound.js +0 -15
  64. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  65. package/dist/Sol/onboarding/onboarding.js +0 -60
  66. package/dist/Sol/playground/playground.d.ts +0 -9
  67. package/dist/Sol/playground/playground.js +0 -127
  68. package/dist/Sol/register/register.d.ts +0 -16
  69. package/dist/Sol/register/register.js +0 -193
  70. package/dist/Sol/shell/Shell.d.ts +0 -124
  71. package/dist/Sol/shell/Shell.js +0 -335
  72. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  73. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  74. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  75. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  76. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  77. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  78. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  79. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  80. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  81. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  82. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  83. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  84. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  85. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  86. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  87. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  88. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  89. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  90. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  91. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  92. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  93. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  94. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  95. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  96. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  97. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  98. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  100. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  102. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  103. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  104. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  105. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  106. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  107. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  108. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  109. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  110. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  111. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  112. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  113. package/dist/Sol/wingets/LoginForm.js +0 -141
  114. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  115. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  116. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  117. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  118. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  119. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  120. package/dist/Sol/wingets/index.d.ts +0 -39
  121. package/dist/Sol/wingets/index.js +0 -39
  122. package/dist/alternatives.d.ts +0 -508
  123. package/dist/alternatives.js +0 -950
  124. package/dist/api.d.ts +0 -154
  125. package/dist/api.js +0 -174
  126. package/dist/auth.d.ts +0 -268
  127. package/dist/auth.js +0 -476
  128. package/dist/automation.d.ts +0 -425
  129. package/dist/automation.js +0 -566
  130. package/dist/browser.d.ts +0 -561
  131. package/dist/browser.js +0 -1058
  132. package/dist/capacitor.config.d.ts +0 -45
  133. package/dist/capacitor.config.js +0 -48
  134. package/dist/catalog.d.ts +0 -43
  135. package/dist/catalog.js +0 -44
  136. package/dist/cli.d.ts +0 -16
  137. package/dist/cli.js +0 -168
  138. package/dist/communication.d.ts +0 -181
  139. package/dist/communication.js +0 -376
  140. package/dist/compute.d.ts +0 -1160
  141. package/dist/compute.js +0 -2272
  142. package/dist/dashboardlib.d.ts +0 -58
  143. package/dist/dashboardlib.js +0 -161
  144. package/dist/db.d.ts +0 -569
  145. package/dist/db.js +0 -1080
  146. package/dist/distribution.d.ts +0 -528
  147. package/dist/distribution.js +0 -810
  148. package/dist/drizzle.config.d.ts +0 -20
  149. package/dist/drizzle.config.js +0 -18
  150. package/dist/edgelandes.d.ts +0 -70
  151. package/dist/edgelandes.host.d.ts +0 -26
  152. package/dist/edgelandes.host.js +0 -1089
  153. package/dist/edgelandes.inproc.d.ts +0 -27
  154. package/dist/edgelandes.inproc.js +0 -952
  155. package/dist/edgelandes.js +0 -1133
  156. package/dist/edgelandes.ninety.d.ts +0 -31
  157. package/dist/edgelandes.ninety.js +0 -174
  158. package/dist/edgelandes.virtual.d.ts +0 -25
  159. package/dist/edgelandes.virtual.js +0 -629
  160. package/dist/edgeplane.d.ts +0 -121
  161. package/dist/edgeplane.js +0 -341
  162. package/dist/examplelocaljob.d.ts +0 -1
  163. package/dist/examplelocaljob.js +0 -14
  164. package/dist/execution.d.ts +0 -529
  165. package/dist/execution.js +0 -760
  166. package/dist/family.d.ts +0 -16
  167. package/dist/family.js +0 -42
  168. package/dist/familyurl.d.ts +0 -21
  169. package/dist/familyurl.js +0 -24
  170. package/dist/format.d.ts +0 -18
  171. package/dist/format.js +0 -59
  172. package/dist/foundation.d.ts +0 -172
  173. package/dist/foundation.js +0 -312
  174. package/dist/index.d.ts +0 -735
  175. package/dist/index.js +0 -1020
  176. package/dist/integration.d.ts +0 -235
  177. package/dist/integration.js +0 -228
  178. package/dist/intelligence.d.ts +0 -93
  179. package/dist/intelligence.js +0 -144
  180. package/dist/isolation.d.ts +0 -128
  181. package/dist/isolation.js +0 -95
  182. package/dist/labels.d.ts +0 -665
  183. package/dist/labels.js +0 -707
  184. package/dist/localauth.d.ts +0 -127
  185. package/dist/localauth.js +0 -413
  186. package/dist/media.d.ts +0 -343
  187. package/dist/media.js +0 -985
  188. package/dist/mesh.d.ts +0 -177
  189. package/dist/mesh.js +0 -468
  190. package/dist/modalityregistry.d.ts +0 -109
  191. package/dist/modalityregistry.js +0 -1386
  192. package/dist/modes.d.ts +0 -358
  193. package/dist/modes.js +0 -133
  194. package/dist/onboardingstate.d.ts +0 -79
  195. package/dist/onboardingstate.js +0 -282
  196. package/dist/orchestrator.d.ts +0 -1338
  197. package/dist/orchestrator.js +0 -4310
  198. package/dist/packager/targetcli.js +0 -4
  199. package/dist/paths.d.ts +0 -2
  200. package/dist/paths.js +0 -14
  201. package/dist/performance.d.ts +0 -415
  202. package/dist/performance.js +0 -826
  203. package/dist/quantum.d.ts +0 -809
  204. package/dist/quantum.js +0 -2072
  205. package/dist/render.d.ts +0 -380
  206. package/dist/render.js +0 -1072
  207. package/dist/runall.d.ts +0 -2
  208. package/dist/runall.js +0 -39
  209. package/dist/runtimeprobe.d.ts +0 -4
  210. package/dist/runtimeprobe.js +0 -8
  211. package/dist/sandbox.d.ts +0 -355
  212. package/dist/sandbox.js +0 -1721
  213. package/dist/sandboxenvprofile.d.ts +0 -29
  214. package/dist/sandboxenvprofile.js +0 -89
  215. package/dist/sandboxprofile.d.ts +0 -137
  216. package/dist/sandboxprofile.js +0 -241
  217. package/dist/sandboxqueue.d.ts +0 -108
  218. package/dist/sandboxqueue.js +0 -201
  219. package/dist/sandboxquota.d.ts +0 -121
  220. package/dist/sandboxquota.js +0 -236
  221. package/dist/scheduler.d.ts +0 -595
  222. package/dist/scheduler.js +0 -1258
  223. package/dist/scriptlanes.d.ts +0 -182
  224. package/dist/scriptlanes.js +0 -660
  225. package/dist/scripts.buildengine.d.ts +0 -1
  226. package/dist/scripts.buildengine.js +0 -39
  227. package/dist/scripts.securitygate.d.ts +0 -1
  228. package/dist/scripts.securitygate.js +0 -68
  229. package/dist/scripts.validateflatnative.d.ts +0 -1
  230. package/dist/scripts.validateflatnative.js +0 -72
  231. package/dist/security.d.ts +0 -500
  232. package/dist/security.js +0 -1169
  233. package/dist/seedcatalog.d.ts +0 -13
  234. package/dist/seedcatalog.js +0 -46
  235. package/dist/server.d.ts +0 -20
  236. package/dist/server.js +0 -53
  237. package/dist/speccatalog.d.ts +0 -31
  238. package/dist/speccatalog.js +0 -163
  239. package/dist/tiers.d.ts +0 -1001
  240. package/dist/tiers.js +0 -2169
  241. package/dist/utils.d.ts +0 -2
  242. package/dist/utils.js +0 -5
  243. package/dist/vaulthandoff.d.ts +0 -141
  244. package/dist/vaulthandoff.js +0 -444
  245. package/dist/virtual.d.ts +0 -640
  246. package/dist/virtual.js +0 -1284
  247. package/dist/virtualcpu.d.ts +0 -315
  248. package/dist/virtualcpu.js +0 -1180
  249. package/dist/virtualgpu.d.ts +0 -344
  250. package/dist/virtualgpu.js +0 -1000
  251. package/dist/virtualization.d.ts +0 -606
  252. package/dist/virtualization.js +0 -1186
  253. package/dist/virtualmemory.d.ts +0 -817
  254. package/dist/virtualmemory.js +0 -1795
  255. package/dist/vite.config.d.ts +0 -3
  256. package/dist/vite.config.js +0 -48
  257. package/dist/vitest.config.d.ts +0 -2
  258. package/dist/vitest.config.js +0 -25
  259. package/dist/webserver.d.ts +0 -166
  260. package/dist/webserver.js +0 -2226
  261. package/dist/workloadlaw.d.ts +0 -133
  262. package/dist/workloadlaw.js +0 -193
  263. package/manifest.json +0 -20
  264. package/media.ts +0 -1337
  265. /package/docs/{architecture.1.8.19.md → architecture1819.md} +0 -0
  266. /package/docs/{architecture.1.8.19.mmd → architecture1819.mmd} +0 -0
  267. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  268. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  269. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  270. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  271. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  272. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  273. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  274. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  275. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  276. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  277. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  278. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  279. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  280. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  281. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  282. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  283. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  284. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  285. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  286. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  287. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  288. /package/docs/{repo.analysis.1.8.21.json → repoanalysis1821.json} +0 -0
  289. /package/docs/{repo.candidates.1.8.21.jsonl → repocandidates1821.jsonl} +0 -0
  290. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  291. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  292. /package/docs/{repo.selected.1.8.21.json → reposelected1821.json} +0 -0
  293. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  294. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  295. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  296. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  297. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  298. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  299. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  300. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  301. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  302. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  303. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  304. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  305. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  306. /package/docs/{web.ideas.md → webideas.md} +0 -0
  307. /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, };