slideshare/public/themes/default/style.css
Michael Mainguy 6e6c09b5ba Add comprehensive theme routing and browsing system
- Add React Router with theme browser, theme detail, and layout detail pages
- Implement manifest-based theme discovery for better performance
- Add Welcome component as home page with feature overview
- Fix layout and styling issues with proper CSS centering
- Implement introspective theme browsing (dynamically discover colors/variables)
- Add layout preview system with iframe scaling
- Create comprehensive theme detail page with color palette display
- Fix TypeScript errors and build issues
- Remove hardcoded theme assumptions in favor of dynamic discovery

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 10:17:55 -05:00

192 lines
3.7 KiB
CSS

/*
* Theme: Default
* Name: Default Theme
* Description: Clean and simple theme suitable for any presentation
* Author: Michael Mainguy (mike.mainguy@gmail.com)
* Version: 0.1.0
*/
:root {
--theme-primary: #2563eb;
--theme-secondary: #64748b;
--theme-accent: #0ea5e9;
--theme-background: #000000;
--theme-text: #ffffff;
--theme-text-secondary: #64748b;
--theme-font-heading: 'Inter', system-ui, sans-serif;
--theme-font-body: 'Inter', system-ui, sans-serif;
--theme-font-code: 'JetBrains Mono', 'Consolas', monospace;
--slide-width: 100vw;
--slide-height: 100vh;
--slide-padding: 2rem;
}
/* Base slide container */
.slide {
width: var(--slide-width);
height: var(--slide-height);
background: var(--theme-background);
color: var(--theme-text);
font-family: var(--theme-font-body);
padding: var(--slide-padding);
box-sizing: border-box;
display: flex;
flex-direction: column;
position: relative;
overflow: hidden;
}
/* Master slide elements */
.master-slide {
position: absolute;
z-index: 1;
}
.master-slide.footer {
bottom: 0;
left: 0;
right: 0;
padding: 1rem;
text-align: center;
font-size: 0.875rem;
opacity: 0.6;
}
/* Slot styles */
.slot {
position: relative;
border: 2px dashed transparent;
min-height: 2rem;
transition: border-color 0.2s ease;
}
.slot:hover,
.slot.editing {
border-color: var(--theme-accent);
border-radius: 4px;
}
.slot.empty {
border-color: var(--theme-secondary);
opacity: 0.5;
display: flex;
align-items: center;
justify-content: center;
}
.slot.empty::before {
content: attr(data-placeholder);
color: var(--theme-text-secondary);
font-style: italic;
}
/* Text slots */
.slot[data-type="title"] {
font-family: var(--theme-font-heading);
font-weight: bold;
line-height: 1.2;
}
.slot[data-type="subtitle"] {
font-family: var(--theme-font-heading);
line-height: 1.4;
opacity: 0.8;
}
.slot[data-type="text"] {
line-height: 1.6;
}
/* Image slots */
.slot[data-type="image"] {
display: flex;
align-items: center;
justify-content: center;
background: #f8fafc;
border-radius: 8px;
}
.slot[data-type="image"] img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
border-radius: 4px;
}
/* Layout-specific styles */
/* Title slide layout */
.layout-title-slide {
justify-content: center;
align-items: center;
text-align: center;
}
.layout-title-slide .slot[data-slot="title"] {
font-size: clamp(2rem, 5vw, 4rem);
margin-bottom: 2rem;
color: var(--theme-primary);
}
.layout-title-slide .slot[data-slot="subtitle"] {
font-size: clamp(1rem, 2.5vw, 2rem);
color: var(--theme-text-secondary);
}
/* Content slide layout */
.layout-content-slide .slot[data-slot="title"] {
font-size: clamp(1.5rem, 3vw, 2.5rem);
margin-bottom: 2rem;
padding-bottom: 1rem;
border-bottom: 2px solid var(--theme-primary);
}
.layout-content-slide .slot[data-slot="content"] {
font-size: clamp(1rem, 1.5vw, 1.25rem);
flex: 1;
}
/* Image slide layout */
.layout-image-slide .slot[data-slot="title"] {
font-size: clamp(1.5rem, 3vw, 2.5rem);
margin-bottom: 2rem;
text-align: center;
}
.layout-image-slide .slot[data-slot="image"] {
flex: 1;
margin-top: 1rem;
}
/* Responsive adjustments */
@media (max-width: 768px) {
:root {
--slide-padding: 1rem;
}
.layout-title-slide .slot[data-slot="title"] {
margin-bottom: 1rem;
}
.layout-content-slide .slot[data-slot="title"] {
margin-bottom: 1rem;
}
}
/* Print styles for presentations */
@media print {
.slide {
page-break-after: always;
width: 100%;
height: 100vh;
}
.slot {
border: none !important;
}
.slot.empty::before {
display: none;
}
}