Files
DashBoard/docs/migration/portal-no-iframe/shared_component_contracts.md

1.1 KiB

Shared UI Component Contracts

PaginationControl

File: frontend/src/shared-ui/components/PaginationControl.vue

  • Props:
    • page?: number (legacy compatibility)
    • modelValue?: number
    • totalPages: number
    • infoText?: string
    • visible?: boolean
  • Emits:
    • update:modelValue(number)
    • change(number)
    • prev(number)
    • next(number)
  • Compatibility:
    • Supports legacy usage (:page, @prev, @next) for migration-safe replacement.

SectionCard

File: frontend/src/shared-ui/components/SectionCard.vue

  • Slots:
    • header
    • default body
    • footer
  • Purpose:
    • Normalize page section container structure and spacing.

FilterToolbar

File: frontend/src/shared-ui/components/FilterToolbar.vue

  • Slots:
    • default filter controls
    • actions
  • Purpose:
    • Shared filter layout shell with consistent spacing and action alignment.

StatusBadge

File: frontend/src/shared-ui/components/StatusBadge.vue

  • Props:
    • tone: neutral | success | warning | danger
    • text: string
  • Purpose:
    • Replace repeated local badge/status color snippets.