add button component
This commit is contained in:
parent
91875f1b26
commit
c1c6b2e4be
|
@ -0,0 +1,33 @@
|
|||
import { Button } from './button'
|
||||
|
||||
import type { Meta, StoryObj } from '@storybook/react'
|
||||
|
||||
// More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
|
||||
const meta: Meta<typeof Button> = {
|
||||
component: Button,
|
||||
argTypes: {},
|
||||
}
|
||||
|
||||
type Story = StoryObj<typeof Button>
|
||||
|
||||
// More on writing stories with args: https://storybook.js.org/docs/7.0/react/writing-stories/args
|
||||
export const Primary: Story = {
|
||||
args: {
|
||||
children: 'Click me',
|
||||
},
|
||||
}
|
||||
|
||||
export const PrimaryLong: Story = {
|
||||
args: {
|
||||
children: 'Lorem ipsum dim sum',
|
||||
},
|
||||
}
|
||||
|
||||
export const Success: Story = {
|
||||
args: {
|
||||
type: 'positive',
|
||||
children: 'Click me',
|
||||
},
|
||||
}
|
||||
|
||||
export default meta
|
|
@ -0,0 +1,60 @@
|
|||
import { Stack, styled, Text } from '@tamagui/core'
|
||||
|
||||
import type { GetProps } from '@tamagui/core'
|
||||
// import { Button} from 'react-native'
|
||||
|
||||
// import { Button as RNButton } from 'react-native'
|
||||
|
||||
// setupReactNative({ Button: RNButton })
|
||||
|
||||
// import type { GetProps} from '@tamagui/core';
|
||||
|
||||
const Base = styled(Stack, {
|
||||
// tag: 'button',
|
||||
|
||||
cursor: 'pointer',
|
||||
borderRadius: 12,
|
||||
display: 'inline-flex',
|
||||
paddingHorizontal: 16,
|
||||
paddingVertical: 10,
|
||||
|
||||
variants: {
|
||||
type: {
|
||||
primary: {
|
||||
backgroundColor: 'hsla(229, 71%, 57%, 1)',
|
||||
hoverStyle: { backgroundColor: 'hsla(229, 54%, 45%, 1)' },
|
||||
pressStyle: { backgroundColor: 'hsla(229, 54%, 45%, 1)' },
|
||||
},
|
||||
positive: {
|
||||
backgroundColor: 'hsla(174, 63%, 40%, 1)',
|
||||
hoverStyle: { backgroundColor: 'hsla(174, 63%, 34%, 1)' },
|
||||
pressStyle: { backgroundColor: 'hsla(174, 63%, 34%, 1)' },
|
||||
},
|
||||
},
|
||||
} as const,
|
||||
})
|
||||
|
||||
const ButtonText = styled(Text, {
|
||||
color: 'rgb(255, 255, 255)',
|
||||
textAlign: 'center',
|
||||
})
|
||||
|
||||
type BaseProps = GetProps<typeof Base>
|
||||
|
||||
interface Props {
|
||||
type?: BaseProps['type']
|
||||
children: string
|
||||
}
|
||||
|
||||
const Button = (props: Props) => {
|
||||
const { type = 'primary', children } = props
|
||||
|
||||
return (
|
||||
<Base type={type}>
|
||||
<ButtonText>{children}</ButtonText>
|
||||
</Base>
|
||||
)
|
||||
}
|
||||
|
||||
export { Button }
|
||||
// const Button =
|
|
@ -0,0 +1 @@
|
|||
export { Button } from './button'
|
Loading…
Reference in New Issue