line-flex-message-renderer 1.0.0 → 1.1.0
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/dist/index.cjs +5 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/package.json +20 -13
package/dist/index.cjs
CHANGED
|
@@ -69,7 +69,7 @@ function FlexButtonComponent({ component }) {
|
|
|
69
69
|
display: "flex",
|
|
70
70
|
alignItems: "center",
|
|
71
71
|
justifyContent: "center",
|
|
72
|
-
borderRadius: isPrimary || component.style === "secondary" ? "
|
|
72
|
+
borderRadius: isPrimary || component.style === "secondary" ? "8px" : void 0,
|
|
73
73
|
backgroundColor: isPrimary ? component.color ?? "#17C950" : isLink ? "transparent" : "#EFEFEF",
|
|
74
74
|
color: isPrimary ? "#ffffff" : isLink ? component.color ?? "#42659A" : "#111111",
|
|
75
75
|
fontSize: TEXT_SIZE.sm,
|
|
@@ -77,7 +77,7 @@ function FlexButtonComponent({ component }) {
|
|
|
77
77
|
border: "none",
|
|
78
78
|
cursor: "pointer",
|
|
79
79
|
marginTop: resolveSize(component.margin, SPACING, void 0),
|
|
80
|
-
flex: component.flex !== void 0 ? `${component.flex} 0 0
|
|
80
|
+
flex: component.flex !== void 0 ? `${component.flex} 0 ${component.flex === 0 ? "auto" : "0%"}` : void 0
|
|
81
81
|
};
|
|
82
82
|
return /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", style, children: component.action.label });
|
|
83
83
|
}
|
|
@@ -97,7 +97,7 @@ function FlexImageComponent({ component }) {
|
|
|
97
97
|
const style = {
|
|
98
98
|
width: component.size === "full" ? "100%" : resolveSize(component.size, IMAGE_SIZE, IMAGE_SIZE.md),
|
|
99
99
|
marginTop: resolveSize(component.margin, SPACING, void 0),
|
|
100
|
-
flex: component.flex !== void 0 ? `${component.flex} 0 0
|
|
100
|
+
flex: component.flex !== void 0 ? `${component.flex} 0 ${component.flex === 0 ? "auto" : "0%"}` : void 0,
|
|
101
101
|
backgroundColor: component.backgroundColor
|
|
102
102
|
};
|
|
103
103
|
const innerStyle = {
|
|
@@ -155,7 +155,7 @@ function FlexTextComponent({ component }) {
|
|
|
155
155
|
fontWeight: component.weight === "bold" ? 700 : 400,
|
|
156
156
|
textAlign: alignMap[component.align ?? "start"] ?? "left",
|
|
157
157
|
marginTop: resolveSize(component.margin, SPACING, void 0),
|
|
158
|
-
flex: component.flex !== void 0 ? `${component.flex} 0 0
|
|
158
|
+
flex: component.flex !== void 0 ? `${component.flex} 0 ${component.flex === 0 ? "auto" : "0%"}` : void 0,
|
|
159
159
|
alignSelf: component.gravity ? gravityMap[component.gravity] : void 0,
|
|
160
160
|
textDecoration: component.decoration !== "none" ? component.decoration : void 0,
|
|
161
161
|
fontStyle: component.style,
|
|
@@ -232,7 +232,7 @@ function FlexBoxComponent({ component }) {
|
|
|
232
232
|
borderColor: component.borderColor,
|
|
233
233
|
borderWidth: component.borderWidth,
|
|
234
234
|
borderStyle: component.borderWidth ? "solid" : void 0,
|
|
235
|
-
flex: component.flex !== void 0 ? `${component.flex} 0 0
|
|
235
|
+
flex: component.flex !== void 0 ? `${component.flex} 0 ${component.flex === 0 ? "auto" : "0%"}` : void 0
|
|
236
236
|
};
|
|
237
237
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { style, children: component.contents.map((child, i) => /* @__PURE__ */ jsxRuntime.jsx(FlexComponentRenderer, { component: child }, i)) });
|
|
238
238
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/utils.ts","../src/components/FlexButton.tsx","../src/components/FlexIcon.tsx","../src/components/FlexImage.tsx","../src/components/FlexSeparator.tsx","../src/components/FlexSpan.tsx","../src/components/FlexText.tsx","../src/components/FlexComponentRenderer.tsx","../src/components/FlexBox.tsx","../src/components/FlexMessagePreview.tsx","../src/components/LineChatFrame.tsx","../src/components/LineTextBubble.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"index.cjs","sourcesContent":["export const TEXT_SIZE: Record<string, string> = {\n\txxs: \"11px\",\n\txs: \"12px\",\n\tsm: \"13px\",\n\tmd: \"14px\",\n\tlg: \"16px\",\n\txl: \"18px\",\n\txxl: \"22px\",\n\t\"3xl\": \"26px\",\n\t\"4xl\": \"30px\",\n\t\"5xl\": \"36px\",\n};\n\nexport const SPACING: Record<string, string> = {\n\tnone: \"0px\",\n\txs: \"2px\",\n\tsm: \"4px\",\n\tmd: \"8px\",\n\tlg: \"12px\",\n\txl: \"16px\",\n\txxl: \"20px\",\n};\n\nexport const IMAGE_SIZE: Record<string, string> = {\n\txxs: \"40px\",\n\txs: \"60px\",\n\tsm: \"80px\",\n\tmd: \"100px\",\n\tlg: \"120px\",\n\txl: \"150px\",\n\txxl: \"180px\",\n\t\"3xl\": \"220px\",\n\t\"4xl\": \"260px\",\n\t\"5xl\": \"300px\",\n\tfull: \"100%\",\n};\n\nexport const ICON_SIZE: Record<string, string> = {\n\txxs: \"14px\",\n\txs: \"16px\",\n\tsm: \"18px\",\n\tmd: \"20px\",\n\tlg: \"24px\",\n\txl: \"28px\",\n\txxl: \"32px\",\n};\n\nexport const BUBBLE_WIDTH: Record<string, string> = {\n\tnano: \"120px\",\n\tmicro: \"150px\",\n\tkilo: \"230px\",\n\tmega: \"300px\",\n\tgiga: \"386px\",\n};\n","export function resolveSize(\n\tvalue: string | undefined,\n\tmap: Record<string, string>,\n\tfallback?: string,\n): string | undefined {\n\tif (!value) return fallback;\n\treturn map[value] ?? value;\n}\n","import type React from \"react\";\nimport { SPACING, TEXT_SIZE } from \"../constants\";\nimport type { FlexButton } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexButtonComponent({ component }: { component: FlexButton }) {\n\tconst isPrimary = component.style === \"primary\";\n\tconst isLink = component.style === \"link\";\n\tconst height = component.height === \"sm\" ? \"40px\" : \"52px\";\n\n\tconst style: React.CSSProperties = {\n\t\twidth: \"100%\",\n\t\theight,\n\t\tdisplay: \"flex\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tborderRadius:\n\t\t\tisPrimary || component.style === \"secondary\" ? \"9999px\" : undefined,\n\t\tbackgroundColor: isPrimary\n\t\t\t? (component.color ?? \"#17C950\")\n\t\t\t: isLink\n\t\t\t\t? \"transparent\"\n\t\t\t\t: \"#EFEFEF\",\n\t\tcolor: isPrimary\n\t\t\t? \"#ffffff\"\n\t\t\t: isLink\n\t\t\t\t? (component.color ?? \"#42659A\")\n\t\t\t\t: \"#111111\",\n\t\tfontSize: TEXT_SIZE.sm,\n\t\tfontWeight: 600,\n\t\tborder: \"none\",\n\t\tcursor: \"pointer\",\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 0%` : undefined,\n\t};\n\n\treturn (\n\t\t<button type=\"button\" style={style}>\n\t\t\t{component.action.label}\n\t\t</button>\n\t);\n}\n","import { ICON_SIZE } from \"../constants\";\nimport type { FlexIcon } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexIconComponent({ component }: { component: FlexIcon }) {\n\tconst size = resolveSize(component.size, ICON_SIZE, ICON_SIZE.md);\n\treturn (\n\t\t<img\n\t\t\tsrc={component.url}\n\t\t\talt=\"\"\n\t\t\tstyle={{ width: size, height: size, objectFit: \"contain\" }}\n\t\t/>\n\t);\n}\n","import type React from \"react\";\nimport { IMAGE_SIZE, SPACING } from \"../constants\";\nimport type { FlexImage } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexImageComponent({ component }: { component: FlexImage }) {\n\tconst [w, h] = (component.aspectRatio ?? \"1:1\").split(\":\").map(Number);\n\n\tconst style: React.CSSProperties = {\n\t\twidth:\n\t\t\tcomponent.size === \"full\"\n\t\t\t\t? \"100%\"\n\t\t\t\t: resolveSize(component.size, IMAGE_SIZE, IMAGE_SIZE.md),\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 0%` : undefined,\n\t\tbackgroundColor: component.backgroundColor,\n\t};\n\n\tconst innerStyle: React.CSSProperties = {\n\t\twidth: \"100%\",\n\t\tpaddingTop: `${(h / w) * 100}%`,\n\t\tposition: \"relative\",\n\t\toverflow: \"hidden\",\n\t};\n\n\tconst imgStyle: React.CSSProperties = {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t\tobjectFit: component.aspectMode === \"fit\" ? \"contain\" : \"cover\",\n\t};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t<div style={innerStyle}>\n\t\t\t\t<img src={component.url} alt=\"\" style={imgStyle} />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import type React from \"react\";\nimport { SPACING } from \"../constants\";\nimport type { FlexSeparator } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexSeparatorComponent({\n\tcomponent,\n}: {\n\tcomponent: FlexSeparator;\n}) {\n\tconst style: React.CSSProperties = {\n\t\tborderTop: `1px solid ${component.color ?? \"#E5E5E5\"}`,\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\twidth: \"100%\",\n\t};\n\treturn <hr style={style} />;\n}\n","import type React from \"react\";\nimport { TEXT_SIZE } from \"../constants\";\nimport type { FlexSpan } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexSpanComponent({ span }: { span: FlexSpan }) {\n\tconst style: React.CSSProperties = {\n\t\tfontSize: resolveSize(span.size, TEXT_SIZE, \"inherit\"),\n\t\tcolor: span.color,\n\t\tfontWeight: span.weight === \"bold\" ? 700 : undefined,\n\t\ttextDecoration: span.decoration !== \"none\" ? span.decoration : undefined,\n\t\tfontStyle: span.style,\n\t};\n\treturn <span style={style}>{span.text}</span>;\n}\n","import type React from \"react\";\nimport { SPACING, TEXT_SIZE } from \"../constants\";\nimport type { FlexText } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexSpanComponent } from \"./FlexSpan\";\n\nconst alignMap: Record<string, string> = {\n\tstart: \"left\",\n\tcenter: \"center\",\n\tend: \"right\",\n};\n\nconst gravityMap: Record<string, string> = {\n\ttop: \"flex-start\",\n\tcenter: \"center\",\n\tbottom: \"flex-end\",\n};\n\nexport function FlexTextComponent({ component }: { component: FlexText }) {\n\tconst hasSpans = component.contents && component.contents.length > 0;\n\tconst fontSize = resolveSize(component.size, TEXT_SIZE, TEXT_SIZE.md);\n\n\tconst style: React.CSSProperties = {\n\t\tfontSize,\n\t\tcolor: component.color,\n\t\tfontWeight: component.weight === \"bold\" ? 700 : 400,\n\t\ttextAlign: (alignMap[component.align ?? \"start\"] ??\n\t\t\t\"left\") as React.CSSProperties[\"textAlign\"],\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 0%` : undefined,\n\t\talignSelf: component.gravity ? gravityMap[component.gravity] : undefined,\n\t\ttextDecoration:\n\t\t\tcomponent.decoration !== \"none\" ? component.decoration : undefined,\n\t\tfontStyle: component.style,\n\t\tlineHeight: component.lineSpacing ?? 1.4,\n\t\t...(!component.wrap\n\t\t\t? {\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\ttextOverflow: \"ellipsis\",\n\t\t\t\t\twhiteSpace: \"nowrap\",\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\twhiteSpace: \"pre-wrap\",\n\t\t\t\t\twordBreak: \"break-word\",\n\t\t\t\t}),\n\t\t...(component.maxLines && component.wrap\n\t\t\t? {\n\t\t\t\t\tdisplay: \"-webkit-box\",\n\t\t\t\t\tWebkitLineClamp: component.maxLines,\n\t\t\t\t\tWebkitBoxOrient: \"vertical\" as const,\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n\n\tif (hasSpans) {\n\t\treturn (\n\t\t\t<p style={style}>\n\t\t\t\t{component.contents?.map((span, i) => (\n\t\t\t\t\t<FlexSpanComponent key={i} span={span} />\n\t\t\t\t))}\n\t\t\t</p>\n\t\t);\n\t}\n\n\treturn <p style={style}>{component.text}</p>;\n}\n","import { SPACING } from \"../constants\";\nimport type { FlexComponentType, FlexFiller, FlexSpacer } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexBoxComponent } from \"./FlexBox\";\nimport { FlexButtonComponent } from \"./FlexButton\";\nimport { FlexIconComponent } from \"./FlexIcon\";\nimport { FlexImageComponent } from \"./FlexImage\";\nimport { FlexSeparatorComponent } from \"./FlexSeparator\";\nimport { FlexTextComponent } from \"./FlexText\";\n\nexport function FlexComponentRenderer({\n\tcomponent,\n}: {\n\tcomponent: FlexComponentType;\n}) {\n\tswitch (component.type) {\n\t\tcase \"box\":\n\t\t\treturn <FlexBoxComponent component={component} />;\n\t\tcase \"text\":\n\t\t\treturn <FlexTextComponent component={component} />;\n\t\tcase \"image\":\n\t\t\treturn <FlexImageComponent component={component} />;\n\t\tcase \"button\":\n\t\t\treturn <FlexButtonComponent component={component} />;\n\t\tcase \"separator\":\n\t\t\treturn <FlexSeparatorComponent component={component} />;\n\t\tcase \"spacer\":\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\theight: resolveSize((component as FlexSpacer).size, SPACING, \"0px\"),\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"filler\":\n\t\t\treturn <div style={{ flexGrow: (component as FlexFiller).flex ?? 1 }} />;\n\t\tcase \"icon\":\n\t\t\treturn <FlexIconComponent component={component} />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n","import type React from \"react\";\nimport { SPACING } from \"../constants\";\nimport type { FlexBox } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexComponentRenderer } from \"./FlexComponentRenderer\";\n\nexport function FlexBoxComponent({ component }: { component: FlexBox }) {\n\tconst isVertical = component.layout === \"vertical\";\n\tconst isBaseline = component.layout === \"baseline\";\n\n\tconst style: React.CSSProperties = {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: isVertical ? \"column\" : \"row\",\n\t\talignItems: isBaseline\n\t\t\t? \"baseline\"\n\t\t\t: (component.alignItems ?? (isVertical ? \"stretch\" : \"center\")),\n\t\tjustifyContent: component.justifyContent,\n\t\tgap: resolveSize(component.spacing, SPACING, undefined),\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tpadding: resolveSize(component.paddingAll, SPACING, undefined),\n\t\tpaddingTop: resolveSize(component.paddingTop, SPACING, undefined),\n\t\tpaddingBottom: resolveSize(component.paddingBottom, SPACING, undefined),\n\t\tpaddingLeft: resolveSize(component.paddingStart, SPACING, undefined),\n\t\tpaddingRight: resolveSize(component.paddingEnd, SPACING, undefined),\n\t\tbackgroundColor: component.backgroundColor,\n\t\tborderRadius: component.cornerRadius,\n\t\tborderColor: component.borderColor,\n\t\tborderWidth: component.borderWidth,\n\t\tborderStyle: component.borderWidth ? \"solid\" : undefined,\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 0%` : undefined,\n\t};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t{component.contents.map((child, i) => (\n\t\t\t\t<FlexComponentRenderer key={i} component={child} />\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","import type React from \"react\";\nimport { BUBBLE_WIDTH } from \"../constants\";\nimport type { FlexBubble, FlexContainer } from \"../types\";\nimport { FlexBoxComponent } from \"./FlexBox\";\nimport { FlexImageComponent } from \"./FlexImage\";\n\nexport interface FlexMessagePreviewProps {\n\t/** Flex Message JSON(bubble or carousel) */\n\tjson: FlexContainer;\n\t/** 追加 className */\n\tclassName?: string;\n\t/** 追加 inline style */\n\tstyle?: React.CSSProperties;\n}\n\nfunction BubbleRenderer({\n\tjson,\n\tclassName,\n\tstyle: extraStyle,\n}: {\n\tjson: FlexBubble;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n}) {\n\tconst width = BUBBLE_WIDTH[json.size ?? \"mega\"];\n\tconst headerBg = json.styles?.header?.backgroundColor;\n\tconst bodyBg = json.styles?.body?.backgroundColor;\n\tconst footerBg = json.styles?.footer?.backgroundColor;\n\tconst footerSep = json.styles?.footer?.separator;\n\tconst bodySep = json.styles?.body?.separator;\n\tconst heroSep = json.styles?.hero?.separator;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={className}\n\t\t\tstyle={{\n\t\t\t\twidth,\n\t\t\t\tmaxWidth: \"100%\",\n\t\t\t\tborderRadius: \"16px\",\n\t\t\t\toverflow: \"hidden\",\n\t\t\t\tbackgroundColor: \"#ffffff\",\n\t\t\t\tboxShadow: \"0 1px 6px rgba(0,0,0,0.12)\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t\t...extraStyle,\n\t\t\t}}\n\t\t>\n\t\t\t{/* Header */}\n\t\t\t{json.header && (\n\t\t\t\t<div style={{ padding: \"16px 16px 0\", backgroundColor: headerBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.header} />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Hero separator */}\n\t\t\t{heroSep && <hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />}\n\n\t\t\t{/* Hero */}\n\t\t\t{json.hero && <FlexImageComponent component={json.hero} />}\n\n\t\t\t{/* Body separator */}\n\t\t\t{bodySep && <hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />}\n\n\t\t\t{/* Body */}\n\t\t\t{json.body && (\n\t\t\t\t<div style={{ padding: \"16px\", backgroundColor: bodyBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.body} />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Footer separator */}\n\t\t\t{footerSep && (\n\t\t\t\t<hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />\n\t\t\t)}\n\n\t\t\t{/* Footer */}\n\t\t\t{json.footer && (\n\t\t\t\t<div style={{ padding: \"8px 16px 16px\", backgroundColor: footerBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.footer} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport function FlexMessagePreview({\n\tjson,\n\tclassName,\n\tstyle,\n}: FlexMessagePreviewProps) {\n\tif (json.type === \"carousel\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\toverflowX: \"auto\",\n\t\t\t\t\tscrollSnapType: \"x mandatory\",\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{json.contents.map((bubble, i) => (\n\t\t\t\t\t<div key={i} style={{ scrollSnapAlign: \"start\", flexShrink: 0 }}>\n\t\t\t\t\t\t<BubbleRenderer json={bubble} />\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t}\n\treturn <BubbleRenderer json={json} className={className} style={style} />;\n}\n","import type React from \"react\";\n\nexport interface LineChatFrameProps {\n\tchildren: React.ReactNode;\n\t/** トーク画面のヘッダー名(デフォルト: \"トーク\") */\n\taccountName?: string;\n\t/** アバター画像 URL(未指定時は緑の BOT アイコン) */\n\tavatarUrl?: string;\n\t/** フレーム幅(デフォルト: 375) */\n\twidth?: number;\n}\n\nfunction DefaultAvatar() {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: 36,\n\t\t\t\theight: 36,\n\t\t\t\tborderRadius: \"50%\",\n\t\t\t\tbackgroundColor: \"#00B900\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"center\",\n\t\t\t\tflexShrink: 0,\n\t\t\t\tcolor: \"#fff\",\n\t\t\t\tfontSize: 11,\n\t\t\t\tfontWeight: 700,\n\t\t\t}}\n\t\t>\n\t\t\tBOT\n\t\t</div>\n\t);\n}\n\nexport function LineChatFrame({\n\tchildren,\n\taccountName = \"トーク\",\n\tavatarUrl,\n\twidth = 375,\n}: LineChatFrameProps) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth,\n\t\t\t\tminHeight: 500,\n\t\t\t\tborderRadius: 12,\n\t\t\t\toverflow: \"hidden\",\n\t\t\t\tboxShadow: \"0 4px 24px rgba(0,0,0,0.18)\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t}}\n\t\t>\n\t\t\t{/* Header bar */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#00B900\",\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\tpadding: \"12px 16px\",\n\t\t\t\t\tfontSize: 16,\n\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\twidth=\"18\"\n\t\t\t\t\theight=\"18\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\trole=\"img\"\n\t\t\t\t\taria-label=\"Back\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M15 18l-6-6 6-6\" />\n\t\t\t\t</svg>\n\t\t\t\t<span>{accountName}</span>\n\t\t\t</div>\n\n\t\t\t{/* Chat area */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#7B9EB0\",\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tpadding: \"16px 12px\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* Message row */}\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\t\tgap: 8,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{avatarUrl ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={avatarUrl}\n\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: 36,\n\t\t\t\t\t\t\t\theight: 36,\n\t\t\t\t\t\t\t\tborderRadius: \"50%\",\n\t\t\t\t\t\t\t\tobjectFit: \"cover\",\n\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<DefaultAvatar />\n\t\t\t\t\t)}\n\t\t\t\t\t<div style={{ maxWidth: \"calc(100% - 52px)\" }}>{children}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Input bar */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#F7F7F7\",\n\t\t\t\t\tpadding: \"10px 12px\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\tborderTop: \"1px solid #E0E0E0\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\tbackgroundColor: \"#fff\",\n\t\t\t\t\t\tborderRadius: 20,\n\t\t\t\t\t\tpadding: \"8px 14px\",\n\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\tcolor: \"#999\",\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tAa\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","export function LineTextBubble({ text }: { text: string }) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"#ffffff\",\n\t\t\t\tborderRadius: \"16px 16px 16px 4px\",\n\t\t\t\tpadding: \"10px 14px\",\n\t\t\t\tfontSize: 14,\n\t\t\t\tlineHeight: 1.5,\n\t\t\t\tcolor: \"#111111\",\n\t\t\t\twhiteSpace: \"pre-wrap\",\n\t\t\t\twordBreak: \"break-word\",\n\t\t\t\tmaxWidth: 260,\n\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t}}\n\t\t>\n\t\t\t{text}\n\t\t</div>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/utils.ts","../src/components/FlexButton.tsx","../src/components/FlexIcon.tsx","../src/components/FlexImage.tsx","../src/components/FlexSeparator.tsx","../src/components/FlexSpan.tsx","../src/components/FlexText.tsx","../src/components/FlexComponentRenderer.tsx","../src/components/FlexBox.tsx","../src/components/FlexMessagePreview.tsx","../src/components/LineChatFrame.tsx","../src/components/LineTextBubble.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"index.cjs","sourcesContent":["export const TEXT_SIZE: Record<string, string> = {\n\txxs: \"11px\",\n\txs: \"12px\",\n\tsm: \"13px\",\n\tmd: \"14px\",\n\tlg: \"16px\",\n\txl: \"18px\",\n\txxl: \"22px\",\n\t\"3xl\": \"26px\",\n\t\"4xl\": \"30px\",\n\t\"5xl\": \"36px\",\n};\n\nexport const SPACING: Record<string, string> = {\n\tnone: \"0px\",\n\txs: \"2px\",\n\tsm: \"4px\",\n\tmd: \"8px\",\n\tlg: \"12px\",\n\txl: \"16px\",\n\txxl: \"20px\",\n};\n\nexport const IMAGE_SIZE: Record<string, string> = {\n\txxs: \"40px\",\n\txs: \"60px\",\n\tsm: \"80px\",\n\tmd: \"100px\",\n\tlg: \"120px\",\n\txl: \"150px\",\n\txxl: \"180px\",\n\t\"3xl\": \"220px\",\n\t\"4xl\": \"260px\",\n\t\"5xl\": \"300px\",\n\tfull: \"100%\",\n};\n\nexport const ICON_SIZE: Record<string, string> = {\n\txxs: \"14px\",\n\txs: \"16px\",\n\tsm: \"18px\",\n\tmd: \"20px\",\n\tlg: \"24px\",\n\txl: \"28px\",\n\txxl: \"32px\",\n};\n\nexport const BUBBLE_WIDTH: Record<string, string> = {\n\tnano: \"120px\",\n\tmicro: \"150px\",\n\tkilo: \"230px\",\n\tmega: \"300px\",\n\tgiga: \"386px\",\n};\n","export function resolveSize(\n\tvalue: string | undefined,\n\tmap: Record<string, string>,\n\tfallback?: string,\n): string | undefined {\n\tif (!value) return fallback;\n\treturn map[value] ?? value;\n}\n","import type React from \"react\";\nimport { SPACING, TEXT_SIZE } from \"../constants\";\nimport type { FlexButton } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexButtonComponent({ component }: { component: FlexButton }) {\n\tconst isPrimary = component.style === \"primary\";\n\tconst isLink = component.style === \"link\";\n\tconst height = component.height === \"sm\" ? \"40px\" : \"52px\";\n\n\tconst style: React.CSSProperties = {\n\t\twidth: \"100%\",\n\t\theight,\n\t\tdisplay: \"flex\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tborderRadius:\n\t\t\tisPrimary || component.style === \"secondary\" ? \"8px\" : undefined,\n\t\tbackgroundColor: isPrimary\n\t\t\t? (component.color ?? \"#17C950\")\n\t\t\t: isLink\n\t\t\t\t? \"transparent\"\n\t\t\t\t: \"#EFEFEF\",\n\t\tcolor: isPrimary\n\t\t\t? \"#ffffff\"\n\t\t\t: isLink\n\t\t\t\t? (component.color ?? \"#42659A\")\n\t\t\t\t: \"#111111\",\n\t\tfontSize: TEXT_SIZE.sm,\n\t\tfontWeight: 600,\n\t\tborder: \"none\",\n\t\tcursor: \"pointer\",\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 ${component.flex === 0 ? \"auto\" : \"0%\"}` : undefined,\n\t};\n\n\treturn (\n\t\t<button type=\"button\" style={style}>\n\t\t\t{component.action.label}\n\t\t</button>\n\t);\n}\n","import { ICON_SIZE } from \"../constants\";\nimport type { FlexIcon } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexIconComponent({ component }: { component: FlexIcon }) {\n\tconst size = resolveSize(component.size, ICON_SIZE, ICON_SIZE.md);\n\treturn (\n\t\t<img\n\t\t\tsrc={component.url}\n\t\t\talt=\"\"\n\t\t\tstyle={{ width: size, height: size, objectFit: \"contain\" }}\n\t\t/>\n\t);\n}\n","import type React from \"react\";\nimport { IMAGE_SIZE, SPACING } from \"../constants\";\nimport type { FlexImage } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexImageComponent({ component }: { component: FlexImage }) {\n\tconst [w, h] = (component.aspectRatio ?? \"1:1\").split(\":\").map(Number);\n\n\tconst style: React.CSSProperties = {\n\t\twidth:\n\t\t\tcomponent.size === \"full\"\n\t\t\t\t? \"100%\"\n\t\t\t\t: resolveSize(component.size, IMAGE_SIZE, IMAGE_SIZE.md),\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 ${component.flex === 0 ? \"auto\" : \"0%\"}` : undefined,\n\t\tbackgroundColor: component.backgroundColor,\n\t};\n\n\tconst innerStyle: React.CSSProperties = {\n\t\twidth: \"100%\",\n\t\tpaddingTop: `${(h / w) * 100}%`,\n\t\tposition: \"relative\",\n\t\toverflow: \"hidden\",\n\t};\n\n\tconst imgStyle: React.CSSProperties = {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t\tobjectFit: component.aspectMode === \"fit\" ? \"contain\" : \"cover\",\n\t};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t<div style={innerStyle}>\n\t\t\t\t<img src={component.url} alt=\"\" style={imgStyle} />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import type React from \"react\";\nimport { SPACING } from \"../constants\";\nimport type { FlexSeparator } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexSeparatorComponent({\n\tcomponent,\n}: {\n\tcomponent: FlexSeparator;\n}) {\n\tconst style: React.CSSProperties = {\n\t\tborderTop: `1px solid ${component.color ?? \"#E5E5E5\"}`,\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\twidth: \"100%\",\n\t};\n\treturn <hr style={style} />;\n}\n","import type React from \"react\";\nimport { TEXT_SIZE } from \"../constants\";\nimport type { FlexSpan } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexSpanComponent({ span }: { span: FlexSpan }) {\n\tconst style: React.CSSProperties = {\n\t\tfontSize: resolveSize(span.size, TEXT_SIZE, \"inherit\"),\n\t\tcolor: span.color,\n\t\tfontWeight: span.weight === \"bold\" ? 700 : undefined,\n\t\ttextDecoration: span.decoration !== \"none\" ? span.decoration : undefined,\n\t\tfontStyle: span.style,\n\t};\n\treturn <span style={style}>{span.text}</span>;\n}\n","import type React from \"react\";\nimport { SPACING, TEXT_SIZE } from \"../constants\";\nimport type { FlexText } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexSpanComponent } from \"./FlexSpan\";\n\nconst alignMap: Record<string, string> = {\n\tstart: \"left\",\n\tcenter: \"center\",\n\tend: \"right\",\n};\n\nconst gravityMap: Record<string, string> = {\n\ttop: \"flex-start\",\n\tcenter: \"center\",\n\tbottom: \"flex-end\",\n};\n\nexport function FlexTextComponent({ component }: { component: FlexText }) {\n\tconst hasSpans = component.contents && component.contents.length > 0;\n\tconst fontSize = resolveSize(component.size, TEXT_SIZE, TEXT_SIZE.md);\n\n\tconst style: React.CSSProperties = {\n\t\tfontSize,\n\t\tcolor: component.color,\n\t\tfontWeight: component.weight === \"bold\" ? 700 : 400,\n\t\ttextAlign: (alignMap[component.align ?? \"start\"] ??\n\t\t\t\"left\") as React.CSSProperties[\"textAlign\"],\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 ${component.flex === 0 ? \"auto\" : \"0%\"}` : undefined,\n\t\talignSelf: component.gravity ? gravityMap[component.gravity] : undefined,\n\t\ttextDecoration:\n\t\t\tcomponent.decoration !== \"none\" ? component.decoration : undefined,\n\t\tfontStyle: component.style,\n\t\tlineHeight: component.lineSpacing ?? 1.4,\n\t\t...(!component.wrap\n\t\t\t? {\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\ttextOverflow: \"ellipsis\",\n\t\t\t\t\twhiteSpace: \"nowrap\",\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\twhiteSpace: \"pre-wrap\",\n\t\t\t\t\twordBreak: \"break-word\",\n\t\t\t\t}),\n\t\t...(component.maxLines && component.wrap\n\t\t\t? {\n\t\t\t\t\tdisplay: \"-webkit-box\",\n\t\t\t\t\tWebkitLineClamp: component.maxLines,\n\t\t\t\t\tWebkitBoxOrient: \"vertical\" as const,\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n\n\tif (hasSpans) {\n\t\treturn (\n\t\t\t<p style={style}>\n\t\t\t\t{component.contents?.map((span, i) => (\n\t\t\t\t\t<FlexSpanComponent key={i} span={span} />\n\t\t\t\t))}\n\t\t\t</p>\n\t\t);\n\t}\n\n\treturn <p style={style}>{component.text}</p>;\n}\n","import { SPACING } from \"../constants\";\nimport type { FlexComponentType, FlexFiller, FlexSpacer } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexBoxComponent } from \"./FlexBox\";\nimport { FlexButtonComponent } from \"./FlexButton\";\nimport { FlexIconComponent } from \"./FlexIcon\";\nimport { FlexImageComponent } from \"./FlexImage\";\nimport { FlexSeparatorComponent } from \"./FlexSeparator\";\nimport { FlexTextComponent } from \"./FlexText\";\n\nexport function FlexComponentRenderer({\n\tcomponent,\n}: {\n\tcomponent: FlexComponentType;\n}) {\n\tswitch (component.type) {\n\t\tcase \"box\":\n\t\t\treturn <FlexBoxComponent component={component} />;\n\t\tcase \"text\":\n\t\t\treturn <FlexTextComponent component={component} />;\n\t\tcase \"image\":\n\t\t\treturn <FlexImageComponent component={component} />;\n\t\tcase \"button\":\n\t\t\treturn <FlexButtonComponent component={component} />;\n\t\tcase \"separator\":\n\t\t\treturn <FlexSeparatorComponent component={component} />;\n\t\tcase \"spacer\":\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\theight: resolveSize((component as FlexSpacer).size, SPACING, \"0px\"),\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"filler\":\n\t\t\treturn <div style={{ flexGrow: (component as FlexFiller).flex ?? 1 }} />;\n\t\tcase \"icon\":\n\t\t\treturn <FlexIconComponent component={component} />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n","import type React from \"react\";\nimport { SPACING } from \"../constants\";\nimport type { FlexBox } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexComponentRenderer } from \"./FlexComponentRenderer\";\n\nexport function FlexBoxComponent({ component }: { component: FlexBox }) {\n\tconst isVertical = component.layout === \"vertical\";\n\tconst isBaseline = component.layout === \"baseline\";\n\n\tconst style: React.CSSProperties = {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: isVertical ? \"column\" : \"row\",\n\t\talignItems: isBaseline\n\t\t\t? \"baseline\"\n\t\t\t: (component.alignItems ?? (isVertical ? \"stretch\" : \"center\")),\n\t\tjustifyContent: component.justifyContent,\n\t\tgap: resolveSize(component.spacing, SPACING, undefined),\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tpadding: resolveSize(component.paddingAll, SPACING, undefined),\n\t\tpaddingTop: resolveSize(component.paddingTop, SPACING, undefined),\n\t\tpaddingBottom: resolveSize(component.paddingBottom, SPACING, undefined),\n\t\tpaddingLeft: resolveSize(component.paddingStart, SPACING, undefined),\n\t\tpaddingRight: resolveSize(component.paddingEnd, SPACING, undefined),\n\t\tbackgroundColor: component.backgroundColor,\n\t\tborderRadius: component.cornerRadius,\n\t\tborderColor: component.borderColor,\n\t\tborderWidth: component.borderWidth,\n\t\tborderStyle: component.borderWidth ? \"solid\" : undefined,\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 ${component.flex === 0 ? \"auto\" : \"0%\"}` : undefined,\n\t};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t{component.contents.map((child, i) => (\n\t\t\t\t<FlexComponentRenderer key={i} component={child} />\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","import type React from \"react\";\nimport { BUBBLE_WIDTH } from \"../constants\";\nimport type { FlexBubble, FlexContainer } from \"../types\";\nimport { FlexBoxComponent } from \"./FlexBox\";\nimport { FlexImageComponent } from \"./FlexImage\";\n\nexport interface FlexMessagePreviewProps {\n\t/** Flex Message JSON(bubble or carousel) */\n\tjson: FlexContainer;\n\t/** 追加 className */\n\tclassName?: string;\n\t/** 追加 inline style */\n\tstyle?: React.CSSProperties;\n}\n\nfunction BubbleRenderer({\n\tjson,\n\tclassName,\n\tstyle: extraStyle,\n}: {\n\tjson: FlexBubble;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n}) {\n\tconst width = BUBBLE_WIDTH[json.size ?? \"mega\"];\n\tconst headerBg = json.styles?.header?.backgroundColor;\n\tconst bodyBg = json.styles?.body?.backgroundColor;\n\tconst footerBg = json.styles?.footer?.backgroundColor;\n\tconst footerSep = json.styles?.footer?.separator;\n\tconst bodySep = json.styles?.body?.separator;\n\tconst heroSep = json.styles?.hero?.separator;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={className}\n\t\t\tstyle={{\n\t\t\t\twidth,\n\t\t\t\tmaxWidth: \"100%\",\n\t\t\t\tborderRadius: \"16px\",\n\t\t\t\toverflow: \"hidden\",\n\t\t\t\tbackgroundColor: \"#ffffff\",\n\t\t\t\tboxShadow: \"0 1px 6px rgba(0,0,0,0.12)\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t\t...extraStyle,\n\t\t\t}}\n\t\t>\n\t\t\t{/* Header */}\n\t\t\t{json.header && (\n\t\t\t\t<div style={{ padding: \"16px 16px 0\", backgroundColor: headerBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.header} />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Hero separator */}\n\t\t\t{heroSep && <hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />}\n\n\t\t\t{/* Hero */}\n\t\t\t{json.hero && <FlexImageComponent component={json.hero} />}\n\n\t\t\t{/* Body separator */}\n\t\t\t{bodySep && <hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />}\n\n\t\t\t{/* Body */}\n\t\t\t{json.body && (\n\t\t\t\t<div style={{ padding: \"16px\", backgroundColor: bodyBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.body} />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Footer separator */}\n\t\t\t{footerSep && (\n\t\t\t\t<hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />\n\t\t\t)}\n\n\t\t\t{/* Footer */}\n\t\t\t{json.footer && (\n\t\t\t\t<div style={{ padding: \"8px 16px 16px\", backgroundColor: footerBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.footer} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport function FlexMessagePreview({\n\tjson,\n\tclassName,\n\tstyle,\n}: FlexMessagePreviewProps) {\n\tif (json.type === \"carousel\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\toverflowX: \"auto\",\n\t\t\t\t\tscrollSnapType: \"x mandatory\",\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{json.contents.map((bubble, i) => (\n\t\t\t\t\t<div key={i} style={{ scrollSnapAlign: \"start\", flexShrink: 0 }}>\n\t\t\t\t\t\t<BubbleRenderer json={bubble} />\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t}\n\treturn <BubbleRenderer json={json} className={className} style={style} />;\n}\n","import type React from \"react\";\n\nexport interface LineChatFrameProps {\n\tchildren: React.ReactNode;\n\t/** トーク画面のヘッダー名(デフォルト: \"トーク\") */\n\taccountName?: string;\n\t/** アバター画像 URL(未指定時は緑の BOT アイコン) */\n\tavatarUrl?: string;\n\t/** フレーム幅(デフォルト: 375) */\n\twidth?: number;\n}\n\nfunction DefaultAvatar() {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: 36,\n\t\t\t\theight: 36,\n\t\t\t\tborderRadius: \"50%\",\n\t\t\t\tbackgroundColor: \"#00B900\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"center\",\n\t\t\t\tflexShrink: 0,\n\t\t\t\tcolor: \"#fff\",\n\t\t\t\tfontSize: 11,\n\t\t\t\tfontWeight: 700,\n\t\t\t}}\n\t\t>\n\t\t\tBOT\n\t\t</div>\n\t);\n}\n\nexport function LineChatFrame({\n\tchildren,\n\taccountName = \"トーク\",\n\tavatarUrl,\n\twidth = 375,\n}: LineChatFrameProps) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth,\n\t\t\t\tminHeight: 500,\n\t\t\t\tborderRadius: 12,\n\t\t\t\toverflow: \"hidden\",\n\t\t\t\tboxShadow: \"0 4px 24px rgba(0,0,0,0.18)\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t}}\n\t\t>\n\t\t\t{/* Header bar */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#00B900\",\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\tpadding: \"12px 16px\",\n\t\t\t\t\tfontSize: 16,\n\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\twidth=\"18\"\n\t\t\t\t\theight=\"18\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\trole=\"img\"\n\t\t\t\t\taria-label=\"Back\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M15 18l-6-6 6-6\" />\n\t\t\t\t</svg>\n\t\t\t\t<span>{accountName}</span>\n\t\t\t</div>\n\n\t\t\t{/* Chat area */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#7B9EB0\",\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tpadding: \"16px 12px\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* Message row */}\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\t\tgap: 8,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{avatarUrl ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={avatarUrl}\n\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: 36,\n\t\t\t\t\t\t\t\theight: 36,\n\t\t\t\t\t\t\t\tborderRadius: \"50%\",\n\t\t\t\t\t\t\t\tobjectFit: \"cover\",\n\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<DefaultAvatar />\n\t\t\t\t\t)}\n\t\t\t\t\t<div style={{ maxWidth: \"calc(100% - 52px)\" }}>{children}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Input bar */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#F7F7F7\",\n\t\t\t\t\tpadding: \"10px 12px\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\tborderTop: \"1px solid #E0E0E0\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\tbackgroundColor: \"#fff\",\n\t\t\t\t\t\tborderRadius: 20,\n\t\t\t\t\t\tpadding: \"8px 14px\",\n\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\tcolor: \"#999\",\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tAa\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","export function LineTextBubble({ text }: { text: string }) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"#ffffff\",\n\t\t\t\tborderRadius: \"16px 16px 16px 4px\",\n\t\t\t\tpadding: \"10px 14px\",\n\t\t\t\tfontSize: 14,\n\t\t\t\tlineHeight: 1.5,\n\t\t\t\tcolor: \"#111111\",\n\t\t\t\twhiteSpace: \"pre-wrap\",\n\t\t\t\twordBreak: \"break-word\",\n\t\t\t\tmaxWidth: 260,\n\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t}}\n\t\t>\n\t\t\t{text}\n\t\t</div>\n\t);\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -67,7 +67,7 @@ function FlexButtonComponent({ component }) {
|
|
|
67
67
|
display: "flex",
|
|
68
68
|
alignItems: "center",
|
|
69
69
|
justifyContent: "center",
|
|
70
|
-
borderRadius: isPrimary || component.style === "secondary" ? "
|
|
70
|
+
borderRadius: isPrimary || component.style === "secondary" ? "8px" : void 0,
|
|
71
71
|
backgroundColor: isPrimary ? component.color ?? "#17C950" : isLink ? "transparent" : "#EFEFEF",
|
|
72
72
|
color: isPrimary ? "#ffffff" : isLink ? component.color ?? "#42659A" : "#111111",
|
|
73
73
|
fontSize: TEXT_SIZE.sm,
|
|
@@ -75,7 +75,7 @@ function FlexButtonComponent({ component }) {
|
|
|
75
75
|
border: "none",
|
|
76
76
|
cursor: "pointer",
|
|
77
77
|
marginTop: resolveSize(component.margin, SPACING, void 0),
|
|
78
|
-
flex: component.flex !== void 0 ? `${component.flex} 0 0
|
|
78
|
+
flex: component.flex !== void 0 ? `${component.flex} 0 ${component.flex === 0 ? "auto" : "0%"}` : void 0
|
|
79
79
|
};
|
|
80
80
|
return /* @__PURE__ */ jsx("button", { type: "button", style, children: component.action.label });
|
|
81
81
|
}
|
|
@@ -95,7 +95,7 @@ function FlexImageComponent({ component }) {
|
|
|
95
95
|
const style = {
|
|
96
96
|
width: component.size === "full" ? "100%" : resolveSize(component.size, IMAGE_SIZE, IMAGE_SIZE.md),
|
|
97
97
|
marginTop: resolveSize(component.margin, SPACING, void 0),
|
|
98
|
-
flex: component.flex !== void 0 ? `${component.flex} 0 0
|
|
98
|
+
flex: component.flex !== void 0 ? `${component.flex} 0 ${component.flex === 0 ? "auto" : "0%"}` : void 0,
|
|
99
99
|
backgroundColor: component.backgroundColor
|
|
100
100
|
};
|
|
101
101
|
const innerStyle = {
|
|
@@ -153,7 +153,7 @@ function FlexTextComponent({ component }) {
|
|
|
153
153
|
fontWeight: component.weight === "bold" ? 700 : 400,
|
|
154
154
|
textAlign: alignMap[component.align ?? "start"] ?? "left",
|
|
155
155
|
marginTop: resolveSize(component.margin, SPACING, void 0),
|
|
156
|
-
flex: component.flex !== void 0 ? `${component.flex} 0 0
|
|
156
|
+
flex: component.flex !== void 0 ? `${component.flex} 0 ${component.flex === 0 ? "auto" : "0%"}` : void 0,
|
|
157
157
|
alignSelf: component.gravity ? gravityMap[component.gravity] : void 0,
|
|
158
158
|
textDecoration: component.decoration !== "none" ? component.decoration : void 0,
|
|
159
159
|
fontStyle: component.style,
|
|
@@ -230,7 +230,7 @@ function FlexBoxComponent({ component }) {
|
|
|
230
230
|
borderColor: component.borderColor,
|
|
231
231
|
borderWidth: component.borderWidth,
|
|
232
232
|
borderStyle: component.borderWidth ? "solid" : void 0,
|
|
233
|
-
flex: component.flex !== void 0 ? `${component.flex} 0 0
|
|
233
|
+
flex: component.flex !== void 0 ? `${component.flex} 0 ${component.flex === 0 ? "auto" : "0%"}` : void 0
|
|
234
234
|
};
|
|
235
235
|
return /* @__PURE__ */ jsx("div", { style, children: component.contents.map((child, i) => /* @__PURE__ */ jsx(FlexComponentRenderer, { component: child }, i)) });
|
|
236
236
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/utils.ts","../src/components/FlexButton.tsx","../src/components/FlexIcon.tsx","../src/components/FlexImage.tsx","../src/components/FlexSeparator.tsx","../src/components/FlexSpan.tsx","../src/components/FlexText.tsx","../src/components/FlexComponentRenderer.tsx","../src/components/FlexBox.tsx","../src/components/FlexMessagePreview.tsx","../src/components/LineChatFrame.tsx","../src/components/LineTextBubble.tsx"],"names":["jsx","jsxs"],"mappings":";;;AAAO,IAAM,SAAA,GAAoC;AAAA,EAChD,GAAA,EAAK,MAAA;AAAA,EACL,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,GAAA,EAAK,MAAA;AAAA,EACL,KAAA,EAAO,MAAA;AAAA,EACP,KAAA,EAAO,MAAA;AAAA,EACP,KAAA,EAAO;AACR,CAAA;AAEO,IAAM,OAAA,GAAkC;AAAA,EAC9C,IAAA,EAAM,KAAA;AAAA,EACN,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,GAAA,EAAK;AACN,CAAA;AAEO,IAAM,UAAA,GAAqC;AAAA,EACjD,GAAA,EAAK,MAAA;AAAA,EACL,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,GAAA,EAAK,OAAA;AAAA,EACL,KAAA,EAAO,OAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM;AACP,CAAA;AAEO,IAAM,SAAA,GAAoC;AAAA,EAChD,GAAA,EAAK,MAAA;AAAA,EACL,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,GAAA,EAAK;AACN,CAAA;AAEO,IAAM,YAAA,GAAuC;AAAA,EACnD,IAAA,EAAM,OAAA;AAAA,EACN,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM;AACP,CAAA;;;ACrDO,SAAS,WAAA,CACf,KAAA,EACA,GAAA,EACA,QAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAO,OAAO,QAAA;AACnB,EAAA,OAAO,GAAA,CAAI,KAAK,CAAA,IAAK,KAAA;AACtB;ACFO,SAAS,mBAAA,CAAoB,EAAE,SAAA,EAAU,EAA8B;AAC7E,EAAA,MAAM,SAAA,GAAY,UAAU,KAAA,KAAU,SAAA;AACtC,EAAA,MAAM,MAAA,GAAS,UAAU,KAAA,KAAU,MAAA;AACnC,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,MAAA,KAAW,IAAA,GAAO,MAAA,GAAS,MAAA;AAEpD,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,KAAA,EAAO,MAAA;AAAA,IACP,MAAA;AAAA,IACA,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,YAAA,EACC,SAAA,IAAa,SAAA,CAAU,KAAA,KAAU,cAAc,QAAA,GAAW,MAAA;AAAA,IAC3D,iBAAiB,SAAA,GACb,SAAA,CAAU,KAAA,IAAS,SAAA,GACpB,SACC,aAAA,GACA,SAAA;AAAA,IACJ,OAAO,SAAA,GACJ,SAAA,GACA,MAAA,GACE,SAAA,CAAU,SAAS,SAAA,GACpB,SAAA;AAAA,IACJ,UAAU,SAAA,CAAU,EAAA;AAAA,IACpB,UAAA,EAAY,GAAA;AAAA,IACZ,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ,SAAA;AAAA,IACR,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,MAAM,SAAA,CAAU,IAAA,KAAS,SAAY,CAAA,EAAG,SAAA,CAAU,IAAI,CAAA,KAAA,CAAA,GAAU;AAAA,GACjE;AAEA,EAAA,2BACE,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,KAAA,EACpB,QAAA,EAAA,SAAA,CAAU,OAAO,KAAA,EACnB,CAAA;AAEF;ACrCO,SAAS,iBAAA,CAAkB,EAAE,SAAA,EAAU,EAA4B;AACzE,EAAA,MAAM,OAAO,WAAA,CAAY,SAAA,CAAU,IAAA,EAAM,SAAA,EAAW,UAAU,EAAE,CAAA;AAChE,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAK,SAAA,CAAU,GAAA;AAAA,MACf,GAAA,EAAI,EAAA;AAAA,MACJ,OAAO,EAAE,KAAA,EAAO,MAAM,MAAA,EAAQ,IAAA,EAAM,WAAW,SAAA;AAAU;AAAA,GAC1D;AAEF;ACRO,SAAS,kBAAA,CAAmB,EAAE,SAAA,EAAU,EAA6B;AAC3E,EAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAA,CAAK,SAAA,CAAU,WAAA,IAAe,KAAA,EAAO,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAErE,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,KAAA,EACC,SAAA,CAAU,IAAA,KAAS,MAAA,GAChB,MAAA,GACA,YAAY,SAAA,CAAU,IAAA,EAAM,UAAA,EAAY,UAAA,CAAW,EAAE,CAAA;AAAA,IACzD,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,MAAM,SAAA,CAAU,IAAA,KAAS,SAAY,CAAA,EAAG,SAAA,CAAU,IAAI,CAAA,KAAA,CAAA,GAAU,MAAA;AAAA,IAChE,iBAAiB,SAAA,CAAU;AAAA,GAC5B;AAEA,EAAA,MAAM,UAAA,GAAkC;AAAA,IACvC,KAAA,EAAO,MAAA;AAAA,IACP,UAAA,EAAY,CAAA,EAAI,CAAA,GAAI,CAAA,GAAK,GAAG,CAAA,CAAA,CAAA;AAAA,IAC5B,QAAA,EAAU,UAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACX;AAEA,EAAA,MAAM,QAAA,GAAgC;AAAA,IACrC,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA,IACR,SAAA,EAAW,SAAA,CAAU,UAAA,KAAe,KAAA,GAAQ,SAAA,GAAY;AAAA,GACzD;AAEA,EAAA,uBACCA,IAAC,KAAA,EAAA,EAAI,KAAA,EACJ,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,UAAA,EACX,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAU,GAAA,EAAK,GAAA,EAAI,IAAG,KAAA,EAAO,QAAA,EAAU,GAClD,CAAA,EACD,CAAA;AAEF;ACpCO,SAAS,sBAAA,CAAuB;AAAA,EACtC;AACD,CAAA,EAEG;AACF,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,SAAA,EAAW,CAAA,UAAA,EAAa,SAAA,CAAU,KAAA,IAAS,SAAS,CAAA,CAAA;AAAA,IACpD,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,KAAA,EAAO;AAAA,GACR;AACA,EAAA,uBAAOA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAc,CAAA;AAC1B;ACXO,SAAS,iBAAA,CAAkB,EAAE,IAAA,EAAK,EAAuB;AAC/D,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,QAAA,EAAU,WAAA,CAAY,IAAA,CAAK,IAAA,EAAM,WAAW,SAAS,CAAA;AAAA,IACrD,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,UAAA,EAAY,IAAA,CAAK,MAAA,KAAW,MAAA,GAAS,GAAA,GAAM,MAAA;AAAA,IAC3C,cAAA,EAAgB,IAAA,CAAK,UAAA,KAAe,MAAA,GAAS,KAAK,UAAA,GAAa,MAAA;AAAA,IAC/D,WAAW,IAAA,CAAK;AAAA,GACjB;AACA,EAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAe,eAAK,IAAA,EAAK,CAAA;AACvC;ACRA,IAAM,QAAA,GAAmC;AAAA,EACxC,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK;AACN,CAAA;AAEA,IAAM,UAAA,GAAqC;AAAA,EAC1C,GAAA,EAAK,YAAA;AAAA,EACL,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ;AACT,CAAA;AAEO,SAAS,iBAAA,CAAkB,EAAE,SAAA,EAAU,EAA4B;AACzE,EAAA,MAAM,QAAA,GAAW,SAAA,CAAU,QAAA,IAAY,SAAA,CAAU,SAAS,MAAA,GAAS,CAAA;AACnE,EAAA,MAAM,WAAW,WAAA,CAAY,SAAA,CAAU,IAAA,EAAM,SAAA,EAAW,UAAU,EAAE,CAAA;AAEpE,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,QAAA;AAAA,IACA,OAAO,SAAA,CAAU,KAAA;AAAA,IACjB,UAAA,EAAY,SAAA,CAAU,MAAA,KAAW,MAAA,GAAS,GAAA,GAAM,GAAA;AAAA,IAChD,SAAA,EAAY,QAAA,CAAS,SAAA,CAAU,KAAA,IAAS,OAAO,CAAA,IAC9C,MAAA;AAAA,IACD,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,MAAM,SAAA,CAAU,IAAA,KAAS,SAAY,CAAA,EAAG,SAAA,CAAU,IAAI,CAAA,KAAA,CAAA,GAAU,MAAA;AAAA,IAChE,WAAW,SAAA,CAAU,OAAA,GAAU,UAAA,CAAW,SAAA,CAAU,OAAO,CAAA,GAAI,MAAA;AAAA,IAC/D,cAAA,EACC,SAAA,CAAU,UAAA,KAAe,MAAA,GAAS,UAAU,UAAA,GAAa,MAAA;AAAA,IAC1D,WAAW,SAAA,CAAU,KAAA;AAAA,IACrB,UAAA,EAAY,UAAU,WAAA,IAAe,GAAA;AAAA,IACrC,GAAI,CAAC,SAAA,CAAU,IAAA,GACZ;AAAA,MACA,QAAA,EAAU,QAAA;AAAA,MACV,YAAA,EAAc,UAAA;AAAA,MACd,UAAA,EAAY;AAAA,KACb,GACC;AAAA,MACA,UAAA,EAAY,UAAA;AAAA,MACZ,SAAA,EAAW;AAAA,KACZ;AAAA,IACF,GAAI,SAAA,CAAU,QAAA,IAAY,SAAA,CAAU,IAAA,GACjC;AAAA,MACA,OAAA,EAAS,aAAA;AAAA,MACT,iBAAiB,SAAA,CAAU,QAAA;AAAA,MAC3B,eAAA,EAAiB,UAAA;AAAA,MACjB,QAAA,EAAU;AAAA,QAEV;AAAC,GACL;AAEA,EAAA,IAAI,QAAA,EAAU;AACb,IAAA,uBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EACD,QAAA,EAAA,SAAA,CAAU,UAAU,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,qBAC/BA,GAAAA,CAAC,iBAAA,EAAA,EAA0B,IAAA,EAAA,EAAH,CAAe,CACvC,CAAA,EACF,CAAA;AAAA,EAEF;AAEA,EAAA,uBAAOA,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAe,oBAAU,IAAA,EAAK,CAAA;AACzC;ACxDO,SAAS,qBAAA,CAAsB;AAAA,EACrC;AACD,CAAA,EAEG;AACF,EAAA,QAAQ,UAAU,IAAA;AAAM,IACvB,KAAK,KAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAsB,CAAA;AAAA,IAChD,KAAK,MAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAsB,CAAA;AAAA,IACjD,KAAK,OAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,kBAAA,EAAA,EAAmB,SAAA,EAAsB,CAAA;AAAA,IAClD,KAAK,QAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,SAAA,EAAsB,CAAA;AAAA,IACnD,KAAK,WAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,sBAAA,EAAA,EAAuB,SAAA,EAAsB,CAAA;AAAA,IACtD,KAAK,QAAA;AACJ,MAAA,uBACCA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACN,QAAA,EAAU,CAAA;AAAA,YACV,MAAA,EAAQ,WAAA,CAAa,SAAA,CAAyB,IAAA,EAAM,SAAS,KAAK;AAAA;AACnE;AAAA,OACD;AAAA,IAEF,KAAK,QAAA;AACJ,MAAA,uBAAOA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAW,SAAA,CAAyB,IAAA,IAAQ,CAAA,EAAE,EAAG,CAAA;AAAA,IACvE,KAAK,MAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAsB,CAAA;AAAA,IACjD;AACC,MAAA,OAAO,IAAA;AAAA;AAEV;ACpCO,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAU,EAA2B;AACvE,EAAA,MAAM,UAAA,GAAa,UAAU,MAAA,KAAW,UAAA;AACxC,EAAA,MAAM,UAAA,GAAa,UAAU,MAAA,KAAW,UAAA;AAExC,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,aAAa,QAAA,GAAW,KAAA;AAAA,IACvC,YAAY,UAAA,GACT,UAAA,GACC,SAAA,CAAU,UAAA,KAAe,aAAa,SAAA,GAAY,QAAA,CAAA;AAAA,IACtD,gBAAgB,SAAA,CAAU,cAAA;AAAA,IAC1B,GAAA,EAAK,WAAA,CAAY,SAAA,CAAU,OAAA,EAAS,SAAS,MAAS,CAAA;AAAA,IACtD,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,OAAA,EAAS,WAAA,CAAY,SAAA,CAAU,UAAA,EAAY,SAAS,MAAS,CAAA;AAAA,IAC7D,UAAA,EAAY,WAAA,CAAY,SAAA,CAAU,UAAA,EAAY,SAAS,MAAS,CAAA;AAAA,IAChE,aAAA,EAAe,WAAA,CAAY,SAAA,CAAU,aAAA,EAAe,SAAS,MAAS,CAAA;AAAA,IACtE,WAAA,EAAa,WAAA,CAAY,SAAA,CAAU,YAAA,EAAc,SAAS,MAAS,CAAA;AAAA,IACnE,YAAA,EAAc,WAAA,CAAY,SAAA,CAAU,UAAA,EAAY,SAAS,MAAS,CAAA;AAAA,IAClE,iBAAiB,SAAA,CAAU,eAAA;AAAA,IAC3B,cAAc,SAAA,CAAU,YAAA;AAAA,IACxB,aAAa,SAAA,CAAU,WAAA;AAAA,IACvB,aAAa,SAAA,CAAU,WAAA;AAAA,IACvB,WAAA,EAAa,SAAA,CAAU,WAAA,GAAc,OAAA,GAAU,MAAA;AAAA,IAC/C,MAAM,SAAA,CAAU,IAAA,KAAS,SAAY,CAAA,EAAG,SAAA,CAAU,IAAI,CAAA,KAAA,CAAA,GAAU;AAAA,GACjE;AAEA,EAAA,uBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,EAAA,SAAA,CAAU,SAAS,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,qBAC/BA,GAAAA,CAAC,qBAAA,EAAA,EAA8B,WAAW,KAAA,EAAA,EAAd,CAAqB,CACjD,CAAA,EACF,CAAA;AAEF;ACxBA,SAAS,cAAA,CAAe;AAAA,EACvB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,EAAO;AACR,CAAA,EAIG;AACF,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,IAAA,IAAQ,MAAM,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,EAAQ,MAAA,EAAQ,eAAA;AACtC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,eAAA;AAClC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,EAAQ,MAAA,EAAQ,eAAA;AACtC,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,EAAQ,MAAA,EAAQ,SAAA;AACvC,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,SAAA;AACnC,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,SAAA;AAEnC,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,KAAA;AAAA,QACA,QAAA,EAAU,MAAA;AAAA,QACV,YAAA,EAAc,MAAA;AAAA,QACd,QAAA,EAAU,QAAA;AAAA,QACV,eAAA,EAAiB,SAAA;AAAA,QACjB,SAAA,EAAW,4BAAA;AAAA,QACX,UAAA,EACC,oFAAA;AAAA,QACD,GAAG;AAAA,OACJ;AAAA,MAGC,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,0BACLA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,aAAA,EAAe,eAAA,EAAiB,QAAA,IACtD,QAAA,kBAAAA,GAAAA,CAAC,oBAAiB,SAAA,EAAW,IAAA,CAAK,QAAQ,CAAA,EAC3C,CAAA;AAAA,QAIA,OAAA,oBAAWA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAqB,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAA;AAAA,QAGrE,KAAK,IAAA,oBAAQA,IAAC,kBAAA,EAAA,EAAmB,SAAA,EAAW,KAAK,IAAA,EAAM,CAAA;AAAA,QAGvD,OAAA,oBAAWA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAqB,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAA;AAAA,QAGrE,KAAK,IAAA,oBACLA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,eAAA,EAAiB,MAAA,IAC/C,QAAA,kBAAAA,GAAAA,CAAC,oBAAiB,SAAA,EAAW,IAAA,CAAK,MAAM,CAAA,EACzC,CAAA;AAAA,QAIA,SAAA,oBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAqB,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAA;AAAA,QAI1D,KAAK,MAAA,oBACLA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,eAAA,EAAiB,eAAA,EAAiB,QAAA,IACxD,QAAA,kBAAAA,GAAAA,CAAC,oBAAiB,SAAA,EAAW,IAAA,CAAK,QAAQ,CAAA,EAC3C;AAAA;AAAA;AAAA,GAEF;AAEF;AAEO,SAAS,kBAAA,CAAmB;AAAA,EAClC,IAAA;AAAA,EACA,SAAA;AAAA,EACA;AACD,CAAA,EAA4B;AAC3B,EAAA,IAAI,IAAA,CAAK,SAAS,UAAA,EAAY;AAC7B,IAAA,uBACCA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACN,OAAA,EAAS,MAAA;AAAA,UACT,GAAA,EAAK,CAAA;AAAA,UACL,SAAA,EAAW,MAAA;AAAA,UACX,cAAA,EAAgB,aAAA;AAAA,UAChB,GAAG;AAAA,SACJ;AAAA,QAEC,QAAA,EAAA,IAAA,CAAK,SAAS,GAAA,CAAI,CAAC,QAAQ,CAAA,qBAC3BA,GAAAA,CAAC,KAAA,EAAA,EAAY,KAAA,EAAO,EAAE,iBAAiB,OAAA,EAAS,UAAA,EAAY,CAAA,EAAE,EAC7D,QAAA,kBAAAA,GAAAA,CAAC,kBAAe,IAAA,EAAM,MAAA,EAAQ,CAAA,EAAA,EADrB,CAEV,CACA;AAAA;AAAA,KACF;AAAA,EAEF;AACA,EAAA,uBAAOA,GAAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAY,WAAsB,KAAA,EAAc,CAAA;AACxE;ACnGA,SAAS,aAAA,GAAgB;AACxB,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,YAAA,EAAc,KAAA;AAAA,QACd,eAAA,EAAiB,SAAA;AAAA,QACjB,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,UAAA,EAAY,CAAA;AAAA,QACZ,KAAA,EAAO,MAAA;AAAA,QACP,QAAA,EAAU,EAAA;AAAA,QACV,UAAA,EAAY;AAAA,OACb;AAAA,MACA,QAAA,EAAA;AAAA;AAAA,GAED;AAEF;AAEO,SAAS,aAAA,CAAc;AAAA,EAC7B,QAAA;AAAA,EACA,WAAA,GAAc,oBAAA;AAAA,EACd,SAAA;AAAA,EACA,KAAA,GAAQ;AACT,CAAA,EAAuB;AACtB,EAAA,uBACCC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,KAAA;AAAA,QACA,SAAA,EAAW,GAAA;AAAA,QACX,YAAA,EAAc,EAAA;AAAA,QACd,QAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,6BAAA;AAAA,QACX,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,UAAA,EACC;AAAA,OACF;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,eAAA,EAAiB,SAAA;AAAA,cACjB,KAAA,EAAO,MAAA;AAAA,cACP,OAAA,EAAS,WAAA;AAAA,cACT,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,GAAA;AAAA,cACZ,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAK;AAAA,aACN;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAD,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACA,KAAA,EAAM,IAAA;AAAA,kBACN,MAAA,EAAO,IAAA;AAAA,kBACP,OAAA,EAAQ,WAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,MAAA,EAAO,cAAA;AAAA,kBACP,WAAA,EAAY,KAAA;AAAA,kBACZ,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe,OAAA;AAAA,kBACf,IAAA,EAAK,KAAA;AAAA,kBACL,YAAA,EAAW,MAAA;AAAA,kBAEX,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iBAAA,EAAkB;AAAA;AAAA,eAC3B;AAAA,8BACAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,WAAA,EAAY;AAAA;AAAA;AAAA,SACpB;AAAA,wBAGAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,eAAA,EAAiB,SAAA;AAAA,cACjB,IAAA,EAAM,CAAA;AAAA,cACN,OAAA,EAAS,WAAA;AAAA,cACT,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe,QAAA;AAAA,cACf,GAAA,EAAK;AAAA,aACN;AAAA,YAGA,QAAA,kBAAAC,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,KAAA,EAAO;AAAA,kBACN,OAAA,EAAS,MAAA;AAAA,kBACT,UAAA,EAAY,UAAA;AAAA,kBACZ,GAAA,EAAK;AAAA,iBACN;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,SAAA,mBACAD,GAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACA,GAAA,EAAK,SAAA;AAAA,sBACL,GAAA,EAAI,EAAA;AAAA,sBACJ,KAAA,EAAO;AAAA,wBACN,KAAA,EAAO,EAAA;AAAA,wBACP,MAAA,EAAQ,EAAA;AAAA,wBACR,YAAA,EAAc,KAAA;AAAA,wBACd,SAAA,EAAW,OAAA;AAAA,wBACX,UAAA,EAAY;AAAA;AACb;AAAA,mBACD,mBAEAA,GAAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAAA,kCAEhBA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,mBAAA,IAAwB,QAAA,EAAS;AAAA;AAAA;AAAA;AAC1D;AAAA,SACD;AAAA,wBAGAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,eAAA,EAAiB,SAAA;AAAA,cACjB,OAAA,EAAS,WAAA;AAAA,cACT,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAK,CAAA;AAAA,cACL,SAAA,EAAW;AAAA,aACZ;AAAA,YAEA,QAAA,kBAAAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,KAAA,EAAO;AAAA,kBACN,IAAA,EAAM,CAAA;AAAA,kBACN,eAAA,EAAiB,MAAA;AAAA,kBACjB,YAAA,EAAc,EAAA;AAAA,kBACd,OAAA,EAAS,UAAA;AAAA,kBACT,QAAA,EAAU,EAAA;AAAA,kBACV,KAAA,EAAO;AAAA,iBACR;AAAA,gBACA,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AACD;AAAA;AAAA,GACD;AAEF;ACpJO,SAAS,cAAA,CAAe,EAAE,IAAA,EAAK,EAAqB;AAC1D,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,eAAA,EAAiB,SAAA;AAAA,QACjB,YAAA,EAAc,oBAAA;AAAA,QACd,OAAA,EAAS,WAAA;AAAA,QACT,QAAA,EAAU,EAAA;AAAA,QACV,UAAA,EAAY,GAAA;AAAA,QACZ,KAAA,EAAO,SAAA;AAAA,QACP,UAAA,EAAY,UAAA;AAAA,QACZ,SAAA,EAAW,YAAA;AAAA,QACX,QAAA,EAAU,GAAA;AAAA,QACV,SAAA,EAAW,4BAAA;AAAA,QACX,UAAA,EACC;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACF;AAEF","file":"index.js","sourcesContent":["export const TEXT_SIZE: Record<string, string> = {\n\txxs: \"11px\",\n\txs: \"12px\",\n\tsm: \"13px\",\n\tmd: \"14px\",\n\tlg: \"16px\",\n\txl: \"18px\",\n\txxl: \"22px\",\n\t\"3xl\": \"26px\",\n\t\"4xl\": \"30px\",\n\t\"5xl\": \"36px\",\n};\n\nexport const SPACING: Record<string, string> = {\n\tnone: \"0px\",\n\txs: \"2px\",\n\tsm: \"4px\",\n\tmd: \"8px\",\n\tlg: \"12px\",\n\txl: \"16px\",\n\txxl: \"20px\",\n};\n\nexport const IMAGE_SIZE: Record<string, string> = {\n\txxs: \"40px\",\n\txs: \"60px\",\n\tsm: \"80px\",\n\tmd: \"100px\",\n\tlg: \"120px\",\n\txl: \"150px\",\n\txxl: \"180px\",\n\t\"3xl\": \"220px\",\n\t\"4xl\": \"260px\",\n\t\"5xl\": \"300px\",\n\tfull: \"100%\",\n};\n\nexport const ICON_SIZE: Record<string, string> = {\n\txxs: \"14px\",\n\txs: \"16px\",\n\tsm: \"18px\",\n\tmd: \"20px\",\n\tlg: \"24px\",\n\txl: \"28px\",\n\txxl: \"32px\",\n};\n\nexport const BUBBLE_WIDTH: Record<string, string> = {\n\tnano: \"120px\",\n\tmicro: \"150px\",\n\tkilo: \"230px\",\n\tmega: \"300px\",\n\tgiga: \"386px\",\n};\n","export function resolveSize(\n\tvalue: string | undefined,\n\tmap: Record<string, string>,\n\tfallback?: string,\n): string | undefined {\n\tif (!value) return fallback;\n\treturn map[value] ?? value;\n}\n","import type React from \"react\";\nimport { SPACING, TEXT_SIZE } from \"../constants\";\nimport type { FlexButton } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexButtonComponent({ component }: { component: FlexButton }) {\n\tconst isPrimary = component.style === \"primary\";\n\tconst isLink = component.style === \"link\";\n\tconst height = component.height === \"sm\" ? \"40px\" : \"52px\";\n\n\tconst style: React.CSSProperties = {\n\t\twidth: \"100%\",\n\t\theight,\n\t\tdisplay: \"flex\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tborderRadius:\n\t\t\tisPrimary || component.style === \"secondary\" ? \"9999px\" : undefined,\n\t\tbackgroundColor: isPrimary\n\t\t\t? (component.color ?? \"#17C950\")\n\t\t\t: isLink\n\t\t\t\t? \"transparent\"\n\t\t\t\t: \"#EFEFEF\",\n\t\tcolor: isPrimary\n\t\t\t? \"#ffffff\"\n\t\t\t: isLink\n\t\t\t\t? (component.color ?? \"#42659A\")\n\t\t\t\t: \"#111111\",\n\t\tfontSize: TEXT_SIZE.sm,\n\t\tfontWeight: 600,\n\t\tborder: \"none\",\n\t\tcursor: \"pointer\",\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 0%` : undefined,\n\t};\n\n\treturn (\n\t\t<button type=\"button\" style={style}>\n\t\t\t{component.action.label}\n\t\t</button>\n\t);\n}\n","import { ICON_SIZE } from \"../constants\";\nimport type { FlexIcon } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexIconComponent({ component }: { component: FlexIcon }) {\n\tconst size = resolveSize(component.size, ICON_SIZE, ICON_SIZE.md);\n\treturn (\n\t\t<img\n\t\t\tsrc={component.url}\n\t\t\talt=\"\"\n\t\t\tstyle={{ width: size, height: size, objectFit: \"contain\" }}\n\t\t/>\n\t);\n}\n","import type React from \"react\";\nimport { IMAGE_SIZE, SPACING } from \"../constants\";\nimport type { FlexImage } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexImageComponent({ component }: { component: FlexImage }) {\n\tconst [w, h] = (component.aspectRatio ?? \"1:1\").split(\":\").map(Number);\n\n\tconst style: React.CSSProperties = {\n\t\twidth:\n\t\t\tcomponent.size === \"full\"\n\t\t\t\t? \"100%\"\n\t\t\t\t: resolveSize(component.size, IMAGE_SIZE, IMAGE_SIZE.md),\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 0%` : undefined,\n\t\tbackgroundColor: component.backgroundColor,\n\t};\n\n\tconst innerStyle: React.CSSProperties = {\n\t\twidth: \"100%\",\n\t\tpaddingTop: `${(h / w) * 100}%`,\n\t\tposition: \"relative\",\n\t\toverflow: \"hidden\",\n\t};\n\n\tconst imgStyle: React.CSSProperties = {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t\tobjectFit: component.aspectMode === \"fit\" ? \"contain\" : \"cover\",\n\t};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t<div style={innerStyle}>\n\t\t\t\t<img src={component.url} alt=\"\" style={imgStyle} />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import type React from \"react\";\nimport { SPACING } from \"../constants\";\nimport type { FlexSeparator } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexSeparatorComponent({\n\tcomponent,\n}: {\n\tcomponent: FlexSeparator;\n}) {\n\tconst style: React.CSSProperties = {\n\t\tborderTop: `1px solid ${component.color ?? \"#E5E5E5\"}`,\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\twidth: \"100%\",\n\t};\n\treturn <hr style={style} />;\n}\n","import type React from \"react\";\nimport { TEXT_SIZE } from \"../constants\";\nimport type { FlexSpan } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexSpanComponent({ span }: { span: FlexSpan }) {\n\tconst style: React.CSSProperties = {\n\t\tfontSize: resolveSize(span.size, TEXT_SIZE, \"inherit\"),\n\t\tcolor: span.color,\n\t\tfontWeight: span.weight === \"bold\" ? 700 : undefined,\n\t\ttextDecoration: span.decoration !== \"none\" ? span.decoration : undefined,\n\t\tfontStyle: span.style,\n\t};\n\treturn <span style={style}>{span.text}</span>;\n}\n","import type React from \"react\";\nimport { SPACING, TEXT_SIZE } from \"../constants\";\nimport type { FlexText } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexSpanComponent } from \"./FlexSpan\";\n\nconst alignMap: Record<string, string> = {\n\tstart: \"left\",\n\tcenter: \"center\",\n\tend: \"right\",\n};\n\nconst gravityMap: Record<string, string> = {\n\ttop: \"flex-start\",\n\tcenter: \"center\",\n\tbottom: \"flex-end\",\n};\n\nexport function FlexTextComponent({ component }: { component: FlexText }) {\n\tconst hasSpans = component.contents && component.contents.length > 0;\n\tconst fontSize = resolveSize(component.size, TEXT_SIZE, TEXT_SIZE.md);\n\n\tconst style: React.CSSProperties = {\n\t\tfontSize,\n\t\tcolor: component.color,\n\t\tfontWeight: component.weight === \"bold\" ? 700 : 400,\n\t\ttextAlign: (alignMap[component.align ?? \"start\"] ??\n\t\t\t\"left\") as React.CSSProperties[\"textAlign\"],\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 0%` : undefined,\n\t\talignSelf: component.gravity ? gravityMap[component.gravity] : undefined,\n\t\ttextDecoration:\n\t\t\tcomponent.decoration !== \"none\" ? component.decoration : undefined,\n\t\tfontStyle: component.style,\n\t\tlineHeight: component.lineSpacing ?? 1.4,\n\t\t...(!component.wrap\n\t\t\t? {\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\ttextOverflow: \"ellipsis\",\n\t\t\t\t\twhiteSpace: \"nowrap\",\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\twhiteSpace: \"pre-wrap\",\n\t\t\t\t\twordBreak: \"break-word\",\n\t\t\t\t}),\n\t\t...(component.maxLines && component.wrap\n\t\t\t? {\n\t\t\t\t\tdisplay: \"-webkit-box\",\n\t\t\t\t\tWebkitLineClamp: component.maxLines,\n\t\t\t\t\tWebkitBoxOrient: \"vertical\" as const,\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n\n\tif (hasSpans) {\n\t\treturn (\n\t\t\t<p style={style}>\n\t\t\t\t{component.contents?.map((span, i) => (\n\t\t\t\t\t<FlexSpanComponent key={i} span={span} />\n\t\t\t\t))}\n\t\t\t</p>\n\t\t);\n\t}\n\n\treturn <p style={style}>{component.text}</p>;\n}\n","import { SPACING } from \"../constants\";\nimport type { FlexComponentType, FlexFiller, FlexSpacer } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexBoxComponent } from \"./FlexBox\";\nimport { FlexButtonComponent } from \"./FlexButton\";\nimport { FlexIconComponent } from \"./FlexIcon\";\nimport { FlexImageComponent } from \"./FlexImage\";\nimport { FlexSeparatorComponent } from \"./FlexSeparator\";\nimport { FlexTextComponent } from \"./FlexText\";\n\nexport function FlexComponentRenderer({\n\tcomponent,\n}: {\n\tcomponent: FlexComponentType;\n}) {\n\tswitch (component.type) {\n\t\tcase \"box\":\n\t\t\treturn <FlexBoxComponent component={component} />;\n\t\tcase \"text\":\n\t\t\treturn <FlexTextComponent component={component} />;\n\t\tcase \"image\":\n\t\t\treturn <FlexImageComponent component={component} />;\n\t\tcase \"button\":\n\t\t\treturn <FlexButtonComponent component={component} />;\n\t\tcase \"separator\":\n\t\t\treturn <FlexSeparatorComponent component={component} />;\n\t\tcase \"spacer\":\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\theight: resolveSize((component as FlexSpacer).size, SPACING, \"0px\"),\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"filler\":\n\t\t\treturn <div style={{ flexGrow: (component as FlexFiller).flex ?? 1 }} />;\n\t\tcase \"icon\":\n\t\t\treturn <FlexIconComponent component={component} />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n","import type React from \"react\";\nimport { SPACING } from \"../constants\";\nimport type { FlexBox } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexComponentRenderer } from \"./FlexComponentRenderer\";\n\nexport function FlexBoxComponent({ component }: { component: FlexBox }) {\n\tconst isVertical = component.layout === \"vertical\";\n\tconst isBaseline = component.layout === \"baseline\";\n\n\tconst style: React.CSSProperties = {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: isVertical ? \"column\" : \"row\",\n\t\talignItems: isBaseline\n\t\t\t? \"baseline\"\n\t\t\t: (component.alignItems ?? (isVertical ? \"stretch\" : \"center\")),\n\t\tjustifyContent: component.justifyContent,\n\t\tgap: resolveSize(component.spacing, SPACING, undefined),\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tpadding: resolveSize(component.paddingAll, SPACING, undefined),\n\t\tpaddingTop: resolveSize(component.paddingTop, SPACING, undefined),\n\t\tpaddingBottom: resolveSize(component.paddingBottom, SPACING, undefined),\n\t\tpaddingLeft: resolveSize(component.paddingStart, SPACING, undefined),\n\t\tpaddingRight: resolveSize(component.paddingEnd, SPACING, undefined),\n\t\tbackgroundColor: component.backgroundColor,\n\t\tborderRadius: component.cornerRadius,\n\t\tborderColor: component.borderColor,\n\t\tborderWidth: component.borderWidth,\n\t\tborderStyle: component.borderWidth ? \"solid\" : undefined,\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 0%` : undefined,\n\t};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t{component.contents.map((child, i) => (\n\t\t\t\t<FlexComponentRenderer key={i} component={child} />\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","import type React from \"react\";\nimport { BUBBLE_WIDTH } from \"../constants\";\nimport type { FlexBubble, FlexContainer } from \"../types\";\nimport { FlexBoxComponent } from \"./FlexBox\";\nimport { FlexImageComponent } from \"./FlexImage\";\n\nexport interface FlexMessagePreviewProps {\n\t/** Flex Message JSON(bubble or carousel) */\n\tjson: FlexContainer;\n\t/** 追加 className */\n\tclassName?: string;\n\t/** 追加 inline style */\n\tstyle?: React.CSSProperties;\n}\n\nfunction BubbleRenderer({\n\tjson,\n\tclassName,\n\tstyle: extraStyle,\n}: {\n\tjson: FlexBubble;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n}) {\n\tconst width = BUBBLE_WIDTH[json.size ?? \"mega\"];\n\tconst headerBg = json.styles?.header?.backgroundColor;\n\tconst bodyBg = json.styles?.body?.backgroundColor;\n\tconst footerBg = json.styles?.footer?.backgroundColor;\n\tconst footerSep = json.styles?.footer?.separator;\n\tconst bodySep = json.styles?.body?.separator;\n\tconst heroSep = json.styles?.hero?.separator;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={className}\n\t\t\tstyle={{\n\t\t\t\twidth,\n\t\t\t\tmaxWidth: \"100%\",\n\t\t\t\tborderRadius: \"16px\",\n\t\t\t\toverflow: \"hidden\",\n\t\t\t\tbackgroundColor: \"#ffffff\",\n\t\t\t\tboxShadow: \"0 1px 6px rgba(0,0,0,0.12)\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t\t...extraStyle,\n\t\t\t}}\n\t\t>\n\t\t\t{/* Header */}\n\t\t\t{json.header && (\n\t\t\t\t<div style={{ padding: \"16px 16px 0\", backgroundColor: headerBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.header} />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Hero separator */}\n\t\t\t{heroSep && <hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />}\n\n\t\t\t{/* Hero */}\n\t\t\t{json.hero && <FlexImageComponent component={json.hero} />}\n\n\t\t\t{/* Body separator */}\n\t\t\t{bodySep && <hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />}\n\n\t\t\t{/* Body */}\n\t\t\t{json.body && (\n\t\t\t\t<div style={{ padding: \"16px\", backgroundColor: bodyBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.body} />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Footer separator */}\n\t\t\t{footerSep && (\n\t\t\t\t<hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />\n\t\t\t)}\n\n\t\t\t{/* Footer */}\n\t\t\t{json.footer && (\n\t\t\t\t<div style={{ padding: \"8px 16px 16px\", backgroundColor: footerBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.footer} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport function FlexMessagePreview({\n\tjson,\n\tclassName,\n\tstyle,\n}: FlexMessagePreviewProps) {\n\tif (json.type === \"carousel\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\toverflowX: \"auto\",\n\t\t\t\t\tscrollSnapType: \"x mandatory\",\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{json.contents.map((bubble, i) => (\n\t\t\t\t\t<div key={i} style={{ scrollSnapAlign: \"start\", flexShrink: 0 }}>\n\t\t\t\t\t\t<BubbleRenderer json={bubble} />\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t}\n\treturn <BubbleRenderer json={json} className={className} style={style} />;\n}\n","import type React from \"react\";\n\nexport interface LineChatFrameProps {\n\tchildren: React.ReactNode;\n\t/** トーク画面のヘッダー名(デフォルト: \"トーク\") */\n\taccountName?: string;\n\t/** アバター画像 URL(未指定時は緑の BOT アイコン) */\n\tavatarUrl?: string;\n\t/** フレーム幅(デフォルト: 375) */\n\twidth?: number;\n}\n\nfunction DefaultAvatar() {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: 36,\n\t\t\t\theight: 36,\n\t\t\t\tborderRadius: \"50%\",\n\t\t\t\tbackgroundColor: \"#00B900\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"center\",\n\t\t\t\tflexShrink: 0,\n\t\t\t\tcolor: \"#fff\",\n\t\t\t\tfontSize: 11,\n\t\t\t\tfontWeight: 700,\n\t\t\t}}\n\t\t>\n\t\t\tBOT\n\t\t</div>\n\t);\n}\n\nexport function LineChatFrame({\n\tchildren,\n\taccountName = \"トーク\",\n\tavatarUrl,\n\twidth = 375,\n}: LineChatFrameProps) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth,\n\t\t\t\tminHeight: 500,\n\t\t\t\tborderRadius: 12,\n\t\t\t\toverflow: \"hidden\",\n\t\t\t\tboxShadow: \"0 4px 24px rgba(0,0,0,0.18)\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t}}\n\t\t>\n\t\t\t{/* Header bar */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#00B900\",\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\tpadding: \"12px 16px\",\n\t\t\t\t\tfontSize: 16,\n\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\twidth=\"18\"\n\t\t\t\t\theight=\"18\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\trole=\"img\"\n\t\t\t\t\taria-label=\"Back\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M15 18l-6-6 6-6\" />\n\t\t\t\t</svg>\n\t\t\t\t<span>{accountName}</span>\n\t\t\t</div>\n\n\t\t\t{/* Chat area */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#7B9EB0\",\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tpadding: \"16px 12px\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* Message row */}\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\t\tgap: 8,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{avatarUrl ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={avatarUrl}\n\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: 36,\n\t\t\t\t\t\t\t\theight: 36,\n\t\t\t\t\t\t\t\tborderRadius: \"50%\",\n\t\t\t\t\t\t\t\tobjectFit: \"cover\",\n\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<DefaultAvatar />\n\t\t\t\t\t)}\n\t\t\t\t\t<div style={{ maxWidth: \"calc(100% - 52px)\" }}>{children}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Input bar */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#F7F7F7\",\n\t\t\t\t\tpadding: \"10px 12px\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\tborderTop: \"1px solid #E0E0E0\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\tbackgroundColor: \"#fff\",\n\t\t\t\t\t\tborderRadius: 20,\n\t\t\t\t\t\tpadding: \"8px 14px\",\n\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\tcolor: \"#999\",\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tAa\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","export function LineTextBubble({ text }: { text: string }) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"#ffffff\",\n\t\t\t\tborderRadius: \"16px 16px 16px 4px\",\n\t\t\t\tpadding: \"10px 14px\",\n\t\t\t\tfontSize: 14,\n\t\t\t\tlineHeight: 1.5,\n\t\t\t\tcolor: \"#111111\",\n\t\t\t\twhiteSpace: \"pre-wrap\",\n\t\t\t\twordBreak: \"break-word\",\n\t\t\t\tmaxWidth: 260,\n\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t}}\n\t\t>\n\t\t\t{text}\n\t\t</div>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/utils.ts","../src/components/FlexButton.tsx","../src/components/FlexIcon.tsx","../src/components/FlexImage.tsx","../src/components/FlexSeparator.tsx","../src/components/FlexSpan.tsx","../src/components/FlexText.tsx","../src/components/FlexComponentRenderer.tsx","../src/components/FlexBox.tsx","../src/components/FlexMessagePreview.tsx","../src/components/LineChatFrame.tsx","../src/components/LineTextBubble.tsx"],"names":["jsx","jsxs"],"mappings":";;;AAAO,IAAM,SAAA,GAAoC;AAAA,EAChD,GAAA,EAAK,MAAA;AAAA,EACL,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,GAAA,EAAK,MAAA;AAAA,EACL,KAAA,EAAO,MAAA;AAAA,EACP,KAAA,EAAO,MAAA;AAAA,EACP,KAAA,EAAO;AACR,CAAA;AAEO,IAAM,OAAA,GAAkC;AAAA,EAC9C,IAAA,EAAM,KAAA;AAAA,EACN,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,GAAA,EAAK;AACN,CAAA;AAEO,IAAM,UAAA,GAAqC;AAAA,EACjD,GAAA,EAAK,MAAA;AAAA,EACL,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,GAAA,EAAK,OAAA;AAAA,EACL,KAAA,EAAO,OAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM;AACP,CAAA;AAEO,IAAM,SAAA,GAAoC;AAAA,EAChD,GAAA,EAAK,MAAA;AAAA,EACL,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,GAAA,EAAK;AACN,CAAA;AAEO,IAAM,YAAA,GAAuC;AAAA,EACnD,IAAA,EAAM,OAAA;AAAA,EACN,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM;AACP,CAAA;;;ACrDO,SAAS,WAAA,CACf,KAAA,EACA,GAAA,EACA,QAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAO,OAAO,QAAA;AACnB,EAAA,OAAO,GAAA,CAAI,KAAK,CAAA,IAAK,KAAA;AACtB;ACFO,SAAS,mBAAA,CAAoB,EAAE,SAAA,EAAU,EAA8B;AAC7E,EAAA,MAAM,SAAA,GAAY,UAAU,KAAA,KAAU,SAAA;AACtC,EAAA,MAAM,MAAA,GAAS,UAAU,KAAA,KAAU,MAAA;AACnC,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,MAAA,KAAW,IAAA,GAAO,MAAA,GAAS,MAAA;AAEpD,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,KAAA,EAAO,MAAA;AAAA,IACP,MAAA;AAAA,IACA,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,YAAA,EACC,SAAA,IAAa,SAAA,CAAU,KAAA,KAAU,cAAc,KAAA,GAAQ,MAAA;AAAA,IACxD,iBAAiB,SAAA,GACb,SAAA,CAAU,KAAA,IAAS,SAAA,GACpB,SACC,aAAA,GACA,SAAA;AAAA,IACJ,OAAO,SAAA,GACJ,SAAA,GACA,MAAA,GACE,SAAA,CAAU,SAAS,SAAA,GACpB,SAAA;AAAA,IACJ,UAAU,SAAA,CAAU,EAAA;AAAA,IACpB,UAAA,EAAY,GAAA;AAAA,IACZ,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ,SAAA;AAAA,IACR,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,IAAA,EAAM,SAAA,CAAU,IAAA,KAAS,MAAA,GAAY,CAAA,EAAG,SAAA,CAAU,IAAI,CAAA,GAAA,EAAM,SAAA,CAAU,IAAA,KAAS,CAAA,GAAI,MAAA,GAAS,IAAI,CAAA,CAAA,GAAK;AAAA,GACtG;AAEA,EAAA,2BACE,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,KAAA,EACpB,QAAA,EAAA,SAAA,CAAU,OAAO,KAAA,EACnB,CAAA;AAEF;ACrCO,SAAS,iBAAA,CAAkB,EAAE,SAAA,EAAU,EAA4B;AACzE,EAAA,MAAM,OAAO,WAAA,CAAY,SAAA,CAAU,IAAA,EAAM,SAAA,EAAW,UAAU,EAAE,CAAA;AAChE,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAK,SAAA,CAAU,GAAA;AAAA,MACf,GAAA,EAAI,EAAA;AAAA,MACJ,OAAO,EAAE,KAAA,EAAO,MAAM,MAAA,EAAQ,IAAA,EAAM,WAAW,SAAA;AAAU;AAAA,GAC1D;AAEF;ACRO,SAAS,kBAAA,CAAmB,EAAE,SAAA,EAAU,EAA6B;AAC3E,EAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAA,CAAK,SAAA,CAAU,WAAA,IAAe,KAAA,EAAO,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAErE,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,KAAA,EACC,SAAA,CAAU,IAAA,KAAS,MAAA,GAChB,MAAA,GACA,YAAY,SAAA,CAAU,IAAA,EAAM,UAAA,EAAY,UAAA,CAAW,EAAE,CAAA;AAAA,IACzD,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,IAAA,EAAM,SAAA,CAAU,IAAA,KAAS,MAAA,GAAY,CAAA,EAAG,SAAA,CAAU,IAAI,CAAA,GAAA,EAAM,SAAA,CAAU,IAAA,KAAS,CAAA,GAAI,MAAA,GAAS,IAAI,CAAA,CAAA,GAAK,MAAA;AAAA,IACrG,iBAAiB,SAAA,CAAU;AAAA,GAC5B;AAEA,EAAA,MAAM,UAAA,GAAkC;AAAA,IACvC,KAAA,EAAO,MAAA;AAAA,IACP,UAAA,EAAY,CAAA,EAAI,CAAA,GAAI,CAAA,GAAK,GAAG,CAAA,CAAA,CAAA;AAAA,IAC5B,QAAA,EAAU,UAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACX;AAEA,EAAA,MAAM,QAAA,GAAgC;AAAA,IACrC,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA,IACR,SAAA,EAAW,SAAA,CAAU,UAAA,KAAe,KAAA,GAAQ,SAAA,GAAY;AAAA,GACzD;AAEA,EAAA,uBACCA,IAAC,KAAA,EAAA,EAAI,KAAA,EACJ,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,UAAA,EACX,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAU,GAAA,EAAK,GAAA,EAAI,IAAG,KAAA,EAAO,QAAA,EAAU,GAClD,CAAA,EACD,CAAA;AAEF;ACpCO,SAAS,sBAAA,CAAuB;AAAA,EACtC;AACD,CAAA,EAEG;AACF,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,SAAA,EAAW,CAAA,UAAA,EAAa,SAAA,CAAU,KAAA,IAAS,SAAS,CAAA,CAAA;AAAA,IACpD,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,KAAA,EAAO;AAAA,GACR;AACA,EAAA,uBAAOA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAc,CAAA;AAC1B;ACXO,SAAS,iBAAA,CAAkB,EAAE,IAAA,EAAK,EAAuB;AAC/D,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,QAAA,EAAU,WAAA,CAAY,IAAA,CAAK,IAAA,EAAM,WAAW,SAAS,CAAA;AAAA,IACrD,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,UAAA,EAAY,IAAA,CAAK,MAAA,KAAW,MAAA,GAAS,GAAA,GAAM,MAAA;AAAA,IAC3C,cAAA,EAAgB,IAAA,CAAK,UAAA,KAAe,MAAA,GAAS,KAAK,UAAA,GAAa,MAAA;AAAA,IAC/D,WAAW,IAAA,CAAK;AAAA,GACjB;AACA,EAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAe,eAAK,IAAA,EAAK,CAAA;AACvC;ACRA,IAAM,QAAA,GAAmC;AAAA,EACxC,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK;AACN,CAAA;AAEA,IAAM,UAAA,GAAqC;AAAA,EAC1C,GAAA,EAAK,YAAA;AAAA,EACL,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ;AACT,CAAA;AAEO,SAAS,iBAAA,CAAkB,EAAE,SAAA,EAAU,EAA4B;AACzE,EAAA,MAAM,QAAA,GAAW,SAAA,CAAU,QAAA,IAAY,SAAA,CAAU,SAAS,MAAA,GAAS,CAAA;AACnE,EAAA,MAAM,WAAW,WAAA,CAAY,SAAA,CAAU,IAAA,EAAM,SAAA,EAAW,UAAU,EAAE,CAAA;AAEpE,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,QAAA;AAAA,IACA,OAAO,SAAA,CAAU,KAAA;AAAA,IACjB,UAAA,EAAY,SAAA,CAAU,MAAA,KAAW,MAAA,GAAS,GAAA,GAAM,GAAA;AAAA,IAChD,SAAA,EAAY,QAAA,CAAS,SAAA,CAAU,KAAA,IAAS,OAAO,CAAA,IAC9C,MAAA;AAAA,IACD,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,IAAA,EAAM,SAAA,CAAU,IAAA,KAAS,MAAA,GAAY,CAAA,EAAG,SAAA,CAAU,IAAI,CAAA,GAAA,EAAM,SAAA,CAAU,IAAA,KAAS,CAAA,GAAI,MAAA,GAAS,IAAI,CAAA,CAAA,GAAK,MAAA;AAAA,IACrG,WAAW,SAAA,CAAU,OAAA,GAAU,UAAA,CAAW,SAAA,CAAU,OAAO,CAAA,GAAI,MAAA;AAAA,IAC/D,cAAA,EACC,SAAA,CAAU,UAAA,KAAe,MAAA,GAAS,UAAU,UAAA,GAAa,MAAA;AAAA,IAC1D,WAAW,SAAA,CAAU,KAAA;AAAA,IACrB,UAAA,EAAY,UAAU,WAAA,IAAe,GAAA;AAAA,IACrC,GAAI,CAAC,SAAA,CAAU,IAAA,GACZ;AAAA,MACA,QAAA,EAAU,QAAA;AAAA,MACV,YAAA,EAAc,UAAA;AAAA,MACd,UAAA,EAAY;AAAA,KACb,GACC;AAAA,MACA,UAAA,EAAY,UAAA;AAAA,MACZ,SAAA,EAAW;AAAA,KACZ;AAAA,IACF,GAAI,SAAA,CAAU,QAAA,IAAY,SAAA,CAAU,IAAA,GACjC;AAAA,MACA,OAAA,EAAS,aAAA;AAAA,MACT,iBAAiB,SAAA,CAAU,QAAA;AAAA,MAC3B,eAAA,EAAiB,UAAA;AAAA,MACjB,QAAA,EAAU;AAAA,QAEV;AAAC,GACL;AAEA,EAAA,IAAI,QAAA,EAAU;AACb,IAAA,uBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EACD,QAAA,EAAA,SAAA,CAAU,UAAU,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,qBAC/BA,GAAAA,CAAC,iBAAA,EAAA,EAA0B,IAAA,EAAA,EAAH,CAAe,CACvC,CAAA,EACF,CAAA;AAAA,EAEF;AAEA,EAAA,uBAAOA,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAe,oBAAU,IAAA,EAAK,CAAA;AACzC;ACxDO,SAAS,qBAAA,CAAsB;AAAA,EACrC;AACD,CAAA,EAEG;AACF,EAAA,QAAQ,UAAU,IAAA;AAAM,IACvB,KAAK,KAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAsB,CAAA;AAAA,IAChD,KAAK,MAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAsB,CAAA;AAAA,IACjD,KAAK,OAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,kBAAA,EAAA,EAAmB,SAAA,EAAsB,CAAA;AAAA,IAClD,KAAK,QAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,SAAA,EAAsB,CAAA;AAAA,IACnD,KAAK,WAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,sBAAA,EAAA,EAAuB,SAAA,EAAsB,CAAA;AAAA,IACtD,KAAK,QAAA;AACJ,MAAA,uBACCA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACN,QAAA,EAAU,CAAA;AAAA,YACV,MAAA,EAAQ,WAAA,CAAa,SAAA,CAAyB,IAAA,EAAM,SAAS,KAAK;AAAA;AACnE;AAAA,OACD;AAAA,IAEF,KAAK,QAAA;AACJ,MAAA,uBAAOA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAW,SAAA,CAAyB,IAAA,IAAQ,CAAA,EAAE,EAAG,CAAA;AAAA,IACvE,KAAK,MAAA;AACJ,MAAA,uBAAOA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAsB,CAAA;AAAA,IACjD;AACC,MAAA,OAAO,IAAA;AAAA;AAEV;ACpCO,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAU,EAA2B;AACvE,EAAA,MAAM,UAAA,GAAa,UAAU,MAAA,KAAW,UAAA;AACxC,EAAA,MAAM,UAAA,GAAa,UAAU,MAAA,KAAW,UAAA;AAExC,EAAA,MAAM,KAAA,GAA6B;AAAA,IAClC,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,aAAa,QAAA,GAAW,KAAA;AAAA,IACvC,YAAY,UAAA,GACT,UAAA,GACC,SAAA,CAAU,UAAA,KAAe,aAAa,SAAA,GAAY,QAAA,CAAA;AAAA,IACtD,gBAAgB,SAAA,CAAU,cAAA;AAAA,IAC1B,GAAA,EAAK,WAAA,CAAY,SAAA,CAAU,OAAA,EAAS,SAAS,MAAS,CAAA;AAAA,IACtD,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAS,CAAA;AAAA,IAC3D,OAAA,EAAS,WAAA,CAAY,SAAA,CAAU,UAAA,EAAY,SAAS,MAAS,CAAA;AAAA,IAC7D,UAAA,EAAY,WAAA,CAAY,SAAA,CAAU,UAAA,EAAY,SAAS,MAAS,CAAA;AAAA,IAChE,aAAA,EAAe,WAAA,CAAY,SAAA,CAAU,aAAA,EAAe,SAAS,MAAS,CAAA;AAAA,IACtE,WAAA,EAAa,WAAA,CAAY,SAAA,CAAU,YAAA,EAAc,SAAS,MAAS,CAAA;AAAA,IACnE,YAAA,EAAc,WAAA,CAAY,SAAA,CAAU,UAAA,EAAY,SAAS,MAAS,CAAA;AAAA,IAClE,iBAAiB,SAAA,CAAU,eAAA;AAAA,IAC3B,cAAc,SAAA,CAAU,YAAA;AAAA,IACxB,aAAa,SAAA,CAAU,WAAA;AAAA,IACvB,aAAa,SAAA,CAAU,WAAA;AAAA,IACvB,WAAA,EAAa,SAAA,CAAU,WAAA,GAAc,OAAA,GAAU,MAAA;AAAA,IAC/C,IAAA,EAAM,SAAA,CAAU,IAAA,KAAS,MAAA,GAAY,CAAA,EAAG,SAAA,CAAU,IAAI,CAAA,GAAA,EAAM,SAAA,CAAU,IAAA,KAAS,CAAA,GAAI,MAAA,GAAS,IAAI,CAAA,CAAA,GAAK;AAAA,GACtG;AAEA,EAAA,uBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,EAAA,SAAA,CAAU,SAAS,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,qBAC/BA,GAAAA,CAAC,qBAAA,EAAA,EAA8B,WAAW,KAAA,EAAA,EAAd,CAAqB,CACjD,CAAA,EACF,CAAA;AAEF;ACxBA,SAAS,cAAA,CAAe;AAAA,EACvB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,EAAO;AACR,CAAA,EAIG;AACF,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,IAAA,IAAQ,MAAM,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,EAAQ,MAAA,EAAQ,eAAA;AACtC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,eAAA;AAClC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,EAAQ,MAAA,EAAQ,eAAA;AACtC,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,EAAQ,MAAA,EAAQ,SAAA;AACvC,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,SAAA;AACnC,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,SAAA;AAEnC,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,KAAA;AAAA,QACA,QAAA,EAAU,MAAA;AAAA,QACV,YAAA,EAAc,MAAA;AAAA,QACd,QAAA,EAAU,QAAA;AAAA,QACV,eAAA,EAAiB,SAAA;AAAA,QACjB,SAAA,EAAW,4BAAA;AAAA,QACX,UAAA,EACC,oFAAA;AAAA,QACD,GAAG;AAAA,OACJ;AAAA,MAGC,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,0BACLA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,aAAA,EAAe,eAAA,EAAiB,QAAA,IACtD,QAAA,kBAAAA,GAAAA,CAAC,oBAAiB,SAAA,EAAW,IAAA,CAAK,QAAQ,CAAA,EAC3C,CAAA;AAAA,QAIA,OAAA,oBAAWA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAqB,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAA;AAAA,QAGrE,KAAK,IAAA,oBAAQA,IAAC,kBAAA,EAAA,EAAmB,SAAA,EAAW,KAAK,IAAA,EAAM,CAAA;AAAA,QAGvD,OAAA,oBAAWA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAqB,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAA;AAAA,QAGrE,KAAK,IAAA,oBACLA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,eAAA,EAAiB,MAAA,IAC/C,QAAA,kBAAAA,GAAAA,CAAC,oBAAiB,SAAA,EAAW,IAAA,CAAK,MAAM,CAAA,EACzC,CAAA;AAAA,QAIA,SAAA,oBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAqB,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAA;AAAA,QAI1D,KAAK,MAAA,oBACLA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,eAAA,EAAiB,eAAA,EAAiB,QAAA,IACxD,QAAA,kBAAAA,GAAAA,CAAC,oBAAiB,SAAA,EAAW,IAAA,CAAK,QAAQ,CAAA,EAC3C;AAAA;AAAA;AAAA,GAEF;AAEF;AAEO,SAAS,kBAAA,CAAmB;AAAA,EAClC,IAAA;AAAA,EACA,SAAA;AAAA,EACA;AACD,CAAA,EAA4B;AAC3B,EAAA,IAAI,IAAA,CAAK,SAAS,UAAA,EAAY;AAC7B,IAAA,uBACCA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACN,OAAA,EAAS,MAAA;AAAA,UACT,GAAA,EAAK,CAAA;AAAA,UACL,SAAA,EAAW,MAAA;AAAA,UACX,cAAA,EAAgB,aAAA;AAAA,UAChB,GAAG;AAAA,SACJ;AAAA,QAEC,QAAA,EAAA,IAAA,CAAK,SAAS,GAAA,CAAI,CAAC,QAAQ,CAAA,qBAC3BA,GAAAA,CAAC,KAAA,EAAA,EAAY,KAAA,EAAO,EAAE,iBAAiB,OAAA,EAAS,UAAA,EAAY,CAAA,EAAE,EAC7D,QAAA,kBAAAA,GAAAA,CAAC,kBAAe,IAAA,EAAM,MAAA,EAAQ,CAAA,EAAA,EADrB,CAEV,CACA;AAAA;AAAA,KACF;AAAA,EAEF;AACA,EAAA,uBAAOA,GAAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAY,WAAsB,KAAA,EAAc,CAAA;AACxE;ACnGA,SAAS,aAAA,GAAgB;AACxB,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,YAAA,EAAc,KAAA;AAAA,QACd,eAAA,EAAiB,SAAA;AAAA,QACjB,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,UAAA,EAAY,CAAA;AAAA,QACZ,KAAA,EAAO,MAAA;AAAA,QACP,QAAA,EAAU,EAAA;AAAA,QACV,UAAA,EAAY;AAAA,OACb;AAAA,MACA,QAAA,EAAA;AAAA;AAAA,GAED;AAEF;AAEO,SAAS,aAAA,CAAc;AAAA,EAC7B,QAAA;AAAA,EACA,WAAA,GAAc,oBAAA;AAAA,EACd,SAAA;AAAA,EACA,KAAA,GAAQ;AACT,CAAA,EAAuB;AACtB,EAAA,uBACCC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,KAAA;AAAA,QACA,SAAA,EAAW,GAAA;AAAA,QACX,YAAA,EAAc,EAAA;AAAA,QACd,QAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,6BAAA;AAAA,QACX,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,UAAA,EACC;AAAA,OACF;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,eAAA,EAAiB,SAAA;AAAA,cACjB,KAAA,EAAO,MAAA;AAAA,cACP,OAAA,EAAS,WAAA;AAAA,cACT,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,GAAA;AAAA,cACZ,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAK;AAAA,aACN;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAD,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACA,KAAA,EAAM,IAAA;AAAA,kBACN,MAAA,EAAO,IAAA;AAAA,kBACP,OAAA,EAAQ,WAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,MAAA,EAAO,cAAA;AAAA,kBACP,WAAA,EAAY,KAAA;AAAA,kBACZ,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe,OAAA;AAAA,kBACf,IAAA,EAAK,KAAA;AAAA,kBACL,YAAA,EAAW,MAAA;AAAA,kBAEX,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iBAAA,EAAkB;AAAA;AAAA,eAC3B;AAAA,8BACAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,WAAA,EAAY;AAAA;AAAA;AAAA,SACpB;AAAA,wBAGAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,eAAA,EAAiB,SAAA;AAAA,cACjB,IAAA,EAAM,CAAA;AAAA,cACN,OAAA,EAAS,WAAA;AAAA,cACT,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe,QAAA;AAAA,cACf,GAAA,EAAK;AAAA,aACN;AAAA,YAGA,QAAA,kBAAAC,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,KAAA,EAAO;AAAA,kBACN,OAAA,EAAS,MAAA;AAAA,kBACT,UAAA,EAAY,UAAA;AAAA,kBACZ,GAAA,EAAK;AAAA,iBACN;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,SAAA,mBACAD,GAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACA,GAAA,EAAK,SAAA;AAAA,sBACL,GAAA,EAAI,EAAA;AAAA,sBACJ,KAAA,EAAO;AAAA,wBACN,KAAA,EAAO,EAAA;AAAA,wBACP,MAAA,EAAQ,EAAA;AAAA,wBACR,YAAA,EAAc,KAAA;AAAA,wBACd,SAAA,EAAW,OAAA;AAAA,wBACX,UAAA,EAAY;AAAA;AACb;AAAA,mBACD,mBAEAA,GAAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAAA,kCAEhBA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,mBAAA,IAAwB,QAAA,EAAS;AAAA;AAAA;AAAA;AAC1D;AAAA,SACD;AAAA,wBAGAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,eAAA,EAAiB,SAAA;AAAA,cACjB,OAAA,EAAS,WAAA;AAAA,cACT,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAK,CAAA;AAAA,cACL,SAAA,EAAW;AAAA,aACZ;AAAA,YAEA,QAAA,kBAAAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,KAAA,EAAO;AAAA,kBACN,IAAA,EAAM,CAAA;AAAA,kBACN,eAAA,EAAiB,MAAA;AAAA,kBACjB,YAAA,EAAc,EAAA;AAAA,kBACd,OAAA,EAAS,UAAA;AAAA,kBACT,QAAA,EAAU,EAAA;AAAA,kBACV,KAAA,EAAO;AAAA,iBACR;AAAA,gBACA,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AACD;AAAA;AAAA,GACD;AAEF;ACpJO,SAAS,cAAA,CAAe,EAAE,IAAA,EAAK,EAAqB;AAC1D,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,eAAA,EAAiB,SAAA;AAAA,QACjB,YAAA,EAAc,oBAAA;AAAA,QACd,OAAA,EAAS,WAAA;AAAA,QACT,QAAA,EAAU,EAAA;AAAA,QACV,UAAA,EAAY,GAAA;AAAA,QACZ,KAAA,EAAO,SAAA;AAAA,QACP,UAAA,EAAY,UAAA;AAAA,QACZ,SAAA,EAAW,YAAA;AAAA,QACX,QAAA,EAAU,GAAA;AAAA,QACV,SAAA,EAAW,4BAAA;AAAA,QACX,UAAA,EACC;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACF;AAEF","file":"index.js","sourcesContent":["export const TEXT_SIZE: Record<string, string> = {\n\txxs: \"11px\",\n\txs: \"12px\",\n\tsm: \"13px\",\n\tmd: \"14px\",\n\tlg: \"16px\",\n\txl: \"18px\",\n\txxl: \"22px\",\n\t\"3xl\": \"26px\",\n\t\"4xl\": \"30px\",\n\t\"5xl\": \"36px\",\n};\n\nexport const SPACING: Record<string, string> = {\n\tnone: \"0px\",\n\txs: \"2px\",\n\tsm: \"4px\",\n\tmd: \"8px\",\n\tlg: \"12px\",\n\txl: \"16px\",\n\txxl: \"20px\",\n};\n\nexport const IMAGE_SIZE: Record<string, string> = {\n\txxs: \"40px\",\n\txs: \"60px\",\n\tsm: \"80px\",\n\tmd: \"100px\",\n\tlg: \"120px\",\n\txl: \"150px\",\n\txxl: \"180px\",\n\t\"3xl\": \"220px\",\n\t\"4xl\": \"260px\",\n\t\"5xl\": \"300px\",\n\tfull: \"100%\",\n};\n\nexport const ICON_SIZE: Record<string, string> = {\n\txxs: \"14px\",\n\txs: \"16px\",\n\tsm: \"18px\",\n\tmd: \"20px\",\n\tlg: \"24px\",\n\txl: \"28px\",\n\txxl: \"32px\",\n};\n\nexport const BUBBLE_WIDTH: Record<string, string> = {\n\tnano: \"120px\",\n\tmicro: \"150px\",\n\tkilo: \"230px\",\n\tmega: \"300px\",\n\tgiga: \"386px\",\n};\n","export function resolveSize(\n\tvalue: string | undefined,\n\tmap: Record<string, string>,\n\tfallback?: string,\n): string | undefined {\n\tif (!value) return fallback;\n\treturn map[value] ?? value;\n}\n","import type React from \"react\";\nimport { SPACING, TEXT_SIZE } from \"../constants\";\nimport type { FlexButton } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexButtonComponent({ component }: { component: FlexButton }) {\n\tconst isPrimary = component.style === \"primary\";\n\tconst isLink = component.style === \"link\";\n\tconst height = component.height === \"sm\" ? \"40px\" : \"52px\";\n\n\tconst style: React.CSSProperties = {\n\t\twidth: \"100%\",\n\t\theight,\n\t\tdisplay: \"flex\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tborderRadius:\n\t\t\tisPrimary || component.style === \"secondary\" ? \"8px\" : undefined,\n\t\tbackgroundColor: isPrimary\n\t\t\t? (component.color ?? \"#17C950\")\n\t\t\t: isLink\n\t\t\t\t? \"transparent\"\n\t\t\t\t: \"#EFEFEF\",\n\t\tcolor: isPrimary\n\t\t\t? \"#ffffff\"\n\t\t\t: isLink\n\t\t\t\t? (component.color ?? \"#42659A\")\n\t\t\t\t: \"#111111\",\n\t\tfontSize: TEXT_SIZE.sm,\n\t\tfontWeight: 600,\n\t\tborder: \"none\",\n\t\tcursor: \"pointer\",\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 ${component.flex === 0 ? \"auto\" : \"0%\"}` : undefined,\n\t};\n\n\treturn (\n\t\t<button type=\"button\" style={style}>\n\t\t\t{component.action.label}\n\t\t</button>\n\t);\n}\n","import { ICON_SIZE } from \"../constants\";\nimport type { FlexIcon } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexIconComponent({ component }: { component: FlexIcon }) {\n\tconst size = resolveSize(component.size, ICON_SIZE, ICON_SIZE.md);\n\treturn (\n\t\t<img\n\t\t\tsrc={component.url}\n\t\t\talt=\"\"\n\t\t\tstyle={{ width: size, height: size, objectFit: \"contain\" }}\n\t\t/>\n\t);\n}\n","import type React from \"react\";\nimport { IMAGE_SIZE, SPACING } from \"../constants\";\nimport type { FlexImage } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexImageComponent({ component }: { component: FlexImage }) {\n\tconst [w, h] = (component.aspectRatio ?? \"1:1\").split(\":\").map(Number);\n\n\tconst style: React.CSSProperties = {\n\t\twidth:\n\t\t\tcomponent.size === \"full\"\n\t\t\t\t? \"100%\"\n\t\t\t\t: resolveSize(component.size, IMAGE_SIZE, IMAGE_SIZE.md),\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 ${component.flex === 0 ? \"auto\" : \"0%\"}` : undefined,\n\t\tbackgroundColor: component.backgroundColor,\n\t};\n\n\tconst innerStyle: React.CSSProperties = {\n\t\twidth: \"100%\",\n\t\tpaddingTop: `${(h / w) * 100}%`,\n\t\tposition: \"relative\",\n\t\toverflow: \"hidden\",\n\t};\n\n\tconst imgStyle: React.CSSProperties = {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t\tobjectFit: component.aspectMode === \"fit\" ? \"contain\" : \"cover\",\n\t};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t<div style={innerStyle}>\n\t\t\t\t<img src={component.url} alt=\"\" style={imgStyle} />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import type React from \"react\";\nimport { SPACING } from \"../constants\";\nimport type { FlexSeparator } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexSeparatorComponent({\n\tcomponent,\n}: {\n\tcomponent: FlexSeparator;\n}) {\n\tconst style: React.CSSProperties = {\n\t\tborderTop: `1px solid ${component.color ?? \"#E5E5E5\"}`,\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\twidth: \"100%\",\n\t};\n\treturn <hr style={style} />;\n}\n","import type React from \"react\";\nimport { TEXT_SIZE } from \"../constants\";\nimport type { FlexSpan } from \"../types\";\nimport { resolveSize } from \"../utils\";\n\nexport function FlexSpanComponent({ span }: { span: FlexSpan }) {\n\tconst style: React.CSSProperties = {\n\t\tfontSize: resolveSize(span.size, TEXT_SIZE, \"inherit\"),\n\t\tcolor: span.color,\n\t\tfontWeight: span.weight === \"bold\" ? 700 : undefined,\n\t\ttextDecoration: span.decoration !== \"none\" ? span.decoration : undefined,\n\t\tfontStyle: span.style,\n\t};\n\treturn <span style={style}>{span.text}</span>;\n}\n","import type React from \"react\";\nimport { SPACING, TEXT_SIZE } from \"../constants\";\nimport type { FlexText } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexSpanComponent } from \"./FlexSpan\";\n\nconst alignMap: Record<string, string> = {\n\tstart: \"left\",\n\tcenter: \"center\",\n\tend: \"right\",\n};\n\nconst gravityMap: Record<string, string> = {\n\ttop: \"flex-start\",\n\tcenter: \"center\",\n\tbottom: \"flex-end\",\n};\n\nexport function FlexTextComponent({ component }: { component: FlexText }) {\n\tconst hasSpans = component.contents && component.contents.length > 0;\n\tconst fontSize = resolveSize(component.size, TEXT_SIZE, TEXT_SIZE.md);\n\n\tconst style: React.CSSProperties = {\n\t\tfontSize,\n\t\tcolor: component.color,\n\t\tfontWeight: component.weight === \"bold\" ? 700 : 400,\n\t\ttextAlign: (alignMap[component.align ?? \"start\"] ??\n\t\t\t\"left\") as React.CSSProperties[\"textAlign\"],\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 ${component.flex === 0 ? \"auto\" : \"0%\"}` : undefined,\n\t\talignSelf: component.gravity ? gravityMap[component.gravity] : undefined,\n\t\ttextDecoration:\n\t\t\tcomponent.decoration !== \"none\" ? component.decoration : undefined,\n\t\tfontStyle: component.style,\n\t\tlineHeight: component.lineSpacing ?? 1.4,\n\t\t...(!component.wrap\n\t\t\t? {\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\ttextOverflow: \"ellipsis\",\n\t\t\t\t\twhiteSpace: \"nowrap\",\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\twhiteSpace: \"pre-wrap\",\n\t\t\t\t\twordBreak: \"break-word\",\n\t\t\t\t}),\n\t\t...(component.maxLines && component.wrap\n\t\t\t? {\n\t\t\t\t\tdisplay: \"-webkit-box\",\n\t\t\t\t\tWebkitLineClamp: component.maxLines,\n\t\t\t\t\tWebkitBoxOrient: \"vertical\" as const,\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n\n\tif (hasSpans) {\n\t\treturn (\n\t\t\t<p style={style}>\n\t\t\t\t{component.contents?.map((span, i) => (\n\t\t\t\t\t<FlexSpanComponent key={i} span={span} />\n\t\t\t\t))}\n\t\t\t</p>\n\t\t);\n\t}\n\n\treturn <p style={style}>{component.text}</p>;\n}\n","import { SPACING } from \"../constants\";\nimport type { FlexComponentType, FlexFiller, FlexSpacer } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexBoxComponent } from \"./FlexBox\";\nimport { FlexButtonComponent } from \"./FlexButton\";\nimport { FlexIconComponent } from \"./FlexIcon\";\nimport { FlexImageComponent } from \"./FlexImage\";\nimport { FlexSeparatorComponent } from \"./FlexSeparator\";\nimport { FlexTextComponent } from \"./FlexText\";\n\nexport function FlexComponentRenderer({\n\tcomponent,\n}: {\n\tcomponent: FlexComponentType;\n}) {\n\tswitch (component.type) {\n\t\tcase \"box\":\n\t\t\treturn <FlexBoxComponent component={component} />;\n\t\tcase \"text\":\n\t\t\treturn <FlexTextComponent component={component} />;\n\t\tcase \"image\":\n\t\t\treturn <FlexImageComponent component={component} />;\n\t\tcase \"button\":\n\t\t\treturn <FlexButtonComponent component={component} />;\n\t\tcase \"separator\":\n\t\t\treturn <FlexSeparatorComponent component={component} />;\n\t\tcase \"spacer\":\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\theight: resolveSize((component as FlexSpacer).size, SPACING, \"0px\"),\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"filler\":\n\t\t\treturn <div style={{ flexGrow: (component as FlexFiller).flex ?? 1 }} />;\n\t\tcase \"icon\":\n\t\t\treturn <FlexIconComponent component={component} />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n","import type React from \"react\";\nimport { SPACING } from \"../constants\";\nimport type { FlexBox } from \"../types\";\nimport { resolveSize } from \"../utils\";\nimport { FlexComponentRenderer } from \"./FlexComponentRenderer\";\n\nexport function FlexBoxComponent({ component }: { component: FlexBox }) {\n\tconst isVertical = component.layout === \"vertical\";\n\tconst isBaseline = component.layout === \"baseline\";\n\n\tconst style: React.CSSProperties = {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: isVertical ? \"column\" : \"row\",\n\t\talignItems: isBaseline\n\t\t\t? \"baseline\"\n\t\t\t: (component.alignItems ?? (isVertical ? \"stretch\" : \"center\")),\n\t\tjustifyContent: component.justifyContent,\n\t\tgap: resolveSize(component.spacing, SPACING, undefined),\n\t\tmarginTop: resolveSize(component.margin, SPACING, undefined),\n\t\tpadding: resolveSize(component.paddingAll, SPACING, undefined),\n\t\tpaddingTop: resolveSize(component.paddingTop, SPACING, undefined),\n\t\tpaddingBottom: resolveSize(component.paddingBottom, SPACING, undefined),\n\t\tpaddingLeft: resolveSize(component.paddingStart, SPACING, undefined),\n\t\tpaddingRight: resolveSize(component.paddingEnd, SPACING, undefined),\n\t\tbackgroundColor: component.backgroundColor,\n\t\tborderRadius: component.cornerRadius,\n\t\tborderColor: component.borderColor,\n\t\tborderWidth: component.borderWidth,\n\t\tborderStyle: component.borderWidth ? \"solid\" : undefined,\n\t\tflex: component.flex !== undefined ? `${component.flex} 0 ${component.flex === 0 ? \"auto\" : \"0%\"}` : undefined,\n\t};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t{component.contents.map((child, i) => (\n\t\t\t\t<FlexComponentRenderer key={i} component={child} />\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","import type React from \"react\";\nimport { BUBBLE_WIDTH } from \"../constants\";\nimport type { FlexBubble, FlexContainer } from \"../types\";\nimport { FlexBoxComponent } from \"./FlexBox\";\nimport { FlexImageComponent } from \"./FlexImage\";\n\nexport interface FlexMessagePreviewProps {\n\t/** Flex Message JSON(bubble or carousel) */\n\tjson: FlexContainer;\n\t/** 追加 className */\n\tclassName?: string;\n\t/** 追加 inline style */\n\tstyle?: React.CSSProperties;\n}\n\nfunction BubbleRenderer({\n\tjson,\n\tclassName,\n\tstyle: extraStyle,\n}: {\n\tjson: FlexBubble;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n}) {\n\tconst width = BUBBLE_WIDTH[json.size ?? \"mega\"];\n\tconst headerBg = json.styles?.header?.backgroundColor;\n\tconst bodyBg = json.styles?.body?.backgroundColor;\n\tconst footerBg = json.styles?.footer?.backgroundColor;\n\tconst footerSep = json.styles?.footer?.separator;\n\tconst bodySep = json.styles?.body?.separator;\n\tconst heroSep = json.styles?.hero?.separator;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={className}\n\t\t\tstyle={{\n\t\t\t\twidth,\n\t\t\t\tmaxWidth: \"100%\",\n\t\t\t\tborderRadius: \"16px\",\n\t\t\t\toverflow: \"hidden\",\n\t\t\t\tbackgroundColor: \"#ffffff\",\n\t\t\t\tboxShadow: \"0 1px 6px rgba(0,0,0,0.12)\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t\t...extraStyle,\n\t\t\t}}\n\t\t>\n\t\t\t{/* Header */}\n\t\t\t{json.header && (\n\t\t\t\t<div style={{ padding: \"16px 16px 0\", backgroundColor: headerBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.header} />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Hero separator */}\n\t\t\t{heroSep && <hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />}\n\n\t\t\t{/* Hero */}\n\t\t\t{json.hero && <FlexImageComponent component={json.hero} />}\n\n\t\t\t{/* Body separator */}\n\t\t\t{bodySep && <hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />}\n\n\t\t\t{/* Body */}\n\t\t\t{json.body && (\n\t\t\t\t<div style={{ padding: \"16px\", backgroundColor: bodyBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.body} />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Footer separator */}\n\t\t\t{footerSep && (\n\t\t\t\t<hr style={{ borderTop: \"1px solid #E5E5E5\", margin: 0 }} />\n\t\t\t)}\n\n\t\t\t{/* Footer */}\n\t\t\t{json.footer && (\n\t\t\t\t<div style={{ padding: \"8px 16px 16px\", backgroundColor: footerBg }}>\n\t\t\t\t\t<FlexBoxComponent component={json.footer} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport function FlexMessagePreview({\n\tjson,\n\tclassName,\n\tstyle,\n}: FlexMessagePreviewProps) {\n\tif (json.type === \"carousel\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\toverflowX: \"auto\",\n\t\t\t\t\tscrollSnapType: \"x mandatory\",\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{json.contents.map((bubble, i) => (\n\t\t\t\t\t<div key={i} style={{ scrollSnapAlign: \"start\", flexShrink: 0 }}>\n\t\t\t\t\t\t<BubbleRenderer json={bubble} />\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t}\n\treturn <BubbleRenderer json={json} className={className} style={style} />;\n}\n","import type React from \"react\";\n\nexport interface LineChatFrameProps {\n\tchildren: React.ReactNode;\n\t/** トーク画面のヘッダー名(デフォルト: \"トーク\") */\n\taccountName?: string;\n\t/** アバター画像 URL(未指定時は緑の BOT アイコン) */\n\tavatarUrl?: string;\n\t/** フレーム幅(デフォルト: 375) */\n\twidth?: number;\n}\n\nfunction DefaultAvatar() {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: 36,\n\t\t\t\theight: 36,\n\t\t\t\tborderRadius: \"50%\",\n\t\t\t\tbackgroundColor: \"#00B900\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"center\",\n\t\t\t\tflexShrink: 0,\n\t\t\t\tcolor: \"#fff\",\n\t\t\t\tfontSize: 11,\n\t\t\t\tfontWeight: 700,\n\t\t\t}}\n\t\t>\n\t\t\tBOT\n\t\t</div>\n\t);\n}\n\nexport function LineChatFrame({\n\tchildren,\n\taccountName = \"トーク\",\n\tavatarUrl,\n\twidth = 375,\n}: LineChatFrameProps) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth,\n\t\t\t\tminHeight: 500,\n\t\t\t\tborderRadius: 12,\n\t\t\t\toverflow: \"hidden\",\n\t\t\t\tboxShadow: \"0 4px 24px rgba(0,0,0,0.18)\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t}}\n\t\t>\n\t\t\t{/* Header bar */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#00B900\",\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\tpadding: \"12px 16px\",\n\t\t\t\t\tfontSize: 16,\n\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\twidth=\"18\"\n\t\t\t\t\theight=\"18\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\trole=\"img\"\n\t\t\t\t\taria-label=\"Back\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M15 18l-6-6 6-6\" />\n\t\t\t\t</svg>\n\t\t\t\t<span>{accountName}</span>\n\t\t\t</div>\n\n\t\t\t{/* Chat area */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#7B9EB0\",\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tpadding: \"16px 12px\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* Message row */}\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\t\tgap: 8,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{avatarUrl ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={avatarUrl}\n\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: 36,\n\t\t\t\t\t\t\t\theight: 36,\n\t\t\t\t\t\t\t\tborderRadius: \"50%\",\n\t\t\t\t\t\t\t\tobjectFit: \"cover\",\n\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<DefaultAvatar />\n\t\t\t\t\t)}\n\t\t\t\t\t<div style={{ maxWidth: \"calc(100% - 52px)\" }}>{children}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Input bar */}\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"#F7F7F7\",\n\t\t\t\t\tpadding: \"10px 12px\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\tborderTop: \"1px solid #E0E0E0\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\tbackgroundColor: \"#fff\",\n\t\t\t\t\t\tborderRadius: 20,\n\t\t\t\t\t\tpadding: \"8px 14px\",\n\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\tcolor: \"#999\",\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tAa\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","export function LineTextBubble({ text }: { text: string }) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"#ffffff\",\n\t\t\t\tborderRadius: \"16px 16px 16px 4px\",\n\t\t\t\tpadding: \"10px 14px\",\n\t\t\t\tfontSize: 14,\n\t\t\t\tlineHeight: 1.5,\n\t\t\t\tcolor: \"#111111\",\n\t\t\t\twhiteSpace: \"pre-wrap\",\n\t\t\t\twordBreak: \"break-word\",\n\t\t\t\tmaxWidth: 260,\n\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\n\t\t\t\tfontFamily:\n\t\t\t\t\t'-apple-system, BlinkMacSystemFont, \"Helvetica Neue\", \"Segoe UI\", Arial, sans-serif',\n\t\t\t}}\n\t\t>\n\t\t\t{text}\n\t\t</div>\n\t);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "line-flex-message-renderer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "React component to render LINE Flex Message JSON as a visual preview — pixel-accurate to the LINE app.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"line",
|
|
@@ -40,10 +40,27 @@
|
|
|
40
40
|
"LICENSE"
|
|
41
41
|
],
|
|
42
42
|
"sideEffects": false,
|
|
43
|
+
"scripts": {
|
|
44
|
+
"build": "tsup",
|
|
45
|
+
"dev": "tsup --watch",
|
|
46
|
+
"lint": "biome check src/",
|
|
47
|
+
"lint:fix": "biome check --write src/",
|
|
48
|
+
"test": "vitest run",
|
|
49
|
+
"test:watch": "vitest",
|
|
50
|
+
"storybook": "storybook dev -p 6006",
|
|
51
|
+
"build-storybook": "storybook build",
|
|
52
|
+
"prepublishOnly": "pnpm run build",
|
|
53
|
+
"typecheck": "tsc --noEmit"
|
|
54
|
+
},
|
|
43
55
|
"peerDependencies": {
|
|
44
56
|
"react": ">=18.0.0",
|
|
45
57
|
"react-dom": ">=18.0.0"
|
|
46
58
|
},
|
|
59
|
+
"pnpm": {
|
|
60
|
+
"onlyBuiltDependencies": [
|
|
61
|
+
"esbuild"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
47
64
|
"devDependencies": {
|
|
48
65
|
"@biomejs/biome": "^2.4.9",
|
|
49
66
|
"@storybook/addon-a11y": "^10.3.3",
|
|
@@ -61,15 +78,5 @@
|
|
|
61
78
|
"typescript": "^6.0.2",
|
|
62
79
|
"vitest": "^4.1.1"
|
|
63
80
|
},
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
"dev": "tsup --watch",
|
|
67
|
-
"lint": "biome check src/",
|
|
68
|
-
"lint:fix": "biome check --write src/",
|
|
69
|
-
"test": "vitest run",
|
|
70
|
-
"test:watch": "vitest",
|
|
71
|
-
"storybook": "storybook dev -p 6006",
|
|
72
|
-
"build-storybook": "storybook build",
|
|
73
|
-
"typecheck": "tsc --noEmit"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
81
|
+
"packageManager": "pnpm@10.33.0"
|
|
82
|
+
}
|