@mittwald/flow-react-components 1.1.19 → 1.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MIGRATION.md +62 -0
- package/dist/assets/component-index.json +1 -1
- package/dist/assets/doc-properties.json +1 -1
- package/dist/js/packages/components/src/components/Markdown/Markdown.mjs +8 -1
- package/dist/js/packages/components/src/components/Markdown/Markdown.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Option/Option.mjs +12 -3
- package/dist/js/packages/components/src/components/Option/Option.mjs.map +1 -1
- package/dist/js/packages/components/src/lib/react/remote.mjs +40 -7
- package/dist/js/packages/components/src/lib/react/remote.mjs.map +1 -1
- package/dist/types/components/Markdown/Markdown.d.ts.map +1 -1
- package/dist/types/components/Option/Option.d.ts +10 -0
- package/dist/types/components/Option/Option.d.ts.map +1 -1
- package/dist/types/lib/react/remote.d.ts +28 -2
- package/dist/types/lib/react/remote.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -20,7 +20,7 @@ import remarkGfm from "remark-gfm";
|
|
|
20
20
|
* @flr-ignore-props components
|
|
21
21
|
*/
|
|
22
22
|
var Markdown = (props) => {
|
|
23
|
-
const { children, color = "default", className, headingOffset = 0, components: customComponents, ref, remarkPlugins, urlTransform, ...rest } = props;
|
|
23
|
+
const { children, color = "default", className, headingOffset = 0, components: customComponents, ref, allowElement, allowedElements, disallowedElements, rehypePlugins, remarkPlugins, remarkRehypeOptions, skipHtml, unwrapDisallowed, urlTransform, ...rest } = props;
|
|
24
24
|
const defaultComponents = {
|
|
25
25
|
a: (props) => /* @__PURE__ */ jsx(Link, {
|
|
26
26
|
target: "_blank",
|
|
@@ -99,7 +99,14 @@ var Markdown = (props) => {
|
|
|
99
99
|
...rest,
|
|
100
100
|
ref,
|
|
101
101
|
children: /* @__PURE__ */ jsx(ReactMarkdown, {
|
|
102
|
+
allowElement,
|
|
103
|
+
allowedElements,
|
|
104
|
+
disallowedElements,
|
|
105
|
+
rehypePlugins,
|
|
102
106
|
remarkPlugins: remarkPlugins ?? [remarkGfm],
|
|
107
|
+
remarkRehypeOptions,
|
|
108
|
+
skipHtml,
|
|
109
|
+
unwrapDisallowed,
|
|
103
110
|
urlTransform,
|
|
104
111
|
components: mergedComponents,
|
|
105
112
|
children: textContent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.mjs","names":[],"sources":["../../../../../../../src/components/Markdown/Markdown.tsx"],"sourcesContent":["import { CodeBlock } from \"@/components/CodeBlock\";\nimport { Heading } from \"@/components/Heading\";\nimport { InlineCode } from \"@/components/InlineCode\";\nimport { Link } from \"@/components/Link\";\nimport { Separator } from \"@/components/Separator\";\nimport { Text } from \"@/components/Text\";\nimport type { CSSProperties, FC, ReactNode, Ref } from \"react\";\nimport { Children, isValidElement } from \"react\";\nimport type { Components, Options } from \"react-markdown\";\nimport ReactMarkdown from \"react-markdown\";\nimport styles from \"./Markdown.module.scss\";\nimport { extractTextFromFirstChild } from \"@/lib/react/remote\";\nimport type { AlphaColor, PropsWithClassName } from \"@/lib/types/props\";\nimport clsx from \"clsx\";\nimport remarkGfm from \"remark-gfm\";\nimport { getHeadingLevelWithOffset } from \"@/components/Markdown/lib/getHeadingLevelWithOffset\";\nimport type { CodeEditorLanguage } from \"@/components/CodeEditor/languages\";\n\nexport interface MarkdownProps\n extends PropsWithClassName, Omit<Options, \"components\"> {\n /** The color schema of the markdown component. @default \"default\" */\n color?: \"default\" | AlphaColor;\n /** Shifts all heading levels by the given offset. @default 0 */\n headingOffset?: number;\n /** Allows overriding markdown element renderers from outside. */\n components?: Components;\n /** @internal */\n style?: CSSProperties;\n /** A ref to the elements root. */\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * @flr-generate all\n * @flr-ignore-props components\n */\nexport const Markdown: FC<MarkdownProps> = (props) => {\n const {\n children,\n color = \"default\",\n className,\n headingOffset = 0,\n components: customComponents,\n ref,\n remarkPlugins,\n urlTransform,\n ...rest\n } = props;\n\n const defaultComponents: Components = {\n a: (props) => (\n <Link target=\"_blank\" color={color} href={props.href}>\n {props.children}\n </Link>\n ),\n p: (props) => (\n <Text elementType=\"p\" color={color}>\n {props.children}\n </Text>\n ),\n code: (props) => <InlineCode color={color}>{props.children}</InlineCode>,\n h1: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(1, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h2: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(2, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h3: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(3, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h4: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(4, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h5: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(5, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h6: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(6, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n hr: () => <Separator />,\n pre: (props) => {\n const preElementContent = Children.toArray(props.children)[0];\n\n return (\n <CodeBlock\n copyable={false}\n language={\n isValidElement<{ className?: string }>(preElementContent) &&\n preElementContent.props.className\n ? (preElementContent.props.className.replace(\n \"language-\",\n \"\",\n ) as CodeEditorLanguage)\n : undefined\n }\n code={String(\n isValidElement<{ children: string }>(preElementContent)\n ? preElementContent.props.children\n : preElementContent,\n ).trim()}\n />\n );\n },\n ul: (props) => (\n <Text color={color}>\n <ul>{props.children as ReactNode}</ul>\n </Text>\n ),\n ol: (props) => (\n <Text color={color}>\n <ol>{props.children as ReactNode}</ol>\n </Text>\n ),\n blockquote: (props) => (\n <Text color={color}>\n <blockquote>{props.children}</blockquote>\n </Text>\n ),\n };\n\n const textContent = extractTextFromFirstChild(children);\n const mergedComponents: Components = {\n ...defaultComponents,\n ...customComponents,\n };\n\n return (\n <div className={clsx(styles.markdown, className)} {...rest} ref={ref}>\n <ReactMarkdown\n remarkPlugins={remarkPlugins ?? [remarkGfm]}\n urlTransform={urlTransform}\n components={mergedComponents}\n >\n {textContent}\n </ReactMarkdown>\n </div>\n );\n};\n\nexport default Markdown;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoCA,IAAa,YAA+B,UAAU;CACpD,MAAM,EACJ,UACA,QAAQ,WACR,WACA,gBAAgB,GAChB,YAAY,kBACZ,KACA,eACA,cACA,GAAG,SACD;CAEJ,MAAM,oBAAgC;EACpC,IAAI,UACF,oBAAC,MAAD;GAAM,QAAO;GAAgB;GAAO,MAAM,MAAM;GAC7C,UAAA,MAAM;EACH,CAAA;EAER,IAAI,UACF,oBAAC,MAAD;GAAM,aAAY;GAAW;GAC1B,UAAA,MAAM;EACH,CAAA;EAER,OAAO,UAAU,oBAAC,YAAD;GAAmB;GAAQ,UAAA,MAAM;EAAqB,CAAA;EACvE,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,UAAU,oBAAC,WAAD,CAAY,CAAA;EACtB,MAAM,UAAU;GACd,MAAM,oBAAoB,SAAS,QAAQ,MAAM,QAAQ,CAAC,CAAC;GAE3D,OACE,oBAAC,WAAD;IACE,UAAU;IACV,UACE,eAAuC,iBAAiB,KACxD,kBAAkB,MAAM,YACnB,kBAAkB,MAAM,UAAU,QACjC,aACA,EACF,IACA,KAAA;IAEN,MAAM,OACJ,eAAqC,iBAAiB,IAClD,kBAAkB,MAAM,WACxB,iBACN,CAAC,CAAC,KAAK;GACR,CAAA;EAEL;EACA,KAAK,UACH,oBAAC,MAAD;GAAa;GACX,UAAA,oBAAC,MAAD,EAAA,UAAK,MAAM,SAA0B,CAAA;EACjC,CAAA;EAER,KAAK,UACH,oBAAC,MAAD;GAAa;GACX,UAAA,oBAAC,MAAD,EAAA,UAAK,MAAM,SAA0B,CAAA;EACjC,CAAA;EAER,aAAa,UACX,oBAAC,MAAD;GAAa;GACX,UAAA,oBAAC,cAAD,EAAA,UAAa,MAAM,SAAqB,CAAA;EACpC,CAAA;CAEV;CAEA,MAAM,cAAc,0BAA0B,QAAQ;CACtD,MAAM,mBAA+B;EACnC,GAAG;EACH,GAAG;CACL;CAEA,OACE,oBAAC,OAAD;EAAK,WAAW,KAAK,wBAAO,UAAU,SAAS;EAAG,GAAI;EAAW;EAC/D,UAAA,oBAAC,eAAD;
|
|
1
|
+
{"version":3,"file":"Markdown.mjs","names":[],"sources":["../../../../../../../src/components/Markdown/Markdown.tsx"],"sourcesContent":["import { CodeBlock } from \"@/components/CodeBlock\";\nimport { Heading } from \"@/components/Heading\";\nimport { InlineCode } from \"@/components/InlineCode\";\nimport { Link } from \"@/components/Link\";\nimport { Separator } from \"@/components/Separator\";\nimport { Text } from \"@/components/Text\";\nimport type { CSSProperties, FC, ReactNode, Ref } from \"react\";\nimport { Children, isValidElement } from \"react\";\nimport type { Components, Options } from \"react-markdown\";\nimport ReactMarkdown from \"react-markdown\";\nimport styles from \"./Markdown.module.scss\";\nimport { extractTextFromFirstChild } from \"@/lib/react/remote\";\nimport type { AlphaColor, PropsWithClassName } from \"@/lib/types/props\";\nimport clsx from \"clsx\";\nimport remarkGfm from \"remark-gfm\";\nimport { getHeadingLevelWithOffset } from \"@/components/Markdown/lib/getHeadingLevelWithOffset\";\nimport type { CodeEditorLanguage } from \"@/components/CodeEditor/languages\";\n\nexport interface MarkdownProps\n extends PropsWithClassName, Omit<Options, \"components\"> {\n /** The color schema of the markdown component. @default \"default\" */\n color?: \"default\" | AlphaColor;\n /** Shifts all heading levels by the given offset. @default 0 */\n headingOffset?: number;\n /** Allows overriding markdown element renderers from outside. */\n components?: Components;\n /** @internal */\n style?: CSSProperties;\n /** A ref to the elements root. */\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * @flr-generate all\n * @flr-ignore-props components\n */\nexport const Markdown: FC<MarkdownProps> = (props) => {\n const {\n children,\n color = \"default\",\n className,\n headingOffset = 0,\n components: customComponents,\n ref,\n allowElement,\n allowedElements,\n disallowedElements,\n rehypePlugins,\n remarkPlugins,\n remarkRehypeOptions,\n skipHtml,\n unwrapDisallowed,\n urlTransform,\n ...rest\n } = props;\n\n const defaultComponents: Components = {\n a: (props) => (\n <Link target=\"_blank\" color={color} href={props.href}>\n {props.children}\n </Link>\n ),\n p: (props) => (\n <Text elementType=\"p\" color={color}>\n {props.children}\n </Text>\n ),\n code: (props) => <InlineCode color={color}>{props.children}</InlineCode>,\n h1: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(1, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h2: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(2, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h3: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(3, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h4: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(4, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h5: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(5, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n h6: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(6, headingOffset)}\n color={color}\n >\n {props.children}\n </Heading>\n ),\n hr: () => <Separator />,\n pre: (props) => {\n const preElementContent = Children.toArray(props.children)[0];\n\n return (\n <CodeBlock\n copyable={false}\n language={\n isValidElement<{ className?: string }>(preElementContent) &&\n preElementContent.props.className\n ? (preElementContent.props.className.replace(\n \"language-\",\n \"\",\n ) as CodeEditorLanguage)\n : undefined\n }\n code={String(\n isValidElement<{ children: string }>(preElementContent)\n ? preElementContent.props.children\n : preElementContent,\n ).trim()}\n />\n );\n },\n ul: (props) => (\n <Text color={color}>\n <ul>{props.children as ReactNode}</ul>\n </Text>\n ),\n ol: (props) => (\n <Text color={color}>\n <ol>{props.children as ReactNode}</ol>\n </Text>\n ),\n blockquote: (props) => (\n <Text color={color}>\n <blockquote>{props.children}</blockquote>\n </Text>\n ),\n };\n\n const textContent = extractTextFromFirstChild(children);\n const mergedComponents: Components = {\n ...defaultComponents,\n ...customComponents,\n };\n\n return (\n <div className={clsx(styles.markdown, className)} {...rest} ref={ref}>\n <ReactMarkdown\n allowElement={allowElement}\n allowedElements={allowedElements}\n disallowedElements={disallowedElements}\n rehypePlugins={rehypePlugins}\n remarkPlugins={remarkPlugins ?? [remarkGfm]}\n remarkRehypeOptions={remarkRehypeOptions}\n skipHtml={skipHtml}\n unwrapDisallowed={unwrapDisallowed}\n urlTransform={urlTransform}\n components={mergedComponents}\n >\n {textContent}\n </ReactMarkdown>\n </div>\n );\n};\n\nexport default Markdown;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoCA,IAAa,YAA+B,UAAU;CACpD,MAAM,EACJ,UACA,QAAQ,WACR,WACA,gBAAgB,GAChB,YAAY,kBACZ,KACA,cACA,iBACA,oBACA,eACA,eACA,qBACA,UACA,kBACA,cACA,GAAG,SACD;CAEJ,MAAM,oBAAgC;EACpC,IAAI,UACF,oBAAC,MAAD;GAAM,QAAO;GAAgB;GAAO,MAAM,MAAM;GAC7C,UAAA,MAAM;EACH,CAAA;EAER,IAAI,UACF,oBAAC,MAAD;GAAM,aAAY;GAAW;GAC1B,UAAA,MAAM;EACH,CAAA;EAER,OAAO,UAAU,oBAAC,YAAD;GAAmB;GAAQ,UAAA,MAAM;EAAqB,CAAA;EACvE,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,KAAK,UACH,oBAAC,SAAD;GACE,OAAO,0BAA0B,GAAG,aAAa;GAC1C;GAEN,UAAA,MAAM;EACA,CAAA;EAEX,UAAU,oBAAC,WAAD,CAAY,CAAA;EACtB,MAAM,UAAU;GACd,MAAM,oBAAoB,SAAS,QAAQ,MAAM,QAAQ,CAAC,CAAC;GAE3D,OACE,oBAAC,WAAD;IACE,UAAU;IACV,UACE,eAAuC,iBAAiB,KACxD,kBAAkB,MAAM,YACnB,kBAAkB,MAAM,UAAU,QACjC,aACA,EACF,IACA,KAAA;IAEN,MAAM,OACJ,eAAqC,iBAAiB,IAClD,kBAAkB,MAAM,WACxB,iBACN,CAAC,CAAC,KAAK;GACR,CAAA;EAEL;EACA,KAAK,UACH,oBAAC,MAAD;GAAa;GACX,UAAA,oBAAC,MAAD,EAAA,UAAK,MAAM,SAA0B,CAAA;EACjC,CAAA;EAER,KAAK,UACH,oBAAC,MAAD;GAAa;GACX,UAAA,oBAAC,MAAD,EAAA,UAAK,MAAM,SAA0B,CAAA;EACjC,CAAA;EAER,aAAa,UACX,oBAAC,MAAD;GAAa;GACX,UAAA,oBAAC,cAAD,EAAA,UAAa,MAAM,SAAqB,CAAA;EACpC,CAAA;CAEV;CAEA,MAAM,cAAc,0BAA0B,QAAQ;CACtD,MAAM,mBAA+B;EACnC,GAAG;EACH,GAAG;CACL;CAEA,OACE,oBAAC,OAAD;EAAK,WAAW,KAAK,wBAAO,UAAU,SAAS;EAAG,GAAI;EAAW;EAC/D,UAAA,oBAAC,eAAD;GACgB;GACG;GACG;GACL;GACf,eAAe,iBAAiB,CAAC,SAAS;GACrB;GACX;GACQ;GACJ;GACd,YAAY;GAEX,UAAA;EACY,CAAA;CACZ,CAAA;AAET"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
3
|
import { flowComponent } from "../../lib/componentFactory/flowComponent.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { extractTextFromChildren } from "../../lib/react/remote.mjs";
|
|
5
5
|
import { IconCheck } from "../Icon/components/icons/IconCheck.mjs";
|
|
6
6
|
import Option_module_default from "./Option.module.mjs";
|
|
7
7
|
import clsx from "clsx";
|
|
8
|
-
import { Children } from "react";
|
|
8
|
+
import { Children, useEffect, useRef } from "react";
|
|
9
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
import * as Aria from "react-aria-components";
|
|
11
11
|
//#region src/components/Option/Option.tsx
|
|
12
12
|
/** @flr-generate all */
|
|
13
13
|
var Option = flowComponent("Option", (props) => {
|
|
14
|
-
const { className, children, textValue =
|
|
14
|
+
const { className, children, textValue = extractTextFromChildren(children), value = textValue, ref, ...rest } = props;
|
|
15
|
+
useWarnMissingValue(value === void 0);
|
|
15
16
|
const rootClassName = clsx(Option_module_default.option, className);
|
|
16
17
|
const hasChildren = Children.count(children) >= 1;
|
|
17
18
|
return /* @__PURE__ */ jsxs(Aria.ListBoxItem, {
|
|
@@ -29,6 +30,14 @@ var Option = flowComponent("Option", (props) => {
|
|
|
29
30
|
})]
|
|
30
31
|
});
|
|
31
32
|
});
|
|
33
|
+
var useWarnMissingValue = (isMissing) => {
|
|
34
|
+
const hasWarned = useRef(false);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!isMissing || hasWarned.current) return;
|
|
37
|
+
hasWarned.current = true;
|
|
38
|
+
console.error("An <Option> has no 'value' and none could be inferred from its children, so it falls back to a generated, render-order-dependent key. Pass a 'value' to give the option a stable key.");
|
|
39
|
+
}, [isMissing]);
|
|
40
|
+
};
|
|
32
41
|
//#endregion
|
|
33
42
|
export { Option, Option as default };
|
|
34
43
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Option.mjs","names":[],"sources":["../../../../../../../src/components/Option/Option.tsx"],"sourcesContent":["import { type PropsWithChildren } from \"react\";\nimport { Children } from \"react\";\nimport * as Aria from \"react-aria-components\";\nimport clsx from \"clsx\";\nimport styles from \"./Option.module.scss\";\nimport type { FlowComponentProps } from \"@/lib/componentFactory/flowComponent\";\nimport { flowComponent } from \"@/lib/componentFactory/flowComponent\";\nimport {
|
|
1
|
+
{"version":3,"file":"Option.mjs","names":[],"sources":["../../../../../../../src/components/Option/Option.tsx"],"sourcesContent":["import { type PropsWithChildren } from \"react\";\nimport { Children, useEffect, useRef } from \"react\";\nimport * as Aria from \"react-aria-components\";\nimport clsx from \"clsx\";\nimport styles from \"./Option.module.scss\";\nimport type { FlowComponentProps } from \"@/lib/componentFactory/flowComponent\";\nimport { flowComponent } from \"@/lib/componentFactory/flowComponent\";\nimport { extractTextFromChildren } from \"@/lib/react/remote\";\nimport { IconCheck } from \"@/components/Icon/components/icons\";\n\nexport interface OptionProps\n extends\n Omit<Aria.ListBoxItemProps, \"children\" | \"value\" | \"id\">,\n PropsWithChildren,\n FlowComponentProps {\n /**\n * The value this option contributes to the field's selection, and the key\n * `defaultValue` / `value` of the surrounding field target.\n *\n * Defaults to `textValue`, which itself defaults to the text among the\n * option's children — element children such as a `Badge` do not contribute,\n * so `<Option>Millennium Falcon <Badge>Latest</Badge></Option>` is\n * `\"Millennium Falcon\"`. Pass it explicitly when the value must not follow\n * the display text, or when the children carry no text at all.\n */\n value?: string | number;\n}\n\n/** @flr-generate all */\nexport const Option = flowComponent(\"Option\", (props) => {\n const {\n className,\n children,\n textValue = extractTextFromChildren(children),\n value = textValue,\n ref,\n ...rest\n } = props;\n\n useWarnMissingValue(value === undefined);\n\n const rootClassName = clsx(styles.option, className);\n const hasChildren = Children.count(children) >= 1;\n\n return (\n <Aria.ListBoxItem\n className={rootClassName}\n ref={ref}\n id={value}\n {...rest}\n textValue={textValue}\n >\n <span className={styles.content}>\n {hasChildren ? children : textValue}\n </span>\n <IconCheck aria-hidden className={styles.checkMark} />\n </Aria.ListBoxItem>\n );\n});\n\n/*\n * Without an `id`, react-aria gives the item a key off a render-order counter\n * (`react-aria-1`). That key is what the field reports as its selected value\n * and what `defaultValue` has to match, so an option without a `value` silently\n * submits a meaningless string and cannot be preselected — and the key shifts\n * when unrelated markup around it changes. react-aria warns about the missing\n * `textValue` in this situation but says nothing about the key, which is the\n * expensive half (#3028).\n *\n * Warn in an effect rather than during render, so a double render in StrictMode\n * does not log twice; the ref keeps it to once per option.\n */\nconst useWarnMissingValue = (isMissing: boolean): void => {\n const hasWarned = useRef(false);\n\n useEffect(() => {\n if (!isMissing || hasWarned.current) {\n return;\n }\n\n hasWarned.current = true;\n console.error(\n \"An <Option> has no 'value' and none could be inferred from its children, so it falls back to a generated, render-order-dependent key. Pass a 'value' to give the option a stable key.\",\n );\n }, [isMissing]);\n};\n\nexport default Option;\n"],"mappings":";;;;;;;;;;;;AA6BA,IAAa,SAAS,cAAc,WAAW,UAAU;CACvD,MAAM,EACJ,WACA,UACA,YAAY,wBAAwB,QAAQ,GAC5C,QAAQ,WACR,KACA,GAAG,SACD;CAEJ,oBAAoB,UAAU,KAAA,CAAS;CAEvC,MAAM,gBAAgB,KAAK,sBAAO,QAAQ,SAAS;CACnD,MAAM,cAAc,SAAS,MAAM,QAAQ,KAAK;CAEhD,OACE,qBAAC,KAAK,aAAN;EACE,WAAW;EACN;EACL,IAAI;EACJ,GAAI;EACO;EALb,UAAA,CAOE,oBAAC,QAAD;GAAM,WAAW,sBAAO;GACrB,UAAA,cAAc,WAAW;EACtB,CAAA,GACN,oBAAC,WAAD;GAAW,eAAA;GAAY,WAAW,sBAAO;EAAY,CAAA,CACrC;;AAEtB,CAAC;AAcD,IAAM,uBAAuB,cAA6B;CACxD,MAAM,YAAY,OAAO,KAAK;CAE9B,gBAAgB;EACd,IAAI,CAAC,aAAa,UAAU,SAC1B;EAGF,UAAU,UAAU;EACpB,QAAQ,MACN,uLACF;CACF,GAAG,CAAC,SAAS,CAAC;AAChB"}
|
|
@@ -1,18 +1,51 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
3
|
import { Children, Fragment, isValidElement } from "react";
|
|
4
|
-
import { isObjectType, isString } from "remeda";
|
|
4
|
+
import { isNumber, isObjectType, isString } from "remeda";
|
|
5
5
|
//#region src/lib/react/remote.ts
|
|
6
6
|
function isRemoteComponentRendererProps(props) {
|
|
7
7
|
return isObjectType(props) && "element" in props && "components" in props && "receiver" in props;
|
|
8
8
|
}
|
|
9
|
-
/** Whether the node renders text — a string, number, or remote counterpart. */
|
|
10
|
-
var isTextNode = (child) => typeof child === "string" || typeof child === "number" || isValidElement(child) && isRemoteTextRenderProps(child.props);
|
|
11
9
|
/**
|
|
12
|
-
* `
|
|
13
|
-
*
|
|
10
|
+
* The text `children` are _themselves_ — plain strings and numbers locally,
|
|
11
|
+
* `RemoteTextRenderer` elements remotely — joined and trimmed. `undefined` when
|
|
12
|
+
* there is none.
|
|
13
|
+
*
|
|
14
|
+
* Text inside an element child is deliberately left out, because it belongs to
|
|
15
|
+
* that element rather than to the component being described:
|
|
16
|
+
* `<Option>Millennium Falcon <Badge>Latest</Badge></Option>` is the option
|
|
17
|
+
* "Millennium Falcon", not "Millennium Falcon Latest". A fragment is grouping
|
|
18
|
+
* rather than rendered output, so this looks through it.
|
|
19
|
+
*
|
|
20
|
+
* Use this over {@link extractTextFromFirstChild} when the question is "what
|
|
21
|
+
* does this read as", not "are the children one single text node".
|
|
22
|
+
*/
|
|
23
|
+
var extractTextFromChildren = (children) => {
|
|
24
|
+
const text = joinTextChildren(children).trim();
|
|
25
|
+
return text === "" ? void 0 : text;
|
|
26
|
+
};
|
|
27
|
+
var joinTextChildren = (children) => Children.toArray(children).map((child) => {
|
|
28
|
+
if (isString(child) || isNumber(child)) return String(child);
|
|
29
|
+
if (!isValidElement(child)) return "";
|
|
30
|
+
if (isRemoteTextRenderProps(child.props)) return child.props.remote.data;
|
|
31
|
+
return child.type === Fragment ? joinTextChildren(child.props.children) : "";
|
|
32
|
+
}).join("");
|
|
33
|
+
/**
|
|
34
|
+
* Whether `children` render any text of their own — what `Button` and `Link`
|
|
35
|
+
* ask to tell a labelled control from an icon-only one. The same reading as
|
|
36
|
+
* {@link extractTextFromChildren}, so fragments are transparent and children
|
|
37
|
+
* that are only whitespace do not count as a label.
|
|
38
|
+
*/
|
|
39
|
+
var containsTextChild = (children) => extractTextFromChildren(children) !== void 0;
|
|
40
|
+
/**
|
|
41
|
+
* The text of `children` when they are exactly one text node — locally a
|
|
42
|
+
* string, remotely a `RemoteTextRenderer` element. `undefined` for anything
|
|
43
|
+
* else, including a single string next to anything at all.
|
|
44
|
+
*
|
|
45
|
+
* That strictness is the point for its callers: `Markdown` takes it as the
|
|
46
|
+
* markdown source, and `Initials` and `Truncate` operate on the whole content.
|
|
47
|
+
* For "what does this read as", use {@link extractTextFromChildren}.
|
|
14
48
|
*/
|
|
15
|
-
var containsTextChild = (children) => Children.toArray(children).some((child) => isTextNode(child) || isValidElement(child) && child.type === Fragment && containsTextChild(child.props.children));
|
|
16
49
|
var extractTextFromFirstChild = (children) => {
|
|
17
50
|
if (Children.count(children) !== 1) return;
|
|
18
51
|
const firstChild = Children.toArray(children)[0];
|
|
@@ -22,6 +55,6 @@ function isRemoteTextRenderProps(props) {
|
|
|
22
55
|
return isObjectType(props) && "remote" in props && isObjectType(props.remote) && "data" in props.remote && isString(props.remote.data);
|
|
23
56
|
}
|
|
24
57
|
//#endregion
|
|
25
|
-
export { containsTextChild, extractTextFromFirstChild, isRemoteComponentRendererProps, isRemoteTextRenderProps };
|
|
58
|
+
export { containsTextChild, extractTextFromChildren, extractTextFromFirstChild, isRemoteComponentRendererProps, isRemoteTextRenderProps };
|
|
26
59
|
|
|
27
60
|
//# sourceMappingURL=remote.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.mjs","names":[],"sources":["../../../../../../../src/lib/react/remote.ts"],"sourcesContent":["import type {\n RemoteComponentRendererProps,\n RemoteTextRendererProps,\n} from \"@mittwald/remote-dom-react/host\";\nimport { isObjectType, isString } from \"remeda\";\nimport {\n Children,\n Fragment,\n isValidElement,\n type PropsWithChildren,\n type ReactNode,\n} from \"react\";\n\nexport function isRemoteComponentRendererProps(\n props: unknown,\n): props is RemoteComponentRendererProps {\n return (\n isObjectType(props) &&\n \"element\" in props &&\n \"components\" in props &&\n \"receiver\" in props\n );\n}\n\n
|
|
1
|
+
{"version":3,"file":"remote.mjs","names":[],"sources":["../../../../../../../src/lib/react/remote.ts"],"sourcesContent":["import type {\n RemoteComponentRendererProps,\n RemoteTextRendererProps,\n} from \"@mittwald/remote-dom-react/host\";\nimport { isNumber, isObjectType, isString } from \"remeda\";\nimport {\n Children,\n Fragment,\n isValidElement,\n type PropsWithChildren,\n type ReactNode,\n} from \"react\";\n\nexport function isRemoteComponentRendererProps(\n props: unknown,\n): props is RemoteComponentRendererProps {\n return (\n isObjectType(props) &&\n \"element\" in props &&\n \"components\" in props &&\n \"receiver\" in props\n );\n}\n\n/**\n * The text `children` are _themselves_ — plain strings and numbers locally,\n * `RemoteTextRenderer` elements remotely — joined and trimmed. `undefined` when\n * there is none.\n *\n * Text inside an element child is deliberately left out, because it belongs to\n * that element rather than to the component being described:\n * `<Option>Millennium Falcon <Badge>Latest</Badge></Option>` is the option\n * \"Millennium Falcon\", not \"Millennium Falcon Latest\". A fragment is grouping\n * rather than rendered output, so this looks through it.\n *\n * Use this over {@link extractTextFromFirstChild} when the question is \"what\n * does this read as\", not \"are the children one single text node\".\n */\nexport const extractTextFromChildren = (\n children: ReactNode,\n): string | undefined => {\n const text = joinTextChildren(children).trim();\n\n return text === \"\" ? undefined : text;\n};\n\nconst joinTextChildren = (children: ReactNode): string =>\n Children.toArray(children)\n .map((child) => {\n if (isString(child) || isNumber(child)) {\n return String(child);\n }\n\n if (!isValidElement(child)) {\n return \"\";\n }\n\n if (isRemoteTextRenderProps(child.props)) {\n return child.props.remote.data;\n }\n\n return child.type === Fragment\n ? joinTextChildren((child.props as PropsWithChildren).children)\n : \"\";\n })\n .join(\"\");\n\n/**\n * Whether `children` render any text of their own — what `Button` and `Link`\n * ask to tell a labelled control from an icon-only one. The same reading as\n * {@link extractTextFromChildren}, so fragments are transparent and children\n * that are only whitespace do not count as a label.\n */\nexport const containsTextChild = (children: ReactNode): boolean =>\n extractTextFromChildren(children) !== undefined;\n\n/**\n * The text of `children` when they are exactly one text node — locally a\n * string, remotely a `RemoteTextRenderer` element. `undefined` for anything\n * else, including a single string next to anything at all.\n *\n * That strictness is the point for its callers: `Markdown` takes it as the\n * markdown source, and `Initials` and `Truncate` operate on the whole content.\n * For \"what does this read as\", use {@link extractTextFromChildren}.\n */\nexport const extractTextFromFirstChild = (children: ReactNode) => {\n if (Children.count(children) !== 1) {\n return undefined;\n }\n\n const firstChild = Children.toArray(children)[0];\n\n return typeof firstChild === \"string\"\n ? firstChild\n : isValidElement(firstChild) && isRemoteTextRenderProps(firstChild.props)\n ? firstChild.props.remote.data\n : undefined;\n};\n\nexport function isRemoteTextRenderProps(\n props: unknown,\n): props is RemoteTextRendererProps {\n return (\n isObjectType(props) &&\n \"remote\" in props &&\n isObjectType(props.remote) &&\n \"data\" in props.remote &&\n isString(props.remote.data)\n );\n}\n"],"mappings":";;;;;AAaA,SAAgB,+BACd,OACuC;CACvC,OACE,aAAa,KAAK,KAClB,aAAa,SACb,gBAAgB,SAChB,cAAc;AAElB;;;;;;;;;;;;;;;AAgBA,IAAa,2BACX,aACuB;CACvB,MAAM,OAAO,iBAAiB,QAAQ,CAAC,CAAC,KAAK;CAE7C,OAAO,SAAS,KAAK,KAAA,IAAY;AACnC;AAEA,IAAM,oBAAoB,aACxB,SAAS,QAAQ,QAAQ,CAAC,CACvB,KAAK,UAAU;CACd,IAAI,SAAS,KAAK,KAAK,SAAS,KAAK,GACnC,OAAO,OAAO,KAAK;CAGrB,IAAI,CAAC,eAAe,KAAK,GACvB,OAAO;CAGT,IAAI,wBAAwB,MAAM,KAAK,GACrC,OAAO,MAAM,MAAM,OAAO;CAG5B,OAAO,MAAM,SAAS,WAClB,iBAAkB,MAAM,MAA4B,QAAQ,IAC5D;AACN,CAAC,CAAC,CACD,KAAK,EAAE;;;;;;;AAQZ,IAAa,qBAAqB,aAChC,wBAAwB,QAAQ,MAAM,KAAA;;;;;;;;;;AAWxC,IAAa,6BAA6B,aAAwB;CAChE,IAAI,SAAS,MAAM,QAAQ,MAAM,GAC/B;CAGF,MAAM,aAAa,SAAS,QAAQ,QAAQ,CAAC,CAAC;CAE9C,OAAO,OAAO,eAAe,WACzB,aACA,eAAe,UAAU,KAAK,wBAAwB,WAAW,KAAK,IACpE,WAAW,MAAM,OAAO,OACxB,KAAA;AACR;AAEA,SAAgB,wBACd,OACkC;CAClC,OACE,aAAa,KAAK,KAClB,YAAY,SACZ,aAAa,MAAM,MAAM,KACzB,UAAU,MAAM,UAChB,SAAS,MAAM,OAAO,IAAI;AAE9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../../src/components/Markdown/Markdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiB,EAAE,EAAa,GAAG,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI1D,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAMxE,MAAM,WAAW,aACf,SAAQ,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;IACvD,qEAAqE;IACrE,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAC/B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,UAAU,CAAC,EAAE,UAAU,CAAC;IAGxB,kCAAkC;IAClC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../../src/components/Markdown/Markdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiB,EAAE,EAAa,GAAG,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI1D,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAMxE,MAAM,WAAW,aACf,SAAQ,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;IACvD,qEAAqE;IACrE,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAC/B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,UAAU,CAAC,EAAE,UAAU,CAAC;IAGxB,kCAAkC;IAClC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAiJtC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -2,6 +2,16 @@ import { PropsWithChildren } from 'react';
|
|
|
2
2
|
import { FlowComponentProps } from '../../lib/componentFactory/flowComponent';
|
|
3
3
|
import * as Aria from "react-aria-components";
|
|
4
4
|
export interface OptionProps extends Omit<Aria.ListBoxItemProps, "children" | "value" | "id">, PropsWithChildren, FlowComponentProps {
|
|
5
|
+
/**
|
|
6
|
+
* The value this option contributes to the field's selection, and the key
|
|
7
|
+
* `defaultValue` / `value` of the surrounding field target.
|
|
8
|
+
*
|
|
9
|
+
* Defaults to `textValue`, which itself defaults to the text among the
|
|
10
|
+
* option's children — element children such as a `Badge` do not contribute,
|
|
11
|
+
* so `<Option>Millennium Falcon <Badge>Latest</Badge></Option>` is
|
|
12
|
+
* `"Millennium Falcon"`. Pass it explicitly when the value must not follow
|
|
13
|
+
* the display text, or when the children carry no text at all.
|
|
14
|
+
*/
|
|
5
15
|
value?: string | number;
|
|
6
16
|
}
|
|
7
17
|
/** @flr-generate all */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../../../src/components/Option/Option.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAG9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAK/E,MAAM,WAAW,WACf,SACE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,EACxD,iBAAiB,EACjB,kBAAkB;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,wBAAwB;AACxB,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../../../src/components/Option/Option.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAG9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAK/E,MAAM,WAAW,WACf,SACE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,EACxD,iBAAiB,EACjB,kBAAkB;IACpB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,wBAAwB;AACxB,eAAO,MAAM,MAAM,gGA6BjB,CAAC;AA6BH,eAAe,MAAM,CAAC"}
|
|
@@ -2,10 +2,36 @@ import { RemoteComponentRendererProps, RemoteTextRendererProps } from '@mittwald
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
export declare function isRemoteComponentRendererProps(props: unknown): props is RemoteComponentRendererProps;
|
|
4
4
|
/**
|
|
5
|
-
* `
|
|
6
|
-
*
|
|
5
|
+
* The text `children` are _themselves_ — plain strings and numbers locally,
|
|
6
|
+
* `RemoteTextRenderer` elements remotely — joined and trimmed. `undefined` when
|
|
7
|
+
* there is none.
|
|
8
|
+
*
|
|
9
|
+
* Text inside an element child is deliberately left out, because it belongs to
|
|
10
|
+
* that element rather than to the component being described:
|
|
11
|
+
* `<Option>Millennium Falcon <Badge>Latest</Badge></Option>` is the option
|
|
12
|
+
* "Millennium Falcon", not "Millennium Falcon Latest". A fragment is grouping
|
|
13
|
+
* rather than rendered output, so this looks through it.
|
|
14
|
+
*
|
|
15
|
+
* Use this over {@link extractTextFromFirstChild} when the question is "what
|
|
16
|
+
* does this read as", not "are the children one single text node".
|
|
17
|
+
*/
|
|
18
|
+
export declare const extractTextFromChildren: (children: ReactNode) => string | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Whether `children` render any text of their own — what `Button` and `Link`
|
|
21
|
+
* ask to tell a labelled control from an icon-only one. The same reading as
|
|
22
|
+
* {@link extractTextFromChildren}, so fragments are transparent and children
|
|
23
|
+
* that are only whitespace do not count as a label.
|
|
7
24
|
*/
|
|
8
25
|
export declare const containsTextChild: (children: ReactNode) => boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The text of `children` when they are exactly one text node — locally a
|
|
28
|
+
* string, remotely a `RemoteTextRenderer` element. `undefined` for anything
|
|
29
|
+
* else, including a single string next to anything at all.
|
|
30
|
+
*
|
|
31
|
+
* That strictness is the point for its callers: `Markdown` takes it as the
|
|
32
|
+
* markdown source, and `Initials` and `Truncate` operate on the whole content.
|
|
33
|
+
* For "what does this read as", use {@link extractTextFromChildren}.
|
|
34
|
+
*/
|
|
9
35
|
export declare const extractTextFromFirstChild: (children: ReactNode) => string | undefined;
|
|
10
36
|
export declare function isRemoteTextRenderProps(props: unknown): props is RemoteTextRendererProps;
|
|
11
37
|
//# sourceMappingURL=remote.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../../src/lib/react/remote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,4BAA4B,CAOvC;
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../../src/lib/react/remote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,4BAA4B,CAOvC;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,SAAS,KAClB,MAAM,GAAG,SAIX,CAAC;AAuBF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,SAAS,KAAG,OACP,CAAC;AAElD;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAU,SAAS,uBAY5D,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,uBAAuB,CAQlC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mittwald/flow-react-components",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.21",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A React implementation of Flow, mittwald’s design system",
|
|
6
6
|
"homepage": "https://flow.mittwald.de",
|
|
@@ -78,9 +78,9 @@
|
|
|
78
78
|
"@internationalized/string-compiler": "^3.4.1",
|
|
79
79
|
"@lezer/common": "^1.5.2",
|
|
80
80
|
"@lezer/highlight": "^1.2.3",
|
|
81
|
-
"@mittwald/flow-icons": "1.1.
|
|
81
|
+
"@mittwald/flow-icons": "1.1.21",
|
|
82
82
|
"@mittwald/password-tools-js": "3.0.0-alpha.31",
|
|
83
|
-
"@mittwald/react-tunnel": "1.1.
|
|
83
|
+
"@mittwald/react-tunnel": "1.1.21",
|
|
84
84
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
85
85
|
"@react-aria/form": "^3.2.1",
|
|
86
86
|
"@react-aria/i18n": "^3.13.1",
|
|
@@ -134,12 +134,12 @@
|
|
|
134
134
|
"@internationalized/date": "^3.12.3",
|
|
135
135
|
"@lezer/generator": "^1.8.0",
|
|
136
136
|
"@lezer/lr": "^1.4.10",
|
|
137
|
-
"@mittwald/flow-core": "1.1.
|
|
138
|
-
"@mittwald/flow-design-tokens": "1.1.
|
|
139
|
-
"@mittwald/flow-icons-base": "1.1.
|
|
137
|
+
"@mittwald/flow-core": "1.1.21",
|
|
138
|
+
"@mittwald/flow-design-tokens": "1.1.21",
|
|
139
|
+
"@mittwald/flow-icons-base": "1.1.21",
|
|
140
140
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
141
141
|
"@mittwald/remote-dom-react": "1.2.2-mittwald.10",
|
|
142
|
-
"@mittwald/typescript-config": "1.1.
|
|
142
|
+
"@mittwald/typescript-config": "1.1.21",
|
|
143
143
|
"@nx/storybook": "^22.7.6",
|
|
144
144
|
"@storybook/addon-a11y": "^10.5.10",
|
|
145
145
|
"@storybook/addon-actions": "^9.0.8",
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
},
|
|
191
191
|
"peerDependencies": {
|
|
192
192
|
"@internationalized/date": "^3.12.2",
|
|
193
|
-
"@mittwald/flow-icons-pro": "1.1.
|
|
193
|
+
"@mittwald/flow-icons-pro": "1.1.21",
|
|
194
194
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
195
195
|
"next": "^16.2.3",
|
|
196
196
|
"react": "^19.2.0",
|
|
@@ -211,5 +211,5 @@
|
|
|
211
211
|
"optional": true
|
|
212
212
|
}
|
|
213
213
|
},
|
|
214
|
-
"gitHead": "
|
|
214
|
+
"gitHead": "bea144b9cb37da5f0a1f7a41cd87b60b272cb1aa"
|
|
215
215
|
}
|