diff --git a/src/Button/index.ts b/src/Button/index.ts
new file mode 100644
index 0000000..40d81d6
--- /dev/null
+++ b/src/Button/index.ts
@@ -0,0 +1,84 @@
+import type { IStyledComponent } from 'styled-components';
+import styled from 'styled-components';
+
+import type { ButtonProps as AkButtonProps } from '@ariakit/react';
+import { Button as AkButton } from '@ariakit/react';
+import { darken } from '@markflowy/theme';
+
+type ButtonSize = 'small' | 'medium' | 'large';
+export interface ButtonProps extends AkButtonProps {
+ btnType?: 'primary';
+ size?: ButtonSize;
+}
+
+const sizeSpaceMap: Record<
+ ButtonSize,
+ {
+ paddingHorizontal: string;
+ paddingVertical: string;
+ }
+> = {
+ small: {
+ paddingHorizontal: 'spaceXs',
+ paddingVertical: 'spaceXs',
+ },
+ medium: {
+ paddingHorizontal: 'spaceL',
+ paddingVertical: 'spaceSm',
+ },
+ large: {
+ paddingHorizontal: 'spaceXl',
+ paddingVertical: 'spaceXl',
+ },
+};
+
+const Button: IStyledComponent<'web', ButtonProps> = styled(AkButton).attrs