@antelopejs/dms 0.7.5 → 0.7.6

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 (97) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/implementations/dms-base/export-jobs.d.ts +4 -1
  3. package/dist/implementations/dms-base/export-jobs.js +10 -6
  4. package/dist/implementations/dms-base/export-jobs.js.map +1 -1
  5. package/dist/implementations/dms-base/search-route.js +20 -11
  6. package/dist/implementations/dms-base/search-route.js.map +1 -1
  7. package/dist/test/attachment-host/capabilities.d.ts +2 -0
  8. package/dist/test/attachment-host/capabilities.js +11 -0
  9. package/dist/test/attachment-host/capabilities.js.map +1 -1
  10. package/dist/test/integration/table-view-capabilities.test.js +23 -5
  11. package/dist/test/integration/table-view-capabilities.test.js.map +1 -1
  12. package/dist/test/unit/interfaces/dms-base/data-types/field-types.test.js +29 -0
  13. package/dist/test/unit/interfaces/dms-base/data-types/field-types.test.js.map +1 -1
  14. package/dist/test/unit/interfaces/dms-base/display-blocks-catalog.test.js +14 -0
  15. package/dist/test/unit/interfaces/dms-base/display-blocks-catalog.test.js.map +1 -1
  16. package/dist/test/unit/interfaces/dms-base/export-jobs-binding.test.d.ts +1 -0
  17. package/dist/test/unit/interfaces/dms-base/export-jobs-binding.test.js +49 -0
  18. package/dist/test/unit/interfaces/dms-base/export-jobs-binding.test.js.map +1 -0
  19. package/dist/test/unit/interfaces/dms-base/table-view-hidden-columns.test.d.ts +1 -0
  20. package/dist/test/unit/interfaces/dms-base/table-view-hidden-columns.test.js +105 -0
  21. package/dist/test/unit/interfaces/dms-base/table-view-hidden-columns.test.js.map +1 -0
  22. package/dist/test/unit/request-tenant-guards.test.js +38 -0
  23. package/dist/test/unit/request-tenant-guards.test.js.map +1 -1
  24. package/frontend-vue/layers/dms-auth/app/custom-pages/auth/accounts.vue +9 -3
  25. package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +6 -0
  26. package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +6 -0
  27. package/frontend-vue/layers/dms-layout/app/build/components/layout/CommandPaletteAssistantAnswer.vue +1 -0
  28. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardHeader.vue +2 -0
  29. package/frontend-vue/layers/dms-layout/app/build/components/layout/Footer.vue +1 -0
  30. package/frontend-vue/layers/dms-layout/app/build/components/layout/PageSkeleton.vue +13 -4
  31. package/frontend-vue/layers/dms-layout/app/build/components/layout/RolePreviewBar.vue +9 -3
  32. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/members/MemberRolePicker.vue +5 -1
  33. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/profile/ProfilePersonalInfo.vue +1 -0
  34. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/profile/ProfileSummaryRow.vue +4 -0
  35. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/RoleEditor.vue +1 -1
  36. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecurityEmail.vue +4 -1
  37. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecurityPassword.vue +4 -1
  38. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecuritySessions.vue +1 -0
  39. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecurityTwoFactor.vue +19 -4
  40. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/theme/AppearanceDeveloper.vue +1 -0
  41. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/theme/CssVariablesList.vue +6 -3
  42. package/frontend-vue/layers/dms-layout/app/custom-pages/modules.vue +20 -5
  43. package/frontend-vue/layers/dms-ui/app/build/components/chart/internal/ChartSkeleton.vue +4 -0
  44. package/frontend-vue/layers/dms-ui/app/build/components/containers/drawer/DynamicDrawer.vue +10 -2
  45. package/frontend-vue/layers/dms-ui/app/build/components/containers/modal/DynamicModal.vue +7 -2
  46. package/frontend-vue/layers/dms-ui/app/build/components/form/FormSectionNav.vue +87 -40
  47. package/frontend-vue/layers/dms-ui/app/build/components/skeleton/RowSkeleton.vue +8 -1
  48. package/frontend-vue/layers/dms-ui/app/build/components/stat/StatCell.vue +54 -13
  49. package/frontend-vue/layers/dms-ui/app/build/components/table/Pagination.vue +9 -2
  50. package/frontend-vue/layers/dms-ui/app/build/components/table/Table.vue +8 -0
  51. package/frontend-vue/layers/dms-ui/app/build/components/table/Tabs.vue +1 -0
  52. package/frontend-vue/layers/dms-ui/app/build/components/table/Views.vue +1 -0
  53. package/frontend-vue/layers/dms-ui/app/build/components/table-view/CardGridSkeleton.vue +22 -5
  54. package/frontend-vue/layers/dms-ui/app/build/components/table-view/ExpandedRowDetail.vue +1 -0
  55. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/registerDefaults.ts +3 -1
  56. package/frontend-vue/layers/dms-ui/app/build/composables/form/formFooter.ts +3 -2
  57. package/frontend-vue/layers/dms-ui/app/build/composables/form/formSections.ts +25 -0
  58. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewRowActions.ts +20 -2
  59. package/frontend-vue/layers/dms-ui/app/build/utils/characterCount.ts +8 -0
  60. package/frontend-vue/layers/dms-ui/app/components/activity-feed/ActivityFeed.vue +4 -1
  61. package/frontend-vue/layers/dms-ui/app/components/blocks/CodeBlock.vue +3 -0
  62. package/frontend-vue/layers/dms-ui/app/components/blocks/NavCardGridBlock.vue +13 -5
  63. package/frontend-vue/layers/dms-ui/app/components/card/NavCard.vue +7 -1
  64. package/frontend-vue/layers/dms-ui/app/components/chart/ChartCard.vue +10 -3
  65. package/frontend-vue/layers/dms-ui/app/components/confirm/ConfirmModal.vue +8 -0
  66. package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +4 -3
  67. package/frontend-vue/layers/dms-ui/app/components/form/components/Cascader.vue +6 -1
  68. package/frontend-vue/layers/dms-ui/app/components/form/components/Display.vue +5 -1
  69. package/frontend-vue/layers/dms-ui/app/components/form/components/InputNumber.vue +27 -3
  70. package/frontend-vue/layers/dms-ui/app/components/form/components/InputText.vue +24 -2
  71. package/frontend-vue/layers/dms-ui/app/components/form/components/RichText.vue +13 -4
  72. package/frontend-vue/layers/dms-ui/app/components/form/components/Textarea.vue +27 -2
  73. package/frontend-vue/layers/dms-ui/app/components/key-value-list/KeyValueList.vue +8 -4
  74. package/frontend-vue/layers/dms-ui/app/components/kpi/KpiCard.vue +12 -4
  75. package/frontend-vue/layers/dms-ui/app/components/meter/MeterBlock.vue +15 -4
  76. package/frontend-vue/layers/dms-ui/app/components/save-bar/SaveBar.vue +69 -42
  77. package/frontend-vue/layers/dms-ui/app/components/tab/Tab.vue +15 -1
  78. package/frontend-vue/layers/dms-ui/app/components/table-view/KanbanBoard.vue +13 -3
  79. package/frontend-vue/layers/dms-ui/app/components/top-list/TopListCard.vue +45 -9
  80. package/frontend-vue/layers/dms-ui/app/composables/form/types/field.ts +2 -0
  81. package/frontend-vue/layers/dms-ui/app/composables/tab/types/props.ts +5 -0
  82. package/frontend-vue/tests/confirm-dialog-fields.test.ts +12 -0
  83. package/frontend-vue/tests/drawer-target-direction.test.ts +1 -0
  84. package/frontend-vue/tests/field-suffix-count.test.ts +120 -0
  85. package/frontend-vue/tests/form-section-nav-groups.test.ts +116 -0
  86. package/frontend-vue/tests/nav-card-badge.test.ts +5 -1
  87. package/frontend-vue/tests/nuxt-ui-aria-labels.test.ts +58 -0
  88. package/frontend-vue/tests/page-fill-height.test.ts +2 -2
  89. package/frontend-vue/tests/save-bar.test.ts +49 -0
  90. package/frontend-vue/tests/stat-group-detail-lines.test.ts +63 -0
  91. package/frontend-vue/tests/tab-fit.test.ts +99 -0
  92. package/frontend-vue/tests/table-cell-sublines.test.ts +15 -0
  93. package/frontend-vue/tests/table-cell-wrap.test.ts +24 -2
  94. package/frontend-vue/tests/table-row-action-errors.test.ts +26 -0
  95. package/frontend-vue/tests/top-list-card-actions.test.ts +91 -0
  96. package/package.json +2 -2
  97. package/skills/dms/SKILL.md +11 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-view-hidden-columns.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-hidden-columns.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_fs_1 = require("node:fs");
4
+ const node_path_1 = require("node:path");
3
5
  const interface_api_1 = require("@antelopejs/interface-api");
4
6
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
5
7
  const chai_1 = require("chai");
@@ -20,6 +22,10 @@ const AUTH_KEY = "request-guard-key";
20
22
  const HTTP_UNAUTHORIZED = 401;
21
23
  const HTTP_FORBIDDEN = 403;
22
24
  const gate = (0, page_access_1.denyingTenantGate)("request-guard-gate", TENANT);
25
+ const TENANT_OWNER_REQUIRED = "error.tenant_owner_required";
26
+ const TENANT_MEMBER_REQUIRED = "error.tenant_member_required";
27
+ const CORE_LOCALES = ["core-en-GB.json", "core-fr-FR.json"];
28
+ const CORE_LOCALES_DIR = "frontend-vue/layers/dms-core/i18n/locales";
23
29
  function context(token) {
24
30
  return {
25
31
  rawRequest: { headers: { authorization: `Bearer ${token}` } },
@@ -35,6 +41,23 @@ async function expectStatus(action, status) {
35
41
  (0, chai_1.expect)(error.getStatus()).to.equal(status);
36
42
  }
37
43
  }
44
+ async function refusalOf(action) {
45
+ try {
46
+ await action();
47
+ }
48
+ catch (error) {
49
+ (0, chai_1.expect)(error).to.be.instanceOf(interface_api_1.HTTPResult);
50
+ (0, chai_1.expect)(error.getStatus()).to.equal(HTTP_FORBIDDEN);
51
+ return error.getBody();
52
+ }
53
+ return chai_1.expect.fail("Expected guard rejection");
54
+ }
55
+ function translationOf(locale, key) {
56
+ const messages = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(process.cwd(), CORE_LOCALES_DIR, locale), "utf8"));
57
+ return key
58
+ .split(".")
59
+ .reduce((node, part) => node?.[part], messages);
60
+ }
38
61
  describe("[unit] request tenant guards — JWT and custom credentials", () => {
39
62
  let user;
40
63
  let jwt;
@@ -127,6 +150,21 @@ describe("[unit] request tenant guards — JWT and custom credentials", () => {
127
150
  });
128
151
  }
129
152
  });
153
+ it("refuses with an i18n key the dashboard translates", async () => {
154
+ (0, chai_1.expect)(await refusalOf(() => (0, guards_1.authenticateTenantRequest)(context(jwt), { requireOwner: true }))).to.equal(TENANT_OWNER_REQUIRED);
155
+ const foreign = {
156
+ ...authenticator,
157
+ authenticate: async () => ({ user, tenantId: OTHER_TENANT }),
158
+ };
159
+ (0, chai_1.expect)(await refusalOf(() => (0, guards_1.authenticateTenantRequest)(context("opaque.secret"), {
160
+ authenticators: [foreign],
161
+ }))).to.equal(TENANT_MEMBER_REQUIRED);
162
+ for (const locale of CORE_LOCALES) {
163
+ for (const key of [TENANT_OWNER_REQUIRED, TENANT_MEMBER_REQUIRED]) {
164
+ (0, chai_1.expect)(translationOf(locale, key), `${locale} ${key}`).to.be.a("string");
165
+ }
166
+ }
167
+ });
130
168
  it("rechecks tenant gates on long-lived requests; bypass does not bypass ownership", async () => {
131
169
  const ctx = context("opaque.secret");
132
170
  await (0, guards_1.authenticateTenantRequest)(ctx, options);
@@ -1 +1 @@
1
- {"version":3,"file":"request-tenant-guards.test.js","sourceRoot":"","sources":["../../../src/test/unit/request-tenant-guards.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-tenant-guards.test.js","sourceRoot":"","sources":["../../../src/test/unit/request-tenant-guards.test.ts"],"names":[],"mappings":"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"}
@@ -148,10 +148,16 @@ onMounted(() => {
148
148
  :key="row"
149
149
  :class="[TILE_ROW_CLASS, 'py-2.5']"
150
150
  >
151
- <USkeleton class="size-8 rounded-full" />
151
+ <USkeleton
152
+ :aria-label="t('dms.a11y.loading')"
153
+ class="size-8 rounded-full"
154
+ />
152
155
  <span class="grid gap-1.5">
153
- <USkeleton class="h-3.5 w-32" />
154
- <USkeleton class="h-3 w-44" />
156
+ <USkeleton
157
+ :aria-label="t('dms.a11y.loading')"
158
+ class="h-3.5 w-32"
159
+ />
160
+ <USkeleton :aria-label="t('dms.a11y.loading')" class="h-3 w-44" />
155
161
  </span>
156
162
  </li>
157
163
  </template>
@@ -69,6 +69,8 @@
69
69
  "unauthorized": "You are not allowed to perform this action.",
70
70
  "forbidden": "You are not authorized to access this resource.",
71
71
  "not_a_member": "You are no longer a member of this account.",
72
+ "tenant_owner_required": "Only a workspace owner can do this.",
73
+ "tenant_member_required": "Only a workspace member can do this.",
72
74
  "session_expired": "Your session has expired. Please sign in again.",
73
75
  "session_not_found": "This session no longer exists.",
74
76
  "rate_limited": "Too many requests. Please wait before trying again.",
@@ -485,6 +487,10 @@
485
487
  "previous_month": "Previous month",
486
488
  "next_month": "Next month"
487
489
  }
490
+ },
491
+ "a11y": {
492
+ "breadcrumb": "Breadcrumb",
493
+ "loading": "Loading"
488
494
  }
489
495
  }
490
496
  }
@@ -69,6 +69,8 @@
69
69
  "unauthorized": "Vous n'êtes pas autorisé à effectuer cette action.",
70
70
  "forbidden": "Vous n'êtes pas autorisé à accéder à cette ressource.",
71
71
  "not_a_member": "Vous n'êtes plus membre de ce compte.",
72
+ "tenant_owner_required": "Seul un propriétaire de l'espace peut faire cela.",
73
+ "tenant_member_required": "Seul un membre de l'espace peut faire cela.",
72
74
  "session_expired": "Votre session a expiré. Veuillez vous reconnecter.",
73
75
  "session_not_found": "Cette session n'existe plus.",
74
76
  "rate_limited": "Trop de requêtes. Veuillez patienter avant de réessayer.",
@@ -485,6 +487,10 @@
485
487
  "previous_month": "Mois précédent",
486
488
  "next_month": "Mois suivant"
487
489
  }
490
+ },
491
+ "a11y": {
492
+ "breadcrumb": "Fil d'Ariane",
493
+ "loading": "Chargement"
488
494
  }
489
495
  }
490
496
  }
@@ -64,6 +64,7 @@ onErrorCaptured((error) => {
64
64
  {{ t("commandPalette.assistant.loading") }}
65
65
  </span>
66
66
  <USkeleton
67
+ :aria-label="t('dms.a11y.loading')"
67
68
  v-for="width in SKELETON_WIDTHS"
68
69
  :key="width"
69
70
  :class="['h-3 bg-(--dms-assistant-tint)', width]"
@@ -211,6 +211,7 @@ const mobileBreadcrumb = computed(
211
211
 
212
212
  <template #title>
213
213
  <UBreadcrumb
214
+ :aria-label="t('dms.a11y.breadcrumb')"
214
215
  :items="breadcrumb"
215
216
  :ui="{ linkLabel: 'first-letter:uppercase' }"
216
217
  class="hidden md:block"
@@ -290,6 +291,7 @@ const mobileBreadcrumb = computed(
290
291
  with its buttons. -->
291
292
  <div class="border-default border-b px-3 py-2 sm:px-4 md:hidden">
292
293
  <UBreadcrumb
294
+ :aria-label="t('dms.a11y.breadcrumb')"
293
295
  :items="mobileBreadcrumb"
294
296
  :ui="{ linkLabel: 'first-letter:uppercase' }"
295
297
  >
@@ -142,6 +142,7 @@ async function onLocaleChange(code: unknown) {
142
142
  class="border-default flex items-center border-s px-2 font-mono tabular-nums"
143
143
  >
144
144
  <USkeleton
145
+ :aria-label="t('dms.a11y.loading')"
145
146
  v-if="githubStars === null"
146
147
  aria-hidden="true"
147
148
  class="h-2.5 w-6"
@@ -11,20 +11,29 @@ interface PageSkeletonProps {
11
11
  const props = defineProps<PageSkeletonProps>();
12
12
 
13
13
  const CONTENT_LINE_WIDTHS = ["72%", "58%", "66%", "44%"];
14
+
15
+ const { t } = useI18n();
14
16
  </script>
15
17
 
16
18
  <template>
17
19
  <div aria-hidden="true" class="dms-page-skeleton space-y-6">
18
20
  <div v-if="props.withTitle" class="flex items-center gap-3.5">
19
- <USkeleton class="size-9 rounded-[9px]" />
21
+ <USkeleton
22
+ :aria-label="t('dms.a11y.loading')"
23
+ class="size-9 rounded-[9px]"
24
+ />
20
25
  <div class="space-y-2">
21
- <USkeleton class="h-5 w-48" />
22
- <USkeleton class="h-3 w-72 max-w-[60vw]" />
26
+ <USkeleton :aria-label="t('dms.a11y.loading')" class="h-5 w-48" />
27
+ <USkeleton
28
+ :aria-label="t('dms.a11y.loading')"
29
+ class="h-3 w-72 max-w-[60vw]"
30
+ />
23
31
  </div>
24
32
  </div>
25
33
  <div class="dms-card space-y-4 p-[18px]">
26
- <USkeleton class="h-3.5 w-40" />
34
+ <USkeleton :aria-label="t('dms.a11y.loading')" class="h-3.5 w-40" />
27
35
  <USkeleton
36
+ :aria-label="t('dms.a11y.loading')"
28
37
  v-for="width in CONTENT_LINE_WIDTHS"
29
38
  :key="width"
30
39
  class="h-2.5"
@@ -130,8 +130,14 @@ const outOfScope = computed(() => preview.result.value?.outOfScope ?? 0);
130
130
  aria-hidden="true"
131
131
  class="hidden h-[37px] items-center gap-2.5 border-b border-(--dms-accent-line) bg-(--dms-accent-tint) ps-4 pe-3 [html[data-dms-role-preview=pending]_&]:flex"
132
132
  >
133
- <USkeleton class="size-4 rounded-full" />
134
- <USkeleton class="h-3 w-64 max-w-[60%]" />
135
- <USkeleton class="ms-auto h-6 w-24" />
133
+ <USkeleton
134
+ :aria-label="t('dms.a11y.loading')"
135
+ class="size-4 rounded-full"
136
+ />
137
+ <USkeleton
138
+ :aria-label="t('dms.a11y.loading')"
139
+ class="h-3 w-64 max-w-[60%]"
140
+ />
141
+ <USkeleton :aria-label="t('dms.a11y.loading')" class="ms-auto h-6 w-24" />
136
142
  </div>
137
143
  </template>
@@ -169,7 +169,11 @@ function toggle(roleId: string) {
169
169
 
170
170
  <template>
171
171
  <div class="flex flex-col gap-1.5">
172
- <USkeleton v-if="isLoading" class="h-7 w-48 rounded-full" />
172
+ <USkeleton
173
+ :aria-label="t('dms.a11y.loading')"
174
+ v-if="isLoading"
175
+ class="h-7 w-48 rounded-full"
176
+ />
173
177
  <span
174
178
  v-else-if="options.roles.length === 0"
175
179
  class="text-dimmed text-[12.5px]"
@@ -292,6 +292,7 @@ onMounted(async () => {
292
292
  {{ saved.email }}
293
293
  </span>
294
294
  <USkeleton
295
+ :aria-label="t('dms.a11y.loading')"
295
296
  v-if="!isProfileLoaded"
296
297
  aria-hidden="true"
297
298
  class="h-5 w-[74px] shrink-0 rounded-md"
@@ -52,6 +52,8 @@ defineSlots<{
52
52
  /** The summary, after the lead. */
53
53
  default?: () => unknown;
54
54
  }>();
55
+
56
+ const { t } = useI18n();
55
57
  </script>
56
58
 
57
59
  <template>
@@ -62,6 +64,7 @@ defineSlots<{
62
64
  class="border-muted flex flex-wrap items-center gap-3.5 border-t px-[18px] py-3.5 first:border-t-0"
63
65
  >
64
66
  <USkeleton
67
+ :aria-label="t('dms.a11y.loading')"
65
68
  v-if="props.loading"
66
69
  aria-hidden="true"
67
70
  class="size-8 shrink-0 rounded-[9px]"
@@ -78,6 +81,7 @@ defineSlots<{
78
81
  </template>
79
82
  <!-- Transparent text on a 12px bar per line it wraps to. -->
80
83
  <USkeleton
84
+ :aria-label="t('dms.a11y.loading')"
81
85
  v-if="props.loading"
82
86
  as="span"
83
87
  aria-hidden="true"
@@ -380,7 +380,7 @@ function toggleArea(id: string): void {
380
380
  />
381
381
 
382
382
  <DmsSaveBar
383
- class="mx-3 mb-3"
383
+ class="mx-3"
384
384
  :dirty="props.dirty"
385
385
  :saving="props.saving"
386
386
  :changes="props.changes"
@@ -271,7 +271,10 @@ async function cancelChange(): Promise<void> {
271
271
  <!-- A badge's height (the address line carries one) holds the
272
272
  line while the address loads. -->
273
273
  <span v-if="!email" aria-hidden="true" class="flex h-5">
274
- <USkeleton class="my-auto h-3.5 w-40" />
274
+ <USkeleton
275
+ :aria-label="t('dms.a11y.loading')"
276
+ class="my-auto h-3.5 w-40"
277
+ />
275
278
  </span>
276
279
  <span v-else class="break-all">{{ email }}</span>
277
280
  <UBadge
@@ -211,7 +211,10 @@ async function submit(): Promise<void> {
211
211
  {{ t("page.settings.security.password.label") }}
212
212
  <template #meta>
213
213
  <span v-if="!overview" aria-hidden="true" class="flex h-[1lh]">
214
- <USkeleton class="my-auto h-2.5 w-52" />
214
+ <USkeleton
215
+ :aria-label="t('dms.a11y.loading')"
216
+ class="my-auto h-2.5 w-52"
217
+ />
215
218
  </span>
216
219
  <template v-else-if="!hasPassword">
217
220
  <span>{{ t("page.settings.security.password.not_set") }}</span>
@@ -192,6 +192,7 @@ onMounted(loadSessions);
192
192
 
193
193
  <div v-if="isLoading" class="grid gap-3 px-[18px] py-4">
194
194
  <USkeleton
195
+ :aria-label="t('dms.a11y.loading')"
195
196
  v-for="index in SKELETON_COUNT"
196
197
  :key="index"
197
198
  class="h-10 w-full"
@@ -398,6 +398,7 @@ async function markSaved(): Promise<void> {
398
398
  >
399
399
  <template #badge>
400
400
  <USkeleton
401
+ :aria-label="t('dms.a11y.loading')"
401
402
  v-if="!status"
402
403
  aria-hidden="true"
403
404
  class="h-5 w-12 rounded-full"
@@ -419,11 +420,17 @@ async function markSaved(): Promise<void> {
419
420
  <template #label>
420
421
  <DmsListRow bare>
421
422
  <span class="flex h-[1lh]">
422
- <USkeleton class="my-auto h-3 w-36" />
423
+ <USkeleton
424
+ :aria-label="t('dms.a11y.loading')"
425
+ class="my-auto h-3 w-36"
426
+ />
423
427
  </span>
424
428
  <template #meta>
425
429
  <span class="flex h-[1lh]">
426
- <USkeleton class="my-auto h-2.5 w-64 max-w-full" />
430
+ <USkeleton
431
+ :aria-label="t('dms.a11y.loading')"
432
+ class="my-auto h-2.5 w-64 max-w-full"
433
+ />
427
434
  </span>
428
435
  </template>
429
436
  </DmsListRow>
@@ -518,8 +525,16 @@ async function markSaved(): Promise<void> {
518
525
  </template>
519
526
 
520
527
  <template v-if="!status" #footer>
521
- <USkeleton aria-hidden="true" class="h-3 w-56" />
522
- <USkeleton aria-hidden="true" class="ms-auto h-7 w-36" />
528
+ <USkeleton
529
+ :aria-label="t('dms.a11y.loading')"
530
+ aria-hidden="true"
531
+ class="h-3 w-56"
532
+ />
533
+ <USkeleton
534
+ :aria-label="t('dms.a11y.loading')"
535
+ aria-hidden="true"
536
+ class="ms-auto h-7 w-36"
537
+ />
523
538
  </template>
524
539
  <template v-else #footer>
525
540
  <span class="flex items-center gap-1.5 text-xs">
@@ -25,6 +25,7 @@ const { t } = useI18n();
25
25
  <!-- The variables are read after mount: a placeholder holds
26
26
  the count's place until then. -->
27
27
  <USkeleton
28
+ :aria-label="t('dms.a11y.loading')"
28
29
  v-if="cssVariableCount === null"
29
30
  aria-hidden="true"
30
31
  class="inline-block h-2.5 w-20 align-middle"
@@ -224,9 +224,12 @@ onBeforeUnmount(() => {
224
224
  :key="i"
225
225
  class="border-muted grid h-10 grid-cols-[22px_minmax(0,1.2fr)_minmax(0,1fr)_90px] items-center gap-3 ps-[18px] pe-3 not-first:border-t"
226
226
  >
227
- <USkeleton class="size-[18px] rounded-[5px]" />
228
- <USkeleton class="h-3 w-40" />
229
- <USkeleton class="h-3 w-32" />
227
+ <USkeleton
228
+ :aria-label="t('dms.a11y.loading')"
229
+ class="size-[18px] rounded-[5px]"
230
+ />
231
+ <USkeleton :aria-label="t('dms.a11y.loading')" class="h-3 w-40" />
232
+ <USkeleton :aria-label="t('dms.a11y.loading')" class="h-3 w-32" />
230
233
  <span />
231
234
  </div>
232
235
  </div>
@@ -419,12 +419,27 @@ const summaryCards = computed<StatGroupItem[]>(() =>
419
419
  class="flex min-h-[228px] flex-col gap-3 p-4"
420
420
  >
421
421
  <div class="flex items-start justify-between">
422
- <USkeleton class="size-9 rounded-[10px]" />
423
- <USkeleton class="h-5 w-12 rounded-full" />
422
+ <USkeleton
423
+ :aria-label="t('dms.a11y.loading')"
424
+ class="size-9 rounded-[10px]"
425
+ />
426
+ <USkeleton
427
+ :aria-label="t('dms.a11y.loading')"
428
+ class="h-5 w-12 rounded-full"
429
+ />
424
430
  </div>
425
- <USkeleton class="h-2.5 w-4/5" />
426
- <USkeleton class="h-2.5 w-3/5" />
427
- <USkeleton class="mt-auto h-4 w-2/5" />
431
+ <USkeleton
432
+ :aria-label="t('dms.a11y.loading')"
433
+ class="h-2.5 w-4/5"
434
+ />
435
+ <USkeleton
436
+ :aria-label="t('dms.a11y.loading')"
437
+ class="h-2.5 w-3/5"
438
+ />
439
+ <USkeleton
440
+ :aria-label="t('dms.a11y.loading')"
441
+ class="mt-auto h-4 w-2/5"
442
+ />
428
443
  </DmsCard>
429
444
  </div>
430
445
 
@@ -22,6 +22,8 @@ const PERCENT_UNIT = "%";
22
22
  const RING_SIZE = "min(78%, 16rem)";
23
23
  const RING_HOLE_MASK =
24
24
  "radial-gradient(circle, transparent 54%, #000 calc(54% + 1px))";
25
+
26
+ const { t } = useI18n();
25
27
  </script>
26
28
 
27
29
  <template>
@@ -32,6 +34,7 @@ const RING_HOLE_MASK =
32
34
  aria-busy="true"
33
35
  >
34
36
  <USkeleton
37
+ :aria-label="t('dms.a11y.loading')"
35
38
  class="aspect-square rounded-full"
36
39
  :style="{
37
40
  height: RING_SIZE,
@@ -47,6 +50,7 @@ const RING_HOLE_MASK =
47
50
  aria-busy="true"
48
51
  >
49
52
  <USkeleton
53
+ :aria-label="t('dms.a11y.loading')"
50
54
  v-for="(barHeight, index) in GHOST_BAR_HEIGHTS"
51
55
  :key="index"
52
56
  class="flex-1 rounded-t-[4px] rounded-b-none"
@@ -115,6 +115,8 @@ function onContentPending() {
115
115
  function onContentResolve() {
116
116
  isContentLoading.value = false;
117
117
  }
118
+
119
+ const { t } = useI18n();
118
120
  </script>
119
121
 
120
122
  <template>
@@ -191,8 +193,14 @@ function onContentResolve() {
191
193
  :key="field"
192
194
  class="flex flex-col gap-2"
193
195
  >
194
- <USkeleton class="h-3 w-24" />
195
- <USkeleton class="h-8 w-full" />
196
+ <USkeleton
197
+ :aria-label="t('dms.a11y.loading')"
198
+ class="h-3 w-24"
199
+ />
200
+ <USkeleton
201
+ :aria-label="t('dms.a11y.loading')"
202
+ class="h-8 w-full"
203
+ />
196
204
  </div>
197
205
  </div>
198
206
  </template>
@@ -137,6 +137,8 @@ function onContentPending() {
137
137
  function onContentResolve() {
138
138
  isContentLoading.value = false;
139
139
  }
140
+
141
+ const { t } = useI18n();
140
142
  </script>
141
143
 
142
144
  <template>
@@ -205,8 +207,11 @@ function onContentResolve() {
205
207
  :key="field"
206
208
  class="flex flex-col gap-2"
207
209
  >
208
- <USkeleton class="h-3 w-24" />
209
- <USkeleton class="h-8 w-full" />
210
+ <USkeleton :aria-label="t('dms.a11y.loading')" class="h-3 w-24" />
211
+ <USkeleton
212
+ :aria-label="t('dms.a11y.loading')"
213
+ class="h-8 w-full"
214
+ />
210
215
  </div>
211
216
  </div>
212
217
  </template>