Skip to content

Commit

Permalink
feat: add icon component
Browse files Browse the repository at this point in the history
  • Loading branch information
kirchoni committed May 3, 2024
1 parent a7b7f53 commit fbfb054
Show file tree
Hide file tree
Showing 8 changed files with 2,326 additions and 1 deletion.
31 changes: 31 additions & 0 deletions apps/docs/data/design/material-you/components/icon.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: Icon
---

# Icon

The `Icon` component is used to display an icon. It utilizes the [`Material Symbols`](https://fonts.google.com/icons) font to render the icon.

<Demo src="/demos/material-you/icon" />

## Usage

```jsx
import { BakaIcon } from "baka-ui";

function MyComponent() {
return <BakaIcon>settings</BakaIcon>;
}
```

## Variants

The `Icon` component supports the following variants:

- `primary` and `error` &mdash; for primary and error icons, respectively.
- `small`, `medium`, and `large` &mdash; for sizing the icon.
- `filled` &mdash; for filled icons.

```jsx
<BakaIcon variant={["primary", "large", "filled"]}>settings</BakaIcon>
```
1 change: 1 addition & 0 deletions apps/docs/data/design/material-you/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ The package contains styles for the following `baka-ui` component primitives:
- [`Chip`](/design/material-you/components/chip)
- [`Dialog`](/design/material-you/components/dialog)
- [`Divider`](/design/material-you/components/divider)
- [`Icon`](/design/material-you/components/icon)
- [`Layout`](/design/material-you/components/layout)
- [`List`](/design/material-you/components/list)
- [`Menu`](/design/material-you/components/menu)
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/public/demos.json

Large diffs are not rendered by default.

35 changes: 35 additions & 0 deletions apps/docs/src/app/demos/material-you/icon/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { BakaIcon } from "baka-ui";

export default function IconDemo() {
return (
<div
style={{
display: "grid",
gridTemplateColumns: "repeat(6, 1fr)",
gap: "16px",
alignItems: "center",
}}
>
<BakaIcon variant={["small"]}>settings</BakaIcon>
<BakaIcon variant={["filled", "small"]}>settings</BakaIcon>
<BakaIcon variant={["medium"]}>settings</BakaIcon>
<BakaIcon variant={["medium", "filled"]}>settings</BakaIcon>
<BakaIcon variant={["large"]}>settings</BakaIcon>
<BakaIcon variant={["filled", "large"]}>settings</BakaIcon>

<BakaIcon variant={["primary", "small"]}>settings</BakaIcon>
<BakaIcon variant={["primary", "filled", "small"]}>settings</BakaIcon>
<BakaIcon variant={["primary", "medium"]}>settings</BakaIcon>
<BakaIcon variant={["primary", "medium", "filled"]}>settings</BakaIcon>
<BakaIcon variant={["primary", "large"]}>settings</BakaIcon>
<BakaIcon variant={["primary", "filled", "large"]}>settings</BakaIcon>

<BakaIcon variant={["error", "small"]}>settings</BakaIcon>
<BakaIcon variant={["error", "filled", "small"]}>settings</BakaIcon>
<BakaIcon variant={["error", "medium"]}>settings</BakaIcon>
<BakaIcon variant={["error", "medium", "filled"]}>settings</BakaIcon>
<BakaIcon variant={["error", "large"]}>settings</BakaIcon>
<BakaIcon variant={["error", "filled", "large"]}>settings</BakaIcon>
</div>
);
}
49 changes: 49 additions & 0 deletions apps/docs/src/app/demos/material-you/icon/stories/icon.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/// <reference types="baka-material-you" />

import React from "react";
import type { BakaDesign } from "baka-core";
import type { Meta, StoryObj } from "@storybook/react";
import IconStory, { IconStoryProps, defaultProps } from "./page";
import icons from "./icons.json";

const variantOptions: BakaDesign["IconVariant"][] = ["primary", "error"];

const meta: Meta = {
title: "Material You/Icon",
component: (props: IconStoryProps) => <IconStory {...props} />,
parameters: {
layout: "centered",
},
argTypes: {
icon: {
control: {
type: "select",
},
options: icons,
},

variant: {
control: "radio",
map: {
none: null,
primary: "primary",
error: "error",
},
options: ["none", ...variantOptions],
},
size: {
control: "radio",
options: ["small", "medium", "large"],
},
children: { table: { disable: true } },
},
};

export default meta;

type Story = StoryObj<typeof meta>;
export const Basic: Story = {
args: {
...defaultProps,
},
};
Loading

0 comments on commit fbfb054

Please sign in to comment.