Problem: the hexagonal refactor churns the backend tree for nine more phases; the UI delivery stack (web/ SPA, cmd/desktop Wails wrapper, compose/web image) must move to its own repo first so doc/layout rewrites land once on a backend-only tree. Change: - New repo git.hubris.network/dtoro/oikos-web (v0.33.0): web/, desktop/ (updateURL repointed to oikos-web releases), compose/, own CI (web + desktop jobs), own deploy script (CI-green gate, TOCTOU guard, version-tagged images, prune-to-3), own webhook receiver on :9798 + launchd unit, own compose project publishing the same 8091:80. - Cutover executed on mac-mini in order: oikos stack's web service stopped+removed, oikos-web project brought up on 8091; outer Caddy untouched (targets the published port) — serving + Authentik flow + /wails 404 quirk verified post-cutover. - Stripped from oikos: web/, cmd/desktop/, compose/web/, desktop CI workflow, ci.yml web job, Makefile ui/desktop/desktop-package/install targets, the compose web service, oikos-web from deploy.sh's fallback prune list; wails + go-keyring dropped from go.mod, vendor synced. - README / CONTRIBUTING / AGENTS.md / .agents dev+operations docs now point at the new repo; mbse + mascot design docs carry a path note. Risk: production SPA serving depends on the new pipeline now; rollback is versioned-image re-up of the old web service from a pre-split checkout (port 8091). Desktop builds installed before the split still check dtoro/oikos releases — one manual reinstall, noted in the oikos-web release notes. Verification: go vet, make test (race), make generate-check, golangci (no new findings; baseline down 400→365); post-cutover curls — localhost:8091 200, /wails/runtime.js 404, outer Caddy 302 Authentik.
208 lines
7.8 KiB
TypeScript
208 lines
7.8 KiB
TypeScript
import { type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
|
|
import type { BitsKeyboardEvent, BitsMouseEvent, OnChangeFn, RefAttachment, WithRefOpts } from "../../internal/types.js";
|
|
import { PresenceManager } from "../../internal/presence-manager.svelte.js";
|
|
type DialogVariant = "alert-dialog" | "dialog";
|
|
declare const dialogAttrs: import("../../internal/attrs.js").CreateBitsAttrsReturn<readonly ["content", "trigger", "overlay", "title", "description", "close", "cancel", "action"]>;
|
|
interface DialogRootStateOpts extends WritableBoxedValues<{
|
|
open: boolean;
|
|
}>, ReadableBoxedValues<{
|
|
variant: DialogVariant;
|
|
onOpenChangeComplete: OnChangeFn<boolean>;
|
|
}> {
|
|
}
|
|
export declare class DialogRootState {
|
|
static create(opts: DialogRootStateOpts): DialogRootState;
|
|
readonly opts: DialogRootStateOpts;
|
|
triggerNode: HTMLElement | null;
|
|
contentNode: HTMLElement | null;
|
|
overlayNode: HTMLElement | null;
|
|
descriptionNode: HTMLElement | null;
|
|
contentId: string | undefined;
|
|
titleId: string | undefined;
|
|
triggerId: string | undefined;
|
|
descriptionId: string | undefined;
|
|
cancelNode: HTMLElement | null;
|
|
nestedOpenCount: number;
|
|
readonly depth: number;
|
|
readonly parent: DialogRootState | null;
|
|
contentPresence: PresenceManager;
|
|
overlayPresence: PresenceManager;
|
|
constructor(opts: DialogRootStateOpts, parent: DialogRootState | null);
|
|
handleOpen(): void;
|
|
handleClose(): void;
|
|
getBitsAttr: typeof dialogAttrs.getAttr;
|
|
incrementNested(): void;
|
|
decrementNested(): void;
|
|
readonly sharedProps: {
|
|
readonly "data-state": "open" | "closed";
|
|
};
|
|
}
|
|
interface DialogTriggerStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
disabled: boolean;
|
|
}> {
|
|
}
|
|
export declare class DialogTriggerState {
|
|
static create(opts: DialogTriggerStateOpts): DialogTriggerState;
|
|
readonly opts: DialogTriggerStateOpts;
|
|
readonly root: DialogRootState;
|
|
readonly attachment: RefAttachment;
|
|
constructor(opts: DialogTriggerStateOpts, root: DialogRootState);
|
|
onclick(e: BitsMouseEvent): void;
|
|
onkeydown(e: BitsKeyboardEvent): void;
|
|
readonly props: {
|
|
readonly "data-state": "open" | "closed";
|
|
readonly id: string;
|
|
readonly "aria-haspopup": "dialog";
|
|
readonly "aria-expanded": "true" | "false";
|
|
readonly "aria-controls": string | undefined;
|
|
readonly onkeydown: (e: BitsKeyboardEvent) => void;
|
|
readonly onclick: (e: BitsMouseEvent) => void;
|
|
readonly disabled: true | undefined;
|
|
};
|
|
}
|
|
interface DialogCloseStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
variant: "action" | "cancel" | "close";
|
|
disabled: boolean;
|
|
}> {
|
|
}
|
|
export declare class DialogCloseState {
|
|
static create(opts: DialogCloseStateOpts): DialogCloseState;
|
|
readonly opts: DialogCloseStateOpts;
|
|
readonly root: DialogRootState;
|
|
readonly attachment: RefAttachment;
|
|
constructor(opts: DialogCloseStateOpts, root: DialogRootState);
|
|
onclick(e: BitsMouseEvent): void;
|
|
onkeydown(e: BitsKeyboardEvent): void;
|
|
readonly props: {
|
|
readonly "data-state": "open" | "closed";
|
|
readonly id: string;
|
|
readonly onclick: (e: BitsMouseEvent) => void;
|
|
readonly onkeydown: (e: BitsKeyboardEvent) => void;
|
|
readonly disabled: true | undefined;
|
|
readonly tabindex: 0;
|
|
};
|
|
}
|
|
interface DialogActionStateOpts extends WithRefOpts {
|
|
}
|
|
export declare class DialogActionState {
|
|
static create(opts: DialogActionStateOpts): DialogActionState;
|
|
readonly opts: DialogActionStateOpts;
|
|
readonly root: DialogRootState;
|
|
readonly attachment: RefAttachment;
|
|
constructor(opts: DialogActionStateOpts, root: DialogRootState);
|
|
readonly props: {
|
|
readonly "data-state": "open" | "closed";
|
|
readonly id: string;
|
|
};
|
|
}
|
|
interface DialogTitleStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
}> {
|
|
}
|
|
export declare class DialogTitleState {
|
|
static create(opts: DialogTitleStateOpts): DialogTitleState;
|
|
readonly opts: DialogTitleStateOpts;
|
|
readonly root: DialogRootState;
|
|
readonly attachment: RefAttachment;
|
|
constructor(opts: DialogTitleStateOpts, root: DialogRootState);
|
|
readonly props: {
|
|
readonly "data-state": "open" | "closed";
|
|
readonly id: string;
|
|
readonly role: "heading";
|
|
readonly "aria-level": 1 | 2 | 3 | 4 | 5 | 6;
|
|
};
|
|
}
|
|
interface DialogDescriptionStateOpts extends WithRefOpts {
|
|
}
|
|
export declare class DialogDescriptionState {
|
|
static create(opts: DialogDescriptionStateOpts): DialogDescriptionState;
|
|
readonly opts: DialogDescriptionStateOpts;
|
|
readonly root: DialogRootState;
|
|
readonly attachment: RefAttachment;
|
|
constructor(opts: DialogDescriptionStateOpts, root: DialogRootState);
|
|
readonly props: {
|
|
readonly "data-state": "open" | "closed";
|
|
readonly id: string;
|
|
};
|
|
}
|
|
interface DialogContentStateOpts extends WithRefOpts {
|
|
}
|
|
export declare class DialogContentState {
|
|
static create(opts: DialogContentStateOpts): DialogContentState;
|
|
readonly opts: DialogContentStateOpts;
|
|
readonly root: DialogRootState;
|
|
readonly attachment: RefAttachment;
|
|
constructor(opts: DialogContentStateOpts, root: DialogRootState);
|
|
readonly snippetProps: {
|
|
open: boolean;
|
|
};
|
|
readonly props: {
|
|
readonly "data-state": "open" | "closed";
|
|
readonly "data-starting-style"?: "";
|
|
readonly "data-ending-style"?: "";
|
|
readonly id: string;
|
|
readonly role: "dialog" | "alertdialog";
|
|
readonly "aria-modal": "true";
|
|
readonly "aria-describedby": string | undefined;
|
|
readonly "aria-labelledby": string | undefined;
|
|
readonly style: {
|
|
readonly pointerEvents: "auto";
|
|
readonly outline: "none" | undefined;
|
|
readonly "--bits-dialog-depth": number;
|
|
readonly "--bits-dialog-nested-count": number;
|
|
readonly contain: "layout style";
|
|
};
|
|
readonly tabindex: -1 | undefined;
|
|
readonly "data-nested-open": "" | undefined;
|
|
readonly "data-nested": "" | undefined;
|
|
};
|
|
get shouldRender(): boolean;
|
|
}
|
|
interface DialogOverlayStateOpts extends WithRefOpts {
|
|
}
|
|
export declare class DialogOverlayState {
|
|
static create(opts: DialogOverlayStateOpts): DialogOverlayState;
|
|
readonly opts: DialogOverlayStateOpts;
|
|
readonly root: DialogRootState;
|
|
readonly attachment: RefAttachment;
|
|
constructor(opts: DialogOverlayStateOpts, root: DialogRootState);
|
|
readonly snippetProps: {
|
|
open: boolean;
|
|
};
|
|
readonly props: {
|
|
readonly "data-state": "open" | "closed";
|
|
readonly "data-starting-style"?: "";
|
|
readonly "data-ending-style"?: "";
|
|
readonly id: string;
|
|
readonly style: {
|
|
readonly pointerEvents: "auto";
|
|
readonly "--bits-dialog-depth": number;
|
|
readonly "--bits-dialog-nested-count": number;
|
|
};
|
|
readonly "data-nested-open": "" | undefined;
|
|
readonly "data-nested": "" | undefined;
|
|
};
|
|
get shouldRender(): boolean;
|
|
}
|
|
interface AlertDialogCancelStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
disabled: boolean;
|
|
}> {
|
|
}
|
|
export declare class AlertDialogCancelState {
|
|
static create(opts: AlertDialogCancelStateOpts): AlertDialogCancelState;
|
|
readonly opts: AlertDialogCancelStateOpts;
|
|
readonly root: DialogRootState;
|
|
readonly attachment: RefAttachment;
|
|
constructor(opts: AlertDialogCancelStateOpts, root: DialogRootState);
|
|
onclick(e: BitsMouseEvent): void;
|
|
onkeydown(e: BitsKeyboardEvent): void;
|
|
readonly props: {
|
|
readonly "data-state": "open" | "closed";
|
|
readonly id: string;
|
|
readonly onclick: (e: BitsMouseEvent) => void;
|
|
readonly onkeydown: (e: BitsKeyboardEvent) => void;
|
|
readonly tabindex: 0;
|
|
};
|
|
}
|
|
export {};
|