@synopackageland/sdk 0.9.0 → 0.9.2

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.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/dist/i18n/authorization/de.json +7 -2
  3. package/dist/i18n/authorization/en.json +6 -1
  4. package/dist/i18n/authorization/es.json +6 -1
  5. package/dist/i18n/authorization/fr.json +6 -1
  6. package/dist/i18n/authorization/it.json +6 -1
  7. package/dist/i18n/authorization/ja.json +7 -2
  8. package/dist/i18n/authorization/ko.json +7 -2
  9. package/dist/i18n/authorization/zh-CN.json +6 -1
  10. package/dist/i18n/authorization/zh-TW.json +6 -1
  11. package/dist/i18n/delegate/de.json +2 -0
  12. package/dist/i18n/delegate/en.json +2 -0
  13. package/dist/i18n/delegate/es.json +2 -0
  14. package/dist/i18n/delegate/fr.json +2 -0
  15. package/dist/i18n/delegate/it.json +2 -0
  16. package/dist/i18n/delegate/ja.json +2 -0
  17. package/dist/i18n/delegate/ko.json +2 -0
  18. package/dist/i18n/delegate/zh-CN.json +2 -0
  19. package/dist/i18n/delegate/zh-TW.json +2 -0
  20. package/dist/i18n/files/de.json +5 -2
  21. package/dist/i18n/files/en.json +5 -2
  22. package/dist/i18n/files/es.json +5 -2
  23. package/dist/i18n/files/fr.json +5 -2
  24. package/dist/i18n/files/it.json +5 -2
  25. package/dist/i18n/files/ja.json +5 -2
  26. package/dist/i18n/files/ko.json +5 -2
  27. package/dist/i18n/files/zh-CN.json +5 -2
  28. package/dist/i18n/files/zh-TW.json +5 -2
  29. package/dist/i18n/save/de.json +2 -0
  30. package/dist/i18n/save/en.json +2 -0
  31. package/dist/i18n/save/es.json +2 -0
  32. package/dist/i18n/save/fr.json +2 -0
  33. package/dist/i18n/save/it.json +2 -0
  34. package/dist/i18n/save/ja.json +2 -0
  35. package/dist/i18n/save/ko.json +2 -0
  36. package/dist/i18n/save/zh-CN.json +2 -0
  37. package/dist/i18n/save/zh-TW.json +2 -0
  38. package/dist/index.js +2136 -2029
  39. package/dist/src/authorization/AuthorizationGate.vue.d.ts +2 -2
  40. package/dist/src/authorization/AuthorizationSettings.vue.d.ts +3 -0
  41. package/dist/src/authorization/use-authorization.d.ts +20 -0
  42. package/dist/src/delegate/copy.d.ts +4 -0
  43. package/dist/src/delegate/long-running.d.ts +1 -1
  44. package/dist/src/delegate/save-copy.d.ts +6 -0
  45. package/dist/src/files/FolderIcon.vue.d.ts +8 -0
  46. package/dist/src/files/size.d.ts +2 -0
  47. package/dist/src/i18n.d.ts +3 -2
  48. package/dist/src/nas/locale.d.ts +3 -0
  49. package/dist/src/protocol/v1.d.ts +1 -7
  50. package/dist/src/vue.d.ts +2 -0
  51. package/dist/style.css +1 -1
  52. package/dist/vue.js +1335 -1220
  53. package/package.json +3 -3
  54. package/spec/protocol/v1/README.md +11 -0
  55. package/spec/protocol/v1/errors.json +0 -8
@@ -3,9 +3,9 @@ type __VLS_Props = {
3
3
  ctx: Pick<Context, 'locale' | 'displayName' | 'reopen' | 'authorization'>;
4
4
  name?: string;
5
5
  };
6
- declare var __VLS_53: {};
6
+ declare var __VLS_1: {};
7
7
  type __VLS_Slots = {} & {
8
- default?: (props: typeof __VLS_53) => any;
8
+ default?: (props: typeof __VLS_1) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
11
  ready: () => any;
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -0,0 +1,20 @@
1
+ import { type ComputedRef, type InjectionKey, type Ref } from 'vue';
2
+ import type { AuthorizationStatus } from '../context';
3
+ /** 'checking' until the background status arrives, and while it is checked again. */
4
+ export type AuthorizationGateState = AuthorizationStatus['state'] | 'checking';
5
+ /** What the Gate shares with the App inside it, so no App repeats its checks. */
6
+ export interface AuthorizationControl {
7
+ state: ComputedRef<AuthorizationGateState>;
8
+ /**
9
+ * Call before a root operation. Resolves true once the authorization is ready;
10
+ * otherwise the Gate's dialog opens, and it resolves true when the user
11
+ * authorizes or false when the dialog is dismissed.
12
+ */
13
+ requireAuthorization(): Promise<boolean>;
14
+ text: ComputedRef<(key: string) => string>;
15
+ busy: Ref<boolean>;
16
+ canManage(): boolean;
17
+ revoke(): Promise<void>;
18
+ }
19
+ export declare const AuthorizationKey: InjectionKey<AuthorizationControl>;
20
+ export declare function useAuthorization(): AuthorizationControl;
@@ -10,8 +10,10 @@ export declare const delegateCatalogs: Record<import("..").UiLocale, {
10
10
  confirmShare: string;
11
11
  scopeNeeds: string;
12
12
  ready: string;
13
+ confirming: string;
13
14
  needs: string;
14
15
  blocked: string;
16
+ loading: string;
15
17
  details: string;
16
18
  refresh: string;
17
19
  revoke: string;
@@ -58,8 +60,10 @@ export declare function delegateCopy(locale?: string): {
58
60
  confirmShare: string;
59
61
  scopeNeeds: string;
60
62
  ready: string;
63
+ confirming: string;
61
64
  needs: string;
62
65
  blocked: string;
66
+ loading: string;
63
67
  details: string;
64
68
  refresh: string;
65
69
  revoke: string;
@@ -11,7 +11,7 @@ export interface DestinationState {
11
11
  key: string;
12
12
  selection: ScopeSelection | null;
13
13
  destination: DestinationGrant | null;
14
- status: 'active' | 'missing' | 'reselection-required' | 'needs-scope-confirmation' | 'disabled';
14
+ status: 'active' | 'missing' | 'revoked' | 'reselection-required' | 'needs-scope-confirmation' | 'disabled';
15
15
  }
16
16
  export interface DestinationGrant {
17
17
  id: string;
@@ -29,6 +29,8 @@ export declare const saveCatalogs: Record<import("..").UiLocale, {
29
29
  interruptedHelp: string;
30
30
  loading: string;
31
31
  denied: string;
32
+ permission: string;
33
+ missing: string;
32
34
  session: string;
33
35
  conflict: string;
34
36
  space: string;
@@ -71,6 +73,8 @@ export declare function saveCopy(locale?: string): {
71
73
  interruptedHelp: string;
72
74
  loading: string;
73
75
  denied: string;
76
+ permission: string;
77
+ missing: string;
74
78
  session: string;
75
79
  conflict: string;
76
80
  space: string;
@@ -113,6 +117,8 @@ export declare function saveError(error: unknown, copy?: {
113
117
  interruptedHelp: string;
114
118
  loading: string;
115
119
  denied: string;
120
+ permission: string;
121
+ missing: string;
116
122
  session: string;
117
123
  conflict: string;
118
124
  space: string;
@@ -0,0 +1,8 @@
1
+ type __VLS_Props = {
2
+ size?: number;
3
+ };
4
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
5
+ size: number;
6
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
@@ -0,0 +1,2 @@
1
+ /** A byte count in File Station's 1024-based units, with the locale's digits. */
2
+ export declare function formatSize(bytes: number, locale: string): string;
@@ -2,5 +2,6 @@ export type UiLocale = 'en' | 'zh-TW' | 'zh-CN' | 'ja' | 'ko' | 'de' | 'fr' | 'e
2
2
  export declare const uiLocales: readonly UiLocale[];
3
3
  /** The built-in UI locale (shared by these catalogs and the UI's own text) for a DSM or BCP-47 language tag. */
4
4
  export declare function uiLocale(locale: string): UiLocale;
5
- /** The catalogs of one capability by locale, typed by its en catalog. */
6
- export declare function catalogs<T>(capability: string, _en: T): Record<UiLocale, T>;
5
+ /** The catalogs of one capability by locale, typed by its en catalog. Each
6
+ * capability globs its own folder, so a bundle carries only what it imports. */
7
+ export declare function catalogs<T>(files: Record<string, unknown>, _en: T): Record<UiLocale, T>;
@@ -10,6 +10,7 @@ export declare const nasCatalogs: Record<import("..").UiLocale, {
10
10
  emptyFolder: string;
11
11
  roots: string;
12
12
  back: string;
13
+ forward: string;
13
14
  select: string;
14
15
  open: string;
15
16
  selected: string;
@@ -40,6 +41,8 @@ export declare const nasCatalogs: Record<import("..").UiLocale, {
40
41
  uploaded: string;
41
42
  errorDSM: string;
42
43
  errorUploadSize: string;
44
+ location: string;
45
+ fullPath: string;
43
46
  }>;
44
47
  export declare function nasCopy(locale: string): NasCopy;
45
48
  export declare function nasErrorCopy(error: unknown, copy: NasCopy): string;
@@ -282,12 +282,6 @@ export declare const protocolCodes: {
282
282
  readonly retryable: false;
283
283
  readonly httpStatus: 409;
284
284
  };
285
- /** The grant is inactive. */
286
- readonly "grant-inactive": {
287
- readonly kind: "reason";
288
- readonly retryable: false;
289
- readonly httpStatus: 409;
290
- };
291
285
  /** The grant failed revalidation against DSM. */
292
286
  readonly "validation-denied": {
293
287
  readonly kind: "reason";
@@ -346,7 +340,7 @@ export declare const protocolCodes: {
346
340
  export type ProtocolCode = keyof typeof protocolCodes;
347
341
  export type RefusalCode = "AUTH_DENIED" | "INELIGIBLE" | "APP_DENIED" | "ADMIN_REQUIRED" | "DELEGATION_DENIED" | "SCOPE_DENIED" | "POLICY_DENIED" | "PEER_DENIED" | "PERMISSION_DENIED" | "UNKNOWN_OP" | "INVALID_REQUEST" | "REQUEST_TOO_LARGE" | "EXECUTOR_PAUSED" | "STORAGE_ERROR" | "INTERNAL" | "WRITE_FAILED" | "READ_FAILED" | "DSM_FAILED" | "ROOT_FAILED" | "NO_SPACE" | "SCOPE_APPROVAL_STALE" | "IDENTITY_CHANGED" | "needs-scope-confirmation" | "disabled" | "invalid-destination" | "invalid-size" | "operation-conflict" | "operation-not-found" | "destination-exists" | "invalid-path" | "path-too-deep" | "destination-not-directory" | "name-too-long" | "not-found" | "not-a-file" | "recursive-required" | "recycle-bin-disabled" | "task-not-found" | "too-many-tasks" | "queue-full" | "limit-exceeded";
348
342
  export type OutcomeCode = "OPERATION_CANCELED" | "CANCEL_REQUESTED" | "CLEANUP_PENDING";
349
- export type ReasonCode = "grant-revoked" | "destination-replaced" | "integration-disabled" | "grant-inactive" | "validation-denied" | "scope-changed" | "storage-error" | "operation-canceled-by-user" | "operation-deadline-exceeded";
343
+ export type ReasonCode = "grant-revoked" | "destination-replaced" | "integration-disabled" | "validation-denied" | "scope-changed" | "storage-error" | "operation-canceled-by-user" | "operation-deadline-exceeded";
350
344
  export type ClientCode = "EXECUTOR_UNAVAILABLE" | "EXECUTOR_TIMEOUT" | "EXECUTOR_TOO_LARGE" | "EXECUTOR_PROTOCOL";
351
345
  /** delegate.audit: Administrator: read the audit log. Since 0.9.0. */
352
346
  export interface DelegateAuditParams {
package/dist/src/vue.d.ts CHANGED
@@ -13,3 +13,5 @@ export { default as ExecutorSettings } from './delegate/ExecutorSettings.vue';
13
13
  export { default as DelegatePanel } from './delegate/DelegatePanel.vue';
14
14
  export { default as BackgroundSavePanel } from './delegate/BackgroundSavePanel.vue';
15
15
  export { default as AuthorizationGate } from './authorization/AuthorizationGate.vue';
16
+ export { useAuthorization, type AuthorizationControl, type AuthorizationGateState } from './authorization/use-authorization';
17
+ export { default as AuthorizationSettings } from './authorization/AuthorizationSettings.vue';
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .app-shell[data-v-05f63ca5]{height:100%;min-width:0;grid-template-rows:minmax(0,1fr)}.app-shell[data-v-05f63ca5]>div{min-height:0}.app-shell[data-v-05f63ca5] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-05f63ca5]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-page-content[data-v-05f63ca5]{padding-bottom:var(--ui-space-6, 24px)}.file-browser[data-v-f1aee828]{min-width:0;color:var(--ui-text)}.file-toolbar[data-v-f1aee828]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px);margin-block:var(--ui-space-3, 12px)}.file-columns[data-v-f1aee828]{display:grid;grid-template-columns:minmax(140px,1fr) minmax(0,3fr);gap:var(--ui-space-3, 12px)}.file-tree[data-v-f1aee828]{min-width:0;max-height:55vh;overflow:auto;border-inline-end:1px solid var(--ui-border)}.file-content[data-v-f1aee828]{min-width:0;overflow:auto}.file-name[data-v-f1aee828]{display:inline-flex;align-items:center;gap:var(--ui-space-2, 8px);overflow-wrap:anywhere}.file-bytes[data-v-f1aee828]{font-variant-numeric:tabular-nums}.file-selection[data-v-f1aee828]{overflow-wrap:anywhere}@media(max-width:600px){.file-columns[data-v-f1aee828]{grid-template-columns:minmax(0,1fr)}.file-content[data-v-f1aee828] th:nth-child(2),.file-content[data-v-f1aee828] td:nth-child(2),.file-content[data-v-f1aee828] th:nth-child(3),.file-content[data-v-f1aee828] td:nth-child(3){display:none}.file-tree[data-v-f1aee828]{max-height:180px;border-inline-end:0;border-bottom:1px solid var(--ui-border)}}.nas-picker-content[data-v-535a0e54]{max-height:65vh;overflow:auto}.save-message[data-v-535a0e54]{--ui-text-secondary:var(--ui-text)}.save-consent[data-v-535a0e54]{color:var(--ui-text);margin-block:0 var(--ui-space-4,16px)}.files-actions[data-v-97bc5d15]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.files-path[data-v-97bc5d15]{overflow-wrap:anywhere}.identity-login[data-v-f7afcf5e]{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-f7afcf5e]{margin-block:var(--ui-space-4, 16px);overflow-wrap:anywhere}.integration-jobs[data-v-7954713f]{overflow-wrap:anywhere;min-width:0}.bg-schedules[data-v-7954713f]{margin-block-start:var(--ui-space-6,24px);min-width:0;overflow-wrap:anywhere}.bg-schedules .integration-jobs[data-v-7954713f]{display:grid;gap:var(--ui-space-4,16px);padding-inline-start:var(--ui-space-5,20px)}.bg-schedules .integration-jobs li[data-v-7954713f]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ui-space-2,8px);min-width:0}.bg-schedules p[data-v-7954713f],.bg-schedules li>span[data-v-7954713f]{min-width:0;max-width:100%}.bg-schedules h3[data-v-7954713f]{font-size:15px;font-weight:600}.bg-schedule-form[data-v-7954713f]{margin-block:var(--ui-space-4,16px)}.delegate-panel[data-v-d79ee942]{min-width:0;overflow-wrap:anywhere}h3[data-v-d79ee942]{font-size:var(--ui-font-size-base,14px);font-weight:600;margin:var(--ui-space-6,24px) 0 var(--ui-space-3,12px)}.section-heading[data-v-d79ee942]{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-3,12px)}.records[data-v-d79ee942]{list-style:none;padding:0;margin:0}.records li[data-v-d79ee942]{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-d79ee942],.records li>span[data-v-d79ee942],.destination[data-v-d79ee942]{min-width:0;max-width:100%;overflow-wrap:anywhere}.records p[data-v-d79ee942]{margin:var(--ui-space-2,8px) 0 0}.background-save-panel[data-v-c4022c90]{min-width:0;overflow-wrap:anywhere}.save-message[data-v-c4022c90]{--ui-text-secondary:var(--ui-text)}h3[data-v-c4022c90]{font-size:var(--ui-font-size-base,14px);font-weight:600;margin:var(--ui-space-6,24px) 0 var(--ui-space-3,12px)}.save-actions[data-v-c4022c90],.save-records li[data-v-c4022c90]{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-3,12px)}.save-actions[data-v-c4022c90]{justify-content:flex-start}.save-records[data-v-c4022c90]{list-style:none;margin:0;padding:0}.save-records li[data-v-c4022c90]{padding-block:var(--ui-space-4,16px);border-bottom:1px solid var(--ui-border)}.save-records li>div[data-v-c4022c90]{min-width:0;max-width:100%}.save-records p[data-v-c4022c90]{margin:var(--ui-space-2,8px) 0}.authorization-announcement[data-v-c8a34087]{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.authorization-view[data-v-c8a34087]{display:flex;align-items:flex-start;justify-content:center;min-height:100%;height:100%;box-sizing:border-box;padding:24px;overflow-y:auto;color:var(--ui-text);font-family:var(--ui-font-sans)}.authorization-card[data-v-c8a34087]{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:28rem;margin:auto;text-align:center}.authorization-icon[data-v-c8a34087]{display:flex;align-items:center;justify-content:center;width:48px;height:48px;flex-shrink:0;border-radius:9999px;background:var(--ui-primary-soft);color:var(--ui-primary)}.authorization-icon-glyph[data-v-c8a34087]{width:24px;height:24px}.authorization-title[data-v-c8a34087]{font-size:16px;font-weight:600;line-height:1.4;color:var(--ui-text);margin:0;text-wrap:balance}.authorization-body[data-v-c8a34087]{max-width:24rem;font-size:13px;line-height:1.6;color:var(--ui-text);margin:0;text-align:center;text-wrap:pretty}.authorization-status[data-v-c8a34087],.authorization-failed[data-v-c8a34087]{width:100%;text-align:left}.authorization-status[data-v-c8a34087],.authorization-failed[data-v-c8a34087]{color:var(--ui-text)}.authorization-actions[data-v-c8a34087]{display:flex;justify-content:center;width:100%;margin-top:4px}.authorization-authorized[data-v-c8a34087]{display:flex;flex-direction:column;height:100%;min-height:0}.authorization-authorized[data-v-c8a34087] .app-shell{flex:1;min-height:0;height:auto}.authorization-ready[data-v-c8a34087]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:8px 16px;color:var(--ui-text);font:13px var(--ui-font-sans)}@media(max-width:480px){.authorization-view[data-v-c8a34087]{padding:16px}}
1
+ .app-shell[data-v-05f63ca5]{height:100%;min-width:0;grid-template-rows:minmax(0,1fr)}.app-shell[data-v-05f63ca5]>div{min-height:0}.app-shell[data-v-05f63ca5] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-05f63ca5]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-page-content[data-v-05f63ca5]{padding-bottom:var(--ui-space-6, 24px)}.file-browser[data-v-0b21604d]{min-width:0;color:var(--ui-text)}.file-toolbar[data-v-0b21604d]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px);margin-block:var(--ui-space-3, 12px)}.file-location[data-v-0b21604d]{flex-wrap:nowrap;align-items:center;gap:var(--ui-space-1, 4px)}.file-path[data-v-0b21604d]{flex:1;min-width:0;margin-inline-start:var(--ui-space-2, 8px)}.file-columns[data-v-0b21604d]{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-0b21604d]{min-width:0;overflow:auto;border-inline-end:1px solid var(--ui-border)}.file-content[data-v-0b21604d]{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:auto}.file-empty[data-v-0b21604d]{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-0b21604d]{display:inline-flex;border-radius:var(--ui-radius-sm, 4px);outline:none;align-items:center;gap:var(--ui-space-2, 8px);overflow-wrap:anywhere}.file-icon[data-v-0b21604d]{flex:none;color:var(--ui-text-muted)}.file-tree[data-v-0b21604d] [data-tree-node][data-selected]{color:var(--ui-text)}.file-name[data-v-0b21604d]:focus-visible{box-shadow:0 0 0 2px var(--ui-focus-ring)}.file-bytes[data-v-0b21604d]{font-variant-numeric:tabular-nums}.file-selection[data-v-0b21604d]{overflow-wrap:anywhere}@media(max-width:600px){.file-columns[data-v-0b21604d]{grid-template-columns:minmax(0,1fr);height:auto}.file-content[data-v-0b21604d] th:nth-child(2),.file-content[data-v-0b21604d] td:nth-child(2),.file-content[data-v-0b21604d] th:nth-child(3),.file-content[data-v-0b21604d] td:nth-child(3){display:none}.file-tree[data-v-0b21604d]{height:clamp(96px,25vh,180px);border-inline-end:0;border-bottom:1px solid var(--ui-border)}.file-content[data-v-0b21604d]{height:clamp(200px,45vh,360px)}}.nas-picker-content[data-v-535a0e54]{max-height:65vh;overflow:auto}.save-message[data-v-535a0e54]{--ui-text-secondary:var(--ui-text)}.save-consent[data-v-535a0e54]{color:var(--ui-text);margin-block:0 var(--ui-space-4,16px)}.files-actions[data-v-699931fa]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.files-path[data-v-699931fa]{overflow-wrap:anywhere}.identity-login[data-v-f7afcf5e]{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-f7afcf5e]{margin-block:var(--ui-space-4, 16px);overflow-wrap:anywhere}.integration-jobs[data-v-7954713f]{overflow-wrap:anywhere;min-width:0}.bg-schedules[data-v-7954713f]{margin-block-start:var(--ui-space-6,24px);min-width:0;overflow-wrap:anywhere}.bg-schedules .integration-jobs[data-v-7954713f]{display:grid;gap:var(--ui-space-4,16px);padding-inline-start:var(--ui-space-5,20px)}.bg-schedules .integration-jobs li[data-v-7954713f]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ui-space-2,8px);min-width:0}.bg-schedules p[data-v-7954713f],.bg-schedules li>span[data-v-7954713f]{min-width:0;max-width:100%}.bg-schedules h3[data-v-7954713f]{font-size:15px;font-weight:600}.bg-schedule-form[data-v-7954713f]{margin-block:var(--ui-space-4,16px)}.delegate-panel[data-v-d79ee942]{min-width:0;overflow-wrap:anywhere}h3[data-v-d79ee942]{font-size:var(--ui-font-size-base,14px);font-weight:600;margin:var(--ui-space-6,24px) 0 var(--ui-space-3,12px)}.section-heading[data-v-d79ee942]{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-3,12px)}.records[data-v-d79ee942]{list-style:none;padding:0;margin:0}.records li[data-v-d79ee942]{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-d79ee942],.records li>span[data-v-d79ee942],.destination[data-v-d79ee942]{min-width:0;max-width:100%;overflow-wrap:anywhere}.records p[data-v-d79ee942]{margin:var(--ui-space-2,8px) 0 0}.background-save-panel[data-v-c38db985]{min-width:0;overflow-wrap:anywhere}.save-message[data-v-c38db985]{--ui-text-secondary:var(--ui-text)}h3[data-v-c38db985]{font-size:var(--ui-font-size-base,14px);font-weight:600;margin:var(--ui-space-6,24px) 0 var(--ui-space-3,12px)}.save-actions[data-v-c38db985],.save-records li[data-v-c38db985]{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-3,12px)}.save-actions[data-v-c38db985]{justify-content:flex-start}.save-records[data-v-c38db985]{list-style:none;margin:0;padding:0}.save-records li[data-v-c38db985]{padding-block:var(--ui-space-4,16px);border-bottom:1px solid var(--ui-border)}.save-records li>div[data-v-c38db985]{min-width:0;max-width:100%}.save-records p[data-v-c38db985]{margin:var(--ui-space-2,8px) 0}.authorization-view[data-v-e16b5f7d]{display:flex;flex-direction:column;gap:12px}.authorization-body[data-v-e16b5f7d]{margin:0;font-size:13px;line-height:1.6;color:var(--ui-text);text-wrap:pretty}.authorization-status[data-v-e16b5f7d],.authorization-failed[data-v-e16b5f7d]{color:var(--ui-text)}.authorization-content[data-v-e16b5f7d]{display:flex;flex-direction:column;height:100%;min-height:0}.authorization-content[data-v-e16b5f7d] .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)}