AvanzaCast/shared/components/modal-parts/ModalDateTimeGroup.module.css
Cesar Mendivil e43686e36d feat(modal-parts): add modular components for modal UI
- 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.
2025-11-06 00:32:08 -07:00

155 lines
2.9 KiB
CSS

/* ModalDateTimeGroup - StreamYard style date/time picker */
.container {
width: 100%;
}
.labelRow {
display: flex;
align-items: center;
gap: 4px;
margin-bottom: 8px;
}
.label {
color: #5f6368;
font-size: 14px;
font-weight: 400;
margin: 0;
display: flex;
align-items: center;
gap: 4px;
}
.timezone {
color: #80868b;
font-size: 13px;
}
.helpButton {
background: none;
border: none;
padding: 0;
margin: 0;
cursor: pointer;
color: #5f6368;
display: flex;
align-items: center;
justify-content: center;
width: 16px;
height: 16px;
transition: color 0.15s;
}
.helpButton:hover {
color: #202124;
}
.inputs {
display: flex;
gap: 12px;
}
.dateInput {
flex: 1;
min-width: 0;
padding: 8px 12px;
border: 1px solid #dadce0;
border-radius: 4px;
font-size: 14px;
color: #202124;
background-color: #ffffff;
cursor: pointer;
transition: border-color 0.15s, box-shadow 0.15s;
}
.dateInput:hover {
border-color: #bdc1c6;
}
.dateInput:focus {
outline: none;
border-color: #1a73e8;
box-shadow: 0 0 0 1px #1a73e8;
}
.timeSelect {
width: 70px;
padding: 8px 28px 8px 12px;
border: 1px solid #dadce0;
border-radius: 4px;
font-size: 14px;
color: #202124;
background-color: #ffffff;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath fill='%235f6368' d='M5 7L1 3h8z'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 8px center;
background-size: 10px;
appearance: none;
cursor: pointer;
transition: border-color 0.15s, box-shadow 0.15s;
}
.timeSelect:hover {
border-color: #bdc1c6;
}
.timeSelect:focus {
outline: none;
border-color: #1a73e8;
box-shadow: 0 0 0 1px #1a73e8;
}
/* Dark mode */
[data-theme="dark"] .label {
color: #9aa0a6;
}
[data-theme="dark"] .timezone {
color: #80868b;
}
[data-theme="dark"] .helpButton {
color: #9aa0a6;
}
[data-theme="dark"] .helpButton:hover {
color: #e8eaed;
}
[data-theme="dark"] .dateInput,
[data-theme="dark"] .timeSelect {
background-color: #3c4043;
border-color: #5f6368;
color: #e8eaed;
}
[data-theme="dark"] .timeSelect {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath fill='%239aa0a6' d='M5 7L1 3h8z'/%3E%3C/svg%3E");
}
[data-theme="dark"] .dateInput:hover,
[data-theme="dark"] .timeSelect:hover {
border-color: #80868b;
}
[data-theme="dark"] .dateInput:focus,
[data-theme="dark"] .timeSelect:focus {
border-color: #8ab4f8;
box-shadow: 0 0 0 1px #8ab4f8;
}
/* Custom date input styling */
.dateInput::-webkit-calendar-picker-indicator {
cursor: pointer;
opacity: 0.6;
}
.dateInput::-webkit-calendar-picker-indicator:hover {
opacity: 1;
}
[data-theme="dark"] .dateInput::-webkit-calendar-picker-indicator {
filter: invert(1);
}