@acronis-platform/ui-react 3.0.0 → 4.0.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/dist/components/ui/accordion-container/accordion-container.js +14 -14
- package/dist/components/ui/accordion-container/accordion-container.js.map +1 -1
- package/dist/components/ui/app-shell-chat/app-shell-chat.js.map +1 -1
- package/dist/components/ui/area-chart/area-chart.js +141 -139
- package/dist/components/ui/area-chart/area-chart.js.map +1 -1
- package/dist/components/ui/bar-chart/bar-chart.js +295 -293
- package/dist/components/ui/bar-chart/bar-chart.js.map +1 -1
- package/dist/components/ui/category-bar/category-bar.js +109 -93
- package/dist/components/ui/category-bar/category-bar.js.map +1 -1
- package/dist/components/ui/chart/chart-palette.js +113 -0
- package/dist/components/ui/chart/chart-palette.js.map +1 -0
- package/dist/components/ui/chart/chart.js +176 -129
- package/dist/components/ui/chart/chart.js.map +1 -1
- package/dist/components/ui/chart-state/chart-state-illustrations.js +310 -0
- package/dist/components/ui/chart-state/chart-state-illustrations.js.map +1 -0
- package/dist/components/ui/chart-state/chart-state.js +48 -34
- package/dist/components/ui/chart-state/chart-state.js.map +1 -1
- package/dist/components/ui/chart-widget/chart-widget.js +87 -0
- package/dist/components/ui/chart-widget/chart-widget.js.map +1 -0
- package/dist/components/ui/composed-chart/composed-chart.js +117 -115
- package/dist/components/ui/composed-chart/composed-chart.js.map +1 -1
- package/dist/components/ui/confidence-cone/confidence-cone.js +166 -158
- package/dist/components/ui/confidence-cone/confidence-cone.js.map +1 -1
- package/dist/components/ui/funnel-chart/funnel-chart.js +162 -161
- package/dist/components/ui/funnel-chart/funnel-chart.js.map +1 -1
- package/dist/components/ui/histogram/histogram.js +94 -92
- package/dist/components/ui/histogram/histogram.js.map +1 -1
- package/dist/components/ui/input/input.js.map +1 -1
- package/dist/components/ui/label/label.js +2 -9
- package/dist/components/ui/label/label.js.map +1 -1
- package/dist/components/ui/line-chart/line-chart.js +143 -141
- package/dist/components/ui/line-chart/line-chart.js.map +1 -1
- package/dist/components/ui/metric/metric.js +74 -185
- package/dist/components/ui/metric/metric.js.map +1 -1
- package/dist/components/ui/page-content/page-content.js.map +1 -1
- package/dist/components/ui/pie-chart/pie-chart.js +201 -195
- package/dist/components/ui/pie-chart/pie-chart.js.map +1 -1
- package/dist/components/ui/radar-chart/radar-chart.js +133 -131
- package/dist/components/ui/radar-chart/radar-chart.js.map +1 -1
- package/dist/components/ui/radial-bar-chart/radial-bar-chart.js +297 -265
- package/dist/components/ui/radial-bar-chart/radial-bar-chart.js.map +1 -1
- package/dist/components/ui/sankey-chart/sankey-chart.js +123 -101
- package/dist/components/ui/sankey-chart/sankey-chart.js.map +1 -1
- package/dist/components/ui/scatter-chart/scatter-chart.js +76 -74
- package/dist/components/ui/scatter-chart/scatter-chart.js.map +1 -1
- package/dist/components/ui/section/section.js +157 -31
- package/dist/components/ui/section/section.js.map +1 -1
- package/dist/components/ui/stepper/stepper.js +24 -24
- package/dist/components/ui/stepper/stepper.js.map +1 -1
- package/dist/components/ui/stepper-item/stepper-item.js +43 -24
- package/dist/components/ui/stepper-item/stepper-item.js.map +1 -1
- package/dist/components/ui/treemap/treemap.js +133 -124
- package/dist/components/ui/treemap/treemap.js.map +1 -1
- package/dist/components/ui/trend-indicator/trend-indicator.js +34 -69
- package/dist/components/ui/trend-indicator/trend-indicator.js.map +1 -1
- package/dist/components/ui/wizard/wizard.js +59 -0
- package/dist/components/ui/wizard/wizard.js.map +1 -0
- package/dist/hooks/use-wizard.js +75 -0
- package/dist/hooks/use-wizard.js.map +1 -0
- package/dist/index.js +502 -497
- package/dist/index.js.map +1 -1
- package/dist/llms/accordion-container.md +181 -0
- package/dist/llms/accordion.md +124 -0
- package/dist/llms/alert.md +225 -0
- package/dist/llms/app-shell-chat.md +415 -0
- package/dist/llms/area-chart.md +355 -0
- package/dist/llms/avatar.md +208 -0
- package/dist/llms/bar-chart.md +406 -0
- package/dist/llms/breadcrumb.md +326 -0
- package/dist/llms/button-group.md +298 -0
- package/dist/llms/button-icon-input.md +142 -0
- package/dist/llms/button-icon-menu.md +209 -0
- package/dist/llms/button-icon.md +128 -0
- package/dist/llms/button-menu.md +172 -0
- package/dist/llms/button.md +185 -0
- package/dist/llms/calendar-panel.md +733 -0
- package/dist/llms/calendar.md +188 -0
- package/dist/llms/card-filter.md +214 -0
- package/dist/llms/card-section.md +293 -0
- package/dist/llms/card.md +447 -0
- package/dist/llms/carousel-dialog.md +156 -0
- package/dist/llms/category-bar.md +193 -0
- package/dist/llms/chart-state.md +190 -0
- package/dist/llms/chart-widget.md +209 -0
- package/dist/llms/chart.md +182 -0
- package/dist/llms/checkbox.md +257 -0
- package/dist/llms/chip.md +195 -0
- package/dist/llms/combobox.md +164 -0
- package/dist/llms/composed-chart.md +508 -0
- package/dist/llms/confidence-cone.md +277 -0
- package/dist/llms/data-table.md +474 -0
- package/dist/llms/date-range-picker.md +272 -0
- package/dist/llms/description-list.md +131 -0
- package/dist/llms/dialog-footer-carousel.md +147 -0
- package/dist/llms/dialog-footer-default.md +142 -0
- package/dist/llms/dialog-root.md +246 -0
- package/dist/llms/dialog-welcome.md +223 -0
- package/dist/llms/dialog.md +403 -0
- package/dist/llms/dropdown-menu.md +193 -0
- package/dist/llms/empty-overlay.md +146 -0
- package/dist/llms/empty.md +156 -0
- package/dist/llms/field.md +185 -0
- package/dist/llms/filter-cards.md +157 -0
- package/dist/llms/filter-chips.md +323 -0
- package/dist/llms/filter-search.md +512 -0
- package/dist/llms/form.md +154 -0
- package/dist/llms/funnel-chart.md +333 -0
- package/dist/llms/grid.md +80 -0
- package/dist/llms/histogram.md +190 -0
- package/dist/llms/input-date-picker.md +203 -0
- package/dist/llms/input-otp.md +173 -0
- package/dist/llms/input-password.md +197 -0
- package/dist/llms/input-search.md +170 -0
- package/dist/llms/input-select.md +278 -0
- package/dist/llms/input-text-area.md +271 -0
- package/dist/llms/input-text.md +192 -0
- package/dist/llms/line-chart.md +369 -0
- package/dist/llms/link.md +209 -0
- package/dist/llms/loading.md +130 -0
- package/dist/llms/meter.md +177 -0
- package/dist/llms/metric.md +204 -0
- package/dist/llms/number-field.md +122 -0
- package/dist/llms/page-content.md +69 -0
- package/dist/llms/page-header.md +182 -0
- package/dist/llms/pagination.md +133 -0
- package/dist/llms/pie-chart.md +307 -0
- package/dist/llms/popover.md +252 -0
- package/dist/llms/progress-circle.md +126 -0
- package/dist/llms/progress.md +111 -0
- package/dist/llms/radar-chart.md +316 -0
- package/dist/llms/radial-bar-chart.md +319 -0
- package/dist/llms/radio.md +255 -0
- package/dist/llms/resizable.md +195 -0
- package/dist/llms/sankey-chart.md +208 -0
- package/dist/llms/scatter-chart.md +239 -0
- package/dist/llms/scroll-area.md +183 -0
- package/dist/llms/section.md +401 -0
- package/dist/llms/select.md +210 -0
- package/dist/llms/separator.md +87 -0
- package/dist/llms/sheet.md +202 -0
- package/dist/llms/sidebar-primary.md +360 -0
- package/dist/llms/sidebar-secondary.md +417 -0
- package/dist/llms/skeleton.md +81 -0
- package/dist/llms/slider.md +97 -0
- package/dist/llms/spinner.md +100 -0
- package/dist/llms/stack.md +80 -0
- package/dist/llms/stepper-item.md +309 -0
- package/dist/llms/stepper.md +251 -0
- package/dist/llms/switch.md +140 -0
- package/dist/llms/table.md +436 -0
- package/dist/llms/tabs.md +197 -0
- package/dist/llms/tag.md +139 -0
- package/dist/llms/timeline.md +361 -0
- package/dist/llms/timer.md +259 -0
- package/dist/llms/toast.md +241 -0
- package/dist/llms/toggle-group.md +121 -0
- package/dist/llms/toolbar.md +453 -0
- package/dist/llms/tooltip.md +164 -0
- package/dist/llms/treemap.md +254 -0
- package/dist/llms/trend-indicator.md +132 -0
- package/dist/llms/widget-placeholder.md +169 -0
- package/dist/llms/wizard.md +412 -0
- package/dist/llms.txt +142 -0
- package/dist/react.js +502 -497
- package/dist/react.js.map +1 -1
- package/dist/src/components/ui/area-chart/area-chart.d.ts +9 -4
- package/dist/src/components/ui/avatar/avatar.d.ts +1 -1
- package/dist/src/components/ui/bar-chart/bar-chart.d.ts +9 -4
- package/dist/src/components/ui/category-bar/category-bar.d.ts +10 -4
- package/dist/src/components/ui/chart/__stories__/palette-control.d.ts +48 -0
- package/dist/src/components/ui/chart/__tests__/chart-palette.test.d.ts +1 -0
- package/dist/src/components/ui/chart/chart-palette.d.ts +128 -0
- package/dist/src/components/ui/chart/chart.d.ts +66 -15
- package/dist/src/components/ui/chart/index.d.ts +4 -2
- package/dist/src/components/ui/chart-state/chart-state-illustrations.d.ts +6 -0
- package/dist/src/components/ui/chart-state/chart-state.d.ts +13 -2
- package/dist/src/components/ui/chart-state/index.d.ts +1 -0
- package/dist/src/components/ui/chart-widget/chart-widget.d.ts +64 -0
- package/dist/src/components/ui/chart-widget/index.d.ts +1 -0
- package/dist/src/components/ui/composed-chart/composed-chart.d.ts +12 -7
- package/dist/src/components/ui/confidence-cone/confidence-cone.d.ts +10 -5
- package/dist/src/components/ui/empty-overlay/empty-overlay.d.ts +1 -1
- package/dist/src/components/ui/funnel-chart/funnel-chart.d.ts +11 -5
- package/dist/src/components/ui/histogram/histogram.d.ts +10 -4
- package/dist/src/components/ui/label/index.d.ts +1 -1
- package/dist/src/components/ui/label/label.d.ts +1 -5
- package/dist/src/components/ui/line-chart/line-chart.d.ts +9 -4
- package/dist/src/components/ui/metric/metric.d.ts +13 -14
- package/dist/src/components/ui/pie-chart/pie-chart.d.ts +17 -8
- package/dist/src/components/ui/radar-chart/radar-chart.d.ts +10 -5
- package/dist/src/components/ui/radial-bar-chart/radial-bar-chart.d.ts +17 -6
- package/dist/src/components/ui/sankey-chart/sankey-chart.d.ts +10 -5
- package/dist/src/components/ui/scatter-chart/scatter-chart.d.ts +10 -5
- package/dist/src/components/ui/section/index.d.ts +1 -1
- package/dist/src/components/ui/section/section.d.ts +75 -6
- package/dist/src/components/ui/stepper-item/stepper-item.d.ts +6 -5
- package/dist/src/components/ui/tag/tag.d.ts +1 -1
- package/dist/src/components/ui/treemap/treemap.d.ts +11 -5
- package/dist/src/components/ui/trend-indicator/trend-indicator.d.ts +3 -7
- package/dist/src/components/ui/wizard/index.d.ts +1 -0
- package/dist/src/components/ui/wizard/wizard.d.ts +6 -0
- package/dist/src/hooks/index.d.ts +1 -0
- package/dist/src/hooks/use-wizard.d.ts +80 -0
- package/dist/src/index.d.ts +2 -3
- package/dist/ui-react.css +1 -1
- package/package.json +9 -3
- package/dist/components/ui/app-shell/app-shell.js +0 -75
- package/dist/components/ui/app-shell/app-shell.js.map +0 -1
- package/dist/components/ui/auth-layout/auth-layout.js +0 -56
- package/dist/components/ui/auth-layout/auth-layout.js.map +0 -1
- package/dist/components/ui/collapsible/collapsible.js +0 -22
- package/dist/components/ui/collapsible/collapsible.js.map +0 -1
- package/dist/src/components/ui/app-shell/app-shell.d.ts +0 -8
- package/dist/src/components/ui/app-shell/index.d.ts +0 -1
- package/dist/src/components/ui/auth-layout/auth-layout.d.ts +0 -6
- package/dist/src/components/ui/auth-layout/index.d.ts +0 -1
- package/dist/src/components/ui/collapsible/collapsible.d.ts +0 -5
- package/dist/src/components/ui/collapsible/index.d.ts +0 -1
- package/dist/src/components/ui/label/label.docs.d.ts +0 -10
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# PageContent
|
|
2
|
+
|
|
3
|
+
> The page content region — the padded gutter for a page's body. A <div> meant to nest inside AppShellChatContentBody (so it doesn't duplicate the main landmark). Ported from the legacy shadcn-uikit `page-content`.
|
|
4
|
+
|
|
5
|
+
**Status:** draft · **Category:** layout · **Since:** v0.52.0
|
|
6
|
+
|
|
7
|
+
## Import
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { PageContent } from '@acronis-platform/ui-react'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick example
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<AppShellChatContentBody><PageContent>{children}</PageContent></AppShellChatContentBody>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The page content region — the padded gutter for a page's body. A `<div>` meant to
|
|
20
|
+
nest inside `AppShellChatContentBody` (so it doesn't duplicate the `main` landmark).
|
|
21
|
+
|
|
22
|
+
> Design-pending v1, ported from the legacy shadcn-uikit `page-content`.
|
|
23
|
+
|
|
24
|
+
## When to use
|
|
25
|
+
|
|
26
|
+
- Wrapping a page's body inside `AppShellChatContentBody` to get the standard page padding.
|
|
27
|
+
|
|
28
|
+
## When not to use
|
|
29
|
+
|
|
30
|
+
- As the scroll container / main landmark — that's `AppShellChatContentBody`.
|
|
31
|
+
|
|
32
|
+
## Parts
|
|
33
|
+
|
|
34
|
+
`PageContent` is a single component.
|
|
35
|
+
|
|
36
|
+
## Example
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
import {
|
|
40
|
+
AppShellChatContentBody,
|
|
41
|
+
PageContent,
|
|
42
|
+
PageHeader,
|
|
43
|
+
} from '@acronis-platform/ui-react';
|
|
44
|
+
|
|
45
|
+
<AppShellChatContentBody>
|
|
46
|
+
<PageContent>
|
|
47
|
+
<PageHeader>…</PageHeader>
|
|
48
|
+
{children}
|
|
49
|
+
</PageContent>
|
|
50
|
+
</AppShellChatContentBody>;
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Behavior
|
|
54
|
+
|
|
55
|
+
```gherkin
|
|
56
|
+
Scenario: Padded body region
|
|
57
|
+
Given a PageContent inside AppShellChatContentBody
|
|
58
|
+
Then the page body renders with the standard page padding and fills the area
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Accessibility
|
|
62
|
+
|
|
63
|
+
PageContent is a `<div>`, not a landmark — it nests inside `AppShellChatContentBody` (the
|
|
64
|
+
`main` landmark) so a page has exactly one `main`. If you use PageContent without
|
|
65
|
+
App Shell, wrap it in your own `<main>`.
|
|
66
|
+
|
|
67
|
+
## Contrast
|
|
68
|
+
|
|
69
|
+
No color of its own; content carries its own colors.
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# PageHeader
|
|
2
|
+
|
|
3
|
+
> The page header region — a title row (title left, an optional edit icon-button, a tags slot, an actions slot) and an optional description row (text + an optional edit icon-button), capped at 512px. Sits at the top of a page's content; a breadcrumb is a separate sibling above it, not one of its parts. Mapped to the ui-react Figma "PageHeader" master component (node 2905-7678).
|
|
4
|
+
|
|
5
|
+
**Status:** ready · **Category:** layout · **Since:** v0.52.0
|
|
6
|
+
|
|
7
|
+
## Import
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { PageHeader, PageHeaderRow, PageHeaderTitle, PageHeaderTags, PageHeaderActions, PageHeaderDescriptionRow, PageHeaderDescription } from '@acronis-platform/ui-react'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick example
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<PageHeader>
|
|
17
|
+
<PageHeaderRow>
|
|
18
|
+
<PageHeaderTitle>Reports</PageHeaderTitle>
|
|
19
|
+
<PageHeaderTags><Tag variant="info">Customer</Tag></PageHeaderTags>
|
|
20
|
+
<PageHeaderActions><Button>New</Button></PageHeaderActions>
|
|
21
|
+
</PageHeaderRow>
|
|
22
|
+
<PageHeaderDescriptionRow>
|
|
23
|
+
<PageHeaderDescription>All scheduled reports.</PageHeaderDescription>
|
|
24
|
+
</PageHeaderDescriptionRow>
|
|
25
|
+
</PageHeader>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The page header region — a title row (title left, an optional edit icon-button,
|
|
29
|
+
a tags slot, an actions slot) and an optional description row, capped at
|
|
30
|
+
512px. Mapped to the ui-react Figma "PageHeader" master component (node
|
|
31
|
+
`2905-7678`).
|
|
32
|
+
|
|
33
|
+
## When to use
|
|
34
|
+
|
|
35
|
+
- The top of a page's content area, under the App Shell header.
|
|
36
|
+
|
|
37
|
+
## When not to use
|
|
38
|
+
|
|
39
|
+
- The app-wide top bar — that's `AppShellChatContentHeader` (global search +
|
|
40
|
+
account).
|
|
41
|
+
- A breadcrumb trail — that's a separate `Breadcrumb` rendered as a sibling
|
|
42
|
+
above PageHeader, not one of its parts.
|
|
43
|
+
|
|
44
|
+
## Parts
|
|
45
|
+
|
|
46
|
+
| Export | Element | Purpose |
|
|
47
|
+
| -------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
48
|
+
| `PageHeader` | `div` | The banner region. |
|
|
49
|
+
| `PageHeaderRow` | `div` | Title row: title, optional edit button, tags, actions. |
|
|
50
|
+
| `PageHeaderTitle` | `h1` | The page title. |
|
|
51
|
+
| `PageHeaderTags` | `div` | Optional tags slot (e.g. `Tag` chips). Collapses to the first tag + a "+#" tag (hover tooltip lists the hidden labels) when the full set doesn't fit. |
|
|
52
|
+
| `PageHeaderActions` | `div` | Trailing action buttons. Secondary-variant buttons collapse under a "More" `ButtonIcon` dropdown when the full set doesn't fit; primary buttons never collapse. |
|
|
53
|
+
| `PageHeaderDescriptionRow` | `div` | Optional description row (max 512px). |
|
|
54
|
+
| `PageHeaderDescription` | `p` | Muted supporting text. |
|
|
55
|
+
|
|
56
|
+
## Example
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
<PageHeader>
|
|
60
|
+
<PageHeaderRow>
|
|
61
|
+
<PageHeaderTitle>Reports</PageHeaderTitle>
|
|
62
|
+
<PageHeaderTags>
|
|
63
|
+
<Tag variant="info">Customer</Tag>
|
|
64
|
+
</PageHeaderTags>
|
|
65
|
+
<PageHeaderActions>
|
|
66
|
+
<Button>New report</Button>
|
|
67
|
+
</PageHeaderActions>
|
|
68
|
+
</PageHeaderRow>
|
|
69
|
+
<PageHeaderDescriptionRow>
|
|
70
|
+
<PageHeaderDescription>All scheduled reports.</PageHeaderDescription>
|
|
71
|
+
</PageHeaderDescriptionRow>
|
|
72
|
+
</PageHeader>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Editable title/description (full-page wizards)
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
<PageHeaderRow>
|
|
79
|
+
<PageHeaderTitle>Untitled dashboard</PageHeaderTitle>
|
|
80
|
+
<ButtonIcon variant="secondary" aria-label="Edit title">
|
|
81
|
+
<PencilIcon size={16} />
|
|
82
|
+
</ButtonIcon>
|
|
83
|
+
</PageHeaderRow>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### With a breadcrumb
|
|
87
|
+
|
|
88
|
+
```tsx
|
|
89
|
+
<div className="flex flex-col gap-2">
|
|
90
|
+
<Breadcrumb>{/* ... */}</Breadcrumb>
|
|
91
|
+
<PageHeader>{/* ... */}</PageHeader>
|
|
92
|
+
</div>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Behavior
|
|
96
|
+
|
|
97
|
+
```gherkin
|
|
98
|
+
Scenario: Title + actions
|
|
99
|
+
Given a PageHeader with a PageHeaderRow of a title and actions
|
|
100
|
+
Then the title sits at the left and the actions at the right edge
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
```gherkin
|
|
104
|
+
Scenario: Tags share the row with actions
|
|
105
|
+
Given a PageHeaderRow with a title, a PageHeaderTags slot, and a PageHeaderActions slot
|
|
106
|
+
Then tags sit next to the title and actions stay flush right, even when tags are empty
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
```gherkin
|
|
110
|
+
Scenario: Description under the title
|
|
111
|
+
Given a PageHeaderDescriptionRow below the title row
|
|
112
|
+
Then the muted description renders capped at 512px width
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
```gherkin
|
|
116
|
+
Scenario: Editable title or description
|
|
117
|
+
Given a page that lets the user rename its title or description inline (e.g. a
|
|
118
|
+
full-page wizard like Create Dashboard)
|
|
119
|
+
Then render a ButtonIcon with the pencil icon as a sibling next to the title or
|
|
120
|
+
the description — PageHeader has no dedicated part for it, since it's the same
|
|
121
|
+
atom either row
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```gherkin
|
|
125
|
+
Scenario: Breadcrumb above PageHeader
|
|
126
|
+
Given a page that also shows a breadcrumb trail
|
|
127
|
+
Then render a Breadcrumb as a separate sibling above PageHeader, not nested inside it
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
```gherkin
|
|
131
|
+
Scenario: Tags overflow
|
|
132
|
+
Given a PageHeaderTags slot with more than one tag
|
|
133
|
+
And the full set of tags doesn't fit the width available to the slot
|
|
134
|
+
Then show only the first tag and fold the rest under a single "+#" tag
|
|
135
|
+
And hovering or focusing the "+#" tag shows a tooltip listing the hidden tags' labels
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
```gherkin
|
|
139
|
+
Scenario: Tags fit
|
|
140
|
+
Given a PageHeaderTags slot
|
|
141
|
+
When the full set of tags fits the width available to the slot
|
|
142
|
+
Then render every tag directly, with no overflow tag
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
```gherkin
|
|
146
|
+
Scenario: Actions overflow
|
|
147
|
+
Given a PageHeaderActions slot with at least one secondary-variant Button action
|
|
148
|
+
And the full set of actions doesn't fit the width available to the slot
|
|
149
|
+
Then fold every secondary-variant Button action under a single "More" ButtonIcon that opens a dropdown menu of them, in their original order
|
|
150
|
+
And leave every primary-variant action visible — it is never folded into the menu
|
|
151
|
+
And leave any non-Button action (e.g. a ButtonMenu trigger) visible and unfolded, even with variant="secondary" — folding only covers a plain button with a single click action
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
```gherkin
|
|
155
|
+
Scenario: Actions fit
|
|
156
|
+
Given a PageHeaderActions slot
|
|
157
|
+
When the full set of actions fits the width available to the slot
|
|
158
|
+
Then render every action directly, with no "More" ButtonIcon
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Accessibility
|
|
162
|
+
|
|
163
|
+
- The region is a `banner` landmark and the title is an `<h1>` — one page title per
|
|
164
|
+
page; ensure it fits the document outline.
|
|
165
|
+
- If a breadcrumb is composed above PageHeader, it's a separate `Breadcrumb` with
|
|
166
|
+
its own `<nav aria-label="breadcrumb">` — not a PageHeader part, so it carries
|
|
167
|
+
its own accessibility contract (see the Breadcrumb spec).
|
|
168
|
+
- Don't rely on placement alone for actions — give icon-only action buttons labels.
|
|
169
|
+
- The edit affordance next to the title or description is a plain `ButtonIcon`;
|
|
170
|
+
give it a descriptive `aria-label` (e.g. "Edit title", "Edit description") since
|
|
171
|
+
the pencil icon alone has no accessible name.
|
|
172
|
+
- The tags overflow indicator is a `Tag` wrapped in a `Tooltip` — its hidden-label
|
|
173
|
+
list opens on hover _and_ keyboard focus (Tooltip's Base UI primitive handles
|
|
174
|
+
both), so the hidden tags' labels aren't hover-only information.
|
|
175
|
+
- The actions overflow control is a `ButtonIcon` with `aria-label="More actions"`,
|
|
176
|
+
opening a `DropdownMenu` (Base UI `Menu`) of the hidden secondary actions — full
|
|
177
|
+
keyboard nav (arrow keys, typeahead, Esc) comes from the primitive.
|
|
178
|
+
|
|
179
|
+
## Contrast
|
|
180
|
+
|
|
181
|
+
Title uses `--ui-text-on-surface-primary`; description uses
|
|
182
|
+
`--ui-text-on-surface-secondary`. Both meet contrast in light and dark.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Pagination
|
|
2
|
+
|
|
3
|
+
> Navigation for paged content — previous / next controls, numbered page links with a current-page marker, and an ellipsis for skipped ranges. Markup-only (no Base UI primitive). Ported from the legacy shadcn-uikit `pagination`.
|
|
4
|
+
|
|
5
|
+
**Status:** draft · **Category:** navigation · **Since:** v0.51.0
|
|
6
|
+
|
|
7
|
+
## Import
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis } from '@acronis-platform/ui-react'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick example
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Pagination>
|
|
17
|
+
<PaginationContent>
|
|
18
|
+
<PaginationItem><PaginationPrevious href="#" /></PaginationItem>
|
|
19
|
+
<PaginationItem><PaginationLink href="#" isActive>1</PaginationLink></PaginationItem>
|
|
20
|
+
<PaginationItem><PaginationNext href="#" /></PaginationItem>
|
|
21
|
+
</PaginationContent>
|
|
22
|
+
</Pagination>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Navigation for paged content — previous / next controls, numbered page links with
|
|
26
|
+
a current-page marker, and an ellipsis for skipped ranges. Markup-only; you wire
|
|
27
|
+
the navigation and decide the active page.
|
|
28
|
+
|
|
29
|
+
> Design-pending v1, ported from the legacy shadcn-uikit `pagination`.
|
|
30
|
+
|
|
31
|
+
## When to use
|
|
32
|
+
|
|
33
|
+
- Splitting a long list/table across pages with direct page access.
|
|
34
|
+
|
|
35
|
+
## When not to use
|
|
36
|
+
|
|
37
|
+
- Inside a `DataTable` — use its built-in `DataTablePagination`.
|
|
38
|
+
- Continuous loading — use infinite scroll / a "Load more" button.
|
|
39
|
+
|
|
40
|
+
## Parts
|
|
41
|
+
|
|
42
|
+
| Export | Purpose |
|
|
43
|
+
| -------------------- | ------------------------------------------------ |
|
|
44
|
+
| `Pagination` | The `<nav>` landmark. |
|
|
45
|
+
| `PaginationContent` | The `<ul>` row of items. |
|
|
46
|
+
| `PaginationItem` | An `<li>` wrapper. |
|
|
47
|
+
| `PaginationLink` | A page link (`isActive` marks the current page). |
|
|
48
|
+
| `PaginationPrevious` | Previous-page control (chevron). |
|
|
49
|
+
| `PaginationNext` | Next-page control (chevron). |
|
|
50
|
+
| `PaginationEllipsis` | A skipped-range indicator. |
|
|
51
|
+
|
|
52
|
+
## Example
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
import {
|
|
56
|
+
Pagination,
|
|
57
|
+
PaginationContent,
|
|
58
|
+
PaginationItem,
|
|
59
|
+
PaginationLink,
|
|
60
|
+
PaginationPrevious,
|
|
61
|
+
PaginationNext,
|
|
62
|
+
PaginationEllipsis,
|
|
63
|
+
} from '@acronis-platform/ui-react';
|
|
64
|
+
|
|
65
|
+
<Pagination>
|
|
66
|
+
<PaginationContent>
|
|
67
|
+
<PaginationItem>
|
|
68
|
+
<PaginationPrevious href="#" />
|
|
69
|
+
</PaginationItem>
|
|
70
|
+
<PaginationItem>
|
|
71
|
+
<PaginationLink href="#">1</PaginationLink>
|
|
72
|
+
</PaginationItem>
|
|
73
|
+
<PaginationItem>
|
|
74
|
+
<PaginationLink href="#" isActive>
|
|
75
|
+
2
|
|
76
|
+
</PaginationLink>
|
|
77
|
+
</PaginationItem>
|
|
78
|
+
<PaginationItem>
|
|
79
|
+
<PaginationEllipsis />
|
|
80
|
+
</PaginationItem>
|
|
81
|
+
<PaginationItem>
|
|
82
|
+
<PaginationNext href="#" />
|
|
83
|
+
</PaginationItem>
|
|
84
|
+
</PaginationContent>
|
|
85
|
+
</Pagination>;
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Props
|
|
89
|
+
|
|
90
|
+
| Prop | Type | Default | Required | Description |
|
|
91
|
+
|------|------|---------|----------|-------------|
|
|
92
|
+
| `isActive` | `boolean` | `false` | no | On PaginationLink — marks the current page (sets aria-current="page" and the selected treatment). |
|
|
93
|
+
|
|
94
|
+
## Behavior
|
|
95
|
+
|
|
96
|
+
Pagination is presentational — it renders the controls; the caller wires
|
|
97
|
+
navigation (`href` or `onClick`) and decides which page is active.
|
|
98
|
+
|
|
99
|
+
```gherkin
|
|
100
|
+
Scenario: Mark the current page
|
|
101
|
+
Given a PaginationLink with isActive
|
|
102
|
+
Then it shows aria-current="page" and the selected treatment
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```gherkin
|
|
106
|
+
Scenario: Previous / next
|
|
107
|
+
Given PaginationPrevious / PaginationNext
|
|
108
|
+
Then they render labelled chevron controls the caller wires to navigate
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
```gherkin
|
|
112
|
+
Scenario: Skipped range
|
|
113
|
+
Given a gap between page ranges
|
|
114
|
+
Then a PaginationEllipsis stands in for the skipped pages
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Accessibility
|
|
118
|
+
|
|
119
|
+
- The root is a `<nav>` landmark labelled "pagination"; the items are a real
|
|
120
|
+
`<ul>` / `<li>` list of links.
|
|
121
|
+
- The current page link carries `aria-current="page"`; previous / next links have
|
|
122
|
+
explicit labels ("Go to previous page" / "Go to next page").
|
|
123
|
+
- The ellipsis is `aria-hidden` with an `sr-only` "More pages" so it isn't read as
|
|
124
|
+
an interactive control.
|
|
125
|
+
- Render the page controls as real links (`href`) or buttons so they're keyboard
|
|
126
|
+
operable; don't rely on color alone for the current page (the `aria-current`
|
|
127
|
+
state conveys it).
|
|
128
|
+
|
|
129
|
+
## Contrast
|
|
130
|
+
|
|
131
|
+
Page links use the foreground over the page surface; the active page uses
|
|
132
|
+
`--ui-background-surface-active` and hover uses `--ui-background-surface-hover` —
|
|
133
|
+
both meet contrast in light and dark. The focus ring uses `--ui-focus-primary`.
|