line-flex-message-renderer 1.2.0 → 1.2.1
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 +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -149,6 +149,7 @@ function FlexTextComponent({ component }) {
|
|
|
149
149
|
const fontSize = resolveSize(component.size, TEXT_SIZE, TEXT_SIZE.md);
|
|
150
150
|
const style = {
|
|
151
151
|
margin: 0,
|
|
152
|
+
width: "100%",
|
|
152
153
|
fontSize,
|
|
153
154
|
color: component.color,
|
|
154
155
|
fontWeight: component.weight === "bold" ? 700 : 400,
|
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 { TEXT_SIZE } from \"../constants\";\nimport type { FlexButton } from \"../types\";\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};\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 } 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\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 type { FlexSeparator } from \"../types\";\n\nexport function FlexSeparatorComponent({\n\tcomponent,\n}: {\n\tcomponent: FlexSeparator;\n}) {\n\tconst style: React.CSSProperties = {\n\t\tborder: \"none\",\n\t\tborderTop: `1px solid ${component.color ?? \"#E5E5E5\"}`,\n\t\tmargin: 0,\n\t\tpadding: 0,\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 { 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\tmargin: 0,\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\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\n/**\n * LINE Flex Message Box renderer.\n *\n * Spacing/margin behaviour mirrors the LINE spec:\n * - Parent `spacing` sets the default gap between children.\n * - A child's own `margin` overrides `spacing` for that child.\n * - First child never receives a leading gap.\n * - In horizontal/baseline layout, children without explicit `flex`\n * default to `flex: 1` (equal distribution) — matching LINE behaviour.\n */\nexport function FlexBoxComponent({ component }: { component: FlexBox }) {\n\tconst isVertical = component.layout === \"vertical\";\n\tconst isBaseline = component.layout === \"baseline\";\n\tconst resolvedSpacing = resolveSize(component.spacing, SPACING, undefined);\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\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};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t{component.contents.map((child, i) => {\n\t\t\t\t// Filler — just a flex‑grow div\n\t\t\t\tif (child.type === \"filler\") {\n\t\t\t\t\tconst fillerFlex =\n\t\t\t\t\t\t\"flex\" in child && child.flex != null ? child.flex : 1;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={i} style={{ flex: `${fillerFlex} 0 0%` }} />\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Spacer — fixed‑size gap (deprecated in LINE, but still supported)\n\t\t\t\tif (child.type === \"spacer\") {\n\t\t\t\t\tconst spacerSize =\n\t\t\t\t\t\t\"size\" in child\n\t\t\t\t\t\t\t? resolveSize(child.size as string, SPACING, \"0px\")\n\t\t\t\t\t\t\t: \"0px\";\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\t\t\t[isVertical ? \"height\" : \"width\"]: spacerSize,\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}\n\n\t\t\t\t// ---- Margin: child's own margin overrides parent spacing ----\n\t\t\t\tconst childMargin =\n\t\t\t\t\t\"margin\" in child && child.margin\n\t\t\t\t\t\t? resolveSize(child.margin as string, SPACING, undefined)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst gapValue =\n\t\t\t\t\ti > 0 ? (childMargin ?? resolvedSpacing) : undefined;\n\t\t\t\tconst marginProp = isVertical ? \"marginTop\" : \"marginLeft\";\n\n\t\t\t\t// ---- Flex: LINE horizontal default is 1 ----\n\t\t\t\tconst childFlex =\n\t\t\t\t\t\"flex\" in child && child.flex !== undefined\n\t\t\t\t\t\t? (child.flex as number)\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tlet flexValue: string | undefined;\n\t\t\t\tif (childFlex !== undefined) {\n\t\t\t\t\tflexValue = `${childFlex} 0 ${childFlex === 0 ? \"auto\" : \"0%\"}`;\n\t\t\t\t} else if (!isVertical) {\n\t\t\t\t\tflexValue = \"1 0 0%\";\n\t\t\t\t}\n\n\t\t\t\tconst wrapperStyle: React.CSSProperties = {\n\t\t\t\t\t...(gapValue ? { [marginProp]: gapValue } : {}),\n\t\t\t\t\t...(flexValue ? { flex: flexValue } : {}),\n\t\t\t\t\t...(!isVertical ? { minWidth: 0 } : {}),\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={i} style={wrapperStyle}>\n\t\t\t\t\t\t<FlexComponentRenderer component={child} />\n\t\t\t\t\t</div>\n\t\t\t\t);\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 { TEXT_SIZE } from \"../constants\";\nimport type { FlexButton } from \"../types\";\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};\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 } 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\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 type { FlexSeparator } from \"../types\";\n\nexport function FlexSeparatorComponent({\n\tcomponent,\n}: {\n\tcomponent: FlexSeparator;\n}) {\n\tconst style: React.CSSProperties = {\n\t\tborder: \"none\",\n\t\tborderTop: `1px solid ${component.color ?? \"#E5E5E5\"}`,\n\t\tmargin: 0,\n\t\tpadding: 0,\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 { 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\tmargin: 0,\n\t\twidth: \"100%\",\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\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\n/**\n * LINE Flex Message Box renderer.\n *\n * Spacing/margin behaviour mirrors the LINE spec:\n * - Parent `spacing` sets the default gap between children.\n * - A child's own `margin` overrides `spacing` for that child.\n * - First child never receives a leading gap.\n * - In horizontal/baseline layout, children without explicit `flex`\n * default to `flex: 1` (equal distribution) — matching LINE behaviour.\n */\nexport function FlexBoxComponent({ component }: { component: FlexBox }) {\n\tconst isVertical = component.layout === \"vertical\";\n\tconst isBaseline = component.layout === \"baseline\";\n\tconst resolvedSpacing = resolveSize(component.spacing, SPACING, undefined);\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\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};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t{component.contents.map((child, i) => {\n\t\t\t\t// Filler — just a flex‑grow div\n\t\t\t\tif (child.type === \"filler\") {\n\t\t\t\t\tconst fillerFlex =\n\t\t\t\t\t\t\"flex\" in child && child.flex != null ? child.flex : 1;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={i} style={{ flex: `${fillerFlex} 0 0%` }} />\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Spacer — fixed‑size gap (deprecated in LINE, but still supported)\n\t\t\t\tif (child.type === \"spacer\") {\n\t\t\t\t\tconst spacerSize =\n\t\t\t\t\t\t\"size\" in child\n\t\t\t\t\t\t\t? resolveSize(child.size as string, SPACING, \"0px\")\n\t\t\t\t\t\t\t: \"0px\";\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\t\t\t[isVertical ? \"height\" : \"width\"]: spacerSize,\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}\n\n\t\t\t\t// ---- Margin: child's own margin overrides parent spacing ----\n\t\t\t\tconst childMargin =\n\t\t\t\t\t\"margin\" in child && child.margin\n\t\t\t\t\t\t? resolveSize(child.margin as string, SPACING, undefined)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst gapValue =\n\t\t\t\t\ti > 0 ? (childMargin ?? resolvedSpacing) : undefined;\n\t\t\t\tconst marginProp = isVertical ? \"marginTop\" : \"marginLeft\";\n\n\t\t\t\t// ---- Flex: LINE horizontal default is 1 ----\n\t\t\t\tconst childFlex =\n\t\t\t\t\t\"flex\" in child && child.flex !== undefined\n\t\t\t\t\t\t? (child.flex as number)\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tlet flexValue: string | undefined;\n\t\t\t\tif (childFlex !== undefined) {\n\t\t\t\t\tflexValue = `${childFlex} 0 ${childFlex === 0 ? \"auto\" : \"0%\"}`;\n\t\t\t\t} else if (!isVertical) {\n\t\t\t\t\tflexValue = \"1 0 0%\";\n\t\t\t\t}\n\n\t\t\t\tconst wrapperStyle: React.CSSProperties = {\n\t\t\t\t\t...(gapValue ? { [marginProp]: gapValue } : {}),\n\t\t\t\t\t...(flexValue ? { flex: flexValue } : {}),\n\t\t\t\t\t...(!isVertical ? { minWidth: 0 } : {}),\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={i} style={wrapperStyle}>\n\t\t\t\t\t\t<FlexComponentRenderer component={child} />\n\t\t\t\t\t</div>\n\t\t\t\t);\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
|
@@ -147,6 +147,7 @@ function FlexTextComponent({ component }) {
|
|
|
147
147
|
const fontSize = resolveSize(component.size, TEXT_SIZE, TEXT_SIZE.md);
|
|
148
148
|
const style = {
|
|
149
149
|
margin: 0,
|
|
150
|
+
width: "100%",
|
|
150
151
|
fontSize,
|
|
151
152
|
color: component.color,
|
|
152
153
|
fontWeight: component.weight === "bold" ? 700 : 400,
|
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;ACHO,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;AAAA,GACT;AAEA,EAAA,2BACE,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,KAAA,EACpB,QAAA,EAAA,SAAA,CAAU,OAAO,KAAA,EACnB,CAAA;AAEF;AClCO,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,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,MAAA,EAAQ,MAAA;AAAA,IACR,SAAA,EAAW,CAAA,UAAA,EAAa,SAAA,CAAU,KAAA,IAAS,SAAS,CAAA,CAAA;AAAA,IACpD,MAAA,EAAQ,CAAA;AAAA,IACR,OAAA,EAAS,CAAA;AAAA,IACT,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,MAAA,EAAQ,CAAA;AAAA,IACR,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,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;ACvDO,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;AC1BO,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;AACxC,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,SAAA,CAAU,OAAA,EAAS,SAAS,MAAS,CAAA;AAEzE,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,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;AAAA,GAChD;AAEA,EAAA,uBACCA,IAAC,KAAA,EAAA,EAAI,KAAA,EACH,oBAAU,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,KAAM;AAErC,IAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC5B,MAAA,MAAM,aACL,MAAA,IAAU,KAAA,IAAS,MAAM,IAAA,IAAQ,IAAA,GAAO,MAAM,IAAA,GAAO,CAAA;AACtD,MAAA,uBACCA,GAAAA,CAAC,KAAA,EAAA,EAAY,KAAA,EAAO,EAAE,MAAM,CAAA,EAAG,UAAU,CAAA,KAAA,CAAA,EAAQ,EAAA,EAAvC,CAA0C,CAAA;AAAA,IAEtD;AAGA,IAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC5B,MAAA,MAAM,UAAA,GACL,UAAU,KAAA,GACP,WAAA,CAAY,MAAM,IAAA,EAAgB,OAAA,EAAS,KAAK,CAAA,GAChD,KAAA;AACJ,MAAA,uBACCA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEA,KAAA,EAAO;AAAA,YACN,QAAA,EAAU,CAAA;AAAA,YACV,CAAC,UAAA,GAAa,QAAA,GAAW,OAAO,GAAG;AAAA;AACpC,SAAA;AAAA,QAJK;AAAA,OAKN;AAAA,IAEF;AAGA,IAAA,MAAM,WAAA,GACL,QAAA,IAAY,KAAA,IAAS,KAAA,CAAM,MAAA,GACxB,YAAY,KAAA,CAAM,MAAA,EAAkB,OAAA,EAAS,MAAS,CAAA,GACtD,MAAA;AACJ,IAAA,MAAM,QAAA,GACL,CAAA,GAAI,CAAA,GAAK,WAAA,IAAe,eAAA,GAAmB,MAAA;AAC5C,IAAA,MAAM,UAAA,GAAa,aAAa,WAAA,GAAc,YAAA;AAG9C,IAAA,MAAM,YACL,MAAA,IAAU,KAAA,IAAS,MAAM,IAAA,KAAS,MAAA,GAC9B,MAAM,IAAA,GACP,MAAA;AAEJ,IAAA,IAAI,SAAA;AACJ,IAAA,IAAI,cAAc,MAAA,EAAW;AAC5B,MAAA,SAAA,GAAY,GAAG,SAAS,CAAA,GAAA,EAAM,SAAA,KAAc,CAAA,GAAI,SAAS,IAAI,CAAA,CAAA;AAAA,IAC9D,CAAA,MAAA,IAAW,CAAC,UAAA,EAAY;AACvB,MAAA,SAAA,GAAY,QAAA;AAAA,IACb;AAEA,IAAA,MAAM,YAAA,GAAoC;AAAA,MACzC,GAAI,WAAW,EAAE,CAAC,UAAU,GAAG,QAAA,KAAa,EAAC;AAAA,MAC7C,GAAI,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA,KAAc,EAAC;AAAA,MACvC,GAAI,CAAC,UAAA,GAAa,EAAE,QAAA,EAAU,CAAA,KAAM;AAAC,KACtC;AAEA,IAAA,uBACCA,GAAAA,CAAC,KAAA,EAAA,EAAY,KAAA,EAAO,YAAA,EACnB,QAAA,kBAAAA,GAAAA,CAAC,qBAAA,EAAA,EAAsB,SAAA,EAAW,KAAA,EAAO,CAAA,EAAA,EADhC,CAEV,CAAA;AAAA,EAEF,CAAC,CAAA,EACF,CAAA;AAEF;AC1FA,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 { TEXT_SIZE } from \"../constants\";\nimport type { FlexButton } from \"../types\";\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};\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 } 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\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 type { FlexSeparator } from \"../types\";\n\nexport function FlexSeparatorComponent({\n\tcomponent,\n}: {\n\tcomponent: FlexSeparator;\n}) {\n\tconst style: React.CSSProperties = {\n\t\tborder: \"none\",\n\t\tborderTop: `1px solid ${component.color ?? \"#E5E5E5\"}`,\n\t\tmargin: 0,\n\t\tpadding: 0,\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 { 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\tmargin: 0,\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\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\n/**\n * LINE Flex Message Box renderer.\n *\n * Spacing/margin behaviour mirrors the LINE spec:\n * - Parent `spacing` sets the default gap between children.\n * - A child's own `margin` overrides `spacing` for that child.\n * - First child never receives a leading gap.\n * - In horizontal/baseline layout, children without explicit `flex`\n * default to `flex: 1` (equal distribution) — matching LINE behaviour.\n */\nexport function FlexBoxComponent({ component }: { component: FlexBox }) {\n\tconst isVertical = component.layout === \"vertical\";\n\tconst isBaseline = component.layout === \"baseline\";\n\tconst resolvedSpacing = resolveSize(component.spacing, SPACING, undefined);\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\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};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t{component.contents.map((child, i) => {\n\t\t\t\t// Filler — just a flex‑grow div\n\t\t\t\tif (child.type === \"filler\") {\n\t\t\t\t\tconst fillerFlex =\n\t\t\t\t\t\t\"flex\" in child && child.flex != null ? child.flex : 1;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={i} style={{ flex: `${fillerFlex} 0 0%` }} />\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Spacer — fixed‑size gap (deprecated in LINE, but still supported)\n\t\t\t\tif (child.type === \"spacer\") {\n\t\t\t\t\tconst spacerSize =\n\t\t\t\t\t\t\"size\" in child\n\t\t\t\t\t\t\t? resolveSize(child.size as string, SPACING, \"0px\")\n\t\t\t\t\t\t\t: \"0px\";\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\t\t\t[isVertical ? \"height\" : \"width\"]: spacerSize,\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}\n\n\t\t\t\t// ---- Margin: child's own margin overrides parent spacing ----\n\t\t\t\tconst childMargin =\n\t\t\t\t\t\"margin\" in child && child.margin\n\t\t\t\t\t\t? resolveSize(child.margin as string, SPACING, undefined)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst gapValue =\n\t\t\t\t\ti > 0 ? (childMargin ?? resolvedSpacing) : undefined;\n\t\t\t\tconst marginProp = isVertical ? \"marginTop\" : \"marginLeft\";\n\n\t\t\t\t// ---- Flex: LINE horizontal default is 1 ----\n\t\t\t\tconst childFlex =\n\t\t\t\t\t\"flex\" in child && child.flex !== undefined\n\t\t\t\t\t\t? (child.flex as number)\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tlet flexValue: string | undefined;\n\t\t\t\tif (childFlex !== undefined) {\n\t\t\t\t\tflexValue = `${childFlex} 0 ${childFlex === 0 ? \"auto\" : \"0%\"}`;\n\t\t\t\t} else if (!isVertical) {\n\t\t\t\t\tflexValue = \"1 0 0%\";\n\t\t\t\t}\n\n\t\t\t\tconst wrapperStyle: React.CSSProperties = {\n\t\t\t\t\t...(gapValue ? { [marginProp]: gapValue } : {}),\n\t\t\t\t\t...(flexValue ? { flex: flexValue } : {}),\n\t\t\t\t\t...(!isVertical ? { minWidth: 0 } : {}),\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={i} style={wrapperStyle}>\n\t\t\t\t\t\t<FlexComponentRenderer component={child} />\n\t\t\t\t\t</div>\n\t\t\t\t);\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.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 { TEXT_SIZE } from \"../constants\";\nimport type { FlexButton } from \"../types\";\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};\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 } 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\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 type { FlexSeparator } from \"../types\";\n\nexport function FlexSeparatorComponent({\n\tcomponent,\n}: {\n\tcomponent: FlexSeparator;\n}) {\n\tconst style: React.CSSProperties = {\n\t\tborder: \"none\",\n\t\tborderTop: `1px solid ${component.color ?? \"#E5E5E5\"}`,\n\t\tmargin: 0,\n\t\tpadding: 0,\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 { 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\tmargin: 0,\n\t\twidth: \"100%\",\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\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\n/**\n * LINE Flex Message Box renderer.\n *\n * Spacing/margin behaviour mirrors the LINE spec:\n * - Parent `spacing` sets the default gap between children.\n * - A child's own `margin` overrides `spacing` for that child.\n * - First child never receives a leading gap.\n * - In horizontal/baseline layout, children without explicit `flex`\n * default to `flex: 1` (equal distribution) — matching LINE behaviour.\n */\nexport function FlexBoxComponent({ component }: { component: FlexBox }) {\n\tconst isVertical = component.layout === \"vertical\";\n\tconst isBaseline = component.layout === \"baseline\";\n\tconst resolvedSpacing = resolveSize(component.spacing, SPACING, undefined);\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\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};\n\n\treturn (\n\t\t<div style={style}>\n\t\t\t{component.contents.map((child, i) => {\n\t\t\t\t// Filler — just a flex‑grow div\n\t\t\t\tif (child.type === \"filler\") {\n\t\t\t\t\tconst fillerFlex =\n\t\t\t\t\t\t\"flex\" in child && child.flex != null ? child.flex : 1;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={i} style={{ flex: `${fillerFlex} 0 0%` }} />\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Spacer — fixed‑size gap (deprecated in LINE, but still supported)\n\t\t\t\tif (child.type === \"spacer\") {\n\t\t\t\t\tconst spacerSize =\n\t\t\t\t\t\t\"size\" in child\n\t\t\t\t\t\t\t? resolveSize(child.size as string, SPACING, \"0px\")\n\t\t\t\t\t\t\t: \"0px\";\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\t\t\t[isVertical ? \"height\" : \"width\"]: spacerSize,\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}\n\n\t\t\t\t// ---- Margin: child's own margin overrides parent spacing ----\n\t\t\t\tconst childMargin =\n\t\t\t\t\t\"margin\" in child && child.margin\n\t\t\t\t\t\t? resolveSize(child.margin as string, SPACING, undefined)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst gapValue =\n\t\t\t\t\ti > 0 ? (childMargin ?? resolvedSpacing) : undefined;\n\t\t\t\tconst marginProp = isVertical ? \"marginTop\" : \"marginLeft\";\n\n\t\t\t\t// ---- Flex: LINE horizontal default is 1 ----\n\t\t\t\tconst childFlex =\n\t\t\t\t\t\"flex\" in child && child.flex !== undefined\n\t\t\t\t\t\t? (child.flex as number)\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tlet flexValue: string | undefined;\n\t\t\t\tif (childFlex !== undefined) {\n\t\t\t\t\tflexValue = `${childFlex} 0 ${childFlex === 0 ? \"auto\" : \"0%\"}`;\n\t\t\t\t} else if (!isVertical) {\n\t\t\t\t\tflexValue = \"1 0 0%\";\n\t\t\t\t}\n\n\t\t\t\tconst wrapperStyle: React.CSSProperties = {\n\t\t\t\t\t...(gapValue ? { [marginProp]: gapValue } : {}),\n\t\t\t\t\t...(flexValue ? { flex: flexValue } : {}),\n\t\t\t\t\t...(!isVertical ? { minWidth: 0 } : {}),\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={i} style={wrapperStyle}>\n\t\t\t\t\t\t<FlexComponentRenderer component={child} />\n\t\t\t\t\t</div>\n\t\t\t\t);\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"]}
|