From 20acd1fde1a9aada69b721097d51ce08429ab948 Mon Sep 17 00:00:00 2001 From: Andrea Leardini Date: Mon, 27 Apr 2026 10:49:33 +0200 Subject: [PATCH 01/11] fix: email style in org detail --- frontend/src/components/customers/CustomerInfoCard.vue | 1 + frontend/src/components/distributors/DistributorInfoCard.vue | 1 + frontend/src/components/resellers/ResellerInfoCard.vue | 1 + 3 files changed, 3 insertions(+) diff --git a/frontend/src/components/customers/CustomerInfoCard.vue b/frontend/src/components/customers/CustomerInfoCard.vue index 41abbd4a0..06c47687e 100644 --- a/frontend/src/components/customers/CustomerInfoCard.vue +++ b/frontend/src/components/customers/CustomerInfoCard.vue @@ -113,6 +113,7 @@ function getKebabMenuItems() { :href="`mailto:${customerDetail.data.custom_data.email}`" target="_blank" rel="noopener noreferrer" + class="break-all" > {{ customerDetail.data.custom_data.email }} diff --git a/frontend/src/components/distributors/DistributorInfoCard.vue b/frontend/src/components/distributors/DistributorInfoCard.vue index 0bf61e279..dfcea909a 100644 --- a/frontend/src/components/distributors/DistributorInfoCard.vue +++ b/frontend/src/components/distributors/DistributorInfoCard.vue @@ -113,6 +113,7 @@ function getKebabMenuItems() { :href="`mailto:${distributorDetail.data.custom_data.email}`" target="_blank" rel="noopener noreferrer" + class="break-all" > {{ distributorDetail.data.custom_data.email }} diff --git a/frontend/src/components/resellers/ResellerInfoCard.vue b/frontend/src/components/resellers/ResellerInfoCard.vue index a09457ecc..1099fe96d 100644 --- a/frontend/src/components/resellers/ResellerInfoCard.vue +++ b/frontend/src/components/resellers/ResellerInfoCard.vue @@ -113,6 +113,7 @@ function getKebabMenuItems() { :href="`mailto:${resellerDetail.data.custom_data.email}`" target="_blank" rel="noopener noreferrer" + class="break-all" > {{ resellerDetail.data.custom_data.email }} From 1b5b25082ec6603a98d152fc490a209921bd9774 Mon Sep 17 00:00:00 2001 From: Andrea Leardini Date: Mon, 27 Apr 2026 10:51:24 +0200 Subject: [PATCH 02/11] chore(agents): add Frontend & Accessibility agent --- .../agents/frontend-accessibility.agent.md | 255 ++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 .github/agents/frontend-accessibility.agent.md diff --git a/.github/agents/frontend-accessibility.agent.md b/.github/agents/frontend-accessibility.agent.md new file mode 100644 index 000000000..e3766ed3e --- /dev/null +++ b/.github/agents/frontend-accessibility.agent.md @@ -0,0 +1,255 @@ +--- +description: "Use when working on Vue 3 frontend code with a focus on accessibility, WCAG compliance, ARIA attributes, keyboard navigation, screen reader support, semantic HTML, color contrast, UX patterns, user flows, interaction design, form usability, empty states, loading states, error states, Tailwind CSS, design systems, @nethesis/vue-components, Pinia, Pinia Colada, defineQuery, useMutation, valibot schemas, or auditing UI components for a11y or UX issues. Trigger phrases: accessibility, a11y, WCAG, ARIA, screen reader, keyboard navigation, focus management, color contrast, UX, user experience, interaction design, usability, form design, empty state, loading state, error state, Tailwind, design system, component, query, mutation, Pinia Colada." +name: "Frontend & Accessibility Specialist" +tools: [read, edit, search, todo, execute, web] +commands: + - name: a11y-fix + description: Audit and fix WCAG accessibility issues in a Vue component or view + - name: design-check + description: Verify a Vue component or view aligns with the design system conventions +--- + +You are a senior frontend engineer and UX/design-system specialist with deep expertise in Vue 3, TypeScript, Tailwind CSS v4, Pinia Colada, and the `@nethesis/vue-components` library. You also hold strong accessibility knowledge (WCAG 2.1/2.2 AA, ARIA patterns, keyboard navigation). You always apply this knowledge within the conventions of this specific codebase. + +## Codebase Context + +### Framework & Language +- **Vue 3** — always ` + + diff --git a/frontend/src/components/users/ImportUsersPreviewTable.vue b/frontend/src/components/users/ImportUsersPreviewTable.vue new file mode 100644 index 000000000..2bca2a8ef --- /dev/null +++ b/frontend/src/components/users/ImportUsersPreviewTable.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/frontend/src/components/users/UsersTable.vue b/frontend/src/components/users/UsersTable.vue index aa4eebe0f..7d10d773a 100644 --- a/frontend/src/components/users/UsersTable.vue +++ b/frontend/src/components/users/UsersTable.vue @@ -448,7 +448,7 @@ const onClosePasswordChangedModal = () => { :sort-key="sortBy" :sort-descending="sortDescending" :aria-label="$t('users.title')" - card-breakpoint="xl" + card-breakpoint="2xl" :loading="state.status === 'pending'" :skeleton-columns="5" :skeleton-rows="7" @@ -486,7 +486,7 @@ const onClosePasswordChangedModal = () => { {{ item.email }} @@ -561,7 +561,7 @@ const onClosePasswordChangedModal = () => { -
+
@@ -323,10 +332,10 @@ function errorSummaryText(row: ImportRow): string {