flet-box 1.1.2 → 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.
Files changed (154) hide show
  1. package/AGENTS_FOR_CODE_GEN.md +284 -0
  2. package/CONTRIBUTING.md +238 -0
  3. package/README.md +2 -2
  4. package/bin/cli.js +88 -1
  5. package/bin/commands/auditFix.js +181 -27
  6. package/bin/commands/checkApi.js +14 -3
  7. package/bin/commands/checkStructure.js +368 -0
  8. package/bin/commands/checkSyntax.js +293 -0
  9. package/bin/commands/checkUi.js +666 -14
  10. package/bin/commands/create.js +14 -0
  11. package/bin/commands/createBundle.js +2 -2
  12. package/bin/commands/metrics.js +448 -0
  13. package/bin/commands/release.js +18 -0
  14. package/bin/commands/report.js +849 -0
  15. package/bin/commands/tools.js +76 -0
  16. package/bin/commands/unpack.js +39 -11
  17. package/bin/commands/verify.js +879 -0
  18. package/bin/mcp.js +280 -0
  19. package/bin/utils/contract.js +27 -0
  20. package/bin/utils/dtsProps.js +5 -1
  21. package/bin/utils/migrationGuide.js +146 -0
  22. package/bin/utils/moduleExports.js +9 -5
  23. package/bin/utils/templates.js +225 -18
  24. package/bin/utils/toolkit.js +191 -0
  25. package/docs/README.md +5 -1
  26. package/docs/arquitectura.md +1 -1
  27. package/docs/cli/README.md +168 -2
  28. package/docs/guides/README.md +6 -0
  29. package/docs/guides/accessibility.md +2 -1
  30. package/docs/guides/ai-toolkit.md +166 -0
  31. package/docs/guides/compatibility.md +1 -1
  32. package/docs/guides/migration.md +92 -0
  33. package/docs/guides/minification-and-protection.md +2 -1
  34. package/docs/guides/mobile-and-platforms.md +1 -1
  35. package/docs/guides/online-updates.md +2 -0
  36. package/docs/server/deployment.md +1 -1
  37. package/docs/tools/styling.md +2 -2
  38. package/docs/tools/theme.md +139 -4
  39. package/docs/widget/Accordion.md +74 -8
  40. package/docs/widget/AdMob.md +68 -3
  41. package/docs/widget/AdSense.md +67 -2
  42. package/docs/widget/AlertDialog.md +1 -1
  43. package/docs/widget/AnimatedBox.md +80 -39
  44. package/docs/widget/AnimatedText.md +74 -18
  45. package/docs/widget/Audio.md +73 -14
  46. package/docs/widget/Avatar.md +69 -4
  47. package/docs/widget/Badge.md +68 -3
  48. package/docs/widget/BottomSheet.md +2 -2
  49. package/docs/widget/Button.md +69 -3
  50. package/docs/widget/Card.md +69 -4
  51. package/docs/widget/Carousel.md +67 -2
  52. package/docs/widget/Chart.md +67 -2
  53. package/docs/widget/Checkbox.md +74 -8
  54. package/docs/widget/Chip.md +68 -3
  55. package/docs/widget/CircularBar.md +74 -15
  56. package/docs/widget/CircularChart.md +71 -10
  57. package/docs/widget/CodeViewer.md +67 -2
  58. package/docs/widget/Column.md +68 -3
  59. package/docs/widget/Container.md +68 -3
  60. package/docs/widget/DataTable.md +67 -2
  61. package/docs/widget/Divider.md +67 -2
  62. package/docs/widget/DraggBox.md +67 -2
  63. package/docs/widget/Dropdown.md +76 -10
  64. package/docs/widget/DroppBox.md +67 -2
  65. package/docs/widget/FloatingActionButton.md +68 -3
  66. package/docs/widget/GridView.md +67 -2
  67. package/docs/widget/Icon.md +71 -5
  68. package/docs/widget/Image.md +68 -3
  69. package/docs/widget/Input.md +68 -3
  70. package/docs/widget/Inspector.md +2 -2
  71. package/docs/widget/InstallButton.md +73 -13
  72. package/docs/widget/ListTile.md +69 -3
  73. package/docs/widget/ListView.md +67 -2
  74. package/docs/widget/Maps.md +68 -3
  75. package/docs/widget/Markdown.md +74 -15
  76. package/docs/widget/MatrixRain.md +72 -11
  77. package/docs/widget/Menu.md +209 -0
  78. package/docs/widget/Modal.md +3 -3
  79. package/docs/widget/Pagination.md +68 -3
  80. package/docs/widget/ParallaxBox.md +72 -12
  81. package/docs/widget/ProgressBar.md +69 -4
  82. package/docs/widget/QRCode.md +67 -2
  83. package/docs/widget/README.md +54 -50
  84. package/docs/widget/Radio.md +76 -10
  85. package/docs/widget/Rating.md +70 -6
  86. package/docs/widget/Row.md +68 -3
  87. package/docs/widget/Skeleton.md +68 -3
  88. package/docs/widget/Slider.md +75 -9
  89. package/docs/widget/SnackBar.md +2 -2
  90. package/docs/widget/Stack.md +68 -3
  91. package/docs/widget/Stepper.md +68 -3
  92. package/docs/widget/Switch.md +74 -8
  93. package/docs/widget/Text.md +71 -4
  94. package/docs/widget/ThemePicker.md +197 -0
  95. package/docs/widget/Tooltip.md +72 -7
  96. package/docs/widget/TreeView.md +70 -10
  97. package/docs/widget/Video.md +71 -10
  98. package/package.json +10 -3
  99. package/skills/fletbox-design/SKILL.md +89 -5
  100. package/skills/fletbox-motion/SKILL.md +1 -1
  101. package/skills/fletbox-rules/SKILL.md +56 -4
  102. package/src/core/runApp.js +12 -0
  103. package/src/index.d.ts +374 -101
  104. package/src/index.js +9 -0
  105. package/src/navigations/AdaptiveScaffold.js +2 -2
  106. package/src/navigations/BottomNavigation.js +1 -1
  107. package/src/navigations/Scaffold.js +18 -6
  108. package/src/tools/useState.js +11 -4
  109. package/src/utils/colors.js +275 -0
  110. package/src/utils/errorBoundary.js +288 -0
  111. package/src/utils/index.js +10 -2
  112. package/src/utils/stackPosition.js +39 -24
  113. package/src/utils/syntaxHighlight.js +4 -1
  114. package/src/utils/themes.js +279 -3
  115. package/src/widget-factory/addChildren.js +17 -10
  116. package/src/widget-factory/assignProps.js +18 -6
  117. package/src/widget-factory/createWidget.js +7 -0
  118. package/src/widget-factory/deprecations.js +77 -0
  119. package/src/widget-factory/translateProps.js +11 -1
  120. package/src/widget-factory/warnings.js +1 -27
  121. package/src/widget-factory/widgetFactory.js +59 -17
  122. package/src/widgets/Accordion.js +21 -7
  123. package/src/widgets/Badge.js +11 -2
  124. package/src/widgets/Button.js +15 -3
  125. package/src/widgets/Carousel.js +12 -4
  126. package/src/widgets/Chart.js +7 -2
  127. package/src/widgets/Checkbox.js +1 -2
  128. package/src/widgets/Chip.js +24 -10
  129. package/src/widgets/CircularBar.js +9 -3
  130. package/src/widgets/CircularChart.js +5 -3
  131. package/src/widgets/Container.js +6 -0
  132. package/src/widgets/Divider.js +3 -1
  133. package/src/widgets/DraggBox.js +9 -0
  134. package/src/widgets/Dropdown.js +3 -3
  135. package/src/widgets/DroppBox.js +5 -0
  136. package/src/widgets/FloatingActionButton.js +1 -1
  137. package/src/widgets/Icon.js +5 -1
  138. package/src/widgets/InstallButton.js +4 -2
  139. package/src/widgets/Markdown.js +171 -103
  140. package/src/widgets/Menu.js +340 -0
  141. package/src/widgets/Modal.js +7 -1
  142. package/src/widgets/Pagination.js +10 -5
  143. package/src/widgets/ProgressBar.js +5 -4
  144. package/src/widgets/QRCode.js +4 -0
  145. package/src/widgets/Radio.js +1 -2
  146. package/src/widgets/Rating.js +9 -0
  147. package/src/widgets/Slider.js +4 -1
  148. package/src/widgets/SnackBar.js +2 -2
  149. package/src/widgets/Switch.js +1 -2
  150. package/src/widgets/Text.js +9 -5
  151. package/src/widgets/ThemePicker.js +234 -0
  152. package/src/widgets/TreeView.js +2 -1
  153. package/src/widgets/index.js +2 -0
  154. package/docs/CONTRIBUTING.md +0 -156
@@ -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` | `(widget: Widget) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
65
- | `onClick` | `(widget: Widget) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
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** (10 of 10).
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` | `(widget: Widget) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
60
- | `onClick` | `(widget: Widget) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
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
- - the widget center; "hover" snaps on entry and resets on leave.
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
- - for runtime control.
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` | `(widget: Widget) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
63
- | `onClick` | `(widget: Widget) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
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:** [Tooltip](Tooltip.md)
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** (6 of 10).
199
+ You are reading **Chapter 4 · Feedback and overlays** (7 of 11).
@@ -35,11 +35,64 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
35
35
 
36
36
  | Prop | Type | Description |
37
37
  | --- | --- | --- |
38
+ | `full` | `boolean` | Stretches the widget to fill its parent on both axes in stack mode. |
39
+ | `fullHeight` | `boolean` | Stretches the widget to the full height of its parent in stack mode. |
40
+ | `fullWidth` | `boolean` | Stretches the widget to the full width of its parent. |
41
+ | `center` | `boolean` | Centres the widget on both axes in stack mode. |
42
+ | `centerY` | `boolean` | Centres the widget vertically in stack mode. |
43
+ | `centerX` | `boolean` | Centres the widget horizontally in stack mode. |
44
+ | `zIndex` | `number` | Stacking order: a widget with a higher value paints above lower ones. |
45
+ | `z` | `number` | Alias of `zIndex`. |
46
+ | `end` | `Size` | Logical alias of `right`, used by the stack placement shorthands. |
47
+ | `start` | `Size` | Logical alias of `left`, used by the stack placement shorthands. |
48
+ | `inset` | `Size` | Shorthand for the four edge offsets (`top`/`right`/`bottom`/`left`). |
49
+ | `left` | `Size` | Offset from the left edge. A number is pixels; a string uses any CSS unit. |
50
+ | `bottom` | `Size` | Offset from the bottom edge. A number is pixels; a string uses any CSS unit. |
51
+ | `right` | `Size` | Offset from the right edge. A number is pixels; a string uses any CSS unit. |
52
+ | `top` | `Size` | Offset from the top edge. A number is pixels; a string uses any CSS unit. |
53
+ | `pos` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | Alias of `position`. |
54
+ | `position` | `'static' \| 'relative' \| 'absolute' \| 'fixed' \| 'sticky' \| 'stack'` | CSS `position` value, or `stack` for centered stacking. |
38
55
  | `width` | `Size` | Width of the widget. A number is pixels; a string uses any CSS unit. |
39
56
  | `height` | `Size` | Height of the widget. A number is pixels; a string uses any CSS unit. |
40
57
  | `size` | `Size` | Overall size preset or pixel value, depending on the widget. |
58
+ | `flex` | `number` | Flex grow/shrink/basis shorthand for a flex child. |
59
+ | `minWidth` | `Size` | Minimum width the widget may shrink to. |
60
+ | `maxWidth` | `Size` | Maximum width the widget may grow to. |
61
+ | `minHeight` | `Size` | Minimum height the widget may shrink to. |
62
+ | `maxHeight` | `Size` | Maximum height the widget may grow to. |
63
+ | `border` | `string` | CSS `border` shorthand for all four edges: width, style and color in one string. |
64
+ | `borderTop` | `string` | The top edge of the border alone, for a widget whose rim differs per side. |
65
+ | `borderBottom` | `string` | The bottom edge of the border alone, for a widget whose rim differs per side. |
66
+ | `borderLeft` | `string` | The left edge of the border alone, for a widget whose rim differs per side. |
67
+ | `borderRight` | `string` | The right edge of the border alone, for a widget whose rim differs per side. |
68
+ | `cursor` | `string` | CSS `cursor` value: what the pointer becomes over the widget (`pointer`, `grab`, `not-allowed`). |
69
+ | `display` | `string` | CSS `display` value for the container. |
70
+ | `boxSizing` | `'border-box' \| 'content-box'` | Which box `width` and `height` measure: `border-box` keeps the size you asked for and pushes padding inward. |
71
+ | `flexDirection` | `'row' \| 'column' \| 'row-reverse' \| 'column-reverse'` | Main axis of a flex container: `row` places children side by side, `column` stacks them. |
72
+ | `flexGrow` | `number` | Share of the leftover space this child takes, relative to its siblings. |
73
+ | `flexShrink` | `number` | How readily the child gives space back when the row overflows; `0` keeps its size. |
74
+ | `gap` | `number \| string` | Space between children along the layout axis. |
75
+ | `fontSize` | `number` | Size of the font. |
76
+ | `borderColor` | `Color` | Color used for the border. |
77
+ | `borderWidth` | `number` | Width of the border. |
41
78
  | `padding` | `Padding` | Space inside the widget, between its content and its border. |
79
+ | `paddingTop` | `Size` | Space inside the widget, on the top edge only. |
80
+ | `paddingRight` | `Size` | Space inside the widget, on the right edge only. |
81
+ | `paddingBottom` | `Size` | Space inside the widget, on the bottom edge only. |
82
+ | `paddingLeft` | `Size` | Space inside the widget, on the left edge only. |
83
+ | `pt` | `Size` | Alias of `paddingTop`. |
84
+ | `pr` | `Size` | Alias of `paddingRight`. |
85
+ | `pb` | `Size` | Alias of `paddingBottom`. |
86
+ | `pl` | `Size` | Alias of `paddingLeft`. |
42
87
  | `margin` | `Margin` | Space outside the widget, between it and its neighbors. |
88
+ | `marginTop` | `Size` | Space outside the widget, on the top edge only. |
89
+ | `marginRight` | `Size` | Space outside the widget, on the right edge only. |
90
+ | `marginBottom` | `Size` | Space outside the widget, on the bottom edge only. |
91
+ | `marginLeft` | `Size` | Space outside the widget, on the left edge only. |
92
+ | `mt` | `Size` | Alias of `marginTop`. |
93
+ | `mr` | `Size` | Alias of `marginRight`. |
94
+ | `mb` | `Size` | Alias of `marginBottom`. |
95
+ | `ml` | `Size` | Alias of `marginLeft`. |
43
96
  | `bgColor` | `Color` | Background color. Alias: `backgroundColor`. |
44
97
  | `backgroundColor` | `Color` | Background color. Alias of `bgColor`. |
45
98
  | `color` | `Color` | Foreground color, usually the text or icon color. |
@@ -49,11 +102,23 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
49
102
  | `filter` | `string` | Raw CSS `filter` value applied to the widget itself, e.g. `blur(4px)`. |
50
103
  | `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. |
51
104
  | `maskImage` | `string` | Raw CSS `mask-image` value, used to fade a widget out at its edges instead of cutting it. |
105
+ | `bgImage` | `string` | Image painted behind the widget's content (CSS `background-image`), placed with `bgSize` and `bgPosition`. |
106
+ | `bgSize` | `string` | How the background image fills its box (`cover`, `contain`, or a length). |
107
+ | `bgPosition` | `string` | Where the background image is anchored (`center`, `top`, `50% 20%`). |
108
+ | `bgRepeat` | `string` | Whether the background image tiles; `no-repeat` for a single cover. |
52
109
  | `opacity` | `number` | Opacity from 0 (invisible) to 1 (fully opaque). |
53
110
  | `visible` | `boolean` | Whether the widget is rendered and visible. |
54
111
  | `disabled` | `boolean` | Disables interaction and shows the non-interactive state. |
55
- | `onPress` | `(widget: Widget) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
56
- | `onClick` | `(widget: Widget) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
112
+ | `onPress` | `(event?: Event) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
113
+ | `onClick` | `(event?: Event) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
114
+ | `onclick` | `(event?: Event) => void` | Lowercase alias of `onClick`, kept because the shipped templates and the HTML habit write it. |
115
+ | `alignSelf` | `AlignSelf` | Overrides the parent's `alignItems` for this child alone (CSS `align-self`). Alias: `selfAlign`. |
116
+ | `selfAlign` | `AlignSelf` | Alias of `alignSelf`. |
117
+ | `overflow` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | How overflowing content is handled (`hidden`, `auto`, `scroll`). |
118
+ | `overflowX` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowX` value for the widget. |
119
+ | `overflowY` | `'auto' \| 'hidden' \| 'visible' \| 'scroll' \| 'clip'` | The `overflowY` value for the widget. |
120
+ | `textOverflow` | `'clip' \| 'ellipsis' \| string` | The `textOverflow` value for the widget. |
121
+ | `whiteSpace` | `'normal' \| 'nowrap' \| 'pre' \| 'pre-wrap' \| 'pre-line' \| string` | The `whiteSpace` value for the widget. |
57
122
  | `id` | `string` | DOM `id` for the rendered element. |
58
123
  | `className` | `string` | CSS class names applied to the rendered element. |
59
124
  | `ref` | `(widget: Widget) => void` | Callback that receives the underlying DOM node. |
@@ -25,7 +25,7 @@ _layout and the core mental model_
25
25
  2. [Container](Container.md) — General-purpose surface box
26
26
  3. [Row](Row.md) — Horizontal flex layout that places its children side by side
27
27
  4. [Column](Column.md) — Vertical flex layout that stacks its children one below another
28
- 5. [Stack](Stack.md) — Overlay container that lets children occupy the same box
28
+ 5. [Stack](Stack.md) — Overlay container: every child after the first paints in the same box, anchored by a nine-point `alignment` or by its own edges.
29
29
  6. [Icon](Icon.md) — Material icon glyph rendered as a span
30
30
  7. [Image](Image.md) — Renders an image element from a URL or path
31
31
 
@@ -41,85 +41,87 @@ _the widgets users click and type into_
41
41
  13. [Slider](Slider.md) — A draggable range input that selects a numeric value along a track between min and max.
42
42
  14. [Dropdown](Dropdown.md) — A select control that shows the current choice and opens a menu of options when clicked.
43
43
  15. [Rating](Rating.md) — A row of star icons that captures or displays a score up to max
44
+ 16. [ThemePicker](ThemePicker.md) — A row of two-tone squares, one per accent family, that picks the color the screen paints its buttons, icons and plates with.
44
45
 
45
46
  ### Chapter 3 · Layout, cards and lists
46
47
 
47
48
  _cards, lists, grids and content rows_
48
49
 
49
- 16. [Card](Card.md) — A rounded, optionally elevated surface that groups related content into a single tappable unit.
50
- 17. [Divider](Divider.md) — A thin horizontal or vertical line that separates sections of content
51
- 18. [ListTile](ListTile.md) — A single row with leading, title, subtitle, and trailing slots
52
- 19. [ListView](ListView.md) — Virtualized scrollable list that keeps only the visible rows plus a buffer in the DOM, so large datasets stay responsive.
53
- 20. [GridView](GridView.md) — Grid layout built on ListView's virtualization
54
- 21. [Avatar](Avatar.md) — A compact identity chip that shows a profile image, the person's initials, or a fallback icon
55
- 22. [Badge](Badge.md) — Wraps a child widget and overlays a small count or status marker at one of its corners
56
- 23. [Chip](Chip.md) — A compact, pill-shaped label for tags, filters, and selections
50
+ 17. [Card](Card.md) — A rounded, optionally elevated surface that groups related content into a single tappable unit.
51
+ 18. [Divider](Divider.md) — A thin horizontal or vertical line that separates sections of content
52
+ 19. [ListTile](ListTile.md) — A single row with leading, title, subtitle, and trailing slots
53
+ 20. [ListView](ListView.md) — Virtualized scrollable list that keeps only the visible rows plus a buffer in the DOM, so large datasets stay responsive.
54
+ 21. [GridView](GridView.md) — Grid layout built on ListView's virtualization
55
+ 22. [Avatar](Avatar.md) — A compact identity chip that shows a profile image, the person's initials, or a fallback icon
56
+ 23. [Badge](Badge.md) — Wraps a child widget and overlays a small count or status marker at one of its corners
57
+ 24. [Chip](Chip.md) — A compact, pill-shaped label for tags, filters, and selections
57
58
 
58
59
  ### Chapter 4 · Feedback and overlays
59
60
 
60
61
  _dialogs, sheets, notifications and progress_
61
62
 
62
- 24. [AlertDialog](AlertDialog.md) — A pre-styled confirmation dialog built on Modal, with a variant icon, message and confirm/cancel buttons.
63
- 25. [Modal](Modal.md) — A centered dialog over a dimmed overlay that holds a title, content and a row of actions.
64
- 26. [BottomSheet](BottomSheet.md) — A panel that slides up from the bottom of the screen over a dimmed overlay.
65
- 27. [SnackBar](SnackBar.md) — A transient toast that appears at the edge of the screen, reports a short message, and dismisses itself.
66
- 28. [Tooltip](Tooltip.md) — Wraps a child widget and shows a labeled overlay bubble on hover or focus
67
- 29. [ProgressBar](ProgressBar.md) — A horizontal bar that visualizes completion from zero to max
68
- 30. [CircularBar](CircularBar.md) — A circular or radial progress indicator drawn on canvas
69
- 31. [Skeleton](Skeleton.md) — Renders animated placeholder blocks that stand in for content while it loads
70
- 32. [FloatingActionButton](FloatingActionButton.md) — A circular, elevated button that floats over content and can expand into a labeled pill.
71
- 33. [Pagination](Pagination.md) — Renders page controls derived from totalItems and pageSize, with optional first/last and prev/next buttons
63
+ 25. [AlertDialog](AlertDialog.md) — A pre-styled confirmation dialog built on Modal, with a variant icon, message and confirm/cancel buttons.
64
+ 26. [Modal](Modal.md) — A centered dialog over a dimmed overlay that holds a title, content and a row of actions.
65
+ 27. [BottomSheet](BottomSheet.md) — A panel that slides up from the bottom of the screen over a dimmed overlay.
66
+ 28. [SnackBar](SnackBar.md) — A transient toast that appears at the edge of the screen, reports a short message, and dismisses itself.
67
+ 29. [Tooltip](Tooltip.md) — Wraps a child widget and shows a labeled overlay bubble on hover or focus
68
+ 30. [Menu](Menu.md) — A trigger button that opens an anchored menu of actions
69
+ 31. [ProgressBar](ProgressBar.md) — A horizontal bar that visualizes completion from zero to max
70
+ 32. [CircularBar](CircularBar.md) — A circular or radial progress indicator drawn on canvas
71
+ 33. [Skeleton](Skeleton.md) — Renders animated placeholder blocks that stand in for content while it loads
72
+ 34. [FloatingActionButton](FloatingActionButton.md) — A circular, elevated button that floats over content and can expand into a labeled pill.
73
+ 35. [Pagination](Pagination.md) — Renders page controls derived from totalItems and pageSize, with optional first/last and prev/next buttons
72
74
 
73
75
  ### Chapter 5 · Navigation and flows
74
76
 
75
77
  _multi-step flows, trees and rotating content_
76
78
 
77
- 34. [Stepper](Stepper.md) — A multi-step progress indicator that shows each step as a circle, number or icon and reveals the active step's content.
78
- 35. [Accordion](Accordion.md) — A collapsible panel that hides a title bar with expandable content beneath it
79
- 36. [TreeView](TreeView.md) — Renders a collapsible hierarchy from nodes, each with an id, label, optional icon, badge and children
80
- 37. [Carousel](Carousel.md) — Cycles through items one at a time with optional arrows, dots and autoplay
81
- 38. [InstallButton](InstallButton.md) — A floating button that appears only when the browser is ready to install the app as a PWA
79
+ 36. [Stepper](Stepper.md) — A multi-step progress indicator that shows each step as a circle, number or icon and reveals the active step's content.
80
+ 37. [Accordion](Accordion.md) — A collapsible panel that hides a title bar with expandable content beneath it
81
+ 38. [TreeView](TreeView.md) — Renders a collapsible hierarchy from nodes, each with an id, label, optional icon, badge and children
82
+ 39. [Carousel](Carousel.md) — Cycles through items one at a time with optional arrows, dots and autoplay
83
+ 40. [InstallButton](InstallButton.md) — A floating button that appears only when the browser is ready to install the app as a PWA
82
84
 
83
85
  ### Chapter 6 · Data, rich content & effects
84
86
 
85
87
  _tables, charts, rich text, ads and motion_
86
88
 
87
- 39. [DataTable](DataTable.md) — Renders tabular rows using a columns definition, with optional striping, hover and borders
88
- 40. [Chart](Chart.md) — Draws bar, line, area or candlestick data onto a canvas, with optional labels, grid and value annotations
89
- 41. [CircularChart](CircularChart.md) — A pie or donut chart drawn on canvas with per-slice value, label, and color
90
- 42. [Markdown](Markdown.md) — Renders markdown source as styled HTML with scoped CSS, syntax-highlighted code blocks, copy buttons, tables, and blockquotes inside a scrollable surface.
91
- 43. [CodeViewer](CodeViewer.md) — Shows a read-only code block with an optional header, line numbers and scrolling for long files
92
- 44. [QRCode](QRCode.md) — Renders a scannable QR image for a string value
93
- 45. [Inspector](Inspector.md) — Renders a read-only tree that drills into a widget's props, children and element structure
94
- 46. [AdSense](AdSense.md) — Google AdSense display unit for the web
95
- 47. [AdMob](AdMob.md) — Google AdMob banner and full-screen ads for native Capacitor builds
96
- 48. [AnimatedBox](AnimatedBox.md) — Wraps a single child and plays a sequence of CSS animations described by effect/from/to steps
97
- 49. [AnimatedText](AnimatedText.md) — Splits a Text widget into individual characters and animates each one, optionally staggering the start of every letter for a cascade effect.
98
- 50. [MatrixRain](MatrixRain.md) — A canvas-based Matrix-style effect where random characters cascade down the screen
99
- 51. [ParallaxBox](ParallaxBox.md) — A container that shifts its child in response to scroll, mouse position, or hover entry
89
+ 41. [DataTable](DataTable.md) — Renders tabular rows using a columns definition, with optional striping, hover and borders
90
+ 42. [Chart](Chart.md) — Draws bar, line, area or candlestick data onto a canvas, with optional labels, grid and value annotations
91
+ 43. [CircularChart](CircularChart.md) — A pie or donut chart drawn on canvas with per-slice value, label, and color
92
+ 44. [Markdown](Markdown.md) — Renders markdown source as styled HTML with scoped CSS, syntax-highlighted code blocks, copy buttons, tables, and blockquotes inside a scrollable surface.
93
+ 45. [CodeViewer](CodeViewer.md) — Shows a read-only code block with an optional header, line numbers and scrolling for long files
94
+ 46. [QRCode](QRCode.md) — Renders a scannable QR image for a string value
95
+ 47. [Inspector](Inspector.md) — Renders a read-only tree that drills into a widget's props, children and element structure
96
+ 48. [AdSense](AdSense.md) — Google AdSense display unit for the web
97
+ 49. [AdMob](AdMob.md) — Google AdMob banner and full-screen ads for native Capacitor builds
98
+ 50. [AnimatedBox](AnimatedBox.md) — Wraps a single child and plays a sequence of CSS animations described by effect/from/to steps
99
+ 51. [AnimatedText](AnimatedText.md) — Splits a Text widget into individual characters and animates each one, optionally staggering the start of every letter for a cascade effect.
100
+ 52. [MatrixRain](MatrixRain.md) — A canvas-based Matrix-style effect where random characters cascade down the screen
101
+ 53. [ParallaxBox](ParallaxBox.md) — A container that shifts its child in response to scroll, mouse position, or hover entry
100
102
 
101
103
  ### Chapter 7 · Media and drag & drop
102
104
 
103
105
  _audio, video and drag-and-drop_
104
106
 
105
- 52. [Audio](Audio.md) — A thin wrapper around the native <audio> element with reliable duration detection, progress callbacks, and an imperative playback API
106
- 53. [Video](Video.md) — Renders a native <video> element with proper media attributes and a convenient playback API
107
- 54. [Maps](Maps.md) — An interactive map — pan, zoom, markers and polylines — with no map library behind it
108
- 55. [DraggBox](DraggBox.md) — Wraps a child so it can be dragged with the native drag-and-drop API
109
- 56. [DroppBox](DroppBox.md) — A drop target for DraggBox items
107
+ 54. [Audio](Audio.md) — A thin wrapper around the native <audio> element with reliable duration detection, progress callbacks, and an imperative playback API
108
+ 55. [Video](Video.md) — Renders a native <video> element with proper media attributes and a convenient playback API
109
+ 56. [Maps](Maps.md) — An interactive map — pan, zoom, markers and polylines — with no map library behind it
110
+ 57. [DraggBox](DraggBox.md) — Wraps a child so it can be dragged with the native drag-and-drop API
111
+ 58. [DroppBox](DroppBox.md) — A drop target for DraggBox items
110
112
 
111
113
  ### Chapter 8 · App navigation
112
114
 
113
115
  _Build the shell of a real application and wire it to the router._
114
116
 
115
- 57. [Scaffold](Scaffold.md) — the app shell: app bar, body, drawer, side bars
116
- 58. [AdaptiveScaffold](AdaptiveScaffold.md) — the same shell, adapted to phone and desktop
117
- 59. [AppBar](AppBar.md) — a top bar for titles, actions, and back navigation
118
- 60. [Drawer](Drawer.md) — a panel that slides in from the side
119
- 61. [DrawerItem](DrawerItem.md) — a router-aware row for a drawer or side bar
120
- 62. [BottomNavigation](BottomNavigation.md) — a bottom tab bar synced with the router
121
- 63. [Tabs](Tabs.md) — switch panes inside a screen
122
- 64. [CollapsibleSideBar](CollapsibleSideBar.md) — a side panel that collapses to icons
117
+ 59. [Scaffold](Scaffold.md) — the app shell: app bar, body, drawer, side bars
118
+ 60. [AdaptiveScaffold](AdaptiveScaffold.md) — the same shell, adapted to phone and desktop
119
+ 61. [AppBar](AppBar.md) — a top bar for titles, actions, and back navigation
120
+ 62. [Drawer](Drawer.md) — a panel that slides in from the side
121
+ 63. [DrawerItem](DrawerItem.md) — a router-aware row for a drawer or side bar
122
+ 64. [BottomNavigation](BottomNavigation.md) — a bottom tab bar synced with the router
123
+ 65. [Tabs](Tabs.md) — switch panes inside a screen
124
+ 66. [CollapsibleSideBar](CollapsibleSideBar.md) — a side panel that collapses to icons
123
125
 
124
126
  Then continue with [State, Router & Services](../guides/state.md) — Chapter 9.
125
127
 
@@ -169,6 +171,7 @@ Then continue with [State, Router & Services](../guides/state.md) — Chapter 9.
169
171
  - [Maps](Maps.md)
170
172
  - [Markdown](Markdown.md)
171
173
  - [MatrixRain](MatrixRain.md)
174
+ - [Menu](Menu.md)
172
175
  - [Modal](Modal.md)
173
176
  - [Pagination](Pagination.md)
174
177
  - [ParallaxBox](ParallaxBox.md)
@@ -186,6 +189,7 @@ Then continue with [State, Router & Services](../guides/state.md) — Chapter 9.
186
189
  - [Switch](Switch.md)
187
190
  - [Tabs](Tabs.md)
188
191
  - [Text](Text.md)
192
+ - [ThemePicker](ThemePicker.md)
189
193
  - [Tooltip](Tooltip.md)
190
194
  - [TreeView](TreeView.md)
191
195
  - [Video](Video.md)