patterns
Form Basic
問い合わせなどの基本フォームセット。
forminputtextareacheckboxpattern
Install
“壊れにくさ”優先のため、依存は増やさずに ファイルをコピーして使う 形式です。
Files
まずは下記ファイルをプロジェクトに配置してください。
required-files.md
- tailwind-motion-kit/css/00_tokens.css (css)
- tailwind-motion-kit/css/26_input.css (css)
- tailwind-motion-kit/css/45_textarea.css (css)
- tailwind-motion-kit/css/25_button.css (css)
- tailwind-motion-kit/css/29_checkbox.css (css)Option A
まずは Bundle を読み込んで、動作を確認するのがおすすめです。
globals.css
/* Bundle: まずはこれが一番簡単 */
@import "./tailwind-motion-kit/css/99_bundle.css";Option B
必要な CSS だけ読み込みたい場合はこちら。
globals.css
/* 1) CSS: グローバルCSSに追記 */
@import "./tailwind-motion-kit/css/00_tokens.css";
@import "./tailwind-motion-kit/css/26_input.css";
@import "./tailwind-motion-kit/css/45_textarea.css";
@import "./tailwind-motion-kit/css/25_button.css";
@import "./tailwind-motion-kit/css/29_checkbox.css";JavaScript
CSS-only のため初期化は不要です。
init.js
/* JS 初期化は不要です */Snippets
Copy & paste
この部品には snippet が登録されていません。
Files
この部品が参照する実ファイルです。
tailwind-motion-kit/css/00_tokens.csscss
tailwind-motion-kit/css/00_tokens.css
/*!
* Tailwind Motion Kit (mk) - Tokens
* --------------------------------
* 目的: 速度・距離・イージング等の“モーション言語”を統一し、
* パーツを増やしても品位が崩れない状態を作ります。
*
* 使い方:
* - :root の変数を上書きするだけで全体の動きを一括調整できます。
* - 個別要素は style="" か data-mk-* 属性で上書きできます(JSがある場合)。
*/
:root {
/* --- イージング(加減速) --- */
--mk-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
--mk-ease-in: cubic-bezier(0.32, 0, 0.67, 0);
--mk-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
/* “少しだけ遊び”が欲しい時用(多用は上品さを損ねます) */
--mk-ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);
/* --- 時間 --- */
--mk-duration-fast: 160ms;
--mk-duration-medium: 280ms;
--mk-duration-slow: 600ms;
--mk-duration-slower: 900ms;
/* コンポーネントが参照する“共通デフォルト” */
--mk-duration: var(--mk-duration-medium);
--mk-ease: var(--mk-ease-out);
--mk-delay: 0ms;
/* --- 移動量 --- */
--mk-distance-1: 6px;
--mk-distance-2: 12px;
--mk-distance-3: 20px;
--mk-distance: var(--mk-distance-2);
/* --- ぼかし --- */
--mk-blur-0: 0px;
--mk-blur-1: 6px;
--mk-blur-2: 10px;
--mk-blur: var(--mk-blur-1);
/* --- 影(浮遊感) --- */
--mk-shadow-lift: 0 12px 30px rgba(0, 0, 0, 0.14);
--mk-shadow-soft: 0 10px 22px rgba(0, 0, 0, 0.10);
/* --- アンダーライン --- */
--mk-underline-thickness: 2px;
--mk-underline-offset: 0.2em;
/* --- フォーカスリング --- */
--mk-ring-color: rgba(59, 130, 246, 0.35);
--mk-ring-size: 3px;
/* --- コントロール(button / input / select) --- */
--mk-control-radius: 12px;
--mk-control-bg: rgba(255, 255, 255, 0.05);
--mk-control-border: rgba(255, 255, 255, 0.16);
/* --- スケルトン(ロード中) --- */
--mk-skeleton-a: rgba(0, 0, 0, 0.06);
--mk-skeleton-b: rgba(0, 0, 0, 0.12);
--mk-skeleton-speed: 1250ms;
/* --- スピナー --- */
--mk-spinner-size: 1.2em;
--mk-spinner-border: 2px;
/* --- テキスト分割表示 --- */
--mk-char-step: 25ms; /* 1文字ごとの遅延 */
/* --- ダイアログ / ドロワー --- */
--mk-dialog-duration: var(--mk-duration-slow);
--mk-dialog-ease: var(--mk-ease-out);
--mk-dialog-backdrop-opacity: 0.45;
--mk-dialog-offset: var(--mk-distance-3);
--mk-dialog-scale-from: 0.995;
--mk-dialog-radius: 18px;
/* --- 折りたたみ(アコーディオン) --- */
--mk-collapse-duration: var(--mk-duration-medium);
--mk-collapse-ease: var(--mk-ease);
/* --- Toast / 通知 --- */
--mk-toast-gap: 10px;
--mk-toast-width: min(360px, calc(100vw - 24px));
--mk-toast-duration: var(--mk-duration-medium);
--mk-toast-ease: var(--mk-ease-out);
/* --- スクロール進捗(トップバー) --- */
--mk-scroll-progress-top: 0px;
--mk-scroll-progress-height: 3px;
--mk-scroll-progress-ease: linear;
/* --- ナビ下線インジケータ --- */
--mk-nav-underline-height: 2px;
--mk-nav-underline-radius: 999px;
--mk-nav-duration: var(--mk-duration-medium);
--mk-nav-ease: var(--mk-ease-out);
/* --- UI state(idle/loading/success/error) --- */
--mk-state-hold-success: 900ms;
--mk-state-hold-error: 1400ms;
/* --- Tabs --- */
--mk-tabs-gap: 10px;
--mk-tabs-radius: 999px;
--mk-tabs-duration: var(--mk-duration-medium);
--mk-tabs-ease: var(--mk-ease-out);
--mk-tabs-underline-height: 2px;
--mk-tabs-underline-color: currentColor;
/* --- Tooltip --- */
--mk-tooltip-bg: rgba(0, 0, 0, 0.82);
--mk-tooltip-fg: #fff;
--mk-tooltip-radius: 10px;
--mk-tooltip-padding: 10px 12px;
--mk-tooltip-gap: 8px;
--mk-tooltip-shadow: 0 18px 60px rgba(0,0,0,0.35);
--mk-tooltip-max-width: 260px;
/* --- Stepper --- */
--mk-stepper-gap: 14px;
--mk-step-size: 28px;
--mk-step-line: rgba(255, 255, 255, 0.14);
--mk-step-done: rgba(59, 130, 246, 1);
--mk-step-current: rgba(255, 255, 255, 0.92);
--mk-step-todo: rgba(255, 255, 255, 0.5);
/* --- Card --- */
--mk-card-radius: 20px;
}
/* motion減衰設定のあるユーザーには、動きを最小化して“結果”を出します */
@media (prefers-reduced-motion: reduce) {
:root {
--mk-duration-fast: 0ms;
--mk-duration-medium: 0ms;
--mk-duration-slow: 0ms;
--mk-duration-slower: 0ms;
--mk-duration: 0ms;
--mk-delay: 0ms;
}
}
tailwind-motion-kit/css/26_input.csscss
tailwind-motion-kit/css/26_input.css
/*!
* Tailwind Motion Kit (mk) - Input
* ------------------------------
* 目的: テキスト入力の基本型。
*/
.mk-input,
.mk-textarea {
width: 100%;
padding: 10px 12px;
border-radius: var(--mk-control-radius, 12px);
border: 1px solid var(--mk-control-border, rgba(255, 255, 255, 0.16));
background: var(--mk-control-bg, rgba(255, 255, 255, 0.05));
color: rgba(255, 255, 255, 0.92);
font-size: 0.9rem;
transition: border-color var(--mk-duration) var(--mk-ease),
box-shadow var(--mk-duration) var(--mk-ease);
}
.mk-textarea {
min-height: 120px;
resize: vertical;
}
.mk-input::placeholder,
.mk-textarea::placeholder {
color: rgba(255, 255, 255, 0.4);
}
.mk-input:focus,
.mk-textarea:focus {
outline: none;
border-color: rgba(59, 130, 246, 0.5);
box-shadow: 0 0 0 var(--mk-ring-size) var(--mk-ring-color);
}
.mk-input-group {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 12px;
border-radius: var(--mk-control-radius, 12px);
border: 1px solid var(--mk-control-border, rgba(255, 255, 255, 0.16));
background: var(--mk-control-bg, rgba(255, 255, 255, 0.05));
}
.mk-input-addon {
font-size: 0.8rem;
color: rgba(255, 255, 255, 0.6);
}
tailwind-motion-kit/css/45_textarea.csscss
tailwind-motion-kit/css/45_textarea.css
/*
* Tailwind Motion Kit (mk) - Textarea
* -----------------------------------
* 目的: 長文入力を気持ちよくする。
*/
.mk-textarea {
width: 100%;
min-height: 120px;
padding: 12px 14px;
border-radius: var(--mk-control-radius);
border: 1px solid var(--mk-control-border);
background: var(--mk-control-bg);
color: rgba(255, 255, 255, 0.9);
outline: none;
font-size: 0.95rem;
}
.mk-textarea::placeholder {
color: rgba(255, 255, 255, 0.4);
}
.mk-textarea:focus {
border-color: rgba(59, 130, 246, 0.55);
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.18);
}
tailwind-motion-kit/css/25_button.csscss
tailwind-motion-kit/css/25_button.css
/*!
* Tailwind Motion Kit (mk) - Button
* -------------------------------
* 目的: CTA / 操作をまとめる基本ボタン。
*/
.mk-button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 10px 18px;
border-radius: var(--mk-control-radius, 12px);
border: 1px solid var(--mk-control-border, rgba(255, 255, 255, 0.16));
background: var(--mk-control-bg, rgba(255, 255, 255, 0.05));
color: var(--mk-control-fg, rgba(255, 255, 255, 0.92));
font-size: 0.9rem;
font-weight: 600;
line-height: 1;
cursor: pointer;
transition: transform var(--mk-duration) var(--mk-ease),
border-color var(--mk-duration) var(--mk-ease),
background var(--mk-duration) var(--mk-ease),
color var(--mk-duration) var(--mk-ease);
}
.mk-button:hover {
border-color: rgba(59, 130, 246, 0.45);
}
.mk-button:active {
transform: translateY(1px) scale(0.99);
}
.mk-button:focus-visible {
outline: none;
box-shadow: 0 0 0 var(--mk-ring-size) var(--mk-ring-color);
}
.mk-button[data-variant="primary"] {
background: linear-gradient(135deg, rgba(59, 130, 246, 1), rgba(59, 130, 246, 0.7));
border-color: rgba(59, 130, 246, 0.6);
color: #0b0d12;
}
.mk-button[data-variant="ghost"] {
background: transparent;
border-color: transparent;
}
.mk-button[data-variant="outline"] {
background: transparent;
border-color: rgba(255, 255, 255, 0.3);
}
.mk-button:disabled {
opacity: 0.5;
cursor: not-allowed;
transform: none;
}
tailwind-motion-kit/css/29_checkbox.csscss
tailwind-motion-kit/css/29_checkbox.css
/*!
* Tailwind Motion Kit (mk) - Checkbox
* ---------------------------------
* 目的: チェックボックスを整える。
*/
.mk-checkbox {
appearance: none;
width: 18px;
height: 18px;
border-radius: 4px;
border: 1px solid rgba(255, 255, 255, 0.25);
background: rgba(255, 255, 255, 0.04);
display: inline-grid;
place-items: center;
cursor: pointer;
transition: border-color var(--mk-duration) var(--mk-ease),
background var(--mk-duration) var(--mk-ease);
}
.mk-checkbox::after {
content: "";
width: 6px;
height: 10px;
border-right: 2px solid #fff;
border-bottom: 2px solid #fff;
transform: rotate(45deg) scale(0);
transition: transform var(--mk-duration) var(--mk-ease);
}
.mk-checkbox:checked {
background: rgba(59, 130, 246, 0.8);
border-color: rgba(59, 130, 246, 0.9);
}
.mk-checkbox:checked::after {
transform: rotate(45deg) scale(1);
}
.mk-checkbox:focus-visible {
outline: none;
box-shadow: 0 0 0 var(--mk-ring-size) var(--mk-ring-color);
}
Preview
Tips
- • デザイン側は CSS 変数(tokens)で一括調整できます。
- • 動きは “短く・小さく・同じ癖” を優先すると品位が保てます。
- • prefers-reduced-motion を必ず考慮してください。
