@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.
- package/README.md +65 -6
- package/dist/account/account-parts.d.ts +21 -0
- package/dist/account/account-parts.js +40 -0
- package/dist/account/account-parts.js.map +1 -0
- package/dist/account/data-export-setting.d.ts +73 -0
- package/dist/account/data-export-setting.js +114 -0
- package/dist/account/data-export-setting.js.map +1 -0
- package/dist/account/delete-account-setting.d.ts +95 -0
- package/dist/account/delete-account-setting.js +200 -0
- package/dist/account/delete-account-setting.js.map +1 -0
- package/dist/account/email-change-setting.d.ts +136 -0
- package/dist/account/email-change-setting.js +278 -0
- package/dist/account/email-change-setting.js.map +1 -0
- package/dist/account/sessions-setting.d.ts +110 -0
- package/dist/account/sessions-setting.js +147 -0
- package/dist/account/sessions-setting.js.map +1 -0
- package/dist/admin/admin-action-confirm.d.ts +95 -0
- package/dist/admin/admin-action-confirm.js +276 -0
- package/dist/admin/admin-action-confirm.js.map +1 -0
- package/dist/admin/admin-action-log.d.ts +105 -0
- package/dist/admin/admin-action-log.js +153 -0
- package/dist/admin/admin-action-log.js.map +1 -0
- package/dist/admin/admin-parts.d.ts +40 -0
- package/dist/admin/admin-parts.js +45 -0
- package/dist/admin/admin-parts.js.map +1 -0
- package/dist/admin/invitations-panel.d.ts +95 -0
- package/dist/admin/invitations-panel.js +290 -0
- package/dist/admin/invitations-panel.js.map +1 -0
- package/dist/admin/reviewer-scope-editor.d.ts +95 -0
- package/dist/admin/reviewer-scope-editor.js +134 -0
- package/dist/admin/reviewer-scope-editor.js.map +1 -0
- package/dist/admin/role-select.d.ts +95 -0
- package/dist/admin/role-select.js +128 -0
- package/dist/admin/role-select.js.map +1 -0
- package/dist/admin/transfer-ownership-dialog.d.ts +95 -0
- package/dist/admin/transfer-ownership-dialog.js +83 -0
- package/dist/admin/transfer-ownership-dialog.js.map +1 -0
- package/dist/admin/user-roster.d.ts +95 -0
- package/dist/admin/user-roster.js +285 -0
- package/dist/admin/user-roster.js.map +1 -0
- package/dist/auth/auth-errors.d.ts +103 -6
- package/dist/auth/auth-errors.js +68 -2
- package/dist/auth/auth-errors.js.map +1 -1
- package/dist/auth/forgot-password-form.d.ts +10 -3
- package/dist/auth/forgot-password-form.js +6 -3
- package/dist/auth/forgot-password-form.js.map +1 -1
- package/dist/auth/register-form.d.ts +21 -12
- package/dist/auth/register-form.js +6 -4
- package/dist/auth/register-form.js.map +1 -1
- package/dist/auth/reset-password-form.d.ts +10 -3
- package/dist/auth/reset-password-form.js +6 -3
- package/dist/auth/reset-password-form.js.map +1 -1
- package/dist/auth/sign-in-form.d.ts +75 -9
- package/dist/auth/sign-in-form.js +105 -15
- package/dist/auth/sign-in-form.js.map +1 -1
- package/dist/auth/verify-email.d.ts +7 -2
- package/dist/auth/verify-email.js +44 -8
- package/dist/auth/verify-email.js.map +1 -1
- package/dist/chart.d.ts +20 -11
- package/dist/components/account-chips.d.ts +47 -7
- package/dist/components/account-chips.js +19 -3
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/account-settings-labels.d.ts +24 -1
- package/dist/components/account-settings-labels.js +6 -2
- package/dist/components/account-settings-labels.js.map +1 -1
- package/dist/components/account-settings.d.ts +69 -8
- package/dist/components/account-settings.js +133 -25
- package/dist/components/account-settings.js.map +1 -1
- package/dist/components/amount-input.d.ts +21 -12
- package/dist/components/button-group.d.ts +21 -12
- package/dist/components/calculator.d.ts +21 -12
- package/dist/components/confirm-dialog.d.ts +21 -12
- package/dist/components/copy-button.d.ts +18 -9
- package/dist/components/danger-confirm.d.ts +21 -12
- package/dist/components/data-table.js +8 -1
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +9 -4
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/facing-pair.d.ts +21 -12
- package/dist/components/file-button.d.ts +21 -12
- package/dist/components/file-dropzone.d.ts +21 -12
- package/dist/components/form-actions.d.ts +21 -12
- package/dist/components/iban-input.d.ts +21 -12
- package/dist/components/language-select.d.ts +21 -12
- package/dist/components/legal-page.d.ts +21 -12
- package/dist/components/legal.d.ts +21 -12
- package/dist/components/money-field.d.ts +21 -12
- package/dist/components/number-field.d.ts +21 -12
- package/dist/components/number-input.d.ts +21 -12
- package/dist/components/numpad-sheet.d.ts +21 -12
- package/dist/components/passkeys-setting.js +2 -1
- package/dist/components/passkeys-setting.js.map +1 -1
- package/dist/components/phone-input.d.ts +21 -12
- package/dist/components/series-chart.d.ts +21 -12
- package/dist/components/settings-fields.d.ts +55 -13
- package/dist/components/settings-fields.js +20 -1
- package/dist/components/settings-fields.js.map +1 -1
- package/dist/components/share-card.d.ts +20 -11
- package/dist/components/text-link.d.ts +21 -12
- package/dist/components/time-input.d.ts +21 -12
- package/dist/components/ui.d.ts +17 -8
- package/dist/{register-form-V1OeNlMr.d.ts → delete-account-setting-DCFS5Vof.d.ts} +6612 -5612
- package/dist/demo/demo-banner.d.ts +51 -0
- package/dist/demo/demo-banner.js +97 -0
- package/dist/demo/demo-banner.js.map +1 -0
- package/dist/demo/demo-countdown.d.ts +58 -0
- package/dist/demo/demo-countdown.js +79 -0
- package/dist/demo/demo-countdown.js.map +1 -0
- package/dist/demo/demo-ended.d.ts +45 -0
- package/dist/demo/demo-ended.js +42 -0
- package/dist/demo/demo-ended.js.map +1 -0
- package/dist/demo/demo-labels.d.ts +53 -0
- package/dist/demo/demo-labels.js +29 -0
- package/dist/demo/demo-labels.js.map +1 -0
- package/dist/demo/demo-session.d.ts +30 -0
- package/dist/demo/demo-session.js +8 -0
- package/dist/demo/demo-session.js.map +1 -0
- package/dist/demo/demo-start.d.ts +54 -0
- package/dist/demo/demo-start.js +68 -0
- package/dist/demo/demo-start.js.map +1 -0
- package/dist/feedback/feedback-attachment.d.ts +21 -12
- package/dist/feedback/feedback-context.d.ts +21 -12
- package/dist/feedback/feedback-crash.d.ts +21 -12
- package/dist/feedback/feedback-dialog.d.ts +21 -12
- package/dist/feedback/feedback-inbox.d.ts +21 -12
- package/dist/feedback/feedback-inbox.js +12 -2
- package/dist/feedback/feedback-inbox.js.map +1 -1
- package/dist/feedback/feedback-labels.d.ts +21 -12
- package/dist/feedback/feedback-labels.js +1 -0
- package/dist/feedback/feedback-labels.js.map +1 -1
- package/dist/feedback/feedback-menu.d.ts +21 -12
- package/dist/feedback/feedback-record.d.ts +21 -12
- package/dist/feedback/feedback-record.js +2 -0
- package/dist/feedback/feedback-record.js.map +1 -1
- package/dist/feedback/feedback-row-detail.d.ts +21 -12
- package/dist/feedback/feedback-row-detail.js +7 -0
- package/dist/feedback/feedback-row-detail.js.map +1 -1
- package/dist/feedback/feedback-status-undo.d.ts +21 -12
- package/dist/feedback/feedback-submit.d.ts +21 -12
- package/dist/feedback/feedback-swipe.d.ts +22 -13
- package/dist/feedback/feedback-swipe.js.map +1 -1
- package/dist/feedback/feedback-table.d.ts +18 -9
- package/dist/feedback/feedback-thread.d.ts +21 -12
- package/dist/feedback.d.ts +21 -12
- package/dist/hooks/use-anchored-panel.d.ts +6 -2
- package/dist/hooks/use-anchored-panel.js +2 -1
- package/dist/hooks/use-anchored-panel.js.map +1 -1
- package/dist/hooks/use-file-drop.d.ts +21 -12
- package/dist/i18n/defaults.d.ts +21 -12
- package/dist/i18n/defaults.js +28 -0
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.d.ts +21 -12
- package/dist/i18n/german.js +298 -12
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +14 -5
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/languages.d.ts +15 -6
- package/dist/i18n/locales/de-CH.d.ts +21 -12
- package/dist/i18n/locales/en.d.ts +21 -12
- package/dist/i18n/locales/es.d.ts +21 -12
- package/dist/i18n/locales/es.js +287 -10
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +21 -12
- package/dist/i18n/locales/fr.js +290 -7
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.d.ts +21 -12
- package/dist/i18n/locales/hu.js +288 -12
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +21 -12
- package/dist/i18n/locales/it.js +289 -7
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +21 -12
- package/dist/i18n/locales/zh.js +279 -7
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.d.ts +21 -12
- package/dist/i18n/review.js +50 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +31 -4
- package/dist/index.js +148 -0
- package/dist/index.js.map +1 -1
- package/dist/landing/access.d.ts +48 -0
- package/dist/landing/access.js +38 -0
- package/dist/landing/access.js.map +1 -0
- package/dist/landing/landing-actions.d.ts +138 -0
- package/dist/landing/landing-actions.js +39 -0
- package/dist/landing/landing-actions.js.map +1 -0
- package/dist/landing/landing-labels.d.ts +43 -0
- package/dist/landing/landing-labels.js +23 -0
- package/dist/landing/landing-labels.js.map +1 -0
- package/dist/landing/landing-sections.d.ts +218 -0
- package/dist/landing/landing-sections.js +167 -0
- package/dist/landing/landing-sections.js.map +1 -0
- package/dist/landing/page-seo.d.ts +99 -0
- package/dist/landing/page-seo.js +121 -0
- package/dist/landing/page-seo.js.map +1 -0
- package/dist/landing/public-header.d.ts +148 -0
- package/dist/landing/public-header.js +49 -0
- package/dist/landing/public-header.js.map +1 -0
- package/dist/landing/routing.d.ts +218 -0
- package/dist/landing/routing.js +81 -0
- package/dist/landing/routing.js.map +1 -0
- package/dist/rhf/fields.d.ts +21 -12
- package/dist/rhf/form.d.ts +21 -12
- package/dist/rhf.d.ts +21 -12
- package/dist/settings/settings-catalogue.d.ts +84 -0
- package/dist/settings/settings-catalogue.js +47 -0
- package/dist/settings/settings-catalogue.js.map +1 -0
- package/dist/settings/settings-context.d.ts +31 -0
- package/dist/settings/settings-context.js +11 -0
- package/dist/settings/settings-context.js.map +1 -0
- package/dist/settings/settings-heading.d.ts +50 -0
- package/dist/settings/settings-heading.js +27 -0
- package/dist/settings/settings-heading.js.map +1 -0
- package/dist/settings/settings-labels.d.ts +41 -0
- package/dist/settings/settings-labels.js +38 -0
- package/dist/settings/settings-labels.js.map +1 -0
- package/dist/settings/settings-layout.d.ts +77 -0
- package/dist/settings/settings-layout.js +242 -0
- package/dist/settings/settings-layout.js.map +1 -0
- package/dist/settings/settings-section.d.ts +133 -0
- package/dist/settings/settings-section.js +63 -0
- package/dist/settings/settings-section.js.map +1 -0
- package/dist/settings/use-account-language.d.ts +83 -0
- package/dist/settings/use-account-language.js +62 -0
- package/dist/settings/use-account-language.js.map +1 -0
- package/dist/settings/use-settings-focus.d.ts +34 -0
- package/dist/settings/use-settings-focus.js +77 -0
- package/dist/settings/use-settings-focus.js.map +1 -0
- package/dist/settings/use-settings-route.d.ts +118 -0
- package/dist/settings/use-settings-route.js +120 -0
- package/dist/settings/use-settings-route.js.map +1 -0
- package/dist/shell/app-shell.d.ts +27 -12
- package/dist/shell/app-shell.js +3 -2
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/top-bar-brand.d.ts +21 -12
- package/dist/shell.d.ts +25 -6
- package/dist/shell.js +56 -0
- package/dist/shell.js.map +1 -1
- package/dist/wizard/stepper-nav.d.ts +21 -12
- package/dist/wizard.d.ts +21 -12
- package/package.json +2 -1
- package/src/account/account-parts.ts +67 -0
- package/src/account/data-export-setting.tsx +219 -0
- package/src/account/delete-account-setting.tsx +363 -0
- package/src/account/email-change-setting.tsx +454 -0
- package/src/account/sessions-setting.tsx +284 -0
- package/src/admin/admin-action-confirm.tsx +495 -0
- package/src/admin/admin-action-log.tsx +297 -0
- package/src/admin/admin-parts.ts +82 -0
- package/src/admin/invitations-panel.tsx +523 -0
- package/src/admin/reviewer-scope-editor.tsx +234 -0
- package/src/admin/role-select.tsx +286 -0
- package/src/admin/transfer-ownership-dialog.tsx +172 -0
- package/src/admin/user-roster.tsx +573 -0
- package/src/auth/auth-errors.ts +196 -8
- package/src/auth/forgot-password-form.tsx +21 -5
- package/src/auth/register-form.tsx +24 -6
- package/src/auth/reset-password-form.tsx +19 -5
- package/src/auth/sign-in-form.tsx +241 -38
- package/src/auth/verify-email.tsx +59 -8
- package/src/components/account-chips.tsx +64 -7
- package/src/components/account-settings-labels.ts +28 -1
- package/src/components/account-settings.tsx +231 -34
- package/src/components/data-table.tsx +8 -0
- package/src/components/date-picker.tsx +9 -4
- package/src/components/passkeys-setting.tsx +2 -1
- package/src/components/settings-fields.tsx +50 -1
- package/src/demo/demo-banner.tsx +159 -0
- package/src/demo/demo-countdown.ts +141 -0
- package/src/demo/demo-ended.tsx +89 -0
- package/src/demo/demo-labels.ts +78 -0
- package/src/demo/demo-session.ts +32 -0
- package/src/demo/demo-start.tsx +150 -0
- package/src/feedback/feedback-inbox.tsx +21 -8
- package/src/feedback/feedback-labels.ts +2 -1
- package/src/feedback/feedback-record.ts +10 -7
- package/src/feedback/feedback-row-detail.tsx +28 -4
- package/src/feedback/feedback-swipe.tsx +1 -1
- package/src/hooks/use-anchored-panel.ts +14 -3
- package/src/i18n/defaults.ts +28 -0
- package/src/i18n/german.ts +327 -5
- package/src/i18n/kit-labels.tsx +42 -0
- package/src/i18n/locales/es.ts +313 -3
- package/src/i18n/locales/fr.ts +316 -0
- package/src/i18n/locales/hu.ts +308 -5
- package/src/i18n/locales/it.ts +313 -0
- package/src/i18n/locales/zh.ts +286 -0
- package/src/i18n/review.ts +49 -0
- package/src/index.ts +184 -0
- package/src/landing/access.ts +97 -0
- package/src/landing/landing-actions.tsx +92 -0
- package/src/landing/landing-labels.ts +59 -0
- package/src/landing/landing-sections.tsx +337 -0
- package/src/landing/page-seo.ts +251 -0
- package/src/landing/public-header.tsx +120 -0
- package/src/landing/routing.tsx +209 -0
- package/src/settings/settings-catalogue.ts +132 -0
- package/src/settings/settings-context.ts +33 -0
- package/src/settings/settings-heading.tsx +65 -0
- package/src/settings/settings-labels.ts +75 -0
- package/src/settings/settings-layout.tsx +379 -0
- package/src/settings/settings-section.tsx +108 -0
- package/src/settings/use-account-language.ts +146 -0
- package/src/settings/use-settings-focus.ts +120 -0
- package/src/settings/use-settings-route.ts +258 -0
- package/src/shell/app-shell.tsx +10 -2
- 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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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 '../
|
|
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
|
|
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",
|