51 lines
1.1 KiB
Markdown
51 lines
1.1 KiB
Markdown
# 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.
|