- Introduced ModalDestinationButton for destination selection with customizable icons and labels. - Added ModalInput for text input with optional character counter. - Implemented ModalLink for reusable links styled as underlined text. - Created ModalPlatformCard for platform selection with badges. - Developed ModalRadioGroup for radio button groups with custom styling. - Added ModalSection for grouping modal content with optional labels. - Implemented ModalSelect for dropdown selections with custom styling. - Created ModalShareButtons for sharing options via Gmail, Email, and Messenger. - Developed ModalTextarea for multi-line text input with character counter. - Introduced ModalToggle for toggle switches with optional help text and links. - Updated README.md with component descriptions, usage examples, and design guidelines. - Added index.ts for centralized exports of modal components.
39 lines
796 B
TypeScript
39 lines
796 B
TypeScript
import React from 'react'
|
|
import styles from './ModalButton.module.css'
|
|
|
|
interface Props {
|
|
children: React.ReactNode
|
|
onClick?: () => void
|
|
variant?: 'primary' | 'secondary' | 'outlined'
|
|
icon?: React.ReactNode
|
|
type?: 'button' | 'submit'
|
|
disabled?: boolean
|
|
className?: string
|
|
}
|
|
|
|
const ModalButton: React.FC<Props> = ({
|
|
children,
|
|
onClick,
|
|
variant = 'outlined',
|
|
icon,
|
|
type = 'button',
|
|
disabled = false,
|
|
className = ''
|
|
}) => {
|
|
const variantClass = styles[variant] || styles.outlined
|
|
|
|
return (
|
|
<button
|
|
type={type}
|
|
onClick={onClick}
|
|
disabled={disabled}
|
|
className={`${styles.button} ${variantClass} ${className}`}
|
|
>
|
|
{icon && <span className={styles.icon}>{icon}</span>}
|
|
{children}
|
|
</button>
|
|
)
|
|
}
|
|
|
|
export default ModalButton
|