@jumoo/usync 18.2.0 → 18.3.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.
Files changed (71) hide show
  1. package/LICENCE +372 -372
  2. package/README.md +16 -10
  3. package/dist/api/index.d.ts +2 -2
  4. package/dist/api/index.js +1 -1
  5. package/dist/api/sdk.gen.d.ts +2 -1
  6. package/dist/api/sdk.gen.js +5 -0
  7. package/dist/api/types.gen.d.ts +37 -0
  8. package/dist/components/usync-action-box.js +71 -71
  9. package/dist/components/usync-change-detail.js +409 -409
  10. package/dist/components/usync-change-view.js +49 -49
  11. package/dist/components/usync-content-preview.d.ts +27 -0
  12. package/dist/components/usync-content-preview.js +532 -0
  13. package/dist/components/usync-content-type-preview.d.ts +25 -0
  14. package/dist/components/usync-content-type-preview.js +530 -0
  15. package/dist/components/usync-data-type-preview.d.ts +21 -0
  16. package/dist/components/usync-data-type-preview.js +295 -0
  17. package/dist/components/usync-progress-box.js +113 -113
  18. package/dist/components/usync-result-row.js +65 -65
  19. package/dist/components/usync-results-group-view.js +63 -63
  20. package/dist/components/usync-results-view.js +77 -69
  21. package/dist/components/usync-sync-file-info-view.js +10 -10
  22. package/dist/constants.js +1 -1
  23. package/dist/dialogs/details-modal-element.d.ts +15 -0
  24. package/dist/dialogs/details-modal-element.js +260 -50
  25. package/dist/dialogs/details-modal-token.d.ts +10 -1
  26. package/dist/dialogs/error-modal-element.js +22 -22
  27. package/dist/dialogs/legacy-modal-element.js +22 -22
  28. package/dist/dialogs/single-import-modal.element.js +31 -31
  29. package/dist/exports.d.ts +1 -0
  30. package/dist/exports.js +1 -0
  31. package/dist/icons/svg/logo.js +20 -20
  32. package/dist/lang/files/da-dk.d.ts +37 -0
  33. package/dist/lang/files/da-dk.js +49 -12
  34. package/dist/lang/files/de-de.d.ts +37 -0
  35. package/dist/lang/files/de-de.js +49 -12
  36. package/dist/lang/files/en-us.d.ts +50 -0
  37. package/dist/lang/files/en-us.js +62 -12
  38. package/dist/lang/files/es-es.d.ts +37 -0
  39. package/dist/lang/files/es-es.js +49 -12
  40. package/dist/lang/files/fr-fr.d.ts +37 -0
  41. package/dist/lang/files/fr-fr.js +49 -12
  42. package/dist/lang/files/nl-nl.d.ts +37 -0
  43. package/dist/lang/files/nl-nl.js +49 -12
  44. package/dist/manifests.js +2 -0
  45. package/dist/preview/index.d.ts +1 -0
  46. package/dist/preview/index.js +1 -0
  47. package/dist/preview/manifest.d.ts +2 -0
  48. package/dist/preview/manifest.js +22 -0
  49. package/dist/preview/types.d.ts +72 -0
  50. package/dist/preview/types.js +2 -0
  51. package/dist/repository/SyncAction.respositoy.d.ts +13 -0
  52. package/dist/repository/SyncAction.respositoy.js +6 -0
  53. package/dist/repository/sources/SyncAction.source.d.ts +10 -0
  54. package/dist/repository/sources/SyncAction.source.js +6 -1
  55. package/dist/signalr/signalr.context.js +73 -26
  56. package/dist/tree/usync.menu-element.js +8 -8
  57. package/dist/utils/preview/content-type-diff.d.ts +18 -0
  58. package/dist/utils/preview/content-type-diff.js +72 -0
  59. package/dist/utils/preview/content-type-layout.d.ts +39 -0
  60. package/dist/utils/preview/content-type-layout.js +100 -0
  61. package/dist/workspace/components/usync-action-button.js +53 -53
  62. package/dist/workspace/components/usync-file-picker.element.js +33 -33
  63. package/dist/workspace/components/usync-file-upload.element.js +25 -25
  64. package/dist/workspace/dialogs/import-modal.element.js +22 -22
  65. package/dist/workspace/views/addons/addons.element.js +97 -97
  66. package/dist/workspace/views/default/default.element.js +186 -186
  67. package/dist/workspace/views/legacy/legacy.element.js +81 -81
  68. package/dist/workspace/views/settings/components/usyncSettingItem.element.js +38 -38
  69. package/dist/workspace/views/settings/settings.element.js +124 -124
  70. package/dist/workspace/workspace.element.js +16 -16
  71. package/package.json +77 -77
package/README.md CHANGED
@@ -1,10 +1,16 @@
1
- ## uSync ui library.
2
-
3
- The uSync UI library ,is used by other uSync packages, to
4
- show things like changes, and updates ,etc.
5
-
6
- > [!IMPORTANT]
7
- > Most packages do not need to export thier client library
8
- as a npm package, unless your client library is also going
9
- to be used by child packages.
10
-
1
+ ## uSync ui library.
2
+
3
+ The uSync UI library ,is used by other uSync packages, to
4
+ show things like changes, and updates ,etc.
5
+
6
+ > [!IMPORTANT]
7
+ > Most packages do not need to export thier client library
8
+ as a npm package, unless your client library is also going
9
+ to be used by child packages.
10
+
11
+ ### SignalR negotiation
12
+
13
+ The uSync SignalR client respects `Umbraco:Cms:SignalR:ClientShouldSkipNegotiation`
14
+ when exposed by Umbraco's server context. When enabled, the client connects using
15
+ WebSockets without negotiation. When disabled, or on older Umbraco versions
16
+ that do not expose the setting, negotiation and transport fallback remain enabled.
@@ -1,2 +1,2 @@
1
- export { getActionsBySet, getAddOns, getAddOnSplash, getCheckLegacy, getHandlerSettings, getRunning, getSets, getSettings, getStatus, getSyncFileInfo, type Options, postCopyLegacy, postDownload, postIgnoreLegacy, postImport, postMergeExport, postPerform, postProcessUpload } from './sdk.gen';
2
- export { ChangeDetailType, ChangeType, type ClientOptions, type EntityTagHeaderValue, type FileContentResult, type GetActionsBySetData, type GetActionsBySetErrors, type GetActionsBySetResponse, type GetActionsBySetResponses, type GetAddOnsData, type GetAddOnsErrors, type GetAddOnSplashData, type GetAddOnSplashErrors, type GetAddOnSplashResponse, type GetAddOnSplashResponses, type GetAddOnsResponse, type GetAddOnsResponses, type GetCheckLegacyData, type GetCheckLegacyErrors, type GetCheckLegacyResponse, type GetCheckLegacyResponses, type GetHandlerSettingsData, type GetHandlerSettingsErrors, type GetHandlerSettingsResponse, type GetHandlerSettingsResponses, type GetRunningData, type GetRunningErrors, type GetRunningResponse, type GetRunningResponses, type GetSetsData, type GetSetsErrors, type GetSetsResponse, type GetSetsResponses, type GetSettingsData, type GetSettingsErrors, type GetSettingsResponse, type GetSettingsResponses, type GetStatusData, type GetStatusErrors, type GetStatusResponse, type GetStatusResponses, type GetSyncFileInfoData, type GetSyncFileInfoErrors, type GetSyncFileInfoResponse, type GetSyncFileInfoResponses, type HandlerSettings, HandlerStatus, type PerformActionRequest, type PerformActionResponse, type PostCopyLegacyData, type PostCopyLegacyErrors, type PostCopyLegacyResponse, type PostCopyLegacyResponses, type PostDownloadData, type PostDownloadErrors, type PostDownloadResponse, type PostDownloadResponses, type PostIgnoreLegacyData, type PostIgnoreLegacyErrors, type PostIgnoreLegacyResponse, type PostIgnoreLegacyResponses, type PostImportData, type PostImportErrors, type PostImportResponse, type PostImportResponses, type PostMergeExportData, type PostMergeExportErrors, type PostMergeExportResponse, type PostMergeExportResponses, type PostPerformData, type PostPerformErrors, type PostPerformResponse, type PostPerformResponses, type PostProcessUploadData, type PostProcessUploadErrors, type PostProcessUploadResponse, type PostProcessUploadResponses, type StringSegment, type SyncActionButton, type SyncActionGroup, type SyncFileVersionCheckResult, SyncFolderMode, type SyncHandlerSummary, type SyncLegacyCheckResponse, type SyncOperationStatusResponse, SyncProcessingMode, type SyncRunningOperationResponse, type SyncSelectableSet, type UploadImportResult, type USyncActionView, type USyncAddonInfo, type USyncAddonSplash, type USyncChange, type USyncHandlerSetSettings, type USyncOptions, type USyncSettings } from './types.gen';
1
+ export { getActionsBySet, getAddOns, getAddOnSplash, getCheckLegacy, getHandlerSettings, getPreview, getRunning, getSets, getSettings, getStatus, getSyncFileInfo, type Options, postCopyLegacy, postDownload, postIgnoreLegacy, postImport, postMergeExport, postPerform, postProcessUpload } from './sdk.gen';
2
+ export { ChangeDetailType, ChangeType, type ClientOptions, type EntityTagHeaderValue, type FileContentResult, type GetActionsBySetData, type GetActionsBySetErrors, type GetActionsBySetResponse, type GetActionsBySetResponses, type GetAddOnsData, type GetAddOnsErrors, type GetAddOnSplashData, type GetAddOnSplashErrors, type GetAddOnSplashResponse, type GetAddOnSplashResponses, type GetAddOnsResponse, type GetAddOnsResponses, type GetCheckLegacyData, type GetCheckLegacyErrors, type GetCheckLegacyResponse, type GetCheckLegacyResponses, type GetHandlerSettingsData, type GetHandlerSettingsErrors, type GetHandlerSettingsResponse, type GetHandlerSettingsResponses, type GetPreviewData, type GetPreviewErrors, type GetPreviewResponse, type GetPreviewResponses, type GetRunningData, type GetRunningErrors, type GetRunningResponse, type GetRunningResponses, type GetSetsData, type GetSetsErrors, type GetSetsResponse, type GetSetsResponses, type GetSettingsData, type GetSettingsErrors, type GetSettingsResponse, type GetSettingsResponses, type GetStatusData, type GetStatusErrors, type GetStatusResponse, type GetStatusResponses, type GetSyncFileInfoData, type GetSyncFileInfoErrors, type GetSyncFileInfoResponse, type GetSyncFileInfoResponses, type HandlerSettings, HandlerStatus, type PerformActionRequest, type PerformActionResponse, type PostCopyLegacyData, type PostCopyLegacyErrors, type PostCopyLegacyResponse, type PostCopyLegacyResponses, type PostDownloadData, type PostDownloadErrors, type PostDownloadResponse, type PostDownloadResponses, type PostIgnoreLegacyData, type PostIgnoreLegacyErrors, type PostIgnoreLegacyResponse, type PostIgnoreLegacyResponses, type PostImportData, type PostImportErrors, type PostImportResponse, type PostImportResponses, type PostMergeExportData, type PostMergeExportErrors, type PostMergeExportResponse, type PostMergeExportResponses, type PostPerformData, type PostPerformErrors, type PostPerformResponse, type PostPerformResponses, type PostProcessUploadData, type PostProcessUploadErrors, type PostProcessUploadResponse, type PostProcessUploadResponses, type StringSegment, type SyncActionButton, type SyncActionGroup, type SyncFileVersionCheckResult, SyncFolderMode, type SyncHandlerSummary, type SyncItemPreviewResponse, type SyncLegacyCheckResponse, type SyncOperationStatusResponse, SyncProcessingMode, type SyncRunningOperationResponse, type SyncSelectableSet, type UploadImportResult, type USyncActionView, type USyncAddonInfo, type USyncAddonSplash, type USyncChange, type USyncHandlerSetSettings, type USyncOptions, type USyncSettings } from './types.gen';
package/dist/api/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
- export { getActionsBySet, getAddOns, getAddOnSplash, getCheckLegacy, getHandlerSettings, getRunning, getSets, getSettings, getStatus, getSyncFileInfo, postCopyLegacy, postDownload, postIgnoreLegacy, postImport, postMergeExport, postPerform, postProcessUpload } from './sdk.gen';
2
+ export { getActionsBySet, getAddOns, getAddOnSplash, getCheckLegacy, getHandlerSettings, getPreview, getRunning, getSets, getSettings, getStatus, getSyncFileInfo, postCopyLegacy, postDownload, postIgnoreLegacy, postImport, postMergeExport, postPerform, postProcessUpload } from './sdk.gen';
3
3
  export { ChangeDetailType, ChangeType, HandlerStatus, SyncFolderMode, SyncProcessingMode } from './types.gen';
@@ -1,5 +1,5 @@
1
1
  import type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';
2
- import type { GetActionsBySetData, GetActionsBySetErrors, GetActionsBySetResponses, GetAddOnsData, GetAddOnsErrors, GetAddOnSplashData, GetAddOnSplashErrors, GetAddOnSplashResponses, GetAddOnsResponses, GetCheckLegacyData, GetCheckLegacyErrors, GetCheckLegacyResponses, GetHandlerSettingsData, GetHandlerSettingsErrors, GetHandlerSettingsResponses, GetRunningData, GetRunningErrors, GetRunningResponses, GetSetsData, GetSetsErrors, GetSetsResponses, GetSettingsData, GetSettingsErrors, GetSettingsResponses, GetStatusData, GetStatusErrors, GetStatusResponses, GetSyncFileInfoData, GetSyncFileInfoErrors, GetSyncFileInfoResponses, PostCopyLegacyData, PostCopyLegacyErrors, PostCopyLegacyResponses, PostDownloadData, PostDownloadErrors, PostDownloadResponses, PostIgnoreLegacyData, PostIgnoreLegacyErrors, PostIgnoreLegacyResponses, PostImportData, PostImportErrors, PostImportResponses, PostMergeExportData, PostMergeExportErrors, PostMergeExportResponses, PostPerformData, PostPerformErrors, PostPerformResponses, PostProcessUploadData, PostProcessUploadErrors, PostProcessUploadResponses } from './types.gen';
2
+ import type { GetActionsBySetData, GetActionsBySetErrors, GetActionsBySetResponses, GetAddOnsData, GetAddOnsErrors, GetAddOnSplashData, GetAddOnSplashErrors, GetAddOnSplashResponses, GetAddOnsResponses, GetCheckLegacyData, GetCheckLegacyErrors, GetCheckLegacyResponses, GetHandlerSettingsData, GetHandlerSettingsErrors, GetHandlerSettingsResponses, GetPreviewData, GetPreviewErrors, GetPreviewResponses, GetRunningData, GetRunningErrors, GetRunningResponses, GetSetsData, GetSetsErrors, GetSetsResponses, GetSettingsData, GetSettingsErrors, GetSettingsResponses, GetStatusData, GetStatusErrors, GetStatusResponses, GetSyncFileInfoData, GetSyncFileInfoErrors, GetSyncFileInfoResponses, PostCopyLegacyData, PostCopyLegacyErrors, PostCopyLegacyResponses, PostDownloadData, PostDownloadErrors, PostDownloadResponses, PostIgnoreLegacyData, PostIgnoreLegacyErrors, PostIgnoreLegacyResponses, PostImportData, PostImportErrors, PostImportResponses, PostMergeExportData, PostMergeExportErrors, PostMergeExportResponses, PostPerformData, PostPerformErrors, PostPerformResponses, PostProcessUploadData, PostProcessUploadErrors, PostProcessUploadResponses } from './types.gen';
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -17,6 +17,7 @@ export declare const getActionsBySet: <ThrowOnError extends boolean = false>(opt
17
17
  export declare const postDownload: <ThrowOnError extends boolean = false>(options?: Options<PostDownloadData, ThrowOnError>) => RequestResult<PostDownloadResponses, PostDownloadErrors, ThrowOnError>;
18
18
  export declare const postImport: <ThrowOnError extends boolean = false>(options: Options<PostImportData, ThrowOnError>) => RequestResult<PostImportResponses, PostImportErrors, ThrowOnError>;
19
19
  export declare const postPerform: <ThrowOnError extends boolean = false>(options: Options<PostPerformData, ThrowOnError>) => RequestResult<PostPerformResponses, PostPerformErrors, ThrowOnError>;
20
+ export declare const getPreview: <ThrowOnError extends boolean = false>(options?: Options<GetPreviewData, ThrowOnError>) => RequestResult<GetPreviewResponses, GetPreviewErrors, ThrowOnError>;
20
21
  export declare const postProcessUpload: <ThrowOnError extends boolean = false>(options?: Options<PostProcessUploadData, ThrowOnError>) => RequestResult<PostProcessUploadResponses, PostProcessUploadErrors, ThrowOnError>;
21
22
  export declare const getRunning: <ThrowOnError extends boolean = false>(options?: Options<GetRunningData, ThrowOnError>) => RequestResult<GetRunningResponses, GetRunningErrors, ThrowOnError>;
22
23
  export declare const getStatus: <ThrowOnError extends boolean = false>(options?: Options<GetStatusData, ThrowOnError>) => RequestResult<GetStatusResponses, GetStatusErrors, ThrowOnError>;
@@ -28,6 +28,11 @@ export const postPerform = (options) => (options.client ?? client).post({
28
28
  ...options.headers
29
29
  }
30
30
  });
31
+ export const getPreview = (options) => (options?.client ?? client).get({
32
+ security: [{ scheme: 'bearer', type: 'http' }],
33
+ url: '/umbraco/usync/api/v1/Preview',
34
+ ...options
35
+ });
31
36
  export const postProcessUpload = (options) => (options?.client ?? client).post({
32
37
  security: [{ scheme: 'bearer', type: 'http' }],
33
38
  url: '/umbraco/usync/api/v1/ProcessUpload',
@@ -115,6 +115,17 @@ export type SyncHandlerSummary = {
115
115
  changes: number | string;
116
116
  inError: boolean;
117
117
  };
118
+ export type SyncItemPreviewResponse = {
119
+ key: string;
120
+ handler: string;
121
+ itemType: string;
122
+ entityType: string;
123
+ isDelete: boolean;
124
+ success: boolean;
125
+ message?: null | string;
126
+ preview?: unknown;
127
+ details: Array<USyncChange>;
128
+ };
118
129
  export type SyncLegacyCheckResponse = {
119
130
  hasLegacy: boolean;
120
131
  legacyFolder?: null | string;
@@ -310,6 +321,32 @@ export type PostPerformResponses = {
310
321
  200: PerformActionResponse;
311
322
  };
312
323
  export type PostPerformResponse = PostPerformResponses[keyof PostPerformResponses];
324
+ export type GetPreviewData = {
325
+ body?: never;
326
+ path?: never;
327
+ query?: {
328
+ handler?: string;
329
+ key?: string;
330
+ };
331
+ url: '/umbraco/usync/api/v1/Preview';
332
+ };
333
+ export type GetPreviewErrors = {
334
+ /**
335
+ * The resource is protected and requires an authentication token
336
+ */
337
+ 401: unknown;
338
+ /**
339
+ * Not Found
340
+ */
341
+ 404: unknown;
342
+ };
343
+ export type GetPreviewResponses = {
344
+ /**
345
+ * OK
346
+ */
347
+ 200: SyncItemPreviewResponse;
348
+ };
349
+ export type GetPreviewResponse = GetPreviewResponses[keyof GetPreviewResponses];
313
350
  export type PostProcessUploadData = {
314
351
  body?: never;
315
352
  path?: never;
@@ -25,26 +25,26 @@ let uSyncActionBox = class uSyncActionBox extends UmbLitElement {
25
25
  }
26
26
  render() {
27
27
  const dropdownButtons = this.group.buttons.map((b) => {
28
- return html `
29
- <usync-action-button
30
- .button=${b}
31
- .disabled=${this.disabled}
32
- state=${ifDefined(this.state)}
33
- @usync-action-click=${(e) => __classPrivateFieldGet(this, _uSyncActionBox_instances, "m", _uSyncActionBox_onAction).call(this, e, this.group)}></usync-action-button>
28
+ return html `
29
+ <usync-action-button
30
+ .button=${b}
31
+ .disabled=${this.disabled}
32
+ state=${ifDefined(this.state)}
33
+ @usync-action-click=${(e) => __classPrivateFieldGet(this, _uSyncActionBox_instances, "m", _uSyncActionBox_onAction).call(this, e, this.group)}></usync-action-button>
34
34
  `;
35
35
  });
36
- return html `
37
- <uui-box class="action-box ${this.disabled ? 'disabled' : ''}">
38
- <div class="box-content">
39
- <div class="box-heading">
40
- <h2 class="box-heading" title=${this.getLastSyncDate()}>
41
- ${this.localize.termOrDefault(`uSync_group${this.group?.groupName}`, this.group?.groupName ?? '')}
42
- </h2>
43
- <umb-icon name=${this.group?.icon}></umb-icon>
44
- </div>
45
- <div class="box-buttons">${dropdownButtons}</div>
46
- </div>
47
- </uui-box>
36
+ return html `
37
+ <uui-box class="action-box ${this.disabled ? 'disabled' : ''}">
38
+ <div class="box-content">
39
+ <div class="box-heading">
40
+ <h2 class="box-heading" title=${this.getLastSyncDate()}>
41
+ ${this.localize.termOrDefault(`uSync_group${this.group?.groupName}`, this.group?.groupName ?? '')}
42
+ </h2>
43
+ <umb-icon name=${this.group?.icon}></umb-icon>
44
+ </div>
45
+ <div class="box-buttons">${dropdownButtons}</div>
46
+ </div>
47
+ </uui-box>
48
48
  `;
49
49
  }
50
50
  getLastSyncDate() {
@@ -59,59 +59,59 @@ _uSyncActionBox_onAction = function _uSyncActionBox_onAction(e, group) {
59
59
  return;
60
60
  this.dispatchEvent(new uSyncActionPerformEvent(group, e.button.key, e.button.force, e.button.clean, e.button.file));
61
61
  };
62
- uSyncActionBox.styles = css `
63
- :host {
64
- flex-grow: 1;
65
- }
66
-
67
- .action-box {
68
- transition: opacity 0.2s ease-in-out;
69
- --uui-box-default-padding: var(--uui-size-space-4) 0;
70
- }
71
-
72
- .box-content {
73
- display: flex;
74
- flex-direction: column;
75
- align-items: center;
76
- }
77
-
78
- .box-heading {
79
- font-size: var(--uui-type-h3-size);
80
- cursor: help;
81
- margin: var(--uui-size-space-3);
82
- }
83
-
84
- umb-icon {
85
- margin: var(--uui-size-4) 0 var(--uui-size-4);
86
- font-size: var(--uui-type-h2-size);
87
- color: var(--uui-color-text-alt);
88
- }
89
-
90
- uui-button {
91
- margin: 0 var(--uui-size-space-2);
92
- font-size: var(--uui-size-6);
93
- }
94
-
95
- .box-buttons {
96
- margin: var(--uui-size-space-2) 0;
97
- }
98
-
99
- .disabled {
100
- opacity: 0.4;
101
- }
102
-
103
- .last-sync {
104
- color: var(--uui-color-text-alt);
105
- font-style: italic;
106
- font-size: var(--uui-size-5);
107
- }
108
-
109
- .box-heading {
110
- display: flex;
111
- flex-direction: row-reverse;
112
- gap: var(--uui-size-2);
113
- align-items: center;
114
- }
62
+ uSyncActionBox.styles = css `
63
+ :host {
64
+ flex-grow: 1;
65
+ }
66
+
67
+ .action-box {
68
+ transition: opacity 0.2s ease-in-out;
69
+ --uui-box-default-padding: var(--uui-size-space-4) 0;
70
+ }
71
+
72
+ .box-content {
73
+ display: flex;
74
+ flex-direction: column;
75
+ align-items: center;
76
+ }
77
+
78
+ .box-heading {
79
+ font-size: var(--uui-type-h3-size);
80
+ cursor: help;
81
+ margin: var(--uui-size-space-3);
82
+ }
83
+
84
+ umb-icon {
85
+ margin: var(--uui-size-4) 0 var(--uui-size-4);
86
+ font-size: var(--uui-type-h2-size);
87
+ color: var(--uui-color-text-alt);
88
+ }
89
+
90
+ uui-button {
91
+ margin: 0 var(--uui-size-space-2);
92
+ font-size: var(--uui-size-6);
93
+ }
94
+
95
+ .box-buttons {
96
+ margin: var(--uui-size-space-2) 0;
97
+ }
98
+
99
+ .disabled {
100
+ opacity: 0.4;
101
+ }
102
+
103
+ .last-sync {
104
+ color: var(--uui-color-text-alt);
105
+ font-style: italic;
106
+ font-size: var(--uui-size-5);
107
+ }
108
+
109
+ .box-heading {
110
+ display: flex;
111
+ flex-direction: row-reverse;
112
+ gap: var(--uui-size-2);
113
+ align-items: center;
114
+ }
115
115
  `;
116
116
  __decorate([
117
117
  property({ type: Object })