Marker
日付の区切りやシステムイベントのように、コンテンツの間に置く控えめなメモです。日付と時刻はスティッキーで、「今日」や「昨日」と表示されます。
Mira added Jun and Sol
Jun renamed the thread to “Marker”
Sol pinned a message
Sol merged #482 into main
New messages
pnpm dlx shadcn@latest add https://hextaui.com/r/marker.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add @base-ui/react class-variance-authority cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/marker.tsx インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
バリアント
default は控えめな注記、separator は2本の細い線の間に中央配置、border はセクション見出しのように下線を引きます。
固定日付
sticky を指定すると、マーカーはスクロール領域の上端に留まります。固定されると線がフェードして、ラベルが浮かぶピルに変わり、メッセージの上でも読みやすくなります。次の日付が前の日付を押し出すように、日ごとに別々のセクションに入れてください。
相対日付
<MarkerTime /> は、今日、昨日、直近1週間以内の曜日、それ以前は短い日付と読める <time> を描画します。深夜0時に自動で更新されます。独自の文言にするには format を渡します。
アクティビティ
アクティビティログ向けに、マーカーをリスト項目として描画します。内部のリンクはホバーされるまで下線が付きます。
長いコンテンツ
注記は折り返され、区切りのない文字列はレイアウトを広げずに改行されます。区切り線は両側に最小の長さを保ちます。
右から左
アイコンとテキストは文字の読み方向に従います。
- マーカーはプレーンテキストなので、スクリーンリーダーはその場で読み上げます。アイコンは読み上げから隠されます。
<MarkerTime />はdateTimeに正確な時刻を保持しつつ、わかりやすいラベルを表示します。- 視差効果の軽減が有効な場合、固定されたピルはアニメーションなしで表示されます。
| プロパティ | 型 | デフォルト |
|---|---|---|
variant | "default" | "separator" | "border" | "default" |
stickyスクロール領域の上端に固定され、固定されている間はピル型になります。 | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="marker" | CSS でマーカーを指定します。 |
data-variant | 現在のバリアント。 |
data-sticky | sticky が有効なときに付きます。 |
data-stuck | マーカーが上端に固定されている間付きます。 |
--marker-sticky-top | 固定されている間の上端からの距離。デフォルトは 0.5rem です。 |
| 属性 | 説明 |
|---|---|
data-slot="marker-content" | テキスト。固定されている間はピルになります。 |
| 属性 | 説明 |
|---|---|
data-slot="marker-icon" | 16pxのアイコンボックス。スクリーンリーダーからは隠されます。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
date必須。new Date() が受け付ける任意の値。 | Date | string | number | – |
localeサーバーとブラウザーで一致するよう、デフォルトでは固定です。 | Intl.LocalesArgument | "en-US" |
format相対ラベルを独自のものに置き換えます。 | (date: Date) => ReactNode | – |
| 属性 | 説明 |
|---|---|
data-slot="marker-time" | time 要素。ISO 形式の dateTime を持ちます。 |