Why
なぜパタパタなのか
パタパタ式の盤面は、値を「表示する」のではなく、値に「たどり着く」装置です。目的の文字までフラップが一枚ずつめくれていく——その間こそが体験のすべて。ptpt はこの待ち時間をコストではなく価値として扱います。文字も画像も同じ Frame という語彙で扱い、Cell は一個のパタパタ、Board は一列の Cell を時間差で動かして、本物のように盤面を波打たせます。framework-agnostic なコアに、極薄のラッパーを重ねる構成です。
Departures
5つの配布物
中心にあるのは framework-agnostic で依存ゼロのエンジン @love-rox/ptpt-core(gzip 約 3 KB、ESM、styles.css 同梱)。スタックに合わせて好みのアダプタを1つ(または複数)選んでください。core は依存として自動的に引き込まれます。
core
@love-rox/ptpt-core · v0.1.1
Framework-agnostic エンジン
エンジンの本体。createCell / createBoard、フレーム、プリセット、ディレイを提供します。依存ゼロ・ESM・gzip 約 3 KB で、computeFlipPath のような純粋関数も export 済み。すべてのアダプタはこの core の上に作られています。
react
@love-rox/ptpt-react · v0.1.1
React コンポーネント
<Patapata> / <PatapataBoard> と useFlipCell フック。クライアントコンポーネント("use client")なので、Waku や Next.js の RSC 構成にもそのまま収まります。
vue
@love-rox/ptpt-vue · v0.1.1
Vue 3 コンポーネント
Vue 3 向けの <Patapata> / <PatapataBoard> と useFlipCell コンポーザブル。React 版と同じオプション・同じ挙動です。
rehype
@love-rox/ptpt-rehype · v0.1.1
rehype プラグイン
印を付けた Markdown / HTML をパタパタ盤面に変換します。build 時に data-ptpt-* 付きの読めるテキストを出力し、hydrate ヘルパが動かします。JS なしでも文字は読めます。
astro
@love-rox/ptpt-astro · v0.1.1
Astro インテグレーション + コンポーネント
Markdown プラグインの登録、スタイルシートの注入、hydrator の実行をまとめて面倒見ます。Patapata.astro / PatapataBoard.astro を同梱し、テンプレートに盤面を直接置けます。
Stylesheet
共通のスタイルシート
@love-rox/ptpt-core/styles.css を一度 import すれば、どの盤面もダークなパタパタの見た目で動き出します。幅・高さ・めくる速度・色はすべて .ptpt-cell のカスタムプロパティで調整でき、スタイルシートを使わずにクラスを自分で当てる headless 運用も可能です。
@import "@love-rox/ptpt-core/styles.css";Behaviour
全体に共通する性質
- Frame(フラップ)は text / image /
elementのいずれかで、slugで識別します。素の文字列は text フレームに正規化されます。 Boardは1つのrole="status"ライブリージョンです。各セルはaria-hiddenで、確定した結果だけがスクリーンリーダーに通知されます。prefers-reduced-motionに自動連動します。reducedMotion: 'instant'ならアニメーションせず即座に目標へ切り替えます。- プリセットと delay 関数は tree-shakable なサブパスで提供。数が増えてもバンドルサイズには影響しません。
- preset には素の文字列ではなく
PresetDefinitionオブジェクトを渡してください。文字列はプリセット名ではなく、フラップの文字列そのものとして解釈されます。
Browser support
ブラウザ対応
フリップは3枚重ねのハーフセルにかける transform: rotateX() と、動く box-shadow だけで作っています。すべてのモダンブラウザで動く標準 CSS のみ——3D ライブラリも canvas も依存もありません。
Versioning
バージョンの揃え方
5 つのパッケージはバージョン番号を @love-rox/ptpt-core に揃えてリリースしています。「core は 0.3 だけど react は 0.2.5」のような不整合で迷わないよう、どれか一つでも変更があれば他もまとめて同じ番号に上がる運用です。
License
ライセンス
MIT License。個人・法人問わず自由に利用できます。
final call · boarding
触ってみる
プリセットとフリップモードを選んで、セルの列が次の行き先へ波打つ様子を確認できるデモを用意しました。本物の発車案内板のように動きます。