Skip to content

feat: デモシフトボードとイベント駆動ツアーの追加#345

Merged
yn1323 merged 27 commits intodevelopfrom
feat/0419-2
Apr 20, 2026
Merged

feat: デモシフトボードとイベント駆動ツアーの追加#345
yn1323 merged 27 commits intodevelopfrom
feat/0419-2

Conversation

@yn1323
Copy link
Copy Markdown
Owner

@yn1323 yn1323 commented Apr 20, 2026

Summary

LP からの導線として /demo/shiftboard にサインアップ不要のデモを設置し、FAB 起動型のイベント駆動ツアーでシフト操作(追加 / 編集 / 削除 / 確定)の流れを体験できるようにする。

Design

コンポーネント構成

graph TD
    A[DemoShiftBoardPage] --> B[ShiftForm]
    A --> C[DemoIntroTour]
    A --> D[DemoLauncherFab]
    A --> E[ConfirmModal]
    C --> F[Tour wrapper]
    F --> G[react-joyride useJoyride]
Loading

ツアーの進行ロジック

sequenceDiagram
    participant U as User
    participant FAB as DemoLauncherFab
    participant P as DemoShiftBoardPage
    participant T as DemoIntroTour
    participant J as react-joyride

    U->>FAB: クリック
    FAB->>P: setTourPhase("running")
    P->>T: run=true, shifts, day1
    T->>J: stepIndex = determineStepIndex(shifts, day1)
    U->>P: シフト操作(add/edit/delete)
    P->>T: shifts 更新 → stepIndex 再計算
    J-->>U: 次のステップを表示
    U->>P: 確定ボタン
    P->>J: skip() + setTourPhase("idle")
    P->>U: モーダル表示
Loading

Changes

  • 汎用 Tour コンポーネント: react-joyride@3 を導入し src/components/ui/Tour/useJoyride + forwardRef ベースの wrapper を追加。controls.skip() を ref 越しに露出して呼び出し側から終了を宣言できるようにした
  • クリック貫通 CSS: overlay の path に pointer-events: none !important を注入し、ツアー中も背後の UI(ドラッグ&ドロップ含む)を触れるようにした
  • デモシフトボード画面: /demo/shiftboard ルートと DemoShiftBoardPage を追加。mock shifts を baseDate 起点で再マッピングし、isConfirmed 状態管理と通知モーダルを実装
  • イベント駆動ツアー: DemoIntroTour で stepIndex controlled モードを採用。追加 / 編集 / 削除 / 確定の4ステップを shifts の状態から純粋関数で導出し、ユーザー操作に追従してステップが進む
  • 起動 FAB: DemoLauncherFab を右下に固定。本体とクローズボタンを1つのピル形にまとめ、確定後も再表示できるよう tourPhase を idle に保つ
  • LP 導線: /demo/shiftboard へのリンクを LP に追加(SP では非表示)
  • オーバーレイ残留バグ修正: モーダルを開く前に skip() + setTourPhase("idle") で joyride に片付けさせ、同一コミットで unmount すると portal が残る問題を回避
  • 文言調整: ダッシュボード / LP / FAQ のコピーをスタッフ募集タスク寄りに刷新

yn1323 and others added 27 commits April 19, 2026 17:05
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero直下に「まずはさわってみる」セクションを挿入。BrowserMockup内に
簡易シフトプレビューを表示し、別タブで /demo を開くCTAを配置する。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
_unregistered 配下に認証不要のデモページを新設。Convex/Clerk には触らず、
既存モックと ShiftForm を使って店長視点のシフトボードを編集可能な状態で表示する。
SP は "SP Coming Soon..." のみ。週の起点は来週の月曜(baseDate prop で差し替え可)。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
FAB起動 → 追加 / 編集 / 削除 / 確定 の操作完了で進む4ステップを stepIndex controlled
で実装。Tour wrapper は useJoyride + forwardRef で controls.skip() を露出し、親から
明示的に終了できる。ShiftGrid の data-tour をスタッフID別にし、ShiftPopover の
zIndex を Tour overlay より上に引き上げ。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
FAQ に「ずっと無料か」の項目を追加し、スタッフ向け説明を「メール→リンク」
に揃える。Nav CTA を「はじめてみる」に、ダッシュボードのモーダルタイトル /
トーストを募集タスク寄りの表現へ。WelcomeHero から「はじめに」ラベルを外し
サブコピーを追記。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
CLI バージョンと schema 参照のズレで lint info が出ていたのを解消。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
overlay SVG path の pointer-events を none に上書きする CSS を復活。
リファクタ時に撤去していたが、spotlight 外で mousedown が食われて
ドラッグ開始が失敗する回帰を招いていた。overlay の視覚はそのまま
残し、操作だけ素通しにする。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
プレースホルダの区切り、ヒーローの CTA ラベル、EditShopForm のヘルプ文、
AddStaffForm の追加ボタン、SetupModal / RecruitmentBoard / StaffRoster の
コピーを全体的に見直し。動作は変更なし。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
他ダッシュボードフォームと同じ表記に揃え、ロケールのばらつきを解消。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
skip() と unmount を同一イベントでバッチすると joyride 内部の片付けが
走らず overlay が残る。確定モーダルを開く前に skip + idle に倒して
片付けさせ、確定完了後も idle を維持して FAB を再表示する。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

@github-actions
Copy link
Copy Markdown
Contributor

📊 Playwright Test Report

テスト結果: 成功

5 passed / 0 failed / 0 skipped

Status Test
prepare Clerk testing token and sign in
もっと見る・すべて表示でデータが段階的に表示される
初回セットアップからシフト確定まで
未提出→提出→修正→再提出のハッピーパス
締切後の表示確認

View Report

デプロイ先: https://github.com/yn1323/hosting-pages

@yn1323 yn1323 merged commit 5ee68a8 into develop Apr 20, 2026
15 checks passed
@yn1323 yn1323 deleted the feat/0419-2 branch April 20, 2026 17:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant