@synopackageland/sdk 0.10.7 → 0.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -239,6 +239,28 @@ provide(ExecutorSetupKey, ctx.executor!)
239
239
  </template>
240
240
  ```
241
241
 
242
+ With `preload` the App's pages mount while the first status is read, so
243
+ their own reads (`authorization.status`, `session.get`, the first page's data)
244
+ run alongside it instead of after it. They stay hidden (`visibility: hidden`,
245
+ `inert`, `aria-hidden`) behind the loading text until the status reads
246
+ `ready`, which shows that same instance with what it loaded; any other status
247
+ unmounts them and discards it. Nothing is shown before the check: every read
248
+ is still answered by the App's backend under its own authorization. Use it
249
+ for pages whose mount only reads: a page that writes on mount would do so
250
+ before the check ends, and also when it then fails. A dialog or a toast
251
+ leaves the hidden wrapper: `useExecutorPreload()` is `true` while the pages
252
+ are preloaded, so a page waits for `false` before it opens one.
253
+ `AuthorizationGate` does so with its own dialog. When the status is not
254
+ ready it turns `false` before the pages unmount, so `false` does not mean the
255
+ pages show: open a teleported dialog from `watchPostEffect` (or after the
256
+ next render), when an unmounted page no longer runs it.
257
+
258
+ ```vue
259
+ <ExecutorApproval preload :admin="ctx.user?.isAdmin ?? false" :locale="ctx.locale" :ctx="ctx">
260
+ <AuthorizationGate :ctx="ctx"><AppContent /></AuthorizationGate>
261
+ </ExecutorApproval>
262
+ ```
263
+
242
264
  A delegate App keeps its pages while its executor waits for approval (after
243
265
  an upgrade that changed its policy, say): only what needs the executor fails,
244
266
  with `EXECUTOR_UNAVAILABLE`. `AppShell` given a `ctx` with `executor` shows
@@ -3,10 +3,13 @@ type __VLS_Props = {
3
3
  admin: boolean;
4
4
  locale?: string;
5
5
  ctx?: Pick<Context, 'reopen'> & Partial<Pick<Context, 'displayName' | 'appIcon' | 'fullPage' | 'host'>>;
6
+ preload?: boolean;
6
7
  };
7
- declare var __VLS_1: {};
8
+ declare var __VLS_1: {}, __VLS_3: {};
8
9
  type __VLS_Slots = {} & {
9
10
  default?: (props: typeof __VLS_1) => any;
11
+ } & {
12
+ default?: (props: typeof __VLS_3) => any;
10
13
  };
11
14
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
15
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,6 +1,8 @@
1
- import { type InjectionKey } from 'vue';
1
+ import { type InjectionKey, type Ref } from 'vue';
2
2
  import type { CapabilityStatus, ExecutorSetup } from './executor-setup';
3
3
  export declare const ExecutorSetupKey: InjectionKey<ExecutorSetup>;
4
+ export declare const ExecutorPreloadKey: InjectionKey<Readonly<Ref<boolean>>>;
5
+ export declare function useExecutorPreload(): Readonly<Ref<boolean>>;
4
6
  export declare function useExecutorSetup(): ExecutorSetup;
5
7
  export type ConfirmFailure = 'password_rejected' | 'password_required' | 'password_confirm_failed';
6
8
  export declare function confirmFailure(status: CapabilityStatus): ConfirmFailure | undefined;
package/dist/src/vue.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from './index';
2
- export { ExecutorSetupKey, useExecutorSetup } from './delegate/use-executor-setup';
2
+ export { ExecutorSetupKey, useExecutorSetup, ExecutorPreloadKey, useExecutorPreload } from './delegate/use-executor-setup';
3
3
  export { createSession, type IdentitySession, type SessionSubject } from './identity/session';
4
4
  export { useNasRequest } from './nas/use-request';
5
5
  export { default as AppShell } from './shell/AppShell.vue';
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .executor-help[data-v-666ac74c]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.executor-summary[data-v-666ac74c]:not(:last-child){margin-bottom:var(--ui-space-3,12px)}.executor-form[data-v-666ac74c]{margin-top:var(--ui-space-4,16px);max-width:28rem}.executor-hint[data-v-666ac74c]{font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary)}.executor-reason[data-v-666ac74c]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.executor-alert[data-v-666ac74c]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.executor-notice[data-v-1edce327]{margin-bottom:var(--ui-space-4, 16px)}.executor-notice-body[data-v-1edce327]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.app-shell[data-v-61068e94]{height:100%;min-width:0;grid-template-rows:minmax(0,1fr)}.app-shell[data-v-61068e94]>div{min-height:0}.app-shell[data-v-61068e94] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-61068e94]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-denied[data-v-61068e94]{height:100%;overflow-y:auto}.app-page-actions[data-v-61068e94]{display:contents}.app-shell-fill[data-v-61068e94]{max-height:100dvh}.app-page-fill[data-v-61068e94]{display:flex;flex-direction:column;overflow:hidden}.app-page-fill[data-v-61068e94]>[data-page-content-body]{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-height:0}.app-page-fill .app-notices[data-v-61068e94]{flex:0 0 auto}.app-page-fill .app-page-content[data-v-61068e94]{display:grid;flex:1 1 auto;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0}.app-notices[data-v-61068e94]{display:flex;flex-direction:column;gap:var(--ui-space-2, 8px);margin-bottom:var(--ui-space-4, 16px)}.app-notices[hidden][data-v-61068e94]{display:none}.app-page-content[data-v-61068e94]{padding-bottom:var(--ui-space-6, 24px)}.file-browser[data-v-70c72250]{min-width:0;color:var(--ui-text)}.file-toolbar[data-v-70c72250]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px);margin-block:var(--ui-space-3, 12px)}.file-location[data-v-70c72250]{flex-wrap:nowrap;align-items:center;gap:var(--ui-space-1, 4px)}.file-path[data-v-70c72250]{flex:1;min-width:0;margin-inline-start:var(--ui-space-2, 8px)}.file-columns[data-v-70c72250]{display:grid;grid-template-columns:minmax(140px,1fr) minmax(0,3fr);gap:var(--ui-space-3, 12px);height:clamp(240px,60vh,400px)}.file-tree[data-v-70c72250]{min-width:0;overflow:auto;border-inline-end:1px solid var(--ui-border)}.file-content[data-v-70c72250]{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:auto}.file-empty[data-v-70c72250]{display:flex;flex-direction:column;align-items:center;gap:var(--ui-space-2, 8px);padding-block:var(--ui-space-6, 24px);color:var(--ui-text-muted)}.file-name[data-v-70c72250]{display:inline-flex;align-items:center;gap:var(--ui-space-2, 8px);overflow-wrap:anywhere}.file-bytes[data-v-70c72250]{font-variant-numeric:tabular-nums}.file-selection[data-v-70c72250]{overflow-wrap:anywhere}@media(max-width:600px){.file-columns[data-v-70c72250]{grid-template-columns:minmax(0,1fr);height:auto}.file-content[data-v-70c72250] th:nth-child(2),.file-content[data-v-70c72250] td:nth-child(2),.file-content[data-v-70c72250] th:nth-child(3),.file-content[data-v-70c72250] td:nth-child(3){display:none}.file-tree[data-v-70c72250]{height:clamp(96px,25vh,180px);border-inline-end:0;border-bottom:1px solid var(--ui-border)}.file-content[data-v-70c72250]{height:clamp(200px,45vh,360px)}}.nas-picker-content[data-v-46817cb6]{max-height:65vh;overflow:auto}.save-message[data-v-46817cb6]{--ui-text-secondary:var(--ui-text)}.save-consent[data-v-46817cb6]{color:var(--ui-text);margin-block:0 var(--ui-space-4,16px)}.files-actions[data-v-96eb4bab]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.files-path[data-v-96eb4bab]{display:flex;min-width:0}.identity-login[data-v-1c0358cd]{max-width:36rem;margin-inline:auto;padding:var(--ui-space-4, 16px);overflow:auto;max-height:100%;color:var(--ui-text);font-family:var(--ui-font-sans);font-size:13px;line-height:1.5}.identity-login p[data-v-1c0358cd]{margin-block:var(--ui-space-4, 16px);overflow-wrap:anywhere}.bg-cards[data-v-85b8b7a1]{display:grid;gap:var(--ui-space-3,12px);min-width:0;overflow-wrap:anywhere}.bg-card-body[data-v-85b8b7a1]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ui-space-2,8px);min-width:0}.bg-card-body>span[data-v-85b8b7a1]{min-width:0;max-width:100%}.integration-actions[data-v-85b8b7a1]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.bg-schedules[data-v-85b8b7a1]{margin-block-start:var(--ui-space-6,24px);min-width:0;overflow-wrap:anywhere}.bg-schedules p[data-v-85b8b7a1]{min-width:0;max-width:100%}.bg-schedule-form[data-v-85b8b7a1]{margin-block:var(--ui-space-4,16px)}.bg-path[data-v-85b8b7a1]{display:flex;align-items:center;gap:var(--ui-space-2,8px);min-width:0;max-width:100%}.executor-approval[data-v-99e54a9d]{padding:var(--ui-space-6, 24px)}.executor-brand[data-v-99e54a9d]{display:flex;align-items:center;gap:var(--ui-space-2, 8px);margin-bottom:var(--ui-space-4, 16px);font-size:16px;font-weight:600;color:var(--ui-text-primary)}.executor-brand img[data-v-99e54a9d]{width:24px;height:24px}.delegate-panel[data-v-080a311e]{min-width:0;overflow-wrap:anywhere}.delegate-group[data-v-080a311e]{margin-top:var(--ui-space-6,24px)}.records[data-v-080a311e]{list-style:none;padding:0;margin:0}.records li[data-v-080a311e]{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-3,12px);padding-block:var(--ui-space-4,16px);border-bottom:1px solid var(--ui-border)}.records li>div[data-v-080a311e],.records li>span[data-v-080a311e],.destination[data-v-080a311e]{min-width:0;max-width:100%;overflow-wrap:anywhere}.records p[data-v-080a311e]{margin:var(--ui-space-2,8px) 0 0}.destination[data-v-080a311e]{display:flex;align-items:center;gap:var(--ui-space-2,8px)}.save-help[data-v-56f34b37]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.save-alert[data-v-56f34b37]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px);justify-content:space-between}.save-name[data-v-56f34b37]{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-note[data-v-56f34b37]{margin:var(--ui-space-1,4px) 0 0;font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary);white-space:normal}.save-icon[data-v-56f34b37]{width:16px;height:16px}[data-save-operations][data-v-56f34b37] table{table-layout:fixed}[data-save-operations][data-v-56f34b37] th,[data-save-operations][data-v-56f34b37] td{overflow-wrap:normal;white-space:nowrap}[data-save-operations][data-v-56f34b37] td{padding-block:var(--ui-space-2,8px)}.save-pages[data-v-56f34b37]{margin-top:var(--ui-space-3,12px)}.background-save-settings[data-v-d2fd6882]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-d2fd6882]{margin:0 0 var(--ui-space-2,8px);max-width:72ch;color:var(--ui-text-secondary)}.save-form[data-v-d2fd6882]{max-width:44rem}.save-actions[data-v-d2fd6882],.save-alert[data-v-d2fd6882],.save-danger[data-v-d2fd6882]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.save-alert[data-v-d2fd6882],.save-danger[data-v-d2fd6882]{justify-content:space-between}.save-none[data-v-d2fd6882]{color:var(--ui-text-secondary)}.save-reason[data-v-d2fd6882]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.save-danger[data-v-d2fd6882]{flex:1;padding-top:var(--ui-space-3,12px);border-top:1px solid var(--ui-border)}.save-danger p[data-v-d2fd6882]{margin:0;flex:1 1 20rem;max-width:72ch;font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary)}.background-save-panel[data-v-55770b8c]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-55770b8c]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.save-actions[data-v-55770b8c]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px);margin-bottom:var(--ui-space-3,12px)}.authorization-view[data-v-c0366db5]{display:flex;flex-direction:column;gap:12px}.authorization-body[data-v-c0366db5]{margin:0;font-size:13px;line-height:1.6;color:var(--ui-text);text-wrap:pretty}.authorization-status[data-v-c0366db5],.authorization-failed[data-v-c0366db5]{color:var(--ui-text)}.authorization-content[data-v-c0366db5]{display:flex;flex-direction:column;height:100%;min-height:0}.authorization-content[data-v-c0366db5] .app-shell{flex:1;min-height:0;height:auto}.authorization-setting[data-v-f031e7c7]{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.authorization-revoke-body[data-v-f031e7c7]{margin:0;font-size:13px;line-height:1.6;color:var(--ui-text)}.authorization-state[data-v-f031e7c7]{display:inline-flex;align-items:center;gap:6px;color:var(--ui-text)}
1
+ .executor-help[data-v-666ac74c]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.executor-summary[data-v-666ac74c]:not(:last-child){margin-bottom:var(--ui-space-3,12px)}.executor-form[data-v-666ac74c]{margin-top:var(--ui-space-4,16px);max-width:28rem}.executor-hint[data-v-666ac74c]{font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary)}.executor-reason[data-v-666ac74c]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.executor-alert[data-v-666ac74c]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.executor-notice[data-v-1edce327]{margin-bottom:var(--ui-space-4, 16px)}.executor-notice-body[data-v-1edce327]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.app-shell[data-v-61068e94]{height:100%;min-width:0;grid-template-rows:minmax(0,1fr)}.app-shell[data-v-61068e94]>div{min-height:0}.app-shell[data-v-61068e94] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-61068e94]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-denied[data-v-61068e94]{height:100%;overflow-y:auto}.app-page-actions[data-v-61068e94]{display:contents}.app-shell-fill[data-v-61068e94]{max-height:100dvh}.app-page-fill[data-v-61068e94]{display:flex;flex-direction:column;overflow:hidden}.app-page-fill[data-v-61068e94]>[data-page-content-body]{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-height:0}.app-page-fill .app-notices[data-v-61068e94]{flex:0 0 auto}.app-page-fill .app-page-content[data-v-61068e94]{display:grid;flex:1 1 auto;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0}.app-notices[data-v-61068e94]{display:flex;flex-direction:column;gap:var(--ui-space-2, 8px);margin-bottom:var(--ui-space-4, 16px)}.app-notices[hidden][data-v-61068e94]{display:none}.app-page-content[data-v-61068e94]{padding-bottom:var(--ui-space-6, 24px)}.file-browser[data-v-70c72250]{min-width:0;color:var(--ui-text)}.file-toolbar[data-v-70c72250]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px);margin-block:var(--ui-space-3, 12px)}.file-location[data-v-70c72250]{flex-wrap:nowrap;align-items:center;gap:var(--ui-space-1, 4px)}.file-path[data-v-70c72250]{flex:1;min-width:0;margin-inline-start:var(--ui-space-2, 8px)}.file-columns[data-v-70c72250]{display:grid;grid-template-columns:minmax(140px,1fr) minmax(0,3fr);gap:var(--ui-space-3, 12px);height:clamp(240px,60vh,400px)}.file-tree[data-v-70c72250]{min-width:0;overflow:auto;border-inline-end:1px solid var(--ui-border)}.file-content[data-v-70c72250]{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:auto}.file-empty[data-v-70c72250]{display:flex;flex-direction:column;align-items:center;gap:var(--ui-space-2, 8px);padding-block:var(--ui-space-6, 24px);color:var(--ui-text-muted)}.file-name[data-v-70c72250]{display:inline-flex;align-items:center;gap:var(--ui-space-2, 8px);overflow-wrap:anywhere}.file-bytes[data-v-70c72250]{font-variant-numeric:tabular-nums}.file-selection[data-v-70c72250]{overflow-wrap:anywhere}@media(max-width:600px){.file-columns[data-v-70c72250]{grid-template-columns:minmax(0,1fr);height:auto}.file-content[data-v-70c72250] th:nth-child(2),.file-content[data-v-70c72250] td:nth-child(2),.file-content[data-v-70c72250] th:nth-child(3),.file-content[data-v-70c72250] td:nth-child(3){display:none}.file-tree[data-v-70c72250]{height:clamp(96px,25vh,180px);border-inline-end:0;border-bottom:1px solid var(--ui-border)}.file-content[data-v-70c72250]{height:clamp(200px,45vh,360px)}}.nas-picker-content[data-v-46817cb6]{max-height:65vh;overflow:auto}.save-message[data-v-46817cb6]{--ui-text-secondary:var(--ui-text)}.save-consent[data-v-46817cb6]{color:var(--ui-text);margin-block:0 var(--ui-space-4,16px)}.files-actions[data-v-96eb4bab]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.files-path[data-v-96eb4bab]{display:flex;min-width:0}.identity-login[data-v-1c0358cd]{max-width:36rem;margin-inline:auto;padding:var(--ui-space-4, 16px);overflow:auto;max-height:100%;color:var(--ui-text);font-family:var(--ui-font-sans);font-size:13px;line-height:1.5}.identity-login p[data-v-1c0358cd]{margin-block:var(--ui-space-4, 16px);overflow-wrap:anywhere}.bg-cards[data-v-85b8b7a1]{display:grid;gap:var(--ui-space-3,12px);min-width:0;overflow-wrap:anywhere}.bg-card-body[data-v-85b8b7a1]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ui-space-2,8px);min-width:0}.bg-card-body>span[data-v-85b8b7a1]{min-width:0;max-width:100%}.integration-actions[data-v-85b8b7a1]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.bg-schedules[data-v-85b8b7a1]{margin-block-start:var(--ui-space-6,24px);min-width:0;overflow-wrap:anywhere}.bg-schedules p[data-v-85b8b7a1]{min-width:0;max-width:100%}.bg-schedule-form[data-v-85b8b7a1]{margin-block:var(--ui-space-4,16px)}.bg-path[data-v-85b8b7a1]{display:flex;align-items:center;gap:var(--ui-space-2,8px);min-width:0;max-width:100%}.executor-pages[data-v-bf0dbc7c]{display:contents}.executor-pages.executor-preloading[data-v-bf0dbc7c]{display:block;position:fixed;inset:0;visibility:hidden;overflow:hidden;pointer-events:none}.executor-approval[data-v-bf0dbc7c]{padding:var(--ui-space-6, 24px)}.executor-brand[data-v-bf0dbc7c]{display:flex;align-items:center;gap:var(--ui-space-2, 8px);margin-bottom:var(--ui-space-4, 16px);font-size:16px;font-weight:600;color:var(--ui-text-primary)}.executor-brand img[data-v-bf0dbc7c]{width:24px;height:24px}.delegate-panel[data-v-080a311e]{min-width:0;overflow-wrap:anywhere}.delegate-group[data-v-080a311e]{margin-top:var(--ui-space-6,24px)}.records[data-v-080a311e]{list-style:none;padding:0;margin:0}.records li[data-v-080a311e]{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-3,12px);padding-block:var(--ui-space-4,16px);border-bottom:1px solid var(--ui-border)}.records li>div[data-v-080a311e],.records li>span[data-v-080a311e],.destination[data-v-080a311e]{min-width:0;max-width:100%;overflow-wrap:anywhere}.records p[data-v-080a311e]{margin:var(--ui-space-2,8px) 0 0}.destination[data-v-080a311e]{display:flex;align-items:center;gap:var(--ui-space-2,8px)}.save-help[data-v-56f34b37]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.save-alert[data-v-56f34b37]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px);justify-content:space-between}.save-name[data-v-56f34b37]{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-note[data-v-56f34b37]{margin:var(--ui-space-1,4px) 0 0;font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary);white-space:normal}.save-icon[data-v-56f34b37]{width:16px;height:16px}[data-save-operations][data-v-56f34b37] table{table-layout:fixed}[data-save-operations][data-v-56f34b37] th,[data-save-operations][data-v-56f34b37] td{overflow-wrap:normal;white-space:nowrap}[data-save-operations][data-v-56f34b37] td{padding-block:var(--ui-space-2,8px)}.save-pages[data-v-56f34b37]{margin-top:var(--ui-space-3,12px)}.background-save-settings[data-v-d2fd6882]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-d2fd6882]{margin:0 0 var(--ui-space-2,8px);max-width:72ch;color:var(--ui-text-secondary)}.save-form[data-v-d2fd6882]{max-width:44rem}.save-actions[data-v-d2fd6882],.save-alert[data-v-d2fd6882],.save-danger[data-v-d2fd6882]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.save-alert[data-v-d2fd6882],.save-danger[data-v-d2fd6882]{justify-content:space-between}.save-none[data-v-d2fd6882]{color:var(--ui-text-secondary)}.save-reason[data-v-d2fd6882]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.save-danger[data-v-d2fd6882]{flex:1;padding-top:var(--ui-space-3,12px);border-top:1px solid var(--ui-border)}.save-danger p[data-v-d2fd6882]{margin:0;flex:1 1 20rem;max-width:72ch;font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary)}.background-save-panel[data-v-55770b8c]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-55770b8c]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.save-actions[data-v-55770b8c]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px);margin-bottom:var(--ui-space-3,12px)}.authorization-view[data-v-59492506]{display:flex;flex-direction:column;gap:12px}.authorization-body[data-v-59492506]{margin:0;font-size:13px;line-height:1.6;color:var(--ui-text);text-wrap:pretty}.authorization-status[data-v-59492506],.authorization-failed[data-v-59492506]{color:var(--ui-text)}.authorization-content[data-v-59492506]{display:flex;flex-direction:column;height:100%;min-height:0}.authorization-content[data-v-59492506] .app-shell{flex:1;min-height:0;height:auto}.authorization-setting[data-v-f031e7c7]{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.authorization-revoke-body[data-v-f031e7c7]{margin:0;font-size:13px;line-height:1.6;color:var(--ui-text)}.authorization-state[data-v-f031e7c7]{display:inline-flex;align-items:center;gap:6px;color:var(--ui-text)}