@webx-ui/module-blocks 0.10.4 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.d.ts CHANGED
@@ -11,3 +11,17 @@ export interface BlocksOptions {
11
11
  * navigation: the section shows up when both halves are installed.
12
12
  */
13
13
  export declare function blocks(options?: BlocksOptions): AdminModule;
14
+ export interface RegionsOptions {
15
+ /** Where the section lives inside the panel. */
16
+ path?: string;
17
+ }
18
+ /**
19
+ * The layout regions — the header and the footer made of blocks — as a section of their own.
20
+ *
21
+ * A second module rather than two more routes of `blocks()`: the navigation is one entry per
22
+ * module, and this one stands in a different place for a different person. Blocks is the
23
+ * developer's section, closed by `blocks.manage` because a template is code; the header is
24
+ * edited by whoever edits the pages, under `blocks.regions`. The id matches the module the
25
+ * server reports, which is what puts the entry in the menu.
26
+ */
27
+ export declare function regions(options?: RegionsOptions): AdminModule;
package/dist/move.d.ts CHANGED
@@ -6,7 +6,7 @@ import { BlockNode, BlockType } from './types';
6
6
  * narrows it to, when it does. The picker asks this for a new block and "Move to" for an
7
7
  * existing one, and the two must not disagree about where a block can go.
8
8
  */
9
- export declare function allows(type: BlockType, parent: BlockType | null, allow: string[] | null): boolean;
9
+ export declare function allows(type: BlockType, parent: BlockType | null, allow: string[] | null, root?: string): boolean;
10
10
  /** One list a block could be moved into. */
11
11
  export interface Destination {
12
12
  /** The container, or null for the top level. */
@@ -22,6 +22,11 @@ export interface TopLevel {
22
22
  owner: BlockType | null;
23
23
  allow: string[] | null;
24
24
  max: number | null;
25
+ /**
26
+ * What the top level is called in `allowed_in`: `root` for a page, `region:<name>` for a
27
+ * layout region — a type made for the header must not be offered in the middle of an article.
28
+ */
29
+ root?: string;
25
30
  }
26
31
  /**
27
32
  * Every list a block may be moved into, in the order the page draws them.
package/dist/preview.d.ts CHANGED
@@ -19,6 +19,28 @@ export declare const blocksPreviewKey: InjectionKey<BlocksPreview>;
19
19
  /** Called by the hosting screen, above the `wx-blocks` field. */
20
20
  export declare function provideBlocksPreview(preview: BlocksPreview): void;
21
21
  export declare function useBlocksPreview(): BlocksPreview | null;
22
+ /**
23
+ * What the top level of the constructor is, when it is not a page.
24
+ *
25
+ * A layout region is edited with the same `wx-blocks` field as a page, from a screen described
26
+ * once for every region — so what differs between `header` and `footer` (the name types list in
27
+ * `allowed_in`, and the region's own `allow` and `max` from the site's config) cannot be written
28
+ * into the description. The editor hosting the screen provides it instead, the way it provides
29
+ * the preview.
30
+ */
31
+ export interface BlocksTop {
32
+ /** The name of the top level in `allowed_in` — `region:header`. */
33
+ root: string;
34
+ /** What "Move to" calls the top level — the region's title rather than "The page". */
35
+ label?: string;
36
+ /** What may stand at the top level, beyond what the types themselves allow. */
37
+ allow?: string[] | null;
38
+ /** How many blocks the top level may hold. */
39
+ max?: number | null;
40
+ }
41
+ export declare const blocksTopKey: InjectionKey<Readonly<Ref<BlocksTop | null>>>;
42
+ /** Called by the hosting screen, above the `wx-blocks` field. */
43
+ export declare function provideBlocksTop(top: Readonly<Ref<BlocksTop | null>>): void;
22
44
  /**
23
45
  * Set by the constructor for everything it draws, so that a `wx-blocks` node inside a
24
46
  * block's own form knows it is nested — and draws a note instead of a second constructor.
@@ -0,0 +1,30 @@
1
+ import { InjectionKey, Ref } from 'vue';
2
+ import { RegionDetail } from './types';
3
+ /**
4
+ * What the region editor knows and the nodes of its screen do not.
5
+ *
6
+ * The editor is a described screen (`regions.form`), so a site can add a tab to it with a patch;
7
+ * the history is a node type of that screen, and it needs the region being edited — which a
8
+ * description cannot hand it. The page hosting the screen provides it instead.
9
+ */
10
+ export interface RegionEditorContext {
11
+ /** The region as the server last answered it, or `null` while the first request is out. */
12
+ region: Ref<RegionDetail | null>;
13
+ /** Whether this administrator may write. */
14
+ canManage: boolean;
15
+ /** Ask the server for the region again — after a restore. */
16
+ reload(): Promise<void>;
17
+ }
18
+ export declare const regionEditorKey: InjectionKey<RegionEditorContext>;
19
+ export declare function provideRegionEditor(editor: RegionEditorContext): void;
20
+ /** The editor above this node, or `null` outside one: a node drawn in a demo draws nothing. */
21
+ export declare function useRegionEditor(): RegionEditorContext | null;
22
+ /**
23
+ * The preview address for one page of the site.
24
+ *
25
+ * The server signs the region and nothing else, so the page is appended by the panel: a person
26
+ * looking at the header on the contacts page is still looking at the same region.
27
+ */
28
+ export declare function previewAt(url: string, path: string): string;
29
+ /** A site path out of whatever the link picker holds: an address typed, or a page's URL. */
30
+ export declare function sitePath(address: string | null): string | null;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .wx-block-data[data-v-b994c835]{display:flex;flex-direction:column;gap:var(--wx-space-4);min-width:0}.wx-block-checks[data-v-e56947a8]{display:flex;flex-direction:column;gap:var(--wx-space-4);padding:var(--wx-space-8) var(--wx-space-12);font-size:var(--wx-font-size-sm);border-block-start:1px solid var(--wx-border-muted)}.wx-block-checks__line[data-v-e56947a8]{display:flex;gap:var(--wx-space-8);align-items:flex-start}.wx-block-checks__line .wx-icon[data-v-e56947a8]{flex:none;margin-block-start:2px}.is-ok[data-v-e56947a8]{color:var(--wx-text-muted)}.is-ok .wx-icon[data-v-e56947a8]{color:var(--wx-color-success)}.is-warning[data-v-e56947a8]{color:var(--wx-color-warning)}.is-error[data-v-e56947a8]{color:var(--wx-color-danger)}.wx-block-history[data-v-42c6b7ad]{display:flex;flex-direction:column}.wx-block-history__ghost[data-v-42c6b7ad]{padding:var(--wx-space-10) var(--wx-space-12)}.wx-block-history__row[data-v-42c6b7ad]{display:flex;align-items:center;gap:var(--wx-space-12);padding:var(--wx-space-10) var(--wx-space-12);border-block-end:1px solid var(--wx-border-muted);flex-wrap:wrap}.wx-block-history__row[data-v-42c6b7ad]:last-child{border-block-end:0}.wx-block-history__number[data-v-42c6b7ad]{width:40px;font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-sm);color:var(--wx-text-muted)}.wx-block-history__who[data-v-42c6b7ad]{display:flex;flex-direction:column;flex:1;min-width:160px}.wx-block-stage[data-v-3185ee45]{display:flex;flex-direction:column;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-surface);overflow:hidden}.wx-block-stage__bar[data-v-3185ee45]{display:flex;justify-content:space-between;gap:var(--wx-space-8);padding:var(--wx-space-8) var(--wx-space-12);border-block-end:1px solid var(--wx-border-muted)}.wx-block-stage__ground[data-v-3185ee45]{padding:var(--wx-space-12);background:var(--wx-bg-subtle)}.wx-block-stage__clip[data-v-3185ee45]{overflow:hidden;margin-inline:auto;box-shadow:var(--wx-shadow-sm)}.wx-block-stage__frame[data-v-3185ee45]{display:block;border:0;background:#fff;transform-origin:top left}.wx-block-editor[data-v-8201065d]{display:flex;flex-direction:column;gap:var(--wx-gap, var(--wx-space-16));container-type:inline-size}.wx-block-editor__ghost-head[data-v-8201065d]{max-width:420px}.wx-block-editor__columns[data-v-8201065d]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--wx-gap, var(--wx-space-16));align-items:start}.wx-block-editor__columns.is-alone[data-v-8201065d]{grid-template-columns:minmax(0,1fr)}.wx-block-editor__split[data-v-8201065d]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--wx-gap, var(--wx-space-16));align-items:start}@container (max-width: 1080px){.wx-block-editor__columns[data-v-8201065d],.wx-block-editor__split[data-v-8201065d]{grid-template-columns:minmax(0,1fr)}}.wx-block-editor__call[data-v-8201065d]{min-width:0}.wx-block-editor__call[data-v-8201065d] .wx-card__body{display:flex;flex-direction:column;gap:var(--wx-space-10)}.wx-block-editor__call-tag[data-v-8201065d]{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--wx-space-8)}.wx-block-editor__call-tag pre[data-v-8201065d]{flex:1 1 240px;min-width:0;margin:0;padding:var(--wx-space-10) var(--wx-space-12);border-radius:var(--wx-radius-sm);background:var(--wx-bg-subtle);overflow-x:auto}.wx-block-editor__call-tag code[data-v-8201065d]{line-height:1.6;color:var(--wx-text-default);white-space:pre}.wx-block-editor__shape[data-v-8201065d]{display:flex;flex-direction:column;gap:var(--wx-space-6)}.wx-block-editor__shape-fields[data-v-8201065d]{display:grid;grid-template-columns:minmax(0,max-content) minmax(0,1fr);gap:var(--wx-space-4) var(--wx-space-12);margin:0;font-size:var(--wx-font-size-sm)}.wx-block-editor__shape-fields dt[data-v-8201065d]{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--wx-space-6)}.wx-block-editor__shape-fields dd[data-v-8201065d]{margin:0;color:var(--wx-text-muted)}.wx-block-editor__shape-type[data-v-8201065d]{font-size:var(--wx-font-size-xs);color:var(--wx-text-muted)}@container (max-width: 520px){.wx-block-editor__shape-fields[data-v-8201065d]{grid-template-columns:minmax(0,1fr)}.wx-block-editor__shape-fields dd[data-v-8201065d]{margin-block-end:var(--wx-space-6)}}.wx-block-editor__examples[data-v-8201065d]{min-width:0}.wx-block-editor__example+.wx-block-editor__example[data-v-8201065d]{margin-block-start:var(--wx-space-12)}.wx-block-editor__example pre[data-v-8201065d]{margin:var(--wx-space-4) 0 0;padding:var(--wx-space-10) var(--wx-space-12);border-radius:var(--wx-radius-sm);background:var(--wx-bg-subtle);overflow-x:auto}.wx-block-editor__example code[data-v-8201065d]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs);line-height:1.6;color:var(--wx-text-default);white-space:pre}.wx-block-editor__stage[data-v-8201065d]{position:sticky;top:var(--wx-space-12)}.wx-block-editor__pane[data-v-8201065d]{display:flex;flex-direction:column;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);overflow:hidden}.wx-block-editor__pane[data-v-8201065d] .wx-code-editor{border:0;border-radius:0}.wx-block-editor__sample[data-v-8201065d]{min-width:0}.wx-block-editor__pills[data-v-8201065d]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--wx-space-6);padding:var(--wx-space-8) var(--wx-space-12);border-block-start:1px solid var(--wx-border-muted)}.wx-block-editor__pill[data-v-8201065d]{padding:2px var(--wx-space-8);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-full);background:var(--wx-bg-surface);color:var(--wx-color-primary);font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs);cursor:pointer}.wx-block-editor__pill[data-v-8201065d]:hover:not(:disabled){border-color:var(--wx-color-primary)}.wx-block-editor__note[data-v-8201065d]{display:flex;align-items:center;gap:var(--wx-space-8);padding:var(--wx-space-8) var(--wx-space-12);border-block-start:1px solid var(--wx-border-muted)}.wx-block-editor__note[data-v-8201065d]>:first-child{flex:1 1 auto;min-width:0}.wx-block-editor__sheet[data-v-8201065d]{min-width:0}.wx-block-editor__settings[data-v-8201065d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--wx-space-12) var(--wx-space-16)}.wx-block-editor__settings .is-wide[data-v-8201065d]{grid-column:1 / -1}.wx-block-editor__danger[data-v-8201065d]{display:flex;align-items:center;gap:var(--wx-space-12);flex-wrap:wrap}.wx-block-editor__uses[data-v-8201065d]{padding:0;border:0;background:none;font:inherit;color:var(--wx-text-link);cursor:pointer}.wx-block-editor__uses[data-v-8201065d]:hover{text-decoration:underline;text-underline-offset:.2em}.wx-block-editor__uses[data-v-8201065d]:focus-visible{outline:none;border-radius:var(--wx-radius-xs);box-shadow:var(--wx-ring-focus)}.wx-block-editor__usage[data-v-8201065d]{display:flex;flex-direction:column;gap:var(--wx-space-6)}.wx-block-editor__use[data-v-8201065d]{display:flex;align-items:center;gap:var(--wx-space-8)}a.wx-block-editor__use[data-v-8201065d]{color:var(--wx-text-link);text-decoration:none}a.wx-block-editor__use[data-v-8201065d]:hover{text-decoration:underline;text-underline-offset:.2em}code[data-v-8201065d]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs)}.wx-block-move[data-v-41c2ff3e]{display:flex;flex-direction:column;gap:var(--wx-space-4)}.wx-block-move__place[data-v-41c2ff3e]{display:flex;align-items:center;gap:var(--wx-space-10);width:100%;padding:var(--wx-space-10) var(--wx-space-12);font:inherit;text-align:start;color:inherit;background:transparent;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-control);cursor:pointer}.wx-block-move__place[data-v-41c2ff3e]:hover:not(:disabled),.wx-block-move__place[data-v-41c2ff3e]:focus-visible{border-color:var(--wx-color-primary);background:var(--wx-color-primary-soft);outline:none}.wx-block-move__place[data-v-41c2ff3e]:disabled{opacity:.6;cursor:not-allowed}.wx-block-move__trail[data-v-41c2ff3e]{display:flex;flex:1;flex-wrap:wrap;gap:var(--wx-space-4);min-width:0;color:var(--wx-text-muted)}.wx-block-move__trail .is-last[data-v-41c2ff3e],.wx-block-move__trail[data-v-41c2ff3e]:not(:has(span)){color:var(--wx-text-default);font-weight:var(--wx-font-weight-medium)}.wx-block-move__sep[data-v-41c2ff3e]{color:var(--wx-text-muted)}.wx-block-thumb[data-v-7421ce33]{position:relative;overflow:hidden;background:var(--wx-bg-subtle)}.wx-block-thumb__frame[data-v-7421ce33]{position:absolute;inset-block-start:0;inset-inline-start:0;border:0;transform-origin:top left;pointer-events:none;background:#fff}.wx-block-thumb__empty[data-v-7421ce33]{display:grid;place-items:center;height:100%;color:var(--wx-text-muted)}.wx-block-picker[data-v-d04662fd]{display:flex;flex-direction:column;gap:var(--wx-space-16)}.wx-block-picker__group[data-v-d04662fd]{display:flex;flex-direction:column;gap:var(--wx-space-8)}.wx-block-picker__group-title[data-v-d04662fd]{font-size:var(--wx-font-size-xs);font-weight:var(--wx-font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--wx-text-muted)}.wx-block-picker__cards[data-v-d04662fd]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--wx-space-12)}.wx-block-picker__card[data-v-d04662fd]{display:flex;flex-direction:column;padding:0;overflow:hidden;text-align:start;font:inherit;color:inherit;background:var(--wx-bg-surface);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);cursor:pointer}.wx-block-picker__card[data-v-d04662fd]:hover:not(:disabled),.wx-block-picker__card[data-v-d04662fd]:focus-visible{border-color:var(--wx-color-primary);outline:none}.wx-block-picker__card.is-disabled[data-v-d04662fd]{opacity:.6;cursor:not-allowed}.wx-block-picker__body[data-v-d04662fd]{display:flex;flex-direction:column;gap:var(--wx-space-4);padding:var(--wx-space-10) var(--wx-space-12)}.wx-block-picker__title[data-v-d04662fd]{font-weight:var(--wx-font-weight-semibold)}.wx-blocks-preview[data-v-398e4cef]{box-sizing:border-box;display:flex;flex-direction:column;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-surface);overflow:clip;min-width:0}.wx-blocks-preview.is-fullscreen[data-v-398e4cef]{position:fixed;inset:0;z-index:var(--wx-z-index-overlay);border:0;border-radius:0}.wx-blocks-preview__bar[data-v-398e4cef]{display:flex;align-items:center;justify-content:space-between;gap:var(--wx-space-8);padding:var(--wx-space-8) var(--wx-space-12);border-block-end:1px solid var(--wx-border-muted)}.wx-blocks-preview:not(.is-fullscreen) .wx-blocks-preview__bar[data-v-398e4cef]{position:sticky;top:0;z-index:1;background:var(--wx-bg-surface)}.wx-blocks-preview__label[data-v-398e4cef]{flex:1 1 0;min-width:0;font-family:var(--wx-font-family-mono)}.wx-blocks-preview__widths[data-v-398e4cef]{flex:none}.wx-blocks-preview__tools[data-v-398e4cef]{display:flex;flex:1 1 0;gap:var(--wx-space-4);align-items:center;justify-content:flex-end}.wx-blocks-preview__ground[data-v-398e4cef]{flex:1;padding:var(--wx-space-12);background:var(--wx-bg-subtle);overflow:auto;max-height:calc(100vh - 200px)}.is-fullscreen .wx-blocks-preview__ground[data-v-398e4cef]{max-height:none}.is-compact .wx-blocks-preview__ground[data-v-398e4cef]{padding-inline:0}.is-grown:not(.is-fullscreen) .wx-blocks-preview__ground[data-v-398e4cef]{overflow:visible;max-height:none}.wx-blocks-preview__clip[data-v-398e4cef]{margin-inline:auto;overflow:hidden;box-shadow:var(--wx-shadow-sm)}.wx-blocks-preview__frame[data-v-398e4cef]{display:block;border:0;background:#fff;height:min(72vh,720px);transform-origin:top left}.wx-blocks-tree[data-v-3cef28cd] .wx-sortable-list__content{min-width:0}.wx-blocks-tree__node[data-v-3cef28cd]{display:flex;flex-direction:column;gap:var(--wx-space-2);min-width:0}.wx-blocks-tree__row[data-v-3cef28cd]{display:flex;align-items:center;gap:var(--wx-space-8);padding:var(--wx-space-6) var(--wx-space-8);border:1px solid transparent;border-radius:var(--wx-radius-control);cursor:pointer}.wx-blocks-tree__row[data-v-3cef28cd]:hover{background:var(--wx-bg-subtle)}.wx-blocks-tree__row.is-selected[data-v-3cef28cd]{background:var(--wx-color-primary-soft);border-color:var(--wx-color-primary)}.wx-blocks-tree__name[data-v-3cef28cd]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--wx-font-size-sm);font-weight:var(--wx-font-weight-medium)}.wx-blocks-tree__row.is-hidden .wx-blocks-tree__name[data-v-3cef28cd]{opacity:.55}.wx-blocks-tree__flag[data-v-3cef28cd]{display:flex;color:var(--wx-text-muted)}.wx-blocks-tree__flag.is-warning[data-v-3cef28cd]{color:var(--wx-color-warning)}.wx-blocks-tree__flag.is-danger[data-v-3cef28cd]{color:var(--wx-color-danger)}.wx-blocks-tree__actions[data-v-3cef28cd]{display:flex;flex:none}@media(pointer:coarse){.wx-blocks-tree__actions[data-v-3cef28cd] .wx-actions__menu .wx-action{--wx-action-size: 32px;position:relative}.wx-blocks-tree__actions[data-v-3cef28cd] .wx-actions__menu .wx-action:after{content:"";position:absolute;inset:-6px}}.wx-blocks-tree__kids[data-v-3cef28cd]{display:flex;flex-direction:column;gap:var(--wx-space-2);margin-inline-start:var(--wx-space-14);padding-inline-start:var(--wx-space-8);border-inline-start:1px dashed var(--wx-border-default)}.wx-blocks-tree__add[data-v-3cef28cd]{width:100%;padding:var(--wx-space-6);border:1px dashed var(--wx-border-strong);border-radius:var(--wx-radius-control);background:transparent;color:var(--wx-text-muted);font:inherit;font-size:var(--wx-font-size-xs);cursor:pointer}.wx-blocks-tree__add[data-v-3cef28cd]:hover{color:var(--wx-color-primary);border-color:var(--wx-color-primary);background:var(--wx-color-primary-soft)}.wx-blocks-host[data-v-9de2f53a]{container-type:inline-size}.wx-blocks[data-v-9de2f53a]{display:grid;grid-template-columns:clamp(360px,34%,520px) minmax(0,1fr);gap:var(--wx-gap, var(--wx-space-16));align-items:start}.wx-blocks[data-v-9de2f53a]:not(.has-preview){grid-template-columns:minmax(0,1fr)}.wx-blocks__tree[data-v-9de2f53a],.wx-blocks__fields[data-v-9de2f53a]{display:flex;flex-direction:column;gap:var(--wx-space-8);padding:var(--wx-space-8);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-surface);min-width:0}.wx-blocks__panel-head[data-v-9de2f53a]{display:flex;align-items:center;justify-content:space-between;gap:var(--wx-space-8);padding:var(--wx-space-4) var(--wx-space-6)}.wx-blocks__panel-title[data-v-9de2f53a]{display:flex;align-items:center;gap:var(--wx-space-4);min-width:0;font-weight:var(--wx-font-weight-semibold)}.wx-blocks__panel-name[data-v-9de2f53a]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wx-drawer .wx-blocks__fields .wx-blocks__panel-title[data-v-9de2f53a]{display:none}.wx-blocks__trail[data-v-9de2f53a]{display:flex;align-items:center;gap:var(--wx-space-4);min-width:0;color:var(--wx-text-muted);font-weight:var(--wx-font-weight-regular);font-size:var(--wx-font-size-sm)}.wx-blocks__trail-step[data-v-9de2f53a]{padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer;white-space:nowrap}.wx-blocks__trail-step[data-v-9de2f53a]:hover{color:var(--wx-text-default);text-decoration:underline}.wx-blocks__panel-extra[data-v-9de2f53a]{display:flex;align-items:center;gap:var(--wx-space-8)}.wx-blocks__form[data-v-9de2f53a]{padding:var(--wx-space-6)}.wx-blocks-host:not(.is-compact) .wx-blocks__side[data-v-9de2f53a]{min-width:0;position:sticky;top:var(--wx-space-12);max-height:calc(100dvh - var(--wx-space-24) - var(--wx-action-bar-room, 0px));display:flex;flex-direction:column}.wx-blocks-host:not(.is-compact) .wx-blocks__tree[data-v-9de2f53a],.wx-blocks-host:not(.is-compact) .wx-blocks__fields[data-v-9de2f53a]{min-height:0;overflow:clip}.wx-blocks__panel-head[data-v-9de2f53a]{flex:none}.wx-blocks-host:not(.is-compact) .wx-blocks__list[data-v-9de2f53a],.wx-blocks-host:not(.is-compact) .wx-blocks__form[data-v-9de2f53a]{min-height:0;overflow:auto;overscroll-behavior:contain}.wx-blocks-host:not(.is-compact) .wx-blocks__list[data-v-9de2f53a]{padding:var(--wx-space-2);margin:calc(-1 * var(--wx-space-2))}.wx-blocks__preview[data-v-9de2f53a]{min-width:0;position:sticky;top:var(--wx-space-12)}.wx-blocks__preview[data-v-9de2f53a]:has(.is-grown),.wx-blocks__preview[data-v-9de2f53a]:has(.is-fullscreen){position:static}.wx-blocks__tools[data-v-9de2f53a]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--wx-space-8);flex:none}.wx-blocks__add[data-v-9de2f53a],.wx-blocks__preview-button[data-v-9de2f53a]{flex:1 1 auto;min-width:0}.wx-blocks__preview-button[data-v-9de2f53a]{display:none;flex:none}.wx-blocks-host.is-compact .wx-blocks[data-v-9de2f53a],.wx-blocks-host.is-compact .wx-blocks.has-preview[data-v-9de2f53a]{grid-template-columns:minmax(0,1fr)}.wx-drawer .wx-blocks__tree[data-v-9de2f53a],.wx-drawer .wx-blocks__fields[data-v-9de2f53a]{border:0;padding:0;background:none}code[data-v-9de2f53a]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs);color:var(--wx-text-muted)}.wx-block-card[data-v-1d29dfee]{display:flex;flex-direction:column;width:100%;padding:0;overflow:hidden;text-align:start;font:inherit;color:inherit;background:var(--wx-bg-surface);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);cursor:pointer}.wx-block-card[data-v-1d29dfee]:hover,.wx-block-card[data-v-1d29dfee]:focus-visible{border-color:var(--wx-color-primary);outline:none}.wx-block-card__body[data-v-1d29dfee]{display:flex;flex-direction:column;gap:var(--wx-space-6);padding:var(--wx-space-12) var(--wx-space-14)}.wx-block-card__title[data-v-1d29dfee]{font-weight:var(--wx-font-weight-semibold)}.wx-block-card__chips[data-v-1d29dfee]{display:flex;flex-wrap:wrap;gap:var(--wx-space-6)}code[data-v-1d29dfee]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs)}.wx-block-create[data-v-585106f0]{display:flex;flex-direction:column;gap:var(--wx-space-12)}.wx-block-create__kinds[data-v-585106f0]{gap:var(--wx-space-10)}.wx-block-create__kinds[data-v-585106f0] .wx-radio{align-items:flex-start}.wx-block-create__kind[data-v-585106f0]{display:block;font-weight:var(--wx-font-weight-medium)}.wx-block-create__kind-help[data-v-585106f0]{display:block;font-size:var(--wx-font-size-sm);color:var(--wx-text-muted)}.wx-block-declared[data-v-3c4079a4]{display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--wx-bg-surface);border:1px dashed var(--wx-border-strong);border-radius:var(--wx-radius-md)}.wx-block-declared__mark[data-v-3c4079a4]{display:flex;align-items:center;justify-content:center;height:120px;font-size:32px;color:var(--wx-text-muted);background:var(--wx-bg-subtle);border-block-end:1px dashed var(--wx-border-default)}.wx-block-declared__body[data-v-3c4079a4]{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--wx-space-6);padding:var(--wx-space-12) var(--wx-space-14)}.wx-block-declared__title[data-v-3c4079a4]{font-weight:var(--wx-font-weight-semibold)}.wx-block-declared__actions[data-v-3c4079a4]{margin-block-start:auto;padding-block-start:var(--wx-space-4)}code[data-v-3c4079a4]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs)}.wx-blocks-page__toolbar[data-v-14d130be]{display:flex;justify-content:flex-end}.wx-blocks-page__search[data-v-14d130be]{width:100%;max-width:280px}.wx-blocks-page__ghost[data-v-14d130be]{display:flex;flex-direction:column;overflow:hidden;background:var(--wx-bg-surface);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md)}.wx-blocks-page__ghost-thumb[data-v-14d130be]{border-radius:0}.wx-blocks-page__ghost-body[data-v-14d130be]{display:flex;flex-direction:column;gap:var(--wx-space-8);padding:var(--wx-space-12) var(--wx-space-14)}.wx-blocks-page__group[data-v-14d130be]{display:flex;flex-direction:column;gap:var(--wx-space-12)}.wx-blocks-page__group-title[data-v-14d130be]{font-size:var(--wx-font-size-xs);font-weight:var(--wx-font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--wx-text-muted)}.wx-blocks-page__cards[data-v-14d130be] .is-ghost{opacity:.35}.wx-blocks-page__cards[data-v-14d130be]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--wx-gap, var(--wx-space-16))}
1
+ .wx-block-data[data-v-b994c835]{display:flex;flex-direction:column;gap:var(--wx-space-4);min-width:0}.wx-block-checks[data-v-e56947a8]{display:flex;flex-direction:column;gap:var(--wx-space-4);padding:var(--wx-space-8) var(--wx-space-12);font-size:var(--wx-font-size-sm);border-block-start:1px solid var(--wx-border-muted)}.wx-block-checks__line[data-v-e56947a8]{display:flex;gap:var(--wx-space-8);align-items:flex-start}.wx-block-checks__line .wx-icon[data-v-e56947a8]{flex:none;margin-block-start:2px}.is-ok[data-v-e56947a8]{color:var(--wx-text-muted)}.is-ok .wx-icon[data-v-e56947a8]{color:var(--wx-color-success)}.is-warning[data-v-e56947a8]{color:var(--wx-color-warning)}.is-error[data-v-e56947a8]{color:var(--wx-color-danger)}.wx-block-history[data-v-42c6b7ad]{display:flex;flex-direction:column}.wx-block-history__ghost[data-v-42c6b7ad]{padding:var(--wx-space-10) var(--wx-space-12)}.wx-block-history__row[data-v-42c6b7ad]{display:flex;align-items:center;gap:var(--wx-space-12);padding:var(--wx-space-10) var(--wx-space-12);border-block-end:1px solid var(--wx-border-muted);flex-wrap:wrap}.wx-block-history__row[data-v-42c6b7ad]:last-child{border-block-end:0}.wx-block-history__number[data-v-42c6b7ad]{width:40px;font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-sm);color:var(--wx-text-muted)}.wx-block-history__who[data-v-42c6b7ad]{display:flex;flex-direction:column;flex:1;min-width:160px}.wx-block-stage[data-v-3185ee45]{display:flex;flex-direction:column;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-surface);overflow:hidden}.wx-block-stage__bar[data-v-3185ee45]{display:flex;justify-content:space-between;gap:var(--wx-space-8);padding:var(--wx-space-8) var(--wx-space-12);border-block-end:1px solid var(--wx-border-muted)}.wx-block-stage__ground[data-v-3185ee45]{padding:var(--wx-space-12);background:var(--wx-bg-subtle)}.wx-block-stage__clip[data-v-3185ee45]{overflow:hidden;margin-inline:auto;box-shadow:var(--wx-shadow-sm)}.wx-block-stage__frame[data-v-3185ee45]{display:block;border:0;background:#fff;transform-origin:top left}.wx-block-editor[data-v-8201065d]{display:flex;flex-direction:column;gap:var(--wx-gap, var(--wx-space-16));container-type:inline-size}.wx-block-editor__ghost-head[data-v-8201065d]{max-width:420px}.wx-block-editor__columns[data-v-8201065d]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--wx-gap, var(--wx-space-16));align-items:start}.wx-block-editor__columns.is-alone[data-v-8201065d]{grid-template-columns:minmax(0,1fr)}.wx-block-editor__split[data-v-8201065d]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--wx-gap, var(--wx-space-16));align-items:start}@container (max-width: 1080px){.wx-block-editor__columns[data-v-8201065d],.wx-block-editor__split[data-v-8201065d]{grid-template-columns:minmax(0,1fr)}}.wx-block-editor__call[data-v-8201065d]{min-width:0}.wx-block-editor__call[data-v-8201065d] .wx-card__body{display:flex;flex-direction:column;gap:var(--wx-space-10)}.wx-block-editor__call-tag[data-v-8201065d]{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--wx-space-8)}.wx-block-editor__call-tag pre[data-v-8201065d]{flex:1 1 240px;min-width:0;margin:0;padding:var(--wx-space-10) var(--wx-space-12);border-radius:var(--wx-radius-sm);background:var(--wx-bg-subtle);overflow-x:auto}.wx-block-editor__call-tag code[data-v-8201065d]{line-height:1.6;color:var(--wx-text-default);white-space:pre}.wx-block-editor__shape[data-v-8201065d]{display:flex;flex-direction:column;gap:var(--wx-space-6)}.wx-block-editor__shape-fields[data-v-8201065d]{display:grid;grid-template-columns:minmax(0,max-content) minmax(0,1fr);gap:var(--wx-space-4) var(--wx-space-12);margin:0;font-size:var(--wx-font-size-sm)}.wx-block-editor__shape-fields dt[data-v-8201065d]{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--wx-space-6)}.wx-block-editor__shape-fields dd[data-v-8201065d]{margin:0;color:var(--wx-text-muted)}.wx-block-editor__shape-type[data-v-8201065d]{font-size:var(--wx-font-size-xs);color:var(--wx-text-muted)}@container (max-width: 520px){.wx-block-editor__shape-fields[data-v-8201065d]{grid-template-columns:minmax(0,1fr)}.wx-block-editor__shape-fields dd[data-v-8201065d]{margin-block-end:var(--wx-space-6)}}.wx-block-editor__examples[data-v-8201065d]{min-width:0}.wx-block-editor__example+.wx-block-editor__example[data-v-8201065d]{margin-block-start:var(--wx-space-12)}.wx-block-editor__example pre[data-v-8201065d]{margin:var(--wx-space-4) 0 0;padding:var(--wx-space-10) var(--wx-space-12);border-radius:var(--wx-radius-sm);background:var(--wx-bg-subtle);overflow-x:auto}.wx-block-editor__example code[data-v-8201065d]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs);line-height:1.6;color:var(--wx-text-default);white-space:pre}.wx-block-editor__stage[data-v-8201065d]{position:sticky;top:var(--wx-space-12)}.wx-block-editor__pane[data-v-8201065d]{display:flex;flex-direction:column;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);overflow:hidden}.wx-block-editor__pane[data-v-8201065d] .wx-code-editor{border:0;border-radius:0}.wx-block-editor__sample[data-v-8201065d]{min-width:0}.wx-block-editor__pills[data-v-8201065d]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--wx-space-6);padding:var(--wx-space-8) var(--wx-space-12);border-block-start:1px solid var(--wx-border-muted)}.wx-block-editor__pill[data-v-8201065d]{padding:2px var(--wx-space-8);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-full);background:var(--wx-bg-surface);color:var(--wx-color-primary);font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs);cursor:pointer}.wx-block-editor__pill[data-v-8201065d]:hover:not(:disabled){border-color:var(--wx-color-primary)}.wx-block-editor__note[data-v-8201065d]{display:flex;align-items:center;gap:var(--wx-space-8);padding:var(--wx-space-8) var(--wx-space-12);border-block-start:1px solid var(--wx-border-muted)}.wx-block-editor__note[data-v-8201065d]>:first-child{flex:1 1 auto;min-width:0}.wx-block-editor__sheet[data-v-8201065d]{min-width:0}.wx-block-editor__settings[data-v-8201065d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--wx-space-12) var(--wx-space-16)}.wx-block-editor__settings .is-wide[data-v-8201065d]{grid-column:1 / -1}.wx-block-editor__danger[data-v-8201065d]{display:flex;align-items:center;gap:var(--wx-space-12);flex-wrap:wrap}.wx-block-editor__uses[data-v-8201065d]{padding:0;border:0;background:none;font:inherit;color:var(--wx-text-link);cursor:pointer}.wx-block-editor__uses[data-v-8201065d]:hover{text-decoration:underline;text-underline-offset:.2em}.wx-block-editor__uses[data-v-8201065d]:focus-visible{outline:none;border-radius:var(--wx-radius-xs);box-shadow:var(--wx-ring-focus)}.wx-block-editor__usage[data-v-8201065d]{display:flex;flex-direction:column;gap:var(--wx-space-6)}.wx-block-editor__use[data-v-8201065d]{display:flex;align-items:center;gap:var(--wx-space-8)}a.wx-block-editor__use[data-v-8201065d]{color:var(--wx-text-link);text-decoration:none}a.wx-block-editor__use[data-v-8201065d]:hover{text-decoration:underline;text-underline-offset:.2em}code[data-v-8201065d]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs)}.wx-block-move[data-v-41c2ff3e]{display:flex;flex-direction:column;gap:var(--wx-space-4)}.wx-block-move__place[data-v-41c2ff3e]{display:flex;align-items:center;gap:var(--wx-space-10);width:100%;padding:var(--wx-space-10) var(--wx-space-12);font:inherit;text-align:start;color:inherit;background:transparent;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-control);cursor:pointer}.wx-block-move__place[data-v-41c2ff3e]:hover:not(:disabled),.wx-block-move__place[data-v-41c2ff3e]:focus-visible{border-color:var(--wx-color-primary);background:var(--wx-color-primary-soft);outline:none}.wx-block-move__place[data-v-41c2ff3e]:disabled{opacity:.6;cursor:not-allowed}.wx-block-move__trail[data-v-41c2ff3e]{display:flex;flex:1;flex-wrap:wrap;gap:var(--wx-space-4);min-width:0;color:var(--wx-text-muted)}.wx-block-move__trail .is-last[data-v-41c2ff3e],.wx-block-move__trail[data-v-41c2ff3e]:not(:has(span)){color:var(--wx-text-default);font-weight:var(--wx-font-weight-medium)}.wx-block-move__sep[data-v-41c2ff3e]{color:var(--wx-text-muted)}.wx-block-thumb[data-v-7421ce33]{position:relative;overflow:hidden;background:var(--wx-bg-subtle)}.wx-block-thumb__frame[data-v-7421ce33]{position:absolute;inset-block-start:0;inset-inline-start:0;border:0;transform-origin:top left;pointer-events:none;background:#fff}.wx-block-thumb__empty[data-v-7421ce33]{display:grid;place-items:center;height:100%;color:var(--wx-text-muted)}.wx-block-picker[data-v-87f5880b]{display:flex;flex-direction:column;gap:var(--wx-space-16)}.wx-block-picker__group[data-v-87f5880b]{display:flex;flex-direction:column;gap:var(--wx-space-8)}.wx-block-picker__group-title[data-v-87f5880b]{font-size:var(--wx-font-size-xs);font-weight:var(--wx-font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--wx-text-muted)}.wx-block-picker__cards[data-v-87f5880b]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--wx-space-12)}.wx-block-picker__card[data-v-87f5880b]{display:flex;flex-direction:column;padding:0;overflow:hidden;text-align:start;font:inherit;color:inherit;background:var(--wx-bg-surface);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);cursor:pointer}.wx-block-picker__card[data-v-87f5880b]:hover:not(:disabled),.wx-block-picker__card[data-v-87f5880b]:focus-visible{border-color:var(--wx-color-primary);outline:none}.wx-block-picker__card.is-disabled[data-v-87f5880b]{opacity:.6;cursor:not-allowed}.wx-block-picker__body[data-v-87f5880b]{display:flex;flex-direction:column;gap:var(--wx-space-4);padding:var(--wx-space-10) var(--wx-space-12)}.wx-block-picker__title[data-v-87f5880b]{font-weight:var(--wx-font-weight-semibold)}.wx-blocks-preview[data-v-398e4cef]{box-sizing:border-box;display:flex;flex-direction:column;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-surface);overflow:clip;min-width:0}.wx-blocks-preview.is-fullscreen[data-v-398e4cef]{position:fixed;inset:0;z-index:var(--wx-z-index-overlay);border:0;border-radius:0}.wx-blocks-preview__bar[data-v-398e4cef]{display:flex;align-items:center;justify-content:space-between;gap:var(--wx-space-8);padding:var(--wx-space-8) var(--wx-space-12);border-block-end:1px solid var(--wx-border-muted)}.wx-blocks-preview:not(.is-fullscreen) .wx-blocks-preview__bar[data-v-398e4cef]{position:sticky;top:0;z-index:1;background:var(--wx-bg-surface)}.wx-blocks-preview__label[data-v-398e4cef]{flex:1 1 0;min-width:0;font-family:var(--wx-font-family-mono)}.wx-blocks-preview__widths[data-v-398e4cef]{flex:none}.wx-blocks-preview__tools[data-v-398e4cef]{display:flex;flex:1 1 0;gap:var(--wx-space-4);align-items:center;justify-content:flex-end}.wx-blocks-preview__ground[data-v-398e4cef]{flex:1;padding:var(--wx-space-12);background:var(--wx-bg-subtle);overflow:auto;max-height:calc(100vh - 200px)}.is-fullscreen .wx-blocks-preview__ground[data-v-398e4cef]{max-height:none}.is-compact .wx-blocks-preview__ground[data-v-398e4cef]{padding-inline:0}.is-grown:not(.is-fullscreen) .wx-blocks-preview__ground[data-v-398e4cef]{overflow:visible;max-height:none}.wx-blocks-preview__clip[data-v-398e4cef]{margin-inline:auto;overflow:hidden;box-shadow:var(--wx-shadow-sm)}.wx-blocks-preview__frame[data-v-398e4cef]{display:block;border:0;background:#fff;height:min(72vh,720px);transform-origin:top left}.wx-blocks-tree[data-v-3cef28cd] .wx-sortable-list__content{min-width:0}.wx-blocks-tree__node[data-v-3cef28cd]{display:flex;flex-direction:column;gap:var(--wx-space-2);min-width:0}.wx-blocks-tree__row[data-v-3cef28cd]{display:flex;align-items:center;gap:var(--wx-space-8);padding:var(--wx-space-6) var(--wx-space-8);border:1px solid transparent;border-radius:var(--wx-radius-control);cursor:pointer}.wx-blocks-tree__row[data-v-3cef28cd]:hover{background:var(--wx-bg-subtle)}.wx-blocks-tree__row.is-selected[data-v-3cef28cd]{background:var(--wx-color-primary-soft);border-color:var(--wx-color-primary)}.wx-blocks-tree__name[data-v-3cef28cd]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--wx-font-size-sm);font-weight:var(--wx-font-weight-medium)}.wx-blocks-tree__row.is-hidden .wx-blocks-tree__name[data-v-3cef28cd]{opacity:.55}.wx-blocks-tree__flag[data-v-3cef28cd]{display:flex;color:var(--wx-text-muted)}.wx-blocks-tree__flag.is-warning[data-v-3cef28cd]{color:var(--wx-color-warning)}.wx-blocks-tree__flag.is-danger[data-v-3cef28cd]{color:var(--wx-color-danger)}.wx-blocks-tree__actions[data-v-3cef28cd]{display:flex;flex:none}@media(pointer:coarse){.wx-blocks-tree__actions[data-v-3cef28cd] .wx-actions__menu .wx-action{--wx-action-size: 32px;position:relative}.wx-blocks-tree__actions[data-v-3cef28cd] .wx-actions__menu .wx-action:after{content:"";position:absolute;inset:-6px}}.wx-blocks-tree__kids[data-v-3cef28cd]{display:flex;flex-direction:column;gap:var(--wx-space-2);margin-inline-start:var(--wx-space-14);padding-inline-start:var(--wx-space-8);border-inline-start:1px dashed var(--wx-border-default)}.wx-blocks-tree__add[data-v-3cef28cd]{width:100%;padding:var(--wx-space-6);border:1px dashed var(--wx-border-strong);border-radius:var(--wx-radius-control);background:transparent;color:var(--wx-text-muted);font:inherit;font-size:var(--wx-font-size-xs);cursor:pointer}.wx-blocks-tree__add[data-v-3cef28cd]:hover{color:var(--wx-color-primary);border-color:var(--wx-color-primary);background:var(--wx-color-primary-soft)}.wx-blocks-host[data-v-a3d0a858]{container-type:inline-size}.wx-blocks[data-v-a3d0a858]{display:grid;grid-template-columns:clamp(360px,34%,520px) minmax(0,1fr);gap:var(--wx-gap, var(--wx-space-16));align-items:start}.wx-blocks[data-v-a3d0a858]:not(.has-preview){grid-template-columns:minmax(0,1fr)}.wx-blocks__tree[data-v-a3d0a858],.wx-blocks__fields[data-v-a3d0a858]{display:flex;flex-direction:column;gap:var(--wx-space-8);padding:var(--wx-space-8);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-surface);min-width:0}.wx-blocks__panel-head[data-v-a3d0a858]{display:flex;align-items:center;justify-content:space-between;gap:var(--wx-space-8);padding:var(--wx-space-4) var(--wx-space-6)}.wx-blocks__panel-title[data-v-a3d0a858]{display:flex;align-items:center;gap:var(--wx-space-4);min-width:0;font-weight:var(--wx-font-weight-semibold)}.wx-blocks__panel-name[data-v-a3d0a858]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wx-drawer .wx-blocks__fields .wx-blocks__panel-title[data-v-a3d0a858]{display:none}.wx-blocks__trail[data-v-a3d0a858]{display:flex;align-items:center;gap:var(--wx-space-4);min-width:0;color:var(--wx-text-muted);font-weight:var(--wx-font-weight-regular);font-size:var(--wx-font-size-sm)}.wx-blocks__trail-step[data-v-a3d0a858]{padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer;white-space:nowrap}.wx-blocks__trail-step[data-v-a3d0a858]:hover{color:var(--wx-text-default);text-decoration:underline}.wx-blocks__panel-extra[data-v-a3d0a858]{display:flex;align-items:center;gap:var(--wx-space-8)}.wx-blocks__form[data-v-a3d0a858]{padding:var(--wx-space-6)}.wx-blocks-host:not(.is-compact) .wx-blocks__side[data-v-a3d0a858]{min-width:0;position:sticky;top:var(--wx-space-12);max-height:calc(100dvh - var(--wx-space-24) - var(--wx-action-bar-room, 0px));display:flex;flex-direction:column}.wx-blocks-host:not(.is-compact) .wx-blocks__tree[data-v-a3d0a858],.wx-blocks-host:not(.is-compact) .wx-blocks__fields[data-v-a3d0a858]{min-height:0;overflow:clip}.wx-blocks__panel-head[data-v-a3d0a858]{flex:none}.wx-blocks-host:not(.is-compact) .wx-blocks__list[data-v-a3d0a858],.wx-blocks-host:not(.is-compact) .wx-blocks__form[data-v-a3d0a858]{min-height:0;overflow:auto;overscroll-behavior:contain}.wx-blocks-host:not(.is-compact) .wx-blocks__list[data-v-a3d0a858]{padding:var(--wx-space-2);margin:calc(-1 * var(--wx-space-2))}.wx-blocks__preview[data-v-a3d0a858]{min-width:0;position:sticky;top:var(--wx-space-12)}.wx-blocks__preview[data-v-a3d0a858]:has(.is-grown),.wx-blocks__preview[data-v-a3d0a858]:has(.is-fullscreen){position:static}.wx-blocks__tools[data-v-a3d0a858]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--wx-space-8);flex:none}.wx-blocks__add[data-v-a3d0a858],.wx-blocks__preview-button[data-v-a3d0a858]{flex:1 1 auto;min-width:0}.wx-blocks__preview-button[data-v-a3d0a858]{display:none;flex:none}.wx-blocks-host.is-compact .wx-blocks[data-v-a3d0a858],.wx-blocks-host.is-compact .wx-blocks.has-preview[data-v-a3d0a858]{grid-template-columns:minmax(0,1fr)}.wx-drawer .wx-blocks__tree[data-v-a3d0a858],.wx-drawer .wx-blocks__fields[data-v-a3d0a858]{border:0;padding:0;background:none}code[data-v-a3d0a858]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs);color:var(--wx-text-muted)}.wx-block-card[data-v-1d29dfee]{display:flex;flex-direction:column;width:100%;padding:0;overflow:hidden;text-align:start;font:inherit;color:inherit;background:var(--wx-bg-surface);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);cursor:pointer}.wx-block-card[data-v-1d29dfee]:hover,.wx-block-card[data-v-1d29dfee]:focus-visible{border-color:var(--wx-color-primary);outline:none}.wx-block-card__body[data-v-1d29dfee]{display:flex;flex-direction:column;gap:var(--wx-space-6);padding:var(--wx-space-12) var(--wx-space-14)}.wx-block-card__title[data-v-1d29dfee]{font-weight:var(--wx-font-weight-semibold)}.wx-block-card__chips[data-v-1d29dfee]{display:flex;flex-wrap:wrap;gap:var(--wx-space-6)}code[data-v-1d29dfee]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs)}.wx-block-create[data-v-585106f0]{display:flex;flex-direction:column;gap:var(--wx-space-12)}.wx-block-create__kinds[data-v-585106f0]{gap:var(--wx-space-10)}.wx-block-create__kinds[data-v-585106f0] .wx-radio{align-items:flex-start}.wx-block-create__kind[data-v-585106f0]{display:block;font-weight:var(--wx-font-weight-medium)}.wx-block-create__kind-help[data-v-585106f0]{display:block;font-size:var(--wx-font-size-sm);color:var(--wx-text-muted)}.wx-block-declared[data-v-3c4079a4]{display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--wx-bg-surface);border:1px dashed var(--wx-border-strong);border-radius:var(--wx-radius-md)}.wx-block-declared__mark[data-v-3c4079a4]{display:flex;align-items:center;justify-content:center;height:120px;font-size:32px;color:var(--wx-text-muted);background:var(--wx-bg-subtle);border-block-end:1px dashed var(--wx-border-default)}.wx-block-declared__body[data-v-3c4079a4]{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--wx-space-6);padding:var(--wx-space-12) var(--wx-space-14)}.wx-block-declared__title[data-v-3c4079a4]{font-weight:var(--wx-font-weight-semibold)}.wx-block-declared__actions[data-v-3c4079a4]{margin-block-start:auto;padding-block-start:var(--wx-space-4)}code[data-v-3c4079a4]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-xs)}.wx-blocks-page__toolbar[data-v-14d130be]{display:flex;justify-content:flex-end}.wx-blocks-page__search[data-v-14d130be]{width:100%;max-width:280px}.wx-blocks-page__ghost[data-v-14d130be]{display:flex;flex-direction:column;overflow:hidden;background:var(--wx-bg-surface);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md)}.wx-blocks-page__ghost-thumb[data-v-14d130be]{border-radius:0}.wx-blocks-page__ghost-body[data-v-14d130be]{display:flex;flex-direction:column;gap:var(--wx-space-8);padding:var(--wx-space-12) var(--wx-space-14)}.wx-blocks-page__group[data-v-14d130be]{display:flex;flex-direction:column;gap:var(--wx-space-12)}.wx-blocks-page__group-title[data-v-14d130be]{font-size:var(--wx-font-size-xs);font-weight:var(--wx-font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--wx-text-muted)}.wx-blocks-page__cards[data-v-14d130be] .is-ghost{opacity:.35}.wx-blocks-page__cards[data-v-14d130be]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--wx-gap, var(--wx-space-16))}.wx-region-page-picker[data-v-ec3f97f3]{display:flex;flex-direction:column;align-items:stretch;gap:var(--wx-space-12)}.wx-region-page-picker[data-v-ec3f97f3]>.wx-button{align-self:flex-start}.wx-region-page-picker__words[data-v-ec3f97f3]{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wx-region-editor[data-v-c1edffea]{display:flex;flex-direction:column;gap:var(--wx-gap, var(--wx-space-16));height:100%;min-height:0;container-type:inline-size}.wx-region-editor__ghost[data-v-c1edffea]{max-width:420px}.wx-region-editor__screen[data-v-c1edffea]{display:flex;flex-direction:column;flex:1;min-height:0}.wx-region-editor__screen[data-v-c1edffea] .wx-screen-host,.wx-region-editor__screen[data-v-c1edffea] .wx-screen,.wx-region-editor__screen[data-v-c1edffea] .wx-tabs,.wx-region-editor__screen[data-v-c1edffea] .wx-tabs__layout,.wx-region-editor__screen[data-v-c1edffea] .wx-tabs__panels,.wx-region-editor__screen[data-v-c1edffea] .wx-tab:not([hidden]){display:flex;flex-direction:column;flex:1;min-height:0}.wx-region-history[data-v-a795962d]{display:flex;flex-direction:column;border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-surface);overflow:clip}.wx-region-history__ghost[data-v-a795962d]{padding:var(--wx-space-10) var(--wx-space-12)}.wx-region-history__row[data-v-a795962d]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--wx-space-12);padding:var(--wx-space-10) var(--wx-space-12);border-block-end:1px solid var(--wx-border-default)}.wx-region-history__row[data-v-a795962d]:last-child{border-block-end:0}.wx-region-history__number[data-v-a795962d]{width:40px;font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-sm);color:var(--wx-text-muted)}.wx-region-history__who[data-v-a795962d]{display:flex;flex-direction:column;flex:1;min-width:160px}.wx-regions[data-v-92ceefe9]{display:flex;flex-direction:column;gap:var(--wx-gap, var(--wx-space-16));container-type:inline-size}.wx-regions__grid[data-v-92ceefe9]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--wx-gap, var(--wx-space-16))}.wx-regions__card[data-v-92ceefe9]{position:relative;display:flex;flex-direction:column;gap:var(--wx-space-8);min-width:0;padding:var(--wx-space-16);padding-inline-end:var(--wx-space-40);border:1px solid var(--wx-border-default);border-radius:var(--wx-radius-md);background:var(--wx-bg-surface);box-shadow:var(--wx-shadow-card);color:var(--wx-text-default);text-decoration:none}.wx-regions__card.is-link[data-v-92ceefe9]{transition:border-color var(--wx-duration-fast)}.wx-regions__card.is-link[data-v-92ceefe9]:hover{border-color:var(--wx-border-strong)}.wx-regions__card.is-link[data-v-92ceefe9]:focus-visible{outline:none;box-shadow:var(--wx-ring-focus)}.wx-regions__top[data-v-92ceefe9]{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--wx-space-8)}.wx-regions__title[data-v-92ceefe9]{font-size:var(--wx-font-size-lg);font-weight:var(--wx-font-weight-semibold);color:var(--wx-text-strong)}.wx-regions__name[data-v-92ceefe9]{font-family:var(--wx-font-family-mono);font-size:var(--wx-font-size-sm);color:var(--wx-text-muted)}.wx-regions__chips[data-v-92ceefe9]{display:flex;flex-wrap:wrap;gap:var(--wx-space-6)}.wx-regions__meta[data-v-92ceefe9]{display:flex;flex-wrap:wrap;gap:var(--wx-space-4) var(--wx-space-12);overflow-wrap:anywhere}.wx-regions__go[data-v-92ceefe9]{position:absolute;inset-block-start:50%;inset-inline-end:var(--wx-space-12);translate:0 -50%;color:var(--wx-text-muted)}
package/dist/types.d.ts CHANGED
@@ -196,3 +196,61 @@ export interface BlockNode {
196
196
  */
197
197
  hidden?: boolean;
198
198
  }
199
+ /**
200
+ * One layout region as the section lists it: declared by the site's config, and a row in the
201
+ * database only once somebody saved it — `id` is `null` until then, like a declared menu.
202
+ */
203
+ export interface RegionRow {
204
+ name: string;
205
+ id: number | null;
206
+ title: string;
207
+ description: string | null;
208
+ /** What the config lets stand at the top level; `null` — any block. */
209
+ allow: string[] | null;
210
+ /** How many blocks the top level may hold; `null` — no limit. */
211
+ max: number | null;
212
+ /** On the site: published, and visitors see the blocks rather than the code's view. */
213
+ published: boolean;
214
+ published_at: string | null;
215
+ /** Edits waiting that the site does not have yet. */
216
+ has_draft: boolean;
217
+ /** Blocks in the tree being edited, top level only. */
218
+ count: number;
219
+ /** The view the site prints while the region is empty, or `null` when the tag names none. */
220
+ fallback: string | null;
221
+ updated_at: string | null;
222
+ }
223
+ /** One region with what is being edited in it. */
224
+ export interface RegionDetail extends RegionRow {
225
+ /** The draft when there is one, else what is published. */
226
+ blocks: BlockNode[];
227
+ revision: string;
228
+ /** Signed; the editor appends `&at=<path>` for the page to draw the region on. */
229
+ preview_url: string;
230
+ /** Whether "Move the markup into a block" is offered: the region is empty and the view found. */
231
+ can_adopt: boolean;
232
+ }
233
+ /** A save refused because somebody else wrote first: the region as it now is. */
234
+ export interface RegionConflict {
235
+ message: string;
236
+ revision: string;
237
+ }
238
+ export interface RegionVersion {
239
+ number: number;
240
+ created_at: string | null;
241
+ author: {
242
+ id: number;
243
+ name: string;
244
+ } | null;
245
+ source: BlockSource;
246
+ comment: string | null;
247
+ is_pinned: boolean;
248
+ }
249
+ /** What "Move the markup into a block" made: the region with one block, and its new type. */
250
+ export interface RegionAdopted {
251
+ region: RegionDetail;
252
+ block: {
253
+ id: number;
254
+ slug: string;
255
+ };
256
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webx-ui/module-blocks",
3
- "version": "0.10.4",
3
+ "version": "0.11.0",
4
4
  "description": "The block constructor for the WebX UI admin panel: the section where a block type is made — fields, Blade, CSS, script — and the wx-blocks field that builds a page out of them.",
5
5
  "license": "MIT",
6
6
  "type": "module",