Skip to content

Commit

Permalink
chore: add escape hatch
Browse files Browse the repository at this point in the history
  • Loading branch information
wmoai committed Apr 26, 2022
1 parent be5ede3 commit e45bb55
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
5 changes: 4 additions & 1 deletion src/components/Button/AnchorButton.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React, { AnchorHTMLAttributes, VFC } from 'react'

import { BaseProps } from './types'
import { useClassNames } from './useClassNames'
import { ButtonWrapper } from './ButtonWrapper'
import { ButtonInner } from './ButtonInner'

Expand All @@ -17,14 +18,16 @@ export const AnchorButton: VFC<BaseProps & ElementProps> = ({
children,
...props
}) => {
const classNames = useClassNames().anchorButton

return (
<ButtonWrapper
{...props}
size={size}
square={square}
wide={wide}
variant={variant}
className={className}
className={`${className} ${classNames.wrapper}`}
isAnchor
>
<ButtonInner prefix={prefix} suffix={suffix}>
Expand Down
5 changes: 4 additions & 1 deletion src/components/Button/Button.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React, { ButtonHTMLAttributes, VFC } from 'react'

import { BaseProps } from './types'
import { useClassNames } from './useClassNames'
import { ButtonWrapper } from './ButtonWrapper'
import { ButtonInner } from './ButtonInner'

Expand All @@ -17,14 +18,16 @@ export const Button: VFC<BaseProps & ElementProps> = ({
children,
...props
}) => {
const classNames = useClassNames().button

return (
<ButtonWrapper
{...props}
size={size}
square={square}
wide={wide}
variant={variant}
className={className}
className={`${className} ${classNames.wrapper}`}
>
<ButtonInner prefix={prefix} suffix={suffix}>
{children}
Expand Down
11 changes: 11 additions & 0 deletions src/components/Button/useClassNames.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
import { useMemo } from 'react'

import { useClassNameGenerator } from '../../hooks/useClassNameGenerator'
import { AnchorButton, Button } from './'
import { PrimaryButton, PrimaryButtonAnchor } from './PrimaryButton'
import { SecondaryButton, SecondaryButtonAnchor } from './SecondaryButton'
import { DangerButton, DangerButtonAnchor } from './DangerButton'
import { SkeletonButton, SkeletonButtonAnchor } from './SkeletonButton'
import { TextButton, TextButtonAnchor } from './TextButton'

export const useClassNames = () => {
const generateButotn = useClassNameGenerator(Button.displayName || 'Button')
const generateAnchorButotn = useClassNameGenerator(AnchorButton.displayName || 'AnchorButton')
const generatePrimaryButton = useClassNameGenerator(PrimaryButton.displayName || 'PrimaryButton')
const generatePrimaryButtonAnchor = useClassNameGenerator(
PrimaryButtonAnchor.displayName || 'PrimaryButtonAnchor',
Expand Down Expand Up @@ -35,6 +38,12 @@ export const useClassNames = () => {

return useMemo(
() => ({
button: {
wrapper: generateButotn(),
},
anchorButton: {
wrapper: generateAnchorButotn(),
},
primaryButton: {
wrapper: generatePrimaryButton(),
},
Expand Down Expand Up @@ -67,6 +76,8 @@ export const useClassNames = () => {
},
}),
[
generateAnchorButotn,
generateButotn,
generateDangerButton,
generateDangerButtonAnchor,
generatePrimaryButton,
Expand Down

0 comments on commit e45bb55

Please sign in to comment.