@maggioli-design-system/magma-react 2.8.0 → 2.10.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.
- package/AGENTS.md +10 -7
- package/CHANGELOG.md +108 -0
- package/README.md +38 -0
- package/agents/assets.md +1 -1
- package/agents/color.md +5 -3
- package/agents/components.md +2 -2
- package/agents/conventions.md +1 -1
- package/agents/mcp.md +78 -8
- package/agents/{anti-patterns.md → mistakes.md} +2 -2
- package/agents/patterns/actions.md +393 -0
- package/agents/patterns/app-shell.md +223 -0
- package/agents/patterns/choose-items.md +18 -0
- package/agents/patterns/concurrent-editing.md +17 -0
- package/agents/patterns/confirm-action.md +216 -0
- package/agents/patterns/consent-and-legal.md +16 -0
- package/agents/patterns/density.md +236 -0
- package/agents/patterns/empty-state.md +201 -0
- package/agents/patterns/error-recovery.md +237 -0
- package/agents/patterns/form-and-validation.md +16 -0
- package/agents/patterns/item-list.md +214 -0
- package/agents/patterns/labels-and-values.md +184 -0
- package/agents/patterns/list-with-filters.md +282 -0
- package/agents/patterns/loading.md +221 -0
- package/agents/patterns/message-placement.md +304 -0
- package/agents/patterns/notification-center.md +18 -0
- package/agents/patterns/page-header.md +201 -0
- package/agents/patterns/permissions.md +17 -0
- package/agents/patterns/previews/actions/banner.html +21 -0
- package/agents/patterns/previews/actions/confirm.html +11 -0
- package/agents/patterns/previews/actions/danger-zone.html +22 -0
- package/agents/patterns/previews/actions/destructive-in-menu.html +19 -0
- package/agents/patterns/previews/actions/dismiss-message.html +15 -0
- package/agents/patterns/previews/actions/dismiss.html +25 -0
- package/agents/patterns/previews/actions/more-in-menu.html +21 -0
- package/agents/patterns/previews/actions/part-primary.html +28 -0
- package/agents/patterns/previews/actions/primary.html +20 -0
- package/agents/patterns/previews/actions/remove.html +44 -0
- package/agents/patterns/previews/actions/secondary.html +20 -0
- package/agents/patterns/previews/actions/stacked.html +17 -0
- package/agents/patterns/previews/actions/toast.html +10 -0
- package/agents/patterns/previews/app-shell/back-office.html +41 -0
- package/agents/patterns/previews/app-shell/many-sections.html +45 -0
- package/agents/patterns/previews/app-shell/public-service.html +31 -0
- package/agents/patterns/previews/confirm-action/act-then-undo.html +44 -0
- package/agents/patterns/previews/confirm-action/ask-before-sending.html +25 -0
- package/agents/patterns/previews/confirm-action/ask-first-many.html +11 -0
- package/agents/patterns/previews/confirm-action/ask-first.html +14 -0
- package/agents/patterns/previews/confirm-action/make-reversible.html +54 -0
- package/agents/patterns/previews/confirm-action/send-as-shown.html +57 -0
- package/agents/patterns/previews/empty-state/add-the-first.html +19 -0
- package/agents/patterns/previews/empty-state/all-done.html +15 -0
- package/agents/patterns/previews/empty-state/clear-filters.html +35 -0
- package/agents/patterns/previews/empty-state/filled-by-others.html +15 -0
- package/agents/patterns/previews/empty-state/not-found.html +38 -0
- package/agents/patterns/previews/empty-state/one-line.html +12 -0
- package/agents/patterns/previews/error-recovery/action-another-way.html +35 -0
- package/agents/patterns/previews/error-recovery/changed-meanwhile.html +26 -0
- package/agents/patterns/previews/error-recovery/check-or-repeat.html +38 -0
- package/agents/patterns/previews/error-recovery/content-another-way.html +12 -0
- package/agents/patterns/previews/error-recovery/partial.html +29 -0
- package/agents/patterns/previews/error-recovery/retry-action.html +35 -0
- package/agents/patterns/previews/error-recovery/retry-content.html +40 -0
- package/agents/patterns/previews/error-recovery/sign-in-again.html +44 -0
- package/agents/patterns/previews/item-list/documents-of-a-request.html +12 -0
- package/agents/patterns/previews/item-list/queue-of-a-desk.html +109 -0
- package/agents/patterns/previews/item-list/requests-of-an-office.html +74 -0
- package/agents/patterns/previews/item-list/requests-to-assign.html +80 -0
- package/agents/patterns/previews/labels-and-values/data-of-a-contact.html +31 -0
- package/agents/patterns/previews/labels-and-values/payment-before-paying.html +21 -0
- package/agents/patterns/previews/labels-and-values/what-is-sent.html +25 -0
- package/agents/patterns/previews/list-with-filters/act-on-many.html +121 -0
- package/agents/patterns/previews/list-with-filters/find-and-open.html +109 -0
- package/agents/patterns/previews/list-with-filters/show-new-items.html +132 -0
- package/agents/patterns/previews/loading/await-and-say.html +41 -0
- package/agents/patterns/previews/loading/await-the-control.html +28 -0
- package/agents/patterns/previews/loading/first-load.html +10 -0
- package/agents/patterns/previews/loading/keep-while-reloading.html +80 -0
- package/agents/patterns/previews/loading/long-load-measured.html +16 -0
- package/agents/patterns/previews/loading/long-load.html +12 -0
- package/agents/patterns/previews/loading/progress-in-place.html +52 -0
- package/agents/patterns/previews/loading/run-in-background.html +24 -0
- package/agents/patterns/previews/message-placement/action-done-elsewhere.html +38 -0
- package/agents/patterns/previews/message-placement/action-done-in-page.html +53 -0
- package/agents/patterns/previews/message-placement/action-done-in-part.html +42 -0
- package/agents/patterns/previews/message-placement/action-failed-elsewhere.html +40 -0
- package/agents/patterns/previews/message-placement/action-failed-in-place.html +31 -0
- package/agents/patterns/previews/message-placement/action-later.html +24 -0
- package/agents/patterns/previews/message-placement/action-partial-elsewhere.html +33 -0
- package/agents/patterns/previews/message-placement/action-partial-in-place.html +51 -0
- package/agents/patterns/previews/message-placement/action-taken.html +25 -0
- package/agents/patterns/previews/message-placement/app-deadline.html +20 -0
- package/agents/patterns/previews/message-placement/app-failed.html +48 -0
- package/agents/patterns/previews/message-placement/app-info.html +39 -0
- package/agents/patterns/previews/message-placement/decision.html +49 -0
- package/agents/patterns/previews/message-placement/field-error.html +28 -0
- package/agents/patterns/previews/message-placement/field-hint.html +30 -0
- package/agents/patterns/previews/message-placement/field-valid.html +11 -0
- package/agents/patterns/previews/message-placement/region-failed.html +31 -0
- package/agents/patterns/previews/message-placement/region-info.html +16 -0
- package/agents/patterns/previews/page-header/contact-being-edited.html +25 -0
- package/agents/patterns/previews/page-header/members-of-a-group.html +18 -0
- package/agents/patterns/previews/page-header/own-profile.html +17 -0
- package/agents/patterns/previews/page-header/request-from-the-list.html +33 -0
- package/agents/patterns/previews/page-header/requests-of-an-office.html +16 -0
- package/agents/patterns/previews/record-detail/ask-for-words.html +72 -0
- package/agents/patterns/previews/record-detail/edit-data.html +104 -0
- package/agents/patterns/previews/record-detail/read-the-data.html +80 -0
- package/agents/patterns/previews/record-detail/record-changed.html +87 -0
- package/agents/patterns/previews/record-detail/run-at-once.html +88 -0
- package/agents/patterns/previews/record-detail/work-on-it.html +106 -0
- package/agents/patterns/previews/rhythm/between-containers.html +29 -0
- package/agents/patterns/previews/rhythm/between-fields.html +14 -0
- package/agents/patterns/previews/rhythm/between-groups.html +23 -0
- package/agents/patterns/previews/rhythm/between-sections.html +17 -0
- package/agents/patterns/previews/rhythm/content-actions.html +14 -0
- package/agents/patterns/previews/rhythm/inline.html +12 -0
- package/agents/patterns/previews/rhythm/inset.html +11 -0
- package/agents/patterns/previews/rhythm/label-control.html +8 -0
- package/agents/patterns/previews/rhythm/title-content.html +10 -0
- package/agents/patterns/previews/surfaces/band.html +73 -0
- package/agents/patterns/previews/surfaces/canvas.html +66 -0
- package/agents/patterns/previews/surfaces/card.html +30 -0
- package/agents/patterns/previews/surfaces/dialog.html +28 -0
- package/agents/patterns/previews/surfaces/edit-actions.html +35 -0
- package/agents/patterns/previews/surfaces/section.html +35 -0
- package/agents/patterns/previews/titles/dialog.html +18 -0
- package/agents/patterns/previews/titles/group.html +14 -0
- package/agents/patterns/previews/titles/page.html +25 -0
- package/agents/patterns/previews/titles/part.html +24 -0
- package/agents/patterns/previews/titles/section.html +14 -0
- package/agents/patterns/previews/widths/dialog.html +33 -0
- package/agents/patterns/previews/widths/field.html +20 -0
- package/agents/patterns/previews/widths/form.html +27 -0
- package/agents/patterns/previews/widths/page.html +49 -0
- package/agents/patterns/previews/widths/reading.html +15 -0
- package/agents/patterns/record-detail.md +268 -0
- package/agents/patterns/rhythm.md +212 -0
- package/agents/patterns/surfaces.md +212 -0
- package/agents/patterns/titles.md +208 -0
- package/agents/patterns/widths.md +202 -0
- package/agents/patterns.md +121 -0
- package/agents/reporting.md +6 -3
- package/agents/theming.md +22 -3
- package/agents/typography.md +27 -2
- package/agents/variants.md +1 -1
- package/dist/components.js +117 -117
- package/dist/components.server.js +117 -117
- package/dist/mds-accordion-item.js +8 -3
- package/dist/mds-accordion-item.server.js +7 -2
- package/dist/mds-accordion-timer-item.js +8 -3
- package/dist/mds-accordion-timer-item.server.js +7 -2
- package/dist/mds-accordion-timer.js +11 -4
- package/dist/mds-accordion-timer.server.js +7 -2
- package/dist/mds-accordion.js +11 -4
- package/dist/mds-accordion.server.js +7 -2
- package/dist/mds-author.js +8 -3
- package/dist/mds-author.server.js +7 -2
- package/dist/mds-avatar-stack-item.js +8 -3
- package/dist/mds-avatar-stack-item.server.js +7 -2
- package/dist/mds-avatar-stack.js +8 -3
- package/dist/mds-avatar-stack.server.js +7 -2
- package/dist/mds-avatar.js +8 -3
- package/dist/mds-avatar.server.js +7 -2
- package/dist/mds-badge.js +8 -3
- package/dist/mds-badge.server.js +7 -2
- package/dist/mds-banner.js +11 -4
- package/dist/mds-banner.server.js +7 -2
- package/dist/mds-benchmark-bar.js +8 -3
- package/dist/mds-benchmark-bar.server.js +7 -2
- package/dist/mds-bibliography.js +8 -3
- package/dist/mds-bibliography.server.js +7 -2
- package/dist/mds-book.js +8 -3
- package/dist/mds-book.server.js +8 -2
- package/dist/mds-breadcrumb-item.js +11 -4
- package/dist/mds-breadcrumb-item.server.js +7 -2
- package/dist/mds-breadcrumb.js +11 -4
- package/dist/mds-breadcrumb.server.js +10 -3
- package/dist/mds-button-dropdown.js +11 -4
- package/dist/mds-button-dropdown.server.js +7 -2
- package/dist/mds-button-group.js +8 -3
- package/dist/mds-button-group.server.js +7 -2
- package/dist/mds-button.js +8 -3
- package/dist/mds-button.server.js +7 -2
- package/dist/mds-calendar-cell.js +8 -3
- package/dist/mds-calendar-cell.server.js +7 -2
- package/dist/mds-calendar.js +8 -3
- package/dist/mds-calendar.server.js +7 -2
- package/dist/mds-card-content.js +8 -3
- package/dist/mds-card-content.server.js +7 -2
- package/dist/mds-card-footer.js +8 -3
- package/dist/mds-card-footer.server.js +7 -2
- package/dist/mds-card-header.js +8 -3
- package/dist/mds-card-header.server.js +7 -2
- package/dist/mds-card-media.js +8 -3
- package/dist/mds-card-media.server.js +7 -2
- package/dist/mds-card.js +8 -3
- package/dist/mds-card.server.js +10 -3
- package/dist/mds-chip.js +8 -3
- package/dist/mds-chip.server.js +7 -2
- package/dist/mds-details.js +11 -4
- package/dist/mds-details.server.js +10 -3
- package/dist/mds-dropdown.js +8 -3
- package/dist/mds-dropdown.server.js +7 -2
- package/dist/mds-emoji.js +8 -3
- package/dist/mds-emoji.server.js +10 -3
- package/dist/mds-entity.js +8 -3
- package/dist/mds-entity.server.js +7 -2
- package/dist/mds-file-preview.js +8 -3
- package/dist/mds-file-preview.server.js +7 -2
- package/dist/mds-file.js +11 -4
- package/dist/mds-file.server.js +7 -2
- package/dist/mds-filter-item.js +11 -4
- package/dist/mds-filter-item.server.js +7 -2
- package/dist/mds-filter.js +11 -4
- package/dist/mds-filter.server.js +7 -2
- package/dist/mds-header-bar.js +11 -4
- package/dist/mds-header-bar.server.js +7 -2
- package/dist/mds-header.js +8 -3
- package/dist/mds-header.server.js +7 -2
- package/dist/mds-help.js +8 -3
- package/dist/mds-help.server.js +7 -2
- package/dist/mds-horizontal-scroll.js +8 -3
- package/dist/mds-horizontal-scroll.server.js +7 -2
- package/dist/mds-hr.js +8 -3
- package/dist/mds-hr.server.js +7 -2
- package/dist/mds-icon.js +8 -3
- package/dist/mds-icon.server.js +10 -3
- package/dist/mds-img.js +8 -3
- package/dist/mds-img.server.js +7 -2
- package/dist/mds-input-date-range-preselection.js +8 -3
- package/dist/mds-input-date-range-preselection.server.js +7 -2
- package/dist/mds-input-date-range.js +11 -4
- package/dist/mds-input-date-range.server.js +7 -2
- package/dist/mds-input-date.js +8 -3
- package/dist/mds-input-date.server.js +7 -2
- package/dist/mds-input-field.js +8 -3
- package/dist/mds-input-field.server.js +8 -2
- package/dist/mds-input-otp.js +8 -3
- package/dist/mds-input-otp.server.js +7 -2
- package/dist/mds-input-range.js +11 -4
- package/dist/mds-input-range.server.js +7 -2
- package/dist/mds-input-select.js +11 -4
- package/dist/mds-input-select.server.js +7 -2
- package/dist/mds-input-switch.js +11 -4
- package/dist/mds-input-switch.server.js +7 -2
- package/dist/mds-input-tip-item.js +8 -3
- package/dist/mds-input-tip-item.server.js +7 -2
- package/dist/mds-input-tip.js +8 -3
- package/dist/mds-input-tip.server.js +7 -2
- package/dist/mds-input-upload.js +11 -4
- package/dist/mds-input-upload.server.js +7 -2
- package/dist/mds-input.js +8 -3
- package/dist/mds-input.server.js +7 -2
- package/dist/mds-keyboard-key.js +8 -3
- package/dist/mds-keyboard-key.server.js +7 -2
- package/dist/mds-keyboard.js +8 -3
- package/dist/mds-keyboard.server.js +7 -2
- package/dist/mds-kpi-item.js +8 -3
- package/dist/mds-kpi-item.server.js +7 -2
- package/dist/mds-kpi.js +8 -3
- package/dist/mds-kpi.server.js +7 -2
- package/dist/mds-label.js +11 -4
- package/dist/mds-label.server.js +7 -2
- package/dist/mds-link.js +8 -3
- package/dist/mds-link.server.js +7 -2
- package/dist/mds-list-item.js +8 -3
- package/dist/mds-list-item.server.js +7 -2
- package/dist/mds-list.js +8 -3
- package/dist/mds-list.server.js +7 -2
- package/dist/mds-mention.js +11 -4
- package/dist/mds-mention.server.js +7 -2
- package/dist/mds-modal.js +8 -3
- package/dist/mds-modal.server.js +7 -2
- package/dist/mds-note.js +11 -4
- package/dist/mds-note.server.js +7 -2
- package/dist/mds-notification.js +8 -3
- package/dist/mds-notification.server.js +10 -3
- package/dist/mds-paginator-item.js +8 -3
- package/dist/mds-paginator-item.server.js +7 -2
- package/dist/mds-paginator.js +11 -4
- package/dist/mds-paginator.server.js +7 -2
- package/dist/mds-policy-ai.js +8 -3
- package/dist/mds-policy-ai.server.js +7 -2
- package/dist/mds-pref-animation.js +11 -4
- package/dist/mds-pref-animation.server.js +7 -2
- package/dist/mds-pref-consumption.js +11 -4
- package/dist/mds-pref-consumption.server.js +7 -2
- package/dist/mds-pref-contrast.js +11 -4
- package/dist/mds-pref-contrast.server.js +7 -2
- package/dist/mds-pref-language-item.js +11 -4
- package/dist/mds-pref-language-item.server.js +7 -2
- package/dist/mds-pref-language.js +8 -3
- package/dist/mds-pref-language.server.js +7 -2
- package/dist/mds-pref-mode.js +11 -4
- package/dist/mds-pref-mode.server.js +7 -2
- package/dist/mds-pref-theme-item.js +11 -4
- package/dist/mds-pref-theme-item.server.js +7 -2
- package/dist/mds-pref-theme.js +8 -3
- package/dist/mds-pref-theme.server.js +7 -2
- package/dist/mds-pref.js +8 -3
- package/dist/mds-pref.server.js +7 -2
- package/dist/mds-price-table-features-cell.js +8 -3
- package/dist/mds-price-table-features-cell.server.js +10 -3
- package/dist/mds-price-table-features-row.js +8 -3
- package/dist/mds-price-table-features-row.server.js +7 -2
- package/dist/mds-price-table-features.js +8 -3
- package/dist/mds-price-table-features.server.js +10 -3
- package/dist/mds-price-table-header.js +8 -3
- package/dist/mds-price-table-header.server.js +7 -2
- package/dist/mds-price-table-list-item.js +8 -3
- package/dist/mds-price-table-list-item.server.js +7 -2
- package/dist/mds-price-table-list.js +8 -3
- package/dist/mds-price-table-list.server.js +7 -2
- package/dist/mds-price-table.js +8 -3
- package/dist/mds-price-table.server.js +7 -2
- package/dist/mds-progress.js +8 -3
- package/dist/mds-progress.server.js +7 -2
- package/dist/mds-push-notification-item.js +11 -4
- package/dist/mds-push-notification-item.server.js +7 -2
- package/dist/mds-push-notification.js +8 -3
- package/dist/mds-push-notification.server.js +7 -2
- package/dist/mds-quote.js +8 -3
- package/dist/mds-quote.server.js +7 -2
- package/dist/mds-radial-menu-item.js +8 -3
- package/dist/mds-radial-menu-item.server.js +7 -2
- package/dist/mds-radial-menu.js +8 -3
- package/dist/mds-radial-menu.server.js +7 -2
- package/dist/mds-radial-progress.js +8 -3
- package/dist/mds-radial-progress.server.js +7 -2
- package/dist/mds-separator.js +8 -3
- package/dist/mds-separator.server.js +7 -2
- package/dist/mds-spinner.js +8 -3
- package/dist/mds-spinner.server.js +10 -3
- package/dist/mds-status-bar.js +8 -3
- package/dist/mds-status-bar.server.js +7 -2
- package/dist/mds-stepper-bar-item.js +11 -4
- package/dist/mds-stepper-bar-item.server.js +7 -2
- package/dist/mds-stepper-bar.js +11 -4
- package/dist/mds-stepper-bar.server.js +7 -2
- package/dist/mds-tab-bar-item.js +11 -4
- package/dist/mds-tab-bar-item.server.js +7 -2
- package/dist/mds-tab-bar.js +11 -4
- package/dist/mds-tab-bar.server.js +7 -2
- package/dist/mds-tab-item.js +8 -3
- package/dist/mds-tab-item.server.js +7 -2
- package/dist/mds-tab.js +11 -4
- package/dist/mds-tab.server.js +7 -2
- package/dist/mds-table-body.js +8 -3
- package/dist/mds-table-body.server.js +7 -2
- package/dist/mds-table-cell.js +8 -3
- package/dist/mds-table-cell.server.js +10 -3
- package/dist/mds-table-footer.js +8 -3
- package/dist/mds-table-footer.server.js +10 -3
- package/dist/mds-table-header-cell.js +11 -4
- package/dist/mds-table-header-cell.server.js +7 -2
- package/dist/mds-table-header.js +8 -3
- package/dist/mds-table-header.server.js +10 -3
- package/dist/mds-table-row.js +8 -3
- package/dist/mds-table-row.server.js +7 -2
- package/dist/mds-table.js +11 -4
- package/dist/mds-table.server.js +7 -2
- package/dist/mds-text.js +8 -3
- package/dist/mds-text.server.js +7 -2
- package/dist/mds-toast-region.js +8 -3
- package/dist/mds-toast-region.server.js +7 -2
- package/dist/mds-toast.js +11 -4
- package/dist/mds-toast.server.js +7 -2
- package/dist/mds-tooltip.js +8 -3
- package/dist/mds-tooltip.server.js +7 -2
- package/dist/mds-tree-item.js +8 -3
- package/dist/mds-tree-item.server.js +7 -2
- package/dist/mds-tree.js +8 -3
- package/dist/mds-tree.server.js +7 -2
- package/dist/mds-url-view.js +11 -4
- package/dist/mds-url-view.server.js +7 -2
- package/dist/mds-usage.js +8 -3
- package/dist/mds-usage.server.js +7 -2
- package/dist/mds-video-wall.js +8 -3
- package/dist/mds-video-wall.server.js +7 -2
- package/dist/mds-zero.js +8 -3
- package/dist/mds-zero.server.js +7 -2
- package/dist/types/components.d.ts +117 -117
- package/dist/types/components.server.d.ts +118 -118
- package/dist/types/mds-accordion-item.d.ts +4 -8
- package/dist/types/mds-accordion-item.server.d.ts +4 -4
- package/dist/types/mds-accordion-timer-item.d.ts +4 -8
- package/dist/types/mds-accordion-timer-item.server.d.ts +4 -4
- package/dist/types/mds-accordion-timer.d.ts +4 -8
- package/dist/types/mds-accordion-timer.server.d.ts +4 -4
- package/dist/types/mds-accordion.d.ts +4 -8
- package/dist/types/mds-accordion.server.d.ts +4 -4
- package/dist/types/mds-author.d.ts +2 -6
- package/dist/types/mds-author.server.d.ts +3 -3
- package/dist/types/mds-avatar-stack-item.d.ts +2 -6
- package/dist/types/mds-avatar-stack-item.server.d.ts +3 -3
- package/dist/types/mds-avatar-stack.d.ts +2 -6
- package/dist/types/mds-avatar-stack.server.d.ts +3 -3
- package/dist/types/mds-avatar.d.ts +2 -6
- package/dist/types/mds-avatar.server.d.ts +3 -3
- package/dist/types/mds-badge.d.ts +2 -6
- package/dist/types/mds-badge.server.d.ts +3 -3
- package/dist/types/mds-banner.d.ts +4 -8
- package/dist/types/mds-banner.server.d.ts +4 -4
- package/dist/types/mds-benchmark-bar.d.ts +2 -6
- package/dist/types/mds-benchmark-bar.server.d.ts +3 -3
- package/dist/types/mds-bibliography.d.ts +2 -6
- package/dist/types/mds-bibliography.server.d.ts +3 -3
- package/dist/types/mds-book.d.ts +2 -6
- package/dist/types/mds-book.server.d.ts +3 -3
- package/dist/types/mds-breadcrumb-item.d.ts +4 -8
- package/dist/types/mds-breadcrumb-item.server.d.ts +4 -4
- package/dist/types/mds-breadcrumb.d.ts +4 -8
- package/dist/types/mds-breadcrumb.server.d.ts +4 -4
- package/dist/types/mds-button-dropdown.d.ts +4 -8
- package/dist/types/mds-button-dropdown.server.d.ts +4 -4
- package/dist/types/mds-button-group.d.ts +2 -6
- package/dist/types/mds-button-group.server.d.ts +3 -3
- package/dist/types/mds-button.d.ts +2 -6
- package/dist/types/mds-button.server.d.ts +3 -3
- package/dist/types/mds-calendar-cell.d.ts +2 -6
- package/dist/types/mds-calendar-cell.server.d.ts +3 -3
- package/dist/types/mds-calendar.d.ts +4 -8
- package/dist/types/mds-calendar.server.d.ts +4 -4
- package/dist/types/mds-card-content.d.ts +2 -6
- package/dist/types/mds-card-content.server.d.ts +3 -3
- package/dist/types/mds-card-footer.d.ts +2 -6
- package/dist/types/mds-card-footer.server.d.ts +3 -3
- package/dist/types/mds-card-header.d.ts +2 -6
- package/dist/types/mds-card-header.server.d.ts +3 -3
- package/dist/types/mds-card-media.d.ts +2 -6
- package/dist/types/mds-card-media.server.d.ts +3 -3
- package/dist/types/mds-card.d.ts +2 -6
- package/dist/types/mds-card.server.d.ts +3 -3
- package/dist/types/mds-chip.d.ts +4 -8
- package/dist/types/mds-chip.server.d.ts +4 -4
- package/dist/types/mds-details.d.ts +4 -8
- package/dist/types/mds-details.server.d.ts +4 -4
- package/dist/types/mds-dropdown.d.ts +4 -8
- package/dist/types/mds-dropdown.server.d.ts +4 -4
- package/dist/types/mds-emoji.d.ts +2 -6
- package/dist/types/mds-emoji.server.d.ts +3 -3
- package/dist/types/mds-entity.d.ts +2 -6
- package/dist/types/mds-entity.server.d.ts +3 -3
- package/dist/types/mds-file-preview.d.ts +4 -8
- package/dist/types/mds-file-preview.server.d.ts +4 -4
- package/dist/types/mds-file.d.ts +4 -8
- package/dist/types/mds-file.server.d.ts +4 -4
- package/dist/types/mds-filter-item.d.ts +4 -8
- package/dist/types/mds-filter-item.server.d.ts +4 -4
- package/dist/types/mds-filter.d.ts +4 -8
- package/dist/types/mds-filter.server.d.ts +4 -4
- package/dist/types/mds-header-bar.d.ts +4 -8
- package/dist/types/mds-header-bar.server.d.ts +4 -4
- package/dist/types/mds-header.d.ts +4 -8
- package/dist/types/mds-header.server.d.ts +4 -4
- package/dist/types/mds-help.d.ts +2 -6
- package/dist/types/mds-help.server.d.ts +3 -3
- package/dist/types/mds-horizontal-scroll.d.ts +2 -6
- package/dist/types/mds-horizontal-scroll.server.d.ts +3 -3
- package/dist/types/mds-hr.d.ts +2 -6
- package/dist/types/mds-hr.server.d.ts +3 -3
- package/dist/types/mds-icon.d.ts +2 -6
- package/dist/types/mds-icon.server.d.ts +3 -3
- package/dist/types/mds-img.d.ts +4 -8
- package/dist/types/mds-img.server.d.ts +4 -4
- package/dist/types/mds-input-date-range-preselection.d.ts +2 -6
- package/dist/types/mds-input-date-range-preselection.server.d.ts +3 -3
- package/dist/types/mds-input-date-range.d.ts +4 -8
- package/dist/types/mds-input-date-range.server.d.ts +4 -4
- package/dist/types/mds-input-date.d.ts +4 -8
- package/dist/types/mds-input-date.server.d.ts +4 -4
- package/dist/types/mds-input-field.d.ts +2 -6
- package/dist/types/mds-input-field.server.d.ts +3 -3
- package/dist/types/mds-input-otp.d.ts +2 -6
- package/dist/types/mds-input-otp.server.d.ts +3 -3
- package/dist/types/mds-input-range.d.ts +4 -8
- package/dist/types/mds-input-range.server.d.ts +4 -4
- package/dist/types/mds-input-select.d.ts +4 -8
- package/dist/types/mds-input-select.server.d.ts +4 -4
- package/dist/types/mds-input-switch.d.ts +4 -8
- package/dist/types/mds-input-switch.server.d.ts +4 -4
- package/dist/types/mds-input-tip-item.d.ts +2 -6
- package/dist/types/mds-input-tip-item.server.d.ts +3 -3
- package/dist/types/mds-input-tip.d.ts +2 -6
- package/dist/types/mds-input-tip.server.d.ts +3 -3
- package/dist/types/mds-input-upload.d.ts +4 -8
- package/dist/types/mds-input-upload.server.d.ts +4 -4
- package/dist/types/mds-input.d.ts +4 -8
- package/dist/types/mds-input.server.d.ts +4 -4
- package/dist/types/mds-keyboard-key.d.ts +2 -6
- package/dist/types/mds-keyboard-key.server.d.ts +3 -3
- package/dist/types/mds-keyboard.d.ts +2 -6
- package/dist/types/mds-keyboard.server.d.ts +3 -3
- package/dist/types/mds-kpi-item.d.ts +2 -6
- package/dist/types/mds-kpi-item.server.d.ts +3 -3
- package/dist/types/mds-kpi.d.ts +2 -6
- package/dist/types/mds-kpi.server.d.ts +3 -3
- package/dist/types/mds-label.d.ts +4 -8
- package/dist/types/mds-label.server.d.ts +4 -4
- package/dist/types/mds-link.d.ts +2 -6
- package/dist/types/mds-link.server.d.ts +3 -3
- package/dist/types/mds-list-item.d.ts +2 -6
- package/dist/types/mds-list-item.server.d.ts +3 -3
- package/dist/types/mds-list.d.ts +2 -6
- package/dist/types/mds-list.server.d.ts +3 -3
- package/dist/types/mds-mention.d.ts +4 -8
- package/dist/types/mds-mention.server.d.ts +4 -4
- package/dist/types/mds-modal.d.ts +4 -8
- package/dist/types/mds-modal.server.d.ts +4 -4
- package/dist/types/mds-note.d.ts +4 -8
- package/dist/types/mds-note.server.d.ts +4 -4
- package/dist/types/mds-notification.d.ts +2 -6
- package/dist/types/mds-notification.server.d.ts +3 -3
- package/dist/types/mds-paginator-item.d.ts +2 -6
- package/dist/types/mds-paginator-item.server.d.ts +3 -3
- package/dist/types/mds-paginator.d.ts +4 -8
- package/dist/types/mds-paginator.server.d.ts +4 -4
- package/dist/types/mds-policy-ai.d.ts +2 -6
- package/dist/types/mds-policy-ai.server.d.ts +3 -3
- package/dist/types/mds-pref-animation.d.ts +4 -8
- package/dist/types/mds-pref-animation.server.d.ts +4 -4
- package/dist/types/mds-pref-consumption.d.ts +4 -8
- package/dist/types/mds-pref-consumption.server.d.ts +4 -4
- package/dist/types/mds-pref-contrast.d.ts +4 -8
- package/dist/types/mds-pref-contrast.server.d.ts +4 -4
- package/dist/types/mds-pref-language-item.d.ts +4 -8
- package/dist/types/mds-pref-language-item.server.d.ts +4 -4
- package/dist/types/mds-pref-language.d.ts +4 -8
- package/dist/types/mds-pref-language.server.d.ts +4 -4
- package/dist/types/mds-pref-mode.d.ts +4 -8
- package/dist/types/mds-pref-mode.server.d.ts +4 -4
- package/dist/types/mds-pref-theme-item.d.ts +4 -8
- package/dist/types/mds-pref-theme-item.server.d.ts +4 -4
- package/dist/types/mds-pref-theme.d.ts +4 -8
- package/dist/types/mds-pref-theme.server.d.ts +4 -4
- package/dist/types/mds-pref.d.ts +2 -6
- package/dist/types/mds-pref.server.d.ts +3 -3
- package/dist/types/mds-price-table-features-cell.d.ts +2 -6
- package/dist/types/mds-price-table-features-cell.server.d.ts +3 -3
- package/dist/types/mds-price-table-features-row.d.ts +2 -6
- package/dist/types/mds-price-table-features-row.server.d.ts +3 -3
- package/dist/types/mds-price-table-features.d.ts +2 -6
- package/dist/types/mds-price-table-features.server.d.ts +3 -3
- package/dist/types/mds-price-table-header.d.ts +2 -6
- package/dist/types/mds-price-table-header.server.d.ts +3 -3
- package/dist/types/mds-price-table-list-item.d.ts +2 -6
- package/dist/types/mds-price-table-list-item.server.d.ts +3 -3
- package/dist/types/mds-price-table-list.d.ts +2 -6
- package/dist/types/mds-price-table-list.server.d.ts +3 -3
- package/dist/types/mds-price-table.d.ts +2 -6
- package/dist/types/mds-price-table.server.d.ts +3 -3
- package/dist/types/mds-progress.d.ts +2 -6
- package/dist/types/mds-progress.server.d.ts +3 -3
- package/dist/types/mds-push-notification-item.d.ts +4 -8
- package/dist/types/mds-push-notification-item.server.d.ts +4 -4
- package/dist/types/mds-push-notification.d.ts +4 -8
- package/dist/types/mds-push-notification.server.d.ts +4 -4
- package/dist/types/mds-quote.d.ts +2 -6
- package/dist/types/mds-quote.server.d.ts +3 -3
- package/dist/types/mds-radial-menu-item.d.ts +2 -6
- package/dist/types/mds-radial-menu-item.server.d.ts +3 -3
- package/dist/types/mds-radial-menu.d.ts +2 -6
- package/dist/types/mds-radial-menu.server.d.ts +3 -3
- package/dist/types/mds-radial-progress.d.ts +2 -6
- package/dist/types/mds-radial-progress.server.d.ts +3 -3
- package/dist/types/mds-separator.d.ts +2 -6
- package/dist/types/mds-separator.server.d.ts +3 -3
- package/dist/types/mds-spinner.d.ts +2 -6
- package/dist/types/mds-spinner.server.d.ts +3 -3
- package/dist/types/mds-status-bar.d.ts +2 -6
- package/dist/types/mds-status-bar.server.d.ts +3 -3
- package/dist/types/mds-stepper-bar-item.d.ts +4 -8
- package/dist/types/mds-stepper-bar-item.server.d.ts +4 -4
- package/dist/types/mds-stepper-bar.d.ts +4 -8
- package/dist/types/mds-stepper-bar.server.d.ts +4 -4
- package/dist/types/mds-tab-bar-item.d.ts +4 -8
- package/dist/types/mds-tab-bar-item.server.d.ts +4 -4
- package/dist/types/mds-tab-bar.d.ts +4 -8
- package/dist/types/mds-tab-bar.server.d.ts +4 -4
- package/dist/types/mds-tab-item.d.ts +4 -8
- package/dist/types/mds-tab-item.server.d.ts +4 -4
- package/dist/types/mds-tab.d.ts +4 -8
- package/dist/types/mds-tab.server.d.ts +4 -4
- package/dist/types/mds-table-body.d.ts +2 -6
- package/dist/types/mds-table-body.server.d.ts +3 -3
- package/dist/types/mds-table-cell.d.ts +2 -6
- package/dist/types/mds-table-cell.server.d.ts +3 -3
- package/dist/types/mds-table-footer.d.ts +2 -6
- package/dist/types/mds-table-footer.server.d.ts +3 -3
- package/dist/types/mds-table-header-cell.d.ts +4 -8
- package/dist/types/mds-table-header-cell.server.d.ts +4 -4
- package/dist/types/mds-table-header.d.ts +2 -6
- package/dist/types/mds-table-header.server.d.ts +3 -3
- package/dist/types/mds-table-row.d.ts +2 -6
- package/dist/types/mds-table-row.server.d.ts +3 -3
- package/dist/types/mds-table.d.ts +4 -8
- package/dist/types/mds-table.server.d.ts +4 -4
- package/dist/types/mds-text.d.ts +2 -6
- package/dist/types/mds-text.server.d.ts +3 -3
- package/dist/types/mds-toast-region.d.ts +2 -6
- package/dist/types/mds-toast-region.server.d.ts +3 -3
- package/dist/types/mds-toast.d.ts +4 -8
- package/dist/types/mds-toast.server.d.ts +4 -4
- package/dist/types/mds-tooltip.d.ts +2 -6
- package/dist/types/mds-tooltip.server.d.ts +3 -3
- package/dist/types/mds-tree-item.d.ts +4 -8
- package/dist/types/mds-tree-item.server.d.ts +4 -4
- package/dist/types/mds-tree.d.ts +2 -6
- package/dist/types/mds-tree.server.d.ts +3 -3
- package/dist/types/mds-url-view.d.ts +4 -8
- package/dist/types/mds-url-view.server.d.ts +4 -4
- package/dist/types/mds-usage.d.ts +2 -6
- package/dist/types/mds-usage.server.d.ts +3 -3
- package/dist/types/mds-video-wall.d.ts +2 -6
- package/dist/types/mds-video-wall.server.d.ts +3 -3
- package/dist/types/mds-zero.d.ts +2 -6
- package/dist/types/mds-zero.server.d.ts +3 -3
- package/package.json +3 -3
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
---
|
|
2
|
+
# A Magma building block: the format and the commands are in docs/PATTERNS.md, "A building block".
|
|
3
|
+
id: page-header
|
|
4
|
+
kind: block
|
|
5
|
+
title: Page header
|
|
6
|
+
group: navigation
|
|
7
|
+
layer: magma
|
|
8
|
+
status: decided
|
|
9
|
+
need: >-
|
|
10
|
+
The person sees at once what the page holds or is about, where they are, and what they can do
|
|
11
|
+
with it.
|
|
12
|
+
principle: The head of the page names what it shows, says where it sits, and puts its actions in one place.
|
|
13
|
+
keywords: [page header, page title, heading, title bar, back link, page actions, header of the page]
|
|
14
|
+
not-for: []
|
|
15
|
+
used-by: [list-with-filters, record-detail]
|
|
16
|
+
high-stakes: false
|
|
17
|
+
components: [mds-button, mds-text, mds-badge, mds-dropdown, mds-separator]
|
|
18
|
+
related: [list-with-filters, record-detail]
|
|
19
|
+
validated-on: []
|
|
20
|
+
|
|
21
|
+
variables:
|
|
22
|
+
level: { values: [top, nested], means: "top: a page reached from the navigation of the application (a list, a settings page); nested: a page under another one (a record under its list, a sub-list under a record)" }
|
|
23
|
+
subject: { values: [set, item], means: "set: the page shows a set of items (a list); item: the page is about one item (a record, a profile)" }
|
|
24
|
+
|
|
25
|
+
regions:
|
|
26
|
+
- { id: back, when: { level: nested }, what: "a link to the page above, named after it, with an arrow", use: ["mds-button href icon variant=dark tone=text size=sm"] }
|
|
27
|
+
- { id: number, when: { subject: item }, what: "the number or code of the item, small, above the title, when it has one", use: ["mds-text typography=caption tag=p"] }
|
|
28
|
+
- { id: title, required: true, what: "the heading of the page: what the set holds, in the plural, or the subject of the item", use: ["mds-text typography=page tag=h1"] }
|
|
29
|
+
- { id: status, when: { subject: item }, what: "the status of the item, next to the title, when it has one", use: ["mds-badge"] }
|
|
30
|
+
- { id: summary, what: "one line: what the set holds, or where the item belongs and when it arrived", use: ["mds-text typography=detail tag=p"] }
|
|
31
|
+
- { id: actions, what: "the actions on what the page shows, the main one last in the strong tone, the others outlined; an action that destroys the item is never in the row: it goes last in the menu of the item, after a separator; with more than three actions the row keeps the main one, the secondary used most and the menu of the item at its start, which holds the others (actions/more-in-menu)", use: ["mds-button variant=dark tone=outline", "mds-button tone=strong", "mds-button variant=dark tone=text icon", "mds-dropdown", "mds-separator"] }
|
|
32
|
+
|
|
33
|
+
always-true:
|
|
34
|
+
- id: one-h1
|
|
35
|
+
rule: The title is the h1 of the page, and the only one.
|
|
36
|
+
checked-by: review
|
|
37
|
+
- id: title-names-the-page
|
|
38
|
+
rule: "The title names what the page holds or is about: the plural of the set, the subject of the item; never the kind of screen (\"Detail\", \"List\")."
|
|
39
|
+
checked-by: review
|
|
40
|
+
- id: back-names-the-parent
|
|
41
|
+
rule: The way back is a link that names the page it returns to ("Requests"), never "Back".
|
|
42
|
+
checked-by: review
|
|
43
|
+
- id: not-the-app-bar
|
|
44
|
+
rule: The page header is the head of the main content, under the bar of the application; the navigation of the application is never in it.
|
|
45
|
+
checked-by: review
|
|
46
|
+
- id: main-action-last
|
|
47
|
+
from: record-detail
|
|
48
|
+
- id: at-most-three
|
|
49
|
+
from: actions
|
|
50
|
+
- id: more-in-menu
|
|
51
|
+
from: actions
|
|
52
|
+
- id: title-content
|
|
53
|
+
from: rhythm
|
|
54
|
+
- id: inline
|
|
55
|
+
from: rhythm
|
|
56
|
+
- id: between-sections
|
|
57
|
+
from: rhythm
|
|
58
|
+
|
|
59
|
+
open-choices: []
|
|
60
|
+
|
|
61
|
+
situations:
|
|
62
|
+
- { id: requests-of-an-office, situation: The list of the requests of an office, level: top, subject: set }
|
|
63
|
+
- { id: request-from-the-list, situation: A request opened from the list, level: nested, subject: item }
|
|
64
|
+
- { id: members-of-a-group, situation: "The members of a group, on a page of their own", level: nested, subject: set }
|
|
65
|
+
- { id: own-profile, situation: The profile of the person signed in, level: top, subject: item, note: "no status: a profile has none to show" }
|
|
66
|
+
- { id: contact-being-edited, situation: A contact being edited, level: nested, subject: item, note: "the way back to the item and the title only, which says the action (\"Edit Mario Rossi\"); no actions: the row of the form docks in mds-status-bar (surfaces/edit-actions)" }
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
# Page header
|
|
70
|
+
|
|
71
|
+
**The head of the page names what it shows, says where it sits, and puts its actions in one place.**
|
|
72
|
+
|
|
73
|
+
## When to use it
|
|
74
|
+
|
|
75
|
+
At the top of the main content of every page of an application, under the bar of the
|
|
76
|
+
application (`mds-header`): the list of the requests, the page of a request, the members of a
|
|
77
|
+
group, a profile. It came out of the patterns of the group Data, where it comes back in the same
|
|
78
|
+
arrangement (`list-with-filters`: the title with New and Export; `record-detail`: back to the
|
|
79
|
+
list, the identity of the record, its actions). Not the bar of the application, with the logo
|
|
80
|
+
and the navigation (`mds-header`, `mds-header-bar`), and not the views of the page: tabs are a
|
|
81
|
+
section of their own, under the header.
|
|
82
|
+
|
|
83
|
+
## What decides it
|
|
84
|
+
|
|
85
|
+
Two questions: whether the page sits under another one (then it has a way back), and whether it
|
|
86
|
+
shows a set or is about one item (then it may have a number and a status).
|
|
87
|
+
|
|
88
|
+
## Regions
|
|
89
|
+
|
|
90
|
+
<!-- Generated from the frontmatter: edit it there, then run nx run stencil:generate.pattern -- --sync. -->
|
|
91
|
+
|
|
92
|
+
| Variable | Values | Means |
|
|
93
|
+
| --- | --- | --- |
|
|
94
|
+
| `level` | `top`, `nested` | top: a page reached from the navigation of the application (a list, a settings page); nested: a page under another one (a record under its list, a sub-list under a record) |
|
|
95
|
+
| `subject` | `set`, `item` | set: the page shows a set of items (a list); item: the page is about one item (a record, a profile) |
|
|
96
|
+
|
|
97
|
+
A region shows where its When holds, in this order: a required one always, the others when there is something to put in them.
|
|
98
|
+
|
|
99
|
+
| Region | When | Required | What | Use |
|
|
100
|
+
| --- | --- | --- | --- | --- |
|
|
101
|
+
| `back` | level: nested | | a link to the page above, named after it, with an arrow | `mds-button href icon variant=dark tone=text size=sm` |
|
|
102
|
+
| `number` | subject: item | | the number or code of the item, small, above the title, when it has one | `mds-text typography=caption tag=p` |
|
|
103
|
+
| `title` | any | yes | the heading of the page: what the set holds, in the plural, or the subject of the item | `mds-text typography=page tag=h1` |
|
|
104
|
+
| `status` | subject: item | | the status of the item, next to the title, when it has one | `mds-badge` |
|
|
105
|
+
| `summary` | any | | one line: what the set holds, or where the item belongs and when it arrived | `mds-text typography=detail tag=p` |
|
|
106
|
+
| `actions` | any | | the actions on what the page shows, the main one last in the strong tone, the others outlined; an action that destroys the item is never in the row: it goes last in the menu of the item, after a separator; with more than three actions the row keeps the main one, the secondary used most and the menu of the item at its start, which holds the others (actions/more-in-menu) | `mds-button variant=dark tone=outline`, `mds-button tone=strong`, `mds-button variant=dark tone=text icon`, `mds-dropdown`, `mds-separator` |
|
|
107
|
+
|
|
108
|
+
## Layout
|
|
109
|
+
|
|
110
|
+
- The way back first, on its own line, aligned to the start.
|
|
111
|
+
- Then the identity (number, title with its status, summary) at the start, and the actions at
|
|
112
|
+
the end, aligned to the top, on a wide screen; with less room the actions go under the
|
|
113
|
+
identity, on one line at the start, and under 380 px of the header they stack at the full
|
|
114
|
+
width, the main one at the bottom (`actions/stacked`, on the header as `@container`).
|
|
115
|
+
- The status sits next to the title and wraps under it when there is no room. The identity
|
|
116
|
+
keeps at least the width of a row of actions (`basis-actions`, with `min-w-0`): a long title
|
|
117
|
+
wraps and never moves the actions; with less room than both, the actions go under.
|
|
118
|
+
- The spaces are relations of the rhythm, written by their role: `gap-title-content` (300)
|
|
119
|
+
inside the identity, between a title and what it names (`rhythm/title-content`);
|
|
120
|
+
`gap-inline` (300) between the actions, and between the identity and the actions, side by
|
|
121
|
+
side in one row (`rhythm/inline`).
|
|
122
|
+
- The header is the first section of the page: the page puts `gap-between-sections` (1600)
|
|
123
|
+
between it and the content under it, as between two sections (`rhythm/between-sections`),
|
|
124
|
+
with the gap of the container that lays out its sections; the block has no margin of its own.
|
|
125
|
+
- A region with nothing to show is left out, with its space: a page with no actions has no empty
|
|
126
|
+
bar.
|
|
127
|
+
- The tabs of a page, when it has views, are the first section under the header.
|
|
128
|
+
|
|
129
|
+
## Always true
|
|
130
|
+
|
|
131
|
+
<!-- Generated from the frontmatter: edit it there, then run nx run stencil:generate.pattern -- --sync. -->
|
|
132
|
+
|
|
133
|
+
These hold in every product: a product layer cannot change them.
|
|
134
|
+
|
|
135
|
+
| Id | Rule | Checked by |
|
|
136
|
+
| --- | --- | --- |
|
|
137
|
+
| `one-h1` | The title is the h1 of the page, and the only one. | review |
|
|
138
|
+
| `title-names-the-page` | The title names what the page holds or is about: the plural of the set, the subject of the item; never the kind of screen ("Detail", "List"). | review |
|
|
139
|
+
| `back-names-the-parent` | The way back is a link that names the page it returns to ("Requests"), never "Back". | review |
|
|
140
|
+
| `not-the-app-bar` | The page header is the head of the main content, under the bar of the application; the navigation of the application is never in it. | review |
|
|
141
|
+
| `main-action-last` | The main action comes last, in the strong tone; the others are outlined, `variant="dark" tone="outline"`; an action that destroys the record is never among them, it goes last in the menu of the record. (from `record-detail`) | review |
|
|
142
|
+
| `at-most-three` | A row has at most three actions, and the labels of a row of three fit in 380 px with their gaps: the threshold of `stacked` is computed on them. Beyond three, the menu of the item takes one of the places (`more-in-menu`). (from `actions`) | review |
|
|
143
|
+
| `more-in-menu` | When an item has more than three actions, its row keeps the main action, the secondary used most and the menu of the item, at the start of the row: an icon-only mds-button (more_vert, variant="dark" tone="text", an aria-label that names the item) with mds-dropdown. The menu holds the other actions, and Elimina last after an mds-separator (`destructive-in-menu`): one menu per item. (from `actions`) | review |
|
|
144
|
+
| `title-content` | `gap-title-content` (300) between a title and the content it names (from `rhythm`) | |
|
|
145
|
+
| `inline` | `gap-inline` (300) between elements side by side in one row: the actions of a row, a field and the button beside it (from `rhythm`) | |
|
|
146
|
+
| `between-sections` | `gap-between-sections` (1600) between two sections of a page, each with its title (from `rhythm`) | |
|
|
147
|
+
|
|
148
|
+
## Situations
|
|
149
|
+
|
|
150
|
+
<!-- Generated from the frontmatter: edit it there, then run nx run stencil:generate.pattern -- --sync. -->
|
|
151
|
+
|
|
152
|
+
Situations every application has, each with the regions it shows: they give the examples, the texts and the keywords. The situations of a product's own domain go in its layer.
|
|
153
|
+
|
|
154
|
+
| Id | Situation | Regions |
|
|
155
|
+
| --- | --- | --- |
|
|
156
|
+
| `requests-of-an-office` | The list of the requests of an office | `title`, `summary`, `actions` |
|
|
157
|
+
| `request-from-the-list` | A request opened from the list | `back`, `number`, `title`, `status`, `summary`, `actions` |
|
|
158
|
+
| `members-of-a-group` | The members of a group, on a page of their own | `back`, `title`, `summary`, `actions` |
|
|
159
|
+
| `own-profile` | The profile of the person signed in | `number`, `title`, `status`, `summary`, `actions`: no status: a profile has none to show |
|
|
160
|
+
| `contact-being-edited` | A contact being edited | `back`, `number`, `title`, `status`, `summary`, `actions`: the way back to the item and the title only, which says the action ("Edit Mario Rossi"); no actions: the row of the form docks in mds-status-bar (surfaces/edit-actions) |
|
|
161
|
+
|
|
162
|
+
## Accessibility
|
|
163
|
+
|
|
164
|
+
- The title is the `h1`; a pattern that moves the focus to it after an action gives it
|
|
165
|
+
`tabindex="-1"` (`focus-to-heading` of `record-detail`).
|
|
166
|
+
- A `header` element inside `main` is not a landmark: the bar of the application keeps the
|
|
167
|
+
banner.
|
|
168
|
+
- The way back is a link with the address of the page above, so it also works in a new tab.
|
|
169
|
+
- The number and the summary are text, not headings.
|
|
170
|
+
|
|
171
|
+
## Content
|
|
172
|
+
|
|
173
|
+
- The title is the plural of the set ("Requests") or the subject of the item ("Change of
|
|
174
|
+
residence"); the number goes above it, smaller.
|
|
175
|
+
- The way back is the name of the page above ("Requests"), with the arrow.
|
|
176
|
+
- The summary is one line: what the set holds ("The requests citizens send to the offices"), or
|
|
177
|
+
where the item belongs and when it arrived ("Registry office, received on 3 March 2026").
|
|
178
|
+
- Actions are verbs on what the page shows: "New request", "Export", "Close request".
|
|
179
|
+
|
|
180
|
+
## Magma gaps
|
|
181
|
+
|
|
182
|
+
- `mds-breadcrumb-item` has no `href`: Magma has no trail of links. The default needs none (one
|
|
183
|
+
link to the page above); a product that needs a trail asks for it with an issue.
|
|
184
|
+
|
|
185
|
+
## Decisions
|
|
186
|
+
|
|
187
|
+
| Date | Decision | Why |
|
|
188
|
+
| --- | --- | --- |
|
|
189
|
+
| 2026-10-24 | A block is a section of a page that comes back in the same arrangement, structure and layout only; it is born when it comes back in two or three patterns; the page header is a candidate | The docs site, `plan/DIRECTION.md`, Building blocks section. |
|
|
190
|
+
| 2026-10-29 | The page header is the first block: it comes back in `list-with-filters` and `record-detail` | The threshold of two patterns, reached in the group Data. |
|
|
191
|
+
| 2026-10-29 | A block has the base of a pattern, with `regions` in order instead of `cases`: each region says when it shows | Its regions are independent: as cases, the page header would be eight near copies; space is what shows where. |
|
|
192
|
+
| 2026-10-29 | A block ships as markup to apply, with its code in HTML, React and Angular, like a pattern | No new API to version; a component is weighed when the block is stable in the layers of two or three products. |
|
|
193
|
+
| 2026-10-29 | The tabs of a page are a section of their own, under the header | The header stays short; the views belong to the content they switch. |
|
|
194
|
+
| 2026-10-29 | The way back is one link to the page above, named after it; no trail | Management applications have two or three levels, and the navigation of the application says where the person is; `mds-breadcrumb-item` has no links. |
|
|
195
|
+
| 2026-10-31 | The group is `navigation` | The docs site, `plan/DIRECTION.md`, Patterns section: Navigation names the page header among the building blocks. |
|
|
196
|
+
| 2026-10-31 | The actions other than the main one are `variant="dark" tone="outline"`, no longer weak; an action that destroys the item goes in its menu, never in the row | The design language, #1189: `actions/secondary` and `actions/destructive-in-menu`. |
|
|
197
|
+
| 2026-10-31 | The spaces of the Layout are relations of the rhythm, `title-content` and `inline` (`gap-300`), no longer 200 and 400 | The design language, #1189: the rhythm, on main since #1206; the old values came from the previews. |
|
|
198
|
+
| 2026-10-31 | The header is the first section of the page: `gap-1600` between it and the content under it (`rhythm/between-sections`), put by the page, not by the block | The header names the whole page: at the step of the sections it belongs to none of them (`step-ratio`), and the rhythm needs no new relation. Rejected: `gap-1000`, which on a page of several sections puts the header nearer to the first one than that one to the next, so it reads as the head of the first section. Chosen live on a record with sections and on a list (#1210). |
|
|
199
|
+
| 2026-11-01 | With more than three actions, the row keeps the main one, the secondary used most and the menu of the item at its start; the open choice `actions-overflow` goes | The design language, #1189: `actions/at-most-three` and `actions/more-in-menu`. The arrow of the main action (`mds-button-dropdown`) read as another way of doing it; every action visible broke the limit of three. https://github.com/magma-design-system/magma/issues/1189#issuecomment-6561221595 |
|
|
200
|
+
| 2026-11-03 | A block has a preview for each situation, named after the id of the situation | The maintainer's choice for the round of the building blocks: a situation already gives every variable and the words, as a case does; one preview of the whole block would not show what goes when a variable changes. |
|
|
201
|
+
| 2026-11-03 | With less room the actions go under the identity on one line and stack under 380 px of the header; the identity keeps the width of a row of actions, so a long title wraps instead of moving them; the title takes the role `page` | The previews of the round of the building blocks: the old "wrap" made a ragged row that `actions/stacked` forbids, and a long title pushed the actions under it at 1024 px; `typography=h3` was the size, `page` is the role (`titles/by-role`). |
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
# A Magma pattern: the format and the commands are in docs/PATTERNS.md.
|
|
3
|
+
id: permissions
|
|
4
|
+
kind: pattern
|
|
5
|
+
title: Permissions
|
|
6
|
+
group: data
|
|
7
|
+
layer: magma
|
|
8
|
+
status: candidate
|
|
9
|
+
need: >-
|
|
10
|
+
The person sees what their role lets them see and do, and understands why an action is not
|
|
11
|
+
available.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Permissions
|
|
15
|
+
|
|
16
|
+
A candidate: a need Magma knows and has not defined yet, cited by `empty-state`. Until it is
|
|
17
|
+
defined, the agent says that no default covers it, and proposes the pattern (`get_guide reporting`).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at the actions of the ai banner, in its variant: Usa la descrizione filled and last, Ignora outlined. Press Usa la descrizione: the text goes into the field.
|
|
3
|
+
-->
|
|
4
|
+
<div class="grid max-w-form gap-between-fields">
|
|
5
|
+
<mds-banner id="suggestion" variant="ai" icon="mi/baseline/auto-awesome" headline="Suggerimento IA">
|
|
6
|
+
<mds-text>L'assistente ha scritto una descrizione della pratica dai tre documenti allegati.</mds-text>
|
|
7
|
+
<mds-button id="ignore" slot="action" variant="ai" tone="outline">Ignora</mds-button>
|
|
8
|
+
<mds-button id="use" slot="action" variant="ai" tone="strong">Usa la descrizione</mds-button>
|
|
9
|
+
</mds-banner>
|
|
10
|
+
<mds-input-field label="Descrizione">
|
|
11
|
+
<mds-input id="description"></mds-input>
|
|
12
|
+
</mds-input-field>
|
|
13
|
+
</div>
|
|
14
|
+
<script>
|
|
15
|
+
const suggestion = document.getElementById('suggestion');
|
|
16
|
+
document.getElementById('use').addEventListener('click', () => {
|
|
17
|
+
document.getElementById('description').value = 'Accesso ai verbali del sopralluogo del 12 marzo.';
|
|
18
|
+
suggestion.remove();
|
|
19
|
+
});
|
|
20
|
+
document.getElementById('ignore').addEventListener('click', () => suggestion.remove());
|
|
21
|
+
</script>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at the row of the confirmation: Elimina last, filled in red; Annulla before it, outlined, holds the focus, so Invio cancels.
|
|
3
|
+
height: 320
|
|
4
|
+
-->
|
|
5
|
+
<mds-modal opened aria-label="Eliminare la nota Sopralluogo del 12 marzo?">
|
|
6
|
+
<mds-banner slot="window" variant="light" tone="box" dismissible headline="Eliminare la nota Sopralluogo del 12 marzo?">
|
|
7
|
+
<mds-text>La nota viene cancellata e non si può recuperare.</mds-text>
|
|
8
|
+
<mds-button slot="action" variant="dark" tone="outline" autofocus>Annulla</mds-button>
|
|
9
|
+
<mds-button slot="action" variant="error" tone="strong">Elimina</mds-button>
|
|
10
|
+
</mds-banner>
|
|
11
|
+
</mds-modal>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at the last section of the request: a border of its own, the consequence written next to Elimina la pratica, outlined in red.
|
|
3
|
+
-->
|
|
4
|
+
<div class="grid gap-between-sections">
|
|
5
|
+
<section class="grid gap-title-content">
|
|
6
|
+
<mds-text typography="section" tag="h2">Referenti</mds-text>
|
|
7
|
+
<mds-text tag="p">Anna Rossi, ufficio tecnico; Marco Bianchi, protocollo.</mds-text>
|
|
8
|
+
</section>
|
|
9
|
+
<section class="grid gap-title-content">
|
|
10
|
+
<mds-text typography="section" tag="h2">Zona pericolosa</mds-text>
|
|
11
|
+
<div class="flex flex-wrap items-center justify-end gap-content-actions rounded-(--magma-radius-2xl) border border-danger-border p-inset">
|
|
12
|
+
<div class="grid grow basis-(--magma-width-reading) gap-title-content">
|
|
13
|
+
<mds-text typography="part" tag="h3">Elimina la pratica</mds-text>
|
|
14
|
+
<mds-text tag="p">
|
|
15
|
+
Con la pratica se ne vanno 4 allegati, 2 referenti e il protocollo collegato. Non si
|
|
16
|
+
possono recuperare.
|
|
17
|
+
</mds-text>
|
|
18
|
+
</div>
|
|
19
|
+
<mds-button variant="error" tone="outline">Elimina la pratica</mds-button>
|
|
20
|
+
</div>
|
|
21
|
+
</section>
|
|
22
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at the open menu of the note: Modifica and Duplica, then a separator, and Elimina nota last, in red with its icon. Press the button of the menu to close and open it.
|
|
3
|
+
height: 340
|
|
4
|
+
-->
|
|
5
|
+
<mds-card class="max-w-form">
|
|
6
|
+
<mds-card-header>
|
|
7
|
+
<mds-text typography="part" tag="h2">Sopralluogo del 12 marzo</mds-text>
|
|
8
|
+
<mds-button id="azioni-nota" slot="action" icon="mi/baseline/more-vert" variant="dark" tone="text" aria-label="Azioni della nota"></mds-button>
|
|
9
|
+
</mds-card-header>
|
|
10
|
+
<mds-card-content>
|
|
11
|
+
<mds-text>Sentire l'ufficio tecnico prima di venerdì.</mds-text>
|
|
12
|
+
</mds-card-content>
|
|
13
|
+
</mds-card>
|
|
14
|
+
<mds-dropdown target="#azioni-nota" placement="bottom-end" visible>
|
|
15
|
+
<mds-button icon="mi/baseline/edit" variant="dark" tone="text" label="Modifica"></mds-button>
|
|
16
|
+
<mds-button icon="mi/baseline/content-copy" variant="dark" tone="text" label="Duplica"></mds-button>
|
|
17
|
+
<mds-separator></mds-separator>
|
|
18
|
+
<mds-button icon="mi/baseline/delete" variant="error" tone="text" label="Elimina nota"></mds-button>
|
|
19
|
+
</mds-dropdown>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Press the X of the banner: the message goes, and the section closes the room it took.
|
|
3
|
+
-->
|
|
4
|
+
<section class="grid max-w-form gap-title-content">
|
|
5
|
+
<mds-text typography="section" tag="h2">Deleghe</mds-text>
|
|
6
|
+
<div class="grid gap-between-fields">
|
|
7
|
+
<mds-banner id="notice" variant="info" dismissible headline="Nuovo modulo di delega">
|
|
8
|
+
<mds-text>Da dicembre le deleghe si presentano con il modulo aggiornato.</mds-text>
|
|
9
|
+
</mds-banner>
|
|
10
|
+
<mds-text tag="p">Anna Rossi presenta le pratiche dell'azienda per tutto il 2026.</mds-text>
|
|
11
|
+
</div>
|
|
12
|
+
</section>
|
|
13
|
+
<script>
|
|
14
|
+
document.getElementById('notice').addEventListener('mdsBannerClose', (event) => event.target.remove());
|
|
15
|
+
</script>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Press the X at the end of the title row: it closes the dialog, as Annulla does in the row; Nuovo referente opens it again.
|
|
3
|
+
height: 480
|
|
4
|
+
-->
|
|
5
|
+
<mds-button id="open">Nuovo referente</mds-button>
|
|
6
|
+
<mds-modal id="dialog" opened aria-label="Nuovo referente">
|
|
7
|
+
<mds-banner slot="window" variant="light" tone="box" dismissible headline="Nuovo referente">
|
|
8
|
+
<form class="grid gap-between-fields">
|
|
9
|
+
<mds-input-field label="Nome e cognome">
|
|
10
|
+
<mds-input value="Marco Bianchi"></mds-input>
|
|
11
|
+
</mds-input-field>
|
|
12
|
+
<mds-input-field label="Ufficio">
|
|
13
|
+
<mds-input value="Protocollo"></mds-input>
|
|
14
|
+
</mds-input-field>
|
|
15
|
+
</form>
|
|
16
|
+
<mds-button id="cancel" slot="action" variant="dark" tone="outline">Annulla</mds-button>
|
|
17
|
+
<mds-button slot="action">Aggiungi</mds-button>
|
|
18
|
+
</mds-banner>
|
|
19
|
+
</mds-modal>
|
|
20
|
+
<script>
|
|
21
|
+
const dialog = document.getElementById('dialog');
|
|
22
|
+
document.getElementById('open').addEventListener('click', () => (dialog.opened = true));
|
|
23
|
+
document.getElementById('cancel').addEventListener('click', () => dialog.close());
|
|
24
|
+
dialog.addEventListener('mdsModalClose', () => (dialog.opened = undefined));
|
|
25
|
+
</script>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at the row of the contact: the menu of the item at its start, then Invia email and Modifica; the menu, open, holds Duplica and Stampa, and Elimina contatto last after a separator.
|
|
3
|
+
height: 340
|
|
4
|
+
-->
|
|
5
|
+
<header class="@container flex flex-wrap items-start justify-between gap-inline">
|
|
6
|
+
<div class="grid min-w-0 grow basis-actions gap-title-content">
|
|
7
|
+
<mds-text typography="page" tag="h1">Mario Rossi</mds-text>
|
|
8
|
+
<mds-text typography="detail" tag="p" class="text-fg-muted">Ufficio anagrafe, aggiunto il 12 gennaio 2024</mds-text>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="flex gap-inline @max-actions:basis-full @max-actions:flex-col @max-actions:*:self-stretch">
|
|
11
|
+
<mds-button id="more" class="@max-actions:w-fit" icon="mi/baseline/more-vert" variant="dark" tone="text" aria-label="Azioni di Mario Rossi"></mds-button>
|
|
12
|
+
<mds-button variant="dark" tone="outline">Invia email</mds-button>
|
|
13
|
+
<mds-button>Modifica</mds-button>
|
|
14
|
+
</div>
|
|
15
|
+
</header>
|
|
16
|
+
<mds-dropdown id="menu" target="#more" placement="bottom-start" disable-auto-placement visible class="p-200 gap-200">
|
|
17
|
+
<mds-button variant="dark" tone="text" icon="mi/baseline/content-copy" label="Duplica"></mds-button>
|
|
18
|
+
<mds-button variant="dark" tone="text" icon="mi/baseline/print" label="Stampa"></mds-button>
|
|
19
|
+
<mds-separator class="-mx-200 bg-surface-muted dark:bg-surface-raised"></mds-separator>
|
|
20
|
+
<mds-button variant="error" tone="text" icon="mi/baseline/delete" label="Elimina contatto"></mds-button>
|
|
21
|
+
</mds-dropdown>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at Scarica in the card of the document: the action of a part, in the accent and outlined, one tone under Invia pratica, the one filled action of the page.
|
|
3
|
+
-->
|
|
4
|
+
<div class="grid gap-between-sections">
|
|
5
|
+
<mds-text typography="page" tag="h1">Nuova pratica</mds-text>
|
|
6
|
+
<form class="@container grid max-w-form gap-content-actions">
|
|
7
|
+
<div class="grid gap-between-fields">
|
|
8
|
+
<mds-input-field label="Oggetto">
|
|
9
|
+
<mds-input value="Richiesta di accesso agli atti"></mds-input>
|
|
10
|
+
</mds-input-field>
|
|
11
|
+
<mds-card>
|
|
12
|
+
<mds-card-header>
|
|
13
|
+
<mds-text typography="part" tag="h2">Modulo di delega</mds-text>
|
|
14
|
+
</mds-card-header>
|
|
15
|
+
<mds-card-content>
|
|
16
|
+
<mds-text>Scaricalo, firmalo e allegalo alla pratica.</mds-text>
|
|
17
|
+
</mds-card-content>
|
|
18
|
+
<mds-card-footer>
|
|
19
|
+
<mds-button type="button" icon="mi/baseline/download" variant="primary" tone="outline">Scarica</mds-button>
|
|
20
|
+
</mds-card-footer>
|
|
21
|
+
</mds-card>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="flex justify-end gap-inline @max-actions:flex-col @max-actions:*:self-stretch">
|
|
24
|
+
<mds-button type="button" variant="dark" tone="outline">Annulla</mds-button>
|
|
25
|
+
<mds-button>Invia pratica</mds-button>
|
|
26
|
+
</div>
|
|
27
|
+
</form>
|
|
28
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at Salva: the one filled action of the page, in the accent, last in the row at the end of the form; Annulla before it is outlined.
|
|
3
|
+
-->
|
|
4
|
+
<div class="grid gap-between-sections">
|
|
5
|
+
<mds-text typography="page" tag="h1">Nuova richiesta</mds-text>
|
|
6
|
+
<form class="@container grid max-w-form gap-content-actions">
|
|
7
|
+
<div class="grid gap-between-fields">
|
|
8
|
+
<mds-input-field label="Oggetto">
|
|
9
|
+
<mds-input value="Accesso agli atti"></mds-input>
|
|
10
|
+
</mds-input-field>
|
|
11
|
+
<mds-input-field label="Ufficio">
|
|
12
|
+
<mds-input value="Ufficio tecnico"></mds-input>
|
|
13
|
+
</mds-input-field>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="flex justify-end gap-inline @max-actions:flex-col @max-actions:*:self-stretch">
|
|
16
|
+
<mds-button type="button" variant="dark" tone="outline">Annulla</mds-button>
|
|
17
|
+
<mds-button>Salva</mds-button>
|
|
18
|
+
</div>
|
|
19
|
+
</form>
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Press the X next to planimetria.pdf: the attachment goes at once, with no question, and a toast says what went and offers Ripristina.
|
|
3
|
+
height: 340
|
|
4
|
+
-->
|
|
5
|
+
<section class="grid max-w-form gap-title-content">
|
|
6
|
+
<mds-text typography="section" tag="h2">Allegati</mds-text>
|
|
7
|
+
<div id="allegati" class="grid">
|
|
8
|
+
<div class="flex items-center justify-between gap-inline">
|
|
9
|
+
<mds-text>planimetria.pdf</mds-text>
|
|
10
|
+
<mds-button icon="mi/baseline/close" variant="dark" tone="text" aria-label="Rimuovi planimetria.pdf"></mds-button>
|
|
11
|
+
</div>
|
|
12
|
+
<div class="flex items-center justify-between gap-inline">
|
|
13
|
+
<mds-text>delega-firmata.pdf</mds-text>
|
|
14
|
+
<mds-button icon="mi/baseline/close" variant="dark" tone="text" aria-label="Rimuovi delega-firmata.pdf"></mds-button>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="flex items-center justify-between gap-inline">
|
|
17
|
+
<mds-text>visura-catastale.pdf</mds-text>
|
|
18
|
+
<mds-button icon="mi/baseline/close" variant="dark" tone="text" aria-label="Rimuovi visura-catastale.pdf"></mds-button>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</section>
|
|
22
|
+
<mds-toast-region>
|
|
23
|
+
<mds-toast id="toast" duration="0" dismissible>
|
|
24
|
+
Allegato rimosso: planimetria.pdf
|
|
25
|
+
<mds-button id="restore" slot="action" size="sm" variant="dark" tone="outline">Ripristina</mds-button>
|
|
26
|
+
</mds-toast>
|
|
27
|
+
</mds-toast-region>
|
|
28
|
+
<script>
|
|
29
|
+
const list = document.getElementById('allegati');
|
|
30
|
+
const toast = document.getElementById('toast');
|
|
31
|
+
let removed;
|
|
32
|
+
list.addEventListener('click', (event) => {
|
|
33
|
+
const item = event.target.closest('mds-button')?.parentElement;
|
|
34
|
+
if (!item) return;
|
|
35
|
+
removed = { item, next: item.nextElementSibling };
|
|
36
|
+
toast.firstChild.data = `Allegato rimosso: ${item.querySelector('mds-text').textContent}`;
|
|
37
|
+
item.remove();
|
|
38
|
+
toast.visible = true;
|
|
39
|
+
});
|
|
40
|
+
document.getElementById('restore').addEventListener('click', () => {
|
|
41
|
+
list.insertBefore(removed.item, removed.next);
|
|
42
|
+
toast.visible = undefined;
|
|
43
|
+
});
|
|
44
|
+
</script>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at Salva come bozza: outlined in the neutral, right before Invia, which stays the one filled action of the page.
|
|
3
|
+
-->
|
|
4
|
+
<div class="grid gap-between-sections">
|
|
5
|
+
<mds-text typography="page" tag="h1">Nuova comunicazione</mds-text>
|
|
6
|
+
<form class="@container grid max-w-form gap-content-actions">
|
|
7
|
+
<div class="grid gap-between-fields">
|
|
8
|
+
<mds-input-field label="Destinatario">
|
|
9
|
+
<mds-input value="Ufficio tributi"></mds-input>
|
|
10
|
+
</mds-input-field>
|
|
11
|
+
<mds-input-field label="Oggetto">
|
|
12
|
+
<mds-input value="Rimborso TARI 2025"></mds-input>
|
|
13
|
+
</mds-input-field>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="flex justify-end gap-inline @max-actions:flex-col @max-actions:*:self-stretch">
|
|
16
|
+
<mds-button name="azione" value="bozza" variant="dark" tone="outline">Salva come bozza</mds-button>
|
|
17
|
+
<mds-button name="azione" value="invio">Invia</mds-button>
|
|
18
|
+
</div>
|
|
19
|
+
</form>
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Narrow the stage (?width=420, then 520): under 380 px of the row the three actions stack at full width, Invia pratica at the bottom; above it they stay on one line, never a ragged wrap.
|
|
3
|
+
-->
|
|
4
|
+
<mds-banner
|
|
5
|
+
variant="light"
|
|
6
|
+
tone="box"
|
|
7
|
+
dismissible
|
|
8
|
+
headline="Nuova pratica"
|
|
9
|
+
class="mx-auto w-full max-w-(--magma-width-dialog)"
|
|
10
|
+
>
|
|
11
|
+
<mds-input-field label="Oggetto">
|
|
12
|
+
<mds-input value="Richiesta di accesso agli atti"></mds-input>
|
|
13
|
+
</mds-input-field>
|
|
14
|
+
<mds-button slot="action" variant="dark" tone="outline">Annulla</mds-button>
|
|
15
|
+
<mds-button slot="action" variant="dark" tone="outline">Salva come bozza</mds-button>
|
|
16
|
+
<mds-button slot="action">Invia pratica</mds-button>
|
|
17
|
+
</mds-banner>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at Riprova in the error toast: small, outlined, in the variant of the toast; the toast stays until the person acts or sends it away with its arrow.
|
|
3
|
+
height: 160
|
|
4
|
+
-->
|
|
5
|
+
<mds-toast-region position="bottom-center">
|
|
6
|
+
<mds-toast visible variant="error" duration="0" dismissible>
|
|
7
|
+
Invio non riuscito
|
|
8
|
+
<mds-button slot="action" size="sm" variant="error" tone="outline">Riprova</mds-button>
|
|
9
|
+
</mds-toast>
|
|
10
|
+
</mds-toast-region>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at the bar: the name of the application, the four sections with Pratiche marked as the current one, and the button of Mario Rossi last. Narrow the stage to a phone: the sections move into the menu of the bar, opened by its button.
|
|
3
|
+
height: 520
|
|
4
|
+
whole-page: true
|
|
5
|
+
-->
|
|
6
|
+
<mds-header>
|
|
7
|
+
<mds-header-bar>
|
|
8
|
+
<mds-text typography="h6" tag="p">Servizi demografici</mds-text>
|
|
9
|
+
<mds-button slot="nav" href="#" aria-current="page" variant="dark" tone="weak">Pratiche</mds-button>
|
|
10
|
+
<mds-button slot="nav" href="#" variant="dark" tone="text">Contatti</mds-button>
|
|
11
|
+
<mds-button slot="nav" href="#" variant="dark" tone="text">Scadenze</mds-button>
|
|
12
|
+
<mds-button slot="nav" href="#" variant="dark" tone="text">Archivio</mds-button>
|
|
13
|
+
<mds-button id="persona" slot="nav" icon="mi/baseline/account-circle" variant="dark" tone="text" aria-label="Account di Mario Rossi"></mds-button>
|
|
14
|
+
</mds-header-bar>
|
|
15
|
+
<nav slot="menu" class="grid gap-inline p-inset">
|
|
16
|
+
<mds-button href="#" aria-current="page" variant="dark" tone="weak" class="w-full justify-start">Pratiche</mds-button>
|
|
17
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Contatti</mds-button>
|
|
18
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Scadenze</mds-button>
|
|
19
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Archivio</mds-button>
|
|
20
|
+
<mds-separator></mds-separator>
|
|
21
|
+
<mds-text typography="detail" tag="p" class="text-fg-muted">Mario Rossi</mds-text>
|
|
22
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Profilo</mds-button>
|
|
23
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Esci</mds-button>
|
|
24
|
+
</nav>
|
|
25
|
+
</mds-header>
|
|
26
|
+
<mds-dropdown target="#persona" placement="bottom-end" strategy="fixed">
|
|
27
|
+
<mds-text typography="detail" tag="p" class="text-fg-muted">Mario Rossi</mds-text>
|
|
28
|
+
<mds-button href="#" icon="mi/baseline/person" variant="dark" tone="text" label="Profilo"></mds-button>
|
|
29
|
+
<mds-separator></mds-separator>
|
|
30
|
+
<mds-button href="#" icon="mi/baseline/logout" variant="dark" tone="text" label="Esci"></mds-button>
|
|
31
|
+
</mds-dropdown>
|
|
32
|
+
<main class="page-frame grid gap-between-sections py-between-sections">
|
|
33
|
+
<header class="grid gap-title-content">
|
|
34
|
+
<mds-text typography="page" tag="h1">Pratiche</mds-text>
|
|
35
|
+
<mds-text typography="detail" tag="p" class="text-fg-muted">Le pratiche che i cittadini inviano agli uffici.</mds-text>
|
|
36
|
+
</header>
|
|
37
|
+
<section class="grid gap-title-content">
|
|
38
|
+
<mds-text typography="section" tag="h2">Da assegnare</mds-text>
|
|
39
|
+
<mds-text tag="p">Tre pratiche arrivate oggi aspettano un ufficio.</mds-text>
|
|
40
|
+
</section>
|
|
41
|
+
</main>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
try: Look at the bar: only the name of the application, the button of Mario Rossi and the button of the menu, which is there at every width. Open the menu: the twelve sections, Certificati marked as the current one, then Mario Rossi with Profilo and Esci.
|
|
3
|
+
height: 520
|
|
4
|
+
whole-page: true
|
|
5
|
+
-->
|
|
6
|
+
<mds-header menu="all">
|
|
7
|
+
<mds-header-bar>
|
|
8
|
+
<mds-text typography="h6" tag="p">Servizi demografici</mds-text>
|
|
9
|
+
<mds-button id="persona" slot="nav" icon="mi/baseline/account-circle" variant="dark" tone="text" aria-label="Account di Mario Rossi"></mds-button>
|
|
10
|
+
</mds-header-bar>
|
|
11
|
+
<nav slot="menu" class="grid gap-inline p-inset">
|
|
12
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Pratiche</mds-button>
|
|
13
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Scadenze</mds-button>
|
|
14
|
+
<mds-button href="#" aria-current="page" variant="dark" tone="weak" class="w-full justify-start">Certificati</mds-button>
|
|
15
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Anagrafe</mds-button>
|
|
16
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Stato civile</mds-button>
|
|
17
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Elettorale</mds-button>
|
|
18
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Cittadinanze</mds-button>
|
|
19
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Cimiteri</mds-button>
|
|
20
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Contatti</mds-button>
|
|
21
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Modelli</mds-button>
|
|
22
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Statistiche</mds-button>
|
|
23
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Archivio</mds-button>
|
|
24
|
+
<mds-separator></mds-separator>
|
|
25
|
+
<mds-text typography="detail" tag="p" class="text-fg-muted">Mario Rossi</mds-text>
|
|
26
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Profilo</mds-button>
|
|
27
|
+
<mds-button href="#" variant="dark" tone="text" class="w-full justify-start">Esci</mds-button>
|
|
28
|
+
</nav>
|
|
29
|
+
</mds-header>
|
|
30
|
+
<mds-dropdown target="#persona" placement="bottom-end" strategy="fixed">
|
|
31
|
+
<mds-text typography="detail" tag="p" class="text-fg-muted">Mario Rossi</mds-text>
|
|
32
|
+
<mds-button href="#" icon="mi/baseline/person" variant="dark" tone="text" label="Profilo"></mds-button>
|
|
33
|
+
<mds-separator></mds-separator>
|
|
34
|
+
<mds-button href="#" icon="mi/baseline/logout" variant="dark" tone="text" label="Esci"></mds-button>
|
|
35
|
+
</mds-dropdown>
|
|
36
|
+
<main class="page-frame grid gap-between-sections py-between-sections">
|
|
37
|
+
<header class="grid gap-title-content">
|
|
38
|
+
<mds-text typography="page" tag="h1">Certificati</mds-text>
|
|
39
|
+
<mds-text typography="detail" tag="p" class="text-fg-muted">I certificati chiesti allo sportello e online.</mds-text>
|
|
40
|
+
</header>
|
|
41
|
+
<section class="grid gap-title-content">
|
|
42
|
+
<mds-text typography="section" tag="h2">Da firmare</mds-text>
|
|
43
|
+
<mds-text tag="p">Cinque certificati aspettano la firma del funzionario.</mds-text>
|
|
44
|
+
</section>
|
|
45
|
+
</main>
|