@mittwald/flow-react-components 1.3.0-next.3 → 1.3.0-next.31

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 (188) hide show
  1. package/AGENTS.md +56 -1
  2. package/MIGRATION.md +24 -0
  3. package/USAGE.md +14 -6
  4. package/dist/assets/component-index.json +1 -1
  5. package/dist/assets/doc-properties.json +1 -1
  6. package/dist/css/all-layered.css +1 -1
  7. package/dist/css/all.css +1 -1
  8. package/dist/js/_virtual/_24.locale.mjs +10 -2
  9. package/dist/js/_virtual/_28.locale.mjs +10 -0
  10. package/dist/js/packages/components/src/components/Accordion/Accordion.mjs +26 -15
  11. package/dist/js/packages/components/src/components/Accordion/Accordion.mjs.map +1 -1
  12. package/dist/js/packages/components/src/components/Avatar/Avatar.module.mjs.map +1 -1
  13. package/dist/js/packages/components/src/components/Button/Button.module.mjs +1 -0
  14. package/dist/js/packages/components/src/components/Button/Button.module.mjs.map +1 -1
  15. package/dist/js/packages/components/src/components/Calendar/Calendar.module.mjs +3 -1
  16. package/dist/js/packages/components/src/components/Calendar/Calendar.module.mjs.map +1 -1
  17. package/dist/js/packages/components/src/components/Calendar/components/CalendarHeader/CalendarHeader.mjs +19 -15
  18. package/dist/js/packages/components/src/components/Calendar/components/CalendarHeader/CalendarHeader.mjs.map +1 -1
  19. package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs +6 -2
  20. package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs.map +1 -1
  21. package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.module.mjs.map +1 -1
  22. package/dist/js/packages/components/src/components/CartesianChart/components/Area/Area.mjs +7 -2
  23. package/dist/js/packages/components/src/components/CartesianChart/components/Area/Area.mjs.map +1 -1
  24. package/dist/js/packages/components/src/components/CartesianChart/components/Bar/Bar.mjs +15 -3
  25. package/dist/js/packages/components/src/components/CartesianChart/components/Bar/Bar.mjs.map +1 -1
  26. package/dist/js/packages/components/src/components/CartesianChart/components/Line/Line.mjs +4 -1
  27. package/dist/js/packages/components/src/components/CartesianChart/components/Line/Line.mjs.map +1 -1
  28. package/dist/js/packages/components/src/components/CartesianChart/context.mjs +4 -1
  29. package/dist/js/packages/components/src/components/CartesianChart/context.mjs.map +1 -1
  30. package/dist/js/packages/components/src/components/CartesianChart/hooks/useChartAnimation.mjs +27 -0
  31. package/dist/js/packages/components/src/components/CartesianChart/hooks/useChartAnimation.mjs.map +1 -0
  32. package/dist/js/packages/components/src/components/CartesianChart/hooks/useScopedStackId.mjs +16 -0
  33. package/dist/js/packages/components/src/components/CartesianChart/hooks/useScopedStackId.mjs.map +1 -0
  34. package/dist/js/packages/components/src/components/Chat/Chat.module.mjs.map +1 -1
  35. package/dist/js/packages/components/src/components/Checkbox/Checkbox.module.mjs +2 -1
  36. package/dist/js/packages/components/src/components/Checkbox/Checkbox.module.mjs.map +1 -1
  37. package/dist/js/packages/components/src/components/CheckboxGroup/CheckboxGroup.module.mjs.map +1 -1
  38. package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.mjs.map +1 -1
  39. package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.module.mjs.map +1 -1
  40. package/dist/js/packages/components/src/components/Combine/Combine.mjs +4 -1
  41. package/dist/js/packages/components/src/components/Combine/Combine.mjs.map +1 -1
  42. package/dist/js/packages/components/src/components/Combine/Combine.module.mjs.map +1 -1
  43. package/dist/js/packages/components/src/components/ComboBox/ComboBox.module.mjs.map +1 -1
  44. package/dist/js/packages/components/src/components/ContextMenu/ContextMenu.module.mjs.map +1 -1
  45. package/dist/js/packages/components/src/components/CopyButton/CopyButton.mjs +4 -3
  46. package/dist/js/packages/components/src/components/CopyButton/CopyButton.mjs.map +1 -1
  47. package/dist/js/packages/components/src/components/DateRangePicker/components/DateRangeInput/DateRangeInput.mjs +14 -11
  48. package/dist/js/packages/components/src/components/DateRangePicker/components/DateRangeInput/DateRangeInput.mjs.map +1 -1
  49. package/dist/js/packages/components/src/components/DateRangePicker/components/DateRangeInput/DateRangeInput.module.mjs +4 -2
  50. package/dist/js/packages/components/src/components/DateRangePicker/components/DateRangeInput/DateRangeInput.module.mjs.map +1 -1
  51. package/dist/js/packages/components/src/components/DonutChart/DonutChart.module.mjs +6 -3
  52. package/dist/js/packages/components/src/components/DonutChart/DonutChart.module.mjs.map +1 -1
  53. package/dist/js/packages/components/src/components/DonutChart/components/DonutChartFill.mjs +13 -2
  54. package/dist/js/packages/components/src/components/DonutChart/components/DonutChartFill.mjs.map +1 -1
  55. package/dist/js/packages/components/src/components/FileDropZone/FileDropZone.mjs +2 -2
  56. package/dist/js/packages/components/src/components/FileDropZone/FileDropZone.mjs.map +1 -1
  57. package/dist/js/packages/components/src/components/HeaderNavigation/HeaderNavigation.mjs +9 -6
  58. package/dist/js/packages/components/src/components/HeaderNavigation/HeaderNavigation.mjs.map +1 -1
  59. package/dist/js/packages/components/src/components/HeaderNavigation/HeaderNavigation.module.mjs +5 -1
  60. package/dist/js/packages/components/src/components/HeaderNavigation/HeaderNavigation.module.mjs.map +1 -1
  61. package/dist/js/packages/components/src/components/Heading/Heading.mjs +1 -1
  62. package/dist/js/packages/components/src/components/Heading/Heading.mjs.map +1 -1
  63. package/dist/js/packages/components/src/components/Heading/Heading.module.mjs.map +1 -1
  64. package/dist/js/packages/components/src/components/Image/Image.mjs +2 -2
  65. package/dist/js/packages/components/src/components/Image/Image.mjs.map +1 -1
  66. package/dist/js/packages/components/src/components/Image/Image.module.mjs +3 -1
  67. package/dist/js/packages/components/src/components/Image/Image.module.mjs.map +1 -1
  68. package/dist/js/packages/components/src/components/LayoutCard/LayoutCard.module.mjs.map +1 -1
  69. package/dist/js/packages/components/src/components/LightBox/LightBox.module.mjs.map +1 -1
  70. package/dist/js/packages/components/src/components/LightBox/components/LightBoxGallery/Controls.mjs +1 -1
  71. package/dist/js/packages/components/src/components/LightBox/components/LightBoxGallery/Controls.mjs.map +1 -1
  72. package/dist/js/packages/components/src/components/List/List.module.mjs.map +1 -1
  73. package/dist/js/packages/components/src/components/List/components/Header/components/SearchField/SearchField.module.mjs.map +1 -1
  74. package/dist/js/packages/components/src/components/List/components/Items/Items.mjs +3 -6
  75. package/dist/js/packages/components/src/components/List/components/Items/Items.mjs.map +1 -1
  76. package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.module.mjs.map +1 -1
  77. package/dist/js/packages/components/src/components/List/components/ListItemView/ListItemView.module.mjs.map +1 -1
  78. package/dist/js/packages/components/src/components/List/components/Table/Table.mjs +6 -2
  79. package/dist/js/packages/components/src/components/List/components/Table/Table.mjs.map +1 -1
  80. package/dist/js/packages/components/src/components/List/{components/Items/hooks → hooks}/useInfiniteScrollTrigger.mjs +11 -12
  81. package/dist/js/packages/components/src/components/List/hooks/useInfiniteScrollTrigger.mjs.map +1 -0
  82. package/dist/js/packages/components/src/components/Markdown/Markdown.module.mjs.map +1 -1
  83. package/dist/js/packages/components/src/components/MarkdownEditor/MarkdownEditor.mjs +16 -3
  84. package/dist/js/packages/components/src/components/MarkdownEditor/MarkdownEditor.mjs.map +1 -1
  85. package/dist/js/packages/components/src/components/MarkdownEditor/MarkdownEditor.module.mjs +4 -2
  86. package/dist/js/packages/components/src/components/MarkdownEditor/MarkdownEditor.module.mjs.map +1 -1
  87. package/dist/js/packages/components/src/components/MarkdownEditor/components/AttachmentButton.mjs +47 -0
  88. package/dist/js/packages/components/src/components/MarkdownEditor/components/AttachmentButton.mjs.map +1 -0
  89. package/dist/js/packages/components/src/components/MarkdownEditor/components/Toolbar.mjs +21 -20
  90. package/dist/js/packages/components/src/components/MarkdownEditor/components/Toolbar.mjs.map +1 -1
  91. package/dist/js/packages/components/src/components/MarkdownEditor/components/ToolbarButton.mjs +1 -1
  92. package/dist/js/packages/components/src/components/MarkdownEditor/components/ToolbarButton.mjs.map +1 -1
  93. package/dist/js/packages/components/src/components/MarkdownEditor/lib/fileUpload.mjs +73 -0
  94. package/dist/js/packages/components/src/components/MarkdownEditor/lib/fileUpload.mjs.map +1 -0
  95. package/dist/js/packages/components/src/components/MarkdownEditor/lib/useFileUpload.mjs +141 -0
  96. package/dist/js/packages/components/src/components/MarkdownEditor/lib/useFileUpload.mjs.map +1 -0
  97. package/dist/js/packages/components/src/components/MessageThread/MessageThread.module.mjs.map +1 -1
  98. package/dist/js/packages/components/src/components/Modal/Modal.module.mjs.map +1 -1
  99. package/dist/js/packages/components/src/components/Navigation/Navigation.module.mjs +3 -1
  100. package/dist/js/packages/components/src/components/Navigation/Navigation.module.mjs.map +1 -1
  101. package/dist/js/packages/components/src/components/Navigation/components/LinkListTunnelExit/LinkListTunnelExit.mjs +5 -1
  102. package/dist/js/packages/components/src/components/Navigation/components/LinkListTunnelExit/LinkListTunnelExit.mjs.map +1 -1
  103. package/dist/js/packages/components/src/components/Navigation/components/NavigationGroup/NavigationGroup.module.mjs.map +1 -1
  104. package/dist/js/packages/components/src/components/NumberField/NumberField.module.mjs.map +1 -1
  105. package/dist/js/packages/components/src/components/Overlay/Overlay.module.mjs +3 -1
  106. package/dist/js/packages/components/src/components/Overlay/Overlay.module.mjs.map +1 -1
  107. package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs +47 -9
  108. package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs.map +1 -1
  109. package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs +8 -1
  110. package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs.map +1 -1
  111. package/dist/js/packages/components/src/components/PasswordCreationField/components/PasswordGenerateButton/PasswordGenerateButton.mjs +2 -0
  112. package/dist/js/packages/components/src/components/PasswordCreationField/components/PasswordGenerateButton/PasswordGenerateButton.mjs.map +1 -1
  113. package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.mjs +13 -7
  114. package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.mjs.map +1 -1
  115. package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.module.mjs +9 -0
  116. package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.module.mjs.map +1 -0
  117. package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.mjs +12 -4
  118. package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.mjs.map +1 -1
  119. package/dist/js/packages/components/src/components/PasswordCreationField/lib/ariaAnnounce.mjs +52 -0
  120. package/dist/js/packages/components/src/components/PasswordCreationField/lib/ariaAnnounce.mjs.map +1 -0
  121. package/dist/js/packages/components/src/components/PasswordCreationField/lib/generateValidationTranslation.mjs +1 -0
  122. package/dist/js/packages/components/src/components/PasswordCreationField/lib/generateValidationTranslation.mjs.map +1 -1
  123. package/dist/js/packages/components/src/components/PasswordCreationField/lib/getStatusFromPolicyValidationResult.mjs +1 -0
  124. package/dist/js/packages/components/src/components/PasswordCreationField/lib/getStatusFromPolicyValidationResult.mjs.map +1 -1
  125. package/dist/js/packages/components/src/components/PasswordCreationField/lib/usePolicyValidationResult.mjs +1 -0
  126. package/dist/js/packages/components/src/components/PasswordCreationField/lib/usePolicyValidationResult.mjs.map +1 -1
  127. package/dist/js/packages/components/src/components/Popover/Popover.module.mjs +3 -1
  128. package/dist/js/packages/components/src/components/Popover/Popover.module.mjs.map +1 -1
  129. package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs +20 -11
  130. package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs.map +1 -1
  131. package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs +1 -0
  132. package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs.map +1 -1
  133. package/dist/js/packages/components/src/components/ProgressBar/ProgressBar.module.mjs +1 -0
  134. package/dist/js/packages/components/src/components/ProgressBar/ProgressBar.module.mjs.map +1 -1
  135. package/dist/js/packages/components/src/components/RadioGroup/components/Radio/Radio.module.mjs +2 -1
  136. package/dist/js/packages/components/src/components/RadioGroup/components/Radio/Radio.module.mjs.map +1 -1
  137. package/dist/js/packages/components/src/components/SearchField/SearchField.module.mjs +3 -3
  138. package/dist/js/packages/components/src/components/SearchField/SearchField.module.mjs.map +1 -1
  139. package/dist/js/packages/components/src/components/Section/Section.module.mjs.map +1 -1
  140. package/dist/js/packages/components/src/components/Section/components/SectionHeader/SectionHeader.module.mjs.map +1 -1
  141. package/dist/js/packages/components/src/components/Slider/Slider.module.mjs.map +1 -1
  142. package/dist/js/packages/components/src/components/Switch/Switch.module.mjs.map +1 -1
  143. package/dist/js/packages/components/src/components/TabNavigation/TabNavigation.mjs +2 -1
  144. package/dist/js/packages/components/src/components/TabNavigation/TabNavigation.mjs.map +1 -1
  145. package/dist/js/packages/components/src/components/TabNavigation/TabNavigation.module.mjs +5 -1
  146. package/dist/js/packages/components/src/components/TabNavigation/TabNavigation.module.mjs.map +1 -1
  147. package/dist/js/packages/components/src/components/Table/Table.module.mjs.map +1 -1
  148. package/dist/js/packages/components/src/components/Tabs/components/TabTitle/TabTitle.module.mjs.map +1 -1
  149. package/dist/js/packages/components/src/components/Text/Text.module.mjs.map +1 -1
  150. package/dist/js/packages/components/src/components/TextArea/TextArea.mjs +14 -13
  151. package/dist/js/packages/components/src/components/TextArea/TextArea.mjs.map +1 -1
  152. package/dist/js/packages/components/src/components/Tooltip/Tooltip.mjs +1 -0
  153. package/dist/js/packages/components/src/components/Tooltip/Tooltip.mjs.map +1 -1
  154. package/dist/js/packages/components/src/components/Tooltip/Tooltip.module.mjs +3 -1
  155. package/dist/js/packages/components/src/components/Tooltip/Tooltip.module.mjs.map +1 -1
  156. package/dist/js/packages/components/src/lib/files/acceptedFiles.mjs +34 -0
  157. package/dist/js/packages/components/src/lib/files/acceptedFiles.mjs.map +1 -0
  158. package/dist/js/packages/components/src/lib/hooks/dom/useKeepBrowserExtensionsInteractive.mjs +1 -1
  159. package/dist/js/packages/components/src/lib/hooks/dom/useKeepBrowserExtensionsInteractive.mjs.map +1 -1
  160. package/dist/js/packages/design-tokens/dist/json-runtime/all-dark.mjs +13 -1
  161. package/dist/js/packages/design-tokens/dist/json-runtime/all-dark.mjs.map +1 -1
  162. package/dist/js/packages/design-tokens/dist/json-runtime/all-light.mjs +13 -1
  163. package/dist/js/packages/design-tokens/dist/json-runtime/all-light.mjs.map +1 -1
  164. package/dist/types/components/CartesianChart/context.d.ts +6 -0
  165. package/dist/types/components/CartesianChart/hooks/useChartAnimation.d.ts +1 -0
  166. package/dist/types/components/CartesianChart/hooks/useScopedStackId.d.ts +6 -0
  167. package/dist/types/components/CopyButton/CopyButton.d.ts +5 -0
  168. package/dist/types/components/Image/Image.d.ts +7 -1
  169. package/dist/types/components/List/hooks/useInfiniteScrollTrigger.d.ts +17 -0
  170. package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts +20 -0
  171. package/dist/types/components/MarkdownEditor/components/AttachmentButton.d.ts +1 -0
  172. package/dist/types/components/MarkdownEditor/components/Toolbar.d.ts +11 -2
  173. package/dist/types/components/MarkdownEditor/components/ToolbarButton.d.ts +8 -2
  174. package/dist/types/components/MarkdownEditor/index.d.ts +1 -1
  175. package/dist/types/components/MarkdownEditor/lib/fileUpload.d.ts +19 -0
  176. package/dist/types/components/MarkdownEditor/lib/useFileUpload.d.ts +1 -0
  177. package/dist/types/components/PasswordCreationField/components/PasswordGenerateButton/PasswordGenerateButton.d.ts +0 -7
  178. package/dist/types/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.d.ts +0 -9
  179. package/dist/types/components/PasswordCreationField/lib/ariaAnnounce.d.ts +1 -0
  180. package/dist/types/components/PasswordCreationField/lib/generateValidationTranslation.d.ts +0 -2
  181. package/dist/types/components/PasswordCreationField/lib/getStatusFromPolicyValidationResult.d.ts +0 -3
  182. package/dist/types/components/PasswordCreationField/lib/usePolicyValidationResult.d.ts +1 -7
  183. package/dist/types/lib/files/acceptedFiles.d.ts +1 -0
  184. package/dist/types/lib/hooks/dom/useKeepBrowserExtensionsInteractive.d.ts +1 -0
  185. package/dist/types/lib/theming/hooks/useDesignTokens.d.ts +14 -0
  186. package/package.json +10 -10
  187. package/dist/js/packages/components/src/components/List/components/Items/hooks/useInfiniteScrollTrigger.mjs.map +0 -1
  188. package/dist/types/components/List/components/Items/hooks/useInfiniteScrollTrigger.d.ts +0 -3
@@ -1,6 +1,12 @@
1
1
  import { CartesianChartLayout } from './types';
2
2
  interface CartesianChartContext {
3
3
  layout: CartesianChartLayout;
4
+ /**
5
+ * Prefix that scopes a stack ID to this chart. Recharts derives DOM IDs from
6
+ * the stack ID, so two charts on one page sharing a stack ID would otherwise
7
+ * share their clip paths.
8
+ */
9
+ stackIdPrefix: string;
4
10
  }
5
11
  export declare const useCartesianChartContext: () => CartesianChartContext;
6
12
  export declare const CartesianChartContextProvider: import('react').Provider<CartesianChartContext>;
@@ -0,0 +1,6 @@
1
+ import { StackId } from 'recharts/types/util/ChartUtils';
2
+ /**
3
+ * Scopes a stack ID to the surrounding chart, so that charts on the same page
4
+ * using the same stack ID do not share the DOM IDs Recharts derives from it.
5
+ */
6
+ export declare const useScopedStackId: (stackId: StackId | undefined) => string | undefined;
@@ -3,6 +3,11 @@ import { FlowComponentProps } from '../../lib/componentFactory/flowComponent';
3
3
  export interface CopyButtonProps extends Omit<ButtonProps, "onPress" | "aria-label" | "render">, FlowComponentProps<HTMLButtonElement> {
4
4
  /** The text to copy. */
5
5
  text?: string;
6
+ /**
7
+ * Called with the copied text once it has been written to the clipboard. Not
8
+ * called when copying fails.
9
+ */
10
+ onCopy?: (text: string) => void;
6
11
  }
7
12
  /** @flr-generate all */
8
13
  export declare const CopyButton: import('react').FunctionComponent<CopyButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -1,8 +1,14 @@
1
1
  import { FlowComponentProps } from '../../lib/componentFactory/flowComponent';
2
2
  import { ComponentProps } from 'react';
3
3
  export interface ImageProps extends Omit<ComponentProps<"img">, "ref">, FlowComponentProps<HTMLImageElement> {
4
- /** Display the image with border and rounded edges. */
4
+ /** Display the image with a border. */
5
5
  withBorder?: boolean;
6
+ /**
7
+ * Display the image with rounded corners.
8
+ *
9
+ * @default true
10
+ */
11
+ withRoundedCorners?: boolean;
6
12
  /**
7
13
  * The aspect ratio of the images container. Larger images will be centered
8
14
  * and their overflow will be hidden.
@@ -0,0 +1,17 @@
1
+ import { RefCallback } from 'react';
2
+ interface InfiniteScrollTrigger {
3
+ /**
4
+ * Attach to whatever the view renders for `triggerIndex`. A callback ref, so
5
+ * the observer follows the trigger as it moves on with every loaded batch — a
6
+ * ref object would leave the effect without a signal that the element it
7
+ * observes has been replaced.
8
+ */
9
+ triggerRef: RefCallback<HTMLElement>;
10
+ /**
11
+ * Index of the item that loads the next batch once it scrolls into view, or
12
+ * `undefined` while infinite scrolling is off.
13
+ */
14
+ triggerIndex: number | undefined;
15
+ }
16
+ export declare const useInfiniteScrollTrigger: () => InfiniteScrollTrigger;
17
+ export {};
@@ -1,13 +1,33 @@
1
1
  import { ComponentType } from 'react';
2
2
  import { MarkdownProps } from '../Markdown';
3
3
  import { TextAreaProps } from '../TextArea';
4
+ import { MarkdownEditorUpload } from './lib/fileUpload';
4
5
  export type MarkdownEditorMode = "editor" | "preview";
6
+ export type { MarkdownEditorUpload };
5
7
  export interface MarkdownEditorProps extends TextAreaProps, Pick<MarkdownProps, "headingOffset"> {
6
8
  /**
7
9
  * Allows replacing the markdown preview renderer implementation. Defaults to
8
10
  * the internal `Markdown` component.
9
11
  */
10
12
  markdownComponent?: ComponentType<MarkdownProps>;
13
+ /**
14
+ * Uploads a file the user dropped onto the editor, pasted into it or picked
15
+ * with its attachment button. A placeholder comment sits at the cursor while
16
+ * the returned promise is pending: resolving replaces it with markdown
17
+ * linking to the file — an image embed for an image — and rejecting takes it
18
+ * back out. Without this prop the editor takes no files at all.
19
+ *
20
+ * Named without an `on` prefix on purpose: the remote generator turns an
21
+ * `on*` prop into a fire-and-forget event, and this one has to hand a result
22
+ * back.
23
+ */
24
+ uploadFile?: (file: File) => Promise<MarkdownEditorUpload>;
25
+ /**
26
+ * Which file types the editor takes, as the `accept` attribute of a file
27
+ * input: a comma separated list of MIME types (`image/png`), MIME wildcards
28
+ * (`image/*`) and file extensions (`.png`). Defaults to every type.
29
+ */
30
+ accept?: string;
11
31
  }
12
32
  /** @flr-generate all */
13
33
  export declare const MarkdownEditor: import('react').FunctionComponent<MarkdownEditorProps & import('react').RefAttributes<HTMLTextAreaElement>>;
@@ -1,11 +1,20 @@
1
1
  import { FC } from 'react';
2
- import { ToolBarButtonProps } from './ToolbarButton';
3
2
  import { ModeButtonProps } from './ModeButton';
4
3
  import { ButtonProps } from '../../Button';
4
+ import { InsertType } from '../lib/modifyValueByType';
5
5
  interface ToolbarProps extends Pick<ButtonProps, "isDisabled"> {
6
6
  currentMode: ModeButtonProps["currentMode"];
7
7
  onModeChange: ModeButtonProps["onChange"];
8
- onToolPressed: ToolBarButtonProps["onPress"];
8
+ onToolPressed: (type: InsertType) => void;
9
+ /** Which file types the attachment button offers. */
10
+ accept?: string;
11
+ /** Renders the attachment button when set. */
12
+ onFilesSelected?: (files: File[]) => void;
13
+ /**
14
+ * Disables the attachment button, which a read-only editor takes no files
15
+ * for.
16
+ */
17
+ isReadOnly?: boolean;
9
18
  }
10
19
  export declare const Toolbar: FC<ToolbarProps>;
11
20
  export {};
@@ -1,8 +1,14 @@
1
1
  import { FC } from 'react';
2
2
  import { InsertType } from '../lib/modifyValueByType';
3
3
  import { ButtonProps } from '../../Button';
4
+ /**
5
+ * What a toolbar button is: every markdown syntax it inserts, plus the one tool
6
+ * that does something else. The name is also the `toolbar.<type>` locale key of
7
+ * the button's label.
8
+ */
9
+ export type ToolbarButtonType = InsertType | "attachment";
4
10
  export interface ToolBarButtonProps extends Pick<ButtonProps, "isDisabled" | "children"> {
5
- type: InsertType;
6
- onPress?: (type: InsertType) => void;
11
+ type: ToolbarButtonType;
12
+ onPress?: () => void;
7
13
  }
8
14
  export declare const ToolbarButton: FC<ToolBarButtonProps>;
@@ -1,2 +1,2 @@
1
- export { type MarkdownEditorProps, MarkdownEditor } from './MarkdownEditor';
1
+ export { type MarkdownEditorProps, type MarkdownEditorUpload, MarkdownEditor, } from './MarkdownEditor';
2
2
  export { default } from './MarkdownEditor';
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The result of uploading a file dropped into, pasted into or selected in a
3
+ * `MarkdownEditor`.
4
+ */
5
+ export interface MarkdownEditorUpload {
6
+ /** The URL the uploaded file is available at. */
7
+ url: string;
8
+ /**
9
+ * The link text of the inserted markdown — the alt text for an image.
10
+ * Defaults to the name of the uploaded file.
11
+ */
12
+ name?: string;
13
+ }
14
+ /** A new editor value together with where the cursor ends up in it. */
15
+ export interface ValueEdit {
16
+ value: string;
17
+ selectionStart: number;
18
+ selectionEnd: number;
19
+ }
@@ -1,8 +1 @@
1
- import { FC } from 'react';
2
- import { ActionFn } from '../../../Action';
3
- interface Props {
4
- isDisabled?: boolean;
5
- onGeneratePasswordAction?: ActionFn;
6
- }
7
- export declare const PasswordGenerateButton: FC<Props>;
8
1
  export {};
@@ -1,10 +1 @@
1
- import { FC } from 'react';
2
- import { ResolvedPolicyValidationResult } from '../../PasswordCreationField';
3
- import { PropsWithClassName } from '../../../../lib/types/props';
4
- interface Props extends PropsWithClassName {
5
- policyValidationResult?: ResolvedPolicyValidationResult;
6
- isDisabled?: boolean;
7
- isEmptyValue: boolean;
8
- }
9
- export declare const ValidationResultButton: FC<Props>;
10
1
  export {};
@@ -1,3 +1 @@
1
- import { RuleValidationResult } from '../../../integrations/@mittwald/password-tools-js';
2
- export declare const generateValidationTranslation: (r: Partial<RuleValidationResult>, shotVersion?: boolean) => [string, Record<string, string | number | boolean> | undefined];
3
1
  export default generateValidationTranslation;
@@ -1,4 +1 @@
1
- import { ResolvedPolicyValidationResult } from '../PasswordCreationField';
2
- import { ComplexityStatus } from '../components/ComplexityIndicator/ComplexityIndicator';
3
- export declare const getStatusFromPolicyValidationResult: (isValid: ResolvedPolicyValidationResult["isValid"], result: ResolvedPolicyValidationResult) => ComplexityStatus;
4
1
  export default getStatusFromPolicyValidationResult;
@@ -1,7 +1 @@
1
- import { Policy } from '../../../integrations/@mittwald/password-tools-js';
2
- import { ResolvedPolicyValidationResult } from '../PasswordCreationField';
3
- export declare const usePolicyValidationResult: (validationPolicy: Policy, password: string, onValidationStart?: () => void, onValidationResult?: (data: {
4
- password: string;
5
- isValid: boolean;
6
- results: ResolvedPolicyValidationResult;
7
- }) => void) => void;
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,4 @@
1
+ export declare const isBrowserExtensionNode: (element: Element) => boolean;
1
2
  /**
2
3
  * While a modal overlay is open, react-aria isolates the rest of the document
3
4
  * by setting `inert` on every sibling of the modal (see `ariaHideOutside`) —
@@ -4007,6 +4007,12 @@ export declare const useDesignTokens: () => {
4007
4007
  path: string[];
4008
4008
  };
4009
4009
  };
4010
+ "cartesian-chart": {
4011
+ "transition-duration": {
4012
+ value: string;
4013
+ path: string[];
4014
+ };
4015
+ };
4010
4016
  "cartesian-grid": {
4011
4017
  color: {
4012
4018
  value: string;
@@ -4024,6 +4030,10 @@ export declare const useDesignTokens: () => {
4024
4030
  };
4025
4031
  };
4026
4032
  "donut-chart": {
4033
+ "transition-duration": {
4034
+ value: string;
4035
+ path: string[];
4036
+ };
4027
4037
  "border-color": {
4028
4038
  value: string;
4029
4039
  path: string[];
@@ -6278,6 +6288,10 @@ export declare const useDesignTokens: () => {
6278
6288
  };
6279
6289
  };
6280
6290
  "progress-bar": {
6291
+ "transition-duration": {
6292
+ value: string;
6293
+ path: string[];
6294
+ };
6281
6295
  "font-size": {
6282
6296
  value: string;
6283
6297
  path: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mittwald/flow-react-components",
3
- "version": "1.3.0-next.3",
3
+ "version": "1.3.0-next.31",
4
4
  "type": "module",
5
5
  "description": "A React implementation of Flow, mittwald’s design system",
6
6
  "homepage": "https://flow.mittwald.de",
@@ -83,9 +83,9 @@
83
83
  "@internationalized/string-compiler": "^3.4.1",
84
84
  "@lezer/common": "^1.5.2",
85
85
  "@lezer/highlight": "^1.2.3",
86
- "@mittwald/flow-icons": "^1.3.0-next.3",
86
+ "@mittwald/flow-icons": "^1.3.0-next.31",
87
87
  "@mittwald/password-tools-js": "^3.0.0",
88
- "@mittwald/react-tunnel": "^1.3.0-next.3",
88
+ "@mittwald/react-tunnel": "^1.3.0-next.31",
89
89
  "@mittwald/react-use-promise": "^4.2.2",
90
90
  "@react-aria/form": "^3.2.1",
91
91
  "@react-aria/i18n": "^3.13.1",
@@ -138,12 +138,12 @@
138
138
  "@internationalized/date": "^3.12.3",
139
139
  "@lezer/generator": "^1.8.0",
140
140
  "@lezer/lr": "^1.4.10",
141
- "@mittwald/flow-core": "1.3.0-next.3",
142
- "@mittwald/flow-design-tokens": "1.3.0-next.3",
143
- "@mittwald/flow-icons-base": "1.3.0-next.3",
141
+ "@mittwald/flow-core": "1.3.0-next.31",
142
+ "@mittwald/flow-design-tokens": "1.3.0-next.31",
143
+ "@mittwald/flow-icons-base": "1.3.0-next.31",
144
144
  "@mittwald/react-use-promise": "^4.2.2",
145
145
  "@mittwald/remote-dom-react": "1.2.2-mittwald.10",
146
- "@mittwald/typescript-config": "1.3.0-next.3",
146
+ "@mittwald/typescript-config": "1.3.0-next.31",
147
147
  "@nx/storybook": "^22.7.6",
148
148
  "@storybook/addon-a11y": "^10.5.10",
149
149
  "@storybook/addon-actions": "^9.0.8",
@@ -153,7 +153,7 @@
153
153
  "@storybook/react-vite": "^10.5.10",
154
154
  "@tabler/icons-react": "^3.46.0",
155
155
  "@teispace/next-themes": "^2.0.4",
156
- "@types/node": "25.9.5",
156
+ "@types/node": "25.9.7",
157
157
  "@typescript/native": "npm:typescript@^7.0.2",
158
158
  "@vitejs/plugin-react": "5.2.0",
159
159
  "@vitest/browser": "^4.1.11",
@@ -195,7 +195,7 @@
195
195
  },
196
196
  "peerDependencies": {
197
197
  "@internationalized/date": "^3.12.2",
198
- "@mittwald/flow-icons-pro": "1.3.0-next.3",
198
+ "@mittwald/flow-icons-pro": "1.3.0-next.31",
199
199
  "@mittwald/react-use-promise": "^4.2.2",
200
200
  "next": "^16.2.3",
201
201
  "react": "^19.2.0",
@@ -219,5 +219,5 @@
219
219
  "browserslist": [
220
220
  "baseline widely available"
221
221
  ],
222
- "gitHead": "6afc49e243f752620463555a0f7e34d58ac80def"
222
+ "gitHead": "249b9df1475e88a360f478850a43dd7d3b129bbb"
223
223
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"useInfiniteScrollTrigger.mjs","names":[],"sources":["../../../../../../../../../../src/components/List/components/Items/hooks/useInfiniteScrollTrigger.ts"],"sourcesContent":["import { useEffect, useEffectEvent, type RefObject } from \"react\";\nimport { useList } from \"@/components/List/hooks/useList\";\n\nconst loadMoreThresholdFactor = 0.2;\nconst minLoadMoreThresholdRows = 1;\nconst maxLoadMoreThresholdRows = 8;\n\nexport const getLoadMoreThresholdRows = (batchSize: number): number =>\n Math.min(\n maxLoadMoreThresholdRows,\n Math.max(\n minLoadMoreThresholdRows,\n Math.round(batchSize * loadMoreThresholdFactor),\n ),\n );\n\nexport const useInfiniteScrollTrigger = (\n triggerRef: RefObject<HTMLElement | null>,\n): void => {\n const list = useList();\n const isLoading = list.loader.useIsLoading();\n const visibleItemsCount = list.batches.getVisibleItemsCount();\n\n const loadNextBatch = useEffectEvent(() => {\n if (list.batches.hasNextBatch() && !isLoading) {\n list.batches.nextBatch();\n }\n });\n\n useEffect(() => {\n const trigger = triggerRef.current;\n if (!trigger) {\n return;\n }\n\n const observer = new IntersectionObserver((entries) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n loadNextBatch();\n }\n });\n observer.observe(trigger);\n\n return () => observer.disconnect();\n }, [loadNextBatch, triggerRef, visibleItemsCount]);\n};\n"],"mappings":";;;;;AAGA,IAAM,0BAA0B;AAChC,IAAM,2BAA2B;AACjC,IAAM,2BAA2B;AAEjC,IAAa,4BAA4B,cACvC,KAAK,IACH,0BACA,KAAK,IACH,0BACA,KAAK,MAAM,YAAY,uBAAuB,CAChD,CACF;AAEF,IAAa,4BACX,eACS;CACT,MAAM,OAAO,QAAQ;CACrB,MAAM,YAAY,KAAK,OAAO,aAAa;CAC3C,MAAM,oBAAoB,KAAK,QAAQ,qBAAqB;CAE5D,MAAM,gBAAgB,qBAAqB;EACzC,IAAI,KAAK,QAAQ,aAAa,KAAK,CAAC,WAClC,KAAK,QAAQ,UAAU;CAE3B,CAAC;CAED,gBAAgB;EACd,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,SACH;EAGF,MAAM,WAAW,IAAI,sBAAsB,YAAY;GACrD,IAAI,QAAQ,MAAM,UAAU,MAAM,cAAc,GAC9C,cAAc;EAElB,CAAC;EACD,SAAS,QAAQ,OAAO;EAExB,aAAa,SAAS,WAAW;CACnC,GAAG;EAAC;EAAe;EAAY;CAAiB,CAAC;AACnD"}
@@ -1,3 +0,0 @@
1
- import { RefObject } from 'react';
2
- export declare const getLoadMoreThresholdRows: (batchSize: number) => number;
3
- export declare const useInfiniteScrollTrigger: (triggerRef: RefObject<HTMLElement | null>) => void;