@eifi1/ui-kit 0.29.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/README.md +65 -6
  2. package/dist/account/account-parts.d.ts +21 -0
  3. package/dist/account/account-parts.js +40 -0
  4. package/dist/account/account-parts.js.map +1 -0
  5. package/dist/account/data-export-setting.d.ts +73 -0
  6. package/dist/account/data-export-setting.js +114 -0
  7. package/dist/account/data-export-setting.js.map +1 -0
  8. package/dist/account/delete-account-setting.d.ts +95 -0
  9. package/dist/account/delete-account-setting.js +200 -0
  10. package/dist/account/delete-account-setting.js.map +1 -0
  11. package/dist/account/email-change-setting.d.ts +136 -0
  12. package/dist/account/email-change-setting.js +278 -0
  13. package/dist/account/email-change-setting.js.map +1 -0
  14. package/dist/account/sessions-setting.d.ts +110 -0
  15. package/dist/account/sessions-setting.js +147 -0
  16. package/dist/account/sessions-setting.js.map +1 -0
  17. package/dist/admin/admin-action-confirm.d.ts +95 -0
  18. package/dist/admin/admin-action-confirm.js +276 -0
  19. package/dist/admin/admin-action-confirm.js.map +1 -0
  20. package/dist/admin/admin-action-log.d.ts +105 -0
  21. package/dist/admin/admin-action-log.js +153 -0
  22. package/dist/admin/admin-action-log.js.map +1 -0
  23. package/dist/admin/admin-parts.d.ts +40 -0
  24. package/dist/admin/admin-parts.js +45 -0
  25. package/dist/admin/admin-parts.js.map +1 -0
  26. package/dist/admin/invitations-panel.d.ts +95 -0
  27. package/dist/admin/invitations-panel.js +290 -0
  28. package/dist/admin/invitations-panel.js.map +1 -0
  29. package/dist/admin/reviewer-scope-editor.d.ts +95 -0
  30. package/dist/admin/reviewer-scope-editor.js +134 -0
  31. package/dist/admin/reviewer-scope-editor.js.map +1 -0
  32. package/dist/admin/role-select.d.ts +95 -0
  33. package/dist/admin/role-select.js +128 -0
  34. package/dist/admin/role-select.js.map +1 -0
  35. package/dist/admin/transfer-ownership-dialog.d.ts +95 -0
  36. package/dist/admin/transfer-ownership-dialog.js +83 -0
  37. package/dist/admin/transfer-ownership-dialog.js.map +1 -0
  38. package/dist/admin/user-roster.d.ts +95 -0
  39. package/dist/admin/user-roster.js +285 -0
  40. package/dist/admin/user-roster.js.map +1 -0
  41. package/dist/auth/auth-errors.d.ts +103 -6
  42. package/dist/auth/auth-errors.js +68 -2
  43. package/dist/auth/auth-errors.js.map +1 -1
  44. package/dist/auth/forgot-password-form.d.ts +10 -3
  45. package/dist/auth/forgot-password-form.js +6 -3
  46. package/dist/auth/forgot-password-form.js.map +1 -1
  47. package/dist/auth/register-form.d.ts +21 -12
  48. package/dist/auth/register-form.js +6 -4
  49. package/dist/auth/register-form.js.map +1 -1
  50. package/dist/auth/reset-password-form.d.ts +10 -3
  51. package/dist/auth/reset-password-form.js +6 -3
  52. package/dist/auth/reset-password-form.js.map +1 -1
  53. package/dist/auth/sign-in-form.d.ts +75 -9
  54. package/dist/auth/sign-in-form.js +105 -15
  55. package/dist/auth/sign-in-form.js.map +1 -1
  56. package/dist/auth/verify-email.d.ts +7 -2
  57. package/dist/auth/verify-email.js +44 -8
  58. package/dist/auth/verify-email.js.map +1 -1
  59. package/dist/chart.d.ts +20 -11
  60. package/dist/components/account-chips.d.ts +47 -7
  61. package/dist/components/account-chips.js +19 -3
  62. package/dist/components/account-chips.js.map +1 -1
  63. package/dist/components/account-settings-labels.d.ts +24 -1
  64. package/dist/components/account-settings-labels.js +6 -2
  65. package/dist/components/account-settings-labels.js.map +1 -1
  66. package/dist/components/account-settings.d.ts +69 -8
  67. package/dist/components/account-settings.js +133 -25
  68. package/dist/components/account-settings.js.map +1 -1
  69. package/dist/components/amount-input.d.ts +21 -12
  70. package/dist/components/button-group.d.ts +21 -12
  71. package/dist/components/calculator.d.ts +21 -12
  72. package/dist/components/confirm-dialog.d.ts +21 -12
  73. package/dist/components/copy-button.d.ts +18 -9
  74. package/dist/components/danger-confirm.d.ts +21 -12
  75. package/dist/components/data-table.js +8 -1
  76. package/dist/components/data-table.js.map +1 -1
  77. package/dist/components/date-picker.js +9 -4
  78. package/dist/components/date-picker.js.map +1 -1
  79. package/dist/components/facing-pair.d.ts +21 -12
  80. package/dist/components/file-button.d.ts +21 -12
  81. package/dist/components/file-dropzone.d.ts +21 -12
  82. package/dist/components/form-actions.d.ts +21 -12
  83. package/dist/components/iban-input.d.ts +21 -12
  84. package/dist/components/language-select.d.ts +21 -12
  85. package/dist/components/legal-page.d.ts +21 -12
  86. package/dist/components/legal.d.ts +21 -12
  87. package/dist/components/money-field.d.ts +21 -12
  88. package/dist/components/number-field.d.ts +21 -12
  89. package/dist/components/number-input.d.ts +21 -12
  90. package/dist/components/numpad-sheet.d.ts +21 -12
  91. package/dist/components/passkeys-setting.js +2 -1
  92. package/dist/components/passkeys-setting.js.map +1 -1
  93. package/dist/components/phone-input.d.ts +21 -12
  94. package/dist/components/series-chart.d.ts +21 -12
  95. package/dist/components/settings-fields.d.ts +55 -13
  96. package/dist/components/settings-fields.js +20 -1
  97. package/dist/components/settings-fields.js.map +1 -1
  98. package/dist/components/share-card.d.ts +20 -11
  99. package/dist/components/text-link.d.ts +21 -12
  100. package/dist/components/time-input.d.ts +21 -12
  101. package/dist/components/ui.d.ts +17 -8
  102. package/dist/{register-form-V1OeNlMr.d.ts → delete-account-setting-DCFS5Vof.d.ts} +6612 -5612
  103. package/dist/demo/demo-banner.d.ts +51 -0
  104. package/dist/demo/demo-banner.js +97 -0
  105. package/dist/demo/demo-banner.js.map +1 -0
  106. package/dist/demo/demo-countdown.d.ts +58 -0
  107. package/dist/demo/demo-countdown.js +79 -0
  108. package/dist/demo/demo-countdown.js.map +1 -0
  109. package/dist/demo/demo-ended.d.ts +45 -0
  110. package/dist/demo/demo-ended.js +42 -0
  111. package/dist/demo/demo-ended.js.map +1 -0
  112. package/dist/demo/demo-labels.d.ts +53 -0
  113. package/dist/demo/demo-labels.js +29 -0
  114. package/dist/demo/demo-labels.js.map +1 -0
  115. package/dist/demo/demo-session.d.ts +30 -0
  116. package/dist/demo/demo-session.js +8 -0
  117. package/dist/demo/demo-session.js.map +1 -0
  118. package/dist/demo/demo-start.d.ts +54 -0
  119. package/dist/demo/demo-start.js +68 -0
  120. package/dist/demo/demo-start.js.map +1 -0
  121. package/dist/feedback/feedback-attachment.d.ts +21 -12
  122. package/dist/feedback/feedback-context.d.ts +21 -12
  123. package/dist/feedback/feedback-crash.d.ts +21 -12
  124. package/dist/feedback/feedback-dialog.d.ts +21 -12
  125. package/dist/feedback/feedback-inbox.d.ts +21 -12
  126. package/dist/feedback/feedback-inbox.js +12 -2
  127. package/dist/feedback/feedback-inbox.js.map +1 -1
  128. package/dist/feedback/feedback-labels.d.ts +21 -12
  129. package/dist/feedback/feedback-labels.js +1 -0
  130. package/dist/feedback/feedback-labels.js.map +1 -1
  131. package/dist/feedback/feedback-menu.d.ts +21 -12
  132. package/dist/feedback/feedback-record.d.ts +21 -12
  133. package/dist/feedback/feedback-record.js +2 -0
  134. package/dist/feedback/feedback-record.js.map +1 -1
  135. package/dist/feedback/feedback-row-detail.d.ts +21 -12
  136. package/dist/feedback/feedback-row-detail.js +7 -0
  137. package/dist/feedback/feedback-row-detail.js.map +1 -1
  138. package/dist/feedback/feedback-status-undo.d.ts +21 -12
  139. package/dist/feedback/feedback-submit.d.ts +21 -12
  140. package/dist/feedback/feedback-swipe.d.ts +22 -13
  141. package/dist/feedback/feedback-swipe.js.map +1 -1
  142. package/dist/feedback/feedback-table.d.ts +18 -9
  143. package/dist/feedback/feedback-thread.d.ts +21 -12
  144. package/dist/feedback.d.ts +21 -12
  145. package/dist/hooks/use-anchored-panel.d.ts +6 -2
  146. package/dist/hooks/use-anchored-panel.js +2 -1
  147. package/dist/hooks/use-anchored-panel.js.map +1 -1
  148. package/dist/hooks/use-file-drop.d.ts +21 -12
  149. package/dist/i18n/defaults.d.ts +21 -12
  150. package/dist/i18n/defaults.js +28 -0
  151. package/dist/i18n/defaults.js.map +1 -1
  152. package/dist/i18n/german.d.ts +21 -12
  153. package/dist/i18n/german.js +298 -12
  154. package/dist/i18n/german.js.map +1 -1
  155. package/dist/i18n/kit-labels.d.ts +14 -5
  156. package/dist/i18n/kit-labels.js.map +1 -1
  157. package/dist/i18n/languages.d.ts +15 -6
  158. package/dist/i18n/locales/de-CH.d.ts +21 -12
  159. package/dist/i18n/locales/en.d.ts +21 -12
  160. package/dist/i18n/locales/es.d.ts +21 -12
  161. package/dist/i18n/locales/es.js +287 -10
  162. package/dist/i18n/locales/es.js.map +1 -1
  163. package/dist/i18n/locales/fr.d.ts +21 -12
  164. package/dist/i18n/locales/fr.js +290 -7
  165. package/dist/i18n/locales/fr.js.map +1 -1
  166. package/dist/i18n/locales/hu.d.ts +21 -12
  167. package/dist/i18n/locales/hu.js +288 -12
  168. package/dist/i18n/locales/hu.js.map +1 -1
  169. package/dist/i18n/locales/it.d.ts +21 -12
  170. package/dist/i18n/locales/it.js +289 -7
  171. package/dist/i18n/locales/it.js.map +1 -1
  172. package/dist/i18n/locales/zh.d.ts +21 -12
  173. package/dist/i18n/locales/zh.js +279 -7
  174. package/dist/i18n/locales/zh.js.map +1 -1
  175. package/dist/i18n/review.d.ts +21 -12
  176. package/dist/i18n/review.js +50 -1
  177. package/dist/i18n/review.js.map +1 -1
  178. package/dist/index.d.ts +31 -4
  179. package/dist/index.js +148 -0
  180. package/dist/index.js.map +1 -1
  181. package/dist/landing/access.d.ts +48 -0
  182. package/dist/landing/access.js +38 -0
  183. package/dist/landing/access.js.map +1 -0
  184. package/dist/landing/landing-actions.d.ts +138 -0
  185. package/dist/landing/landing-actions.js +39 -0
  186. package/dist/landing/landing-actions.js.map +1 -0
  187. package/dist/landing/landing-labels.d.ts +43 -0
  188. package/dist/landing/landing-labels.js +23 -0
  189. package/dist/landing/landing-labels.js.map +1 -0
  190. package/dist/landing/landing-sections.d.ts +218 -0
  191. package/dist/landing/landing-sections.js +167 -0
  192. package/dist/landing/landing-sections.js.map +1 -0
  193. package/dist/landing/page-seo.d.ts +99 -0
  194. package/dist/landing/page-seo.js +121 -0
  195. package/dist/landing/page-seo.js.map +1 -0
  196. package/dist/landing/public-header.d.ts +148 -0
  197. package/dist/landing/public-header.js +49 -0
  198. package/dist/landing/public-header.js.map +1 -0
  199. package/dist/landing/routing.d.ts +218 -0
  200. package/dist/landing/routing.js +81 -0
  201. package/dist/landing/routing.js.map +1 -0
  202. package/dist/rhf/fields.d.ts +21 -12
  203. package/dist/rhf/form.d.ts +21 -12
  204. package/dist/rhf.d.ts +21 -12
  205. package/dist/settings/settings-catalogue.d.ts +84 -0
  206. package/dist/settings/settings-catalogue.js +47 -0
  207. package/dist/settings/settings-catalogue.js.map +1 -0
  208. package/dist/settings/settings-context.d.ts +31 -0
  209. package/dist/settings/settings-context.js +11 -0
  210. package/dist/settings/settings-context.js.map +1 -0
  211. package/dist/settings/settings-heading.d.ts +50 -0
  212. package/dist/settings/settings-heading.js +27 -0
  213. package/dist/settings/settings-heading.js.map +1 -0
  214. package/dist/settings/settings-labels.d.ts +41 -0
  215. package/dist/settings/settings-labels.js +38 -0
  216. package/dist/settings/settings-labels.js.map +1 -0
  217. package/dist/settings/settings-layout.d.ts +77 -0
  218. package/dist/settings/settings-layout.js +242 -0
  219. package/dist/settings/settings-layout.js.map +1 -0
  220. package/dist/settings/settings-section.d.ts +133 -0
  221. package/dist/settings/settings-section.js +63 -0
  222. package/dist/settings/settings-section.js.map +1 -0
  223. package/dist/settings/use-account-language.d.ts +83 -0
  224. package/dist/settings/use-account-language.js +62 -0
  225. package/dist/settings/use-account-language.js.map +1 -0
  226. package/dist/settings/use-settings-focus.d.ts +34 -0
  227. package/dist/settings/use-settings-focus.js +77 -0
  228. package/dist/settings/use-settings-focus.js.map +1 -0
  229. package/dist/settings/use-settings-route.d.ts +118 -0
  230. package/dist/settings/use-settings-route.js +120 -0
  231. package/dist/settings/use-settings-route.js.map +1 -0
  232. package/dist/shell/app-shell.d.ts +27 -12
  233. package/dist/shell/app-shell.js +3 -2
  234. package/dist/shell/app-shell.js.map +1 -1
  235. package/dist/shell/top-bar-brand.d.ts +21 -12
  236. package/dist/shell.d.ts +25 -6
  237. package/dist/shell.js +56 -0
  238. package/dist/shell.js.map +1 -1
  239. package/dist/wizard/stepper-nav.d.ts +21 -12
  240. package/dist/wizard.d.ts +21 -12
  241. package/package.json +2 -1
  242. package/src/account/account-parts.ts +67 -0
  243. package/src/account/data-export-setting.tsx +219 -0
  244. package/src/account/delete-account-setting.tsx +363 -0
  245. package/src/account/email-change-setting.tsx +454 -0
  246. package/src/account/sessions-setting.tsx +284 -0
  247. package/src/admin/admin-action-confirm.tsx +495 -0
  248. package/src/admin/admin-action-log.tsx +297 -0
  249. package/src/admin/admin-parts.ts +82 -0
  250. package/src/admin/invitations-panel.tsx +523 -0
  251. package/src/admin/reviewer-scope-editor.tsx +234 -0
  252. package/src/admin/role-select.tsx +286 -0
  253. package/src/admin/transfer-ownership-dialog.tsx +172 -0
  254. package/src/admin/user-roster.tsx +573 -0
  255. package/src/auth/auth-errors.ts +196 -8
  256. package/src/auth/forgot-password-form.tsx +21 -5
  257. package/src/auth/register-form.tsx +24 -6
  258. package/src/auth/reset-password-form.tsx +19 -5
  259. package/src/auth/sign-in-form.tsx +241 -38
  260. package/src/auth/verify-email.tsx +59 -8
  261. package/src/components/account-chips.tsx +64 -7
  262. package/src/components/account-settings-labels.ts +28 -1
  263. package/src/components/account-settings.tsx +231 -34
  264. package/src/components/data-table.tsx +8 -0
  265. package/src/components/date-picker.tsx +9 -4
  266. package/src/components/passkeys-setting.tsx +2 -1
  267. package/src/components/settings-fields.tsx +50 -1
  268. package/src/demo/demo-banner.tsx +159 -0
  269. package/src/demo/demo-countdown.ts +141 -0
  270. package/src/demo/demo-ended.tsx +89 -0
  271. package/src/demo/demo-labels.ts +78 -0
  272. package/src/demo/demo-session.ts +32 -0
  273. package/src/demo/demo-start.tsx +150 -0
  274. package/src/feedback/feedback-inbox.tsx +21 -8
  275. package/src/feedback/feedback-labels.ts +2 -1
  276. package/src/feedback/feedback-record.ts +10 -7
  277. package/src/feedback/feedback-row-detail.tsx +28 -4
  278. package/src/feedback/feedback-swipe.tsx +1 -1
  279. package/src/hooks/use-anchored-panel.ts +14 -3
  280. package/src/i18n/defaults.ts +28 -0
  281. package/src/i18n/german.ts +327 -5
  282. package/src/i18n/kit-labels.tsx +42 -0
  283. package/src/i18n/locales/es.ts +313 -3
  284. package/src/i18n/locales/fr.ts +316 -0
  285. package/src/i18n/locales/hu.ts +308 -5
  286. package/src/i18n/locales/it.ts +313 -0
  287. package/src/i18n/locales/zh.ts +286 -0
  288. package/src/i18n/review.ts +49 -0
  289. package/src/index.ts +184 -0
  290. package/src/landing/access.ts +97 -0
  291. package/src/landing/landing-actions.tsx +92 -0
  292. package/src/landing/landing-labels.ts +59 -0
  293. package/src/landing/landing-sections.tsx +337 -0
  294. package/src/landing/page-seo.ts +251 -0
  295. package/src/landing/public-header.tsx +120 -0
  296. package/src/landing/routing.tsx +209 -0
  297. package/src/settings/settings-catalogue.ts +132 -0
  298. package/src/settings/settings-context.ts +33 -0
  299. package/src/settings/settings-heading.tsx +65 -0
  300. package/src/settings/settings-labels.ts +75 -0
  301. package/src/settings/settings-layout.tsx +379 -0
  302. package/src/settings/settings-section.tsx +108 -0
  303. package/src/settings/use-account-language.ts +146 -0
  304. package/src/settings/use-settings-focus.ts +120 -0
  305. package/src/settings/use-settings-route.ts +258 -0
  306. package/src/shell/app-shell.tsx +10 -2
  307. package/src/shell.ts +45 -0
@@ -0,0 +1,68 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import { cn } from "../lib/cn.js";
5
+ import { AlertBanner } from "../components/alert-banner.js";
6
+ import { Button, Spinner } from "../components/ui.js";
7
+ import { useNoIndex } from "../hooks/use-noindex.js";
8
+ import { authErrorCode, isRateLimited, retryAfterSeconds } from "../auth/auth-errors.js";
9
+ import { useOncePerKey } from "../auth/status-parts.js";
10
+ import { useAccessAction } from "../landing/access.js";
11
+ import { useDemoLabels } from "./demo-labels.js";
12
+ function refusalOf(error) {
13
+ const code = authErrorCode(error);
14
+ if (code === "demo_capacity") return { reason: "capacity" };
15
+ if (code === "demo_disabled" || code === "demo_not_ready") return { reason: "unavailable" };
16
+ if (code === "demo_rate_limited" || code === void 0 && isRateLimited(error)) {
17
+ const seconds = retryAfterSeconds(error);
18
+ return { reason: "rateLimited", minutes: seconds ? Math.ceil(seconds / 60) : void 0 };
19
+ }
20
+ return { reason: "failed" };
21
+ }
22
+ function messageOf(refusal, labels) {
23
+ switch (refusal.reason) {
24
+ case "rateLimited":
25
+ return labels.rateLimited(refusal.minutes);
26
+ case "capacity":
27
+ return labels.capacity;
28
+ case "unavailable":
29
+ return labels.unavailable;
30
+ case "failed":
31
+ return labels.failed;
32
+ }
33
+ }
34
+ const ONCE = "demo";
35
+ function DemoStart({
36
+ start,
37
+ onStarted,
38
+ access,
39
+ backHref = "/",
40
+ noIndex = true,
41
+ labels: labelsProp,
42
+ landingLabels,
43
+ className,
44
+ ...rest
45
+ }) {
46
+ const labels = useDemoLabels(labelsProp);
47
+ const accessLink = useAccessAction(access, landingLabels);
48
+ const [refusal, setRefusal] = useState(null);
49
+ useNoIndex(noIndex);
50
+ useOncePerKey(ONCE, () => start(), (_key, result) => {
51
+ if (result.ok) onStarted(result.value);
52
+ else setRefusal(refusalOf(result.error));
53
+ });
54
+ return /* @__PURE__ */ jsxs("div", { ...rest, className: cn("flex flex-col items-center gap-4 py-4 text-center", className), children: [
55
+ /* @__PURE__ */ jsx("div", { role: "status", "aria-live": "polite", className: "w-full", children: refusal === null ? /* @__PURE__ */ jsxs("p", { className: "flex items-center justify-center gap-2 text-sm text-[var(--text-secondary)]", children: [
56
+ /* @__PURE__ */ jsx(Spinner, { label: null, className: "size-5" }),
57
+ labels.starting
58
+ ] }) : /* @__PURE__ */ jsx(AlertBanner, { tone: refusal.reason === "failed" ? "danger" : "warning", className: "text-start", children: messageOf(refusal, labels) }) }),
59
+ refusal !== null && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap justify-center gap-3", children: [
60
+ /* @__PURE__ */ jsx(Button, { href: accessLink.href, variant: "brand", children: accessLink.label }),
61
+ /* @__PURE__ */ jsx(Button, { href: backHref, variant: "secondary", children: labels.backToStart })
62
+ ] })
63
+ ] });
64
+ }
65
+ export {
66
+ DemoStart
67
+ };
68
+ //# sourceMappingURL=demo-start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/demo/demo-start.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { AlertBanner } from \"../components/alert-banner\";\nimport { Button, Spinner } from \"../components/ui\";\nimport { useNoIndex } from \"../hooks/use-noindex\";\nimport { authErrorCode, isRateLimited, retryAfterSeconds } from \"../auth/auth-errors\";\nimport { useOncePerKey } from \"../auth/status-parts\";\nimport { useAccessAction } from \"../landing/access\";\nimport type { AccessChoice } from \"../landing/access\";\nimport type { LandingLabels } from \"../landing/landing-labels\";\nimport { useDemoLabels } from \"./demo-labels\";\nimport type { DemoLabels } from \"./demo-labels\";\n\n/** Why a start was refused, in the page's terms (§5.2). */\ntype Refusal =\n | { reason: \"rateLimited\"; minutes?: number }\n | { reason: \"capacity\" }\n | { reason: \"unavailable\" }\n | { reason: \"failed\" };\n\n/**\n * The server's answer to `POST /auth/demo-session`, read as a refusal (§5.1, §6.2):\n * `demo_rate_limited` (429, with `Retry-After`), `demo_capacity` (429, without),\n * `demo_disabled` (404) and `demo_not_ready` (503) by their codes; a bare 429 as the\n * per-IP window too; anything else is a plain failure.\n */\nfunction refusalOf(error: unknown): Refusal {\n const code = authErrorCode(error);\n if (code === \"demo_capacity\") return { reason: \"capacity\" };\n if (code === \"demo_disabled\" || code === \"demo_not_ready\") return { reason: \"unavailable\" };\n if (code === \"demo_rate_limited\" || (code === undefined && isRateLimited(error))) {\n const seconds = retryAfterSeconds(error);\n return { reason: \"rateLimited\", minutes: seconds ? Math.ceil(seconds / 60) : undefined };\n }\n return { reason: \"failed\" };\n}\n\nfunction messageOf(refusal: Refusal, labels: DemoLabels): string {\n switch (refusal.reason) {\n case \"rateLimited\":\n return labels.rateLimited(refusal.minutes);\n case \"capacity\":\n return labels.capacity;\n case \"unavailable\":\n return labels.unavailable;\n case \"failed\":\n return labels.failed;\n }\n}\n\n/** The one start a mount makes. */\nconst ONCE = \"demo\";\n\nexport interface DemoStartProps<T> extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\"> {\n /**\n * Create the demo: the app's `POST /auth/demo-session {locale}`. Resolve with what it\n * answered (the `TokenResponse`, `refresh_token: null`, `expires_at`); reject with the\n * client's error — the codes are read out of it. Called once per mount.\n */\n start: () => Promise<T>;\n /** The demo exists: store the session (and, for kastlan, `kastlan.demoSession`) and\n * replace to the app's home. The page keeps saying \"Starting the demo…\" meanwhile. */\n onStarted: (session: T) => void;\n /** \"Request access\" beside a refusal. */\n access: AccessChoice;\n /** \"Back to the start page\". Default `/`. */\n backHref?: string;\n /** `false` adds no `noindex` — for a preview. Default `true`: `/demo` is never indexed\n * (§4.3). */\n noIndex?: boolean;\n labels?: Partial<DemoLabels>;\n /** The access words (`landing` namespace) for this instance. */\n landingLabels?: Partial<LandingLabels>;\n}\n\n/**\n * The `/demo` page's content (docs/landing-demo-harmonization.md §5.2): it starts the\n * demo ONCE — StrictMode's double mount included, keksdose's ref guard — and says\n * \"Starting the demo…\" until the app has the session and has moved on.\n *\n * A refusal says why, in the visitor's words, and offers \"Request access\" and \"Back to\n * the start page\":\n *\n * | code | says |\n * |---|---|\n * | `demo_rate_limited` (429) | \"Too many demos from this network. Try again in N min.\" — N from `Retry-After` |\n * | `demo_capacity` (429) | \"The demo is full right now. Try again later.\" |\n * | `demo_disabled` (404), `demo_not_ready` (503) | \"The demo isn't available right now.\" |\n * | anything else | \"The demo could not be started. Please try again.\" |\n *\n * keksdose fell back to `/register` with a toast; registration is invitation-only now,\n * so the way on is the access mail.\n *\n * Put it in the app's `AuthLayout`. A live demo session never reaches it: the `/demo`\n * route sits in `RedirectIfAuthed` WITHOUT `allowDemo`, which continues the live demo at\n * its resume target instead of starting a second one. A cold start is the kit's\n * `ServerWakeNotice`'s, once the app's watcher counts this POST\n * (`watchReadsAnd(/\\/auth\\/demo-session\\b/)`).\n */\nexport function DemoStart<T>({\n start,\n onStarted,\n access,\n backHref = \"/\",\n noIndex = true,\n labels: labelsProp,\n landingLabels,\n className,\n ...rest\n}: DemoStartProps<T>) {\n const labels = useDemoLabels(labelsProp);\n const accessLink = useAccessAction(access, landingLabels);\n const [refusal, setRefusal] = useState<Refusal | null>(null);\n useNoIndex(noIndex);\n useOncePerKey<T>(ONCE, () => start(), (_key, result) => {\n if (result.ok) onStarted(result.value);\n else setRefusal(refusalOf(result.error));\n });\n\n return (\n <div {...rest} className={cn(\"flex flex-col items-center gap-4 py-4 text-center\", className)}>\n {/* One live region, there from the start, so the refusal that replaces the\n progress line is announced (a region inserted with its text often is not). */}\n <div role=\"status\" aria-live=\"polite\" className=\"w-full\">\n {refusal === null ? (\n <p className=\"flex items-center justify-center gap-2 text-sm text-[var(--text-secondary)]\">\n <Spinner label={null} className=\"size-5\" />\n {labels.starting}\n </p>\n ) : (\n <AlertBanner tone={refusal.reason === \"failed\" ? \"danger\" : \"warning\"} className=\"text-start\">\n {messageOf(refusal, labels)}\n </AlertBanner>\n )}\n </div>\n {refusal !== null && (\n <div className=\"flex flex-wrap justify-center gap-3\">\n <Button href={accessLink.href} variant=\"brand\">\n {accessLink.label}\n </Button>\n <Button href={backHref} variant=\"secondary\">\n {labels.backToStart}\n </Button>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";AA+HU,SACE,KADF;AA/HV,SAAS,gBAAgB;AAGzB,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAC5B,SAAS,QAAQ,eAAe;AAChC,SAAS,kBAAkB;AAC3B,SAAS,eAAe,eAAe,yBAAyB;AAChE,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAGhC,SAAS,qBAAqB;AAgB9B,SAAS,UAAU,OAAyB;AAC1C,QAAM,OAAO,cAAc,KAAK;AAChC,MAAI,SAAS,gBAAiB,QAAO,EAAE,QAAQ,WAAW;AAC1D,MAAI,SAAS,mBAAmB,SAAS,iBAAkB,QAAO,EAAE,QAAQ,cAAc;AAC1F,MAAI,SAAS,uBAAwB,SAAS,UAAa,cAAc,KAAK,GAAI;AAChF,UAAM,UAAU,kBAAkB,KAAK;AACvC,WAAO,EAAE,QAAQ,eAAe,SAAS,UAAU,KAAK,KAAK,UAAU,EAAE,IAAI,OAAU;AAAA,EACzF;AACA,SAAO,EAAE,QAAQ,SAAS;AAC5B;AAEA,SAAS,UAAU,SAAkB,QAA4B;AAC/D,UAAQ,QAAQ,QAAQ;AAAA,IACtB,KAAK;AACH,aAAO,OAAO,YAAY,QAAQ,OAAO;AAAA,IAC3C,KAAK;AACH,aAAO,OAAO;AAAA,IAChB,KAAK;AACH,aAAO,OAAO;AAAA,IAChB,KAAK;AACH,aAAO,OAAO;AAAA,EAClB;AACF;AAGA,MAAM,OAAO;AAgDN,SAAS,UAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,QAAM,SAAS,cAAc,UAAU;AACvC,QAAM,aAAa,gBAAgB,QAAQ,aAAa;AACxD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAyB,IAAI;AAC3D,aAAW,OAAO;AAClB,gBAAiB,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,WAAW;AACtD,QAAI,OAAO,GAAI,WAAU,OAAO,KAAK;AAAA,QAChC,YAAW,UAAU,OAAO,KAAK,CAAC;AAAA,EACzC,CAAC;AAED,SACE,qBAAC,SAAK,GAAG,MAAM,WAAW,GAAG,qDAAqD,SAAS,GAGzF;AAAA,wBAAC,SAAI,MAAK,UAAS,aAAU,UAAS,WAAU,UAC7C,sBAAY,OACX,qBAAC,OAAE,WAAU,+EACX;AAAA,0BAAC,WAAQ,OAAO,MAAM,WAAU,UAAS;AAAA,MACxC,OAAO;AAAA,OACV,IAEA,oBAAC,eAAY,MAAM,QAAQ,WAAW,WAAW,WAAW,WAAW,WAAU,cAC9E,oBAAU,SAAS,MAAM,GAC5B,GAEJ;AAAA,IACC,YAAY,QACX,qBAAC,SAAI,WAAU,uCACb;AAAA,0BAAC,UAAO,MAAM,WAAW,MAAM,SAAQ,SACpC,qBAAW,OACd;AAAA,MACA,oBAAC,UAAO,MAAM,UAAU,SAAQ,aAC7B,iBAAO,aACV;AAAA,OACF;AAAA,KAEJ;AAEJ;","names":[]}
@@ -1,5 +1,8 @@
1
1
  import 'react';
2
- export { D as DEFAULT_ATTACHMENT_ACCEPT, e as DEFAULT_FEEDBACK_ATTACHMENT_LABELS, p as DEFAULT_MAX_ATTACHMENTS, q as DEFAULT_MAX_ATTACHMENT_BYTES, A as FeedbackAttachmentError, B as FeedbackAttachmentErrorInfo, E as FeedbackAttachmentField, G as FeedbackAttachmentFieldLabels, H as FeedbackAttachmentFieldMultipleProps, I as FeedbackAttachmentFieldProps, J as FeedbackAttachmentFieldRefsProps, K as FeedbackAttachmentFieldSingleProps, M as FeedbackAttachmentRef, N as FeedbackAttachmentRefsError, be as pastedName } from '../register-form-V1OeNlMr.js';
2
+ export { D as DEFAULT_ATTACHMENT_ACCEPT, e as DEFAULT_FEEDBACK_ATTACHMENT_LABELS, p as DEFAULT_MAX_ATTACHMENTS, q as DEFAULT_MAX_ATTACHMENT_BYTES, A as FeedbackAttachmentError, B as FeedbackAttachmentErrorInfo, E as FeedbackAttachmentField, G as FeedbackAttachmentFieldLabels, H as FeedbackAttachmentFieldMultipleProps, I as FeedbackAttachmentFieldProps, J as FeedbackAttachmentFieldRefsProps, K as FeedbackAttachmentFieldSingleProps, M as FeedbackAttachmentRef, N as FeedbackAttachmentRefsError, be as pastedName } from '../delete-account-setting-DCFS5Vof.js';
3
+ import '../components/tooltip.js';
4
+ import '../hooks/use-anchored-rect.js';
5
+ import '../lib/clipping.js';
3
6
  import '../data-table-labels-DUELeXpa.js';
4
7
  import '../components/data-table-sort.js';
5
8
  import '../components/swipeable-row.js';
@@ -9,10 +12,6 @@ import '../components/popover.js';
9
12
  import '../components/chip.js';
10
13
  import 'lucide-react';
11
14
  import '../components/field-sync.js';
12
- import '../components/tooltip.js';
13
- import '../hooks/use-anchored-rect.js';
14
- import '../lib/clipping.js';
15
- import '../components/field-parts.js';
16
15
  import '../wizard/types.js';
17
16
  import '../tour/tour.js';
18
17
  import '../search/command-palette.js';
@@ -55,6 +54,14 @@ import '../components/image-grid.js';
55
54
  import '../components/lightbox.js';
56
55
  import '../components/write-lock.js';
57
56
  import '../auth/sign-in-form.js';
57
+ import '../landing/access.js';
58
+ import '../landing/landing-labels.js';
59
+ import '../shell/topbar-controls.js';
60
+ import '../theme/palette-presets.js';
61
+ import '../theme/chart-palette.js';
62
+ import '../theme/theme-store.js';
63
+ import 'zustand/middleware';
64
+ import 'zustand';
58
65
  import '../auth/complete-name-dialog.js';
59
66
  import '../auth/forgot-password-form.js';
60
67
  import '../auth/status-parts.js';
@@ -63,8 +70,15 @@ import '../auth/verify-email.js';
63
70
  import '../auth/not-found-page.js';
64
71
  import '../auth/accept-invitation.js';
65
72
  import '../shell/company-switcher.js';
66
- import '../components/account-chips.js';
73
+ import '../account/email-change-setting.js';
74
+ import '../account/sessions-setting.js';
67
75
  import '../lib/format.js';
76
+ import '../account/data-export-setting.js';
77
+ import '../components/account-chips.js';
78
+ import '../admin/admin-parts.js';
79
+ import '../admin/admin-action-log.js';
80
+ import '../settings/settings-labels.js';
81
+ import '../demo/demo-labels.js';
68
82
  import '../components/reauth-dialog.js';
69
83
  import '../components/server-wake.js';
70
84
  import '../lib/server-wake.js';
@@ -78,9 +92,4 @@ import '../components/sign-chip.js';
78
92
  import '../components/column-mapper.js';
79
93
  import '../lib/column-mapping.js';
80
94
  import '../lib/table-text.js';
81
- import '../shell/topbar-controls.js';
82
- import '../theme/palette-presets.js';
83
- import '../theme/chart-palette.js';
84
- import '../theme/theme-store.js';
85
- import 'zustand/middleware';
86
- import 'zustand';
95
+ import '../components/field-parts.js';
@@ -1,5 +1,8 @@
1
1
  import 'react';
2
- export { h as DEFAULT_FEEDBACK_CONTEXT_LABELS, a0 as FeedbackContextBox, a1 as FeedbackContextBoxProps, a2 as FeedbackContextInput, a3 as FeedbackContextLabels, aM as FeedbackSubmitter, b2 as feedbackContext } from '../register-form-V1OeNlMr.js';
2
+ export { h as DEFAULT_FEEDBACK_CONTEXT_LABELS, a0 as FeedbackContextBox, a1 as FeedbackContextBoxProps, a2 as FeedbackContextInput, a3 as FeedbackContextLabels, aM as FeedbackSubmitter, b2 as feedbackContext } from '../delete-account-setting-DCFS5Vof.js';
3
+ import '../components/tooltip.js';
4
+ import '../hooks/use-anchored-rect.js';
5
+ import '../lib/clipping.js';
3
6
  import '../data-table-labels-DUELeXpa.js';
4
7
  import '../components/data-table-sort.js';
5
8
  import '../components/swipeable-row.js';
@@ -9,10 +12,6 @@ import '../components/popover.js';
9
12
  import '../components/chip.js';
10
13
  import 'lucide-react';
11
14
  import '../components/field-sync.js';
12
- import '../components/tooltip.js';
13
- import '../hooks/use-anchored-rect.js';
14
- import '../lib/clipping.js';
15
- import '../components/field-parts.js';
16
15
  import '../wizard/types.js';
17
16
  import '../tour/tour.js';
18
17
  import '../search/command-palette.js';
@@ -55,6 +54,14 @@ import '../components/image-grid.js';
55
54
  import '../components/lightbox.js';
56
55
  import '../components/write-lock.js';
57
56
  import '../auth/sign-in-form.js';
57
+ import '../landing/access.js';
58
+ import '../landing/landing-labels.js';
59
+ import '../shell/topbar-controls.js';
60
+ import '../theme/palette-presets.js';
61
+ import '../theme/chart-palette.js';
62
+ import '../theme/theme-store.js';
63
+ import 'zustand/middleware';
64
+ import 'zustand';
58
65
  import '../auth/complete-name-dialog.js';
59
66
  import '../auth/forgot-password-form.js';
60
67
  import '../auth/status-parts.js';
@@ -63,8 +70,15 @@ import '../auth/verify-email.js';
63
70
  import '../auth/not-found-page.js';
64
71
  import '../auth/accept-invitation.js';
65
72
  import '../shell/company-switcher.js';
66
- import '../components/account-chips.js';
73
+ import '../account/email-change-setting.js';
74
+ import '../account/sessions-setting.js';
67
75
  import '../lib/format.js';
76
+ import '../account/data-export-setting.js';
77
+ import '../components/account-chips.js';
78
+ import '../admin/admin-parts.js';
79
+ import '../admin/admin-action-log.js';
80
+ import '../settings/settings-labels.js';
81
+ import '../demo/demo-labels.js';
68
82
  import '../components/reauth-dialog.js';
69
83
  import '../components/server-wake.js';
70
84
  import '../lib/server-wake.js';
@@ -78,9 +92,4 @@ import '../components/sign-chip.js';
78
92
  import '../components/column-mapper.js';
79
93
  import '../lib/column-mapping.js';
80
94
  import '../lib/table-text.js';
81
- import '../shell/topbar-controls.js';
82
- import '../theme/palette-presets.js';
83
- import '../theme/chart-palette.js';
84
- import '../theme/theme-store.js';
85
- import 'zustand/middleware';
86
- import 'zustand';
95
+ import '../components/field-parts.js';
@@ -1,6 +1,9 @@
1
1
  import { CrashReport } from '../components/error-boundary.js';
2
- import { ah as FeedbackEnvironment } from '../register-form-V1OeNlMr.js';
2
+ import { ah as FeedbackEnvironment } from '../delete-account-setting-DCFS5Vof.js';
3
3
  import 'react';
4
+ import '../components/tooltip.js';
5
+ import '../hooks/use-anchored-rect.js';
6
+ import '../lib/clipping.js';
4
7
  import '../data-table-labels-DUELeXpa.js';
5
8
  import '../components/data-table-sort.js';
6
9
  import '../components/swipeable-row.js';
@@ -10,10 +13,6 @@ import '../components/popover.js';
10
13
  import '../components/chip.js';
11
14
  import 'lucide-react';
12
15
  import '../components/field-sync.js';
13
- import '../components/tooltip.js';
14
- import '../hooks/use-anchored-rect.js';
15
- import '../lib/clipping.js';
16
- import '../components/field-parts.js';
17
16
  import '../wizard/types.js';
18
17
  import '../tour/tour.js';
19
18
  import '../search/command-palette.js';
@@ -55,6 +54,14 @@ import '../components/image-grid.js';
55
54
  import '../components/lightbox.js';
56
55
  import '../components/write-lock.js';
57
56
  import '../auth/sign-in-form.js';
57
+ import '../landing/access.js';
58
+ import '../landing/landing-labels.js';
59
+ import '../shell/topbar-controls.js';
60
+ import '../theme/palette-presets.js';
61
+ import '../theme/chart-palette.js';
62
+ import '../theme/theme-store.js';
63
+ import 'zustand/middleware';
64
+ import 'zustand';
58
65
  import '../auth/complete-name-dialog.js';
59
66
  import '../auth/forgot-password-form.js';
60
67
  import '../auth/status-parts.js';
@@ -63,8 +70,15 @@ import '../auth/verify-email.js';
63
70
  import '../auth/not-found-page.js';
64
71
  import '../auth/accept-invitation.js';
65
72
  import '../shell/company-switcher.js';
66
- import '../components/account-chips.js';
73
+ import '../account/email-change-setting.js';
74
+ import '../account/sessions-setting.js';
67
75
  import '../lib/format.js';
76
+ import '../account/data-export-setting.js';
77
+ import '../components/account-chips.js';
78
+ import '../admin/admin-parts.js';
79
+ import '../admin/admin-action-log.js';
80
+ import '../settings/settings-labels.js';
81
+ import '../demo/demo-labels.js';
68
82
  import '../components/reauth-dialog.js';
69
83
  import '../components/server-wake.js';
70
84
  import '../lib/server-wake.js';
@@ -78,12 +92,7 @@ import '../components/sign-chip.js';
78
92
  import '../components/column-mapper.js';
79
93
  import '../lib/column-mapping.js';
80
94
  import '../lib/table-text.js';
81
- import '../shell/topbar-controls.js';
82
- import '../theme/palette-presets.js';
83
- import '../theme/chart-palette.js';
84
- import '../theme/theme-store.js';
85
- import 'zustand/middleware';
86
- import 'zustand';
95
+ import '../components/field-parts.js';
87
96
 
88
97
  /**
89
98
  * `POST /feedback/crash`'s body — `CrashReportCreate`, §3.6 (kk `schemas/feedback.py`),
@@ -1,5 +1,8 @@
1
1
  import 'react';
2
- export { j as DEFAULT_FEEDBACK_DIALOG_LABELS, L as FeedbackAttachmentLabels, T as FeedbackCategoryOption, a9 as FeedbackDialog, aa as FeedbackDialogLabels, ab as FeedbackDialogMultipleProps, ac as FeedbackDialogProps, ad as FeedbackDialogSingleProps, ae as FeedbackDialogTextLabels, an as FeedbackMultipleSubmission, aK as FeedbackSubmission, aL as FeedbackSubmitHint } from '../register-form-V1OeNlMr.js';
2
+ export { j as DEFAULT_FEEDBACK_DIALOG_LABELS, L as FeedbackAttachmentLabels, T as FeedbackCategoryOption, a9 as FeedbackDialog, aa as FeedbackDialogLabels, ab as FeedbackDialogMultipleProps, ac as FeedbackDialogProps, ad as FeedbackDialogSingleProps, ae as FeedbackDialogTextLabels, an as FeedbackMultipleSubmission, aK as FeedbackSubmission, aL as FeedbackSubmitHint } from '../delete-account-setting-DCFS5Vof.js';
3
+ import '../components/tooltip.js';
4
+ import '../hooks/use-anchored-rect.js';
5
+ import '../lib/clipping.js';
3
6
  import '../data-table-labels-DUELeXpa.js';
4
7
  import '../components/data-table-sort.js';
5
8
  import '../components/swipeable-row.js';
@@ -9,10 +12,6 @@ import '../components/popover.js';
9
12
  import '../components/chip.js';
10
13
  import 'lucide-react';
11
14
  import '../components/field-sync.js';
12
- import '../components/tooltip.js';
13
- import '../hooks/use-anchored-rect.js';
14
- import '../lib/clipping.js';
15
- import '../components/field-parts.js';
16
15
  import '../wizard/types.js';
17
16
  import '../tour/tour.js';
18
17
  import '../search/command-palette.js';
@@ -55,6 +54,14 @@ import '../components/image-grid.js';
55
54
  import '../components/lightbox.js';
56
55
  import '../components/write-lock.js';
57
56
  import '../auth/sign-in-form.js';
57
+ import '../landing/access.js';
58
+ import '../landing/landing-labels.js';
59
+ import '../shell/topbar-controls.js';
60
+ import '../theme/palette-presets.js';
61
+ import '../theme/chart-palette.js';
62
+ import '../theme/theme-store.js';
63
+ import 'zustand/middleware';
64
+ import 'zustand';
58
65
  import '../auth/complete-name-dialog.js';
59
66
  import '../auth/forgot-password-form.js';
60
67
  import '../auth/status-parts.js';
@@ -63,8 +70,15 @@ import '../auth/verify-email.js';
63
70
  import '../auth/not-found-page.js';
64
71
  import '../auth/accept-invitation.js';
65
72
  import '../shell/company-switcher.js';
66
- import '../components/account-chips.js';
73
+ import '../account/email-change-setting.js';
74
+ import '../account/sessions-setting.js';
67
75
  import '../lib/format.js';
76
+ import '../account/data-export-setting.js';
77
+ import '../components/account-chips.js';
78
+ import '../admin/admin-parts.js';
79
+ import '../admin/admin-action-log.js';
80
+ import '../settings/settings-labels.js';
81
+ import '../demo/demo-labels.js';
68
82
  import '../components/reauth-dialog.js';
69
83
  import '../components/server-wake.js';
70
84
  import '../lib/server-wake.js';
@@ -78,9 +92,4 @@ import '../components/sign-chip.js';
78
92
  import '../components/column-mapper.js';
79
93
  import '../lib/column-mapping.js';
80
94
  import '../lib/table-text.js';
81
- import '../shell/topbar-controls.js';
82
- import '../theme/palette-presets.js';
83
- import '../theme/chart-palette.js';
84
- import '../theme/theme-store.js';
85
- import 'zustand/middleware';
86
- import 'zustand';
95
+ import '../components/field-parts.js';
@@ -1,6 +1,9 @@
1
1
  import 'react';
2
2
  import 'lucide-react';
3
- export { t as FEEDBACK_CATEGORY_META, u as FEEDBACK_CATEGORY_ORDER, x as FEEDBACK_STATUS_META, y as FEEDBACK_STATUS_ORDER, Q as FeedbackCategory, R as FeedbackCategoryBadge, a4 as FeedbackDetail, a7 as FeedbackDetailSection, ao as FeedbackNoteAttachment, ap as FeedbackNoteEditor, ar as FeedbackProse, az as FeedbackStatus, aA as FeedbackStatusBadge, aG as FeedbackStatusTransitions, b0 as feedbackCategoryRank, bd as nextFeedbackStatus, bh as selectableFeedbackStatuses, bs as visibleFeedbackStatuses } from '../register-form-V1OeNlMr.js';
3
+ export { t as FEEDBACK_CATEGORY_META, u as FEEDBACK_CATEGORY_ORDER, x as FEEDBACK_STATUS_META, y as FEEDBACK_STATUS_ORDER, Q as FeedbackCategory, R as FeedbackCategoryBadge, a4 as FeedbackDetail, a7 as FeedbackDetailSection, ao as FeedbackNoteAttachment, ap as FeedbackNoteEditor, ar as FeedbackProse, az as FeedbackStatus, aA as FeedbackStatusBadge, aG as FeedbackStatusTransitions, b0 as feedbackCategoryRank, bd as nextFeedbackStatus, bh as selectableFeedbackStatuses, bs as visibleFeedbackStatuses } from '../delete-account-setting-DCFS5Vof.js';
4
+ import '../components/tooltip.js';
5
+ import '../hooks/use-anchored-rect.js';
6
+ import '../lib/clipping.js';
4
7
  import '../data-table-labels-DUELeXpa.js';
5
8
  import '../components/data-table-sort.js';
6
9
  import '../components/swipeable-row.js';
@@ -9,10 +12,6 @@ import '../components/calendar-heatmap.js';
9
12
  import '../components/popover.js';
10
13
  import '../components/chip.js';
11
14
  import '../components/field-sync.js';
12
- import '../components/tooltip.js';
13
- import '../hooks/use-anchored-rect.js';
14
- import '../lib/clipping.js';
15
- import '../components/field-parts.js';
16
15
  import '../wizard/types.js';
17
16
  import '../tour/tour.js';
18
17
  import '../search/command-palette.js';
@@ -55,6 +54,14 @@ import '../components/image-grid.js';
55
54
  import '../components/lightbox.js';
56
55
  import '../components/write-lock.js';
57
56
  import '../auth/sign-in-form.js';
57
+ import '../landing/access.js';
58
+ import '../landing/landing-labels.js';
59
+ import '../shell/topbar-controls.js';
60
+ import '../theme/palette-presets.js';
61
+ import '../theme/chart-palette.js';
62
+ import '../theme/theme-store.js';
63
+ import 'zustand/middleware';
64
+ import 'zustand';
58
65
  import '../auth/complete-name-dialog.js';
59
66
  import '../auth/forgot-password-form.js';
60
67
  import '../auth/status-parts.js';
@@ -63,8 +70,15 @@ import '../auth/verify-email.js';
63
70
  import '../auth/not-found-page.js';
64
71
  import '../auth/accept-invitation.js';
65
72
  import '../shell/company-switcher.js';
66
- import '../components/account-chips.js';
73
+ import '../account/email-change-setting.js';
74
+ import '../account/sessions-setting.js';
67
75
  import '../lib/format.js';
76
+ import '../account/data-export-setting.js';
77
+ import '../components/account-chips.js';
78
+ import '../admin/admin-parts.js';
79
+ import '../admin/admin-action-log.js';
80
+ import '../settings/settings-labels.js';
81
+ import '../demo/demo-labels.js';
68
82
  import '../components/reauth-dialog.js';
69
83
  import '../components/server-wake.js';
70
84
  import '../lib/server-wake.js';
@@ -78,9 +92,4 @@ import '../components/sign-chip.js';
78
92
  import '../components/column-mapper.js';
79
93
  import '../lib/column-mapping.js';
80
94
  import '../lib/table-text.js';
81
- import '../shell/topbar-controls.js';
82
- import '../theme/palette-presets.js';
83
- import '../theme/chart-palette.js';
84
- import '../theme/theme-store.js';
85
- import 'zustand/middleware';
86
- import 'zustand';
95
+ import '../components/field-parts.js';
@@ -5,6 +5,7 @@ import {
5
5
  Ban,
6
6
  Bug,
7
7
  CheckCircle2,
8
+ ClipboardCheck,
8
9
  CloudUpload,
9
10
  Eye,
10
11
  HelpCircle,
@@ -27,6 +28,15 @@ const FEEDBACK_STATUS_META = {
27
28
  activeBg: "bg-[var(--bg-active)]",
28
29
  activeText: "text-[var(--text-primary)]"
29
30
  },
31
+ // Triaged and released for implementation (feedback contract §8.2, keksdose live
32
+ // #396): OPEN is "filed, nobody has looked yet", READY is "go". The brand tint at full
33
+ // strength, so it reads as the go-ahead beside OPEN's neutral fill and
34
+ // NEEDS_LIVE_TEST's muted brand.
35
+ READY: {
36
+ icon: ClipboardCheck,
37
+ activeBg: "bg-[var(--brand-bg)]",
38
+ activeText: "text-[var(--brand)]"
39
+ },
30
40
  IN_PROGRESS: {
31
41
  icon: Wrench,
32
42
  activeBg: "bg-[var(--warning-bg)]",
@@ -74,7 +84,7 @@ const FEEDBACK_STATUS_META = {
74
84
  };
75
85
  const FEEDBACK_STATUS_ORDER = Object.keys(FEEDBACK_STATUS_META);
76
86
  const OFF_CHAIN = ["NEEDS_LIVE_TEST", "POSTPONED", "WONT_DO"];
77
- const FORWARD_CHAIN = ["OPEN", "IN_PROGRESS", "IN_EVALUATION", "DONE"];
87
+ const FORWARD_CHAIN = ["OPEN", "READY", "IN_PROGRESS", "IN_EVALUATION", "DONE"];
78
88
  function nextFeedbackStatus(current) {
79
89
  const at = FORWARD_CHAIN.indexOf(current);
80
90
  return at !== -1 && at < FORWARD_CHAIN.length - 1 ? FORWARD_CHAIN[at + 1] : null;
@@ -237,7 +247,7 @@ function FeedbackStatusTransitions({
237
247
  ),
238
248
  // Both stay unclickable, but only the read-only case is DIMMED: the
239
249
  // current status is the one thing in the row that has to be legible
240
- // at a glance, and among seven pills a faded active one reads as
250
+ // at a glance, and among eight pills a faded active one reads as
241
251
  // "unavailable" rather than as "this is where the row stands".
242
252
  (!canEdit || active) && "cursor-default",
243
253
  !canEdit && "opacity-60",