An open API service indexing awesome lists of open source software.

https://github.com/someiro/liminal

宣言型 React UI ライブラリ
https://github.com/someiro/liminal

Last synced: 5 days ago
JSON representation

宣言型 React UI ライブラリ

Awesome Lists containing this project

README

          




宣言型 React UI ライブラリ

シンプルな組み立てコンポーネントによって、アプリケーション開発に集中することができます。


---
# Setup

1. このリポジトリをクローンし、プロジェクトの `components` ディレクトリに配置します。
2. アプリケーションのエントリーポイントで `global.css` をインポートします。
```tsx
import "@/components/liminal/global.css";
```
3. 必要なコンポーネントをインポートして使用します。
```tsx
import { Button, Text } from "@/components/liminal";

export default function Page() {
return (

Hello, liminal

);
}
```

---

# General

## Button

```tsx
console.log("click")}
>
Button

```

### props

- disabled
- boolean
- variant
- "outlined" | "filled" | "text"
- size
- "small" | "large"
- intention
- "primary" | "secondary" | "shade" | "negative"
- type
- "button" | "submit" | "reset"
- onClick
- ClickEventHandler
- children
- ReactNode

> ボタン表示用コンポーネント。
> `variant` によって見た目を切り替えることができます。
> `disabled` が true の場合、操作できなくなります。

---

## Text

```tsx

Hello Component00

```

### props

- size
- "xs" | "s" | "r" | "xr" | "l" | "xl"
- weight
- "normal" | "bold"
- children
- ReactNode

> テキスト表示用コンポーネント。
> `size` を変更することで文字サイズを調整できます。

---

# Form

## TextField

```tsx
const [name, setName] = useState("A");

setName(e.target.value)}
/>;
```

### props

- label
- string
- disabled
- boolean
- required
- boolean
- error
- boolean
- helperText
- string
- size
- "medium"
- value
- string
- onChange
- ChangeEventHandler

> テキスト入力用コンポーネント。
> `value` と `onChange` を使用することで、React state によるフォーム制御 (Controlled Component) に対応します。

---

## TextArea

```tsx
const [comment, setComment] = useState("");

setComment(e.target.value)}
/>;
```

### props

- label
- string
- disabled
- boolean
- required
- boolean
- error
- boolean
- helperText
- string
- size
- "medium"
- rows
- number
- value
- string
- onChange
- ChangeEventHandler

> 複数行入力用コンポーネント。
> `rows` を変更することで表示行数を調整できます。

---

## Checkbox

```tsx
const [checked, setChecked] = useState(false);

;
```

### props

- checked
- boolean
- disabled
- boolean
- label
- string
- onChange
- (checked: boolean) => void

> チェックボックス用コンポーネント。
> `checked` と `onChange` を使用することで選択状態を制御できます。

---

## Radio

```tsx
const [value, setValue] = useState("A");

;
```

### props

- label
- string
- value
- string
- onChange
- (value: string) => void
- disabled
- boolean
- contents
- RadioObject[]

#### RadioObject

- label
- string
- value
- string
- checked
- boolean

> ラジオボタン用コンポーネント。
> `contents` に配列形式で選択肢を指定できます。
> `value` と `onChange` を使用することで選択状態を制御できます。

---

## Switch

```tsx
const [enabled, setEnabled] = useState(false);

;
```

### props

- checked
- boolean
- onChange
- (checked: boolean) => void
- disabled
- boolean
- label
- string

> ON / OFF 状態を切り替えるためのコンポーネント。

---

## Select

```tsx
const [category, setCategory] = useState("music");

;
```

### props

- label
- string
- value
- string
- onChange
- (value: string) => void
- disabled
- boolean
- options
- SelectOption[]

#### SelectOption

- label
- string
- value
- string

> 選択式入力用コンポーネント。
> `options` に配列形式で選択肢を指定できます。
> `value` と `onChange` を使用することで、React state による選択状態の制御 (Controlled Component) に対応します。
> `disabled` が true の場合、操作できなくなります。

---

# Data Display

## Badge

```tsx

```

### props

- label
- string
- intention
- "primary" | "secondary" | "shade" | "negative" | "notice"

> ステータス表示用コンポーネント。

---

## Card

```tsx

```

### props

- image
- string
- title
- string
- detail
- string
- meta
- string

> サムネイル付き情報表示コンポーネント。

---

# Layout

## Container

```tsx

{props.children}

```

### props

- maxWidth
- number
- fullWidth
- boolean
- padding
- boolean
- children
- ReactNode

> コンテンツ横幅を制御するためのコンポーネント。

---

## CardContainer

```tsx


```

### props

- maxWidth
- number
- fullWidth
- boolean
- padding
- boolean
- children
- ReactNode

> Card を並べて表示するためのコンテナコンポーネント。
> レスポンシブ対応のグリッドレイアウトを提供します。

---

## Spacer

```tsx

```

### props

- size
- number

> コンポーネント間に余白を作成できます。

---

## Header

```tsx
Logo}
center={Center}
right={Login}
/>
```

### props

- maxWidth
- number
- fixed
- boolean
- left
- ReactNode
- center
- ReactNode
- right
- ReactNode

> ヘッダー表示用コンポーネント。
> `fixed` が true の場合、画面上部へ固定表示されます。

---

# Feedback

## Modal

```tsx
const [open, setOpen] = useState(false);

setOpen(true)}>
開く

タイトル

setOpen(false)}>
閉じる

```

### props

- open
- boolean
- children
- ReactNode

> モーダル表示用コンポーネント。
> `open` が true の場合に表示されます。

---

## Menu

```tsx

Home
Search

```

### props

- children
- ReactNode

> 展開式メニューコンポーネント。
> 画面下部へ固定表示されます。

---

## Loading

```tsx

```

### props

- size
- number

> ローディング表示用コンポーネント。

---

## Tabs

```tsx
Home,
},
{
value: "about",
label: "About",
component:

About

,
},
{
value: "work",
label: "Work",
component:

Work

,
},
]}
/>
```

### props

- default
- string
- tabs
- TabObject[]

#### TabObject

- value
- string
- label
- string
- component
- ReactNode

> タブ切り替え用コンポーネント。
> `tabs` に配列形式でタブ情報を指定できます。
> `component` に指定した ReactNode が、選択中タブの内容として表示されます。

---

## Upload

```tsx
const [thumbnail, setThumbnail] = useState({
file: null,
preview: "",
});

;
```

### props

- value
- UploadValue
- onChange
- (value: UploadValue) => void

#### UploadValue

- file
- Blob | null
- preview
- string

> 画像アップロード用コンポーネント。
> jpg / png 形式の画像をアップロードできます。
> ドラッグ&ドロップ、またはクリックによるファイル選択に対応しています。
> アップロード後は画像編集画面が表示され、16:9 の比率でトリミングできます。
> 完了時に 1280×720 のサムネイル画像が生成されます。
> `value` と `onChange` を使用することで、React state による画像データの制御 (Controlled Component) に対応します。