@mittwald/flow-react-components 1.6.0-next.4 → 1.6.0-next.40

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 (256) hide show
  1. package/AGENTS.md +132 -88
  2. package/USAGE.md +7 -2
  3. package/dist/assets/component-index.json +1 -1
  4. package/dist/assets/doc-properties.json +1 -1
  5. package/dist/css/all-layered.css +1 -1
  6. package/dist/css/all.css +1 -1
  7. package/dist/js/_virtual/_18.locale.mjs +14 -0
  8. package/dist/js/default.mjs +4 -3
  9. package/dist/js/flr-universal.mjs +2 -1
  10. package/dist/js/node_modules/.pnpm/{@lezer_lr@1.4.10 → @lezer_lr@1.4.11}/node_modules/@lezer/lr/dist/index.mjs +40 -28
  11. package/dist/js/node_modules/.pnpm/@lezer_lr@1.4.11/node_modules/@lezer/lr/dist/index.mjs.map +1 -0
  12. package/dist/js/packages/components/src/components/AccentBox/AccentBox.mjs +3 -2
  13. package/dist/js/packages/components/src/components/AccentBox/AccentBox.mjs.map +1 -1
  14. package/dist/js/packages/components/src/components/Accordion/Accordion.mjs +3 -2
  15. package/dist/js/packages/components/src/components/Accordion/Accordion.mjs.map +1 -1
  16. package/dist/js/packages/components/src/components/Action/models/ActionState.mjs +2 -2
  17. package/dist/js/packages/components/src/components/ActionGroup/ActionGroup.mjs +3 -3
  18. package/dist/js/packages/components/src/components/ActionGroup/ActionGroup.mjs.map +1 -1
  19. package/dist/js/packages/components/src/components/Activity/Activity.mjs +1 -1
  20. package/dist/js/packages/components/src/components/Activity/Activity.mjs.map +1 -1
  21. package/dist/js/packages/components/src/components/Alert/Alert.mjs +3 -2
  22. package/dist/js/packages/components/src/components/Alert/Alert.mjs.map +1 -1
  23. package/dist/js/packages/components/src/components/AlertBadge/AlertBadge.mjs +1 -1
  24. package/dist/js/packages/components/src/components/AlertBadge/AlertBadge.mjs.map +1 -1
  25. package/dist/js/packages/components/src/components/AlertBadge/AlertBadge.module.mjs.map +1 -1
  26. package/dist/js/packages/components/src/components/Badge/Badge.mjs +2 -2
  27. package/dist/js/packages/components/src/components/Badge/Badge.mjs.map +1 -1
  28. package/dist/js/packages/components/src/components/Badge/Badge.module.mjs.map +1 -1
  29. package/dist/js/packages/components/src/components/Calendar/components/RangeCalendar/helpers/useCalendarDateRangePresets.mjs +1 -1
  30. package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs +6 -8
  31. package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs.map +1 -1
  32. package/dist/js/packages/components/src/components/CartesianChart/components/YAxis/YAxis.mjs +23 -5
  33. package/dist/js/packages/components/src/components/CartesianChart/components/YAxis/YAxis.mjs.map +1 -1
  34. package/dist/js/packages/components/src/components/CartesianChart/hooks/useTickLabelWidth.mjs +67 -0
  35. package/dist/js/packages/components/src/components/CartesianChart/hooks/useTickLabelWidth.mjs.map +1 -0
  36. package/dist/js/packages/components/src/components/Checkbox/Checkbox.mjs +2 -2
  37. package/dist/js/packages/components/src/components/Checkbox/Checkbox.mjs.map +1 -1
  38. package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.mjs +3 -3
  39. package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.mjs.map +1 -1
  40. package/dist/js/packages/components/src/components/CodeEditor/CodeEditor.mjs +41 -12
  41. package/dist/js/packages/components/src/components/CodeEditor/CodeEditor.mjs.map +1 -1
  42. package/dist/js/packages/components/src/components/CodeEditor/hooks/useCodeEditorExtensions.mjs +29 -16
  43. package/dist/js/packages/components/src/components/CodeEditor/hooks/useCodeEditorExtensions.mjs.map +1 -1
  44. package/dist/js/packages/components/src/components/CodeEditor/languages/dotEnv/dotEnv.mjs +1 -1
  45. package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs +3 -2
  46. package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs.map +1 -1
  47. package/dist/js/packages/components/src/components/ContextMenu/ContextMenu.mjs +3 -2
  48. package/dist/js/packages/components/src/components/ContextMenu/ContextMenu.mjs.map +1 -1
  49. package/dist/js/packages/components/src/components/CountryOptions/CountryOptions.mjs +5 -1
  50. package/dist/js/packages/components/src/components/CountryOptions/CountryOptions.mjs.map +1 -1
  51. package/dist/js/packages/components/src/components/DatePicker/DatePicker.mjs +2 -1
  52. package/dist/js/packages/components/src/components/DatePicker/DatePicker.mjs.map +1 -1
  53. package/dist/js/packages/components/src/components/DateRangePicker/DateRangePicker.mjs +2 -1
  54. package/dist/js/packages/components/src/components/DateRangePicker/DateRangePicker.mjs.map +1 -1
  55. package/dist/js/packages/components/src/components/DeprecationWarningProvider/DeprecationWarningProvider.mjs +40 -8
  56. package/dist/js/packages/components/src/components/DeprecationWarningProvider/DeprecationWarningProvider.mjs.map +1 -1
  57. package/dist/js/packages/components/src/components/DonutChart/DonutChart.mjs.map +1 -1
  58. package/dist/js/packages/components/src/components/Heading/Heading.mjs +2 -0
  59. package/dist/js/packages/components/src/components/Heading/Heading.mjs.map +1 -1
  60. package/dist/js/packages/components/src/components/Icon/Icon.module.mjs.map +1 -1
  61. package/dist/js/packages/components/src/components/IllustratedMessage/IllustratedMessage.mjs +3 -2
  62. package/dist/js/packages/components/src/components/IllustratedMessage/IllustratedMessage.mjs.map +1 -1
  63. package/dist/js/packages/components/src/components/Label/Label.mjs +0 -4
  64. package/dist/js/packages/components/src/components/Label/Label.mjs.map +1 -1
  65. package/dist/js/packages/components/src/components/Link/Link.mjs.map +1 -1
  66. package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +5 -2
  67. package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map +1 -1
  68. package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs +2 -2
  69. package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs.map +1 -1
  70. package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordionDateRange.mjs +5 -3
  71. package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordionDateRange.mjs.map +1 -1
  72. package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.mjs +101 -0
  73. package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.mjs.map +1 -0
  74. package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.module.mjs +13 -0
  75. package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.module.mjs.map +1 -0
  76. package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.mjs +16 -9
  77. package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.mjs.map +1 -1
  78. package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.module.mjs +6 -2
  79. package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.module.mjs.map +1 -1
  80. package/dist/js/packages/components/src/components/List/components/Header/components/SearchField/SearchField.mjs +4 -2
  81. package/dist/js/packages/components/src/components/List/components/Header/components/SearchField/SearchField.mjs.map +1 -1
  82. package/dist/js/packages/components/src/components/List/components/Items/Items.mjs +3 -0
  83. package/dist/js/packages/components/src/components/List/components/Items/Items.mjs.map +1 -1
  84. package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs +1 -1
  85. package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs.map +1 -1
  86. package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs +1 -2
  87. package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs.map +1 -1
  88. package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs +3 -0
  89. package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs.map +1 -1
  90. package/dist/js/packages/components/src/components/List/components/ListSummary/ListSummary.mjs +5 -9
  91. package/dist/js/packages/components/src/components/List/components/ListSummary/ListSummary.mjs.map +1 -1
  92. package/dist/js/packages/components/src/components/List/components/Table/Table.mjs +8 -12
  93. package/dist/js/packages/components/src/components/List/components/Table/Table.mjs.map +1 -1
  94. package/dist/js/packages/components/src/components/List/components/Table/components/Row.mjs +31 -0
  95. package/dist/js/packages/components/src/components/List/components/Table/components/Row.mjs.map +1 -0
  96. package/dist/js/packages/components/src/components/List/hooks/useLatestOnAction.mjs +21 -0
  97. package/dist/js/packages/components/src/components/List/hooks/useLatestOnAction.mjs.map +1 -0
  98. package/dist/js/packages/components/src/components/List/model/List.mjs +1 -0
  99. package/dist/js/packages/components/src/components/List/model/List.mjs.map +1 -1
  100. package/dist/js/packages/components/src/components/List/model/ListViewMode.mjs +2 -2
  101. package/dist/js/packages/components/src/components/List/model/ReactTable.mjs +2 -2
  102. package/dist/js/packages/components/src/components/List/model/filter/DateRangeFilter.mjs +15 -2
  103. package/dist/js/packages/components/src/components/List/model/filter/DateRangeFilter.mjs.map +1 -1
  104. package/dist/js/packages/components/src/components/List/model/filter/resolveDateRangeFilterValue.mjs +16 -0
  105. package/dist/js/packages/components/src/components/List/model/filter/resolveDateRangeFilterValue.mjs.map +1 -0
  106. package/dist/js/packages/components/src/components/List/model/item/ItemView.mjs +20 -7
  107. package/dist/js/packages/components/src/components/List/model/item/ItemView.mjs.map +1 -1
  108. package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoaderState.mjs +2 -2
  109. package/dist/js/packages/components/src/components/List/model/table/TableCell.mjs +1 -1
  110. package/dist/js/packages/components/src/components/List/model/table/TableCell.mjs.map +1 -1
  111. package/dist/js/packages/components/src/components/List/model/table/TableRow.mjs +28 -1
  112. package/dist/js/packages/components/src/components/List/model/table/TableRow.mjs.map +1 -1
  113. package/dist/js/packages/components/src/components/Markdown/Markdown.mjs +25 -7
  114. package/dist/js/packages/components/src/components/Markdown/Markdown.mjs.map +1 -1
  115. package/dist/js/packages/components/src/components/Markdown/components/SkeletonBlocks.mjs +1 -1
  116. package/dist/js/packages/components/src/components/Markdown/components/SkeletonBlocks.mjs.map +1 -1
  117. package/dist/js/packages/components/src/components/Markdown/lib/isExternalHref.mjs +8 -0
  118. package/dist/js/packages/components/src/components/Markdown/lib/isExternalHref.mjs.map +1 -0
  119. package/dist/js/packages/components/src/components/MenuItem/MenuItem.mjs +32 -3
  120. package/dist/js/packages/components/src/components/MenuItem/MenuItem.mjs.map +1 -1
  121. package/dist/js/packages/components/src/components/MenuItem/MenuItem.module.mjs +1 -3
  122. package/dist/js/packages/components/src/components/MessageThread/MessageThread.mjs +1 -1
  123. package/dist/js/packages/components/src/components/MessageThread/MessageThread.mjs.map +1 -1
  124. package/dist/js/packages/components/src/components/Modal/Modal.mjs +9 -2
  125. package/dist/js/packages/components/src/components/Modal/Modal.mjs.map +1 -1
  126. package/dist/js/packages/components/src/components/Navigation/Navigation.module.mjs +1 -3
  127. package/dist/js/packages/components/src/components/NumberField/NumberField.mjs +2 -3
  128. package/dist/js/packages/components/src/components/NumberField/NumberField.mjs.map +1 -1
  129. package/dist/js/packages/components/src/components/Option/Option.module.mjs +1 -3
  130. package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs +2 -1
  131. package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs.map +1 -1
  132. package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs +1 -1
  133. package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs.map +1 -1
  134. package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs +1 -1
  135. package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs.map +1 -1
  136. package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs +4 -2
  137. package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs.map +1 -1
  138. package/dist/js/packages/components/src/components/ProgressBar/ProgressBar.mjs.map +1 -1
  139. package/dist/js/packages/components/src/components/ProgressBar/components/ProgressBarLegend.mjs +5 -4
  140. package/dist/js/packages/components/src/components/ProgressBar/components/ProgressBarLegend.mjs.map +1 -1
  141. package/dist/js/packages/components/src/components/RadioGroup/RadioGroup.mjs +2 -3
  142. package/dist/js/packages/components/src/components/RadioGroup/RadioGroup.mjs.map +1 -1
  143. package/dist/js/packages/components/src/components/Rating/Rating.mjs +12 -11
  144. package/dist/js/packages/components/src/components/Rating/Rating.mjs.map +1 -1
  145. package/dist/js/packages/components/src/components/SearchField/SearchField.mjs +2 -3
  146. package/dist/js/packages/components/src/components/SearchField/SearchField.mjs.map +1 -1
  147. package/dist/js/packages/components/src/components/Section/Section.mjs +10 -6
  148. package/dist/js/packages/components/src/components/Section/Section.mjs.map +1 -1
  149. package/dist/js/packages/components/src/components/Section/components/SectionHeader/SectionHeader.mjs +0 -4
  150. package/dist/js/packages/components/src/components/Section/components/SectionHeader/SectionHeader.mjs.map +1 -1
  151. package/dist/js/packages/components/src/components/Section/context.mjs +47 -0
  152. package/dist/js/packages/components/src/components/Section/context.mjs.map +1 -0
  153. package/dist/js/packages/components/src/components/SegmentedControl/SegmentedControl.mjs +2 -3
  154. package/dist/js/packages/components/src/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  155. package/dist/js/packages/components/src/components/Select/Select.mjs +2 -3
  156. package/dist/js/packages/components/src/components/Select/Select.mjs.map +1 -1
  157. package/dist/js/packages/components/src/components/SkeletonText/SkeletonText.mjs +4 -3
  158. package/dist/js/packages/components/src/components/SkeletonText/SkeletonText.mjs.map +1 -1
  159. package/dist/js/packages/components/src/components/Slider/Slider.mjs +47 -41
  160. package/dist/js/packages/components/src/components/Slider/Slider.mjs.map +1 -1
  161. package/dist/js/packages/components/src/components/Table/Table.mjs +3 -0
  162. package/dist/js/packages/components/src/components/Table/Table.mjs.map +1 -1
  163. package/dist/js/packages/components/src/components/Table/Table.module.mjs.map +1 -1
  164. package/dist/js/packages/components/src/components/Table/components/TableCell/TableCell.mjs +5 -12
  165. package/dist/js/packages/components/src/components/Table/components/TableCell/TableCell.mjs.map +1 -1
  166. package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs +4 -2
  167. package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs.map +1 -1
  168. package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs +7 -1
  169. package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs.map +1 -1
  170. package/dist/js/packages/components/src/components/Table/components/TableHeader/context.mjs +14 -0
  171. package/dist/js/packages/components/src/components/Table/components/TableHeader/context.mjs.map +1 -0
  172. package/dist/js/packages/components/src/components/Tabs/Tabs.mjs +6 -8
  173. package/dist/js/packages/components/src/components/Tabs/Tabs.mjs.map +1 -1
  174. package/dist/js/packages/components/src/components/Tabs/Tabs.module.mjs.map +1 -1
  175. package/dist/js/packages/components/src/components/Tabs/components/TabTitle/TabTitle.module.mjs.map +1 -1
  176. package/dist/js/packages/components/src/components/TextField/TextField.mjs +11 -8
  177. package/dist/js/packages/components/src/components/TextField/TextField.mjs.map +1 -1
  178. package/dist/js/packages/components/src/components/TimeField/TimeField.mjs +4 -2
  179. package/dist/js/packages/components/src/components/TimeField/TimeField.mjs.map +1 -1
  180. package/dist/js/packages/components/src/components/TranslationProvider/useLocalizedStringFormatter.mjs +15 -2
  181. package/dist/js/packages/components/src/components/TranslationProvider/useLocalizedStringFormatter.mjs.map +1 -1
  182. package/dist/js/packages/components/src/components/Wrap/Wrap.mjs.map +1 -1
  183. package/dist/js/packages/components/src/integrations/react-hook-form/components/Field/Field.mjs +1 -1
  184. package/dist/js/packages/components/src/integrations/react-hook-form/components/Form/Form.mjs +4 -1
  185. package/dist/js/packages/components/src/integrations/react-hook-form/components/Form/Form.mjs.map +1 -1
  186. package/dist/js/packages/components/src/integrations/react-hook-form/components/FormRootError/FormRootError.mjs +1 -1
  187. package/dist/js/packages/components/src/integrations/react-hook-form/components/FormSettingsProvider/FormSettingsProvider.mjs.map +1 -1
  188. package/dist/js/packages/components/src/lib/controller/overlay/OverlayController.mjs +10 -158
  189. package/dist/js/packages/components/src/lib/controller/overlay/OverlayController.mjs.map +1 -1
  190. package/dist/js/packages/components/src/lib/controller/overlay/useCloseOverlayConfirmationController.mjs +1 -0
  191. package/dist/js/packages/components/src/lib/controller/overlay/useCloseOverlayConfirmationController.mjs.map +1 -1
  192. package/dist/js/packages/components/src/lib/hooks/dom/useVirtualKeyboardVisible.mjs +8 -4
  193. package/dist/js/packages/components/src/lib/hooks/dom/useVirtualKeyboardVisible.mjs.map +1 -1
  194. package/dist/js/packages/components/src/views/DatePickerView.mjs +16 -0
  195. package/dist/js/packages/components/src/views/DatePickerView.mjs.map +1 -0
  196. package/dist/js/packages/components/src/views/LabelView.mjs +16 -0
  197. package/dist/js/packages/components/src/views/LabelView.mjs.map +1 -0
  198. package/dist/js/packages/components/src/views/TimeFieldView.mjs +16 -0
  199. package/dist/js/packages/components/src/views/TimeFieldView.mjs.map +1 -0
  200. package/dist/js/packages/components-base/src/index.mjs +5 -2
  201. package/dist/js/packages/components-base/src/list/filter/ListDateRangeFilter.mjs +1 -0
  202. package/dist/js/packages/components-base/src/list/filter/ListDateRangeFilter.mjs.map +1 -1
  203. package/dist/js/packages/components-base/src/list/filter/ListFilter.mjs +4 -1
  204. package/dist/js/packages/components-base/src/list/filter/ListFilter.mjs.map +1 -1
  205. package/dist/js/packages/components-base/src/list/filter/dateRange.mjs +37 -13
  206. package/dist/js/packages/components-base/src/list/filter/dateRange.mjs.map +1 -1
  207. package/dist/js/packages/components-base/src/list/filter/dateTimeRangeFields.mjs +55 -0
  208. package/dist/js/packages/components-base/src/list/filter/dateTimeRangeFields.mjs.map +1 -0
  209. package/dist/js/packages/components-base/src/list/filter/formatDateRange.mjs +27 -0
  210. package/dist/js/packages/components-base/src/list/filter/formatDateRange.mjs.map +1 -0
  211. package/dist/js/packages/components-base/src/overlay/OverlayState.mjs +196 -0
  212. package/dist/js/packages/components-base/src/overlay/OverlayState.mjs.map +1 -0
  213. package/dist/types/_bundled/flow-components-base/index.d.ts +4 -1
  214. package/dist/types/_bundled/flow-components-base/list/filter/ListFilter.d.ts +2 -0
  215. package/dist/types/_bundled/flow-components-base/list/filter/dateRange.d.ts +24 -1
  216. package/dist/types/_bundled/flow-components-base/list/filter/dateTimeRangeFields.d.ts +34 -0
  217. package/dist/types/_bundled/flow-components-base/list/filter/formatDateRange.d.ts +7 -0
  218. package/dist/types/_bundled/flow-components-base/overlay/OverlayState.d.ts +94 -0
  219. package/dist/types/components/AlertBadge/AlertBadge.d.ts +2 -2
  220. package/dist/types/components/Badge/Badge.d.ts +2 -2
  221. package/dist/types/components/CartesianChart/hooks/useTickLabelWidth.d.ts +1 -0
  222. package/dist/types/components/CodeBlock/CodeBlock.d.ts +1 -1
  223. package/dist/types/components/DonutChart/DonutChart.d.ts +1 -4
  224. package/dist/types/components/Link/Link.d.ts +1 -1
  225. package/dist/types/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.d.ts +8 -0
  226. package/dist/types/components/List/components/Items/components/Item/Item.d.ts +2 -0
  227. package/dist/types/components/List/components/Items/components/Item/hooks/useGridItemProps.d.ts +1 -0
  228. package/dist/types/components/List/components/ListSummary/ListSummary.d.ts +3 -2
  229. package/dist/types/components/List/components/Table/components/Row.d.ts +13 -0
  230. package/dist/types/components/List/hooks/useLatestOnAction.d.ts +7 -0
  231. package/dist/types/components/List/index.d.ts +2 -0
  232. package/dist/types/components/List/model/filter/DateRangeFilter.d.ts +15 -8
  233. package/dist/types/components/List/model/filter/resolveDateRangeFilterValue.d.ts +11 -0
  234. package/dist/types/components/List/model/filter/types.d.ts +23 -1
  235. package/dist/types/components/List/model/item/ItemView.d.ts +34 -11
  236. package/dist/types/components/List/model/table/TableRow.d.ts +14 -0
  237. package/dist/types/components/List/model/table/types.d.ts +17 -1
  238. package/dist/types/components/List/typedList.d.ts +1 -0
  239. package/dist/types/components/Markdown/lib/isExternalHref.d.ts +1 -0
  240. package/dist/types/components/ProgressBar/ProgressBar.d.ts +1 -4
  241. package/dist/types/components/Rating/Rating.d.ts +5 -5
  242. package/dist/types/components/Section/context.d.ts +28 -0
  243. package/dist/types/components/Table/components/TableCell/TableCell.d.ts +4 -1
  244. package/dist/types/components/Table/components/TableHeader/context.d.ts +6 -0
  245. package/dist/types/components/Wrap/Wrap.d.ts +5 -0
  246. package/dist/types/index/flr-universal.d.ts +1 -1
  247. package/dist/types/integrations/react-hook-form/components/FormSettingsProvider/FormSettingsProvider.d.ts +7 -1
  248. package/dist/types/lib/controller/overlay/OverlayController.d.ts +8 -74
  249. package/dist/types/lib/dev/hydrateServerMarkup.d.ts +2 -0
  250. package/dist/types/lib/hooks/dom/useVirtualKeyboardVisible.d.ts +4 -1
  251. package/package.json +12 -12
  252. package/dist/js/node_modules/.pnpm/@lezer_lr@1.4.10/node_modules/@lezer/lr/dist/index.mjs.map +0 -1
  253. package/dist/js/packages/components/src/lib/date/transformDateValueToFormattedDate.mjs +0 -10
  254. package/dist/js/packages/components/src/lib/date/transformDateValueToFormattedDate.mjs.map +0 -1
  255. package/dist/types/lib/date/transformDateValueToDateTime.d.ts +0 -3
  256. package/dist/types/lib/date/transformDateValueToFormattedDate.d.ts +0 -2
package/AGENTS.md CHANGED
@@ -333,6 +333,28 @@ if ("action" in props) {
333
333
  | `*.test.ts(x)` (unit) | Pure logic in `src/lib/` or component utility functions. |
334
334
  | `*.test-types.tsx` | Generic/typed public APIs — `expectTypeOf` plus `@ts-expect-error` negative assertions. |
335
335
 
336
+ A bug fix gets a regression test when it changes behavior this table covers, or
337
+ rendered output the visual suite covers
338
+ (`packages/remote-react-components/src/tests/visual`, see Definition of Done
339
+ item 4 in the
340
+ [root AGENTS.md](https://github.com/mittwald/flow/blob/main/AGENTS.md#definition-of-done--component-work))
341
+ — not by default. Leave out:
342
+
343
+ - **Wiring of a single prop** — "the consumer `className` reaches the root",
344
+ "`aria-label` is forwarded". A test for one prop is arbitrary: every other
345
+ prop would need the same. A whole class of wiring bugs (`className` merge
346
+ order, a props spread) belongs in a lint rule or a shared contract helper like
347
+ `testFormFieldContract`.
348
+ - **A spy on a function prop the component consumes** — `sortBy`, `filterBy`, a
349
+ formatter. Assert the result it produces, not that it ran. `on*` event props
350
+ are the exception: the call is what the consumer observes, so a spy is the
351
+ assertion.
352
+ - **Tests that pass without the fix.** Revert the fix and watch the test fail
353
+ before committing it. If it cannot fail, it guards nothing; say in the PR how
354
+ you verified the fix instead. The `optimizeDeps` entry under
355
+ [Common failures](#common-failures) below shows one way a test passes in both
356
+ directions.
357
+
336
358
  Run: `pnpm nx test:unit components`,
337
359
  `pnpm nx test:browser components --browser.name=webkit`. The browser targets
338
360
  install the Playwright browsers for you **locally**; `pnpm test:browser:prepare`
@@ -404,75 +426,15 @@ Four traps cost time in every new browser test:
404
426
  technology lands on (the input or the group), spread after `rest`: its
405
427
  `aria-describedby` references the error only while one is rendered and already
406
428
  contains the consumer's own ids. See
407
- [Building a form field](#building-a-form-field).
429
+ [FORM_FIELDS.md](https://github.com/mittwald/flow/blob/main/packages/components/FORM_FIELDS.md).
408
430
 
409
431
  ## Building a form field
410
432
 
411
433
  A form field is any component a user enters a value with — anything that calls
412
- `useFieldComponent`. It supports the whole contract below, end to end: prop →
413
- behavior → styling → `Label` state → test. Gaps in existing fields are tracked
414
- in #3368.
415
-
416
- | Aspect | Requirement |
417
- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
418
- | `isDisabled` | Control is not operable (`disabled` or `aria-disabled`), disabled styling via the `formControl` mixin, `Label` disabled. Every inner button too. |
419
- | `isReadOnly` | Value cannot change, control still focusable and submitted. Native `readonly` / react-aria's `isReadOnly` where it exists, otherwise `aria-readonly` — never by disabling the control. Inner buttons that change the value off. |
420
- | `isRequired` | `required` or `aria-required` on the control; `Label` drops its "optional" marker (`useFieldComponent` does that). |
421
- | `isInvalid` | `aria-invalid` on the control, invalid styling, `FieldError` rendered and linked. |
422
- | `validationBehavior` | `"native"` blocks form submission on a constraint violation, `"aria"` does not. react-hook-form's `Field` passes `"aria"`. |
423
- | `Label` / `FieldDescription` | Children slots via `useFieldComponent`; `Label` names the control. `controlProps` (with `aria-describedby`) land on the **focusable control** (or the group of a grouped control), not on a wrapper `div`. |
424
- | `name` / `form` | The value is in the `FormData` of the surrounding (or `form`-referenced) form. A custom control renders a hidden input. |
425
- | `defaultValue` / `value` | Both work; `onChange` reports user changes with the field's own value type (a `number` field reports a `number`). |
426
- | `ref` | Points at the focusable control — react-hook-form focuses it on a validation error. |
427
- | `autoFocus`, `onFocus`/`onBlur` | Reach the focusable control. react-hook-form marks a field touched via `onBlur`. |
428
-
429
- An exception needs a reason that holds for the field's nature (a `Slider` always
430
- has a value, so it has no required state) — not "not implemented yet".
431
-
432
- Checklist beyond the component itself:
433
-
434
- - **Contract test.** Call `testFormFieldContract`
435
- (`src/tests/formFieldContract/`) in the field's `*.browser.test.tsx`. The
436
- adapter renders the field, names its control, two values (the first one
437
- submits an entry, the two submit different entries), their `FormData` entries
438
- and a user interaction that changes the value. The interaction passes `force`
439
- on, so the test can also try it on a disabled or read-only field.
440
- `getValueButtons` narrows the inner buttons a read-only field turns off; it
441
- defaults to all. Justified exceptions go in `exceptions` with their reason. An
442
- excepted aspect must fail on one of its own expectations — once it passes, or
443
- fails on a lookup or a timeout instead, the run fails:
444
-
445
- ```tsx
446
- testFormFieldContract("TextField", {
447
- render: (props) => <TextField {...props} />,
448
- getControl: (screen) => screen.getByRole("textbox"),
449
- values: ["foo", "bar"],
450
- toFormValue: (value) => value,
451
- changeValue: async (screen, { force }) => {
452
- await userEvent.fill(screen.getByRole("textbox"), "bar", { force });
453
- },
454
- });
455
- ```
456
-
457
- It checks behavior and ARIA, not looks — the disabled, read-only and invalid
458
- states also get scenarios in the field's visual test
459
- (`packages/remote-react-components/src/tests/visual`).
460
-
461
- - **react-hook-form.** Register the field in the props context of
462
- `src/integrations/react-hook-form/components/Field/Field.tsx`. `Field` passes
463
- `name`, `value` and `defaultValue` together, `onChange`, `onBlur`, `ref`,
464
- `form`, `isRequired`, `isReadOnly`, `isInvalid` and `validationBehavior` —
465
- spread the rest props through instead of destructuring a fixed list, or they
466
- are dropped silently. A field whose value prop is not `value` gets it mapped
467
- there (`selectedKey` for `ComboBox`, `isSelected` for `Checkbox`). `Field`
468
- does not pass `isDisabled` yet (#3368).
469
- - **Remote.** A field that mirrors its value with `useControlledHostValueProps`
470
- passes the type's empty value (see the controlled-from-the-first-render
471
- convention below). A text input among them also needs its `flr-*` tag in
472
- `controlledComponentNames`
473
- (`packages/remote-react-components/src/lib/createRemoteComponent.ts`), or it
474
- drops characters under fast typing
475
- ([docs/remote-ui.md](https://github.com/mittwald/flow/blob/main/docs/remote-ui.md)).
434
+ `useFieldComponent`. Building or changing one → read
435
+ [FORM_FIELDS.md](https://github.com/mittwald/flow/blob/main/packages/components/FORM_FIELDS.md):
436
+ the contract it supports end to end, `testFormFieldContract`, and the
437
+ react-hook-form and remote wiring.
476
438
 
477
439
  ## Every remote binding reads this package
478
440
 
@@ -513,29 +475,12 @@ to make a rule stick.
513
475
 
514
476
  ## Public API surfaces
515
477
 
516
- | Export | Contents |
517
- | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
518
- | `.` (default) | Everything listed **manually** in `src/components/public.ts` — new public components must be added there. |
519
- | `./internal` | Advanced internals (`flowComponent`, prop helper types, …). |
520
- | `./flr-universal` | Curated subset that works local _and_ remote. Adding to `public.ts` does **not** add here. |
521
- | `./tunnel` | `@mittwald/react-tunnel` re-exported (`src/index/tunnel.ts`) plus `getTunnelProviderId`, so a consumer's own tunnels share Flow's module instance instead of creating a second React context. |
522
- | `./nextjs`, `./react-hook-form`, `./mittwald-password-tools-js` | Integrations (`src/integrations/`): wrappers around third-party dependencies that not every consumer should pay for — they get their own export entry instead of entering the core surface. |
523
- | `./all.css`, `./all-layered.css` | Bundled stylesheet, plain and `@layer`-wrapped. |
524
- | `./component-index` | Generated consumer-facing index: every public component with its status and its own props (`dev/component-index/`). What the docs site's prop tables read, and the one prop dataset a consumer's agent should use. |
525
- | `./doc-properties` | `react-docgen-typescript` output in its raw `ComponentDoc[]` shape, filtered to the props a consumer can act on. Prefer `./component-index`. The unfiltered dump the generators above read is `.cache/doc-properties.json`, which is not published. |
526
-
527
- **Adding any new export entry?** Add the subpath to `keptSubpaths` in
528
- `packages/codemods/src/migrations/imports-to-package-root/transform.ts`. That
529
- codemod collapses subpath imports onto the package root with a catch-all `else`,
530
- so a subpath that is not listed gets flattened onto a root that does not export
531
- its names. The guard beside the transform fails the codemods unit tests when you
532
- forget.
533
-
534
- **Adding a new integration export entry?** Also register it in the component
535
- status registry so it is covered: add the entry to `STATUS_EXPORT_ENTRIES`
536
- (`dev/status-registry/exportEntries.ts`) — the `FlowExportEntry` union and the
537
- registry regenerate from it. A generation-time guard fails if an entry resolves
538
- to zero components.
478
+ Adding or changing an export entry (`.`, `./internal`, `./flr-universal`, an
479
+ integration, a stylesheet or data entry) → read
480
+ [EXPORTS.md](https://github.com/mittwald/flow/blob/main/packages/components/EXPORTS.md):
481
+ what each entry holds and the registries a new one has to join.
482
+
483
+ ## Prop JSDoc
539
484
 
540
485
  Prop JSDoc feeds the generated `doc-properties.json` and the docs site: write
541
486
  doc comments on public props, use `@default` for defaults and `@internal` for
@@ -638,3 +583,102 @@ Easy-to-miss conventions not spelled out above. Full details and examples in
638
583
  - **Universal exports are deliberately explicit** — remote-safe values and their
639
584
  types are curated in `flr-universal.ts` independently of the main public
640
585
  surface; adding to `public.ts` does not add them there.
586
+
587
+ ## Common failures
588
+
589
+ Symptom → cause → fix for authoring components. Repo-wide ones are in the
590
+ [root AGENTS.md](https://github.com/mittwald/flow/blob/main/AGENTS.md#common-failures).
591
+
592
+ - **Symptom:** `test:compile` fails on a new component — the
593
+ `flowComponent("X", …)` name/props type isn't assignable
594
+
595
+ **Cause:** `flowComponent` names are typed as `keyof` a hand-maintained props
596
+ registry
597
+
598
+ **Fix:** Register the props type in
599
+ `packages/components/src/components/propTypes/index.ts` (see
600
+ [The flowComponent factory](#the-flowcomponent-factory))
601
+
602
+ - **Symptom:** `test:compile` fails in unrelated shared code with
603
+ **`Property 'children' does not exist on type 'Partial<XProps>'`** right after
604
+ you registered a new component
605
+
606
+ **Cause:** `dynamic()` and other shared helpers are typed over the **union of
607
+ every** registered props type, so code reading `p.children` breaks as soon as
608
+ one registered component has no `children` (`Field.tsx`,
609
+ `flowComponent.browser.test.tsx`)
610
+
611
+ **Fix:** Declare `children?: never` on the new props type. It keeps the union
612
+ accessible and documents that the component takes no children — do **not** add
613
+ a real `children` slot you then ignore
614
+
615
+ - **Symptom:** A `ReactElement`-valued prop renders fine in the visual suite's
616
+ **Remote** environment but kills a real remote connection with
617
+ **`DataCloneError: Symbol(react.transitional.element) could not be cloned`**
618
+ (the host then shows `Remote rendering failed: Timeout reached`)
619
+
620
+ **Cause:** The prop was generated as a **remote property**, and properties
621
+ travel through `postMessage`/structured clone, which cannot carry a React
622
+ element. `remote-dom-react` turns an element-valued prop into a slotted child
623
+ _only_ when the element declares it as a slot
624
+ (`Element.remoteSlotDefinitions.has(prop)`), and the generator declares a slot
625
+ only for props typed exactly `ReactNode` or listed in `@flr-slot-props`
626
+ (`dev/remote-components-generator/lib/propClassifiers.ts`)
627
+
628
+ **Fix:** Add `@flr-slot-props <propA>, <propB>` to the component's JSDoc and
629
+ regenerate — the prop then arrives as a slotted child and any React subtree
630
+ works, including a raw `<svg>` or a Tabler icon. The visual suite's **Remote**
631
+ environment does serialize (a MessageChannel through
632
+ `FlowThreadSerialization`), but `FlowThreadSerialization` drops React values
633
+ to `null` with a `console.error` before `postMessage` ever sees them — so the
634
+ suite renders a component missing the prop, not the `DataCloneError`. Read the
635
+ console, or verify in `apps/remote-dom-demo` over the iframe connection
636
+
637
+ - **Symptom:** A function prop works locally but its result is garbage remotely
638
+ — a formatter renders `[object Promise]`, a predicate is always truthy
639
+
640
+ **Cause:** The prop is a **remote property**, and
641
+ `FlowThreadSerialization.isSerializableByBase` accepts any function, so
642
+ `@quilted/threads` sends it as a proxy. Calling a proxy is a round trip, so
643
+ the host gets a **Promise**, never the value. Only `on*` events are safe by
644
+ construction — they are fire-and-forget
645
+
646
+ **Fix:** Either type the prop's return as `Promise<T> | T` and have the host
647
+ `await` it (`ChartTooltip`'s formatters do), or drop it from the remote
648
+ surface with `@flr-ignore-props` (`XAxis`/`YAxis` `tickFormatter` do) and
649
+ regenerate. `checkSerializableProps` now fails generation on new ones; the
650
+ pre-existing set is listed in `acknowledgedValueReturningProps`
651
+
652
+ - **Symptom:** A `components` browser test keeps **passing** after you change
653
+ `packages/icons` — including a test written to fail on exactly that change.
654
+ The build is not the problem: `pnpm nx build icons` runs `tsc` and `dist`
655
+ holds the new code
656
+
657
+ **Cause:** `packages/components/vite.config.ts` lists `@mittwald/flow-icons`
658
+ in `optimizeDeps.include`, so vite pre-bundles it. The prebundle is keyed on
659
+ the lockfile and the config, not on the contents of a linked workspace
660
+ package's `dist` — so a rebuilt `dist` does not invalidate it and the test
661
+ keeps loading the old bundle
662
+
663
+ **Fix:** Delete `packages/components/node_modules/.vite*` after rebuilding.
664
+ And confirm a new regression test actually fails without its fix: this one
665
+ passed in both directions, which is the only symptom you get
666
+
667
+ - **Symptom:** `stylelint` fails with **`flow/no-unknown-global-flow-class`** —
668
+ a `:global(.flow--…)` name resolves to nothing
669
+
670
+ **Cause:** The class-name generator
671
+ (`packages/components/dev/vite/cssModuleClassNameGenerator.ts`) **drops the
672
+ suffix when it equals the component name**, so `ColumnLayout`'s
673
+ `.columnLayout` compiles to `flow--column-layout`, not
674
+ `flow--column-layout--column-layout`. The names cannot be derived by hand, and
675
+ a component that moves leaves every reference to it dead
676
+
677
+ **Fix:** Copy the name from the component's committed `*.module.d.scss.ts` —
678
+ that is what the rule checks against — or take the rule's "Did you mean"
679
+ suggestion. Just added the class? Regenerate the stubs first:
680
+ `pnpm nx build:scss-types components`. The same applies to ESLint's
681
+ `flow/no-unknown-flow-class`, which checks hardcoded `flow--…` strings in
682
+ TS/TSX (#3095). Before the rule (#3091) this class of bug failed completely
683
+ silently: no build error, no console warning, and the docs site and Storybook
684
+ kept rendering
package/USAGE.md CHANGED
@@ -32,8 +32,8 @@ Start with these:
32
32
  `/raw/foundations/structure/spacing.md` — how layout and spacing are meant to
33
33
  be composed
34
34
  - the templates — see [Start from a template](#start-from-a-template)
35
- - `/raw/foundations/content-guidelines/error-handling.md` — preventing and
36
- presenting errors
35
+ - `/raw/foundations/content-guidelines/fehlermeldungen.md` — where errors appear
36
+ and how to word them
37
37
  - `/raw/foundations/content-guidelines/sprach-guide.md` — UI wording
38
38
  - `/raw/get-started/versioning.md` — what you may depend on
39
39
 
@@ -252,6 +252,11 @@ Also:
252
252
  - Do not hand-roll feedback for async work — `Action` wraps a button and renders
253
253
  its pending, success and failure states; `List` covers loading and empty
254
254
  states; `Skeleton` and `SkeletonText` are the placeholders.
255
+ - Keep `List` items cheap: give `List.Item` and `List.TableRow`
256
+ `renderDependencies` (every value the render function reads besides the item),
257
+ and keep modals and data loading at list level instead of per item — every
258
+ item pays for what it contains (`/raw/components/list/list.md`, section
259
+ "Performance").
255
260
  - Write UI text in German following the Sprach-Guide; component-internal text is
256
261
  already translated (de-DE, en-US) via `TranslationProvider`.
257
262