操作
バグ #511
未完了LINEデザイン言語の実装とスタイルガイド
ステータス:
新規
優先度:
高め
担当者:
-
開始日:
2025-06-11
期日:
進捗率:
0%
予定工数:
説明
概要¶
レジュメ変換システムのUIデザインをLINEデザイン言語(LINE Design System)に準拠するよう実装します。LINEデザイン言語の原則、コンポーネント、スタイルガイドラインを詳細に定義し、一貫したユーザー体験を提供します。
作業内容¶
-
LINEデザイン言語の原則と適用
- デザイン原則
- シンプル: 必要な要素だけを表示し、視覚的なノイズを最小限に
- ユニバーサル: 多様なユーザーにとって使いやすいデザイン
- 親しみやすい: フレンドリーで使いやすい印象
- 一貫性: 全画面で一貫したデザイン言語
- カラーパレット
- プライマリカラー: LINE Green (#06C755)
- セカンダリカラー: LINE Blue (#1753E6)
- アクセントカラー: LINE Yellow (#FFDC3C)
- グレースケール: #FFFFFF, #F7F8F9, #DFE2E6, #ACB5BD, #6B7684, #4D5765, #2D3540, #191F28
- タイポグラフィ
- フォントファミリー: 'Noto Sans JP', sans-serif
- 見出し階層: h1(24px), h2(20px), h3(18px), h4(16px)
- 本文: 14px
- 小テキスト: 12px
- デザイン原則
-
LINEスタイルのUIコンポーネント実装
-
ボタン
// LINE風プライマリボタン const LineButton: React.FC<{ children: React.ReactNode; variant?: 'primary' | 'secondary' | 'outline' | 'text'; size?: 'small' | 'medium' | 'large'; onClick?: () => void; disabled?: boolean; className?: string; }> = ({ children, variant = 'primary', size = 'medium', onClick, disabled, className }) => { const baseClasses = "rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2"; const variantClasses = { primary: "bg-[#06C755] text-white hover:bg-[#05b64c] focus:ring-[#06C755]", secondary: "bg-[#1753E6] text-white hover:bg-[#1248c9] focus:ring-[#1753E6]", outline: "border border-[#06C755] text-[#06C755] hover:bg-[#e8f7ee] focus:ring-[#06C755]", text: "text-[#06C755] hover:bg-[#e8f7ee] focus:ring-[#06C755]" }; const sizeClasses = { small: "px-3 py-1 text-sm", medium: "px-4 py-2", large: "px-6 py-3 text-lg" }; const classes = `${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]} ${disabled ? 'opacity-50 cursor-not-allowed' : ''} ${className || ''}`; return ( <button className={classes} onClick={onClick} disabled={disabled} > {children} </button> ); };
-
フォーム要素
// LINE風インプットフィールド const LineTextField: React.FC<{ label: string; value: string; onChange: (value: string) => void; placeholder?: string; error?: string; required?: boolean; }> = ({ label, value, onChange, placeholder, error, required }) => { return ( <div className="mb-4"> <label className="block text-[#2D3540] text-sm font-medium mb-1"> {label} {required && <span className="text-red-500 ml-1">*</span>} </label> <input type="text" value={value} onChange={(e) => onChange(e.target.value)} placeholder={placeholder} className={`w-full px-3 py-2 border ${error ? 'border-red-500' : 'border-[#DFE2E6]'} rounded-md focus:outline-none focus:ring-2 focus:ring-[#06C755] focus:border-transparent`} /> {error && <p className="mt-1 text-sm text-red-500">{error}</p>} </div> ); };
-
カード
-
タブ
-
ナビゲーション
-
ドロップダウン
-
モーダル
-
トースト通知
-
-
LINE Design System用のTailwindCSS設定
// tailwind.config.js module.exports = { theme: { extend: { colors: { 'line-green': '#06C755', 'line-blue': '#1753E6', 'line-yellow': '#FFDC3C', 'line-gray': { 50: '#F7F8F9', 100: '#DFE2E6', 200: '#ACB5BD', 300: '#6B7684', 400: '#4D5765', 500: '#2D3540', 600: '#191F28', } }, fontFamily: { sans: ['"Noto Sans JP"', 'sans-serif'], }, borderRadius: { 'line': '6px', }, boxShadow: { 'line': '0 2px 8px rgba(0, 0, 0, 0.08)', 'line-hover': '0 4px 12px rgba(0, 0, 0, 0.12)', } } }, plugins: [], }
-
レスポンシブデザインのLINEスタイル適用
- モバイルファースト設計
- ブレイクポイント定義
- sm: 640px
- md: 768px
- lg: 1024px
- xl: 1280px
- タッチフレンドリーな要素サイズ
- LINEアプリライクなモバイルナビゲーション
-
アニメーションとトランジション
- LINEスタイルのトランジション
- 基本トランジション: 0.2s ease-in-out
- フェードイン/アウト: opacity
- スライド: transform
- マイクロインタラクション
- ボタンホバー/アクティブ状態
- フォーム要素フォーカス
- リスト項目アニメーション
- ローディングアニメーション
- LINEスタイルのトランジション
成果物¶
- LINE Design Systemスタイルガイド
- TailwindCSS設定ファイル
- UIコンポーネントライブラリ(LINEスタイル)
- レスポンシブデザインガイドライン
- アニメーション・トランジション定義
技術スタック¶
- React
- TypeScript
- TailwindCSS
- LINE Design System
- Emotion/Styled Components(必要に応じて)
参照¶
表示するデータがありません
操作