flet-box 1.1.1 → 1.1.3
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_FOR_CODE_GEN.md +284 -0
- package/CONTRIBUTING.md +238 -0
- package/README.md +17 -13
- package/bin/cli.js +88 -1
- package/bin/commands/auditFix.js +181 -27
- package/bin/commands/checkApi.js +14 -3
- package/bin/commands/checkStructure.js +368 -0
- package/bin/commands/checkSyntax.js +293 -0
- package/bin/commands/checkUi.js +666 -14
- package/bin/commands/create.js +18 -1
- package/bin/commands/createBundle.js +20 -8
- package/bin/commands/metrics.js +448 -0
- package/bin/commands/release.js +18 -0
- package/bin/commands/report.js +849 -0
- package/bin/commands/tools.js +76 -0
- package/bin/commands/unpack.js +39 -11
- package/bin/commands/verify.js +879 -0
- package/bin/mcp.js +280 -0
- package/bin/utils/bundleConfig.js +47 -3
- package/bin/utils/contract.js +27 -0
- package/bin/utils/dtsProps.js +5 -1
- package/bin/utils/migrationGuide.js +146 -0
- package/bin/utils/moduleExports.js +9 -5
- package/bin/utils/templates.js +248 -30
- package/bin/utils/toolkit.js +191 -0
- package/docs/README.md +26 -1
- package/docs/arquitectura.md +1 -1
- package/docs/cli/README.md +201 -11
- package/docs/guides/README.md +6 -0
- package/docs/guides/accessibility.md +2 -1
- package/docs/guides/ai-toolkit.md +166 -0
- package/docs/guides/compatibility.md +1 -1
- package/docs/guides/first-app.md +6 -7
- package/docs/guides/migration.md +92 -0
- package/docs/guides/minification-and-protection.md +2 -1
- package/docs/guides/mobile-and-platforms.md +1 -1
- package/docs/guides/online-updates.md +20 -6
- package/docs/server/deployment.md +1 -1
- package/docs/tools/styling.md +2 -2
- package/docs/tools/theme.md +139 -4
- package/docs/widget/Accordion.md +74 -8
- package/docs/widget/AdMob.md +68 -3
- package/docs/widget/AdSense.md +67 -2
- package/docs/widget/AlertDialog.md +1 -1
- package/docs/widget/AnimatedBox.md +80 -39
- package/docs/widget/AnimatedText.md +74 -18
- package/docs/widget/Audio.md +73 -14
- package/docs/widget/Avatar.md +69 -4
- package/docs/widget/Badge.md +68 -3
- package/docs/widget/BottomSheet.md +2 -2
- package/docs/widget/Button.md +69 -3
- package/docs/widget/Card.md +69 -4
- package/docs/widget/Carousel.md +67 -2
- package/docs/widget/Chart.md +67 -2
- package/docs/widget/Checkbox.md +74 -8
- package/docs/widget/Chip.md +68 -3
- package/docs/widget/CircularBar.md +74 -15
- package/docs/widget/CircularChart.md +71 -10
- package/docs/widget/CodeViewer.md +67 -2
- package/docs/widget/Column.md +68 -3
- package/docs/widget/Container.md +68 -3
- package/docs/widget/DataTable.md +67 -2
- package/docs/widget/Divider.md +67 -2
- package/docs/widget/DraggBox.md +67 -2
- package/docs/widget/Dropdown.md +76 -10
- package/docs/widget/DroppBox.md +67 -2
- package/docs/widget/FloatingActionButton.md +68 -3
- package/docs/widget/GridView.md +67 -2
- package/docs/widget/Icon.md +71 -5
- package/docs/widget/Image.md +68 -3
- package/docs/widget/Input.md +68 -3
- package/docs/widget/Inspector.md +2 -2
- package/docs/widget/InstallButton.md +73 -13
- package/docs/widget/ListTile.md +69 -3
- package/docs/widget/ListView.md +67 -2
- package/docs/widget/Maps.md +68 -3
- package/docs/widget/Markdown.md +74 -15
- package/docs/widget/MatrixRain.md +72 -11
- package/docs/widget/Menu.md +209 -0
- package/docs/widget/Modal.md +3 -3
- package/docs/widget/Pagination.md +68 -3
- package/docs/widget/ParallaxBox.md +72 -12
- package/docs/widget/ProgressBar.md +69 -4
- package/docs/widget/QRCode.md +67 -2
- package/docs/widget/README.md +54 -50
- package/docs/widget/Radio.md +76 -10
- package/docs/widget/Rating.md +70 -6
- package/docs/widget/Row.md +68 -3
- package/docs/widget/Skeleton.md +68 -3
- package/docs/widget/Slider.md +75 -9
- package/docs/widget/SnackBar.md +2 -2
- package/docs/widget/Stack.md +68 -3
- package/docs/widget/Stepper.md +68 -3
- package/docs/widget/Switch.md +74 -8
- package/docs/widget/Text.md +71 -4
- package/docs/widget/ThemePicker.md +197 -0
- package/docs/widget/Tooltip.md +72 -7
- package/docs/widget/TreeView.md +70 -10
- package/docs/widget/Video.md +71 -10
- package/package.json +10 -3
- package/skills/fletbox-design/SKILL.md +89 -5
- package/skills/fletbox-motion/SKILL.md +1 -1
- package/skills/fletbox-rules/SKILL.md +56 -4
- package/src/core/runApp.js +12 -0
- package/src/index.d.ts +374 -101
- package/src/index.js +9 -0
- package/src/navigations/AdaptiveScaffold.js +2 -2
- package/src/navigations/BottomNavigation.js +1 -1
- package/src/navigations/Scaffold.js +18 -6
- package/src/tools/useState.js +11 -4
- package/src/utils/colors.js +275 -0
- package/src/utils/errorBoundary.js +288 -0
- package/src/utils/index.js +10 -2
- package/src/utils/stackPosition.js +39 -24
- package/src/utils/syntaxHighlight.js +4 -1
- package/src/utils/themes.js +279 -3
- package/src/widget-factory/addChildren.js +17 -10
- package/src/widget-factory/assignProps.js +18 -6
- package/src/widget-factory/createWidget.js +7 -0
- package/src/widget-factory/deprecations.js +77 -0
- package/src/widget-factory/translateProps.js +11 -1
- package/src/widget-factory/warnings.js +1 -27
- package/src/widget-factory/widgetFactory.js +59 -17
- package/src/widgets/Accordion.js +21 -7
- package/src/widgets/Badge.js +11 -2
- package/src/widgets/Button.js +15 -3
- package/src/widgets/Carousel.js +12 -4
- package/src/widgets/Chart.js +7 -2
- package/src/widgets/Checkbox.js +1 -2
- package/src/widgets/Chip.js +24 -10
- package/src/widgets/CircularBar.js +9 -3
- package/src/widgets/CircularChart.js +5 -3
- package/src/widgets/Container.js +6 -0
- package/src/widgets/Divider.js +3 -1
- package/src/widgets/DraggBox.js +9 -0
- package/src/widgets/Dropdown.js +3 -3
- package/src/widgets/DroppBox.js +5 -0
- package/src/widgets/FloatingActionButton.js +1 -1
- package/src/widgets/Icon.js +5 -1
- package/src/widgets/InstallButton.js +4 -2
- package/src/widgets/Markdown.js +171 -103
- package/src/widgets/Menu.js +340 -0
- package/src/widgets/Modal.js +7 -1
- package/src/widgets/Pagination.js +10 -5
- package/src/widgets/ProgressBar.js +5 -4
- package/src/widgets/QRCode.js +4 -0
- package/src/widgets/Radio.js +1 -2
- package/src/widgets/Rating.js +9 -0
- package/src/widgets/Slider.js +4 -1
- package/src/widgets/SnackBar.js +2 -2
- package/src/widgets/Switch.js +1 -2
- package/src/widgets/Text.js +9 -5
- package/src/widgets/ThemePicker.js +234 -0
- package/src/widgets/TreeView.js +2 -1
- package/src/widgets/index.js +2 -0
- package/docs/CONTRIBUTING.md +0 -156
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Menu
|
|
2
|
+
|
|
3
|
+
A trigger button that opens an anchored menu of actions. The panel is a portal on document.body, so a row's overflow cannot clip it, and it speaks the menu keyboard pattern instead of being a second list of links.
|
|
4
|
+
|
|
5
|
+
## When to use it
|
|
6
|
+
|
|
7
|
+
Use it for the secondary actions of a row — rename, duplicate, delete — when two permanent buttons would take the space the row's own label needs.
|
|
8
|
+
|
|
9
|
+
## Quick start
|
|
10
|
+
|
|
11
|
+
```javascript
|
|
12
|
+
import { Menu } from "flet-box";
|
|
13
|
+
|
|
14
|
+
const actions = Menu({
|
|
15
|
+
label: "Conversation actions",
|
|
16
|
+
items: [
|
|
17
|
+
{ text: "Rename", icon: "edit", onPress: rename },
|
|
18
|
+
{ text: "Delete", icon: "delete", danger: true, onPress: remove },
|
|
19
|
+
],
|
|
20
|
+
});
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
> The prop table is generated from `src/index.d.ts`; the examples use only documented props.
|
|
24
|
+
|
|
25
|
+
## Props
|
|
26
|
+
|
|
27
|
+
| Prop | Type | Description |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| `items` | `MenuItem[]` | The actions, as `{ text, icon?, onPress?, disabled?, danger? }` records. `danger: true` writes the row in `colors.dangerStrong`. |
|
|
30
|
+
| `label` | `string` | Accessible name of the trigger and of the open menu. An icon-only trigger has no visible text, so this is the name a screen reader reads. |
|
|
31
|
+
| `icon` | `string` | Glyph drawn in the trigger. Defaults to `more_vert`, the vertical ellipsis a row menu is recognised by. |
|
|
32
|
+
| `width` | `number \| string` | Width of the open panel, in framework units. The trigger itself is a square `size` wide. |
|
|
33
|
+
| `align` | `'start' \| 'end'` | Which edge of the trigger the panel lines up with. `end` keeps a menu at the right edge of a row from hanging off the sidebar. |
|
|
34
|
+
| `disabled` | `boolean` | Disables interaction and shows the non-interactive state. |
|
|
35
|
+
| `portal` | `boolean` | Mount the panel on `document.body` so no ancestor's overflow can clip it. On by default; turn it off only when the trigger already lives in an unclipped stacking context. |
|
|
36
|
+
| `bgColor` | `Color` | Background color. Alias: `backgroundColor`. |
|
|
37
|
+
| `borderRadius` | `number` | Rounds the corners of the widget. |
|
|
38
|
+
| `size` | `number` | Side of the square trigger, in framework units. Defaults to 40 — the tap minimum — and the glyph scales with it. |
|
|
39
|
+
|
|
40
|
+
### Common props
|
|
41
|
+
|
|
42
|
+
Every widget also accepts these shared props — see [common props](COMMON_PROPS.md) for the full rules and aliases.
|
|
43
|
+
|
|
44
|
+
| Prop | Type | Description |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
| `full` | `boolean` | Stretches the widget to fill its parent on both axes in stack mode. |
|
|
47
|
+
| `fullHeight` | `boolean` | Stretches the widget to the full height of its parent in stack mode. |
|
|
48
|
+
| `fullWidth` | `boolean` | Stretches the widget to the full width of its parent. |
|
|
49
|
+
| `center` | `boolean` | Centres the widget on both axes in stack mode. |
|
|
50
|
+
| `centerY` | `boolean` | Centres the widget vertically in stack mode. |
|
|
51
|
+
| `centerX` | `boolean` | Centres the widget horizontally in stack mode. |
|
|
52
|
+
| `zIndex` | `number` | Stacking order: a widget with a higher value paints above lower ones. |
|
|
53
|
+
| `z` | `number` | Alias of `zIndex`. |
|
|
54
|
+
| `end` | `Size` | Logical alias of `right`, used by the stack placement shorthands. |
|
|
55
|
+
| `start` | `Size` | Logical alias of `left`, used by the stack placement shorthands. |
|
|
56
|
+
| `inset` | `Size` | Shorthand for the four edge offsets (`top`/`right`/`bottom`/`left`). |
|
|
57
|
+
| `left` | `Size` | Offset from the left edge. A number is pixels; a string uses any CSS unit. |
|
|
58
|
+
| `bottom` | `Size` | Offset from the bottom edge. A number is pixels; a string uses any CSS unit. |
|
|
59
|
+
| `right` | `Size` | Offset from the right edge. A number is pixels; a string uses any CSS unit. |
|
|
60
|
+
| `top` | `Size` | Offset from the top edge. A number is pixels; a string uses any CSS unit. |
|
|
61
|
+
| `pos` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | Alias of `position`. |
|
|
62
|
+
| `position` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | CSS `position` value, or `stack` for centered stacking. |
|
|
63
|
+
| `width` | `Size` | Width of the open panel, in framework units. The trigger itself is a square `size` wide. |
|
|
64
|
+
| `height` | `Size` | Height of the widget. A number is pixels; a string uses any CSS unit. |
|
|
65
|
+
| `size` | `Size` | Side of the square trigger, in framework units. Defaults to 40 — the tap minimum — and the glyph scales with it. |
|
|
66
|
+
| `flex` | `number` | Flex grow/shrink/basis shorthand for a flex child. |
|
|
67
|
+
| `minWidth` | `Size` | Minimum width the widget may shrink to. |
|
|
68
|
+
| `maxWidth` | `Size` | Maximum width the widget may grow to. |
|
|
69
|
+
| `minHeight` | `Size` | Minimum height the widget may shrink to. |
|
|
70
|
+
| `maxHeight` | `Size` | Maximum height the widget may grow to. |
|
|
71
|
+
| `border` | `string` | CSS `border` shorthand for all four edges: width, style and color in one string. |
|
|
72
|
+
| `borderTop` | `string` | The top edge of the border alone, for a widget whose rim differs per side. |
|
|
73
|
+
| `borderBottom` | `string` | The bottom edge of the border alone, for a widget whose rim differs per side. |
|
|
74
|
+
| `borderLeft` | `string` | The left edge of the border alone, for a widget whose rim differs per side. |
|
|
75
|
+
| `borderRight` | `string` | The right edge of the border alone, for a widget whose rim differs per side. |
|
|
76
|
+
| `cursor` | `string` | CSS `cursor` value: what the pointer becomes over the widget (`pointer`, `grab`, `not-allowed`). |
|
|
77
|
+
| `display` | `string` | CSS `display` value for the container. |
|
|
78
|
+
| `boxSizing` | `'border-box' \| 'content-box'` | Which box `width` and `height` measure: `border-box` keeps the size you asked for and pushes padding inward. |
|
|
79
|
+
| `flexDirection` | `'row' \| 'column' \| 'row-reverse' \| 'column-reverse'` | Main axis of a flex container: `row` places children side by side, `column` stacks them. |
|
|
80
|
+
| `flexGrow` | `number` | Share of the leftover space this child takes, relative to its siblings. |
|
|
81
|
+
| `flexShrink` | `number` | How readily the child gives space back when the row overflows; `0` keeps its size. |
|
|
82
|
+
| `gap` | `number \| string` | Space between children along the layout axis. |
|
|
83
|
+
| `fontSize` | `number` | Size of the font. |
|
|
84
|
+
| `borderColor` | `Color` | Color used for the border. |
|
|
85
|
+
| `borderWidth` | `number` | Width of the border. |
|
|
86
|
+
| `padding` | `Padding` | Space inside the widget, between its content and its border. |
|
|
87
|
+
| `paddingTop` | `Size` | Space inside the widget, on the top edge only. |
|
|
88
|
+
| `paddingRight` | `Size` | Space inside the widget, on the right edge only. |
|
|
89
|
+
| `paddingBottom` | `Size` | Space inside the widget, on the bottom edge only. |
|
|
90
|
+
| `paddingLeft` | `Size` | Space inside the widget, on the left edge only. |
|
|
91
|
+
| `pt` | `Size` | Alias of `paddingTop`. |
|
|
92
|
+
| `pr` | `Size` | Alias of `paddingRight`. |
|
|
93
|
+
| `pb` | `Size` | Alias of `paddingBottom`. |
|
|
94
|
+
| `pl` | `Size` | Alias of `paddingLeft`. |
|
|
95
|
+
| `margin` | `Margin` | Space outside the widget, between it and its neighbors. |
|
|
96
|
+
| `marginTop` | `Size` | Space outside the widget, on the top edge only. |
|
|
97
|
+
| `marginRight` | `Size` | Space outside the widget, on the right edge only. |
|
|
98
|
+
| `marginBottom` | `Size` | Space outside the widget, on the bottom edge only. |
|
|
99
|
+
| `marginLeft` | `Size` | Space outside the widget, on the left edge only. |
|
|
100
|
+
| `mt` | `Size` | Alias of `marginTop`. |
|
|
101
|
+
| `mr` | `Size` | Alias of `marginRight`. |
|
|
102
|
+
| `mb` | `Size` | Alias of `marginBottom`. |
|
|
103
|
+
| `ml` | `Size` | Alias of `marginLeft`. |
|
|
104
|
+
| `bgColor` | `Color` | Background color. Alias: `backgroundColor`. |
|
|
105
|
+
| `backgroundColor` | `Color` | Background color. Alias of `bgColor`. |
|
|
106
|
+
| `color` | `Color` | Foreground color, usually the text or icon color. |
|
|
107
|
+
| `borderRadius` | `number \| string` | Rounds the corners of the widget. |
|
|
108
|
+
| `elevation` | `number` | Shadow depth. Higher values lift the widget off the page. |
|
|
109
|
+
| `shadow` | `string` | Raw CSS `box-shadow` value, for a custom shadow. |
|
|
110
|
+
| `filter` | `string` | Raw CSS `filter` value applied to the widget itself, e.g. `blur(4px)`. |
|
|
111
|
+
| `backdropFilter` | `string` | Raw CSS `backdrop-filter` value: what sits behind the widget is blurred through it, which is what makes a translucent card frosted glass. |
|
|
112
|
+
| `maskImage` | `string` | Raw CSS `mask-image` value, used to fade a widget out at its edges instead of cutting it. |
|
|
113
|
+
| `bgImage` | `string` | Image painted behind the widget's content (CSS `background-image`), placed with `bgSize` and `bgPosition`. |
|
|
114
|
+
| `bgSize` | `string` | How the background image fills its box (`cover`, `contain`, or a length). |
|
|
115
|
+
| `bgPosition` | `string` | Where the background image is anchored (`center`, `top`, `50% 20%`). |
|
|
116
|
+
| `bgRepeat` | `string` | Whether the background image tiles; `no-repeat` for a single cover. |
|
|
117
|
+
| `opacity` | `number` | Opacity from 0 (invisible) to 1 (fully opaque). |
|
|
118
|
+
| `visible` | `boolean` | Whether the widget is rendered and visible. |
|
|
119
|
+
| `disabled` | `boolean` | Disables interaction and shows the non-interactive state. |
|
|
120
|
+
| `onPress` | `(event?: Event) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
|
|
121
|
+
| `onClick` | `(event?: Event) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
|
|
122
|
+
| `onclick` | `(event?: Event) => void` | Lowercase alias of `onClick`, kept because the shipped templates and the HTML habit write it. |
|
|
123
|
+
| `alignSelf` | `AlignSelf` | Overrides the parent's `alignItems` for this child alone (CSS `align-self`). Alias: `selfAlign`. |
|
|
124
|
+
| `selfAlign` | `AlignSelf` | Alias of `alignSelf`. |
|
|
125
|
+
| `overflow` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | How overflowing content is handled (`hidden`, `auto`, `scroll`). |
|
|
126
|
+
| `overflowX` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowX` value for the widget. |
|
|
127
|
+
| `overflowY` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowY` value for the widget. |
|
|
128
|
+
| `textOverflow` | `'clip' \| 'ellipsis' \| string` | The `textOverflow` value for the widget. |
|
|
129
|
+
| `whiteSpace` | `'normal' \| 'nowrap' \| 'pre' \| 'pre-wrap' \| 'pre-line' \| string` | The `whiteSpace` value for the widget. |
|
|
130
|
+
| `id` | `string` | DOM `id` for the rendered element. |
|
|
131
|
+
| `className` | `string` | CSS class names applied to the rendered element. |
|
|
132
|
+
| `ref` | `(widget: Widget) => void` | Callback that receives the underlying DOM node. |
|
|
133
|
+
| `disableTransform` | `boolean` | Disables the default press/scale transform animation. |
|
|
134
|
+
|
|
135
|
+
## Examples
|
|
136
|
+
|
|
137
|
+
### Everyday
|
|
138
|
+
|
|
139
|
+
```javascript
|
|
140
|
+
import { Menu } from "flet-box";
|
|
141
|
+
|
|
142
|
+
const rowMenu = Menu({
|
|
143
|
+
label: "Project actions",
|
|
144
|
+
items: [
|
|
145
|
+
{ text: "Rename project", icon: "edit", onPress: renameProject },
|
|
146
|
+
{ text: "Delete project", icon: "delete", danger: true, onPress: deleteProject },
|
|
147
|
+
],
|
|
148
|
+
align: "end",
|
|
149
|
+
width: 220,
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Full
|
|
154
|
+
|
|
155
|
+
```javascript
|
|
156
|
+
import { Menu } from "flet-box";
|
|
157
|
+
|
|
158
|
+
const menu = Menu({
|
|
159
|
+
label: "Message actions",
|
|
160
|
+
icon: "more_vert",
|
|
161
|
+
items: [
|
|
162
|
+
{ text: "Copy", icon: "content_copy", onPress: copy },
|
|
163
|
+
{ text: "Edit", icon: "edit", onPress: edit },
|
|
164
|
+
{ text: "Archive", icon: "archive", onPress: archive, disabled: true },
|
|
165
|
+
{ text: "Delete", icon: "delete", danger: true, onPress: remove },
|
|
166
|
+
],
|
|
167
|
+
size: 40,
|
|
168
|
+
width: 220,
|
|
169
|
+
align: "start",
|
|
170
|
+
portal: true,
|
|
171
|
+
bgColor: "#ffffff",
|
|
172
|
+
borderRadius: 8,
|
|
173
|
+
disabled: false,
|
|
174
|
+
});
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Tips
|
|
178
|
+
|
|
179
|
+
- Keep the items to the actions of the row it belongs to. A menu that copies the whole app navigation is a drawer with extra steps.
|
|
180
|
+
- Mark a destructive item with danger: true; the ink becomes colors.dangerStrong, the token that is readable as words.
|
|
181
|
+
- The trigger is an icon-only control, so label is not optional in practice: it is the name a screen reader reads before opening the menu.
|
|
182
|
+
|
|
183
|
+
## Accessibility
|
|
184
|
+
|
|
185
|
+
- The trigger keeps the Tab stop and reports aria-haspopup and aria-expanded; ArrowDown and ArrowUp open the panel on the first and last action.
|
|
186
|
+
- Inside the panel the arrow keys move focus between role=menuitem rows, Enter or Space runs the action, Escape closes and returns focus to the trigger, and Tab closes and moves on.
|
|
187
|
+
- The panel holds Tab while it is open through the same focus scope as the overlays, and gives focus back when it closes or unmounts.
|
|
188
|
+
|
|
189
|
+
## Behavior
|
|
190
|
+
|
|
191
|
+
- The panel is measured against the viewport: it aligns to the trigger's start or end edge and flips above the trigger when it does not fit below.
|
|
192
|
+
- Escape, a click outside the trigger and the panel, or scrolling with the menu open closes it; every listener is released on unmount.
|
|
193
|
+
- Changing items through update() rebuilds the open panel; setting disabled closes it and disables the trigger.
|
|
194
|
+
|
|
195
|
+
## Related widgets
|
|
196
|
+
|
|
197
|
+
- [Button](Button.md)
|
|
198
|
+
- [Dropdown](Dropdown.md)
|
|
199
|
+
- [ListTile](ListTile.md)
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Continue reading
|
|
204
|
+
|
|
205
|
+
- **Previous:** [Tooltip](Tooltip.md)
|
|
206
|
+
- **Next:** [ProgressBar](ProgressBar.md)
|
|
207
|
+
- **Index:** [Widget index](README.md) · [Start here](START_HERE.md)
|
|
208
|
+
|
|
209
|
+
You are reading **Chapter 4 · Feedback and overlays** (6 of 11).
|
package/docs/widget/Modal.md
CHANGED
|
@@ -34,7 +34,7 @@ const dialog = Modal({
|
|
|
34
34
|
| `maxHeight` | `number \| string` | Maximum height the widget may grow to. |
|
|
35
35
|
| `backgroundColor` | `Color` | Background color. Alias of `bgColor`. |
|
|
36
36
|
| `borderRadius` | `number \| string` | Rounds the corners of the widget. |
|
|
37
|
-
| `border` | `string` |
|
|
37
|
+
| `border` | `string` | CSS `border` shorthand for all four edges: width, style and color in one string. |
|
|
38
38
|
| `borderColor` | `Color` | Color used for the border. |
|
|
39
39
|
| `borderWidth` | `number` | Width of the border. |
|
|
40
40
|
| `shadow` | `string` | Raw CSS `box-shadow` value, for a custom shadow. |
|
|
@@ -53,7 +53,7 @@ const dialog = Modal({
|
|
|
53
53
|
| `footerElevation` | `number` | Elevation (shadow depth) of the footer. |
|
|
54
54
|
| `overlayColor` | `Color` | Color of the dimmed backdrop behind the overlay. |
|
|
55
55
|
| `showCloseButton` | `boolean` | Shows a close button in the header. |
|
|
56
|
-
| `zIndex` | `number` |
|
|
56
|
+
| `zIndex` | `number` | Stacking order: a widget with a higher value paints above lower ones. |
|
|
57
57
|
| `onOpen` | `() => void` | Fired when the overlay opens. |
|
|
58
58
|
| `onClose` | `() => void` | Fired when the overlay closes. |
|
|
59
59
|
|
|
@@ -126,4 +126,4 @@ const settings = Modal({
|
|
|
126
126
|
- **Next:** [BottomSheet](BottomSheet.md)
|
|
127
127
|
- **Index:** [Widget index](README.md) · [Start here](START_HERE.md)
|
|
128
128
|
|
|
129
|
-
You are reading **Chapter 4 · Feedback and overlays** (2 of
|
|
129
|
+
You are reading **Chapter 4 · Feedback and overlays** (2 of 11).
|
|
@@ -44,11 +44,64 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
|
|
|
44
44
|
|
|
45
45
|
| Prop | Type | Description |
|
|
46
46
|
| --- | --- | --- |
|
|
47
|
+
| `full` | `boolean` | Stretches the widget to fill its parent on both axes in stack mode. |
|
|
48
|
+
| `fullHeight` | `boolean` | Stretches the widget to the full height of its parent in stack mode. |
|
|
49
|
+
| `fullWidth` | `boolean` | Stretches the widget to the full width of its parent. |
|
|
50
|
+
| `center` | `boolean` | Centres the widget on both axes in stack mode. |
|
|
51
|
+
| `centerY` | `boolean` | Centres the widget vertically in stack mode. |
|
|
52
|
+
| `centerX` | `boolean` | Centres the widget horizontally in stack mode. |
|
|
53
|
+
| `zIndex` | `number` | Stacking order: a widget with a higher value paints above lower ones. |
|
|
54
|
+
| `z` | `number` | Alias of `zIndex`. |
|
|
55
|
+
| `end` | `Size` | Logical alias of `right`, used by the stack placement shorthands. |
|
|
56
|
+
| `start` | `Size` | Logical alias of `left`, used by the stack placement shorthands. |
|
|
57
|
+
| `inset` | `Size` | Shorthand for the four edge offsets (`top`/`right`/`bottom`/`left`). |
|
|
58
|
+
| `left` | `Size` | Offset from the left edge. A number is pixels; a string uses any CSS unit. |
|
|
59
|
+
| `bottom` | `Size` | Offset from the bottom edge. A number is pixels; a string uses any CSS unit. |
|
|
60
|
+
| `right` | `Size` | Offset from the right edge. A number is pixels; a string uses any CSS unit. |
|
|
61
|
+
| `top` | `Size` | Offset from the top edge. A number is pixels; a string uses any CSS unit. |
|
|
62
|
+
| `pos` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | Alias of `position`. |
|
|
63
|
+
| `position` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | CSS `position` value, or `stack` for centered stacking. |
|
|
47
64
|
| `width` | `Size` | Width of the widget. A number is pixels; a string uses any CSS unit. |
|
|
48
65
|
| `height` | `Size` | Height of the widget. A number is pixels; a string uses any CSS unit. |
|
|
49
66
|
| `size` | `Size` | Overall size preset or pixel value, depending on the widget. |
|
|
67
|
+
| `flex` | `number` | Flex grow/shrink/basis shorthand for a flex child. |
|
|
68
|
+
| `minWidth` | `Size` | Minimum width the widget may shrink to. |
|
|
69
|
+
| `maxWidth` | `Size` | Maximum width the widget may grow to. |
|
|
70
|
+
| `minHeight` | `Size` | Minimum height the widget may shrink to. |
|
|
71
|
+
| `maxHeight` | `Size` | Maximum height the widget may grow to. |
|
|
72
|
+
| `border` | `string` | CSS `border` shorthand for all four edges: width, style and color in one string. |
|
|
73
|
+
| `borderTop` | `string` | The top edge of the border alone, for a widget whose rim differs per side. |
|
|
74
|
+
| `borderBottom` | `string` | The bottom edge of the border alone, for a widget whose rim differs per side. |
|
|
75
|
+
| `borderLeft` | `string` | The left edge of the border alone, for a widget whose rim differs per side. |
|
|
76
|
+
| `borderRight` | `string` | The right edge of the border alone, for a widget whose rim differs per side. |
|
|
77
|
+
| `cursor` | `string` | CSS `cursor` value: what the pointer becomes over the widget (`pointer`, `grab`, `not-allowed`). |
|
|
78
|
+
| `display` | `string` | CSS `display` value for the container. |
|
|
79
|
+
| `boxSizing` | `'border-box' \| 'content-box'` | Which box `width` and `height` measure: `border-box` keeps the size you asked for and pushes padding inward. |
|
|
80
|
+
| `flexDirection` | `'row' \| 'column' \| 'row-reverse' \| 'column-reverse'` | Main axis of a flex container: `row` places children side by side, `column` stacks them. |
|
|
81
|
+
| `flexGrow` | `number` | Share of the leftover space this child takes, relative to its siblings. |
|
|
82
|
+
| `flexShrink` | `number` | How readily the child gives space back when the row overflows; `0` keeps its size. |
|
|
83
|
+
| `gap` | `number \| string` | Space between children along the layout axis. |
|
|
84
|
+
| `fontSize` | `number` | Size of the font. |
|
|
85
|
+
| `borderColor` | `Color` | Color used for the border. |
|
|
86
|
+
| `borderWidth` | `number` | Width of the border. |
|
|
50
87
|
| `padding` | `Padding` | Space inside the widget, between its content and its border. |
|
|
88
|
+
| `paddingTop` | `Size` | Space inside the widget, on the top edge only. |
|
|
89
|
+
| `paddingRight` | `Size` | Space inside the widget, on the right edge only. |
|
|
90
|
+
| `paddingBottom` | `Size` | Space inside the widget, on the bottom edge only. |
|
|
91
|
+
| `paddingLeft` | `Size` | Space inside the widget, on the left edge only. |
|
|
92
|
+
| `pt` | `Size` | Alias of `paddingTop`. |
|
|
93
|
+
| `pr` | `Size` | Alias of `paddingRight`. |
|
|
94
|
+
| `pb` | `Size` | Alias of `paddingBottom`. |
|
|
95
|
+
| `pl` | `Size` | Alias of `paddingLeft`. |
|
|
51
96
|
| `margin` | `Margin` | Space outside the widget, between it and its neighbors. |
|
|
97
|
+
| `marginTop` | `Size` | Space outside the widget, on the top edge only. |
|
|
98
|
+
| `marginRight` | `Size` | Space outside the widget, on the right edge only. |
|
|
99
|
+
| `marginBottom` | `Size` | Space outside the widget, on the bottom edge only. |
|
|
100
|
+
| `marginLeft` | `Size` | Space outside the widget, on the left edge only. |
|
|
101
|
+
| `mt` | `Size` | Alias of `marginTop`. |
|
|
102
|
+
| `mr` | `Size` | Alias of `marginRight`. |
|
|
103
|
+
| `mb` | `Size` | Alias of `marginBottom`. |
|
|
104
|
+
| `ml` | `Size` | Alias of `marginLeft`. |
|
|
52
105
|
| `bgColor` | `Color` | Background color. Alias: `backgroundColor`. |
|
|
53
106
|
| `backgroundColor` | `Color` | Background color. Alias of `bgColor`. |
|
|
54
107
|
| `color` | `Color` | Foreground color, usually the text or icon color. |
|
|
@@ -58,11 +111,23 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
|
|
|
58
111
|
| `filter` | `string` | Raw CSS `filter` value applied to the widget itself, e.g. `blur(4px)`. |
|
|
59
112
|
| `backdropFilter` | `string` | Raw CSS `backdrop-filter` value: what sits behind the widget is blurred through it, which is what makes a translucent card frosted glass. |
|
|
60
113
|
| `maskImage` | `string` | Raw CSS `mask-image` value, used to fade a widget out at its edges instead of cutting it. |
|
|
114
|
+
| `bgImage` | `string` | Image painted behind the widget's content (CSS `background-image`), placed with `bgSize` and `bgPosition`. |
|
|
115
|
+
| `bgSize` | `string` | How the background image fills its box (`cover`, `contain`, or a length). |
|
|
116
|
+
| `bgPosition` | `string` | Where the background image is anchored (`center`, `top`, `50% 20%`). |
|
|
117
|
+
| `bgRepeat` | `string` | Whether the background image tiles; `no-repeat` for a single cover. |
|
|
61
118
|
| `opacity` | `number` | Opacity from 0 (invisible) to 1 (fully opaque). |
|
|
62
119
|
| `visible` | `boolean` | Whether the widget is rendered and visible. |
|
|
63
120
|
| `disabled` | `boolean` | Disables interaction and shows the non-interactive state. |
|
|
64
|
-
| `onPress` | `(
|
|
65
|
-
| `onClick` | `(
|
|
121
|
+
| `onPress` | `(event?: Event) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
|
|
122
|
+
| `onClick` | `(event?: Event) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
|
|
123
|
+
| `onclick` | `(event?: Event) => void` | Lowercase alias of `onClick`, kept because the shipped templates and the HTML habit write it. |
|
|
124
|
+
| `alignSelf` | `AlignSelf` | Overrides the parent's `alignItems` for this child alone (CSS `align-self`). Alias: `selfAlign`. |
|
|
125
|
+
| `selfAlign` | `AlignSelf` | Alias of `alignSelf`. |
|
|
126
|
+
| `overflow` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | How overflowing content is handled (`hidden`, `auto`, `scroll`). |
|
|
127
|
+
| `overflowX` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowX` value for the widget. |
|
|
128
|
+
| `overflowY` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowY` value for the widget. |
|
|
129
|
+
| `textOverflow` | `'clip' \| 'ellipsis' \| string` | The `textOverflow` value for the widget. |
|
|
130
|
+
| `whiteSpace` | `'normal' \| 'nowrap' \| 'pre' \| 'pre-wrap' \| 'pre-line' \| string` | The `whiteSpace` value for the widget. |
|
|
66
131
|
| `id` | `string` | DOM `id` for the rendered element. |
|
|
67
132
|
| `className` | `string` | CSS class names applied to the rendered element. |
|
|
68
133
|
| `ref` | `(widget: Widget) => void` | Callback that receives the underlying DOM node. |
|
|
@@ -136,4 +201,4 @@ const pages = Pagination({
|
|
|
136
201
|
- **Next:** [Stepper](Stepper.md)
|
|
137
202
|
- **Index:** [Widget index](README.md) · [Start here](START_HERE.md)
|
|
138
203
|
|
|
139
|
-
You are reading **Chapter 4 · Feedback and overlays** (
|
|
204
|
+
You are reading **Chapter 4 · Feedback and overlays** (11 of 11).
|
|
@@ -39,11 +39,64 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
|
|
|
39
39
|
|
|
40
40
|
| Prop | Type | Description |
|
|
41
41
|
| --- | --- | --- |
|
|
42
|
+
| `full` | `boolean` | Stretches the widget to fill its parent on both axes in stack mode. |
|
|
43
|
+
| `fullHeight` | `boolean` | Stretches the widget to the full height of its parent in stack mode. |
|
|
44
|
+
| `fullWidth` | `boolean` | Stretches the widget to the full width of its parent. |
|
|
45
|
+
| `center` | `boolean` | Centres the widget on both axes in stack mode. |
|
|
46
|
+
| `centerY` | `boolean` | Centres the widget vertically in stack mode. |
|
|
47
|
+
| `centerX` | `boolean` | Centres the widget horizontally in stack mode. |
|
|
48
|
+
| `zIndex` | `number` | Stacking order: a widget with a higher value paints above lower ones. |
|
|
49
|
+
| `z` | `number` | Alias of `zIndex`. |
|
|
50
|
+
| `end` | `Size` | Logical alias of `right`, used by the stack placement shorthands. |
|
|
51
|
+
| `start` | `Size` | Logical alias of `left`, used by the stack placement shorthands. |
|
|
52
|
+
| `inset` | `Size` | Shorthand for the four edge offsets (`top`/`right`/`bottom`/`left`). |
|
|
53
|
+
| `left` | `Size` | Offset from the left edge. A number is pixels; a string uses any CSS unit. |
|
|
54
|
+
| `bottom` | `Size` | Offset from the bottom edge. A number is pixels; a string uses any CSS unit. |
|
|
55
|
+
| `right` | `Size` | Offset from the right edge. A number is pixels; a string uses any CSS unit. |
|
|
56
|
+
| `top` | `Size` | Offset from the top edge. A number is pixels; a string uses any CSS unit. |
|
|
57
|
+
| `pos` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | Alias of `position`. |
|
|
58
|
+
| `position` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | CSS `position` value, or `stack` for centered stacking. |
|
|
42
59
|
| `width` | `Size` | Width of the widget. A number is pixels; a string uses any CSS unit. |
|
|
43
60
|
| `height` | `Size` | Height of the widget. A number is pixels; a string uses any CSS unit. |
|
|
44
61
|
| `size` | `Size` | Overall size preset or pixel value, depending on the widget. |
|
|
62
|
+
| `flex` | `number` | Flex grow/shrink/basis shorthand for a flex child. |
|
|
63
|
+
| `minWidth` | `Size` | Minimum width the widget may shrink to. |
|
|
64
|
+
| `maxWidth` | `Size` | Maximum width the widget may grow to. |
|
|
65
|
+
| `minHeight` | `Size` | Minimum height the widget may shrink to. |
|
|
66
|
+
| `maxHeight` | `Size` | Maximum height the widget may grow to. |
|
|
67
|
+
| `border` | `string` | CSS `border` shorthand for all four edges: width, style and color in one string. |
|
|
68
|
+
| `borderTop` | `string` | The top edge of the border alone, for a widget whose rim differs per side. |
|
|
69
|
+
| `borderBottom` | `string` | The bottom edge of the border alone, for a widget whose rim differs per side. |
|
|
70
|
+
| `borderLeft` | `string` | The left edge of the border alone, for a widget whose rim differs per side. |
|
|
71
|
+
| `borderRight` | `string` | The right edge of the border alone, for a widget whose rim differs per side. |
|
|
72
|
+
| `cursor` | `string` | CSS `cursor` value: what the pointer becomes over the widget (`pointer`, `grab`, `not-allowed`). |
|
|
73
|
+
| `display` | `string` | CSS `display` value for the container. |
|
|
74
|
+
| `boxSizing` | `'border-box' \| 'content-box'` | Which box `width` and `height` measure: `border-box` keeps the size you asked for and pushes padding inward. |
|
|
75
|
+
| `flexDirection` | `'row' \| 'column' \| 'row-reverse' \| 'column-reverse'` | Main axis of a flex container: `row` places children side by side, `column` stacks them. |
|
|
76
|
+
| `flexGrow` | `number` | Share of the leftover space this child takes, relative to its siblings. |
|
|
77
|
+
| `flexShrink` | `number` | How readily the child gives space back when the row overflows; `0` keeps its size. |
|
|
78
|
+
| `gap` | `number \| string` | Space between children along the layout axis. |
|
|
79
|
+
| `fontSize` | `number` | Size of the font. |
|
|
80
|
+
| `borderColor` | `Color` | Color used for the border. |
|
|
81
|
+
| `borderWidth` | `number` | Width of the border. |
|
|
45
82
|
| `padding` | `Padding` | Space inside the widget, between its content and its border. |
|
|
83
|
+
| `paddingTop` | `Size` | Space inside the widget, on the top edge only. |
|
|
84
|
+
| `paddingRight` | `Size` | Space inside the widget, on the right edge only. |
|
|
85
|
+
| `paddingBottom` | `Size` | Space inside the widget, on the bottom edge only. |
|
|
86
|
+
| `paddingLeft` | `Size` | Space inside the widget, on the left edge only. |
|
|
87
|
+
| `pt` | `Size` | Alias of `paddingTop`. |
|
|
88
|
+
| `pr` | `Size` | Alias of `paddingRight`. |
|
|
89
|
+
| `pb` | `Size` | Alias of `paddingBottom`. |
|
|
90
|
+
| `pl` | `Size` | Alias of `paddingLeft`. |
|
|
46
91
|
| `margin` | `Margin` | Space outside the widget, between it and its neighbors. |
|
|
92
|
+
| `marginTop` | `Size` | Space outside the widget, on the top edge only. |
|
|
93
|
+
| `marginRight` | `Size` | Space outside the widget, on the right edge only. |
|
|
94
|
+
| `marginBottom` | `Size` | Space outside the widget, on the bottom edge only. |
|
|
95
|
+
| `marginLeft` | `Size` | Space outside the widget, on the left edge only. |
|
|
96
|
+
| `mt` | `Size` | Alias of `marginTop`. |
|
|
97
|
+
| `mr` | `Size` | Alias of `marginRight`. |
|
|
98
|
+
| `mb` | `Size` | Alias of `marginBottom`. |
|
|
99
|
+
| `ml` | `Size` | Alias of `marginLeft`. |
|
|
47
100
|
| `bgColor` | `Color` | Background color. Alias: `backgroundColor`. |
|
|
48
101
|
| `backgroundColor` | `Color` | Background color. Alias of `bgColor`. |
|
|
49
102
|
| `color` | `Color` | Foreground color, usually the text or icon color. |
|
|
@@ -53,11 +106,23 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
|
|
|
53
106
|
| `filter` | `string` | Raw CSS `filter` value applied to the widget itself, e.g. `blur(4px)`. |
|
|
54
107
|
| `backdropFilter` | `string` | Raw CSS `backdrop-filter` value: what sits behind the widget is blurred through it, which is what makes a translucent card frosted glass. |
|
|
55
108
|
| `maskImage` | `string` | Raw CSS `mask-image` value, used to fade a widget out at its edges instead of cutting it. |
|
|
109
|
+
| `bgImage` | `string` | Image painted behind the widget's content (CSS `background-image`), placed with `bgSize` and `bgPosition`. |
|
|
110
|
+
| `bgSize` | `string` | How the background image fills its box (`cover`, `contain`, or a length). |
|
|
111
|
+
| `bgPosition` | `string` | Where the background image is anchored (`center`, `top`, `50% 20%`). |
|
|
112
|
+
| `bgRepeat` | `string` | Whether the background image tiles; `no-repeat` for a single cover. |
|
|
56
113
|
| `opacity` | `number` | Opacity from 0 (invisible) to 1 (fully opaque). |
|
|
57
114
|
| `visible` | `boolean` | Whether the widget is rendered and visible. |
|
|
58
115
|
| `disabled` | `boolean` | Disables interaction and shows the non-interactive state. |
|
|
59
|
-
| `onPress` | `(
|
|
60
|
-
| `onClick` | `(
|
|
116
|
+
| `onPress` | `(event?: Event) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
|
|
117
|
+
| `onClick` | `(event?: Event) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
|
|
118
|
+
| `onclick` | `(event?: Event) => void` | Lowercase alias of `onClick`, kept because the shipped templates and the HTML habit write it. |
|
|
119
|
+
| `alignSelf` | `AlignSelf` | Overrides the parent's `alignItems` for this child alone (CSS `align-self`). Alias: `selfAlign`. |
|
|
120
|
+
| `selfAlign` | `AlignSelf` | Alias of `alignSelf`. |
|
|
121
|
+
| `overflow` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | How overflowing content is handled (`hidden`, `auto`, `scroll`). |
|
|
122
|
+
| `overflowX` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowX` value for the widget. |
|
|
123
|
+
| `overflowY` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowY` value for the widget. |
|
|
124
|
+
| `textOverflow` | `'clip' \| 'ellipsis' \| string` | The `textOverflow` value for the widget. |
|
|
125
|
+
| `whiteSpace` | `'normal' \| 'nowrap' \| 'pre' \| 'pre-wrap' \| 'pre-line' \| string` | The `whiteSpace` value for the widget. |
|
|
61
126
|
| `id` | `string` | DOM `id` for the rendered element. |
|
|
62
127
|
| `className` | `string` | CSS class names applied to the rendered element. |
|
|
63
128
|
| `ref` | `(widget: Widget) => void` | Callback that receives the underlying DOM node. |
|
|
@@ -97,23 +162,18 @@ const scene = ParallaxBox({
|
|
|
97
162
|
|
|
98
163
|
## Tips
|
|
99
164
|
|
|
100
|
-
- type: "scroll" follows the window scroll; "mouse" tracks the pointer relative to
|
|
101
|
-
-
|
|
102
|
-
- Raise speed for a more pronounced shift, and keep maxOffset small so content never
|
|
103
|
-
- strays far from its layout box.
|
|
165
|
+
- type: "scroll" follows the window scroll; "mouse" tracks the pointer relative to the widget center; "hover" snaps on entry and resets on leave.
|
|
166
|
+
- Raise speed for a more pronounced shift, and keep maxOffset small so content never strays far from its layout box.
|
|
104
167
|
- Use reverse: true to invert the direction when the natural movement feels wrong.
|
|
105
168
|
|
|
106
169
|
## Accessibility
|
|
107
170
|
|
|
108
|
-
- Parallax is decorative motion; make sure content stays readable without it and keep
|
|
109
|
-
- movement gentle.
|
|
171
|
+
- Parallax is decorative motion; make sure content stays readable without it and keep movement gentle.
|
|
110
172
|
|
|
111
173
|
## Behavior
|
|
112
174
|
|
|
113
|
-
- The exposed element provides updateSpeed, updateDirection, setPosition, and reset
|
|
114
|
-
-
|
|
115
|
-
- Transforms are clamped to maxOffset and cleaned up via _cleanup(), which removes all
|
|
116
|
-
- event listeners on destroy.
|
|
175
|
+
- The exposed element provides updateSpeed, updateDirection, setPosition, and reset for runtime control.
|
|
176
|
+
- Transforms are clamped to maxOffset and cleaned up via _cleanup(), which removes all event listeners on destroy.
|
|
117
177
|
|
|
118
178
|
## Related widgets
|
|
119
179
|
|
|
@@ -42,11 +42,64 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
|
|
|
42
42
|
|
|
43
43
|
| Prop | Type | Description |
|
|
44
44
|
| --- | --- | --- |
|
|
45
|
+
| `full` | `boolean` | Stretches the widget to fill its parent on both axes in stack mode. |
|
|
46
|
+
| `fullHeight` | `boolean` | Stretches the widget to the full height of its parent in stack mode. |
|
|
47
|
+
| `fullWidth` | `boolean` | Stretches the widget to the full width of its parent. |
|
|
48
|
+
| `center` | `boolean` | Centres the widget on both axes in stack mode. |
|
|
49
|
+
| `centerY` | `boolean` | Centres the widget vertically in stack mode. |
|
|
50
|
+
| `centerX` | `boolean` | Centres the widget horizontally in stack mode. |
|
|
51
|
+
| `zIndex` | `number` | Stacking order: a widget with a higher value paints above lower ones. |
|
|
52
|
+
| `z` | `number` | Alias of `zIndex`. |
|
|
53
|
+
| `end` | `Size` | Logical alias of `right`, used by the stack placement shorthands. |
|
|
54
|
+
| `start` | `Size` | Logical alias of `left`, used by the stack placement shorthands. |
|
|
55
|
+
| `inset` | `Size` | Shorthand for the four edge offsets (`top`/`right`/`bottom`/`left`). |
|
|
56
|
+
| `left` | `Size` | Offset from the left edge. A number is pixels; a string uses any CSS unit. |
|
|
57
|
+
| `bottom` | `Size` | Offset from the bottom edge. A number is pixels; a string uses any CSS unit. |
|
|
58
|
+
| `right` | `Size` | Offset from the right edge. A number is pixels; a string uses any CSS unit. |
|
|
59
|
+
| `top` | `Size` | Offset from the top edge. A number is pixels; a string uses any CSS unit. |
|
|
60
|
+
| `pos` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | Alias of `position`. |
|
|
61
|
+
| `position` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | CSS `position` value, or `stack` for centered stacking. |
|
|
45
62
|
| `width` | `Size` | Width of the widget. A number is pixels; a string uses any CSS unit. |
|
|
46
63
|
| `height` | `Size` | Height of the widget. A number is pixels; a string uses any CSS unit. |
|
|
47
64
|
| `size` | `Size` | Overall size preset or pixel value, depending on the widget. |
|
|
65
|
+
| `flex` | `number` | Flex grow/shrink/basis shorthand for a flex child. |
|
|
66
|
+
| `minWidth` | `Size` | Minimum width the widget may shrink to. |
|
|
67
|
+
| `maxWidth` | `Size` | Maximum width the widget may grow to. |
|
|
68
|
+
| `minHeight` | `Size` | Minimum height the widget may shrink to. |
|
|
69
|
+
| `maxHeight` | `Size` | Maximum height the widget may grow to. |
|
|
70
|
+
| `border` | `string` | CSS `border` shorthand for all four edges: width, style and color in one string. |
|
|
71
|
+
| `borderTop` | `string` | The top edge of the border alone, for a widget whose rim differs per side. |
|
|
72
|
+
| `borderBottom` | `string` | The bottom edge of the border alone, for a widget whose rim differs per side. |
|
|
73
|
+
| `borderLeft` | `string` | The left edge of the border alone, for a widget whose rim differs per side. |
|
|
74
|
+
| `borderRight` | `string` | The right edge of the border alone, for a widget whose rim differs per side. |
|
|
75
|
+
| `cursor` | `string` | CSS `cursor` value: what the pointer becomes over the widget (`pointer`, `grab`, `not-allowed`). |
|
|
76
|
+
| `display` | `string` | CSS `display` value for the container. |
|
|
77
|
+
| `boxSizing` | `'border-box' \| 'content-box'` | Which box `width` and `height` measure: `border-box` keeps the size you asked for and pushes padding inward. |
|
|
78
|
+
| `flexDirection` | `'row' \| 'column' \| 'row-reverse' \| 'column-reverse'` | Main axis of a flex container: `row` places children side by side, `column` stacks them. |
|
|
79
|
+
| `flexGrow` | `number` | Share of the leftover space this child takes, relative to its siblings. |
|
|
80
|
+
| `flexShrink` | `number` | How readily the child gives space back when the row overflows; `0` keeps its size. |
|
|
81
|
+
| `gap` | `number \| string` | Space between children along the layout axis. |
|
|
82
|
+
| `fontSize` | `number` | Size of the font. |
|
|
83
|
+
| `borderColor` | `Color` | Color used for the border. |
|
|
84
|
+
| `borderWidth` | `number` | Width of the border. |
|
|
48
85
|
| `padding` | `Padding` | Space inside the widget, between its content and its border. |
|
|
86
|
+
| `paddingTop` | `Size` | Space inside the widget, on the top edge only. |
|
|
87
|
+
| `paddingRight` | `Size` | Space inside the widget, on the right edge only. |
|
|
88
|
+
| `paddingBottom` | `Size` | Space inside the widget, on the bottom edge only. |
|
|
89
|
+
| `paddingLeft` | `Size` | Space inside the widget, on the left edge only. |
|
|
90
|
+
| `pt` | `Size` | Alias of `paddingTop`. |
|
|
91
|
+
| `pr` | `Size` | Alias of `paddingRight`. |
|
|
92
|
+
| `pb` | `Size` | Alias of `paddingBottom`. |
|
|
93
|
+
| `pl` | `Size` | Alias of `paddingLeft`. |
|
|
49
94
|
| `margin` | `Margin` | Space outside the widget, between it and its neighbors. |
|
|
95
|
+
| `marginTop` | `Size` | Space outside the widget, on the top edge only. |
|
|
96
|
+
| `marginRight` | `Size` | Space outside the widget, on the right edge only. |
|
|
97
|
+
| `marginBottom` | `Size` | Space outside the widget, on the bottom edge only. |
|
|
98
|
+
| `marginLeft` | `Size` | Space outside the widget, on the left edge only. |
|
|
99
|
+
| `mt` | `Size` | Alias of `marginTop`. |
|
|
100
|
+
| `mr` | `Size` | Alias of `marginRight`. |
|
|
101
|
+
| `mb` | `Size` | Alias of `marginBottom`. |
|
|
102
|
+
| `ml` | `Size` | Alias of `marginLeft`. |
|
|
50
103
|
| `bgColor` | `Color` | Background color. Alias: `backgroundColor`. |
|
|
51
104
|
| `backgroundColor` | `Color` | Background color. Alias of `bgColor`. |
|
|
52
105
|
| `color` | `Color` | Foreground color, usually the text or icon color. |
|
|
@@ -56,11 +109,23 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
|
|
|
56
109
|
| `filter` | `string` | Raw CSS `filter` value applied to the widget itself, e.g. `blur(4px)`. |
|
|
57
110
|
| `backdropFilter` | `string` | Raw CSS `backdrop-filter` value: what sits behind the widget is blurred through it, which is what makes a translucent card frosted glass. |
|
|
58
111
|
| `maskImage` | `string` | Raw CSS `mask-image` value, used to fade a widget out at its edges instead of cutting it. |
|
|
112
|
+
| `bgImage` | `string` | Image painted behind the widget's content (CSS `background-image`), placed with `bgSize` and `bgPosition`. |
|
|
113
|
+
| `bgSize` | `string` | How the background image fills its box (`cover`, `contain`, or a length). |
|
|
114
|
+
| `bgPosition` | `string` | Where the background image is anchored (`center`, `top`, `50% 20%`). |
|
|
115
|
+
| `bgRepeat` | `string` | Whether the background image tiles; `no-repeat` for a single cover. |
|
|
59
116
|
| `opacity` | `number` | Opacity from 0 (invisible) to 1 (fully opaque). |
|
|
60
117
|
| `visible` | `boolean` | Whether the widget is rendered and visible. |
|
|
61
118
|
| `disabled` | `boolean` | Disables interaction and shows the non-interactive state. |
|
|
62
|
-
| `onPress` | `(
|
|
63
|
-
| `onClick` | `(
|
|
119
|
+
| `onPress` | `(event?: Event) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
|
|
120
|
+
| `onClick` | `(event?: Event) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
|
|
121
|
+
| `onclick` | `(event?: Event) => void` | Lowercase alias of `onClick`, kept because the shipped templates and the HTML habit write it. |
|
|
122
|
+
| `alignSelf` | `AlignSelf` | Overrides the parent's `alignItems` for this child alone (CSS `align-self`). Alias: `selfAlign`. |
|
|
123
|
+
| `selfAlign` | `AlignSelf` | Alias of `alignSelf`. |
|
|
124
|
+
| `overflow` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | How overflowing content is handled (`hidden`, `auto`, `scroll`). |
|
|
125
|
+
| `overflowX` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowX` value for the widget. |
|
|
126
|
+
| `overflowY` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowY` value for the widget. |
|
|
127
|
+
| `textOverflow` | `'clip' \| 'ellipsis' \| string` | The `textOverflow` value for the widget. |
|
|
128
|
+
| `whiteSpace` | `'normal' \| 'nowrap' \| 'pre' \| 'pre-wrap' \| 'pre-line' \| string` | The `whiteSpace` value for the widget. |
|
|
64
129
|
| `id` | `string` | DOM `id` for the rendered element. |
|
|
65
130
|
| `className` | `string` | CSS class names applied to the rendered element. |
|
|
66
131
|
| `ref` | `(widget: Widget) => void` | Callback that receives the underlying DOM node. |
|
|
@@ -127,8 +192,8 @@ const progress = ProgressBar({
|
|
|
127
192
|
|
|
128
193
|
## Continue reading
|
|
129
194
|
|
|
130
|
-
- **Previous:** [
|
|
195
|
+
- **Previous:** [Menu](Menu.md)
|
|
131
196
|
- **Next:** [CircularBar](CircularBar.md)
|
|
132
197
|
- **Index:** [Widget index](README.md) · [Start here](START_HERE.md)
|
|
133
198
|
|
|
134
|
-
You are reading **Chapter 4 · Feedback and overlays** (
|
|
199
|
+
You are reading **Chapter 4 · Feedback and overlays** (7 of 11).
|