futsuno-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/lp/atoms/Button/Button.tsx","../../src/lp/atoms/Button/AnchorButton.tsx","../../src/lp/atoms/Image/Image.tsx","../../src/lp/atoms/Image/ProductImage.tsx","../../src/lp/atoms/Icon/Icon.tsx","../../src/lp/atoms/Text/Text.tsx","../../src/lp/molecules/UserVoice/UserVoice.tsx","../../src/lp/molecules/FaqParts/FaqParts.tsx","../../src/lp/organisms/KeyVisual/KeyVisual.tsx","../../src/lp/organisms/Section/Section.tsx","../../src/lp/organisms/Spec/Spec.tsx","../../src/lp/organisms/Cta/Cta.tsx","../../src/lp/organisms/Faq/Faq.tsx","../../src/lp/organisms/Blank/Blank.tsx","../../src/lp/templates/LpTemplate/LpTemplate.tsx","../../src/lp/templates/ProductLpTemplate/ProductLpTemplate.tsx"],"names":["React","variantStyles","jsxs","jsx","sizeStyles","backgroundStyles","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Utility function to merge Tailwind CSS classes\n * Combines clsx and tailwind-merge for optimal class handling\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport type ButtonVariant = 'black' | 'red' | 'gold' | 'white';\nexport type ButtonSize = 'lg' | 'md';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Button color variant */\n variant?: ButtonVariant;\n /** Button size */\n size?: ButtonSize;\n /** Whether to show arrow icon */\n showArrow?: boolean;\n /** Full width button */\n fullWidth?: boolean;\n /** Children elements */\n children: React.ReactNode;\n}\n\nconst variantStyles: Record<ButtonVariant, string> = {\n black: 'bg-[#464646] text-white border-transparent',\n red: 'bg-[#CC5E58] text-white border-transparent',\n gold: 'bg-[#978E5F] text-white border-transparent',\n white: 'bg-white text-[#464646] border-[#BDC1C2]',\n};\n\nconst sizeStyles: Record<ButtonSize, string> = {\n lg: 'px-[24px] py-[24px] text-[20px]',\n md: 'px-[24px] py-[16px] text-[18px]',\n};\n\n/**\n * Button component for LP pages\n * Supports black, red, gold, and white variants\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'black',\n size = 'lg',\n showArrow = true,\n fullWidth = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n className={cn(\n // Base styles\n 'relative inline-flex items-center justify-center',\n 'font-bold font-[\"Noto_Sans_JP\",sans-serif]',\n 'rounded-[3px] border border-solid',\n 'shadow-[0px_4px_16px_0px_rgba(4,4,4,0.4)]',\n 'tracking-[0.05em] leading-[1.45]',\n 'transition-opacity hover:opacity-90',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n // Variant styles\n variantStyles[variant],\n // Size styles\n sizeStyles[size],\n // Full width\n fullWidth && 'w-full',\n className\n )}\n {...props}\n >\n <span className=\"flex-1 text-center\">{children}</span>\n {showArrow && (\n <span className=\"absolute right-[24px] top-1/2 -translate-y-1/2\">\n <ArrowIcon variant={variant} />\n </span>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\n/** Arrow icon for button */\nfunction ArrowIcon({ variant }: { variant: ButtonVariant }) {\n const color = variant === 'white' ? '#464646' : '#FFFFFF';\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"-rotate-90\"\n >\n <path\n d=\"M12 6L12 17\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M7 13L12 18L17 13\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport default Button;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport type AnchorButtonVariant = 'outline' | 'filled';\n\nexport interface AnchorButtonProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Button style variant */\n variant?: AnchorButtonVariant;\n /** Whether text wraps to multiple lines */\n multiline?: boolean;\n /** Children elements */\n children: React.ReactNode;\n}\n\nconst variantStyles: Record<AnchorButtonVariant, string> = {\n outline: 'bg-white text-[#040404] border-[#464646]',\n filled: 'bg-[#464646] text-white border-[#464646]',\n};\n\n/**\n * Anchor Button component for page navigation within LP\n * Used for linking to different sections\n */\nexport const AnchorButton = React.forwardRef<\n HTMLAnchorElement,\n AnchorButtonProps\n>(({ variant = 'outline', multiline = false, className, children, ...props }, ref) => {\n return (\n <a\n ref={ref}\n className={cn(\n // Base styles\n 'inline-flex items-center justify-between gap-[16px]',\n 'font-[\"Noto_Sans_JP\",sans-serif] font-bold',\n 'text-[15px] leading-[1.8] tracking-[0.08em]',\n 'px-[16px] py-[16px] md:px-[24px]',\n 'rounded-[3px] border border-solid',\n 'transition-opacity hover:opacity-80',\n 'cursor-pointer no-underline',\n // Variant styles\n variantStyles[variant],\n // Width handling\n !multiline && 'whitespace-nowrap',\n className\n )}\n {...props}\n >\n <span className=\"flex-1\">{children}</span>\n <ChevronDownIcon variant={variant} />\n </a>\n );\n});\n\nAnchorButton.displayName = 'AnchorButton';\n\n/** Chevron down icon for anchor button */\nfunction ChevronDownIcon({ variant }: { variant: AnchorButtonVariant }) {\n const color = variant === 'outline' ? '#040404' : '#FFFFFF';\n return (\n <svg\n width=\"12\"\n height=\"6\"\n viewBox=\"0 0 12 6\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"shrink-0\"\n >\n <path\n d=\"M1 1L6 5L11 1\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport default AnchorButton;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport type ImageAspectRatio = '1:1' | '4:3' | '16:9' | 'auto';\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n /** Image aspect ratio */\n aspectRatio?: ImageAspectRatio;\n /** Object fit style */\n objectFit?: 'cover' | 'contain' | 'fill';\n /** Placeholder background color when loading */\n placeholderColor?: string;\n}\n\nconst aspectRatioStyles: Record<ImageAspectRatio, string> = {\n '1:1': 'aspect-square',\n '4:3': 'aspect-[4/3]',\n '16:9': 'aspect-video',\n auto: '',\n};\n\n/**\n * Image component for LP pages\n * Supports various aspect ratios\n */\nexport const Image = React.forwardRef<HTMLImageElement, ImageProps>(\n (\n {\n aspectRatio = 'auto',\n objectFit = 'cover',\n placeholderColor = '#D9D9D9',\n className,\n style,\n alt = '',\n ...props\n },\n ref\n ) => {\n return (\n <div\n className={cn(\n 'relative overflow-hidden',\n aspectRatioStyles[aspectRatio],\n className\n )}\n style={{ backgroundColor: placeholderColor, ...style }}\n >\n <img\n ref={ref}\n alt={alt}\n className={cn(\n 'w-full h-full',\n objectFit === 'cover' && 'object-cover',\n objectFit === 'contain' && 'object-contain',\n objectFit === 'fill' && 'object-fill'\n )}\n {...props}\n />\n </div>\n );\n }\n);\n\nImage.displayName = 'Image';\n\nexport default Image;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport interface ProductImageProps\n extends React.ImgHTMLAttributes<HTMLImageElement> {\n /** Product name for alt text */\n productName?: string;\n /** Image size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Whether image is circular (for feature icons) */\n circular?: boolean;\n}\n\nconst sizeStyles: Record<string, string> = {\n sm: 'w-[90px] h-[90px]',\n md: 'w-[100px] h-[100px]',\n lg: 'w-[130px] h-[130px]',\n};\n\n/**\n * Product Image component for LP pages\n * Used for product photos and feature icons\n */\nexport const ProductImage = React.forwardRef<HTMLImageElement, ProductImageProps>(\n (\n {\n productName = 'Product',\n size = 'md',\n circular = false,\n className,\n src,\n ...props\n },\n ref\n ) => {\n const hasImage = Boolean(src);\n\n return (\n <div\n className={cn(\n 'relative overflow-hidden flex-shrink-0',\n sizeStyles[size],\n circular ? 'rounded-full' : 'rounded-[2px]',\n !hasImage && 'bg-[#D4D4D4]',\n className\n )}\n >\n {hasImage && (\n <img\n ref={ref}\n src={src}\n alt={productName}\n className=\"w-full h-full object-cover\"\n {...props}\n />\n )}\n </div>\n );\n }\n);\n\nProductImage.displayName = 'ProductImage';\n\nexport default ProductImage;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport type IconName =\n | 'arrow-right'\n | 'arrow-down'\n | 'chevron-down'\n | 'chevron-up'\n | 'check'\n | 'plus'\n | 'minus';\n\nexport interface IconProps extends React.SVGAttributes<SVGElement> {\n /** Icon name */\n name: IconName;\n /** Icon size in pixels */\n size?: number;\n /** Icon color */\n color?: string;\n}\n\nconst iconPaths: Record<IconName, React.ReactNode> = {\n 'arrow-right': (\n <>\n <path d=\"M6 12H17\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path\n d=\"M13 7L18 12L13 17\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </>\n ),\n 'arrow-down': (\n <>\n <path d=\"M12 6V17\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path\n d=\"M7 13L12 18L17 13\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </>\n ),\n 'chevron-down': (\n <path\n d=\"M6 9L12 15L18 9\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ),\n 'chevron-up': (\n <path\n d=\"M6 15L12 9L18 15\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ),\n check: (\n <path\n d=\"M5 12L10 17L19 7\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ),\n plus: (\n <>\n <path d=\"M12 5V19\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M5 12H19\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </>\n ),\n minus: <path d=\"M5 12H19\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />,\n};\n\n/**\n * Icon component for LP pages\n * Provides common icons used in LP designs\n */\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ name, size = 24, color = 'currentColor', className, ...props }, ref) => {\n return (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={color}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn('inline-block', className)}\n {...props}\n >\n {iconPaths[name]}\n </svg>\n );\n }\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport type TextVariant =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'body-lg'\n | 'body-md'\n | 'body-sm'\n | 'caption-lg'\n | 'caption-md'\n | 'caption-sm'\n | 'caption-xs';\n\nexport type TextColor =\n | 'primary'\n | 'secondary'\n | 'inverse'\n | 'accent'\n | 'gold'\n | 'inherit';\n\nexport type TextAlign = 'left' | 'center' | 'right' | 'justify';\n\nexport interface TextProps extends React.HTMLAttributes<HTMLElement> {\n /** Typography variant */\n variant?: TextVariant;\n /** Text color */\n color?: TextColor;\n /** Text alignment */\n align?: TextAlign;\n /** HTML tag to render */\n as?: keyof JSX.IntrinsicElements;\n /** Font weight override */\n weight?: 'regular' | 'medium' | 'bold';\n /** Children elements */\n children: React.ReactNode;\n}\n\nconst variantStyles: Record<TextVariant, string> = {\n h1: 'text-[24px] leading-[1.55] tracking-[0.16em] font-medium',\n h2: 'text-[22px] leading-[1.55] tracking-[0.16em] font-medium',\n h3: 'text-[20px] leading-[1.35] tracking-[0.16em] font-medium',\n h4: 'text-[18px] leading-[1.45] tracking-[0.16em] font-medium',\n 'body-lg': 'text-[16px] leading-[1.95] tracking-[0.08em] font-medium',\n 'body-md': 'text-[15px] leading-[1.85] tracking-[0.08em] font-medium',\n 'body-sm': 'text-[13px] leading-[1.85] tracking-[0.08em] font-medium',\n 'caption-lg': 'text-[12px] leading-[1.45] tracking-[0.08em] font-medium',\n 'caption-md': 'text-[11px] leading-[1.45] tracking-[0.08em] font-medium',\n 'caption-sm': 'text-[10px] leading-[1.45] tracking-[0.08em] font-medium',\n 'caption-xs': 'text-[8px] leading-[1.45] tracking-[0.08em] font-medium',\n};\n\nconst colorStyles: Record<TextColor, string> = {\n primary: 'text-[#040404]',\n secondary: 'text-[#464646]',\n inverse: 'text-white',\n accent: 'text-[#CC5E58]',\n gold: 'text-[#978E5F]',\n inherit: 'text-inherit',\n};\n\nconst alignStyles: Record<TextAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n};\n\nconst weightStyles: Record<string, string> = {\n regular: 'font-normal',\n medium: 'font-medium',\n bold: 'font-bold',\n};\n\nconst defaultTags: Record<TextVariant, keyof JSX.IntrinsicElements> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n 'body-lg': 'p',\n 'body-md': 'p',\n 'body-sm': 'p',\n 'caption-lg': 'span',\n 'caption-md': 'span',\n 'caption-sm': 'span',\n 'caption-xs': 'span',\n};\n\n/**\n * Text component for LP pages\n * Provides consistent typography across the design system\n */\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\n (\n {\n variant = 'body-md',\n color = 'primary',\n align = 'left',\n as,\n weight,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const Component = as || defaultTags[variant];\n\n return React.createElement(\n Component,\n {\n ref,\n className: cn(\n 'font-[\"Noto_Sans_JP\",sans-serif]',\n variantStyles[variant],\n colorStyles[color],\n alignStyles[align],\n weight && weightStyles[weight],\n className\n ),\n ...props,\n },\n children\n );\n }\n);\n\nText.displayName = 'Text';\n\nexport default Text;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport interface UserVoiceProps extends React.HTMLAttributes<HTMLDivElement> {\n /** User avatar image URL */\n avatarSrc?: string;\n /** User name or identifier */\n userName?: string;\n /** User attribute (e.g., age, occupation) */\n userAttribute?: string;\n /** Review/testimonial content */\n content: string;\n /** Star rating (1-5) */\n rating?: number;\n}\n\n/**\n * UserVoice component for LP pages\n * Displays user reviews and testimonials\n */\nexport const UserVoice = React.forwardRef<HTMLDivElement, UserVoiceProps>(\n (\n {\n avatarSrc,\n userName = 'お客様',\n userAttribute,\n content,\n rating = 5,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-[16px] p-[24px]',\n 'bg-white rounded-[2px]',\n 'font-[\"Noto_Sans_JP\",sans-serif]',\n className\n )}\n {...props}\n >\n {/* User info */}\n <div className=\"flex items-center gap-[12px]\">\n {/* Avatar */}\n <div\n className={cn(\n 'w-[48px] h-[48px] rounded-full flex-shrink-0 overflow-hidden',\n !avatarSrc && 'bg-[#D4D4D4]'\n )}\n >\n {avatarSrc && (\n <img\n src={avatarSrc}\n alt={userName}\n className=\"w-full h-full object-cover\"\n />\n )}\n </div>\n\n {/* Name and attribute */}\n <div className=\"flex flex-col gap-[4px]\">\n <span className=\"text-[14px] font-medium text-[#040404] leading-[1.45] tracking-[0.08em]\">\n {userName}\n </span>\n {userAttribute && (\n <span className=\"text-[12px] font-medium text-[#464646] leading-[1.45] tracking-[0.08em]\">\n {userAttribute}\n </span>\n )}\n </div>\n </div>\n\n {/* Rating stars */}\n {rating > 0 && (\n <div className=\"flex gap-[4px]\">\n {Array.from({ length: 5 }).map((_, i) => (\n <StarIcon key={i} filled={i < rating} />\n ))}\n </div>\n )}\n\n {/* Content */}\n <p className=\"text-[13px] font-medium text-[#040404] leading-[1.85] tracking-[0.08em]\">\n {content}\n </p>\n </div>\n );\n }\n);\n\nUserVoice.displayName = 'UserVoice';\n\n/** Star icon for rating */\nfunction StarIcon({ filled }: { filled: boolean }) {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill={filled ? '#978E5F' : 'none'}\n stroke={filled ? '#978E5F' : '#BDC1C2'}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8 1L10.163 5.279L15 5.94L11.5 9.318L12.326 14L8 11.779L3.674 14L4.5 9.318L1 5.94L5.837 5.279L8 1Z\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport default UserVoice;\n\n","import React, { useState } from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport interface FaqPartsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** FAQ question */\n question: string;\n /** FAQ answer */\n answer: string;\n /** Whether the FAQ item is initially open */\n defaultOpen?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}\n\n/**\n * FaqParts component for LP pages\n * Accordion-style FAQ item with question and answer\n */\nexport const FaqParts = React.forwardRef<HTMLDivElement, FaqPartsProps>(\n (\n {\n question,\n answer,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n className,\n ...props\n },\n ref\n ) => {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen;\n\n const handleToggle = () => {\n const newOpen = !isOpen;\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'border-b border-[#E5E6E6]',\n 'font-[\"Noto_Sans_JP\",sans-serif]',\n className\n )}\n {...props}\n >\n {/* Question */}\n <button\n type=\"button\"\n onClick={handleToggle}\n className={cn(\n 'w-full flex items-center justify-between gap-[16px]',\n 'py-[16px] px-[8px]',\n 'text-left cursor-pointer',\n 'transition-colors hover:bg-[#F2F3F1]'\n )}\n aria-expanded={isOpen}\n >\n <div className=\"flex items-start gap-[12px]\">\n <span className=\"text-[15px] font-bold text-[#978E5F] leading-[1.45] tracking-[0.08em]\">\n Q\n </span>\n <span className=\"text-[15px] font-medium text-[#040404] leading-[1.8] tracking-[0.08em]\">\n {question}\n </span>\n </div>\n <ChevronIcon isOpen={isOpen} />\n </button>\n\n {/* Answer */}\n <div\n className={cn(\n 'grid transition-[grid-template-rows] duration-300 ease-in-out',\n isOpen ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\n )}\n >\n <div className=\"overflow-hidden\">\n <div className=\"flex items-start gap-[12px] py-[16px] px-[8px]\">\n <span className=\"text-[15px] font-bold text-[#CC5E58] leading-[1.45] tracking-[0.08em]\">\n A\n </span>\n <p className=\"text-[13px] font-medium text-[#464646] leading-[1.85] tracking-[0.08em]\">\n {answer}\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n }\n);\n\nFaqParts.displayName = 'FaqParts';\n\n/** Chevron icon for toggle */\nfunction ChevronIcon({ isOpen }: { isOpen: boolean }) {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#464646\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\n 'flex-shrink-0 transition-transform duration-300',\n isOpen && 'rotate-180'\n )}\n >\n <path\n d=\"M6 9L12 15L18 9\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport default FaqParts;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport interface Badge {\n /** Badge title (top line) */\n title: string;\n /** Badge main text (can be multi-line) */\n text: string;\n /** Badge footnote reference (e.g., \"※1\") */\n footnote?: string;\n}\n\nexport interface KeyVisualProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Background image URL */\n backgroundImage?: string;\n /** Main copy lines (displayed with white background) */\n copyLines?: string[];\n /** Achievement badges (up to 3) */\n badges?: Badge[];\n /** Footnotes for badges */\n footnotes?: string[];\n /** Whether to show video instead of image */\n isVideo?: boolean;\n /** Video source URL (if isVideo is true) */\n videoSrc?: string;\n}\n\n/**\n * KeyVisual (MV) component for LP pages\n * Main hero section with background image, copy, and achievement badges\n */\nexport const KeyVisual = React.forwardRef<HTMLDivElement, KeyVisualProps>(\n (\n {\n backgroundImage,\n copyLines = [],\n badges = [],\n footnotes = [],\n isVideo = false,\n videoSrc,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'relative w-full min-h-[548px] overflow-hidden',\n 'flex flex-col',\n 'font-[\"Noto_Sans_JP\",sans-serif]',\n className\n )}\n {...props}\n >\n {/* Background */}\n <div className=\"absolute inset-0\">\n {isVideo && videoSrc ? (\n <video\n src={videoSrc}\n autoPlay\n loop\n muted\n playsInline\n className=\"w-full h-full object-cover\"\n />\n ) : backgroundImage ? (\n <img\n src={backgroundImage}\n alt=\"Key Visual\"\n className=\"w-full h-full object-cover\"\n />\n ) : (\n <div className=\"w-full h-full bg-[#D9D9D9]\" />\n )}\n </div>\n\n {/* Content */}\n <div className=\"relative flex-1 flex flex-col justify-between px-[20px] pt-[40px] pb-[20px]\">\n {/* Main copy */}\n {copyLines.length > 0 && (\n <div className=\"flex flex-col gap-[8px] items-start\">\n {copyLines.map((line, index) => (\n <div\n key={index}\n className=\"bg-white px-[8px] pt-[4px] pb-[8px]\"\n >\n <span className=\"text-[24px] font-medium text-[#040404] leading-[1.55] tracking-[0.16em]\">\n {line}\n </span>\n </div>\n ))}\n </div>\n )}\n\n {/* Bottom section with badges and footnotes */}\n <div className=\"flex flex-col gap-[10px]\">\n {/* Badges */}\n {badges.length > 0 && (\n <div className=\"flex items-center justify-between\">\n {badges.map((badge, index) => (\n <BadgeItem key={index} badge={badge} />\n ))}\n </div>\n )}\n\n {/* Footnotes */}\n {footnotes.length > 0 && (\n <div className=\"text-[10px] font-normal text-[#464646] leading-[1.5]\">\n {footnotes.map((footnote, index) => (\n <p key={index} className=\"m-0\">\n {footnote}\n </p>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nKeyVisual.displayName = 'KeyVisual';\n\n/** Badge item component */\nfunction BadgeItem({ badge }: { badge: Badge }) {\n return (\n <div className=\"relative flex flex-col gap-[10px] items-start w-[106px]\">\n <div\n className={cn(\n 'size-[106px] rounded-full',\n 'bg-white border border-[#978E5F]',\n 'flex flex-col items-center justify-center',\n 'relative'\n )}\n >\n {/* Decorative inner circle */}\n <div className=\"absolute inset-[2px] rounded-full border border-dashed border-[#978E5F] opacity-50\" />\n\n {/* Badge content */}\n <span className=\"text-[12px] font-bold text-[#978E5F] leading-[1.45] tracking-[0.05em] text-center\">\n {badge.title}\n </span>\n <div className=\"text-[15px] font-bold text-[#978E5F] leading-[1.45] tracking-[0.05em] text-center whitespace-pre-line\">\n {badge.text}\n </div>\n </div>\n\n {/* Footnote reference */}\n {badge.footnote && (\n <span className=\"absolute -right-[0.5px] top-0 text-[7.7px] font-normal text-[#464646] leading-none tracking-[0.05em]\">\n {badge.footnote}\n </span>\n )}\n </div>\n );\n}\n\nexport default KeyVisual;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport type SectionBackground = 'white' | 'gray' | 'gold' | 'custom';\n\nexport interface SectionProps extends React.HTMLAttributes<HTMLElement> {\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Background style */\n background?: SectionBackground;\n /** Custom background color (when background is 'custom') */\n customBgColor?: string;\n /** Padding size */\n padding?: 'sm' | 'md' | 'lg';\n /** Whether content should be centered */\n centered?: boolean;\n /** Maximum content width */\n maxWidth?: 'sm' | 'md' | 'lg' | 'full';\n /** Children elements */\n children: React.ReactNode;\n}\n\nconst backgroundStyles: Record<SectionBackground, string> = {\n white: 'bg-white',\n gray: 'bg-[#F2F3F1]',\n gold: 'bg-[#978E5F]',\n custom: '',\n};\n\nconst paddingStyles: Record<string, string> = {\n sm: 'py-[24px] px-[20px]',\n md: 'py-[48px] px-[20px]',\n lg: 'py-[64px] px-[20px]',\n};\n\nconst maxWidthStyles: Record<string, string> = {\n sm: 'max-w-[335px]',\n md: 'max-w-[375px]',\n lg: 'max-w-[500px]',\n full: 'max-w-full',\n};\n\n/**\n * Section component for LP pages\n * Generic container for organizing content sections\n */\nexport const Section = React.forwardRef<HTMLElement, SectionProps>(\n (\n {\n title,\n subtitle,\n background = 'white',\n customBgColor,\n padding = 'md',\n centered = true,\n maxWidth = 'md',\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <section\n ref={ref}\n className={cn(\n 'w-full',\n 'font-[\"Noto_Sans_JP\",sans-serif]',\n backgroundStyles[background],\n paddingStyles[padding],\n className\n )}\n style={{\n backgroundColor:\n background === 'custom' ? customBgColor : undefined,\n ...style,\n }}\n {...props}\n >\n <div\n className={cn(\n 'w-full mx-auto',\n maxWidthStyles[maxWidth],\n centered && 'flex flex-col items-center'\n )}\n >\n {/* Section header */}\n {(title || subtitle) && (\n <div\n className={cn(\n 'flex flex-col gap-[8px] mb-[24px]',\n centered && 'items-center text-center'\n )}\n >\n {title && (\n <h2\n className={cn(\n 'text-[22px] font-medium leading-[1.55] tracking-[0.16em]',\n background === 'gold' ? 'text-white' : 'text-[#040404]'\n )}\n >\n {title}\n </h2>\n )}\n {subtitle && (\n <p\n className={cn(\n 'text-[13px] font-medium leading-[1.85] tracking-[0.08em]',\n background === 'gold' ? 'text-white' : 'text-[#464646]'\n )}\n >\n {subtitle}\n </p>\n )}\n </div>\n )}\n\n {/* Section content */}\n <div className={cn('w-full', centered && 'flex flex-col items-center')}>\n {children}\n </div>\n </div>\n </section>\n );\n }\n);\n\nSection.displayName = 'Section';\n\nexport default Section;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport interface SpecItem {\n /** Spec label */\n label: string;\n /** Spec value */\n value: string;\n}\n\nexport interface SpecProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Product name */\n productName?: string;\n /** Product image URL */\n productImage?: string;\n /** Spec items list */\n items?: SpecItem[];\n /** Ingredients or additional info */\n ingredients?: string;\n /** Notes or warnings */\n notes?: string[];\n}\n\n/**\n * Spec component for LP pages\n * Displays product specifications in a table format\n */\nexport const Spec = React.forwardRef<HTMLDivElement, SpecProps>(\n (\n {\n productName,\n productImage,\n items = [],\n ingredients,\n notes = [],\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full bg-white rounded-[2px] overflow-hidden',\n 'font-[\"Noto_Sans_JP\",sans-serif]',\n className\n )}\n {...props}\n >\n {/* Product image */}\n {productImage && (\n <div className=\"w-full aspect-[4/3] bg-[#D9D9D9]\">\n <img\n src={productImage}\n alt={productName || 'Product'}\n className=\"w-full h-full object-cover\"\n />\n </div>\n )}\n\n {/* Content */}\n <div className=\"p-[24px] flex flex-col gap-[16px]\">\n {/* Product name */}\n {productName && (\n <h3 className=\"text-[18px] font-medium text-[#040404] leading-[1.45] tracking-[0.16em] text-center\">\n {productName}\n </h3>\n )}\n\n {/* Spec table */}\n {items.length > 0 && (\n <table className=\"w-full border-collapse\">\n <tbody>\n {items.map((item, index) => (\n <tr key={index} className=\"border-b border-[#E5E6E6]\">\n <th className=\"py-[12px] px-[8px] text-left text-[13px] font-medium text-[#464646] leading-[1.85] tracking-[0.08em] w-[100px]\">\n {item.label}\n </th>\n <td className=\"py-[12px] px-[8px] text-[13px] font-medium text-[#040404] leading-[1.85] tracking-[0.08em]\">\n {item.value}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n\n {/* Ingredients */}\n {ingredients && (\n <div className=\"pt-[16px] border-t border-[#E5E6E6]\">\n <p className=\"text-[12px] font-medium text-[#464646] leading-[1.5] tracking-[0.08em]\">\n <span className=\"font-bold\">原材料:</span>\n {ingredients}\n </p>\n </div>\n )}\n\n {/* Notes */}\n {notes.length > 0 && (\n <div className=\"flex flex-col gap-[4px]\">\n {notes.map((note, index) => (\n <p\n key={index}\n className=\"text-[10px] font-medium text-[#464646] leading-[1.5] tracking-[0.08em]\"\n >\n {note}\n </p>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nSpec.displayName = 'Spec';\n\nexport default Spec;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\nimport { Button, type ButtonVariant } from '../../atoms/Button';\n\nexport interface ProductOption {\n /** Option label (e.g., \"2本セット\") */\n label: string;\n /** Discount text (e.g., \"10%OFF\") */\n discount?: string;\n /** Price per unit */\n pricePerUnit?: string;\n /** Total price */\n totalPrice?: string;\n /** Quantity info (e.g., \"150ml×2\") */\n quantity?: string;\n /** Product image URL */\n image?: string;\n}\n\nexport interface CtaProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Background color variant */\n background?: 'gold' | 'gray';\n /** Main product image URL */\n productImage?: string;\n /** Product name */\n productName?: string;\n /** Product price */\n productPrice?: string;\n /** Product quantity info */\n productQuantity?: string;\n /** Feature badges (circular images with text) */\n features?: Array<{\n image?: string;\n text: string;\n }>;\n /** Promotion label (e.g., \"本ページ限定!\") */\n promotionLabel?: string;\n /** Promotion title lines */\n promotionTitle?: string[];\n /** Product options for bulk purchase */\n productOptions?: ProductOption[];\n /** Note text */\n note?: string;\n /** CTA message */\n ctaMessage?: string;\n /** Button text */\n buttonText?: string;\n /** Button variant */\n buttonVariant?: ButtonVariant;\n /** Button click handler */\n onButtonClick?: () => void;\n /** Footer link text */\n footerLinkText?: string;\n /** Footer link URL */\n footerLinkHref?: string;\n}\n\nconst backgroundStyles = {\n gold: 'bg-[#978E5F]',\n gray: 'bg-[#F2F3F1]',\n};\n\n/**\n * CTA component for LP pages\n * Purchase call-to-action section with product details and options\n */\nexport const Cta = React.forwardRef<HTMLDivElement, CtaProps>(\n (\n {\n background = 'gold',\n productImage,\n productName,\n productPrice,\n productQuantity,\n features = [],\n promotionLabel,\n promotionTitle = [],\n productOptions = [],\n note,\n ctaMessage,\n buttonText = '購入する',\n buttonVariant = 'red',\n onButtonClick,\n footerLinkText,\n footerLinkHref,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full py-[48px] px-[20px]',\n 'font-[\"Noto_Sans_JP\",sans-serif]',\n backgroundStyles[background],\n className\n )}\n {...props}\n >\n <div className=\"w-full max-w-[375px] mx-auto\">\n {/* Main card */}\n <div className=\"bg-white rounded-[2px] overflow-hidden\">\n {/* Product image */}\n {productImage && (\n <div className=\"w-full aspect-[4/3] bg-[#D9D9D9]\">\n <img\n src={productImage}\n alt={productName || 'Product'}\n className=\"w-full h-full object-cover\"\n />\n </div>\n )}\n\n {/* Features */}\n {features.length > 0 && (\n <div className=\"flex justify-center gap-[8px] py-[24px] px-[16px]\">\n {features.map((feature, index) => (\n <div\n key={index}\n className=\"flex flex-col items-center gap-[8px] w-[101px]\"\n >\n <div\n className={cn(\n 'size-[90px] rounded-full',\n !feature.image && 'bg-[#D4D4D4]'\n )}\n >\n {feature.image && (\n <img\n src={feature.image}\n alt=\"\"\n className=\"w-full h-full object-cover rounded-full\"\n />\n )}\n </div>\n <span className=\"text-[13px] font-medium text-[#040404] leading-[1.2] tracking-[0.08em] text-center\">\n {feature.text}\n </span>\n </div>\n ))}\n </div>\n )}\n\n {/* Product info */}\n <div className=\"px-[16px] pb-[24px]\">\n {/* Product details */}\n <div className=\"flex gap-[24px] items-center mb-[24px]\">\n {productImage && (\n <div className=\"w-[130px] aspect-square bg-[#D9D9D9] flex-shrink-0\">\n <img\n src={productImage}\n alt={productName || ''}\n className=\"w-full h-full object-cover\"\n />\n </div>\n )}\n <div className=\"flex flex-col gap-[8px]\">\n {productName && (\n <span className=\"text-[16px] font-bold text-[#040404] leading-[1.5] tracking-[0.05em]\">\n {productName}\n </span>\n )}\n {productPrice && (\n <span className=\"text-[25px] font-bold text-[#040404] leading-[1.45] tracking-[0.05em]\">\n {productPrice}\n <span className=\"text-[12px]\">[税込]</span>\n </span>\n )}\n {productQuantity && (\n <span className=\"text-[13px] font-bold text-[#040404] leading-[1.8] tracking-[0.05em]\">\n {productQuantity}\n </span>\n )}\n </div>\n </div>\n\n {/* Promotion box */}\n {(promotionLabel || promotionTitle.length > 0) && (\n <div className=\"bg-[#F2F3F1] rounded-[2px] p-[16px] mb-[24px]\">\n {/* Promotion header */}\n <div className=\"flex flex-col items-center gap-[8px] mb-[16px]\">\n {promotionLabel && (\n <span className=\"bg-[#CC5E58] text-white text-[13px] font-bold px-[8px] py-[4px] leading-[1.55] tracking-[0.05em]\">\n {promotionLabel}\n </span>\n )}\n {promotionTitle.map((line, index) => (\n <span\n key={index}\n className={cn(\n 'font-bold leading-[1.55] text-center',\n index === 0\n ? 'text-[18px] text-[#040404] tracking-[0.05em]'\n : 'text-[22px] text-[#CC5E58] tracking-[0.05em]'\n )}\n >\n {line}\n </span>\n ))}\n </div>\n\n {/* Product options */}\n {productOptions.length > 0 && (\n <div className=\"flex flex-col gap-[16px]\">\n {productOptions.map((option, index) => (\n <div key={index} className=\"flex gap-[16px] items-center\">\n <div\n className={cn(\n 'w-[100px] aspect-square flex-shrink-0',\n !option.image && 'bg-[#D9D9D9]'\n )}\n >\n {option.image && (\n <img\n src={option.image}\n alt=\"\"\n className=\"w-full h-full object-cover\"\n />\n )}\n </div>\n <div className=\"flex flex-col gap-[4px]\">\n <div className=\"flex gap-[5px] items-start\">\n <span className=\"text-[14px] font-bold text-[#040404] leading-[1.45] tracking-[0.05em]\">\n {option.label}\n </span>\n {option.discount && (\n <span className=\"text-[14px] font-bold text-[#CC5E58] leading-[1.45] tracking-[0.05em]\">\n {option.discount}\n </span>\n )}\n </div>\n {option.pricePerUnit && (\n <span className=\"text-[25px] font-bold text-[#040404] leading-[1.45] tracking-[0.05em]\">\n {option.pricePerUnit}\n <span className=\"text-[12px]\">/本[税込]</span>\n </span>\n )}\n <div className=\"flex gap-[4px] text-[12px] font-bold text-[#040404] tracking-[0.05em]\">\n {option.quantity && <span>{option.quantity}</span>}\n {option.totalPrice && (\n <span>\n {option.totalPrice}\n <span className=\"text-[9px]\">[税込]</span>\n </span>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n\n {/* Note */}\n {note && (\n <p className=\"text-[12px] font-medium text-[#464646] leading-[1.5] tracking-[0.08em] text-center mb-[16px]\">\n {note}\n </p>\n )}\n </div>\n\n {/* CTA section */}\n <div className=\"px-[16px] pb-[24px] flex flex-col items-center gap-[16px]\">\n {ctaMessage && (\n <p className=\"text-[15px] font-bold text-[#CC5E58] leading-[1.8] tracking-[0.08em] text-center\">\n {ctaMessage}\n </p>\n )}\n\n <Button\n variant={buttonVariant}\n size=\"md\"\n fullWidth\n onClick={onButtonClick}\n className=\"max-w-[310px]\"\n >\n {buttonText}\n </Button>\n\n {footerLinkText && (\n <a\n href={footerLinkHref || '#'}\n className=\"text-[12px] font-medium text-[#040404] leading-[1.5] tracking-[0.05em] underline\"\n >\n {footerLinkText}\n </a>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n);\n\nCta.displayName = 'Cta';\n\nexport default Cta;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\nimport { FaqParts } from '../../molecules/FaqParts';\n\nexport interface FaqItem {\n /** Question */\n question: string;\n /** Answer */\n answer: string;\n /** Whether initially open */\n defaultOpen?: boolean;\n}\n\nexport interface FaqProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Section title */\n title?: string;\n /** FAQ items */\n items?: FaqItem[];\n /** Background variant */\n background?: 'white' | 'gray';\n}\n\nconst backgroundStyles = {\n white: 'bg-white',\n gray: 'bg-[#F2F3F1]',\n};\n\n/**\n * FAQ component for LP pages\n * Accordion-style FAQ section\n */\nexport const Faq = React.forwardRef<HTMLDivElement, FaqProps>(\n (\n {\n title = 'よくあるご質問',\n items = [],\n background = 'white',\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full py-[48px] px-[20px]',\n 'font-[\"Noto_Sans_JP\",sans-serif]',\n backgroundStyles[background],\n className\n )}\n {...props}\n >\n <div className=\"w-full max-w-[375px] mx-auto\">\n {/* Section title */}\n {title && (\n <h2 className=\"text-[22px] font-medium text-[#040404] leading-[1.55] tracking-[0.16em] text-center mb-[24px]\">\n {title}\n </h2>\n )}\n\n {/* FAQ items */}\n <div className=\"border-t border-[#E5E6E6]\">\n {items.map((item, index) => (\n <FaqParts\n key={index}\n question={item.question}\n answer={item.answer}\n defaultOpen={item.defaultOpen}\n />\n ))}\n </div>\n </div>\n </div>\n );\n }\n);\n\nFaq.displayName = 'Faq';\n\nexport default Faq;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport type BlankSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type BlankBackground = 'transparent' | 'white' | 'gray';\n\nexport interface BlankProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Blank space size */\n size?: BlankSize;\n /** Custom height in pixels */\n height?: number;\n /** Background color */\n background?: BlankBackground;\n}\n\nconst sizeStyles: Record<BlankSize, string> = {\n xs: 'h-[16px]',\n sm: 'h-[24px]',\n md: 'h-[48px]',\n lg: 'h-[64px]',\n xl: 'h-[96px]',\n};\n\nconst backgroundStyles: Record<BlankBackground, string> = {\n transparent: 'bg-transparent',\n white: 'bg-white',\n gray: 'bg-[#F2F3F1]',\n};\n\n/**\n * Blank component for LP pages\n * Creates vertical spacing between sections\n */\nexport const Blank = React.forwardRef<HTMLDivElement, BlankProps>(\n (\n { size = 'md', height, background = 'transparent', className, style, ...props },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full',\n !height && sizeStyles[size],\n backgroundStyles[background],\n className\n )}\n style={{\n height: height ? `${height}px` : undefined,\n ...style,\n }}\n {...props}\n />\n );\n }\n);\n\nBlank.displayName = 'Blank';\n\nexport default Blank;\n\n","import React from 'react';\nimport { cn } from '../../../utils/cn';\n\nexport interface LpSection {\n /** Unique section ID */\n id: string;\n /** Section component to render */\n component: React.ReactNode;\n}\n\nexport interface LpTemplateProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Array of sections to render */\n sections?: LpSection[];\n /** Maximum width of the LP container */\n maxWidth?: number;\n /** Whether to center the LP */\n centered?: boolean;\n /** Children elements (alternative to sections) */\n children?: React.ReactNode;\n}\n\n/**\n * LpTemplate component\n * Base template for LP pages with mobile-first responsive design\n * Standard LP width: 375px (mobile-first)\n */\nexport const LpTemplate = React.forwardRef<HTMLDivElement, LpTemplateProps>(\n (\n {\n sections = [],\n maxWidth = 375,\n centered = true,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'min-h-screen bg-white',\n 'font-[\"Noto_Sans_JP\",sans-serif]',\n className\n )}\n {...props}\n >\n <div\n className={cn(\n 'w-full',\n centered && 'mx-auto'\n )}\n style={{\n maxWidth: `${maxWidth}px`,\n ...style,\n }}\n >\n {/* Render sections if provided */}\n {sections.length > 0 ? (\n sections.map((section) => (\n <div key={section.id} data-section-id={section.id}>\n {section.component}\n </div>\n ))\n ) : (\n children\n )}\n </div>\n </div>\n );\n }\n);\n\nLpTemplate.displayName = 'LpTemplate';\n\nexport default LpTemplate;\n\n","import React from 'react';\nimport { LpTemplate } from '../LpTemplate';\nimport { KeyVisual, type Badge } from '../../organisms/KeyVisual';\nimport { Cta, type ProductOption } from '../../organisms/Cta';\nimport { Faq, type FaqItem } from '../../organisms/Faq';\nimport { Blank } from '../../organisms/Blank';\n\nexport interface ProductLpTemplateProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Key Visual props */\n keyVisual?: {\n backgroundImage?: string;\n copyLines?: string[];\n badges?: Badge[];\n footnotes?: string[];\n };\n /** Content sections (rendered between KeyVisual and CTA) */\n contentSections?: React.ReactNode;\n /** CTA props */\n cta?: {\n background?: 'gold' | 'gray';\n productImage?: string;\n productName?: string;\n productPrice?: string;\n productQuantity?: string;\n promotionLabel?: string;\n promotionTitle?: string[];\n productOptions?: ProductOption[];\n note?: string;\n ctaMessage?: string;\n buttonText?: string;\n onButtonClick?: () => void;\n footerLinkText?: string;\n footerLinkHref?: string;\n };\n /** FAQ items */\n faqItems?: FaqItem[];\n /** Footer content */\n footer?: React.ReactNode;\n}\n\n/**\n * ProductLpTemplate component\n * Pre-configured template for product landing pages\n * Includes: KeyVisual -> Content Sections -> CTA -> FAQ -> Footer\n */\nexport const ProductLpTemplate = React.forwardRef<HTMLDivElement, ProductLpTemplateProps>(\n (\n {\n keyVisual,\n contentSections,\n cta,\n faqItems = [],\n footer,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <LpTemplate ref={ref} className={className} {...props}>\n {/* Key Visual */}\n {keyVisual && (\n <KeyVisual\n backgroundImage={keyVisual.backgroundImage}\n copyLines={keyVisual.copyLines}\n badges={keyVisual.badges}\n footnotes={keyVisual.footnotes}\n />\n )}\n\n {/* Content Sections */}\n {contentSections}\n\n {/* CTA */}\n {cta && (\n <>\n <Blank size=\"md\" />\n <Cta\n background={cta.background}\n productImage={cta.productImage}\n productName={cta.productName}\n productPrice={cta.productPrice}\n productQuantity={cta.productQuantity}\n promotionLabel={cta.promotionLabel}\n promotionTitle={cta.promotionTitle}\n productOptions={cta.productOptions}\n note={cta.note}\n ctaMessage={cta.ctaMessage}\n buttonText={cta.buttonText}\n onButtonClick={cta.onButtonClick}\n footerLinkText={cta.footerLinkText}\n footerLinkHref={cta.footerLinkHref}\n />\n </>\n )}\n\n {/* FAQ */}\n {faqItems.length > 0 && (\n <>\n <Blank size=\"md\" />\n <Faq items={faqItems} />\n </>\n )}\n\n {/* Footer */}\n {footer && (\n <>\n <Blank size=\"md\" />\n {footer}\n </>\n )}\n </LpTemplate>\n );\n }\n);\n\nProductLpTemplate.displayName = 'ProductLpTemplate';\n\nexport default ProductLpTemplate;\n\n"]}
@@ -0,0 +1,131 @@
1
+ /* Futsuno UI Design System - Base Styles */
2
+
3
+ /* Import Tailwind base styles */
4
+ @tailwind base;
5
+ @tailwind components;
6
+ @tailwind utilities;
7
+
8
+ /* Import Google Fonts - Noto Sans JP */
9
+ @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700&display=swap');
10
+
11
+ /* CSS Custom Properties for Design Tokens */
12
+ :root {
13
+ /* Colors */
14
+ --futsuno-black: #040404;
15
+ --futsuno-white: #ffffff;
16
+ --futsuno-gray-900: #464646;
17
+ --futsuno-gray-400: #bdc1c2;
18
+ --futsuno-gray-200: #e5e6e6;
19
+ --futsuno-gray-100: #e5e6e6;
20
+ --futsuno-background-gray: #f2f3f1;
21
+ --futsuno-accent-gold: #978e5f;
22
+ --futsuno-accent-blue: #457d99;
23
+ --futsuno-accent-red: #cc5e58;
24
+
25
+ /* Spacing */
26
+ --futsuno-spacing-4: 4px;
27
+ --futsuno-spacing-8: 8px;
28
+ --futsuno-spacing-12: 12px;
29
+ --futsuno-spacing-16: 16px;
30
+ --futsuno-spacing-24: 24px;
31
+ --futsuno-spacing-32: 32px;
32
+ --futsuno-spacing-40: 40px;
33
+ --futsuno-spacing-48: 48px;
34
+
35
+ /* Border radius */
36
+ --futsuno-radius-button: 3px;
37
+ --futsuno-radius-badge: 55px;
38
+
39
+ /* Shadows */
40
+ --futsuno-shadow-button: 0px 4px 16px 0px rgba(4, 4, 4, 0.4);
41
+
42
+ /* Typography */
43
+ --futsuno-font-primary: 'Noto Sans JP', sans-serif;
44
+ }
45
+
46
+ /* Base styles */
47
+ .futsuno-ui {
48
+ font-family: var(--futsuno-font-primary);
49
+ color: var(--futsuno-black);
50
+ -webkit-font-smoothing: antialiased;
51
+ -moz-osx-font-smoothing: grayscale;
52
+ }
53
+
54
+ /* Typography utilities */
55
+ .futsuno-h1 {
56
+ font-size: 24px;
57
+ line-height: 1.55;
58
+ letter-spacing: 0.16em;
59
+ font-weight: 500;
60
+ }
61
+
62
+ .futsuno-h2 {
63
+ font-size: 22px;
64
+ line-height: 1.55;
65
+ letter-spacing: 0.16em;
66
+ font-weight: 500;
67
+ }
68
+
69
+ .futsuno-h3 {
70
+ font-size: 20px;
71
+ line-height: 1.35;
72
+ letter-spacing: 0.16em;
73
+ font-weight: 500;
74
+ }
75
+
76
+ .futsuno-h4 {
77
+ font-size: 18px;
78
+ line-height: 1.45;
79
+ letter-spacing: 0.16em;
80
+ font-weight: 500;
81
+ }
82
+
83
+ .futsuno-body-lg {
84
+ font-size: 16px;
85
+ line-height: 1.95;
86
+ letter-spacing: 0.08em;
87
+ font-weight: 500;
88
+ }
89
+
90
+ .futsuno-body-md {
91
+ font-size: 15px;
92
+ line-height: 1.85;
93
+ letter-spacing: 0.08em;
94
+ font-weight: 500;
95
+ }
96
+
97
+ .futsuno-body-sm {
98
+ font-size: 13px;
99
+ line-height: 1.85;
100
+ letter-spacing: 0.08em;
101
+ font-weight: 500;
102
+ }
103
+
104
+ .futsuno-caption-lg {
105
+ font-size: 12px;
106
+ line-height: 1.45;
107
+ letter-spacing: 0.08em;
108
+ font-weight: 500;
109
+ }
110
+
111
+ .futsuno-caption-md {
112
+ font-size: 11px;
113
+ line-height: 1.45;
114
+ letter-spacing: 0.08em;
115
+ font-weight: 500;
116
+ }
117
+
118
+ .futsuno-caption-sm {
119
+ font-size: 10px;
120
+ line-height: 1.45;
121
+ letter-spacing: 0.08em;
122
+ font-weight: 500;
123
+ }
124
+
125
+ .futsuno-caption-xs {
126
+ font-size: 8px;
127
+ line-height: 1.45;
128
+ letter-spacing: 0.08em;
129
+ font-weight: 500;
130
+ }
131
+
@@ -0,0 +1,3 @@
1
+ declare const themeVersion = "0.1.0";
2
+
3
+ export { themeVersion };
@@ -0,0 +1,6 @@
1
+ // src/theme/index.ts
2
+ var themeVersion = "0.1.0";
3
+
4
+ export { themeVersion };
5
+ //# sourceMappingURL=index.js.map
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/theme/index.ts"],"names":[],"mappings":";AAIO,IAAM,YAAA,GAAe","file":"index.js","sourcesContent":["// Theme components for ecforce theme management\n// This module will contain EC site theme components\n\n// Placeholder exports - to be implemented in Phase 4\nexport const themeVersion = '0.1.0';\n\n"]}