データ・フォーム

入力フォーム・データ表示・スライダー・ローディングなどを扱うページです。

コンポーネント一覧は Gallery インデックス をご覧ください。

Forms

フォームはユーザーから情報を入力・選択してもらうためのUI部品です。 お問い合わせページ・登録フォーム・設定画面などで使います。 labelplaceholderrequired属性をタグに書くだけで、アクセシブルなフォームが完成します。

<hl-input name="name" label="お名前" placeholder="例:きゅー" required></hl-input> <hl-input name="email" label="メールアドレス" type="email" placeholder="example@mail.com" hint="公開されることはありません" optional></hl-input> <hl-input name="password" label="パスワード" type="password" placeholder="8文字以上" required></hl-input>
<hl-textarea name="message" label="お問い合わせ内容" placeholder="ご自由にどうぞ。" hint="10文字以上でご記入ください。" required rows="5"></hl-textarea>
<hl-select name="category" label="カテゴリ" required> <option value="">選択してください</option> <option value="web">Webツール</option> <option value="game">ゲーム</option> <option value="design">デザイン</option> </hl-select>
興味のある分野
ご連絡方法
<div class="hl-field"> <span class="hl-label">興味のある分野</span> <div class="hl-check-group"> <hl-checkbox name="interest" value="web" label="Webツール" checked></hl-checkbox> <hl-checkbox name="interest" value="game" label="ゲーム"></hl-checkbox> </div> </div> <div class="hl-field"> <span class="hl-label">ご連絡方法</span> <div class="hl-check-group"> <hl-radio name="contact" value="email" label="メール" checked></hl-radio> <hl-radio name="contact" value="twitter" label="X (Twitter)"></hl-radio> </div> </div>
<hl-toggle name="notify" label="メール通知を受け取る" checked></hl-toggle> <hl-toggle name="darkmode" label="ダークモード"></hl-toggle> <hl-toggle name="public" label="プロフィールを公開する" checked></hl-toggle>

スタイル付きのファイル選択コンポーネントです。drop属性でドラッグ&ドロップゾーンUIになります。 .filesプロパティで選択されたFileListを取得でき、changeイベントが発火します。

標準(ボタン型)

ドロップゾーン型(drop属性)

<!-- 標準ボタン型 --> <hl-file-input accept="image/*"></hl-file-input> <!-- ドラッグ&ドロップゾーン型 --> <hl-file-input accept="image/*" multiple drop></hl-file-input> <!-- accept: MIME タイプ・拡張子(例: "image/*" ".pdf") --> <!-- multiple: 複数ファイル選択を許可 --> <!-- drop: ドラッグ&ドロップゾーン UI を使用 --> /* JS API */ const fi = document.querySelector('hl-file-input'); // ファイル選択・ドロップ時に発火 fi.addEventListener('change', () => { console.log(fi.files); // FileList }); // 選択状態をクリア fi.reset();
Slider

数値を視覚的なトラック上でドラッグして入力する UI です。 音量・透明度・価格範囲など、連続した値を直感的に選ばせたい場面に使います。 マウス・タッチ・キーボード(← → Home End)での操作に対応します。

<hl-slider label="音量" min="0" max="100" value="60" unit="%"></hl-slider> <!-- step・ticks属性で目盛り表示 --> <hl-slider label="明るさ" min="0" max="100" value="80" step="5" unit="%" ticks="0,25,50,75,100"></hl-slider> <!-- 小数点ステップ --> <hl-slider label="ズーム倍率" min="1" max="5" step="0.5" value="2" unit="×"></hl-slider>

スライダーを動かすと hl-slider-change イベントが発火します。 e.detail.value で現在値を取得できます。

このボックスの透明度が変わります

現在値: 80

<hl-slider id="my-slider" label="不透明度" min="0" max="100" value="80" unit="%"></hl-slider> <script> document.getElementById('my-slider') .addEventListener('hl-slider-change', e => { console.log('value:', e.detail.value); }); </script>
属性デフォルト説明
minnumber0最小値
maxnumber100最大値
stepnumber1刻み値
valuenumbermin初期値・現在値
labelstringラベル文字列
unitstring値の後ろに付く単位(例: %、px)
ticksstringカンマ区切りの目盛りラベル
disabled真偽値false操作を無効化
Data Display

複数のデータを整理・表示するためのパーツです。 テーブルは行・列で情報を整理、 ページネーションは大量データをページ分割、 スケルトンはコンテンツロード中のプレースホルダーを表示します。

スマホでのテーブルに注意 — 列数が多いテーブルはスマホで横に広がりすぎて読みにくくなります。 列数が多い場合は「カードUI」「リスト表示」に置き換えるか、overflow-x: auto で横スクロールさせる扱いが一般的です。
名前 カテゴリ 状態 更新日
Halcyon UIWebツール公開中2025-05-07
ゲームログ vol.3ゲーム準備中2025-04-20
アバターメーカーデザイン公開中2025-03-15
音楽プレイリスト音楽非公開2025-02-01
<hl-table striped> <table> <thead> <tr><th>名前</th><th>カテゴリ</th><th>状態</th></tr> </thead> <tbody> <tr><td>Halcyon UI</td><td>Webツール</td><td>公開中</td></tr> </tbody> </table> </hl-table> <!-- 属性: striped(縞々) compact(コンパクト) -->

現在: 3ページ目 / 12ページ

<hl-pagination total="12" page="3"></hl-pagination> <!-- page変更イベントを受け取る例 --> <script> document.querySelector('hl-pagination') .addEventListener('hl-page-change', e => { console.log('ページ:', e.detail.page); }); </script> <!-- 属性: total(総ページ数), page(現在ページ), siblings(前後に表示するページ数) -->
<!-- カードのロード前プレースホルダー --> <hl-skeleton type="circle" width="56px" height="56px"></hl-skeleton> <hl-skeleton type="title" width="55%"></hl-skeleton> <hl-skeleton type="text" lines="3"></hl-skeleton> <hl-skeleton type="card" height="160px"></hl-skeleton> <!-- type: text | title | circle | rect | card -->
Loading Overlay

ページ最初の読み込み時に表示される全画面ローディング演出です。 キャラクターが道を歩き、プログレスバーが進捗を表示します。 ページ読み込み完了後に自動でフェードアウトします。

このコンポーネントはページ読み込み時に自動起動するため、通常ページ内デモはできません。 ページをリロードするとローディング画面を確認できます。

ローディング画面は以下のステージで進行します:

キャラクターが頷いて登場。 プログレスバーに合わせてキャラクターが道を歩く。マイルストーン(星)が順番に点灯。 読み込みが遅れる場合、つま先立ちでじっと待機。 キャラクターが手を振り、フェードアウト。

.hl-bar-track.hl-bar-fill で構成されるプログレスバーです。 グラデーションが Sage → Dusty Blue → Peach へ変化します。

65%
0% 35% 65% 100%
<!-- ローディングオーバーレイのHTMLはcomponents.jsが自動生成します --> <!-- JSで進捗を直接操作する場合: --> <script> const fill = document.querySelector('.hl-bar-fill'); const pct = document.querySelector('.hl-bar-pct'); fill.style.width = '75%'; pct.textContent = '75%'; </script>

ローディングで表示するキャラクターは components.js 内の変数で設定します。

// components.js 内で設定 const LOADING_CHAR = 'Akari'; // hl-char/Akari.png を参照 // 画像が存在しない場合は CSS で描いた // デフォルトの鳥キャラクター (.css-bird) にフォールバックします