From eff1d85fbff89d05d950b02135ef0a3d534a6c4b Mon Sep 17 00:00:00 2001 From: jack Date: Fri, 31 Jul 2026 02:33:37 +0800 Subject: [PATCH] feat(board): redesign card workflows and fix embeds --- .../card-actions-ui-redesign.md | 71 + .../card-actions-ui-redesign.png | Bin 0 -> 102779 bytes packages/board-react/README.md | 15 +- packages/board-react/dist/index.d.ts | 615 +- packages/board-react/dist/index.js | 17291 +++++++++------- packages/board-react/dist/style.css | 2 +- .../board-react/example/package-lock.json | 2 +- packages/board-react/package-lock.json | 4 +- packages/board-react/package.json | 4 +- packages/board-react/src/CardDetail.tsx | 5 +- packages/board-react/src/JTypeBoard.tsx | 39 +- packages/board-react/src/boardData.ts | 1 + playwright.board.config.ts | 9 +- services/jtype-cli/src/main.rs | 4 +- services/jtype-web/frontend/src/api.ts | 11 +- .../articles/kanban-boards-and-cards.en.md | 2 + .../articles/kanban-boards-and-cards.ts | 2 +- .../articles/kanban-boards-and-cards.zh.md | 2 + .../kanban-sub-cards-and-batch-edits.en.md | 10 +- .../kanban-sub-cards-and-batch-edits.zh.md | 8 +- .../frontend/src/i18n/locales/en/messages.po | 100 +- .../frontend/src/i18n/locales/ja/messages.po | 100 +- .../frontend/src/i18n/locales/ko/messages.po | 100 +- .../frontend/src/i18n/locales/zh/messages.po | 100 +- .../frontend/src/lib/boardCardWrites.ts | 63 + .../frontend/src/pages/WebBoardView.tsx | 86 +- services/jtype-web/src/mcp/kanban_tools.rs | 8 +- shared/components/board/BoardPeek.tsx | 1000 +- shared/components/board/BoardSurface.tsx | 306 +- shared/components/board/CardCreateDialog.tsx | 259 + .../components/board/SwimlaneDeleteDialog.tsx | 1 + shared/components/board/controls.tsx | 55 +- shared/components/board/index.ts | 2 + shared/components/board/types.ts | 36 +- shared/i18n/locales/en/messages.mjs | 2 +- shared/i18n/locales/en/messages.po | 751 +- shared/i18n/locales/ja/messages.mjs | 2 +- shared/i18n/locales/ja/messages.po | 703 +- shared/i18n/locales/ko/messages.mjs | 2 +- shared/i18n/locales/ko/messages.po | 703 +- shared/i18n/locales/zh/messages.mjs | 2 +- shared/i18n/locales/zh/messages.po | 703 +- shared/lib/board.ts | 94 +- src/components/BoardView.tsx | 19 +- tests/e2e/board-react-embed.spec.ts | 180 + tests/e2e/board-swimlanes.spec.ts | 83 +- tests/fixtures/board-react-embed.html | 12 + tests/fixtures/board-react-embed.tsx | 230 + tests/fixtures/board-swimlanes.tsx | 8 +- tests/unit/boardDependencies.spec.ts | 72 + tests/unit/webBoardSaveQueue.spec.ts | 56 + 51 files changed, 13551 insertions(+), 10384 deletions(-) create mode 100644 docs/implementation-notes/card-actions-ui-redesign.md create mode 100644 docs/implementation-notes/card-actions-ui-redesign.png create mode 100644 services/jtype-web/frontend/src/lib/boardCardWrites.ts create mode 100644 shared/components/board/CardCreateDialog.tsx create mode 100644 tests/e2e/board-react-embed.spec.ts create mode 100644 tests/fixtures/board-react-embed.html create mode 100644 tests/fixtures/board-react-embed.tsx create mode 100644 tests/unit/webBoardSaveQueue.spec.ts diff --git a/docs/implementation-notes/card-actions-ui-redesign.md b/docs/implementation-notes/card-actions-ui-redesign.md new file mode 100644 index 00000000..cbcaa2fd --- /dev/null +++ b/docs/implementation-notes/card-actions-ui-redesign.md @@ -0,0 +1,71 @@ +# Card actions UI redesign + +Date: 2026-07-31 + +![Cloud-sized package embed with the focused card detail](./card-actions-ui-redesign.png) + +## Impact matrix + +| Area | Decision | Rationale | +| --- | --- | --- | +| Desktop app | Yes | Local vault boards use the shared board surface. New cards must persist their Markdown body and frontmatter in the initial filesystem write. | +| Web app | Yes | Cloud workspace boards expose the same card workflow and need matching creation/detail behavior and permissions. | +| Shared model/utilities | Yes | `BoardActions.createCard` accepts an optional initial card patch so every adapter can create a complete card without a reload race. Parent/dependency resolution now supports collision-resistant relative-path keys while retaining unique legacy basenames. | +| Shared UI | Yes | The quick-create dialog and expanded card detail have the same information architecture on Desktop and Web and remain props-in/callbacks-out. | +| Web service/API | No | Existing document create/update APIs already persist the required Markdown and frontmatter. No contract, auth, migration, event, or budget change is needed. | +| `packages/board-react` | Yes | Editable embeds consume the shared `BoardSurface`, so quick-create and card detail must stay aligned with the apps. The published 0.1.0 package incorrectly routed every open through its old read-only panel; 0.1.1 restores the editable detail while preserving the explicit read-only path. | +| CLI/MCP | Yes | Command and tool behavior already accepts the relation string; help/schema copy now documents collision-resistant relative-path references and legacy basename compatibility. | +| In-app Help | Yes | Card creation and detail navigation are user-visible workflows. The English and Chinese boards-and-cards article now explains them. | +| Other docs | Yes | The board package README now describes the shared quick-create/detail behavior and lightweight Markdown preview boundary. | +| Release/deployment | Yes | Rebuild Desktop/Web assets and `packages/board-react@0.1.1` dist; Cloud can consume the exact git commit before npm publication. No backend image, migration, or CLI binary is required. | + +## Surface decisions and acceptance criteria + +### Desktop and Web + +- Entry point: **New card** at the bottom of any visible swimlane. +- Empty state: title is focused; description and core properties are optional. +- Existing data: selecting a card opens a wide detail dialog with content on the left and properties on the right. +- Read-only/permissions: existing read-only behavior continues to hide creation and mutation affordances. +- Persistence: title, Markdown description, status, priority, assignee, labels, and due date are written during card creation; subsequent edits use the existing update adapter. +- Sub-cards: the `parent` relationship is included in the initial create write, avoiding the stale-metadata race from the former create-then-update flow. +- Rapid edits: Web card writes read and advance a ref-backed metadata snapshot, so queued field changes compose on the latest content/hash even before React rerenders. +- Relations: new parent/dependency choices persist a normalized relative path; existing basename-only links continue to resolve when unique and are left unresolved rather than misbound when ambiguous. +- Recovery: the create action stays open while saving and preserves the form if the adapter rejects. Failed sub-card drafts are also preserved, while switching cards resets draft/error state and isolates any older in-flight request. +- Keyboard: Command/Ctrl + Enter creates; Escape closes through Headless UI dialog behavior. +- Responsive: the property inspector moves below the main content on narrow windows. + +### Embeddable board package + +- Editable boards receive the shared quick-create and focused card-detail dialogs. +- Read-only boards continue to intercept card opens with the package's built-in read-only detail. +- A host `onCardOpen` callback continues to replace either built-in detail path. +- The package accepts the shared detail's Markdown source but uses a safe + plain-text preview by default, avoiding the KaTeX/Mermaid document-renderer + dependency chain. Desktop and Web inject their full renderer. +- Portaled dialog and nested dropdown elements carry the package scope class so styles do not leak into the host. +- A real 1180 × 790 Cloud-style host verifies bounded board layout, per-column + vertical scrolling, editable card details, quick creation, sub-card creation, + host open interception, persistence, and explicit read-only behavior. + +## Migration and release notes + +- No mandatory data migration is required. Legacy basename relations remain + compatible when unique; newly saved relations use collision-resistant paths. +- No HTTP API or server rollout is required. +- Rebuild the Desktop and Web frontends and the checked-in `packages/board-react/dist` output from the same commit. +- Publish `jtype-board-react@0.1.1` when the npm release is authorized; the + Cloud consumer may pin the reviewed git commit in the meantime. +- Feature smoke test: create a card with description and properties, reload, reopen it, and verify all values persist. + +## Verification + +- `npm run build` — Desktop frontend build passed. +- `(cd services/jtype-web/frontend && npm run build)` — Web frontend build passed. +- `npm run test:unit` — 65 unit tests passed, including queued Web saves composing on the latest content/hash. +- `(cd packages/board-react && npm run build && npm test)` — package bundle rebuilt; 21 package unit tests and 3 real-embed E2E tests passed. +- `npx playwright test --config playwright.board.config.ts --workers=1` — 16 Chromium E2E tests passed. +- `cargo check --manifest-path services/jtype-cli/Cargo.toml` — CLI check passed. +- `cargo check --manifest-path services/jtype-web/Cargo.toml` — Web service check passed. +- Grok CLI and Kimi CLI final read-only reviews — `NO ACTIONABLE FINDINGS`. +- Visual smoke test at 1440 × 960 and 720 × 900 verified the focused create dialog, wide detail layout, responsive property inspector, and clean browser console. diff --git a/docs/implementation-notes/card-actions-ui-redesign.png b/docs/implementation-notes/card-actions-ui-redesign.png new file mode 100644 index 0000000000000000000000000000000000000000..11bc34bab69527bb01c17cc4d555ad0b5ded2691 GIT binary patch literal 102779 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 - /** Card slugs this card is blocked by (frontmatter `blocked_by`). */ - blockedBy?: string[]; - /** Card slugs this card blocks (frontmatter `blocks`). */ - blocks?: string[]; - /** Card slugs this card relates to, no direction (frontmatter `relates`). */ - relates?: string[]; - /** Parent card slug (frontmatter `parent`) — makes this card a sub-card. */ - parent?: string | null; -}; - -declare type BoardViewColumn = { - key: string; - name: string; - color?: string | null; - /** Optional WIP limit; the column flags when its card count exceeds this. */ - limit?: number | null; -}; - -declare type BoardViewConfig = { - title: string; - columns: BoardViewColumn[]; - /** Column key treated as terminal/done (suppresses overdue styling). */ - doneColumn?: string; - /** Tint each column header by its (or an auto) color. */ - colorColumns?: boolean; - viewType?: BoardViewType; - groupBy?: BoardGroupKey; - /** Sub-mode for the calendar view (month grid vs agenda list). Defaults to "month". */ - calendarMode?: CalendarMode; - /** User-defined custom fields shown/edited on cards (board-level schema). */ - fields?: BoardFieldDef[]; - /** - * Board-level label definitions giving tags an explicit color. A card references - * a label by its `label` text in frontmatter `tags`; a tag with no matching - * definition (or a definition with no color) falls back to a deterministic - * auto-color, so tags are colored with zero config. - */ - labels?: BoardLabelDef[]; - /** Board ticket-id prefix (e.g. `OCCSV`) for per-card `OCCSV-3371` ticket links. */ - ticketKey?: string; - /** +import { CSSProperties } from 'react'; +import { ReactElement } from 'react'; + +/** Shape of the `.board` JSON config document (mirrors WebBoardView). */ +export declare type BoardConfigJSON = BoardDocumentConfig; + +/** Canonical synced `.board` JSON shape used by Desktop, Web, and board-react. */ +declare type BoardDocumentConfig = BoardViewConfig & { + id: string; +}; + +/** A user-defined custom field on a board's cards (stored in frontmatter / properties). */ +declare type BoardFieldDef = { + key: string; + label: string; + type?: BoardFieldType; +}; + +declare type BoardFieldType = "text" | "number" | "date"; + +declare type BoardGroupKey = "status" | "priority" | "assignee"; + +/** A board-level label definition: a tag's text + its display color. */ +declare type BoardLabelDef = { + label: string; + color?: string | null; +}; + +export declare type BoardLocale = 'en' | 'zh' | 'ja' | 'ko'; + +export declare type BoardResolution = { + boardDocId: string; + boardRelativePath: string; + /** Folder holding the board's card `.md` documents. */ + boardDir: string; +}; + +/** Persistent, user-editable swimlane definition stored in a `.board` file. */ +declare type BoardSwimlane = { + /** Immutable machine identity referenced by card frontmatter `swimlane`. */ + key: string; + name: string; + color?: string | null; +}; + +declare type BoardSwimlaneGroupKey = BoardGroupKey | "custom"; + +export declare type BoardTag = { + id?: string; + label: string; + color?: string | null; +}; + +export declare type BoardViewCard = { + /** Stable id — desktop: absolute file path; web/embed: relative document path. */ + id: string; + /** + * Portable vault-relative document path used by persisted card relations. + * Desktop supplies this separately because `id` is an absolute filesystem path. + */ + relationKey?: string; + /** Allocated ticket id (e.g. `OCCSV-3371`), cloud-indexed; shown as a card badge. */ + ticket?: string | null; + /** The grouping value under the default (status) grouping. */ + columnKey: string; + position: number; + title: string; + icon?: string | null; + priority?: string | null; + /** Display text (web resolves a member name; desktop uses free text). */ + assignee?: string | null; + /** Stable custom swimlane identity from card frontmatter `swimlane`. */ + swimlaneKey?: string | null; + due?: string | null; + tags: BoardTag[]; + /** Markdown body / description. */ + notes?: string; + taskDone?: number; + taskTotal?: number; + excerpt?: string | null; + /** Attachment URLs / vault paths (frontmatter `attachments`). */ + attachments?: string[]; + /** Values for the board's user-defined custom fields, keyed by field key. */ + custom?: Record; + /** Card slugs this card is blocked by (frontmatter `blocked_by`). */ + blockedBy?: string[]; + /** Card slugs this card blocks (frontmatter `blocks`). */ + blocks?: string[]; + /** Card slugs this card relates to, no direction (frontmatter `relates`). */ + relates?: string[]; + /** Parent card slug (frontmatter `parent`) — makes this card a sub-card. */ + parent?: string | null; +}; + +declare type BoardViewColumn = { + key: string; + name: string; + color?: string | null; + /** Optional WIP limit; the column flags when its card count exceeds this. */ + limit?: number | null; +}; + +declare type BoardViewConfig = { + title: string; + columns: BoardViewColumn[]; + /** Column key treated as terminal/done (suppresses overdue styling). */ + doneColumn?: string; + /** Tint each column header by its (or an auto) color. */ + colorColumns?: boolean; + viewType?: BoardViewType; + groupBy?: BoardGroupKey; + /** Sub-mode for the calendar view (month grid vs agenda list). Defaults to "month". */ + calendarMode?: CalendarMode; + /** User-defined custom fields shown/edited on cards (board-level schema). */ + fields?: BoardFieldDef[]; + /** + * Board-level label definitions giving tags an explicit color. A card references + * a label by its `label` text in frontmatter `tags`; a tag with no matching + * definition (or a definition with no color) falls back to a deterministic + * auto-color, so tags are colored with zero config. + */ + labels?: BoardLabelDef[]; + /** Board ticket-id prefix (e.g. `OCCSV`) for per-card `OCCSV-3371` ticket links. */ + ticketKey?: string; + /** * Active custom swimlane mode. Historical configs may also contain * status/priority/assignee here from the retired two-dimensional layout; * those values now render as the single vertical swimlane dimension. */ swimlaneBy?: BoardSwimlaneGroupKey; /** Persistent definitions used by custom vertical swimlanes. */ - swimlanes?: BoardSwimlane[]; - /** Present only while a derived-lane conversion is incomplete/retryable. */ - swimlaneMigration?: SwimlaneMigration; -}; - -declare type BoardViewType = "board" | "table" | "calendar"; - -declare type CalendarMode = "month" | "agenda"; - -export declare type CreateClientOptions = { - /** Origin of the jtype server, e.g. `https://jtype.nightc.com`. */ - baseUrl: string; - /** A session token (typically mcp-scoped, minted via the OAuth device flow). */ - token: string; - /** Override fetch (tests, custom agents). Defaults to the global fetch. */ - fetchImpl?: typeof fetch; -}; - -export declare function createJTypeClient(opts: CreateClientOptions): JTypeBoardDataClient; - -/** - * Typed API failure. `code` is the server's typed error string (body `error` - * field) when present, else a generic `http_` / `network_error`. - * The message never contains the token. - */ -export declare class JTypeApiError extends Error { - readonly status: number; - readonly code: string; - constructor(status: number, code: string); -} - -/** - * Embeddable jtype kanban board: give it `baseUrl`+`token` (or an injected - * `client`) plus `workspaceId`+`boardRef` and it renders the same shared - * BoardSurface the jtype desktop + web apps use, backed by the document API. - */ + swimlanes?: BoardSwimlane[]; + /** Present only while a derived-lane conversion is incomplete/retryable. */ + swimlaneMigration?: SwimlaneMigration; +}; + +declare type BoardViewType = "board" | "table" | "calendar"; + +declare type CalendarMode = "month" | "agenda"; + +export declare type CreateClientOptions = { + /** Origin of the jtype server, e.g. `https://jtype.nightc.com`. */ + baseUrl: string; + /** A session token (typically mcp-scoped, minted via the OAuth device flow). */ + token: string; + /** Override fetch (tests, custom agents). Defaults to the global fetch. */ + fetchImpl?: typeof fetch; +}; + +export declare function createJTypeClient(opts: CreateClientOptions): JTypeBoardDataClient; + +/** + * Typed API failure. `code` is the server's typed error string (body `error` + * field) when present, else a generic `http_` / `network_error`. + * The message never contains the token. + */ +export declare class JTypeApiError extends Error { + readonly status: number; + readonly code: string; + constructor(status: number, code: string); +} + +/** + * Embeddable jtype kanban board: give it `baseUrl`+`token` (or an injected + * `client`) plus `workspaceId`+`boardRef` and it renders the same shared + * BoardSurface the jtype desktop + web apps use, backed by the document API. + */ export declare function JTypeBoard({ workspaceId, boardRef, baseUrl, token, client: injectedClient, readOnly, currentUser, live, pollIntervalMs, onCardOpen, onConnectionChange, locale, className, style, }: JTypeBoardProps): ReactElement; - -export declare type JTypeBoardConnection = 'live' | 'polling' | 'error'; - -/** - * Everything the board embed calls. `createJTypeClient` is the direct - * (baseUrl + token) implementation; hosts can substitute their own proxy-backed - * implementation so no jtype token ever reaches the browser. - */ -export declare interface JTypeBoardDataClient { - listDocuments(workspaceId: string): Promise; - getDocument(workspaceId: string, docId: string): Promise; - saveDocument(workspaceId: string, req: JTypeSaveDocumentRequest): Promise; - /** Optional: enables the card Delete action. Absent → deleting fails visibly. */ - deleteDocument?(workspaceId: string, docId: string): Promise; - /** - * Optional: subscribe to a board's live SSE feed - * (`GET /api/v1/workspaces/:id/boards/:boardRef/events`, `boardRef` = the - * board's logical id from its `.board` config). Since PR #45 - * (kanban-unification-v2, commit a4d2a31) the server rejects anything but a - * full-scope session token on the live WS/SSE surfaces — an mcp-scoped token - * gets 403. Implementations must surface that as - * `onDown({ permanent: true })` so the board falls back to *visible* polling - * instead of pretending to be live. Returns an unsubscribe function. - */ - subscribeBoardEvents?(workspaceId: string, boardRef: string, handlers: LiveSubscriptionHandlers): () => void; -} - -/** - * Typed board-embed failure. Rendered as an explicit error state — never a - * blank board. - */ -export declare class JTypeBoardError extends Error { - readonly code: 'board_not_found' | 'board_ref_ambiguous' | 'board_config_invalid' | 'props_invalid'; - /** For `board_ref_ambiguous`: the matching `.board` paths. */ - readonly candidates: string[]; - constructor(code: JTypeBoardError['code'], detail?: string, candidates?: string[]); -} - -export declare type JTypeBoardProps = { - /** Cloud workspace id (UUID). */ - workspaceId: string; - /** Board name or `.board` relative path; resolved via listDocuments. */ - boardRef: string; - /** jtype server origin. XOR with `client`. */ - baseUrl?: string; - /** Session token (typically mcp-scoped). XOR with `client`. */ - token?: string; - /** - * Injected data client. When set, EVERY request (loads, polling, writes, - * live subscription) goes through it — the browser never talks to jtype - * directly, so a host proxy can keep the token server-side. - * Memoize it: a new identity per render restarts the board. - */ - client?: JTypeBoardDataClient; - /** Hide all mutation affordances (view-only board). Default false. */ - readOnly?: boolean; + +export declare type JTypeBoardConnection = 'live' | 'polling' | 'error'; + +/** + * Everything the board embed calls. `createJTypeClient` is the direct + * (baseUrl + token) implementation; hosts can substitute their own proxy-backed + * implementation so no jtype token ever reaches the browser. + */ +export declare interface JTypeBoardDataClient { + listDocuments(workspaceId: string): Promise; + getDocument(workspaceId: string, docId: string): Promise; + saveDocument(workspaceId: string, req: JTypeSaveDocumentRequest): Promise; + /** Optional: enables the card Delete action. Absent → deleting fails visibly. */ + deleteDocument?(workspaceId: string, docId: string): Promise; + /** + * Optional: subscribe to a board's live SSE feed + * (`GET /api/v1/workspaces/:id/boards/:boardRef/events`, `boardRef` = the + * board's logical id from its `.board` config). Since PR #45 + * (kanban-unification-v2, commit a4d2a31) the server rejects anything but a + * full-scope session token on the live WS/SSE surfaces — an mcp-scoped token + * gets 403. Implementations must surface that as + * `onDown({ permanent: true })` so the board falls back to *visible* polling + * instead of pretending to be live. Returns an unsubscribe function. + */ + subscribeBoardEvents?(workspaceId: string, boardRef: string, handlers: LiveSubscriptionHandlers): () => void; +} + +/** + * Typed board-embed failure. Rendered as an explicit error state — never a + * blank board. + */ +export declare class JTypeBoardError extends Error { + readonly code: 'board_not_found' | 'board_ref_ambiguous' | 'board_config_invalid' | 'props_invalid'; + /** For `board_ref_ambiguous`: the matching `.board` paths. */ + readonly candidates: string[]; + constructor(code: JTypeBoardError['code'], detail?: string, candidates?: string[]); +} + +export declare type JTypeBoardProps = { + /** Cloud workspace id (UUID). */ + workspaceId: string; + /** Board name or `.board` relative path; resolved via listDocuments. */ + boardRef: string; + /** jtype server origin. XOR with `client`. */ + baseUrl?: string; + /** Session token (typically mcp-scoped). XOR with `client`. */ + token?: string; + /** + * Injected data client. When set, EVERY request (loads, polling, writes, + * live subscription) goes through it — the browser never talks to jtype + * directly, so a host proxy can keep the token server-side. + * Memoize it: a new identity per render restarts the board. + */ + client?: JTypeBoardDataClient; + /** Hide all mutation affordances (view-only board). Default false. */ + readOnly?: boolean; /** Current user's display name; enables the personal "My cards" filter. */ currentUser?: string; - /** - * Try the live SSE feed (default true). Post PR #45 the feed requires a - * full-scope session token — with an mcp-scoped token the server answers - * 403 and the board VISIBLY falls back to polling (connection chip + - * onConnectionChange('polling')). Never a silent fake-live. - */ - live?: boolean; - /** Polling cadence in ms (default 30000, min 5000). */ - pollIntervalMs?: number; - /** Intercept card opens (replaces the built-in read-only detail panel). */ - onCardOpen?: (card: BoardViewCard) => void; - /** Observe live/polling/error transitions. */ - onConnectionChange?: (state: JTypeBoardConnection) => void; - /** Board chrome locale (default 'en'). Shared across instances (see README). */ - locale?: BoardLocale; - className?: string; - style?: CSSProperties; -}; - -export declare type JTypeCloudDocument = { - relativePath: string; - title: string; - isPublished: boolean; - content: string; - contentHash: string; - versionId: string; - updatedClock: number; -}; - -export declare type JTypeDocumentListItem = { - id: string; - relativePath: string; - title: string; - isPublished: boolean; - contentHash: string; - updatedClock: number; - versionId: string | null; -}; - -export declare type JTypeSaveDocumentRequest = { - relativePath: string; - title?: string; - content: string; - baseContentHash?: string; - baseContent?: string; -}; - -export declare type JTypeSaveDocumentResponse = { - relativePath: string; - contentHash: string; - updatedClock: number; - mergeStatus: 'accepted' | 'merged' | 'unchanged'; -}; - -export declare type LiveSubscriptionHandlers = { - /** A board event arrived. Payload is deliberately opaque — refetch. */ - onEvent: () => void; - /** The stream is connected and delivering. */ - onUp: () => void; - /** - * The stream failed or ended. `permanent: true` means retrying is pointless - * for this credential (e.g. the server rejected the token's scope) and the - * board should settle on polling. - */ - onDown: (info: { - permanent: boolean; - reason: string; - }) => void; -}; - -/** - * Resolve a host-supplied `boardRef` to the workspace's `.board` config doc. - * The host only knows a name (what jcode Cloud's kanban link stores) or a - * relative path; resolution order: - * 1. exact relativePath match (`boardRef` itself, or `boardRef` + `.board`); - * 2. unique basename match anywhere in the workspace - * (any folder containing `.board`). - * Multiple basename matches → `board_ref_ambiguous` listing the candidates - * (pass the full path to disambiguate); none → `board_not_found`. - */ -export declare function resolveBoardDoc(docs: JTypeDocumentListItem[], boardRef: string): BoardResolution; - -/** Persisted while a derived priority/assignee view is converted to custom lanes. */ -declare type SwimlaneMigration = { - version: 1; - source: "priority" | "assignee"; - mapping: Array<{ - value: string; - swimlaneKey: string; - }>; -}; - -export { } + /** + * Try the live SSE feed (default true). Post PR #45 the feed requires a + * full-scope session token — with an mcp-scoped token the server answers + * 403 and the board VISIBLY falls back to polling (connection chip + + * onConnectionChange('polling')). Never a silent fake-live. + */ + live?: boolean; + /** Polling cadence in ms (default 30000, min 5000). */ + pollIntervalMs?: number; + /** Intercept card opens (replaces the built-in editable/read-only detail). */ + onCardOpen?: (card: BoardViewCard) => void; + /** Observe live/polling/error transitions. */ + onConnectionChange?: (state: JTypeBoardConnection) => void; + /** Board chrome locale (default 'en'). Shared across instances (see README). */ + locale?: BoardLocale; + className?: string; + style?: CSSProperties; +}; + +export declare type JTypeCloudDocument = { + relativePath: string; + title: string; + isPublished: boolean; + content: string; + contentHash: string; + versionId: string; + updatedClock: number; +}; + +export declare type JTypeDocumentListItem = { + id: string; + relativePath: string; + title: string; + isPublished: boolean; + contentHash: string; + updatedClock: number; + versionId: string | null; +}; + +export declare type JTypeSaveDocumentRequest = { + relativePath: string; + title?: string; + content: string; + baseContentHash?: string; + baseContent?: string; +}; + +export declare type JTypeSaveDocumentResponse = { + relativePath: string; + contentHash: string; + updatedClock: number; + mergeStatus: 'accepted' | 'merged' | 'unchanged'; +}; + +export declare type LiveSubscriptionHandlers = { + /** A board event arrived. Payload is deliberately opaque — refetch. */ + onEvent: () => void; + /** The stream is connected and delivering. */ + onUp: () => void; + /** + * The stream failed or ended. `permanent: true` means retrying is pointless + * for this credential (e.g. the server rejected the token's scope) and the + * board should settle on polling. + */ + onDown: (info: { + permanent: boolean; + reason: string; + }) => void; +}; + +/** + * Resolve a host-supplied `boardRef` to the workspace's `.board` config doc. + * The host only knows a name (what jcode Cloud's kanban link stores) or a + * relative path; resolution order: + * 1. exact relativePath match (`boardRef` itself, or `boardRef` + `.board`); + * 2. unique basename match anywhere in the workspace + * (any folder containing `.board`). + * Multiple basename matches → `board_ref_ambiguous` listing the candidates + * (pass the full path to disambiguate); none → `board_not_found`. + */ +export declare function resolveBoardDoc(docs: JTypeDocumentListItem[], boardRef: string): BoardResolution; + +/** Persisted while a derived priority/assignee view is converted to custom lanes. */ +declare type SwimlaneMigration = { + version: 1; + source: "priority" | "assignee"; + mapping: Array<{ + value: string; + swimlaneKey: string; + }>; +}; + +export { } diff --git a/packages/board-react/dist/index.js b/packages/board-react/dist/index.js index b6a641f3..39acb4ea 100644 --- a/packages/board-react/dist/index.js +++ b/packages/board-react/dist/index.js @@ -80,7 +80,7 @@ var N = ({ children: e }) => e, P = (e) => { values: t, components: n }; -}, F = i(null), I = (e) => u(F), ee = ({ i18n: e, defaultComponent: t, children: n }) => { +}, F = i(null), I = (e) => u(F), L = ({ i18n: e, defaultComponent: t, children: n }) => { let r = v(e.locale || null), i = l(() => ({ i18n: new Proxy(e, {}), defaultComponent: t, @@ -96,7 +96,7 @@ var N = ({ children: e }) => e, P = (e) => { children: n }); }; -function L(e) { +function R(e) { let t = I(void 0); return /* @__PURE__ */ S(M, { ...e, @@ -104,13 +104,50 @@ function L(e) { }); } //#endregion -//#region node_modules/@lingui/core/dist/index.mjs -var R = (e) => typeof e == "string", z = (e) => typeof e == "function", B = /* @__PURE__ */ new Map(), te = "en"; -function ne(e) { - return [...Array.isArray(e) ? e : [e], te]; +//#region node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js +function z({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" + })); +} +var B = /*#__PURE__*/ e.forwardRef(z); +//#endregion +//#region node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js +function V({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M6 18 18 6M6 6l12 12" + })); } -function re(e, t, n) { - let r = ne(e); +var ee = /*#__PURE__*/ e.forwardRef(V), H = (e) => typeof e == "string", te = (e) => typeof e == "function", ne = /* @__PURE__ */ new Map(), re = "en"; +function U(e) { + return [...Array.isArray(e) ? e : [e], re]; +} +function ie(e, t, n) { + let r = U(e); n ||= "default"; let i; if (typeof n == "string") switch (i = { @@ -127,9 +164,9 @@ function re(e, t, n) { break; } else i = n; - return se(() => ce("date", r, n), () => new Intl.DateTimeFormat(r, i)).format(R(t) ? new Date(t) : t); + return ce(() => le("date", r, n), () => new Intl.DateTimeFormat(r, i)).format(H(t) ? new Date(t) : t); } -function ie(e, t, n) { +function ae(e, t, n) { let r; if (n ||= "default", typeof n == "string") switch (r = { second: "numeric", @@ -143,24 +180,24 @@ function ie(e, t, n) { case "short": delete r.second; } else r = n; - return re(e, t, r); + return ie(e, t, r); } -function ae(e, t, n) { - let r = ne(e); - return se(() => ce("number", r, n), () => new Intl.NumberFormat(r, n)).format(t); +function oe(e, t, n) { + let r = U(e); + return ce(() => le("number", r, n), () => new Intl.NumberFormat(r, n)).format(t); } -function oe(e, t, n, { offset: r = 0, ...i }) { - let a = ne(e), o = t ? se(() => ce("plural-ordinal", a), () => new Intl.PluralRules(a, { type: "ordinal" })) : se(() => ce("plural-cardinal", a), () => new Intl.PluralRules(a, { type: "cardinal" })); +function se(e, t, n, { offset: r = 0, ...i }) { + let a = U(e), o = t ? ce(() => le("plural-ordinal", a), () => new Intl.PluralRules(a, { type: "ordinal" })) : ce(() => le("plural-cardinal", a), () => new Intl.PluralRules(a, { type: "cardinal" })); return i[n] ?? i[o.select(n - r)] ?? i.other; } -function se(e, t) { - let n = e(), r = B.get(n); - return r || (r = t(), B.set(n, r)), r; +function ce(e, t) { + let n = e(), r = ne.get(n); + return r || (r = t(), ne.set(n, r)), r; } -function ce(e, t, n) { +function le(e, t, n) { return `${e}-${t.join("-")}-${JSON.stringify(n)}`; } -var le = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/, ue = (e) => e.replace(/\\u([a-fA-F0-9]{4})|\\x([a-fA-F0-9]{2})/g, (e, t, n) => { +var ue = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/, de = (e) => e.replace(/\\u([a-fA-F0-9]{4})|\\x([a-fA-F0-9]{2})/g, (e, t, n) => { if (t) { let e = parseInt(t, 16); return String.fromCharCode(e); @@ -168,31 +205,31 @@ var le = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/, ue = (e) => e.replace(/\\u([a-fA let e = parseInt(n, 16); return String.fromCharCode(e); } -}), de = "%__lingui_octothorpe__%", fe = (e, t, n = {}) => { +}), fe = "%__lingui_octothorpe__%", pe = (e, t, n = {}) => { let r = t || e, i = (e) => typeof e == "object" ? e : n[e], a = (e, t) => { - let a = Object.keys(n).length ? i("number") : void 0, o = ae(r, e, a); - return t.replace(new RegExp(de, "g"), o); + let a = Object.keys(n).length ? i("number") : void 0, o = oe(r, e, a); + return t.replace(new RegExp(fe, "g"), o); }; return { plural: (e, t) => { - let { offset: n = 0 } = t, i = oe(r, !1, e, t); + let { offset: n = 0 } = t, i = se(r, !1, e, t); return a(e - n, i); }, selectordinal: (e, t) => { - let { offset: n = 0 } = t, i = oe(r, !0, e, t); + let { offset: n = 0 } = t, i = se(r, !0, e, t); return a(e - n, i); }, - select: pe, - number: (e, t) => ae(r, e, i(t) || { style: t }), - date: (e, t) => re(r, e, i(t) || t), - time: (e, t) => ie(r, e, i(t) || t) + select: me, + number: (e, t) => oe(r, e, i(t) || { style: t }), + date: (e, t) => ie(r, e, i(t) || t), + time: (e, t) => ae(r, e, i(t) || t) }; -}, pe = (e, t) => t[e] ?? t.other; -function me(e, t, n) { +}, me = (e, t) => t[e] ?? t.other; +function he(e, t, n) { return (r = {}, i) => { - let a = fe(t, n, i), o = (e, t = !1) => Array.isArray(e) ? e.reduce((e, n) => { - if (n === "#" && t) return e + de; - if (R(n)) return e + n; + let a = pe(t, n, i), o = (e, t = !1) => Array.isArray(e) ? e.reduce((e, n) => { + if (n === "#" && t) return e + fe; + if (H(n)) return e + n; let [i, s, c] = n, l = {}; s === "plural" || s === "selectordinal" || s === "select" ? Object.entries(c).forEach(([e, t]) => { l[e] = o(t, s === "plural" || s === "selectordinal"); @@ -204,10 +241,10 @@ function me(e, t, n) { } else u = r[i]; return u == null ? e : e + u; }, "") : e, s = o(e); - return R(s) && le.test(s) ? ue(s) : R(s) ? s : s ? String(s) : ""; + return H(s) && ue.test(s) ? de(s) : H(s) ? s : s ? String(s) : ""; }; } -var he = class { +var ge = class { _events = {}; on(e, t) { return this._events[e] ??= /* @__PURE__ */ new Set(), this._events[e].add(t), () => this.removeListener(e, t); @@ -220,14 +257,14 @@ var he = class { let n = this._events[e]; if (n) for (let e of [...n]) e.apply(this, t); } -}, ge = class extends he { +}, _e = class extends ge { _locale = ""; _locales; _messages = {}; _missing; _messageCompiler; constructor(e) { - super(), e.missing != null && (this._missing = e.missing), e.messages != null && this.load(e.messages), (typeof e.locale == "string" || e.locales) && this.activate(e.locale ?? te, e.locales); + super(), e.missing != null && (this._missing = e.missing), e.messages != null && this.load(e.messages), (typeof e.locale == "string" || e.locales) && this.activate(e.locale ?? re, e.locales); } get locale() { return this._locale; @@ -257,15 +294,15 @@ var he = class { _(e, t, n) { if (!this.locale) throw Error("Lingui: Attempted to call a translation function without setting a locale.\nMake sure to call `i18n.activate(locale)` before using Lingui functions.\nThis issue may also occur due to a race condition in your initialization logic."); let r = n?.message; - e ||= "", R(e) || (t = e.values || t, r = e.message, e = e.id); + e ||= "", H(e) || (t = e.values || t, r = e.message, e = e.id); let i = this.messages[e], a = i === void 0, o = this._missing; - if (o && a) return z(o) ? o(this._locale, e) : o; + if (o && a) return te(o) ? o(this._locale, e) : o; a && this.emit("missing", { id: e, locale: this._locale }); let s = i || r || e; - return R(s) && (this._messageCompiler ? s = this._messageCompiler(s) : console.warn(`Uncompiled message detected! Message: + return H(s) && (this._messageCompiler ? s = this._messageCompiler(s) : console.warn(`Uncompiled message detected! Message: > ${s} @@ -273,7492 +310,8729 @@ That means you use raw catalog or your catalog doesn't have a translation for th ICU features such as interpolation and plurals will not work properly for that message. Please compile your catalog first. -`)), R(s) && le.test(s) ? ue(s) : R(s) ? s : me(s, this._locale, this._locales)(t, n?.formats); +`)), H(s) && ue.test(s) ? de(s) : H(s) ? s : he(s, this._locale, this._locales)(t, n?.formats); } t = this._.bind(this); date(e, t) { - return re(this._locales || this._locale, e, t); + return ie(this._locales || this._locale, e, t); } number(e, t) { - return ae(this._locales || this._locale, e, t); + return oe(this._locales || this._locale, e, t); } }; -function _e(e = {}) { - return new ge(e); -} -var V = _e(), ve = (e) => e?.ownerDocument ?? document, ye = (e) => e && "window" in e && e.window === e ? e : ve(e).defaultView || window; -function be(e) { - return typeof e == "object" && !!e && "nodeType" in e && typeof e.nodeType == "number"; -} -function xe(e) { - return be(e) && e.nodeType === Node.DOCUMENT_FRAGMENT_NODE && "host" in e; +function ve(e = {}) { + return new _e(e); } +var W = ve(); //#endregion -//#region ../../node_modules/.pnpm/react-stately@3.47.0_react@19.2.7/node_modules/react-stately/dist/private/flags/flags.mjs -var Se = !1; -function Ce() { - return Se; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/AdjustmentsHorizontalIcon.js +function ye({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75" + })); } +var be = /*#__PURE__*/ e.forwardRef(ye); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/utils/shadowdom/DOMFunctions.mjs -function we(e, t) { - if (!Ce()) return t && e ? e.contains(t) : !1; - if (!e || !t) return !1; - let n = t; - for (; n !== null;) { - if (n === e) return !0; - n = n.tagName === "SLOT" && n.assignedSlot ? n.assignedSlot.parentNode : xe(n) ? n.host : n.parentNode; - } - return !1; -} -var Te = (e = document) => { - if (!Ce()) return e.activeElement; - let t = e.activeElement; - for (; t && "shadowRoot" in t && t.shadowRoot?.activeElement;) t = t.shadowRoot.activeElement; - return t; -}; -function Ee(e) { - if (Ce() && e.target instanceof Element && e.target.shadowRoot) { - if ("composedPath" in e) return e.composedPath()[0] ?? null; - if ("composedPath" in e.nativeEvent) return e.nativeEvent.composedPath()[0] ?? null; - } - return e.target; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowDownIcon.js +function xe({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M19.5 13.5 12 21m0 0-7.5-7.5M12 21V3" + })); } +var Se = /*#__PURE__*/ e.forwardRef(xe); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/utils/focusWithoutScrolling.mjs -function De(e) { - if (ke()) e.focus({ preventScroll: !0 }); - else { - let t = Ae(e); - e.focus(), je(t); - } -} -var Oe = null; -function ke() { - if (Oe == null) { - Oe = !1; - try { - document.createElement("div").focus({ get preventScroll() { - return Oe = !0, !0; - } }); - } catch {} - } - return Oe; -} -function Ae(e) { - let t = e.parentNode, n = [], r = document.scrollingElement || document.documentElement; - for (; t instanceof HTMLElement && t !== r;) (t.offsetHeight < t.scrollHeight || t.offsetWidth < t.scrollWidth) && n.push({ - element: t, - scrollTop: t.scrollTop, - scrollLeft: t.scrollLeft - }), t = t.parentNode; - return r instanceof HTMLElement && n.push({ - element: r, - scrollTop: r.scrollTop, - scrollLeft: r.scrollLeft - }), n; -} -function je(e) { - for (let { element: t, scrollTop: n, scrollLeft: r } of e) t.scrollTop = n, t.scrollLeft = r; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowLeftIcon.js +function Ce({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18" + })); } +var we = /*#__PURE__*/ e.forwardRef(Ce); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/utils/useLayoutEffect.mjs -var Me = typeof document < "u" ? t.useLayoutEffect : () => {}; -//#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/interactions/utils.mjs -function Ne(e) { - let t = e; - return t.nativeEvent = e, t.isDefaultPrevented = () => t.defaultPrevented, t.isPropagationStopped = () => t.cancelBubble, t.persist = () => {}, t; -} -function Pe(e, t) { - Object.defineProperty(e, "target", { value: t }), Object.defineProperty(e, "currentTarget", { value: t }); -} -function Fe(e) { - let t = v({ - isFocused: !1, - observer: null - }); - return Me(() => { - let e = t.current; - return () => { - e.observer &&= (e.observer.disconnect(), null); - }; - }, []), l((n) => { - let r = Ee(n); - if (r instanceof HTMLButtonElement || r instanceof HTMLInputElement || r instanceof HTMLTextAreaElement || r instanceof HTMLSelectElement) { - t.current.isFocused = !0; - let n = r; - n.addEventListener("focusout", (r) => { - if (t.current.isFocused = !1, n.disabled) { - let t = Ne(r); - e?.(t); - } - t.current.observer && (t.current.observer.disconnect(), t.current.observer = null); - }, { once: !0 }), t.current.observer = new MutationObserver(() => { - if (t.current.isFocused && n.disabled) { - t.current.observer?.disconnect(); - let e = n === Te() ? null : Te(); - n.dispatchEvent(new FocusEvent("blur", { relatedTarget: e })), n.dispatchEvent(new FocusEvent("focusout", { - bubbles: !0, - relatedTarget: e - })); - } - }), t.current.observer.observe(n, { - attributes: !0, - attributeFilter: ["disabled"] - }); - } - }, [e]); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js +function Te({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" + })); } +var Ee = /*#__PURE__*/ e.forwardRef(Te); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/utils/platform.mjs -function Ie(e) { - if (typeof window > "u" || window.navigator == null) return !1; - let t = window.navigator.userAgentData?.brands; - return Array.isArray(t) && t.some((t) => e.test(t.brand)) || e.test(window.navigator.userAgent); -} -function Le(e) { - return typeof window < "u" && window.navigator != null && e.test(window.navigator.userAgentData?.platform || window.navigator.platform); -} -function Re(e) { - let t = null; - return () => (t ??= e(), t); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js +function De({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3" + })); } -var ze = Re(function() { - return Le(/^Mac/i); -}), Be = Re(function() { - return Le(/^iPad/i) || ze() && navigator.maxTouchPoints > 1; -}), Ve = Re(function() { - return Ie(/AppleWebKit/i) && !He(); -}), He = Re(function() { - return Ie(/Chrome/i); -}), Ue = Re(function() { - return Ie(/Android/i); -}), We = Re(function() { - return Ie(/Firefox/i); -}); +var Oe = /*#__PURE__*/ e.forwardRef(De); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/utils/isVirtualEvent.mjs -function Ge(e) { - return e.pointerType === "" && e.isTrusted ? !0 : Ue() && e.pointerType ? e.type === "click" && e.buttons === 1 : e.detail === 0 && !e.pointerType; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowTopRightOnSquareIcon.js +function ke({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25" + })); } +var Ae = /*#__PURE__*/ e.forwardRef(ke); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/utils/openLink.mjs -function Ke(e, t, n = !0) { - let { metaKey: r, ctrlKey: i, altKey: a, shiftKey: o } = t; - We() && window.event?.type?.startsWith("key") && e.target === "_blank" && (ze() ? r = !0 : i = !0); - let s = Ve() && ze() && !Be() ? new KeyboardEvent("keydown", { - keyIdentifier: "Enter", - metaKey: r, - ctrlKey: i, - altKey: a, - shiftKey: o - }) : new MouseEvent("click", { - metaKey: r, - ctrlKey: i, - altKey: a, - shiftKey: o, - detail: 1, - bubbles: !0, - cancelable: !0 - }); - Ke.isOpening = n, De(e), e.dispatchEvent(s), Ke.isOpening = !1; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowUpTrayIcon.js +function je({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5" + })); } -Ke.isOpening = !1; +var Me = /*#__PURE__*/ e.forwardRef(je); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/interactions/useFocusVisible.mjs -var qe = null, Je = /* @__PURE__ */ new Set(), Ye = /* @__PURE__ */ new Map(), Xe = !1, Ze = !1, Qe = { - Tab: !0, - Escape: !0 -}; -function $e(e, t) { - for (let n of Je) n(e, t); -} -function et(e) { - return !(e.metaKey || !ze() && e.altKey || e.ctrlKey || e.key === "Control" || e.key === "Shift" || e.key === "Meta"); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowUpIcon.js +function Ne({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18" + })); } -function tt(e) { - Xe = !0, !Ke.isOpening && et(e) && (qe = "keyboard", $e("keyboard", e)); +var Pe = /*#__PURE__*/ e.forwardRef(Ne); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowUturnLeftIcon.js +function Fe({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3" + })); } -function nt(e) { - qe = "pointer", "pointerType" in e && e.pointerType, (e.type === "mousedown" || e.type === "pointerdown") && (Xe = !0, $e("pointer", e)); +var Ie = /*#__PURE__*/ e.forwardRef(Fe); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowsPointingInIcon.js +function Le({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M9 9V4.5M9 9H4.5M9 9 3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5 5.25 5.25" + })); } -function rt(e) { - !Ke.isOpening && Ge(e) && (Xe = !0, qe = "virtual"); +var Re = /*#__PURE__*/ e.forwardRef(Le); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ArrowsPointingOutIcon.js +function ze({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15" + })); } -function it(e) { - let t = ye(Ee(e)), n = ve(Ee(e)); - Ee(e) === t || Ee(e) === n || !e.isTrusted || (!Xe && !Ze && (qe = "virtual", $e("virtual", e)), Xe = !1, Ze = !1); +var Be = /*#__PURE__*/ e.forwardRef(ze); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/Bars3Icon.js +function Ve({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" + })); } -function at() { - Xe = !1, Ze = !0; +var He = /*#__PURE__*/ e.forwardRef(Ve); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/BarsArrowDownIcon.js +function Ue({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0-3.75-3.75M17.25 21 21 17.25" + })); } -function ot(e) { - if (typeof window > "u" || typeof document > "u") return; - let t = ye(e), n = ve(e); - if (Ye.get(t)) return; - let r = t.HTMLElement.prototype.focus; - t.HTMLElement.prototype.focus = function() { - Xe = !0, r.apply(this, arguments); - }, n.addEventListener("keydown", tt, !0), n.addEventListener("keyup", tt, !0), n.addEventListener("click", rt, !0), t.addEventListener("focus", it, !0), t.addEventListener("blur", at, !1), typeof PointerEvent < "u" && (n.addEventListener("pointerdown", nt, !0), n.addEventListener("pointermove", nt, !0), n.addEventListener("pointerup", nt, !0)), t.addEventListener("beforeunload", () => { - st(e); - }, { once: !0 }), Ye.set(t, { focus: r }); -} -var st = (e, t) => { - let n = ye(e), r = ve(e); - t && r.removeEventListener("DOMContentLoaded", t), Ye.has(n) && (n.HTMLElement.prototype.focus = Ye.get(n).focus, r.removeEventListener("keydown", tt, !0), r.removeEventListener("keyup", tt, !0), r.removeEventListener("click", rt, !0), n.removeEventListener("focus", it, !0), n.removeEventListener("blur", at, !1), typeof PointerEvent < "u" && (r.removeEventListener("pointerdown", nt, !0), r.removeEventListener("pointermove", nt, !0), r.removeEventListener("pointerup", nt, !0)), Ye.delete(n)); -}; -function ct(e) { - let t = ve(e), n; - return t.readyState === "loading" ? (n = () => { - ot(e); - }, t.addEventListener("DOMContentLoaded", n)) : ot(e), () => st(e, n); +var We = /*#__PURE__*/ e.forwardRef(Ue); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/BookmarkIcon.js +function Ge({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M17.593 3.322c1.1.128 1.907 1.077 1.907 2.185V21L12 17.25 4.5 21V5.507c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0Z" + })); } -typeof document < "u" && ct(); -function lt() { - return qe !== "pointer"; +var Ke = /*#__PURE__*/ e.forwardRef(Ge); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/CalendarDaysIcon.js +function qe({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5m-9-6h.008v.008H12v-.008ZM12 15h.008v.008H12V15Zm0 2.25h.008v.008H12v-.008ZM9.75 15h.008v.008H9.75V15Zm0 2.25h.008v.008H9.75v-.008ZM7.5 15h.008v.008H7.5V15Zm0 2.25h.008v.008H7.5v-.008Zm6.75-4.5h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V15Zm0 2.25h.008v.008h-.008v-.008Zm2.25-4.5h.008v.008H16.5v-.008Zm0 2.25h.008v.008H16.5V15Z" + })); } -var ut = /* @__PURE__ */ new Set([ - "checkbox", - "radio", - "range", - "color", - "file", - "image", - "button", - "submit", - "reset" -]); -function dt(e, t, n) { - let r = n ? Ee(n) : void 0, i = ve(r), a = ye(r), o = a === void 0 ? HTMLInputElement : a.HTMLInputElement, s = a === void 0 ? HTMLTextAreaElement : a.HTMLTextAreaElement, c = a === void 0 ? HTMLElement : a.HTMLElement, l = a === void 0 ? KeyboardEvent : a.KeyboardEvent, u = Te(i); - return e = e || u instanceof o && !ut.has(u.type) || u instanceof s || u instanceof c && u.isContentEditable, !(e && t === "keyboard" && n instanceof l && !Qe[n.key]); +var Je = /*#__PURE__*/ e.forwardRef(qe); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ChatBubbleLeftIcon.js +function Ye({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M2.25 12.76c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.076-4.076a1.526 1.526 0 0 1 1.037-.443 48.282 48.282 0 0 0 5.68-.494c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0 0 12 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018Z" + })); } -function ft(e, t, n) { - ot(), f(() => { - if (n?.enabled === !1) return; - let t = (t, r) => { - dt(!!n?.isTextInput, t, r) && e(lt()); - }; - return Je.add(t), () => { - Je.delete(t); - }; - }, t); +var Xe = /*#__PURE__*/ e.forwardRef(Ye); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js +function Ze({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" + })); } +var Qe = /*#__PURE__*/ e.forwardRef(Ze); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/interactions/useFocus.mjs -function pt(e) { - let { isDisabled: t, onFocus: n, onBlur: r, onFocusChange: i } = e, a = l((e) => { - if (Ee(e) === e.currentTarget) return r && r(e), i && i(!1), !0; - }, [r, i]), o = Fe(a), s = l((e) => { - let t = Ee(e), r = ve(t), a = r ? Te(r) : Te(); - t === e.currentTarget && t === a && (n && n(e), i && i(!0), o(e)); - }, [ - i, - n, - o - ]); - return { focusProps: { - onFocus: !t && (n || i || r) ? s : void 0, - onBlur: !t && (r || i) ? a : void 0 - } }; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/CheckIcon.js +function $e({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "m4.5 12.75 6 6 9-13.5" + })); } +var et = /*#__PURE__*/ e.forwardRef($e); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/utils/useGlobalListeners.mjs -function mt() { - let e = v(/* @__PURE__ */ new Map()), t = l((t, n, r, i) => { - let a = i?.once ? (...t) => { - e.current.delete(r), r(...t); - } : r; - e.current.set(r, { - type: n, - eventTarget: t, - fn: a, - options: i - }), t.addEventListener(n, a, i); - }, []), n = l((t, n, r, i) => { - let a = e.current.get(r)?.fn || r; - t.removeEventListener(n, a, i), e.current.delete(r); - }, []), r = l(() => { - e.current.forEach((e, t) => { - n(e.eventTarget, e.type, t, e.options); - }); - }, [n]); - return f(() => r, [r]), { - addGlobalListener: t, - removeGlobalListener: n, - removeAllGlobalListeners: r - }; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js +function tt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "m19.5 8.25-7.5 7.5-7.5-7.5" + })); } +var nt = /*#__PURE__*/ e.forwardRef(tt); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/interactions/useFocusWithin.mjs -function ht(e) { - let { isDisabled: t, onBlurWithin: n, onFocusWithin: r, onFocusWithinChange: i } = e, a = v({ isFocusWithin: !1 }), { addGlobalListener: o, removeAllGlobalListeners: s } = mt(), c = l((e) => { - we(e.currentTarget, Ee(e)) && a.current.isFocusWithin && !we(e.currentTarget, e.relatedTarget) && (a.current.isFocusWithin = !1, s(), n && n(e), i && i(!1)); - }, [ - n, - i, - a, - s - ]), u = Fe(c), d = l((e) => { - if (!we(e.currentTarget, Ee(e))) return; - let t = Ee(e), n = ve(t), s = Te(n); - if (!a.current.isFocusWithin && s === t) { - r && r(e), i && i(!0), a.current.isFocusWithin = !0, u(e); - let t = e.currentTarget; - o(n, "focus", (e) => { - let r = Ee(e); - if (a.current.isFocusWithin && !we(t, r)) { - let e = new n.defaultView.FocusEvent("blur", { relatedTarget: r }); - Pe(e, t); - let i = Ne(e); - c(i); - } - }, { capture: !0 }); - } - }, [ - r, - i, - u, - o, - c - ]); - return t ? { focusWithinProps: { - onFocus: void 0, - onBlur: void 0 - } } : { focusWithinProps: { - onFocus: d, - onBlur: c - } }; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ChevronLeftIcon.js +function rt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M15.75 19.5 8.25 12l7.5-7.5" + })); } +var it = /*#__PURE__*/ e.forwardRef(rt); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/focus/useFocusRing.mjs -function gt(e = {}) { - let { autoFocus: t = !1, isTextInput: n, within: r } = e, i = v({ - isFocused: !1, - isFocusVisible: t || lt() - }), [a, o] = y(!1), [s, c] = y(() => i.current.isFocused && i.current.isFocusVisible), u = l(() => c(i.current.isFocused && i.current.isFocusVisible), []), d = l((e) => { - i.current.isFocused = e, i.current.isFocusVisible = lt(), o(e), u(); - }, [u]); - ft((e) => { - i.current.isFocusVisible = e, u(); - }, [n, a], { - enabled: a, - isTextInput: n - }); - let { focusProps: f } = pt({ - isDisabled: r, - onFocusChange: d - }), { focusWithinProps: p } = ht({ - isDisabled: !r, - onFocusWithinChange: d - }); - return { - isFocused: a, - isFocusVisible: s, - focusProps: r ? p : f - }; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js +function at({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "m8.25 4.5 7.5 7.5-7.5 7.5" + })); } +var ot = /*#__PURE__*/ e.forwardRef(at); //#endregion -//#region ../../node_modules/.pnpm/react-aria@3.49.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-aria/dist/private/interactions/useHover.mjs -var _t = !1, vt = 0; -function yt() { - _t = !0, setTimeout(() => { - _t = !1; - }, 500); -} -function bt(e) { - e.pointerType === "touch" && yt(); -} -function xt() { - let e = ve(null); - if (e !== void 0) return vt === 0 && typeof PointerEvent < "u" && e.addEventListener("pointerup", bt), vt++, () => { - vt--, !(vt > 0) && typeof PointerEvent < "u" && e.removeEventListener("pointerup", bt); - }; -} -function St(e) { - let { onHoverStart: t, onHoverChange: n, onHoverEnd: r, isDisabled: i } = e, [a, o] = y(!1), s = v({ - isHovered: !1, - ignoreEmulatedMouseEvents: !1, - pointerType: "", - target: null - }).current; - f(xt, []); - let { addGlobalListener: c, removeAllGlobalListeners: l } = mt(), { hoverProps: u, triggerHoverEnd: d } = g(() => { - let e = (e, r) => { - if (s.pointerType = r, i || r === "touch" || s.isHovered || !we(e.currentTarget, Ee(e))) return; - s.isHovered = !0; - let l = e.currentTarget; - s.target = l, c(ve(Ee(e)), "pointerover", (e) => { - s.isHovered && s.target && !we(s.target, Ee(e)) && a(e, e.pointerType); - }, { capture: !0 }), t && t({ - type: "hoverstart", - target: l, - pointerType: r - }), n && n(!0), o(!0); - }, a = (e, t) => { - let i = s.target; - s.pointerType = "", s.target = null, !(t === "touch" || !s.isHovered || !i) && (s.isHovered = !1, l(), r && r({ - type: "hoverend", - target: i, - pointerType: t - }), n && n(!1), o(!1)); - }, u = {}; - return typeof PointerEvent < "u" && (u.onPointerEnter = (t) => { - _t && t.pointerType === "mouse" || e(t, t.pointerType); - }, u.onPointerLeave = (e) => { - !i && we(e.currentTarget, Ee(e)) && a(e, e.pointerType); - }), { - hoverProps: u, - triggerHoverEnd: a - }; - }, [ - t, - n, - r, - i, - s, - c, - l - ]); - return f(() => { - i && d({ currentTarget: s.target }, s.pointerType); - }, [i]), { - hoverProps: u, - isHovered: a - }; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ChevronUpDownIcon.js +function st({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9" + })); } +var ct = /*#__PURE__*/ e.forwardRef(st); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/env.js -var Ct = Object.defineProperty, wt = (e, t, n) => t in e ? Ct(e, t, { - enumerable: !0, - configurable: !0, - writable: !0, - value: n -}) : e[t] = n, Tt = (e, t, n) => (wt(e, typeof t == "symbol" ? t : t + "", n), n), Et = new class { - constructor() { - Tt(this, "current", this.detect()), Tt(this, "handoffState", "pending"), Tt(this, "currentId", 0); - } - set(e) { - this.current !== e && (this.handoffState = "pending", this.currentId = 0, this.current = e); - } - reset() { - this.set(this.detect()); - } - nextId() { - return ++this.currentId; - } - get isServer() { - return this.current === "server"; - } - get isClient() { - return this.current === "client"; - } - detect() { - return typeof window > "u" || typeof document > "u" ? "server" : "client"; - } - handoff() { - this.handoffState === "pending" && (this.handoffState = "complete"); - } - get isHandoffComplete() { - return this.handoffState === "complete"; - } -}(); -//#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/owner.js -function Dt(e) { - return Et.isServer ? null : e == null ? document : e?.ownerDocument ?? document; -} -function Ot(e) { - return Et.isServer ? null : e == null ? document : (e?.getRootNode)?.call(e) ?? document; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentIcon.js +function lt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5A3.375 3.375 0 0 0 6.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0 0 15 2.25h-1.5a2.251 2.251 0 0 0-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 0 0-9-9Z" + })); } -function kt(e) { - return Ot(e)?.activeElement ?? null; +var ut = /*#__PURE__*/ e.forwardRef(lt); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ClockIcon.js +function dt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" + })); } -function At(e) { - return kt(e) === e; +var ft = /*#__PURE__*/ e.forwardRef(dt); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/Cog6ToothIcon.js +function pt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z" + }), /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" + })); } +var mt = /*#__PURE__*/ e.forwardRef(pt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/micro-task.js -function jt(e) { - typeof queueMicrotask == "function" ? queueMicrotask(e) : Promise.resolve().then(e).catch((e) => setTimeout(() => { - throw e; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/DocumentDuplicateIcon.js +function ht({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75" })); } +var gt = /*#__PURE__*/ e.forwardRef(ht); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/disposables.js -function Mt() { - let e = [], t = { - addEventListener(e, n, r, i) { - return e.addEventListener(n, r, i), t.add(() => e.removeEventListener(n, r, i)); - }, - requestAnimationFrame(...e) { - let n = requestAnimationFrame(...e); - return t.add(() => cancelAnimationFrame(n)); - }, - nextFrame(...e) { - return t.requestAnimationFrame(() => t.requestAnimationFrame(...e)); - }, - setTimeout(...e) { - let n = setTimeout(...e); - return t.add(() => clearTimeout(n)); - }, - microTask(...e) { - let n = { current: !0 }; - return jt(() => { - n.current && e[0](); - }), t.add(() => { - n.current = !1; - }); - }, - style(e, t, n) { - let r = e.style.getPropertyValue(t); - return Object.assign(e.style, { [t]: n }), this.add(() => { - Object.assign(e.style, { [t]: r }); - }); - }, - group(e) { - let t = Mt(); - return e(t), this.add(() => t.dispose()); - }, - add(t) { - return e.includes(t) || e.push(t), () => { - let n = e.indexOf(t); - if (n >= 0) for (let t of e.splice(n, 1)) t(); - }; - }, - dispose() { - for (let t of e.splice(0)) t(); - } - }; - return t; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/EllipsisHorizontalIcon.js +function _t({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M6.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM12.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM18.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z" + })); } +var vt = /*#__PURE__*/ e.forwardRef(_t); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/hooks/use-disposables.js -function Nt() { - let [e] = y(Mt); - return f(() => () => e.dispose(), [e]), e; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js +function yt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" + })); } +var bt = /*#__PURE__*/ e.forwardRef(yt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js -var H = (e, t) => { - Et.isServer ? f(e, t) : h(e, t); -}; -//#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/hooks/use-latest-value.js -function Pt(e) { - let t = v(e); - return H(() => { - t.current = e; - }, [e]), t; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/EyeIcon.js +function xt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" + }), /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" + })); } +var St = /*#__PURE__*/ e.forwardRef(xt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/hooks/use-event.js -var U = function(e) { - let n = Pt(e); - return t.useCallback((...e) => n.current(...e), [n]); -}; -//#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/hooks/use-active-press.js -function Ft(e) { - let t = e.width / 2, n = e.height / 2; - return { - top: e.clientY - n, - right: e.clientX + t, - bottom: e.clientY + n, - left: e.clientX - t - }; -} -function It(e, t) { - return !(!e || !t || e.right < t.left || e.left > t.right || e.bottom < t.top || e.top > t.bottom); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/FaceSmileIcon.js +function Ct({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M15.182 15.182a4.5 4.5 0 0 1-6.364 0M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Z" + })); } -function Lt({ disabled: e = !1 } = {}) { - let t = v(null), [n, r] = y(!1), i = Nt(), a = U(() => { - t.current = null, r(!1), i.dispose(); - }), o = U((e) => { - if (i.dispose(), t.current === null) { - t.current = e.currentTarget, r(!0); - { - let n = Dt(e.currentTarget); - i.addEventListener(n, "pointerup", a, !1), i.addEventListener(n, "pointermove", (e) => { - if (t.current) { - let n = Ft(e); - r(It(n, t.current.getBoundingClientRect())); - } - }, !1), i.addEventListener(n, "pointercancel", a, !1); - } - } - }); - return { - pressed: n, - pressProps: e ? {} : { - onPointerDown: o, - onPointerUp: a, - onClick: a - } - }; +var wt = /*#__PURE__*/ e.forwardRef(Ct); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/FlagIcon.js +function Tt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M3 3v1.5M3 21v-6m0 0 2.77-.693a9 9 0 0 1 6.208.682l.108.054a9 9 0 0 0 6.086.71l3.114-.732a48.524 48.524 0 0 1-.005-10.499l-3.11.732a9 9 0 0 1-6.085-.711l-.108-.054a9 9 0 0 0-6.208-.682L3 4.5M3 15V4.5" + })); } +var Et = /*#__PURE__*/ e.forwardRef(Tt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/hooks/use-slot.js -function W(e) { - return g(() => e, Object.values(e)); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/FunnelIcon.js +function Dt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z" + })); } +var Ot = /*#__PURE__*/ e.forwardRef(Dt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/internal/disabled.js -var Rt = i(void 0); -function zt() { - return u(Rt); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js +function kt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" + })); } +var At = /*#__PURE__*/ e.forwardRef(kt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/class-names.js -function Bt(...e) { - return Array.from(new Set(e.flatMap((e) => typeof e == "string" ? e.split(" ") : []))).filter(Boolean).join(" "); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/LinkIcon.js +function jt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" + })); } +var Mt = /*#__PURE__*/ e.forwardRef(jt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/match.js -function Vt(e, t, ...n) { - if (e in t) { - let r = t[e]; - return typeof r == "function" ? r(...n) : r; - } - let r = /* @__PURE__ */ Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((e) => `"${e}"`).join(", ")}.`); - throw Error.captureStackTrace && Error.captureStackTrace(r, Vt), r; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/LockClosedIcon.js +function Nt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z" + })); } +var Pt = /*#__PURE__*/ e.forwardRef(Nt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/render.js -var Ht = ((e) => (e[e.None = 0] = "None", e[e.RenderStrategy = 1] = "RenderStrategy", e[e.Static = 2] = "Static", e))(Ht || {}), Ut = ((e) => (e[e.Unmount = 0] = "Unmount", e[e.Hidden = 1] = "Hidden", e))(Ut || {}); -function G() { - let e = Kt(); - return l((t) => Wt({ - mergeRefs: e, - ...t - }), [e]); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/MagnifyingGlassIcon.js +function Ft({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" + })); } -function Wt({ ourProps: e, theirProps: t, slot: n, defaultTag: r, features: i, visible: a = !0, name: o, mergeRefs: s }) { - s ??= qt; - let c = Jt(t, e); - if (a) return Gt(c, n, r, o, s); - let l = i ?? 0; - if (l & 2) { - let { static: e = !1, ...t } = c; - if (e) return Gt(t, n, r, o, s); - } - if (l & 1) { - let { unmount: e = !0, ...t } = c; - return Vt(+!e, { - 0() { - return null; - }, - 1() { - return Gt({ - ...t, - hidden: !0, - style: { display: "none" } - }, n, r, o, s); - } - }); - } - return Gt(c, n, r, o, s); -} -function Gt(e, t = {}, n, i, o) { - let { as: s = n, children: l, refName: u = "ref", ...d } = Zt(e, ["unmount", "static"]), f = e.ref === void 0 ? {} : { [u]: e.ref }, p = typeof l == "function" ? l(t) : l; - p = $t(p), "className" in d && d.className && typeof d.className == "function" && (d.className = d.className(t)), d["aria-labelledby"] && d["aria-labelledby"] === d.id && (d["aria-labelledby"] = void 0); - let m = {}; - if (t) { - let e = !1, n = []; - for (let [r, i] of Object.entries(t)) typeof i == "boolean" && (e = !0), i === !0 && n.push(r.replace(/([A-Z])/g, (e) => `-${e.toLowerCase()}`)); - if (e) { - m["data-headlessui-state"] = n.join(" "); - for (let e of n) m[`data-${e}`] = ""; - } - } - if (en(s) && (Object.keys(Xt(d)).length > 0 || Object.keys(Xt(m)).length > 0)) if (!c(p) || Array.isArray(p) && p.length > 1 || tn(p)) { - if (Object.keys(Xt(d)).length > 0) throw Error([ - "Passing props on \"Fragment\"!", - "", - `The current component <${i} /> is rendering a "Fragment".`, - "However we need to passthrough the following props:", - Object.keys(Xt(d)).concat(Object.keys(Xt(m))).map((e) => ` - ${e}`).join("\n"), - "", - "You can apply a few solutions:", - ["Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"Fragment\".", "Render a single element as the child so that we can forward the props onto that element."].map((e) => ` - ${e}`).join("\n") - ].join("\n")); - } else { - let e = p.props?.className, t = typeof e == "function" ? (...t) => Bt(e(...t), d.className) : Bt(e, d.className), n = t ? { className: t } : {}, i = Jt(p.props, Xt(Zt(d, ["ref"]))); - for (let e in m) e in i && delete m[e]; - return r(p, Object.assign({}, i, m, f, { ref: o(Qt(p), f.ref) }, n)); - } - return a(s, Object.assign({}, Zt(d, ["ref"]), !en(s) && f, !en(s) && m), p); -} -function Kt() { - let e = v([]), t = l((t) => { - for (let n of e.current) n != null && (typeof n == "function" ? n(t) : n.current = t); - }, []); - return (...n) => { - if (!n.every((e) => e == null)) return e.current = n, t; - }; -} -function qt(...e) { - return e.every((e) => e == null) ? void 0 : (t) => { - for (let n of e) n != null && (typeof n == "function" ? n(t) : n.current = t); - }; -} -function Jt(...e) { - if (e.length === 0) return {}; - if (e.length === 1) return e[0]; - let t = {}, n = {}; - for (let r of e) for (let e in r) e.startsWith("on") && typeof r[e] == "function" ? (n[e] ?? (n[e] = []), n[e].push(r[e])) : t[e] = r[e]; - if (t.disabled || t["aria-disabled"]) for (let e in n) /^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(e) && (n[e] = [(e) => (e?.preventDefault)?.call(e)]); - for (let e in n) Object.assign(t, { [e](t, ...r) { - let i = n[e]; - for (let e of i) { - if ((t instanceof Event || t?.nativeEvent instanceof Event) && t.defaultPrevented) return; - e(t, ...r); - } - } }); - return t; -} -function Yt(...e) { - if (e.length === 0) return {}; - if (e.length === 1) return e[0]; - let t = {}, n = {}; - for (let r of e) for (let e in r) e.startsWith("on") && typeof r[e] == "function" ? (n[e] ?? (n[e] = []), n[e].push(r[e])) : t[e] = r[e]; - for (let e in n) Object.assign(t, { [e](...t) { - let r = n[e]; - for (let e of r) e?.(...t); - } }); - return t; -} -function K(e) { - return Object.assign(s(e), { displayName: e.displayName ?? e.name }); -} -function Xt(e) { - let t = Object.assign({}, e); - for (let e in t) t[e] === void 0 && delete t[e]; - return t; -} -function Zt(e, t = []) { - let n = Object.assign({}, e); - for (let e of t) e in n && delete n[e]; - return n; -} -function Qt(e) { - return t.version.split(".")[0] >= "19" ? e.props.ref : e.ref; -} -function $t(e) { - if (e != null && e.$$typeof === Symbol.for("react.lazy")) { - let t = e._payload; - if (t != null && t.status === "fulfilled") return $t(t.value); - } - return e; -} -function en(e) { - return e === n || e === Symbol.for("react.fragment"); -} -function tn(e) { - return en(e.type); +var It = /*#__PURE__*/ e.forwardRef(Ft); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/PaperClipIcon.js +function Lt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13" + })); } +var Rt = /*#__PURE__*/ e.forwardRef(Lt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/hooks/use-controllable.js -function nn(e, t, n) { - let [r, i] = y(n), a = e !== void 0, o = v(a), s = v(!1), c = v(!1); - return a && !o.current && !s.current ? (s.current = !0, o.current = a, console.error("A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.")) : !a && o.current && !c.current && (c.current = !0, o.current = a, console.error("A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.")), [a ? e : r, U((e) => (a || E(() => i(e)), t?.(e)))]; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/PencilSquareIcon.js +function zt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10" + })); } +var Bt = /*#__PURE__*/ e.forwardRef(zt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/hooks/use-default-value.js -function rn(e) { - let [t] = y(e); - return t; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/PencilIcon.js +function Vt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" + })); } +var Ht = /*#__PURE__*/ e.forwardRef(Vt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/form.js -function an(e = {}, t = null, n = []) { - for (let [r, i] of Object.entries(e)) sn(n, on(t, r), i); - return n; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/PlusIcon.js +function Ut({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M12 4.5v15m7.5-7.5h-15" + })); } -function on(e, t) { - return e ? e + "[" + t + "]" : t; +var Wt = /*#__PURE__*/ e.forwardRef(Ut); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/RectangleGroupIcon.js +function Gt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M2.25 7.125C2.25 6.504 2.754 6 3.375 6h6c.621 0 1.125.504 1.125 1.125v3.75c0 .621-.504 1.125-1.125 1.125h-6a1.125 1.125 0 0 1-1.125-1.125v-3.75ZM14.25 8.625c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v8.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 0 1-1.125-1.125v-8.25ZM3.75 16.125c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 0 1-1.125-1.125v-2.25Z" + })); } -function sn(e, t, n) { - if (Array.isArray(n)) for (let [r, i] of n.entries()) sn(e, on(t, r.toString()), i); - else n instanceof Date ? e.push([t, n.toISOString()]) : typeof n == "boolean" ? e.push([t, n ? "1" : "0"]) : typeof n == "string" ? e.push([t, n]) : typeof n == "number" ? e.push([t, `${n}`]) : n == null ? e.push([t, ""]) : ln(n) && !c(n) && an(n, t, e); +var Kt = /*#__PURE__*/ e.forwardRef(Gt); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/RectangleStackIcon.js +function qt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M6 6.878V6a2.25 2.25 0 0 1 2.25-2.25h7.5A2.25 2.25 0 0 1 18 6v.878m-12 0c.235-.083.487-.128.75-.128h10.5c.263 0 .515.045.75.128m-12 0A2.25 2.25 0 0 0 4.5 9v.878m13.5-3A2.25 2.25 0 0 1 19.5 9v.878m0 0a2.246 2.246 0 0 0-.75-.128H5.25c-.263 0-.515.045-.75.128m15 0A2.25 2.25 0 0 1 21 12v6a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18v-6c0-.98.626-1.813 1.5-2.122" + })); } -function cn(e) { - var t; - let n = e?.form ?? e.closest("form"); - if (n) { - for (let t of n.elements) if (t !== e && (t.tagName === "INPUT" && t.type === "submit" || t.tagName === "BUTTON" && t.type === "submit" || t.nodeName === "INPUT" && t.type === "image")) { - t.click(); - return; - } - (t = n.requestSubmit) == null || t.call(n); - } +var Jt = /*#__PURE__*/ e.forwardRef(qt); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/Squares2X2Icon.js +function Yt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z" + })); } -function ln(e) { - if (Object.prototype.toString.call(e) !== "[object Object]") return !1; - let t = Object.getPrototypeOf(e); - return t === null || Object.getPrototypeOf(t) === null; +var Xt = /*#__PURE__*/ e.forwardRef(Yt); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/TableCellsIcon.js +function Zt({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M3.375 19.5h17.25m-17.25 0a1.125 1.125 0 0 1-1.125-1.125M3.375 19.5h7.5c.621 0 1.125-.504 1.125-1.125m-9.75 0V5.625m0 12.75v-1.5c0-.621.504-1.125 1.125-1.125m18.375 2.625V5.625m0 12.75c0 .621-.504 1.125-1.125 1.125m1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125m0 3.75h-7.5A1.125 1.125 0 0 1 12 18.375m9.75-12.75c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125m19.5 0v1.5c0 .621-.504 1.125-1.125 1.125M2.25 5.625v1.5c0 .621.504 1.125 1.125 1.125m0 0h17.25m-17.25 0h7.5c.621 0 1.125.504 1.125 1.125M3.375 8.25c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m17.25-3.75h-7.5c-.621 0-1.125.504-1.125 1.125m8.625-1.125c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h7.5m-7.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125M12 10.875v-1.5m0 1.5c0 .621-.504 1.125-1.125 1.125M12 10.875c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125M13.125 12h7.5m-7.5 0c-.621 0-1.125.504-1.125 1.125M20.625 12c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h7.5M12 14.625v-1.5m0 1.5c0 .621-.504 1.125-1.125 1.125M12 14.625c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125m0 1.5v-1.5m0 0c0-.621.504-1.125 1.125-1.125m0 0h7.5" + })); } +var Qt = /*#__PURE__*/ e.forwardRef(Zt); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/internal/hidden.js -var un = "span", dn = ((e) => (e[e.None = 1] = "None", e[e.Focusable = 2] = "Focusable", e[e.Hidden = 4] = "Hidden", e))(dn || {}); -function fn(e, t) { - let { features: n = 1, ...r } = e, i = { - ref: t, - "aria-hidden": (n & 2) == 2 ? !0 : r["aria-hidden"] ?? void 0, - hidden: (n & 4) == 4 || void 0, - style: { - position: "fixed", - top: 1, - left: 1, - width: 1, - height: 0, - padding: 0, - margin: -1, - overflow: "hidden", - clip: "rect(0, 0, 0, 0)", - whiteSpace: "nowrap", - borderWidth: "0", - ...(n & 4) == 4 && (n & 2) != 2 && { display: "none" } - } - }; - return G()({ - ourProps: i, - theirProps: r, - slot: {}, - defaultTag: un, - name: "Hidden" - }); -} -var pn = K(fn), mn = i(null); -function hn({ children: e }) { - let n = u(mn); - if (!n) return t.createElement(t.Fragment, null, e); - let { target: r } = n; - return r ? T(t.createElement(t.Fragment, null, e), r) : null; -} -function gn({ data: e, form: n, disabled: r, onReset: i, overrides: a }) { - let [o, s] = y(null), c = Nt(); - return f(() => { - if (i && o) return c.addEventListener(o, "reset", i); - }, [ - o, - n, - i - ]), t.createElement(hn, null, t.createElement(_n, { - setForm: s, - formId: n - }), an(e).map(([e, i]) => t.createElement(pn, { - features: dn.Hidden, - ...Xt({ - key: e, - as: "input", - type: "hidden", - hidden: !0, - readOnly: !0, - form: n, - disabled: r, - name: e, - value: i, - ...a - }) - }))); -} -function _n({ setForm: e, formId: n }) { - return f(() => { - if (n) { - let t = document.getElementById(n); - t && e(t); - } - }, [e, n]), n ? null : t.createElement(pn, { - features: dn.Hidden, - as: "input", - type: "hidden", - hidden: !0, - readOnly: !0, - ref: (t) => { - if (!t) return; - let n = t.closest("form"); - n && e(n); - } - }); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/TagIcon.js +function $t({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z" + }), /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M6 6h.008v.008H6V6Z" + })); } +var en = /*#__PURE__*/ e.forwardRef($t); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/internal/id.js -var vn = i(void 0); -function yn() { - return u(vn); +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/TrashIcon.js +function tn({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" + })); } +var nn = /*#__PURE__*/ e.forwardRef(tn); //#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/dom.js -function bn(e) { - return typeof e != "object" || !e ? !1 : "nodeType" in e; -} -function xn(e) { - return bn(e) && "tagName" in e; +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/UserCircleIcon.js +function rn({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" + })); } -function Sn(e) { - return xn(e) && "accessKey" in e; +var an = /*#__PURE__*/ e.forwardRef(rn); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/UserIcon.js +function on({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z" + })); } -function Cn(e) { - return xn(e) && "tabIndex" in e; +var sn = /*#__PURE__*/ e.forwardRef(on); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/ViewColumnsIcon.js +function cn({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M9 4.5v15m6-15v15m-10.875 0h15.75c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125H4.125C3.504 4.5 3 5.004 3 5.625v12.75c0 .621.504 1.125 1.125 1.125Z" + })); } -function wn(e) { - return xn(e) && "style" in e; +var ln = /*#__PURE__*/ e.forwardRef(cn); +//#endregion +//#region ../../node_modules/.pnpm/@heroicons+react@2.2.0_react@19.2.7/node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js +function un({ title: t, titleId: n, ...r }, i) { + return /*#__PURE__*/ e.createElement("svg", Object.assign({ + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + "aria-hidden": "true", + "data-slot": "icon", + ref: i, + "aria-labelledby": n + }, r), t ? /*#__PURE__*/ e.createElement("title", { id: n }, t) : null, /*#__PURE__*/ e.createElement("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M6 18 18 6M6 6l12 12" + })); } -function Tn(e) { - return Sn(e) && e.nodeName === "IFRAME"; +var dn = /*#__PURE__*/ e.forwardRef(un); +//#endregion +//#region ../../shared/lib/frontmatter.ts +function fn(e) { + if (!e.startsWith("---\n") && !e.startsWith("---\r\n")) return { + data: {}, + body: e, + hasFrontmatter: !1 + }; + let t = e.replace(/\r\n/g, "\n"), n = t.indexOf("\n---", 4); + if (n === -1) return { + data: {}, + body: e, + hasFrontmatter: !1 + }; + let r = t.slice(4, n).trim(), i = t.slice(n + 4).replace(/^\n/, ""), a = {}; + for (let e of r.split("\n")) { + let t = e.indexOf(":"); + if (t > 0) { + let n = e.slice(0, t).trim(); + a[n] = e.slice(t + 1).trim().replace(/^["']|["']$/g, ""); + } + } + return { + data: a, + body: i, + hasFrontmatter: !0 + }; } -function En(e) { - return Sn(e) && e.nodeName === "INPUT"; +function pn(e, t) { + let n = fn(e), r = { + ...n.data, + ...t + }; + return `---\n${Object.entries(r).filter(([, e]) => e !== "").map(([e, t]) => `${e}: ${t}`).join("\n")}\n---\n\n${n.body.trimStart()}`; } -function Dn(e) { - return Sn(e) && e.nodeName === "LABEL"; +//#endregion +//#region ../../shared/lib/board.ts +function mn(e) { + return e.split(",").map((e) => e.trim()).filter(Boolean); } -function On(e) { - return Sn(e) && e.nodeName === "FIELDSET"; +function hn(e) { + return e.join(", "); } -function kn(e) { - return Sn(e) && e.nodeName === "LEGEND"; +var gn = /* @__PURE__ */ new Set([ + "id", + "relationKey", + "board", + "ticket", + "title", + "status", + "columnKey", + "position", + "priority", + "assignee", + "swimlane", + "swimlaneKey", + "due", + "icon", + "tags", + "attachments", + "notes", + "taskDone", + "taskTotal", + "excerpt", + "blocked_by", + "blockedBy", + "blocks", + "relates", + "parent" +]); +function _n(e, t) { + let { data: n, body: r } = fn(e), i = { ...n }; + if (t.title !== void 0 && (i.title = t.title), t.columnKey !== void 0 && (i.status = t.columnKey), t.priority !== void 0 && (i.priority = t.priority ?? ""), t.assignee !== void 0 && (i.assignee = t.assignee ?? ""), t.swimlaneKey !== void 0 && (i.swimlane = t.swimlaneKey ?? ""), t.due !== void 0 && (i.due = t.due ?? ""), t.icon !== void 0 && (i.icon = t.icon ?? ""), t.tags !== void 0 && (i.tags = t.tags.map((e) => e.label).join(", ")), t.attachments !== void 0 && (i.attachments = hn(t.attachments)), t.custom !== void 0) for (let [e, n] of Object.entries(t.custom)) gn.has(e) || (i[e] = n ?? ""); + return t.blockedBy !== void 0 && (i.blocked_by = Pn(t.blockedBy)), t.blocks !== void 0 && (i.blocks = Pn(t.blocks)), t.relates !== void 0 && (i.relates = Pn(t.relates)), t.parent !== void 0 && (i.parent = t.parent ? Pn([t.parent]) : ""), pn(t.notes === void 0 ? r : t.notes, i); } -function An(e) { - return xn(e) ? e.matches("a[href],audio[controls],button,details,embed,iframe,img[usemap],input:not([type=\"hidden\"]),label,select,textarea,video[controls]") : !1; +function vn(e) { + let t = e.split(/[\\/]/).pop() || e; + try { + return decodeURIComponent(t.split("?")[0] || t); + } catch { + return t; + } } -//#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/utils/bugs.js -function jn(e) { - let t = e.parentElement, n = null; - for (; t && !On(t);) kn(t) && (n = t), t = t.parentElement; - let r = t?.getAttribute("disabled") === ""; - return r && Mn(n) ? !1 : r; +function yn(e) { + let t = e.trim(); + if (!t) return !1; + let n = /^([a-z][a-z0-9+.-]*):/i.exec(t); + if (!n) return !0; + let r = n[1].toLowerCase(); + return r === "http" || r === "https"; } -function Mn(e) { - if (!e) return !1; - let t = e.previousElementSibling; - for (; t !== null;) { - if (kn(t)) return !1; - t = t.previousElementSibling; +function bn(e, t) { + let n = {}; + if (!e || !t) return n; + for (let r of t) { + let t = e[r.key]; + t !== void 0 && t !== "" && (n[r.key] = t); } - return !0; -} -//#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js -var Nn = Symbol(); -function Pn(e, t = !0) { - return Object.assign(e, { [Nn]: t }); + return n; } -function q(...e) { - let t = v(e); - f(() => { - t.current = e; - }, [e]); - let n = U((e) => { - for (let n of t.current) n != null && (typeof n == "function" ? n(e) : n.current = e); - }); - return e.every((e) => e == null || e?.[Nn]) ? void 0 : n; -} -//#endregion -//#region ../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@headlessui/react/dist/components/description/description.js -var Fn = i(null); -Fn.displayName = "DescriptionContext"; -function In() { - let e = u(Fn); - if (e === null) { - let e = /* @__PURE__ */ Error("You used a component, but it is not inside a relevant parent."); - throw Error.captureStackTrace && Error.captureStackTrace(e, In), e; +var xn = [ + "none", + "low", + "medium", + "high", + "urgent" +], Sn = [ + "urgent", + "high", + "medium", + "low", + "none" +], Cn = { + urgent: 0, + high: 1, + medium: 2, + low: 3, + none: 4 +}, wn = { + urgent: "bg-red-100 text-red-700", + high: "bg-amber-100 text-amber-700", + medium: "bg-sky-100 text-sky-700", + low: "bg-stone-100 text-stone-500" +}, Tn = [ + "#ef4444", + "#f59e0b", + "#eab308", + "#22c55e", + "#0ea5e9", + "#6366f1", + "#a855f7", + "#ec4899", + "#78716c" +], En = [ + "title", + "relationKey", + "board", + "status", + "position", + "priority", + "assignee", + "swimlane", + "due", + "tags", + "icon", + "blocked_by", + "blocks", + "relates", + "attachments", + "parent" +]; +function Dn(e) { + let t = 0, n = 0; + for (let r of e.split("\n")) { + let e = r.replace(/^\s+/, "").match(/^[-*+] \[([ xX])\]/); + e && (n += 1, e[1]?.toLowerCase() === "x" && (t += 1)); } - return e; -} -function Ln() { - return u(Fn)?.value ?? void 0; -} -function Rn() { - let [e, n] = y([]); - return [e.length > 0 ? e.join(" ") : void 0, g(() => function(e) { - let r = U((e) => (n((t) => [...t, e]), () => n((t) => { - let n = t.slice(), r = n.indexOf(e); - return r !== -1 && n.splice(r, 1), n; - }))), i = g(() => ({ - register: r, - slot: e.slot, - name: e.name, - props: e.props, - value: e.value - }), [ - r, - e.slot, - e.name, - e.props, - e.value - ]); - return t.createElement(Fn.Provider, { value: i }, e.children); - }, [n])]; -} -var zn = "p"; -function Bn(e, t) { - let n = m(), r = zt(), { id: i = `headlessui-description-${n}`, ...a } = e, o = In(), s = q(t); - H(() => o.register(i), [i, o.register]); - let c = W({ - ...o.slot, - disabled: r || !1 - }), l = { - ref: s, - ...o.props, - id: i + return { + done: t, + total: n }; - return G()({ - ourProps: l, - theirProps: a, - slot: c, - defaultTag: zn, - name: o.name || "Description" - }); } -var Vn = K(Bn), Hn = Object.assign(Vn, {}), J = ((e) => (e.Space = " ", e.Enter = "Enter", e.Escape = "Escape", e.Backspace = "Backspace", e.Delete = "Delete", e.ArrowLeft = "ArrowLeft", e.ArrowUp = "ArrowUp", e.ArrowRight = "ArrowRight", e.ArrowDown = "ArrowDown", e.Home = "Home", e.End = "End", e.PageUp = "PageUp", e.PageDown = "PageDown", e.Tab = "Tab", e))(J || {}), Un = i(null); -Un.displayName = "LabelContext"; -function Wn() { - let e = u(Un); - if (e === null) { - let e = /* @__PURE__ */ Error("You used a