- 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.
100 lines
1.8 KiB
CSS
100 lines
1.8 KiB
CSS
/* ModalButton - StreamYard style buttons */
|
|
|
|
.button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
padding: 8px 16px;
|
|
border-radius: 4px;
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
transition: all 0.15s;
|
|
white-space: nowrap;
|
|
border: 1px solid transparent;
|
|
}
|
|
|
|
.button:disabled {
|
|
cursor: not-allowed;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.icon {
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 18px;
|
|
}
|
|
|
|
/* Primary variant - Blue background */
|
|
.primary {
|
|
background-color: #1a73e8;
|
|
color: white;
|
|
border-color: #1a73e8;
|
|
}
|
|
|
|
.primary:hover:not(:disabled) {
|
|
background-color: #1765cc;
|
|
border-color: #1765cc;
|
|
}
|
|
|
|
/* Secondary variant - White with border */
|
|
.secondary {
|
|
background-color: #ffffff;
|
|
color: #5f6368;
|
|
border-color: #dadce0;
|
|
}
|
|
|
|
.secondary:hover:not(:disabled) {
|
|
background-color: #f8f9fa;
|
|
border-color: #bdc1c6;
|
|
}
|
|
|
|
/* Outlined variant - Transparent with border */
|
|
.outlined {
|
|
background-color: transparent;
|
|
color: #5f6368;
|
|
border-color: #dadce0;
|
|
}
|
|
|
|
.outlined:hover:not(:disabled) {
|
|
background-color: #f8f9fa;
|
|
border-color: #bdc1c6;
|
|
color: #202124;
|
|
}
|
|
|
|
/* Dark mode */
|
|
[data-theme="dark"] .primary {
|
|
background-color: #8ab4f8;
|
|
color: #202124;
|
|
border-color: #8ab4f8;
|
|
}
|
|
|
|
[data-theme="dark"] .primary:hover:not(:disabled) {
|
|
background-color: #aecbfa;
|
|
border-color: #aecbfa;
|
|
}
|
|
|
|
[data-theme="dark"] .secondary {
|
|
background-color: #3c4043;
|
|
color: #e8eaed;
|
|
border-color: #5f6368;
|
|
}
|
|
|
|
[data-theme="dark"] .secondary:hover:not(:disabled) {
|
|
background-color: #5f6368;
|
|
border-color: #80868b;
|
|
}
|
|
|
|
[data-theme="dark"] .outlined {
|
|
background-color: transparent;
|
|
color: #9aa0a6;
|
|
border-color: #5f6368;
|
|
}
|
|
|
|
[data-theme="dark"] .outlined:hover:not(:disabled) {
|
|
background-color: #3c4043;
|
|
border-color: #80868b;
|
|
color: #e8eaed;
|
|
}
|