Skip to content

Commit 3d78dab

Browse files
committed
feat(component): add Audio component
fix #486
1 parent 42d129b commit 3d78dab

File tree

5 files changed

+116
-0
lines changed

5 files changed

+116
-0
lines changed

src/lib/Audio/Audio.mdx

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Meta, ArgTypes, Story, Canvas, Source, Markdown, Primary } from "@storybook/blocks";
2+
import {Audio} from './Audio.tsx';
3+
import * as AudioStories from "./Audio.stories.tsx";
4+
5+
<Meta title="Components/Audio" of={AudioStories} />
6+
7+
# Audio
8+
9+
## Description
10+
11+
Audio is a React component.
12+
13+
## Imports
14+
15+
<Markdown>{`
16+
\`\`\`ts
17+
import {Audio} from 'koval-ui';
18+
\`\`\`
19+
`}</Markdown>
20+
21+
<Primary />
22+
23+
<ArgTypes of={Audio}/>
24+

src/lib/Audio/Audio.module.css

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.audio {
2+
--foo: "bar";
3+
}

src/lib/Audio/Audio.stories.tsx

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import type {Meta, StoryObj} from '@storybook/react';
2+
// import {fn} from '@storybook/test';
3+
4+
import {Audio} from './Audio.tsx';
5+
6+
const meta = {
7+
title: 'Components/Audio',
8+
component: Audio,
9+
parameters: {
10+
// More on how to position stories at: https://storybook.js.org/docs/react/configure/story-layout
11+
layout: 'centered',
12+
},
13+
args: {},
14+
argTypes: {
15+
className: {
16+
table: {
17+
disable: true,
18+
},
19+
},
20+
id: {
21+
table: {
22+
disable: true,
23+
},
24+
},
25+
role: {
26+
table: {
27+
disable: true,
28+
},
29+
},
30+
},
31+
} as Meta<typeof Audio>;
32+
33+
export default meta;
34+
type Story = StoryObj<typeof meta>;
35+
36+
export const Primary: Story = {
37+
render: args => {
38+
return <Audio {...args} />;
39+
},
40+
args: {},
41+
};
42+
43+
export const WithCode: Story = {
44+
render: args => {
45+
// here comes the code
46+
return <Audio {...args} />;
47+
},
48+
};
49+
50+
WithCode.args = {
51+
id: 'foo',
52+
};
53+
54+
WithCode.argTypes = {};
55+
56+
WithCode.parameters = {
57+
docs: {
58+
source: {
59+
language: 'tsx',
60+
type: 'code',
61+
},
62+
},
63+
};

src/lib/Audio/Audio.tsx

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import type {ReactNode} from 'react';
2+
import {forwardRef} from 'react';
3+
import classNames from 'classnames';
4+
5+
import type {DataAttributes, LibraryProps} from '@/internal/LibraryAPI';
6+
7+
import classes from './Audio.module.css';
8+
9+
export type Props = DataAttributes &
10+
LibraryProps & {
11+
children?: ReactNode;
12+
};
13+
14+
export const Audio = forwardRef<HTMLDivElement, Props>(
15+
({children, className, ...nativeProps}, ref) => {
16+
return (
17+
<div {...nativeProps} className={classNames(classes.audio, className)} ref={ref}>
18+
<audio src=""></audio>
19+
{children}
20+
</div>
21+
);
22+
}
23+
);
24+
25+
Audio.displayName = 'Audio';

src/lib/Audio/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {Audio} from './Audio.tsx';

0 commit comments

Comments
 (0)