Repository navigation
[AIDAPP-1595]: Improve the user interface of advisories in the portal - #172
Conversation
- Introduced BaseCalloutMeta, BaseInputError, BaseSearchInput, BaseSection, BaseSelect, BaseStatCard, BaseTable, BaseTableBody, BaseTableCell, BaseTableCellText, BaseTableHeader, BaseTableHeaderCell, BaseTableLoadingState, BaseTableRow components. - Enhanced EmptyState and PageCard components with updated styles. - Improved Pagination component with consistent button styles. - Added Tabs component with badge support and accessibility attributes.
There was a problem hiding this comment.
🟡 Changes recommended
Native control attributes, keyboard accessibility, loading announcements, and section visibility need correction.
5 open findings
What changed in this PR
Adds shared Vue components for portal advisory interfaces, reducing app-local duplication and standardizing styling.
Changes:
- Introduces reusable tables, form controls, sections, callouts, and statistics cards.
- Adds tab badges and accessibility markup, plus additional badge colors.
- Aligns portal components with tenant-themed rounding.
| File | Description |
|---|---|
| resources/js/components/portal/Tabs.vue | Adds badges and tab accessibility markup. |
| resources/js/components/portal/Pagination.vue | Updates control rounding. |
| resources/js/components/portal/PageCard.vue | Updates rounding and shadow. |
| resources/js/components/portal/EmptyState.vue | Applies themed container rounding. |
| resources/js/components/BaseTableRow.vue | Adds animated table rows. |
| resources/js/components/BaseTableLoadingState.vue | Adds loading skeletons. |
| resources/js/components/BaseTableHeaderCell.vue | Adds sortable column headers. |
| resources/js/components/BaseTableHeader.vue | Provides styled table headers. |
| resources/js/components/BaseTableCellText.vue | Adds line-clamped cell text. |
| resources/js/components/BaseTableCell.vue | Standardizes cell spacing. |
| resources/js/components/BaseTableBody.vue | Provides styled table bodies. |
| resources/js/components/BaseTable.vue | Adds table layout and state slots. |
| resources/js/components/BaseStatCard.vue | Displays summary statistics. |
| resources/js/components/BaseSelect.vue | Adds a styled select control. |
| resources/js/components/BaseSection.vue | Adds section headings and actions. |
| resources/js/components/BaseSearchInput.vue | Adds debounced search input. |
| resources/js/components/BaseInputError.vue | Displays validation alerts. |
| resources/js/components/BaseCalloutMeta.vue | Displays callout metadata. |
| resources/js/components/BaseCallout.vue | Adds configurable advisory callouts. |
| resources/js/components/BaseBadge.vue | Expands colors and adds optional dots. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
danharrin
left a comment
There was a problem hiding this comment.
A few small things before we release it:
- Tone colours: please match the app's Filament panel colours (success green, warning amber, danger red, info blue).
- In
BaseBadge, changeinfofrom sky to blue. - In
BaseCallout, changewarningfrom orange to amber (surface and icon).
- In
- Table alignment: the toolbar is
px-4 sm:px-6, cells arepx-4andPaginationispx-6. So fromsmup the search box and pagination text sit 8px further in than the first column, and on mobile the pagination is off instead. Could you:- add
sm:first:ps-6 sm:last:pe-6toBaseTableHeaderCellandBaseTableCell, and - change
Paginationtopx-4 sm:px-6?
- add
- Callout role: please default
BaseCallouttorole="note"instead ofrole="status". Most callouts are static. Callers whose content updates live, like the service status summary banner, can passrole="status"to change it. BaseTableLoadingStaterenders itssr-onlyspan inside the<table>, which is invalid HTML.:aria-label="label"on theBaseTablewould avoid that.
…ommon into feature/portal-design-system
Thanks, all four are done:
One note: |

Ticket(s) or GitHub Issue
Technical Description
BaseSection(heading, description, icon,#actionsslot);BaseTablefamily, with#toolbar,#footerand#emptyslots, aloadingstate, sortable header cells and CSS line-clamp cell text;BaseSelect,BaseSearchInput(with a debounce prop) andBaseInputError(role="alert");BaseCalloutwithBaseCalloutMeta(success, warning, danger, info and neutral tones, insmandlgsizes);BaseStatCard.Tabsgained an optional per-tab count badge,labelandidPrefix, plus full tab accessibility markup (tablist,tab,aria-selected,aria-controls).BaseBadgenow supports everyColorenum case (addsblack,light-gray,dark-grayandnavy), gained an optionaldot, and uses themedrounded.PageCard,EmptyState,TabsandPaginationwith the themed rounding scale (rounded-lgfor containers,rounded-mdfor controls), so they respect the tenant's rounding setting instead of fixedrounded-xl.PageCardshadow.Any deployment steps required?
Are any Feature Flags and/or Data Migrations that can eventually be removed Added?
Before contributing and submitting this PR, make sure you have Read, agree, and are compliant with the contributing guidelines.