| Crates.io | gftdcojp_designsystem |
| lib.rs | gftdcojp_designsystem |
| version | 0.1.4 |
| created_at | 2025-04-09 18:17:15.455693+00 |
| updated_at | 2025-04-12 17:58:42.533736+00 |
| description | Gftd Japan株式会社 / デザインシステム |
| homepage | |
| repository | https://github.com/gftdcojp/designsystem |
| max_upload_size | |
| id | 1627144 |
| size | 2,815,638 |
Gftd Japan株式会社の「高い知性と倫理観に基づき、最先端の科学技術を用いた、サイバーセキュリティ技術を用いて、我らと我らの子孫が豊かで情緒的な暮らしを送ることができるよう、いい感じの社会を作る」の実現に寄与するデザインアセットです。
Cargo.tomlに依存関係を追加:
[dependencies]
gftdcojp_designsystem = "0.1.3"
use yew::prelude::*;
use gftdcojp_designsystem::components::*;
use gftdcojp_designsystem::styles::utils::add_button_styles;
#[derive(Debug, Clone)]
pub enum Msg {
ButtonClicked,
NoOp,
}
struct App;
impl Component for App {
type Message = Msg;
type Properties = ();
fn create(_ctx: &Context<Self>) -> Self {
Self
}
fn update(&mut self, _ctx: &Context<Self>, msg: Self::Message) -> bool {
match msg {
Msg::ButtonClicked => {
// ボタンクリック時の処理
true
}
Msg::NoOp => false,
}
}
fn view(&self, ctx: &Context<Self>) -> Html {
// グローバルボタンスタイルを追加
let _ = add_button_styles();
html! {
<div>
<h1>{"Gftd Japan株式会社 / デザインシステム"}</h1>
// プライマリボタン
<Button
style={ButtonStyle::SolidFill}
size={ButtonSize::Medium}
state={ButtonState::Default}
children={"送信".to_string()}
onclick={ctx.link().callback(|_| Msg::ButtonClicked)}
/>
// セカンダリボタン
<Button
style={ButtonStyle::Outlined}
size={ButtonSize::Medium}
state={ButtonState::Default}
children={"キャンセル".to_string()}
onclick={ctx.link().callback(|_| Msg::NoOp)}
/>
// 無効状態のボタン
<Button
style={ButtonStyle::SolidFill}
size={ButtonSize::Medium}
state={ButtonState::Disabled}
children={"無効".to_string()}
onclick={ctx.link().callback(|_| Msg::NoOp)}
/>
</div>
}
}
}
fn main() {
yew::Renderer::<App>::new().render();
}
デジタル庁デザインシステムに準拠したボタンコンポーネント:
各スタイル、サイズ、状態の組み合わせに対応し、アクセシビリティに配慮した実装となっています。
use yew::prelude::*;
use gftdcojp_designsystem::components::*;
use gftdcojp_designsystem::styles::utils::add_button_styles;
// ボタンの使用例
// Yewを使用したボタンコンポーネントの例
struct App;
impl Component for App {
type Message = ();
type Properties = ();
fn create(_ctx: &Context<Self>) -> Self {
Self
}
fn view(&self, ctx: &Context<Self>) -> Html {
// グローバルボタンスタイルを追加
let _ = add_button_styles();
html! {
<div>
// 塗りボタン(デフォルト)
<Button
style={ButtonStyle::SolidFill}
size={ButtonSize::Medium}
state={ButtonState::Default}
children={"送信".to_string()}
onclick={ctx.link().callback(|_| ())}
/>
// アウトラインボタン(ホバー状態)
<Button
style={ButtonStyle::Outlined}
size={ButtonSize::Medium}
state={ButtonState::Hover}
children={"キャンセル".to_string()}
onclick={ctx.link().callback(|_| ())}
/>
// テキストボタン(無効状態)
<Button
style={ButtonStyle::Text}
size={ButtonSize::Small}
state={ButtonState::Disabled}
children={"詳細".to_string()}
onclick={ctx.link().callback(|_| ())}
/>
</div>
}
}
}
テキストリンクコンポーネント:
use yew::prelude::*;
use gftdcojp_designsystem::components::*;
use gftdcojp_designsystem::styles::utils::add_link_styles;
// リンクの使用例
// Yewを使用したリンクコンポーネントの例
html! {
<>
// グローバルリンクスタイルを追加
{ add_link_styles() }
<Link
href="https://example.com"
variant={LinkVariant::Standard}
size={LinkSize::Medium}
weight={LinkWeight::Normal}
state={LinkState::Default}
external={true}
target="_blank"
>
{"外部サイトへのリンク"}
</Link>
</>
}
コンテンツをまとめて表示するカードコンポーネント:
use yew::prelude::*;
use gftdcojp_designsystem::components::*;
use gftdcojp_designsystem::styles::utils::add_card_styles;
// カードの使用例
// Yewを使用したカードコンポーネントの例
html! {
<>
// グローバルカードスタイルを追加
{ add_card_styles() }
<Card
variant={CardVariant::WithFunction}
onclick={ctx.link().callback(|_| ())}
>
<CardArea area_type={CardAreaType::Main}>
<CardTitle
title="カードのタイトル".to_string()
label={"ラベル".to_string()}
/>
<CardContent
content="カードのコンテンツです。".to_string()
/>
</CardArea>
</Card>
</>
}
コンテンツに立体感を与えるためのシャドウコンポーネント:
| コンポーネント名 | ステータス | 進捗率(%) | 備考 |
|---|---|---|---|
| Button | ✅ 完成 | 100% | デジタル庁デザインシステム準拠 |
| Link | ✅ 完成 | 100% | |
| Card | ✅ 完成 | 100% | |
| Accordion | ✅ 完成 | 100% | |
| Elevation | ✅ 完成 | 100% | |
| Icon | ✅ 完成 | 100% | |
| Label | ✅ 完成 | 100% | |
| Banner | ✅ 完成 | 100% | |
| TextArea | ✅ 完成 | 100% | |
| Layout | ✅ 完成 | 100% | |
| Divider | ✅ 完成 | 100% | |
| Disclosure | ✅ 完成 | 100% | |
| ReturnTop | ✅ 完成 | 100% |
src/components/: コアコンポーネント
src/styles/: スタイルシート
src/lib.rs: ライブラリのエントリポイント
src/examples/: 使用例とデモ
tests/: テストケース
Copyright (c) 2023 Gftd Japan 株式会社
このクレートの開発と保守、および法的責任は Gftd Japan 株式会社 が負っています。 MITライセンスの条件に従って使用および再配布できます。