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.
Files changed (156) hide show
  1. package/AGENTS_FOR_CODE_GEN.md +284 -0
  2. package/CONTRIBUTING.md +238 -0
  3. package/README.md +17 -13
  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 +18 -1
  11. package/bin/commands/createBundle.js +20 -8
  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/bundleConfig.js +47 -3
  20. package/bin/utils/contract.js +27 -0
  21. package/bin/utils/dtsProps.js +5 -1
  22. package/bin/utils/migrationGuide.js +146 -0
  23. package/bin/utils/moduleExports.js +9 -5
  24. package/bin/utils/templates.js +248 -30
  25. package/bin/utils/toolkit.js +191 -0
  26. package/docs/README.md +26 -1
  27. package/docs/arquitectura.md +1 -1
  28. package/docs/cli/README.md +201 -11
  29. package/docs/guides/README.md +6 -0
  30. package/docs/guides/accessibility.md +2 -1
  31. package/docs/guides/ai-toolkit.md +166 -0
  32. package/docs/guides/compatibility.md +1 -1
  33. package/docs/guides/first-app.md +6 -7
  34. package/docs/guides/migration.md +92 -0
  35. package/docs/guides/minification-and-protection.md +2 -1
  36. package/docs/guides/mobile-and-platforms.md +1 -1
  37. package/docs/guides/online-updates.md +20 -6
  38. package/docs/server/deployment.md +1 -1
  39. package/docs/tools/styling.md +2 -2
  40. package/docs/tools/theme.md +139 -4
  41. package/docs/widget/Accordion.md +74 -8
  42. package/docs/widget/AdMob.md +68 -3
  43. package/docs/widget/AdSense.md +67 -2
  44. package/docs/widget/AlertDialog.md +1 -1
  45. package/docs/widget/AnimatedBox.md +80 -39
  46. package/docs/widget/AnimatedText.md +74 -18
  47. package/docs/widget/Audio.md +73 -14
  48. package/docs/widget/Avatar.md +69 -4
  49. package/docs/widget/Badge.md +68 -3
  50. package/docs/widget/BottomSheet.md +2 -2
  51. package/docs/widget/Button.md +69 -3
  52. package/docs/widget/Card.md +69 -4
  53. package/docs/widget/Carousel.md +67 -2
  54. package/docs/widget/Chart.md +67 -2
  55. package/docs/widget/Checkbox.md +74 -8
  56. package/docs/widget/Chip.md +68 -3
  57. package/docs/widget/CircularBar.md +74 -15
  58. package/docs/widget/CircularChart.md +71 -10
  59. package/docs/widget/CodeViewer.md +67 -2
  60. package/docs/widget/Column.md +68 -3
  61. package/docs/widget/Container.md +68 -3
  62. package/docs/widget/DataTable.md +67 -2
  63. package/docs/widget/Divider.md +67 -2
  64. package/docs/widget/DraggBox.md +67 -2
  65. package/docs/widget/Dropdown.md +76 -10
  66. package/docs/widget/DroppBox.md +67 -2
  67. package/docs/widget/FloatingActionButton.md +68 -3
  68. package/docs/widget/GridView.md +67 -2
  69. package/docs/widget/Icon.md +71 -5
  70. package/docs/widget/Image.md +68 -3
  71. package/docs/widget/Input.md +68 -3
  72. package/docs/widget/Inspector.md +2 -2
  73. package/docs/widget/InstallButton.md +73 -13
  74. package/docs/widget/ListTile.md +69 -3
  75. package/docs/widget/ListView.md +67 -2
  76. package/docs/widget/Maps.md +68 -3
  77. package/docs/widget/Markdown.md +74 -15
  78. package/docs/widget/MatrixRain.md +72 -11
  79. package/docs/widget/Menu.md +209 -0
  80. package/docs/widget/Modal.md +3 -3
  81. package/docs/widget/Pagination.md +68 -3
  82. package/docs/widget/ParallaxBox.md +72 -12
  83. package/docs/widget/ProgressBar.md +69 -4
  84. package/docs/widget/QRCode.md +67 -2
  85. package/docs/widget/README.md +54 -50
  86. package/docs/widget/Radio.md +76 -10
  87. package/docs/widget/Rating.md +70 -6
  88. package/docs/widget/Row.md +68 -3
  89. package/docs/widget/Skeleton.md +68 -3
  90. package/docs/widget/Slider.md +75 -9
  91. package/docs/widget/SnackBar.md +2 -2
  92. package/docs/widget/Stack.md +68 -3
  93. package/docs/widget/Stepper.md +68 -3
  94. package/docs/widget/Switch.md +74 -8
  95. package/docs/widget/Text.md +71 -4
  96. package/docs/widget/ThemePicker.md +197 -0
  97. package/docs/widget/Tooltip.md +72 -7
  98. package/docs/widget/TreeView.md +70 -10
  99. package/docs/widget/Video.md +71 -10
  100. package/package.json +10 -3
  101. package/skills/fletbox-design/SKILL.md +89 -5
  102. package/skills/fletbox-motion/SKILL.md +1 -1
  103. package/skills/fletbox-rules/SKILL.md +56 -4
  104. package/src/core/runApp.js +12 -0
  105. package/src/index.d.ts +374 -101
  106. package/src/index.js +9 -0
  107. package/src/navigations/AdaptiveScaffold.js +2 -2
  108. package/src/navigations/BottomNavigation.js +1 -1
  109. package/src/navigations/Scaffold.js +18 -6
  110. package/src/tools/useState.js +11 -4
  111. package/src/utils/colors.js +275 -0
  112. package/src/utils/errorBoundary.js +288 -0
  113. package/src/utils/index.js +10 -2
  114. package/src/utils/stackPosition.js +39 -24
  115. package/src/utils/syntaxHighlight.js +4 -1
  116. package/src/utils/themes.js +279 -3
  117. package/src/widget-factory/addChildren.js +17 -10
  118. package/src/widget-factory/assignProps.js +18 -6
  119. package/src/widget-factory/createWidget.js +7 -0
  120. package/src/widget-factory/deprecations.js +77 -0
  121. package/src/widget-factory/translateProps.js +11 -1
  122. package/src/widget-factory/warnings.js +1 -27
  123. package/src/widget-factory/widgetFactory.js +59 -17
  124. package/src/widgets/Accordion.js +21 -7
  125. package/src/widgets/Badge.js +11 -2
  126. package/src/widgets/Button.js +15 -3
  127. package/src/widgets/Carousel.js +12 -4
  128. package/src/widgets/Chart.js +7 -2
  129. package/src/widgets/Checkbox.js +1 -2
  130. package/src/widgets/Chip.js +24 -10
  131. package/src/widgets/CircularBar.js +9 -3
  132. package/src/widgets/CircularChart.js +5 -3
  133. package/src/widgets/Container.js +6 -0
  134. package/src/widgets/Divider.js +3 -1
  135. package/src/widgets/DraggBox.js +9 -0
  136. package/src/widgets/Dropdown.js +3 -3
  137. package/src/widgets/DroppBox.js +5 -0
  138. package/src/widgets/FloatingActionButton.js +1 -1
  139. package/src/widgets/Icon.js +5 -1
  140. package/src/widgets/InstallButton.js +4 -2
  141. package/src/widgets/Markdown.js +171 -103
  142. package/src/widgets/Menu.js +340 -0
  143. package/src/widgets/Modal.js +7 -1
  144. package/src/widgets/Pagination.js +10 -5
  145. package/src/widgets/ProgressBar.js +5 -4
  146. package/src/widgets/QRCode.js +4 -0
  147. package/src/widgets/Radio.js +1 -2
  148. package/src/widgets/Rating.js +9 -0
  149. package/src/widgets/Slider.js +4 -1
  150. package/src/widgets/SnackBar.js +2 -2
  151. package/src/widgets/Switch.js +1 -2
  152. package/src/widgets/Text.js +9 -5
  153. package/src/widgets/ThemePicker.js +234 -0
  154. package/src/widgets/TreeView.js +2 -1
  155. package/src/widgets/index.js +2 -0
  156. package/docs/CONTRIBUTING.md +0 -156
@@ -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)
@@ -14,7 +14,7 @@ import { Radio } from "flet-box";
14
14
  const plan = Radio({
15
15
  label: "Monthly",
16
16
  name: "billing",
17
- onSelect: (value) => console.log(value),
17
+ onPress: (value) => console.log(value),
18
18
  });
19
19
  ```
20
20
 
@@ -25,12 +25,13 @@ const plan = Radio({
25
25
  | Prop | Type | Description |
26
26
  | --- | --- | --- |
27
27
  | `selected` | `boolean` | Current selected state. |
28
- | `onSelect` | `(selected: boolean) => void` | Fired when the widget or an option is selected. |
28
+ | `onSelect` | `(selected: boolean) => void` | Deprecated alias of `onPress`. |
29
+ | `onPress` | `(selected: boolean) => void` | Called with the new selected state (`true` or `false`). |
29
30
  | `disabled` | `boolean` | Disables interaction and shows the non-interactive state. |
30
31
  | `size` | `number` | Overall size preset or pixel value, depending on the widget. |
31
32
  | `activeColor` | `Color` | Color used in the active state. |
32
33
  | `label` | `string` | Label or caption shown near the control. |
33
- | `name` | `string` | The `name` value for the widget. |
34
+ | `name` | `string` | Value this option submits when it is the selected one. |
34
35
 
35
36
  ### Common props
36
37
 
@@ -38,11 +39,64 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
38
39
 
39
40
  | Prop | Type | Description |
40
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. |
41
59
  | `width` | `Size` | Width of the widget. A number is pixels; a string uses any CSS unit. |
42
60
  | `height` | `Size` | Height of the widget. A number is pixels; a string uses any CSS unit. |
43
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. |
44
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`. |
45
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`. |
46
100
  | `bgColor` | `Color` | Background color. Alias: `backgroundColor`. |
47
101
  | `backgroundColor` | `Color` | Background color. Alias of `bgColor`. |
48
102
  | `color` | `Color` | Foreground color, usually the text or icon color. |
@@ -52,11 +106,23 @@ Every widget also accepts these shared props — see [common props](COMMON_PROPS
52
106
  | `filter` | `string` | Raw CSS `filter` value applied to the widget itself, e.g. `blur(4px)`. |
53
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. |
54
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. |
55
113
  | `opacity` | `number` | Opacity from 0 (invisible) to 1 (fully opaque). |
56
114
  | `visible` | `boolean` | Whether the widget is rendered and visible. |
57
115
  | `disabled` | `boolean` | Disables interaction and shows the non-interactive state. |
58
- | `onPress` | `(widget: Widget) => void` | Callback fired when the widget is pressed. Alias: `onClick`. |
59
- | `onClick` | `(widget: Widget) => void` | Callback fired when the widget is clicked. Alias: `onPress`. |
116
+ | `onPress` | `(event?: Event) => void` | Called with the new selected state (`true` or `false`). |
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. |
60
126
  | `id` | `string` | DOM `id` for the rendered element. |
61
127
  | `className` | `string` | CSS class names applied to the rendered element. |
62
128
  | `ref` | `(widget: Widget) => void` | Callback that receives the underlying DOM node. |
@@ -74,7 +140,7 @@ const monthly = Radio({
74
140
  name: "billing",
75
141
  selected: true,
76
142
  activeColor: "#2563eb",
77
- onSelect: (value) => console.log("billing:", value),
143
+ onPress: (value) => console.log("billing:", value),
78
144
  });
79
145
  ```
80
146
 
@@ -90,7 +156,7 @@ const option = Radio({
90
156
  disabled: false,
91
157
  activeColor: "#16a34a",
92
158
  size: 24,
93
- onSelect: (value) => {
159
+ onPress: (value) => {
94
160
  console.log("shipping changed:", value);
95
161
  },
96
162
  });
@@ -99,7 +165,7 @@ const option = Radio({
99
165
  ## Tips
100
166
 
101
167
  - Give Radios that answer the same question the same name; selecting one clears the others in that group.
102
- - Set selected for the initial choice and let onSelect write the change back into your own state.
168
+ - Set selected for the initial choice and let onPress write the change back into your own state.
103
169
 
104
170
  ## Accessibility
105
171
 
@@ -107,7 +173,7 @@ const option = Radio({
107
173
 
108
174
  ## Behavior
109
175
 
110
- - Clicking an already-selected Radio is a no-op, so onSelect only fires when the selection actually changes.
176
+ - Clicking an already-selected Radio is a no-op, so onPress only fires when the selection actually changes.
111
177
  - The returned element exposes select(), unselect() and isSelected() for programmatic control.
112
178
 
113
179
  ## Related widgets
@@ -124,4 +190,4 @@ const option = Radio({
124
190
  - **Next:** [Switch](Switch.md)
125
191
  - **Index:** [Widget index](README.md) · [Start here](START_HERE.md)
126
192
 
127
- You are reading **Chapter 2 · Interaction basics** (4 of 8).
193
+ You are reading **Chapter 2 · Interaction basics** (4 of 9).
@@ -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. |
@@ -117,8 +182,7 @@ const rating = Rating({
117
182
 
118
183
  - onChange receives the numeric value each time the user picks a rating.
119
184
  - readOnly disables onChange while keeping the current value visible.
120
- - An unfilled star uses the palette's control grey and a filled one its readable
121
- - amber, so both states clear 3:1 against the surface they sit on.
185
+ - An unfilled star uses the palette's control grey and a filled one its readable amber, so both states clear 3:1 against the surface they sit on.
122
186
 
123
187
  ## Related widgets
124
188
 
@@ -131,7 +195,7 @@ const rating = Rating({
131
195
  ## Continue reading
132
196
 
133
197
  - **Previous:** [Dropdown](Dropdown.md)
134
- - **Next:** [Card](Card.md)
198
+ - **Next:** [ThemePicker](ThemePicker.md)
135
199
  - **Index:** [Widget index](README.md) · [Start here](START_HERE.md)
136
200
 
137
- You are reading **Chapter 2 · Interaction basics** (8 of 8).
201
+ You are reading **Chapter 2 · Interaction basics** (8 of 9).