@ceed/ads 1.30.0 → 1.30.1
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/Overview.md +5 -5
- package/dist/components/data-display/Avatar.md +85 -74
- package/dist/components/data-display/Badge.md +23 -5
- package/dist/components/data-display/Chip.md +49 -35
- package/dist/components/data-display/DataTable.md +93 -0
- package/dist/components/data-display/InfoSign.md +15 -5
- package/dist/components/data-display/Markdown.md +22 -26
- package/dist/components/data-display/Table.md +63 -53
- package/dist/components/data-display/Tooltip.md +70 -58
- package/dist/components/data-display/Typography.md +28 -11
- package/dist/components/feedback/Alert.md +86 -74
- package/dist/components/feedback/CircularProgress.md +20 -5
- package/dist/components/feedback/Dialog.md +8 -12
- package/dist/components/feedback/Modal.md +12 -16
- package/dist/components/feedback/Skeleton.md +20 -5
- package/dist/components/inputs/Autocomplete.md +8 -10
- package/dist/components/inputs/Button.md +107 -87
- package/dist/components/inputs/ButtonGroup.md +20 -5
- package/dist/components/inputs/Calendar.md +25 -5
- package/dist/components/inputs/Checkbox.md +171 -450
- package/dist/components/inputs/CurrencyInput.md +25 -5
- package/dist/components/inputs/DatePicker.md +39 -5
- package/dist/components/inputs/DateRangePicker.md +29 -5
- package/dist/components/inputs/FilterMenu.md +85 -9
- package/dist/components/inputs/FilterableCheckboxGroup.md +23 -8
- package/dist/components/inputs/FormControl.md +34 -6
- package/dist/components/inputs/IconButton.md +21 -5
- package/dist/components/inputs/Input.md +254 -68
- package/dist/components/inputs/MonthPicker.md +28 -5
- package/dist/components/inputs/MonthRangePicker.md +26 -5
- package/dist/components/inputs/PercentageInput.md +28 -5
- package/dist/components/inputs/RadioButton.md +26 -5
- package/dist/components/inputs/RadioList.md +23 -6
- package/dist/components/inputs/RadioTileGroup.md +40 -8
- package/dist/components/inputs/Select.md +59 -5
- package/dist/components/inputs/Slider.md +26 -5
- package/dist/components/inputs/Switch.md +23 -5
- package/dist/components/inputs/Textarea.md +27 -5
- package/dist/components/inputs/Uploader/Uploader.md +24 -5
- package/dist/components/layout/Box.md +66 -58
- package/dist/components/layout/Container.md +9 -13
- package/dist/components/layout/Grid.md +91 -75
- package/dist/components/layout/Stack.md +85 -70
- package/dist/components/navigation/Breadcrumbs.md +23 -14
- package/dist/components/navigation/Dropdown.md +29 -20
- package/dist/components/navigation/IconMenuButton.md +24 -11
- package/dist/components/navigation/InsetDrawer.md +16 -5
- package/dist/components/navigation/Link.md +30 -14
- package/dist/components/navigation/Menu.md +33 -20
- package/dist/components/navigation/MenuButton.md +26 -12
- package/dist/components/navigation/NavigationGroup.md +7 -11
- package/dist/components/navigation/NavigationItem.md +8 -12
- package/dist/components/navigation/Navigator.md +5 -9
- package/dist/components/navigation/Pagination.md +21 -12
- package/dist/components/navigation/ProfileMenu.md +17 -5
- package/dist/components/navigation/Stepper.md +18 -5
- package/dist/components/navigation/Tabs.md +37 -14
- package/dist/components/surfaces/Accordions.md +12 -16
- package/dist/components/surfaces/Card.md +59 -47
- package/dist/components/surfaces/Divider.md +70 -61
- package/dist/components/surfaces/Sheet.md +18 -5
- package/package.json +1 -1
|
@@ -57,9 +57,7 @@ Dropdown -- state container (open/close)
|
|
|
57
57
|
|
|
58
58
|
See the [Dropdown](?path=/docs/components-navigation-dropdown--docs) documentation for guidance on when to use the composition pattern versus the standalone MenuButton/IconMenuButton components.
|
|
59
59
|
|
|
60
|
-
##
|
|
61
|
-
|
|
62
|
-
### Basic Menu
|
|
60
|
+
## Menu Basic
|
|
63
61
|
|
|
64
62
|
A standard menu with simple text items, optionally separated by dividers.
|
|
65
63
|
|
|
@@ -90,7 +88,7 @@ A standard menu with simple text items, optionally separated by dividers.
|
|
|
90
88
|
</Stack>
|
|
91
89
|
```
|
|
92
90
|
|
|
93
|
-
|
|
91
|
+
## Menu Sizes
|
|
94
92
|
|
|
95
93
|
Menu supports `sm`, `md`, and `lg` sizes that affect the padding and font size of all items.
|
|
96
94
|
|
|
@@ -131,7 +129,7 @@ Menu supports `sm`, `md`, and `lg` sizes that affect the padding and font size o
|
|
|
131
129
|
</Stack>
|
|
132
130
|
```
|
|
133
131
|
|
|
134
|
-
|
|
132
|
+
## Menu Item States
|
|
135
133
|
|
|
136
134
|
MenuItems can be `selected`, `disabled`, or colored with semantic colors like `primary`, `danger`, `success`, and `warning`.
|
|
137
135
|
|
|
@@ -150,7 +148,7 @@ MenuItems can be `selected`, `disabled`, or colored with semantic colors like `p
|
|
|
150
148
|
</Dropdown>
|
|
151
149
|
```
|
|
152
150
|
|
|
153
|
-
|
|
151
|
+
## Menu Items with Icons
|
|
154
152
|
|
|
155
153
|
Add icons before item text to improve scannability. Use consistent icon sizing with `sx={{ mr: 1.5, fontSize: 'lg' }}`.
|
|
156
154
|
|
|
@@ -193,7 +191,7 @@ Add icons before item text to improve scannability. Use consistent icon sizing w
|
|
|
193
191
|
</Dropdown>
|
|
194
192
|
```
|
|
195
193
|
|
|
196
|
-
|
|
194
|
+
## Menu Actions
|
|
197
195
|
|
|
198
196
|
Build action menus for CRUD operations. Use `color="danger"` to highlight destructive actions.
|
|
199
197
|
|
|
@@ -236,7 +234,7 @@ Build action menus for CRUD operations. Use `color="danger"` to highlight destru
|
|
|
236
234
|
</Dropdown>
|
|
237
235
|
```
|
|
238
236
|
|
|
239
|
-
|
|
237
|
+
## Menu Clickable Items
|
|
240
238
|
|
|
241
239
|
Attach `onClick` handlers to menu items to respond to user selections.
|
|
242
240
|
|
|
@@ -255,7 +253,7 @@ Attach `onClick` handlers to menu items to respond to user selections.
|
|
|
255
253
|
</Stack>
|
|
256
254
|
```
|
|
257
255
|
|
|
258
|
-
|
|
256
|
+
## Menu Links
|
|
259
257
|
|
|
260
258
|
Use the `component="a"` prop on MenuItem to render items as anchor links for navigation.
|
|
261
259
|
|
|
@@ -279,7 +277,7 @@ Use the `component="a"` prop on MenuItem to render items as anchor links for nav
|
|
|
279
277
|
</Dropdown>
|
|
280
278
|
```
|
|
281
279
|
|
|
282
|
-
|
|
280
|
+
## Menu Profile
|
|
283
281
|
|
|
284
282
|
Combine custom Box content (user info header) with standard MenuItem entries for rich profile menus.
|
|
285
283
|
|
|
@@ -349,7 +347,7 @@ Combine custom Box content (user info header) with standard MenuItem entries for
|
|
|
349
347
|
</Dropdown>
|
|
350
348
|
```
|
|
351
349
|
|
|
352
|
-
|
|
350
|
+
## Menu Placements
|
|
353
351
|
|
|
354
352
|
Control the position of the menu panel relative to the trigger using the `placement` prop. Supported values include `top-start`, `top`, `top-end`, `bottom-start`, `bottom`, and `bottom-end`.
|
|
355
353
|
|
|
@@ -418,7 +416,7 @@ Control the position of the menu panel relative to the trigger using the `placem
|
|
|
418
416
|
</Stack>
|
|
419
417
|
```
|
|
420
418
|
|
|
421
|
-
|
|
419
|
+
## Menu Scrollable
|
|
422
420
|
|
|
423
421
|
For menus with many items, apply `maxHeight` and `overflow: 'auto'` through the `sx` prop.
|
|
424
422
|
|
|
@@ -436,7 +434,7 @@ For menus with many items, apply `maxHeight` and `overflow: 'auto'` through the
|
|
|
436
434
|
</Dropdown>
|
|
437
435
|
```
|
|
438
436
|
|
|
439
|
-
|
|
437
|
+
## Menu Custom Styling
|
|
440
438
|
|
|
441
439
|
Customize the menu panel appearance with border-radius, shadows, borders, and custom item spacing.
|
|
442
440
|
|
|
@@ -500,7 +498,7 @@ Customize the menu panel appearance with border-radius, shadows, borders, and cu
|
|
|
500
498
|
</Stack>
|
|
501
499
|
```
|
|
502
500
|
|
|
503
|
-
|
|
501
|
+
## Menu in Card
|
|
504
502
|
|
|
505
503
|
Embed a Dropdown menu inside cards or other container components for contextual actions.
|
|
506
504
|
|
|
@@ -560,7 +558,7 @@ Embed a Dropdown menu inside cards or other container components for contextual
|
|
|
560
558
|
</Sheet>
|
|
561
559
|
```
|
|
562
560
|
|
|
563
|
-
|
|
561
|
+
## Menu Nested Content
|
|
564
562
|
|
|
565
563
|
Menu can contain non-MenuItem elements like Box, Typography, and progress indicators alongside standard items.
|
|
566
564
|
|
|
@@ -646,9 +644,7 @@ Menu can contain non-MenuItem elements like Box, Typography, and progress indica
|
|
|
646
644
|
</Dropdown>
|
|
647
645
|
```
|
|
648
646
|
|
|
649
|
-
##
|
|
650
|
-
|
|
651
|
-
### Action Menu with Icons
|
|
647
|
+
## Action Menu with Icons
|
|
652
648
|
|
|
653
649
|
```tsx
|
|
654
650
|
<Dropdown>
|
|
@@ -671,7 +667,7 @@ Menu can contain non-MenuItem elements like Box, Typography, and progress indica
|
|
|
671
667
|
</Dropdown>
|
|
672
668
|
```
|
|
673
669
|
|
|
674
|
-
|
|
670
|
+
## Navigation Menu
|
|
675
671
|
|
|
676
672
|
```tsx
|
|
677
673
|
<Dropdown>
|
|
@@ -686,7 +682,7 @@ Menu can contain non-MenuItem elements like Box, Typography, and progress indica
|
|
|
686
682
|
</Dropdown>
|
|
687
683
|
```
|
|
688
684
|
|
|
689
|
-
|
|
685
|
+
## User Profile Menu
|
|
690
686
|
|
|
691
687
|
```tsx
|
|
692
688
|
<Dropdown>
|
|
@@ -719,6 +715,23 @@ Menu can contain non-MenuItem elements like Box, Typography, and progress indica
|
|
|
719
715
|
</Dropdown>
|
|
720
716
|
```
|
|
721
717
|
|
|
718
|
+
## Props and Customization
|
|
719
|
+
|
|
720
|
+
### Key Props
|
|
721
|
+
|
|
722
|
+
| Prop | Type | Default | Description |
|
|
723
|
+
| ----------- | -------------------------------------------------------------- | ---------------- | ---------------------------------------- |
|
|
724
|
+
| `children` | `ReactNode` | - | Menu items (MenuItem, ListDivider, etc.) |
|
|
725
|
+
| `open` | `boolean` | - | Controlled open state |
|
|
726
|
+
| `onClose` | `() => void` | - | Callback when the menu closes |
|
|
727
|
+
| `placement` | `Placement` | `'bottom-start'` | Menu position relative to trigger |
|
|
728
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Menu size |
|
|
729
|
+
| `variant` | `'solid' \| 'soft' \| 'outlined' \| 'plain'` | `'outlined'` | Visual style |
|
|
730
|
+
| `color` | `'primary' \| 'neutral' \| 'danger' \| 'success' \| 'warning'` | `'neutral'` | Color scheme |
|
|
731
|
+
| `sx` | `SxProps` | - | Custom styles |
|
|
732
|
+
|
|
733
|
+
> **Note**: Menu also accepts all Joy UI Menu props and Framer Motion props.
|
|
734
|
+
|
|
722
735
|
## Best Practices
|
|
723
736
|
|
|
724
737
|
- **Use ListDivider to group related items.** Logical grouping helps users scan the menu faster. Place destructive actions (like Delete) in their own group at the bottom.
|
|
@@ -61,9 +61,7 @@ function UserMenu() {
|
|
|
61
61
|
| **IconMenuButton** | Icon button | Simple item list | Space is limited (tables, cards, toolbars) |
|
|
62
62
|
| **Dropdown + Menu** | Any element | Rich content | You need dividers, headers, icons in items, or custom layout |
|
|
63
63
|
|
|
64
|
-
##
|
|
65
|
-
|
|
66
|
-
### Standalone (Without Dropdown Icon)
|
|
64
|
+
## Standalone MenuButton Without Dropdown Icon
|
|
67
65
|
|
|
68
66
|
Use `showIcon={false}` and a custom `buttonComponent` to render MenuButton as a standalone navigation link without the dropdown indicator.
|
|
69
67
|
|
|
@@ -87,7 +85,7 @@ Use `showIcon={false}` and a custom `buttonComponent` to render MenuButton as a
|
|
|
87
85
|
/>
|
|
88
86
|
```
|
|
89
87
|
|
|
90
|
-
|
|
88
|
+
## MenuButton with End Decorator
|
|
91
89
|
|
|
92
90
|
Add badges, chips, or icons after the button text using `endDecorator`.
|
|
93
91
|
|
|
@@ -108,7 +106,7 @@ Add badges, chips, or icons after the button text using `endDecorator`.
|
|
|
108
106
|
/>
|
|
109
107
|
```
|
|
110
108
|
|
|
111
|
-
|
|
109
|
+
## MenuButton Placement Bottom Start
|
|
112
110
|
|
|
113
111
|
Menu aligns to the left edge of the trigger button.
|
|
114
112
|
|
|
@@ -129,7 +127,7 @@ Menu aligns to the left edge of the trigger button.
|
|
|
129
127
|
/>
|
|
130
128
|
```
|
|
131
129
|
|
|
132
|
-
|
|
130
|
+
## MenuButton Placement Bottom
|
|
133
131
|
|
|
134
132
|
Menu centers below the trigger button.
|
|
135
133
|
|
|
@@ -150,7 +148,7 @@ Menu centers below the trigger button.
|
|
|
150
148
|
/>
|
|
151
149
|
```
|
|
152
150
|
|
|
153
|
-
|
|
151
|
+
## MenuButton Placement Bottom End
|
|
154
152
|
|
|
155
153
|
Menu aligns to the right edge of the trigger button.
|
|
156
154
|
|
|
@@ -171,9 +169,7 @@ Menu aligns to the right edge of the trigger button.
|
|
|
171
169
|
/>
|
|
172
170
|
```
|
|
173
171
|
|
|
174
|
-
##
|
|
175
|
-
|
|
176
|
-
### User Account Menu
|
|
172
|
+
## User Account Menu
|
|
177
173
|
|
|
178
174
|
```tsx
|
|
179
175
|
function AccountMenu({ user, onLogout }) {
|
|
@@ -193,7 +189,7 @@ function AccountMenu({ user, onLogout }) {
|
|
|
193
189
|
}
|
|
194
190
|
```
|
|
195
191
|
|
|
196
|
-
|
|
192
|
+
## Export Options Menu
|
|
197
193
|
|
|
198
194
|
```tsx
|
|
199
195
|
function ExportMenu({ onExport }) {
|
|
@@ -212,7 +208,7 @@ function ExportMenu({ onExport }) {
|
|
|
212
208
|
}
|
|
213
209
|
```
|
|
214
210
|
|
|
215
|
-
|
|
211
|
+
## Toolbar Actions Menu
|
|
216
212
|
|
|
217
213
|
```tsx
|
|
218
214
|
function ToolbarActions({ selectedItems, onAction }) {
|
|
@@ -233,6 +229,24 @@ function ToolbarActions({ selectedItems, onAction }) {
|
|
|
233
229
|
}
|
|
234
230
|
```
|
|
235
231
|
|
|
232
|
+
## Props and Customization
|
|
233
|
+
|
|
234
|
+
### Key Props
|
|
235
|
+
|
|
236
|
+
| Prop | Type | Default | Description |
|
|
237
|
+
| ----------------- | -------------------------------------------------------------- | ---------------- | ------------------------------------ |
|
|
238
|
+
| `buttonText` | `string` | (required) | Text displayed in the trigger button |
|
|
239
|
+
| `items` | `{ text: string; onClick?: () => void }[]` | (required) | Menu item list |
|
|
240
|
+
| `variant` | `'solid' \| 'soft' \| 'outlined' \| 'plain'` | `'outlined'` | Button visual style |
|
|
241
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Button size |
|
|
242
|
+
| `color` | `'primary' \| 'neutral' \| 'danger' \| 'success' \| 'warning'` | `'neutral'` | Button color |
|
|
243
|
+
| `disabled` | `boolean` | `false` | Disables the button |
|
|
244
|
+
| `startDecorator` | `ReactNode` | - | Content before button text |
|
|
245
|
+
| `endDecorator` | `ReactNode` | - | Content after button text |
|
|
246
|
+
| `showIcon` | `boolean` | `true` | Show dropdown arrow icon |
|
|
247
|
+
| `placement` | `Placement` | `'bottom-start'` | Menu position |
|
|
248
|
+
| `buttonComponent` | `ElementType` | - | Custom trigger element |
|
|
249
|
+
|
|
236
250
|
## Best Practices
|
|
237
251
|
|
|
238
252
|
- **Use descriptive button text.** The button label should clearly indicate what kind of options the menu contains. Avoid vague labels like "More" or "Options" -- prefer specific labels like "Export Options" or "User Actions".
|
|
@@ -32,9 +32,7 @@ function Sidebar() {
|
|
|
32
32
|
}
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
##
|
|
36
|
-
|
|
37
|
-
### Default
|
|
35
|
+
## NavigationGroup Default
|
|
38
36
|
|
|
39
37
|
Basic navigation group with a title and content.
|
|
40
38
|
|
|
@@ -42,7 +40,7 @@ Basic navigation group with a title and content.
|
|
|
42
40
|
// Unable to derive source for Default
|
|
43
41
|
```
|
|
44
42
|
|
|
45
|
-
|
|
43
|
+
## NavigationGroup Nesting Levels
|
|
46
44
|
|
|
47
45
|
NavigationGroup supports different indentation levels for nested hierarchies.
|
|
48
46
|
|
|
@@ -54,7 +52,7 @@ NavigationGroup supports different indentation levels for nested hierarchies.
|
|
|
54
52
|
// Unable to derive source for Level2
|
|
55
53
|
```
|
|
56
54
|
|
|
57
|
-
|
|
55
|
+
## NavigationGroup with Start Decorator
|
|
58
56
|
|
|
59
57
|
Add an icon before the group title.
|
|
60
58
|
|
|
@@ -62,7 +60,7 @@ Add an icon before the group title.
|
|
|
62
60
|
// Unable to derive source for WithStartDecorator
|
|
63
61
|
```
|
|
64
62
|
|
|
65
|
-
|
|
63
|
+
## NavigationGroup Levels with Icons
|
|
66
64
|
|
|
67
65
|
Icons work at any nesting level.
|
|
68
66
|
|
|
@@ -92,9 +90,7 @@ Icons work at any nesting level.
|
|
|
92
90
|
- **Modal dialogs**: Use proper modal patterns instead
|
|
93
91
|
- **Accordion content**: For non-navigation accordions, use Accordion directly
|
|
94
92
|
|
|
95
|
-
##
|
|
96
|
-
|
|
97
|
-
### Admin Module Navigation
|
|
93
|
+
## Admin Module Navigation with NavigationGroup
|
|
98
94
|
|
|
99
95
|
```tsx
|
|
100
96
|
function AdminNavigation() {
|
|
@@ -150,7 +146,7 @@ function AdminNavigation() {
|
|
|
150
146
|
}
|
|
151
147
|
```
|
|
152
148
|
|
|
153
|
-
|
|
149
|
+
## Nested NavigationGroups
|
|
154
150
|
|
|
155
151
|
```tsx
|
|
156
152
|
function NestedNavigation() {
|
|
@@ -199,7 +195,7 @@ function NestedNavigation() {
|
|
|
199
195
|
}
|
|
200
196
|
```
|
|
201
197
|
|
|
202
|
-
|
|
198
|
+
## Documentation Sidebar with NavigationGroup
|
|
203
199
|
|
|
204
200
|
```tsx
|
|
205
201
|
function DocsSidebar({ sections, currentPath }) {
|
|
@@ -31,9 +31,7 @@ function Sidebar() {
|
|
|
31
31
|
}
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
##
|
|
35
|
-
|
|
36
|
-
### Default
|
|
34
|
+
## NavigationItem Default
|
|
37
35
|
|
|
38
36
|
Basic navigation item with text content.
|
|
39
37
|
|
|
@@ -41,7 +39,7 @@ Basic navigation item with text content.
|
|
|
41
39
|
// Unable to derive source for Default
|
|
42
40
|
```
|
|
43
41
|
|
|
44
|
-
|
|
42
|
+
## NavigationItem Selected State
|
|
45
43
|
|
|
46
44
|
Shows the visual indicator for the currently active navigation item.
|
|
47
45
|
|
|
@@ -49,7 +47,7 @@ Shows the visual indicator for the currently active navigation item.
|
|
|
49
47
|
// Unable to derive source for Selected
|
|
50
48
|
```
|
|
51
49
|
|
|
52
|
-
|
|
50
|
+
## NavigationItem with Icon
|
|
53
51
|
|
|
54
52
|
Add an icon before the navigation item text.
|
|
55
53
|
|
|
@@ -57,7 +55,7 @@ Add an icon before the navigation item text.
|
|
|
57
55
|
// Unable to derive source for WithStartDecorator
|
|
58
56
|
```
|
|
59
57
|
|
|
60
|
-
|
|
58
|
+
## NavigationItem Nesting Levels
|
|
61
59
|
|
|
62
60
|
NavigationItem supports different indentation levels for hierarchical navigation.
|
|
63
61
|
|
|
@@ -69,7 +67,7 @@ NavigationItem supports different indentation levels for hierarchical navigation
|
|
|
69
67
|
// Unable to derive source for Level2
|
|
70
68
|
```
|
|
71
69
|
|
|
72
|
-
|
|
70
|
+
## NavigationItem Levels with Icons
|
|
73
71
|
|
|
74
72
|
Icons work at any nesting level.
|
|
75
73
|
|
|
@@ -98,9 +96,7 @@ Icons work at any nesting level.
|
|
|
98
96
|
- **Breadcrumbs**: Use Breadcrumbs component for path navigation
|
|
99
97
|
- **Dropdown menus**: Use Dropdown with Menu for popup menus
|
|
100
98
|
|
|
101
|
-
##
|
|
102
|
-
|
|
103
|
-
### Sidebar with Selection State
|
|
99
|
+
## Sidebar Navigation with NavigationItem
|
|
104
100
|
|
|
105
101
|
```tsx
|
|
106
102
|
function Sidebar({ currentPath }) {
|
|
@@ -139,7 +135,7 @@ function Sidebar({ currentPath }) {
|
|
|
139
135
|
}
|
|
140
136
|
```
|
|
141
137
|
|
|
142
|
-
|
|
138
|
+
## Nested NavigationItems
|
|
143
139
|
|
|
144
140
|
```tsx
|
|
145
141
|
function NestedNavigation() {
|
|
@@ -163,7 +159,7 @@ function NestedNavigation() {
|
|
|
163
159
|
}
|
|
164
160
|
```
|
|
165
161
|
|
|
166
|
-
|
|
162
|
+
## Dynamic Navigation from Data
|
|
167
163
|
|
|
168
164
|
```tsx
|
|
169
165
|
function DynamicNavigation({ menuItems, selectedId, onSelect }) {
|
|
@@ -41,9 +41,7 @@ function Sidebar() {
|
|
|
41
41
|
}
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
##
|
|
45
|
-
|
|
46
|
-
### Basic Navigation
|
|
44
|
+
## Basic Navigation
|
|
47
45
|
|
|
48
46
|
A simple navigation with items and a collapsible group.
|
|
49
47
|
|
|
@@ -51,7 +49,7 @@ A simple navigation with items and a collapsible group.
|
|
|
51
49
|
// Unable to derive source for Playground
|
|
52
50
|
```
|
|
53
51
|
|
|
54
|
-
|
|
52
|
+
## Default Expanded Navigation
|
|
55
53
|
|
|
56
54
|
Groups can be expanded by default using the `expanded` property.
|
|
57
55
|
|
|
@@ -77,9 +75,7 @@ Groups can be expanded by default using the `expanded` property.
|
|
|
77
75
|
- **Flat navigation**: When all items are at the same level, use simple list
|
|
78
76
|
- **Wizard/step flows**: Use Stepper for sequential processes
|
|
79
77
|
|
|
80
|
-
##
|
|
81
|
-
|
|
82
|
-
### Admin Dashboard Sidebar
|
|
78
|
+
## Admin Dashboard Sidebar
|
|
83
79
|
|
|
84
80
|
```tsx
|
|
85
81
|
function AdminSidebar() {
|
|
@@ -130,7 +126,7 @@ function AdminSidebar() {
|
|
|
130
126
|
}
|
|
131
127
|
```
|
|
132
128
|
|
|
133
|
-
|
|
129
|
+
## File Browser Navigation
|
|
134
130
|
|
|
135
131
|
```tsx
|
|
136
132
|
function FileBrowser({ folders, onFolderSelect }) {
|
|
@@ -170,7 +166,7 @@ function FileBrowser({ folders, onFolderSelect }) {
|
|
|
170
166
|
}
|
|
171
167
|
```
|
|
172
168
|
|
|
173
|
-
|
|
169
|
+
## Multi-level Documentation Navigation
|
|
174
170
|
|
|
175
171
|
```tsx
|
|
176
172
|
function DocsNavigation({ sections, currentPath }) {
|
|
@@ -46,9 +46,7 @@ function DataList() {
|
|
|
46
46
|
}
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
##
|
|
50
|
-
|
|
51
|
-
### Sizes
|
|
49
|
+
## Pagination Sizes
|
|
52
50
|
|
|
53
51
|
Pagination is available in three sizes -- `sm`, `md`, and `lg` -- for both the standard and compact variants.
|
|
54
52
|
|
|
@@ -69,7 +67,7 @@ Pagination is available in three sizes -- `sm`, `md`, and `lg` -- for both the s
|
|
|
69
67
|
</Stack>
|
|
70
68
|
```
|
|
71
69
|
|
|
72
|
-
|
|
70
|
+
## Pagination Page Positions
|
|
73
71
|
|
|
74
72
|
The component correctly handles the visual presentation when the user is at the beginning, middle, or end of the page range, adjusting ellipsis buttons and disabled states accordingly.
|
|
75
73
|
|
|
@@ -108,7 +106,7 @@ The component correctly handles the visual presentation when the user is at the
|
|
|
108
106
|
</Stack>
|
|
109
107
|
```
|
|
110
108
|
|
|
111
|
-
|
|
109
|
+
## Uncontrolled Pagination
|
|
112
110
|
|
|
113
111
|
In uncontrolled mode the component manages its own page state internally. Pass `defaultPaginationModel` to set the initial state and use `onPageChange` to react to changes.
|
|
114
112
|
|
|
@@ -116,7 +114,7 @@ In uncontrolled mode the component manages its own page state internally. Pass `
|
|
|
116
114
|
<Pagination {...args} />
|
|
117
115
|
```
|
|
118
116
|
|
|
119
|
-
|
|
117
|
+
## Controlled Pagination
|
|
120
118
|
|
|
121
119
|
In controlled mode the parent component owns the page state via `paginationModel` and updates it through `onPageChange`. This gives full control over navigation behavior.
|
|
122
120
|
|
|
@@ -124,7 +122,7 @@ In controlled mode the parent component owns the page state via `paginationModel
|
|
|
124
122
|
<Pagination {...args} paginationModel={paginationModel} onPageChange={handlePageChange} />
|
|
125
123
|
```
|
|
126
124
|
|
|
127
|
-
|
|
125
|
+
## Pagination with Dynamic Row Count
|
|
128
126
|
|
|
129
127
|
Pagination automatically adjusts when the total number of items changes. If the current page exceeds the new page count, the component clamps to the last available page.
|
|
130
128
|
|
|
@@ -138,9 +136,7 @@ Pagination automatically adjusts when the total number of items changes. If the
|
|
|
138
136
|
</Stack>
|
|
139
137
|
```
|
|
140
138
|
|
|
141
|
-
##
|
|
142
|
-
|
|
143
|
-
### Data Table Pagination
|
|
139
|
+
## Pagination for Data Table
|
|
144
140
|
|
|
145
141
|
```tsx
|
|
146
142
|
function DataTable({ columns }) {
|
|
@@ -167,7 +163,7 @@ function DataTable({ columns }) {
|
|
|
167
163
|
}
|
|
168
164
|
```
|
|
169
165
|
|
|
170
|
-
|
|
166
|
+
## Compact Pagination
|
|
171
167
|
|
|
172
168
|
```tsx
|
|
173
169
|
function SearchResults({ query }) {
|
|
@@ -193,7 +189,7 @@ function SearchResults({ query }) {
|
|
|
193
189
|
}
|
|
194
190
|
```
|
|
195
191
|
|
|
196
|
-
|
|
192
|
+
## URL-Synchronized Pagination
|
|
197
193
|
|
|
198
194
|
```tsx
|
|
199
195
|
function URLPaginatedList() {
|
|
@@ -214,6 +210,19 @@ function URLPaginatedList() {
|
|
|
214
210
|
}
|
|
215
211
|
```
|
|
216
212
|
|
|
213
|
+
## Props and Customization
|
|
214
|
+
|
|
215
|
+
### Key Props
|
|
216
|
+
|
|
217
|
+
| Prop | Type | Default | Description |
|
|
218
|
+
| ------------------------ | ------------------------------------ | --------------------------- | -------------------------- |
|
|
219
|
+
| `paginationModel` | `{ page: number; pageSize: number }` | (required) | Current page and page size |
|
|
220
|
+
| `defaultPaginationModel` | `{ page: number; pageSize: number }` | `{ page: 1, pageSize: 25 }` | Initial pagination state |
|
|
221
|
+
| `rowCount` | `number` | (required) | Total number of rows |
|
|
222
|
+
| `onPageChange` | `(newPage: number) => void` | (required) | Callback when page changes |
|
|
223
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Pagination control size |
|
|
224
|
+
| `variant` | `'standard' \| 'compact'` | `'standard'` | Pagination display mode |
|
|
225
|
+
|
|
217
226
|
## Best Practices
|
|
218
227
|
|
|
219
228
|
- **Always show context.** Display the total item count and current range (for example "Showing 1--25 of 250") alongside the pagination controls so users understand the scope of the data.
|
|
@@ -289,9 +289,7 @@ Use `defaultOpen` to set the initial state, then let the component manage its ow
|
|
|
289
289
|
/>
|
|
290
290
|
```
|
|
291
291
|
|
|
292
|
-
##
|
|
293
|
-
|
|
294
|
-
### Header Navigation
|
|
292
|
+
## Header Navigation
|
|
295
293
|
|
|
296
294
|
```tsx
|
|
297
295
|
function AppHeader() {
|
|
@@ -319,7 +317,7 @@ function AppHeader() {
|
|
|
319
317
|
}
|
|
320
318
|
```
|
|
321
319
|
|
|
322
|
-
|
|
320
|
+
## Multi-Role User
|
|
323
321
|
|
|
324
322
|
```tsx
|
|
325
323
|
function RoleBasedProfileMenu({ user, currentRole, switchRole, signOut }) {
|
|
@@ -348,7 +346,7 @@ function RoleBasedProfileMenu({ user, currentRole, switchRole, signOut }) {
|
|
|
348
346
|
}
|
|
349
347
|
```
|
|
350
348
|
|
|
351
|
-
|
|
349
|
+
## Organization Context
|
|
352
350
|
|
|
353
351
|
```tsx
|
|
354
352
|
function OrgProfileMenu({ user, organization }) {
|
|
@@ -371,6 +369,20 @@ function OrgProfileMenu({ user, organization }) {
|
|
|
371
369
|
}
|
|
372
370
|
```
|
|
373
371
|
|
|
372
|
+
## Props and Customization
|
|
373
|
+
|
|
374
|
+
### Key Props
|
|
375
|
+
|
|
376
|
+
| Prop | Type | Default | Description |
|
|
377
|
+
| -------------- | ---------------------------------------------------------------------- | --------------- | ------------------------------------------------ |
|
|
378
|
+
| `profile` | `{ name: string; image?: string; caption?: string; chip?: ReactNode }` | (required) | User profile data |
|
|
379
|
+
| `menuItems` | `{ label: string; [key: string]: any }[]` | (required) | Dropdown menu items (accepts all MenuItem props) |
|
|
380
|
+
| `open` | `boolean` | - | Controlled open state |
|
|
381
|
+
| `defaultOpen` | `boolean` | `false` | Initial open state (uncontrolled) |
|
|
382
|
+
| `onOpenChange` | `(open: boolean) => void` | - | Callback when open state changes |
|
|
383
|
+
| `getInitial` | `(name: string) => string` | First character | Custom function to extract initials from name |
|
|
384
|
+
| `size` | `'sm' \| 'md'` | `'md'` | Component size |
|
|
385
|
+
|
|
374
386
|
## Best Practices
|
|
375
387
|
|
|
376
388
|
1. **Always include essential actions**: At minimum, provide access to profile viewing and sign-out.
|
|
@@ -125,9 +125,7 @@ When `activeStep` is set to `0`, all steps are displayed in the inactive state.
|
|
|
125
125
|
// Unable to derive source for WithAllInactive
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
##
|
|
129
|
-
|
|
130
|
-
### Form Wizard
|
|
128
|
+
## Form Wizard
|
|
131
129
|
|
|
132
130
|
```tsx
|
|
133
131
|
function FormWizard() {
|
|
@@ -162,7 +160,7 @@ function FormWizard() {
|
|
|
162
160
|
}
|
|
163
161
|
```
|
|
164
162
|
|
|
165
|
-
|
|
163
|
+
## Order Tracking
|
|
166
164
|
|
|
167
165
|
```tsx
|
|
168
166
|
function OrderTracking({ currentStatus }) {
|
|
@@ -185,7 +183,7 @@ function OrderTracking({ currentStatus }) {
|
|
|
185
183
|
}
|
|
186
184
|
```
|
|
187
185
|
|
|
188
|
-
|
|
186
|
+
## Compact Progress Indicator
|
|
189
187
|
|
|
190
188
|
```tsx
|
|
191
189
|
function CompactProgress({ currentStep, totalSteps }) {
|
|
@@ -204,6 +202,21 @@ function CompactProgress({ currentStep, totalSteps }) {
|
|
|
204
202
|
}
|
|
205
203
|
```
|
|
206
204
|
|
|
205
|
+
## Props and Customization
|
|
206
|
+
|
|
207
|
+
### Key Props
|
|
208
|
+
|
|
209
|
+
| Prop | Type | Default | Description |
|
|
210
|
+
| ------------------- | --------------------------------------------------------------------------------- | --------------- | -------------------------------------------- |
|
|
211
|
+
| `steps` | `{ indicatorContent?: ReactNode; label?: ReactNode; extraContent?: ReactNode }[]` | (required) | Step definitions |
|
|
212
|
+
| `activeStep` | `number` | (required) | Currently active step index (0-based) |
|
|
213
|
+
| `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Stepper layout direction |
|
|
214
|
+
| `stepOrientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Individual step content orientation |
|
|
215
|
+
| `activeColor` | `string` | `'primary.500'` | Color for active/completed step indicators |
|
|
216
|
+
| `inactiveColor` | `string` | `'neutral.400'` | Color for inactive step indicators |
|
|
217
|
+
| `activeLineColor` | `string` | `'primary.500'` | Color for connector lines of completed steps |
|
|
218
|
+
| `inactiveLineColor` | `string` | `'neutral.300'` | Color for connector lines of future steps |
|
|
219
|
+
|
|
207
220
|
## Best Practices
|
|
208
221
|
|
|
209
222
|
1. **Keep step count manageable**: Limit the number of steps to 3-7 for optimal user comprehension. If more steps are needed, consider grouping them.
|