diff --git a/Documentation/ZephyrJS.md b/Documentation/ZephyrJS.md new file mode 100644 index 0000000..e69de29 diff --git a/Documentation/templates/LayeredCard.md b/Documentation/templates/LayeredCard.md new file mode 100644 index 0000000..08fca21 --- /dev/null +++ b/Documentation/templates/LayeredCard.md @@ -0,0 +1,36 @@ +# LayeredCard Component + +## Purpose and Use Case + +The LayeredCard component is designed to enhance user experience by providing contextual information in an innovative and non-intrusive manner. It reimagines how additional content can be presented alongside primary information, breathing new life into traditional UX design patterns. + +### Key Features: + +1. **Contextual Information Display**: The component allows for the presentation of supplementary information that directly relates to the main content of the card. This contextual element moves with the user's cursor, providing relevant details based on the area of focus. + +2. **Enhanced User Engagement**: By revealing additional information dynamically, the LayeredCard encourages users to explore content more deeply, increasing engagement and information retention. + +3. **Space Efficiency**: Instead of cluttering the main view with all available information, the LayeredCard keeps the primary content clean and unobstructed while making supplementary details easily accessible. + +4. **Intuitive Interaction**: The popover follows the user's mouse movement, creating a natural and intuitive way to access additional information without the need for clicks or navigation. + +5. **Flexible Content Presentation**: Both the main content and the contextual popover can contain rich HTML, allowing for diverse and complex information structures. + +### Ideal Use Cases: + +- **Product Catalogs**: Displaying additional product details or specifications without cluttering the main product card. +- **Educational Materials**: Providing definitions, explanations, or additional context for complex topics. +- **Data Visualization**: Offering detailed information about specific data points in charts or graphs. +- **Interactive Stories**: Enhancing storytelling by revealing background information or character details. +- **User Interfaces**: Explaining UI elements or providing quick tips without resorting to lengthy tooltips. + +### Design Considerations: + +While the LayeredCard component offers exciting possibilities for UX enhancement, it's important to use it judiciously: + +1. **Avoid Overuse**: The component should be employed selectively to prevent overwhelming the user with too much dynamic content. +2. **Ensure Relevance**: The contextual information should always be directly relevant to the main content to maintain a coherent user experience. +3. **Accessibility**: Consider users who may not be able to use a mouse; ensure that critical information is also accessible through other means. +4. **Performance**: Be mindful of the content loaded into the popover to maintain smooth performance, especially on mobile devices. + +By leveraging the LayeredCard component thoughtfully, designers and developers can create more engaging, informative, and interactive user interfaces that provide a fresh take on content presentation and user interaction. \ No newline at end of file diff --git a/README.md b/README.md index 5d5b67c..7fe04bc 100644 --- a/README.md +++ b/README.md @@ -311,6 +311,358 @@ From there, you will be able to make full usage of ZephyrJS. ``` +ZephyrJS also boasts a CSS Framework which houses utility classes and animations. + +### Available Utilities +#### Available Color Categories + +#### Basic Colors: Standard colors like blue, red, green, etc. + +- --blue, +- --red, +- --green + + +#### Extended Colors: Additional named colors for more variety. + +- --lime, +- --gold, +- --navy + +#### Light Shades: Lighter versions of basic colors. + +- --blue-light, +- --red-light, +- --green-light + + +#### Dark Shades: Darker versions of basic colors. + +- --blue-dark, +- --red-dark, +- --green-dark + + +#### Pastel Shades: Soft, muted colors. + +- --pastel-blue, +- --pastel-green, +- --pastel-pink + + +#### Additional Shades: Extra light variations of colors. + +- --light-blue, +- --light-coral, +- --light-sea-green + + +#### Custom Shades: Specific color variations for your project. + +- --custom-blue, +- --custom-green, +- --custom-red + + +#### Semantic Colors: Colors with specific meanings or uses. + +- --info-color, +- --success-color, +- --danger-color + + +#### Gradient Colors: Predefined gradient backgrounds. + +- --gradient-primary, +- --gradient-secondary + + +#### Shadows: Predefined shadow styles. + +- --shadow-light, +- --shadow-dark + +### Layout +#### Container and Grid System + +- .container: Main container class +- .row: Flex row +- .col: Flex column + +### Display + +- .d-none, +- .d-inline, +- .d-inline-block, +- .d-block, +- .d-table, +- .d-table-row, +- .d-table-cell, +- .d-flex, +- .d-inline-flex +- Responsive variants: .d-{breakpoint}-{value} (e.g., .d-md-none) + +### Flexbox + +- Flex container: .d-flex, .d-inline-flex +- Justify content: .justify-content-start, .justify-content-end, .justify-content-center, .justify-content-between, .justify-content-around +- Align items: .align-items-start, .align-items-end, .align-items-center, .align-items-baseline, .align-items-stretch + +### Positioning + +- .position-static, +- .position-relative, +- .position-absolute, +- .position-fixed, +- .position-sticky +- .top-0, +- .right-0, +- .bottom-0, +- .left-0, +- .top-50, +- .right-50, +- .bottom-50, +- .left-50, +- .top-100, +- .right-100, +- .bottom-100, +- .left-100 +- .translate-middle, +- .translate-middle-x, +- .translate-middle-y + +### Spacing +#### Margin + +- .m-0 to .m-5, +- .mt-0 to .mt-5, +- .mr-0 to .mr-5, +- .mb-0 to .mb-5, +- .ml-0 to .ml-5 +- .mx-0 to .mx-5, +- .my-0 to .my-5 +- .m-auto, +- .mx-auto, +- .my-auto + +### Padding + +- .p-0 to .p-5, +- .pt-0 to .pt-5, +- .pr-0 to .pr-5, +- .pb-0 to .pb-5, +- .pl-0 to .pl-5 +- .px-0 to .px-5, +- .py-0 to .py-5 + +### Typography +#### Font Size + +- .text-xs, +- .text-sm, +- .text-base, +- .text-lg, +- .text-xl, +- .text-2xl, +- .text-3xl, +- .text-4xl + +### Font Weight + +- .font-light, +- .font-normal, +- .font-medium, +- .font-semibold, +- .font-bold + +### Text Alignment + +- .text-left, +- .text-center, +- .text-right, +- .text-justify + +### Text Decoration + +- .underline, +- .line-through, +- .no-underline + +### Text Transform + +- .uppercase, +- .lowercase, +- .capitalize, +- .normal-case + +### Line Height + +- .leading-none, +- .leading-tight, +- .leading-normal, +- .leading-loose + +### Letter Spacing + +- .tracking-tight, +- .tracking-normal, +- .tracking-wide + +### Colors +#### Background Colors + +- .bg-primary, +- .bg-secondary, +- .bg-success, +- .bg-danger, +- .bg-warning, +- .bg-info, +- .bg-light, +- .bg-dark + +### Text Colors + +- .text-primary, +- .text-secondary, +- .text-success, +- .text-danger, +- .text-warning, +- .text-info, +- .text-light, +- .text-dark + +### Borders + +- .border, +- .border-top, +- .border-right, +- .border-bottom, +- .border-left, +- .border-0 +- .rounded, +- .rounded-top, +- .rounded-right, +- .rounded-bottom, +- .rounded-left, +- .rounded-circle, +- .rounded-0 + +### Shadows + +- .shadow-sm, +- .shadow, +- .shadow-lg, +- .shadow-none + +### Sizing +#### Width + +- .w-25, +- .w-50, +- .w-75, +- .w-100, +- .w-auto +- .max-w-25, +- .max-w-50, +- .max-w-75, +- .max-w-100, +- .max-w-none + +### Height + +- .h-25, +- .h-50, +- .h-75, +- .h-100, +- .h-auto +- .max-h-25, +- .max-h-50, +- .max-h-75, +- .max-h-100, +- .max-h-none + +### Interactions + +- .pointer-events-none, +- .pointer-events-auto +- .user-select-none, +- .user-select-auto + +### Overflow + +- .overflow-auto, +- .overflow-hidden, +- .overflow-visible, +- .overflow-scroll +- .overflow-x-auto, +- .overflow-x-hidden, +- .overflow-x-visible, +- .overflow-x-scroll +- .overflow-y-auto, +- .overflow-y-hidden, +- .overflow-y-visible, +- .overflow-y-scroll + +### Accessibility + +- .focus-visible: Provides a visible outline for keyboard focus +- .skip-to-main: Allows keyboard users to skip to the main content +- .high-contrast-border: Adds a border in high contrast mode +- .reduce-motion: Removes animations and transitions for users who prefer reduced motion + +### Logical Properties + +- Margin: .m-inline-start-1, .m-inline-end-1, .m-block-start-1, .m-block-end-1 +- Padding: .p-inline-start-1, .p-inline-end-1, .p-block-start-1, .p-block-end-1 +- Border: .border-inline-start, .border-inline-end, .border-block-start, .border-block-end +- Text alignment: .text-start, .text-end +- Position: .inset-inline-start-0, .inset-inline-end-0, .inset-block-start-0, .inset-block-end-0 + +### Responsive Classes +#### Many utilities include responsive variants that apply at different breakpoints: + +- sm: Small screens (≥576px) +- md: Medium screens (≥768px) +- lg: Large screens (≥992px) +- xl: Extra large screens (≥1200px) + +### Reset +- visible - sets item visible +- invisible - sets item invisible + +### Available Animations + +- fade-in: Fades in the element +- swing: Swings the element back and forth +- slide-in-left: Slides in the element from different directions +- slide-in-right: Slides in the element from different directions +- slide-in-up: Slides in the element from different directions +- slide-in-down: Slides in the element from different directions +- slide-in-bottom: Slides in the element from different directions +- slide-out-top: Slides out the element to the top +- bounce: Makes the element bounce +- rotate: Rotates the element 360 degrees +- zoom-in, zoom-out: Zooms the element in or out +- flip: Flips the element horizontally +- pulse: Makes the element pulse +- shake: Shakes the element +- wobble: Makes the element wobble +- text-hide: Hides text by moving it up +- text-reveal: Reveals text by moving it up +- typewriter: Creates a typewriter effect +- floating: Makes the element float up and down +- blur-in, blur-out: Blurs the element in or out +- hinge: Creates a hinge effect +- glitch: Creates a glitch effect +- ripple: Creates a ripple effect +- spotlight: Creates a spotlight effect +- text-shadow-pop: Makes text pop out with a shadow +- elastic-scale: Scales the element with an elastic effect +- roll-in, roll-out: Rolls the element in or out +- flash: Makes the element flash +- swing-in, swing-out: Swings the element in or out + + ### License ZephyrJS is MIT licensed. diff --git a/zephyrcore/zephyr.js b/zephyrcore/zephyr.js index 7e1c828..2301b81 100644 --- a/zephyrcore/zephyr.js +++ b/zephyrcore/zephyr.js @@ -3,7 +3,7 @@ * and data binding capabilities. */ export default class ZephyrJS extends HTMLElement { - static baseUrl = 'https://cdn.jsdelivr.net/gh/RPDevJesco/ZephyrJS@0.09'; + static baseUrl = ''; static setBaseUrl(url) { ZephyrJS.baseUrl = url.endsWith('/') ? url : url + '/'; diff --git a/zephyrcss/animations.css b/zephyrcss/animations.css index 99be305..0f93a46 100644 --- a/zephyrcss/animations.css +++ b/zephyrcss/animations.css @@ -1,49 +1,15 @@ -.card, .button, .navbar { - transition: transform 0.3s ease-in-out; - transform-style: preserve-3d; -} - -.card:hover, .button:hover, .navbar:hover { - transform: perspective(1000px) rotateY(15deg) rotateX(15deg); -} - +/* Swing */ @keyframes swing { 0% { transform: rotate(0deg); } 50% { transform: rotate(15deg); } 100% { transform: rotate(0deg); } } - -.swing { - display: inline-block; - animation: swing 1s ease-in-out infinite; -} - /* Fade In */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } -.fade-in { - animation: fadeIn 1s ease-in-out; -} - /* Slide In */ -@keyframes slideInLeft { - from { transform: translateX(-100%); opacity: 0; } - to { transform: translateX(0); opacity: 1; } -} -@keyframes slideInRight { - from { transform: translateX(100%); opacity: 0; } - to { transform: translateX(0); opacity: 1; } -} -@keyframes slideInUp { - from { transform: translateY(100%); opacity: 0; } - to { transform: translateY(0); opacity: 1; } -} -@keyframes slideInDown { - from { transform: translateY(-100%); opacity: 0; } - to { transform: translateY(0); opacity: 1; } -} .slide-in-left { animation: slideInLeft 1s ease-in-out; } @@ -56,7 +22,12 @@ .slide-in-down { animation: slideInDown 1s ease-in-out; } - +.slide-in-bottom { + animation: slideInBottom 1s ease-in-out; +} +.slide-out-top { + animation: slideOutTop 1s ease-in-out; +} /* Bounce */ @keyframes bounce { 0%, 20%, 50%, 80%, 100% { @@ -69,19 +40,12 @@ transform: translateY(-15px); } } -.bounce { - animation: bounce 2s infinite; -} - /* Rotate */ @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } -.rotate { - animation: rotate 2s linear infinite; -} - +/* Zoom */ @keyframes zoomIn { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } @@ -90,39 +54,24 @@ from { transform: scale(1); opacity: 1; } to { transform: scale(0.5); opacity: 0; } } -.zoom-in { - animation: zoomIn 1s ease-in-out; -} -.zoom-out { - animation: zoomOut 1s ease-in-out; -} - +/* Flip */ @keyframes flip { from { transform: rotateY(0); } to { transform: rotateY(180deg); } } -.flip { - animation: flip 1s ease-in-out; -} - +/* Pulse */ @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } -.pulse { - animation: pulse 1s infinite; -} - +/* Shake */ @keyframes shake { 0%, 100% { transform: translateX(0); } 25%, 75% { transform: translateX(-10px); } 50% { transform: translateX(10px); } } -.shake { - animation: shake 0.5s ease-in-out; -} - +/* Wobble */ @keyframes wobble { 0%, 100% { transform: translateX(0); } 15% { transform: translateX(-25%) rotate(-5deg); } @@ -131,51 +80,331 @@ 60% { transform: translateX(10%) rotate(2deg); } 75% { transform: translateX(-5%) rotate(-1deg); } } -.wobble { - animation: wobble 1s ease-in-out; +/* Text Hide to Top */ +@keyframes textHide { + from { + transform: translateY(0); + opacity: 1; + } + to { + transform: translateY(-100%); + opacity: 0; + } } - -/* Level Up Animation */ -@keyframes levelUpScale { +/* Text Reveal from Bottom */ +@keyframes textReveal { + from { + transform: translateY(100%); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } +} +/* The typing effect */ +@keyframes typing { + from { width: 0 } + to { width: 100% } +} +/* The typewriter cursor effect */ +@keyframes blink-caret { + from, to { border-color: transparent } + 50% { border-color: var(--light-text); } +} +/* Expand */ +@keyframes expand { + from { transform: scale(0); opacity: 0; } + to { transform: scale(1); opacity: 1; } +} +/* Collapse */ +@keyframes collapse { + from { transform: scale(1); opacity: 1; } + to { transform: scale(0); opacity: 0; } +} +/* Jello */ +@keyframes jello { + 0%, 11.1%, 100% { transform: none; } + 22.2% { transform: skewX(-12.5deg) skewY(-12.5deg); } + 33.3% { transform: skewX(6.25deg) skewY(6.25deg); } + 44.4% { transform: skewX(-3.125deg) skewY(-3.125deg); } + 55.5% { transform: skewX(1.5625deg) skewY(1.5625deg); } + 66.6% { transform: skewX(-0.78125deg) skewY(-0.78125deg); } + 77.7% { transform: skewX(0.390625deg) skewY(0.390625deg); } + 88.8% { transform: skewX(-0.1953125deg) skewY(-0.1953125deg); } +} +/* Heartbeat */ +@keyframes heartbeat { 0% { transform: scale(1); } - 50% { transform: scale(1.2); } - 100% { transform: scale(1); } + 14% { transform: scale(1.3); } + 28% { transform: scale(1); } + 42% { transform: scale(1.3); } + 70% { transform: scale(1); } +} +/* Floating */ +@keyframes floating { + 0% { transform: translateY(0px); } + 50% { transform: translateY(-20px); } + 100% { transform: translateY(0px); } +} +/* Blur In */ +@keyframes blurIn { + from { filter: blur(20px); opacity: 0; } + to { filter: blur(0); opacity: 1; } +} +/* Blur Out */ +@keyframes blurOut { + from { filter: blur(0); opacity: 1; } + to { filter: blur(20px); opacity: 0; } +} +/* Hinge */ +@keyframes hinge { + 0% { transform: rotate(0); transform-origin: top left; animation-timing-function: ease-in-out; } + 20%, 60% { transform: rotate(80deg); transform-origin: top left; animation-timing-function: ease-in-out; } + 40%, 80% { transform: rotate(60deg); transform-origin: top left; animation-timing-function: ease-in-out; opacity: 1; } + 100% { transform: translate3d(0, 700px, 0); opacity: 0; } +} +/* Glitch Effect */ +@keyframes glitch { + 0% { + transform: translate(0) + } + 20% { + transform: translate(-5px, 5px) + } + 40% { + transform: translate(-5px, -5px) + } + 60% { + transform: translate(5px, 5px) + } + 80% { + transform: translate(5px, -5px) + } + to { + transform: translate(0) + } } - -@keyframes levelUpGlow { - 0% { box-shadow: 0 0 10px rgba(255, 215, 0, 0); } - 50% { box-shadow: 0 0 20px rgba(255, 215, 0, 0.7); } - 100% { box-shadow: 0 0 10px rgba(255, 215, 0, 0); } +/* Ripple Effect */ +@keyframes ripple { + 0% { + box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1), 0 0 0 20px rgba(0, 0, 0, 0.1), 0 0 0 40px rgba(0, 0, 0, 0.1), 0 0 0 60px rgba(0, 0, 0, 0.1); + } + 100% { + box-shadow: 0 0 0 20px rgba(0, 0, 0, 0.1), 0 0 0 40px rgba(0, 0, 0, 0.1), 0 0 0 60px rgba(0, 0, 0, 0.1), 0 0 0 80px rgba(0, 0, 0, 0); + } +} +/* Spotlight Effect */ +@keyframes spotlight { + 0%, 100% { + background-position: 0% 0%; + } + 50% { + background-position: 100% 100%; + } +} +/* Text Shadow Pop */ +@keyframes textShadowPop { + 0% { + text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555; + transform: translateY(0); + } + 100% { + text-shadow: 1px 1px #555555, 2px 2px #555555, 3px 3px #555555, 4px 4px #555555, 5px 5px #555555, 6px 6px #555555, 7px 7px #555555, 8px 8px #555555; + transform: translateY(-8px); + } +} +/* Elastic Scale */ +@keyframes elasticScale { + 0% { + transform: scale(1); + } + 25% { + transform: scale(0.95); + } + 50% { + transform: scale(1.1); + } + 75% { + transform: scale(0.95); + } + 100% { + transform: scale(1); + } +} +/* Roll */ +@keyframes rollIn { + from { + opacity: 0; + transform: translateX(-100%) rotate(-120deg); + } + to { + opacity: 1; + transform: translateX(0) rotate(0deg); + } +} +@keyframes rollOut { + from { + opacity: 1; + transform: translateX(0) rotate(0deg); + } + to { + opacity: 0; + transform: translateX(100%) rotate(120deg); + } +} +/* Flash */ +@keyframes flash { + 0%, 50%, 100% { opacity: 1; } + 25%, 75% { opacity: 0; } +} +/* Swing */ +@keyframes swingIn { + from { transform: rotateX(-100deg); opacity: 0; } + 50% { transform: rotateX(-10deg); opacity: 1; } + to { transform: rotateX(0deg); } +} +@keyframes swingOut { + from { transform: rotateX(0deg); } + 50% { transform: rotateX(10deg); opacity: 1; } + to { transform: rotateX(100deg); opacity: 0; } +} +/* Scrolling */ +@keyframes scrolling { + 0% { transform: translateX(0); } + 100% { transform: translateX(calc(-1 * var(--marquee-element-width) * var(--marquee-elements))); } } -@keyframes particleBurst { - 0% { opacity: 1; transform: translate(0, 0); } - 100% { opacity: 0; transform: translate(50px, -50px); } +.fade-in { + animation: fadeIn 1s ease-in-out; +} +.swing { + display: inline-block; + animation: swing 1s ease-in-out infinite; +} +.bounce { + animation: bounce 2s infinite; +} +.rotate { + animation: rotate 2s linear infinite; +} +.zoom-in { + animation: zoomIn 1s ease-in-out; +} +.zoom-out { + animation: zoomOut 1s ease-in-out; +} +.flip { + animation: flip 1s ease-in-out; +} +.pulse { + animation: pulse 1s infinite; +} +.shake { + animation: shake 0.5s ease-in-out; +} +.wobble { + animation: wobble 1s ease-in-out; } +.text-hide { + animation: textHide 1s ease-in-out; +} +.text-reveal { + overflow: hidden; + display: inline-block; /* Ensures animation doesn't affect surrounding content */ + animation: textReveal 1s ease-in-out; +} +.typewriter { + overflow: hidden; + border-right: .15em solid var(--button-hover-bg); + white-space: nowrap; + margin: 0 auto; + letter-spacing: .15em; + animation: + typing 3.5s steps(40, end) forwards, + blink-caret .75s step-end infinite +} +.floating { animation: floating 3s ease-in-out infinite; } +.blur-in { animation: blurIn 0.5s ease-out; } +.blur-out { animation: blurOut 0.5s ease-in; } +.hinge { animation: hinge 2s ease-in-out; } +.swing-in { + animation: swingIn 1s ease-in-out; +} +.flash { + animation: flash 1s infinite; +} +.swing-out { + animation: swingOut 1s ease-in-out; +} +.roll-in { + animation: rollIn 1s ease-in-out; +} +.roll-out { + animation: rollOut 1s ease-in-out; +} +.glitch { + animation: glitch 0.8s infinite; +} +.ripple { + animation: ripple 1.5s linear infinite; +} +.spotlight { + background: linear-gradient(45deg, #ff00002b, #00ff002b, #0000ff2b); + background-size: 200% 200%; + animation: spotlight 5s ease infinite; +} +.text-shadow-pop { + animation: textShadowPop 0.6s both; +} +.elastic-scale { + animation: elasticScale 0.5s ease-in-out; +} +.marquee-container { + --marquee-elements: 4; /* Number of elements in your marquee */ + --marquee-elements-displayed: 3; /* Number of elements you want displayed at a time */ + --marquee-element-width: calc(100% / var(--marquee-elements-displayed)); + --marquee-animation-duration: calc(var(--marquee-elements) * 5s); -.level-up { + width: 100%; + overflow: hidden; + background: var(--background-color); + padding: 20px 0; position: relative; - animation: levelUpScale 1s ease-in-out, levelUpGlow 1s ease-in-out; } - -.level-up::before, .level-up::after { - content: ''; +.marquee-content { + display: flex; + width: calc(var(--marquee-element-width) * var(--marquee-elements)); + animation: scrolling var(--marquee-animation-duration) linear infinite; +} +.marquee-content:hover { + animation-play-state: paused; +} +.marquee-content li { + flex: 0 0 var(--marquee-element-width); + display: flex; + justify-content: center; + align-items: center; + max-height: 100%; + font-size: calc(15px + (20 - 15) * ((100vw - 300px) / (1600 - 300))); /* Responsive font size */ + white-space: nowrap; +} +.marquee-content:hover .marquee-item { + animation-play-state: paused; +} +.marquee-content::before, +.marquee-content::after { + content: ""; + height: 100%; position: absolute; - width: 10px; - height: 10px; - background: gold; - border-radius: 50%; - animation: particleBurst 0.5s ease-out forwards; + width: 10%; + z-index: 1; } - -.level-up::before { - top: 0; +.marquee-content::before { left: 0; - animation-delay: 0s; + background: linear-gradient(to right, var(--background-color) 0%, transparent 100%); } - -.level-up::after { - bottom: 0; +.marquee-content::after { right: 0; - animation-delay: 0.2s; + background: linear-gradient(to left, var(--background-color) 0%, transparent 100%); } \ No newline at end of file diff --git a/zephyrcss/buttons.css b/zephyrcss/buttons.css index ed53f37..608b084 100644 --- a/zephyrcss/buttons.css +++ b/zephyrcss/buttons.css @@ -23,6 +23,4 @@ color: #fff; background-color: darken(var(--primary-color), 10%); border-color: darken(var(--primary-color), 10%); -} - -/* Additional button styles for secondary, success, danger, warning, info, light, and dark */ \ No newline at end of file +} \ No newline at end of file diff --git a/zephyrcss/themes/cool-winter-theme.css b/zephyrcss/themes/cool-winter-theme.css index a96dedf..e494baf 100644 --- a/zephyrcss/themes/cool-winter-theme.css +++ b/zephyrcss/themes/cool-winter-theme.css @@ -1,115 +1,82 @@ [data-theme="cool-winter"] { - /* Main palette colors */ - --primary-color: #2E3A59; /* Dark navy */ - --secondary-color: #5D8297; /* Cool blue */ - --accent-color: #A8C4E5; /* Light icy blue */ - --background-color: #E8F0F9; /* Soft icy blue */ - --neutral-color: #BCC7D3; /* Light gray-blue */ - --secondary-color-light: #DCE5F0; /* Light gray-blue */ - - /* Semantic colors */ - --info-color: #1E90FF; /* Dodger blue */ - --info-background: #F0F8FF; /* Alice blue */ - --success-color: #32CD32; /* Lime green */ - --success-background: #F0FFF0; /* Honeydew */ - --danger-color: #FF6347; /* Tomato */ - --danger-background: #FFE4E1; /* Misty rose */ - --warning-color: #FFD700; /* Gold */ - --warning-background: #FFF8DC; /* Cornsilk */ - - /* Text colors */ - --light-text: #F0F4FA; /* Very light blue */ - --dark-text: #1C2C42; /* Very dark navy */ - - /* Component-specific colors */ - --button-hover-bg: #4682B4; /* Steel blue */ - --input-focus-border: #5D8297; /* Adjusted to match the secondary color */ - --button-click-bg: #1E90FF; /* Dodger blue */ - - /* Typography */ - --font-family-sans-serif: "Montserrat", "Helvetica Neue", Arial, sans-serif; - --font-family-serif: "Merriweather", Georgia, serif; - --font-family-monospace: "Fira Code", "Courier New", monospace; - - /* Body styles */ + /* Main Palette Colors */ + --primary-color: var(--blue-dark); /* Dark navy */ + --secondary-color: var(--blue-light); /* Cool blue */ + --accent-color: var(--cyan-light); /* Light icy blue */ + --background-color: var(--light-blue); /* Soft icy blue */ + --neutral-color: var(--gray-light); /* Light gray-blue */ + --secondary-color-light: var(--gray-light); /* Light gray-blue */ + + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ + + /* Text Colors */ + --light-text: var(--gray-light); /* Very light blue */ + --dark-text: var(--gray-dark); /* Very dark navy */ + + /* Component-Specific Colors */ + --button-hover-bg: var(--teal-dark); /* Steel blue */ + --input-focus-border: var(--blue-light); /* Adjusted to match the secondary color */ + --button-click-bg: var(--info-color); /* Dodger blue */ + + /* Body Styles */ --body-bg: var(--background-color); - --body-color: #1C2C42; /* Very dark navy for main text */ + --body-color: var(--dark-text); /* Very dark navy for main text */ - /* Link styles */ + /* Link Styles */ --link-color: var(--accent-color); --link-decoration: none; - --link-hover-color: #4682B4; /* Steel blue */ + --link-hover-color: var(--teal-dark); /* Steel blue */ - /* Additional theme-specific variables */ + /* Additional Theme-Specific Variables */ --header-bg: var(--primary-color); --header-color: var(--neutral-color); --footer-bg: var(--secondary-color); --footer-color: var(--primary-color); --button-primary-bg: var(--accent-color); - --button-primary-color: white; - --card-bg: white; + --button-primary-color: var(--white); + --card-bg: var(--white); --card-border: var(--neutral-color); - /* Button specific variables */ - --button-padding: 10px 20px; - --button-border-radius: 5px; - --button-font-size: 1em; - --button-primary-bg-color: var(--accent-color); + /* Button Specific Variables */ --button-disabled-background: var(--neutral-color); - /* Card specific variables */ + /* Card Specific Variables */ --card-box-shadow: var(--shadow-light); - --card-padding: 16px; - --card-border-radius: 8px; - --card-header-font-size: 1.5em; - --card-header-margin-bottom: 12px; - --card-content-margin-top: 8px; /* CardGroup Component Variables */ - --card-group-gap: 1rem; - --card-min-width: 250px; - --card-border-color: #BCC7D3; - --card-header-color: #1C2C42; - --card-content-color: #2E3A59; - --card-content-font-size: 1rem; + --card-border-color: var(--neutral-color); + --card-header-color: var(--dark-text); + --card-content-color: var(--primary-color); - /* Input specific variables */ - --input-margin: 10px 0; - --input-padding: 10px; + /* Input Specific Variables */ --input-border: 1px solid var(--neutral-color); - --input-border-radius: 4px; - --input-font-size: 1rem; --input-focus-border-color: var(--secondary-color); - /* Dropdown specific variables */ - --dropdown-padding: 10px; + /* Dropdown Specific Variables */ --dropdown-border: 1px solid var(--neutral-color); - --dropdown-border-radius: 4px; - --dropdown-font-size: 1rem; --dropdown-background: var(--background-color); --dropdown-arrow: url('data:image/svg+xml;utf8,'); --dropdown-focus-border-color: var(--secondary-color); - /* Modal specific variables */ + /* Modal Specific Variables */ --modal-background: var(--background-color); - --modal-border-radius: 10px; --modal-box-shadow: var(--shadow-dark); - --modal-width: 300px; - --modal-z-index: 1000; - --modal-header-padding: 16px; --modal-header-background: var(--primary-color); --modal-header-border-color: var(--neutral-color); - --modal-header-font-size: 1.25em; - --modal-body-padding: 16px; - --modal-footer-padding: 16px; --modal-footer-background: var(--neutral-color); --modal-footer-border-color: var(--neutral-color); - /* Notification specific variables */ - --notification-padding: 16px; + /* Notification Specific Variables */ --notification-background: var(--light-text); --notification-border-color: var(--primary-color); - --notification-font-size: 1em; --notification-success-background: var(--success-background); --notification-error-background: var(--danger-background); --notification-warning-background: var(--warning-background); @@ -118,29 +85,21 @@ --notification-warning-text: var(--warning-color); /* Markdown Editor and Renderer Colors */ - --markdown-bg: #2E3A59; - --markdown-color: #F8F8F2; - --markdown-keyword: #A8C4E5; - --markdown-string: #32CD32; - --markdown-number: #FFD700; - --markdown-function: #FF6347; - --markdown-comment: #75715E; - --markdown-method: #66D9EF; - --markdown-tag: #5D8297; - --markdown-attribute: #FF6347; - --markdown-at-rule: #AF00DB; - --markdown-punctuation: #000000; - --markdown-property: #FF6347; - --markdown-value: #5D8297; - --markdown-selector: #1C2C42; - --markdown-indentation: #CCCCCC; + --markdown-bg: var(--primary-color); + --markdown-color: var(--white); + --markdown-keyword: var(--accent-color); + --markdown-string: var(--success-color); + --markdown-number: var(--warning-color); + --markdown-function: var(--danger-color); + --markdown-comment: var(--gray-dark); + --markdown-method: var(--cyan-dark); + --markdown-tag: var(--secondary-color); + --markdown-attribute: var(--danger-color); + --markdown-at-rule: var(--indigo-dark); + --markdown-punctuation: var(--black); + --markdown-property: var(--danger-color); + --markdown-value: var(--secondary-color); + --markdown-selector: var(--dark-text); + --markdown-indentation: var(--gray-dark-2); --markdown-text: var(--markdown-indentation); - - --spacing-none: 0; - --spacing-extra-small: 5px; - --spacing-small: 10px; - --spacing-medium: 16px; - --spacing-large: 20px; - - --border-radius: 5px; } \ No newline at end of file diff --git a/zephyrcss/themes/dark-theme.css b/zephyrcss/themes/dark-theme.css index 80d690a..dead7da 100644 --- a/zephyrcss/themes/dark-theme.css +++ b/zephyrcss/themes/dark-theme.css @@ -7,15 +7,15 @@ --neutral-color: #3C3C3C; /* Neutral dark gray */ --secondary-color-light: #3D3D5C; /* Light shade of secondary color */ - /* Semantic colors */ - --info-color: #2196F3; /* Bright blue for info */ - --info-background: #0D47A1; /* Dark blue for info background */ - --success-color: #4CAF50; /* Bright green */ - --success-background: #1B5E20; /* Dark green for success background */ - --danger-color: #F44336; /* Bright red */ - --danger-background: #B71C1C; /* Dark red for danger background */ - --warning-color: #FF9800; /* Bright amber */ - --warning-background: #E65100; /* Dark amber for warning background */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: var(--white); /* White for text on dark backgrounds */ diff --git a/zephyrcss/themes/default.css b/zephyrcss/themes/default.css index ca3c9fa..916025b 100644 --- a/zephyrcss/themes/default.css +++ b/zephyrcss/themes/default.css @@ -5,11 +5,15 @@ --accent-color: #A88FAC; --neutral-color: #D4B2D8; - /* Semantic colors */ - --info-color: #17a2b8; - --success-color: #2ECC71; - --danger-color: #E74C3C; - --warning-color: #F39C12; + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Typography */ --font-family-sans-serif: "Montserrat", "Helvetica Neue", Arial, sans-serif; diff --git a/zephyrcss/themes/elegant-theme.css b/zephyrcss/themes/elegant-theme.css index 6f5cddb..14ebff4 100644 --- a/zephyrcss/themes/elegant-theme.css +++ b/zephyrcss/themes/elegant-theme.css @@ -7,15 +7,15 @@ --neutral-color: #BDC3C7; /* Medium gray */ --secondary-color-light: #D3DDE6; /* Light gray */ - /* Semantic colors */ - --info-color: #3498DB; /* Bright blue */ - --info-background: #E0F7FA; /* Light cyan */ - --success-color: #2ECC71; /* Bright green */ - --success-background: #E8F5E9; /* Very light green */ - --danger-color: #E74C3C; /* Bright red */ - --danger-background: #FDEDEC; /* Light red */ - --warning-color: #F39C12; /* Bright yellow-orange */ - --warning-background: #FEF3E6; /* Light yellow */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #FFFFFF; /* White */ diff --git a/zephyrcss/themes/fantasy-theme.css b/zephyrcss/themes/fantasy-theme.css index 46bd78f..2db5666 100644 --- a/zephyrcss/themes/fantasy-theme.css +++ b/zephyrcss/themes/fantasy-theme.css @@ -7,15 +7,15 @@ --neutral-color: #C5B3CD; /* Light lavender */ --secondary-color-light: #CFC3E1; /* Light lavender shade */ - /* Semantic colors */ - --info-color: #7B68EE; /* Medium slate blue */ - --info-background: #E6E6FA; /* Lavender */ - --success-color: #32CD32; /* Lime green */ - --success-background: #F0FFF0; /* Honeydew */ - --danger-color: #FF69B4; /* Hot pink */ - --danger-background: #FFF0F5; /* Lavender blush */ - --warning-color: #FFD700; /* Gold */ - --warning-background: #FFF8DC; /* Cornsilk */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #F9F2FF; /* Very light lilac */ diff --git a/zephyrcss/themes/heaven-theme.css b/zephyrcss/themes/heaven-theme.css index fcc6fbc..05e97f3 100644 --- a/zephyrcss/themes/heaven-theme.css +++ b/zephyrcss/themes/heaven-theme.css @@ -7,15 +7,15 @@ --neutral-color: #C8E6C9; /* Soft green */ --secondary-color-light: #BBDEFB; /* Light blue */ - /* Semantic colors */ - --info-color: #64B5F6; /* Light blue */ - --info-background: #E3F2FD; /* Light sky blue */ - --success-color: #81C784; /* Light green */ - --success-background: #E8F5E9; /* Light green */ - --danger-color: #E57373; /* Light red */ - --danger-background: #FFEBEE; /* Light red */ - --warning-color: #FFD54F; /* Light yellow */ - --warning-background: #FFF9C4; /* Light yellow */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #90CAF9; /* White */ diff --git a/zephyrcss/themes/hellfire-theme.css b/zephyrcss/themes/hellfire-theme.css index 8f10d49..c4b02e7 100644 --- a/zephyrcss/themes/hellfire-theme.css +++ b/zephyrcss/themes/hellfire-theme.css @@ -7,15 +7,15 @@ --neutral-color: #808080; /* Medium gray */ --secondary-color-light: #8B0000; /* Dark red */ - /* Semantic colors */ - --info-color: #FF6347; /* Tomato */ - --info-background: #FFE4E1; /* Light red */ - --success-color: #32CD32; /* Lime green */ - --success-background: #F0FFF0; /* Honeydew */ - --danger-color: #DC143C; /* Crimson */ - --danger-background: #FFE4E1; /* Light red */ - --warning-color: #FFD700; /* Gold */ - --warning-background: #FFF8DC; /* Light yellow */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #FFFFFF; /* White */ diff --git a/zephyrcss/themes/high-contrast-theme.css b/zephyrcss/themes/high-contrast-theme.css index 82e95ab..e6f4be4 100644 --- a/zephyrcss/themes/high-contrast-theme.css +++ b/zephyrcss/themes/high-contrast-theme.css @@ -7,15 +7,15 @@ --neutral-color: #777777; /* Medium gray */ --secondary-color-light: #CCCCCC; /* Light gray */ - /* Semantic colors */ - --info-color: #0000FF; /* Bright blue for info */ - --info-background: #E0E0FF; /* Light blue for info background */ - --success-color: #00FF00; /* Bright green */ - --success-background: #E0FFE0; /* Light green for success background */ - --danger-color: #FF0000; /* Bright red */ - --danger-background: #FFE0E0; /* Light red for danger background */ - --warning-color: #FFA500; /* Bright orange */ - --warning-background: #FFF3E0; /* Light orange for warning background */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #FFFFFF; /* White for text on dark backgrounds */ diff --git a/zephyrcss/themes/high-tech-theme.css b/zephyrcss/themes/high-tech-theme.css index b1d92ac..1496763 100644 --- a/zephyrcss/themes/high-tech-theme.css +++ b/zephyrcss/themes/high-tech-theme.css @@ -7,15 +7,15 @@ --neutral-color: #606060; /* Medium gray */ --secondary-color-light: #707070; /* Lighter gray */ - /* Semantic colors */ - --info-color: #00BFFF; /* Deep sky blue */ - --info-background: #E0FFFF; /* Light cyan */ - --success-color: #32CD32; /* Lime green */ - --success-background: #F0FFF0; /* Honeydew */ - --danger-color: #FF4500; /* Orange red */ - --danger-background: #FFE4E1; /* Misty rose */ - --warning-color: #FFD700; /* Gold */ - --warning-background: #FFF8DC; /* Cornsilk */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #E0E0E0; /* Light gray */ diff --git a/zephyrcss/themes/light-theme.css b/zephyrcss/themes/light-theme.css index be05e0e..e797456 100644 --- a/zephyrcss/themes/light-theme.css +++ b/zephyrcss/themes/light-theme.css @@ -7,15 +7,15 @@ --neutral-color: #D3D3D3; /* Light gray */ --secondary-color-light: #E0E0E0; /* Light gray */ - /* Semantic colors */ - --info-color: #17A2B8; /* Standard blue for info */ - --info-background: #D1ECF1; /* Light blue for info background */ - --success-color: #28A745; /* Bright green */ - --success-background: #D4EDDA; /* Light green for success background */ - --danger-color: #DC3545; /* Bright red */ - --danger-background: #F8D7DA; /* Light red for danger background */ - --warning-color: #FFC107; /* Bright yellow */ - --warning-background: #FFF3CD; /* Light yellow for warning background */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #D3D3D3; /* White */ diff --git a/zephyrcss/themes/minimalist-theme.css b/zephyrcss/themes/minimalist-theme.css index 35fd1c8..37df90e 100644 --- a/zephyrcss/themes/minimalist-theme.css +++ b/zephyrcss/themes/minimalist-theme.css @@ -7,15 +7,15 @@ --neutral-color: #C0C0C0; /* Medium gray */ --secondary-color-light: #D3D3D3; /* Light gray */ - /* Semantic colors */ - --info-color: #007BFF; /* Blue */ - --info-background: #E0F7FA; /* Light cyan */ - --success-color: #28A745; /* Green */ - --success-background: #D4EDDA; /* Light green */ - --danger-color: #DC3545; /* Red */ - --danger-background: #F8D7DA; /* Light red */ - --warning-color: #FFC107; /* Yellow */ - --warning-background: #FFF3CD; /* Light yellow */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #C0C0C0; /* White */ diff --git a/zephyrcss/themes/neon-theme.css b/zephyrcss/themes/neon-theme.css index da11ecd..c1fca62 100644 --- a/zephyrcss/themes/neon-theme.css +++ b/zephyrcss/themes/neon-theme.css @@ -7,15 +7,15 @@ --neutral-color: #4D4D4D; /* Medium gray */ --secondary-color-light: #666666; /* Lighter gray */ - /* Semantic colors */ - --info-color: #1E90FF; /* Dodger blue */ - --info-background: #E6E6FA; /* Lavender */ - --success-color: #32CD32; /* Lime green */ - --success-background: #E8F5E9; /* Very light green */ - --danger-color: #FF4500; /* Orange red */ - --danger-background: #FFE4E1; /* Misty rose */ - --warning-color: #FFD700; /* Gold */ - --warning-background: #FFF8DC; /* Cornsilk */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #FFFFFF; /* White */ diff --git a/zephyrcss/themes/pastel-theme.css b/zephyrcss/themes/pastel-theme.css index aaa8877..6faf8a5 100644 --- a/zephyrcss/themes/pastel-theme.css +++ b/zephyrcss/themes/pastel-theme.css @@ -7,15 +7,15 @@ --neutral-color: #C5CAE9; /* Light purple */ --secondary-color-light: #E1F5FE; /* Very light blue */ - /* Semantic colors */ - --info-color: #4FC3F7; /* Light sky blue */ - --info-background: #E1F5FE; /* Very light sky blue */ - --success-color: #81C784; /* Light green */ - --success-background: #E8F5E9; /* Very light green */ - --danger-color: #E57373; /* Light red */ - --danger-background: #FFEBEE; /* Very light red */ - --warning-color: #FFD54F; /* Light yellow */ - --warning-background: #FFF8E1; /* Very light yellow */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #FAFAFA; /* Very light gray */ diff --git a/zephyrcss/themes/retro-futurism-theme.css b/zephyrcss/themes/retro-futurism-theme.css index 110ec26..b49d5cc 100644 --- a/zephyrcss/themes/retro-futurism-theme.css +++ b/zephyrcss/themes/retro-futurism-theme.css @@ -7,15 +7,15 @@ --neutral-color: #8A8A8A; /* Medium gray */ --secondary-color-light: #FFA500; /* Light orange */ - /* Semantic colors */ - --info-color: #1E90FF; /* Dodger blue */ - --info-background: #E0FFFF; /* Light cyan */ - --success-color: #32CD32; /* Lime green */ - --success-background: #E0FFE0; /* Light green */ - --danger-color: #FF4500; /* Orange red */ - --danger-background: #FFE4E1; /* Light red */ - --warning-color: #FFD700; /* Gold */ - --warning-background: #FFF8DC; /* Light yellow */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #FFFFFF; /* White */ diff --git a/zephyrcss/themes/shelby.css b/zephyrcss/themes/shelby.css new file mode 100644 index 0000000..e66ac8b --- /dev/null +++ b/zephyrcss/themes/shelby.css @@ -0,0 +1,98 @@ +[data-theme="shelby"] { + /* Base colors inspired by the classic Shelby GT500 */ + --primary-color: #B22222; /* Deep Red, representing the car's body */ + --secondary-color: #FFFFFF; /* White, representing the racing stripes */ + --accent-color: #D3D3D3; /* Light gray for chrome-like accents */ + --neutral-color: #000000; /* Black for contrasting details */ + + /* Semantic colors */ + --info-color: #17a2b8; /* Blue-tinted color for informational elements */ + --success-color: #2ECC71; /* Green for success elements */ + --danger-color: #E74C3C; /* Red for danger elements */ + --warning-color: #F39C12; /* Yellow for warning elements */ + + /* Typography */ + --font-family-sans-serif: "Oswald", "Helvetica Neue", Arial, sans-serif; /* Bold and modern font */ + --font-family-serif: "Playfair Display", Georgia, serif; + --font-family-monospace: "Courier Prime", "Courier New", monospace; + + /* Spacing */ + --spacing-none: 0; + --spacing-extra-small: 4px; + --spacing-small: 8px; + --spacing-medium: 14px; + --spacing-large: 20px; + + /* Border */ + --border-radius: 6px; /* Slightly sharper corners for a more aggressive look */ + + /* Transitions */ + --transition-fast: 100ms ease-in-out; + --transition-normal: 250ms ease-in-out; + --transition-slow: 400ms ease-in-out; + + /* Component-specific variables */ + --button-padding: 12px 24px; + --button-border-radius: 6px; + --button-font-size: 1em; + --button-background-color: var(--primary-color); + --button-text-color: var(--accent-color); + + --card-padding: 18px; + --card-border-radius: 10px; + --card-header-font-size: 1.5em; + --card-header-margin-bottom: 10px; + --card-content-margin-top: 10px; + --card-group-gap: 1rem; + --card-min-width: 260px; + --card-content-font-size: 1rem; + --card-background-color: var(--secondary-color); + --card-text-color: var(--neutral-color); + + --input-margin: 8px 0; + --input-padding: 12px; + --input-border-radius: 4px; + --input-font-size: 1rem; + --input-background-color: var(--primary-color); + --input-text-color: var(--neutral-color); + + --dropdown-padding: 12px; + --dropdown-border-radius: 4px; + --dropdown-font-size: 1rem; + --dropdown-background-color: var(--primary-color); + --dropdown-text-color: var(--neutral-color); + + --modal-border-radius: 8px; + --modal-width: 320px; + --modal-z-index: 1050; + --modal-header-padding: 18px; + --modal-header-font-size: 1.25em; + --modal-body-padding: 18px; + --modal-footer-padding: 18px; + --modal-background-color: var(--secondary-color); + --modal-text-color: var(--neutral-color); + + --notification-padding: 18px; + --notification-font-size: 1em; + --notification-background-color: var(--primary-color); + --notification-text-color: var(--accent-color); + + /* Markdown Editor and Renderer Colors */ + --markdown-bg: #101820; /* Dark background to mimic the car’s interior */ + --markdown-color: #C5C6C7; /* Light grey for text */ + --markdown-keyword: #45A29E; /* Cool blue for keywords */ + --markdown-string: #66FCF1; /* Bright blue for strings */ + --markdown-number: #A6E22E; /* Green for numbers */ + --markdown-function: #F39C12; /* Yellow for functions */ + --markdown-comment: #757575; /* Grey for comments */ + --markdown-method: #FF5733; /* Orange for methods */ + --markdown-tag: #FF0000; /* Red for tags */ + --markdown-attribute: #AF00DB; /* Purple for attributes */ + --markdown-at-rule: #0000FF; /* Blue for at-rules */ + --markdown-punctuation: #CCCCCC; /* Light grey for punctuation */ + --markdown-property: #FF0000; /* Red for properties */ + --markdown-value: #0000FF; /* Blue for values */ + --markdown-selector: #800000; /* Maroon for selectors */ + --markdown-indentation: #1F2833; /* Dark grey for indentation */ + --markdown-text: var(--markdown-indentation); +} \ No newline at end of file diff --git a/zephyrcss/themes/vintage-theme.css b/zephyrcss/themes/vintage-theme.css index 86f1971..84eb60c 100644 --- a/zephyrcss/themes/vintage-theme.css +++ b/zephyrcss/themes/vintage-theme.css @@ -7,109 +7,76 @@ --neutral-color: #C4C4C4; /* Light gray */ --secondary-color-light: #EEDFCC; /* Light beige */ - /* Semantic colors */ - --info-color: #6B8E23; /* Olive drab */ - --info-background: #FAFAD2; /* Light goldenrod yellow */ - --success-color: #8FBC8F; /* Dark sea green */ - --success-background: #F0FFF0; /* Honeydew */ - --danger-color: #CD5C5C; /* Indian red */ - --danger-background: #FFE4E1; /* Misty rose */ - --warning-color: #DAA520; /* Goldenrod */ - --warning-background: #FFFAF0; /* Floral white */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #F5F5DC; /* Beige */ --dark-text: #4B3B2B; /* Dark brown */ - /* Component-specific colors */ - --button-hover-bg: #A0522D; /* Sienna */ - --input-focus-border: #BF8B67; /* Adjusted to match the secondary color */ - --button-click-bg: #D2691E; /* Chocolate */ + /* Component-Specific Colors */ + --button-hover-bg: var(--teal-dark); /* Steel blue */ + --input-focus-border: var(--blue-light); /* Adjusted to match the secondary color */ + --button-click-bg: var(--info-color); /* Dodger blue */ - /* Typography */ - --font-family-sans-serif: "Montserrat", "Helvetica Neue", Arial, sans-serif; - --font-family-serif: "Merriweather", Georgia, serif; - --font-family-monospace: "Fira Code", "Courier New", monospace; - - /* Body styles */ + /* Body Styles */ --body-bg: var(--background-color); - --body-color: #4B3B2B; /* Dark brown for main text */ + --body-color: var(--dark-text); /* Very dark navy for main text */ - /* Link styles */ + /* Link Styles */ --link-color: var(--accent-color); --link-decoration: none; - --link-hover-color: #DAA520; /* Goldenrod */ + --link-hover-color: var(--teal-dark); /* Steel blue */ - /* Additional theme-specific variables */ + /* Additional Theme-Specific Variables */ --header-bg: var(--primary-color); --header-color: var(--neutral-color); --footer-bg: var(--secondary-color); --footer-color: var(--primary-color); --button-primary-bg: var(--accent-color); - --button-primary-color: white; - --card-bg: white; + --button-primary-color: var(--white); + --card-bg: var(--white); --card-border: var(--neutral-color); - /* Button specific variables */ - --button-padding: 10px 20px; - --button-border-radius: 5px; - --button-font-size: 1em; - --button-primary-bg-color: var(--accent-color); + /* Button Specific Variables */ --button-disabled-background: var(--neutral-color); - /* Card specific variables */ + /* Card Specific Variables */ --card-box-shadow: var(--shadow-light); - --card-padding: 16px; - --card-border-radius: 8px; - --card-header-font-size: 1.5em; - --card-header-margin-bottom: 12px; - --card-content-margin-top: 8px; /* CardGroup Component Variables */ - --card-group-gap: 1rem; - --card-min-width: 250px; - --card-border-color: #C4C4C4; - --card-header-color: #4B3B2B; - --card-content-color: #7F4E4E; - --card-content-font-size: 1rem; + --card-border-color: var(--neutral-color); + --card-header-color: var(--dark-text); + --card-content-color: var(--primary-color); - /* Input specific variables */ - --input-margin: 10px 0; - --input-padding: 10px; + /* Input Specific Variables */ --input-border: 1px solid var(--neutral-color); - --input-border-radius: 4px; - --input-font-size: 1rem; --input-focus-border-color: var(--secondary-color); - /* Dropdown specific variables */ - --dropdown-padding: 10px; + /* Dropdown Specific Variables */ --dropdown-border: 1px solid var(--neutral-color); - --dropdown-border-radius: 4px; - --dropdown-font-size: 1rem; --dropdown-background: var(--background-color); - --dropdown-arrow: url('data:image/svg+xml;utf8,'); + --dropdown-arrow: url('data:image/svg+xml;utf8,'); --dropdown-focus-border-color: var(--secondary-color); - /* Modal specific variables */ + /* Modal Specific Variables */ --modal-background: var(--background-color); - --modal-border-radius: 10px; --modal-box-shadow: var(--shadow-dark); - --modal-width: 300px; - --modal-z-index: 1000; - --modal-header-padding: 16px; --modal-header-background: var(--primary-color); --modal-header-border-color: var(--neutral-color); - --modal-header-font-size: 1.25em; - --modal-body-padding: 16px; - --modal-footer-padding: 16px; --modal-footer-background: var(--neutral-color); --modal-footer-border-color: var(--neutral-color); - /* Notification specific variables */ - --notification-padding: 16px; + /* Notification Specific Variables */ --notification-background: var(--light-text); --notification-border-color: var(--primary-color); - --notification-font-size: 1em; --notification-success-background: var(--success-background); --notification-error-background: var(--danger-background); --notification-warning-background: var(--warning-background); @@ -118,29 +85,21 @@ --notification-warning-text: var(--warning-color); /* Markdown Editor and Renderer Colors */ - --markdown-bg: #7F4E4E; - --markdown-color: #F8F8F2; - --markdown-keyword: #EAC67A; - --markdown-string: #8FBC8F; - --markdown-number: #DAA520; - --markdown-function: #CD5C5C; - --markdown-comment: #75715E; - --markdown-method: #66D9EF; - --markdown-tag: #BF8B67; - --markdown-attribute: #CD5C5C; - --markdown-at-rule: #AF00DB; - --markdown-punctuation: #000000; - --markdown-property: #CD5C5C; - --markdown-value: #BF8B67; - --markdown-selector: #4B3B2B; - --markdown-indentation: #CCCCCC; + --markdown-bg: var(--primary-color); + --markdown-color: var(--white); + --markdown-keyword: var(--accent-color); + --markdown-string: var(--success-color); + --markdown-number: var(--warning-color); + --markdown-function: var(--danger-color); + --markdown-comment: var(--gray-dark); + --markdown-method: var(--cyan-dark); + --markdown-tag: var(--secondary-color); + --markdown-attribute: var(--danger-color); + --markdown-at-rule: var(--indigo-dark); + --markdown-punctuation: var(--black); + --markdown-property: var(--danger-color); + --markdown-value: var(--secondary-color); + --markdown-selector: var(--dark-text); + --markdown-indentation: var(--gray-dark-2); --markdown-text: var(--markdown-indentation); - - --spacing-none: 0; - --spacing-extra-small: 5px; - --spacing-small: 10px; - --spacing-medium: 16px; - --spacing-large: 20px; - - --border-radius: 5px; } \ No newline at end of file diff --git a/zephyrcss/themes/warm-autumn-theme.css b/zephyrcss/themes/warm-autumn-theme.css index 1c4511f..0f98105 100644 --- a/zephyrcss/themes/warm-autumn-theme.css +++ b/zephyrcss/themes/warm-autumn-theme.css @@ -7,15 +7,15 @@ --neutral-color: #F4A460; /* Sandy brown */ --secondary-color-light: #FFE4C4; /* Light bisque */ - /* Semantic colors */ - --info-color: #FF7F50; /* Coral */ - --info-background: #FFDAB9; /* Peach puff */ - --success-color: #32CD32; /* Lime green */ - --success-background: #F0FFF0; /* Honeydew */ - --danger-color: #FF6347; /* Tomato */ - --danger-background: #FFE4E1; /* Misty rose */ - --warning-color: #FFD700; /* Gold */ - --warning-background: #FFF8DC; /* Cornsilk */ + /* Semantic Colors */ + --info-color: var(--info-color); /* Dodger blue */ + --info-background: var(--info-background);/* Alice blue */ + --success-color: var(--success-color); /* Lime green */ + --success-background: var(--success-background); /* Honeydew */ + --danger-color: var(--danger-color); /* Tomato */ + --danger-background: var(--danger-background); /* Misty rose */ + --warning-color: var(--warning-color); /* Gold */ + --warning-background: var(--warning-background); /* Cornsilk */ /* Text colors */ --light-text: #FFE4C4; /* Bisque */ diff --git a/zephyrcss/variables.css b/zephyrcss/variables.css index 4a4c284..9ee402f 100644 --- a/zephyrcss/variables.css +++ b/zephyrcss/variables.css @@ -1,21 +1,38 @@ :root { - /* Base colors */ - --primary-color: #5D4E60; - --secondary-color: #826C7F; - --accent-color: #A88FAC; - --neutral-color: #D4B2D8; - - /* Semantic colors */ - --info-color: #17a2b8; - --success-color: #2ECC71; - --danger-color: #E74C3C; - --warning-color: #F39C12; + /* Base Colors (Referenced from colors.css) */ + --primary-color: var(--purple); + --secondary-color: var(--indigo); + --accent-color: var(--blue-violet); + --neutral-color: var(--gray-light); + + /* Semantic Colors (Referenced from colors.css) */ + --info-color: var(--info-color); + --success-color: var(--success-color); + --danger-color: var(--danger-color); + --warning-color: var(--warning-color); /* Typography */ --font-family-sans-serif: "Montserrat", "Helvetica Neue", Arial, sans-serif; --font-family-serif: "Merriweather", Georgia, serif; --font-family-monospace: "Fira Code", "Courier New", monospace; + /* Font Sizes */ + --font-size-xs: 0.75rem; + --font-size-sm: 0.875rem; + --font-size-base: 1rem; + --font-size-lg: 1.125rem; + --font-size-xl: 1.25rem; + --font-size-2xl: 1.5rem; + --font-size-3xl: 1.875rem; + --font-size-4xl: 2.25rem; + + /* Font Weights */ + --font-weight-light: 300; + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + /* Spacing */ --spacing-none: 0; --spacing-extra-small: 5px; @@ -31,39 +48,54 @@ --transition-normal: 300ms ease-in-out; --transition-slow: 500ms ease-in-out; - /* Component-specific variables */ + /* Component Sizes */ --button-padding: 10px 20px; --button-border-radius: 5px; - --button-font-size: 1em; + --button-font-size: var(--font-size-base); --card-padding: 16px; --card-border-radius: 8px; - --card-header-font-size: 1.5em; + --card-header-font-size: var(--font-size-2xl); --card-header-margin-bottom: 12px; --card-content-margin-top: 8px; --card-group-gap: 1rem; --card-min-width: 250px; - --card-content-font-size: 1rem; + --card-content-font-size: var(--font-size-base); --input-margin: 10px 0; --input-padding: 10px; --input-border-radius: 4px; - --input-font-size: 1rem; + --input-font-size: var(--font-size-base); --dropdown-padding: 10px; --dropdown-border-radius: 4px; - --dropdown-font-size: 1rem; + --dropdown-font-size: var(--font-size-base); --modal-border-radius: 10px; --modal-width: 300px; --modal-z-index: 1000; --modal-header-padding: 16px; - --modal-header-font-size: 1.25em; + --modal-header-font-size: var(--font-size-xl); --modal-body-padding: 16px; --modal-footer-padding: 16px; --notification-padding: 16px; - --notification-font-size: 1em; + --notification-font-size: var(--font-size-base); + + /* Line Heights */ + --line-height-none: 1; + --line-height-tight: 1.25; + --line-height-normal: 1.5; + --line-height-loose: 2; + + /* Letter Spacing */ + --letter-spacing-tight: -0.05em; + --letter-spacing-normal: 0; + --letter-spacing-wide: 0.05em; + + /* Shadows */ + --shadow-light: var(--shadow-light); + --shadow-dark: var(--shadow-dark); /* Markdown Editor and Renderer Colors */ --markdown-bg: #272822; diff --git a/zephyrcss/zephyr.css b/zephyrcss/zephyr.css index e2dda1e..0f3ccbe 100644 --- a/zephyrcss/zephyr.css +++ b/zephyrcss/zephyr.css @@ -52,4 +52,5 @@ @import './themes/retro-futurism-theme.css'; @import './themes/light-theme.css'; @import './themes/heaven-theme.css'; -@import './themes/hellfire-theme.css'; \ No newline at end of file +@import './themes/hellfire-theme.css'; +@import './themes/shelby.css'; \ No newline at end of file diff --git a/zephyrtemplates/DynamicFocusZone.js b/zephyrtemplates/DynamicFocusZone.js new file mode 100644 index 0000000..3a383e0 --- /dev/null +++ b/zephyrtemplates/DynamicFocusZone.js @@ -0,0 +1,103 @@ +import { ZephyrJS, defineCustomElement } from "../zephyrcore/zephyr.js"; + +export default class DynamicFocusZone extends ZephyrJS { + static get isCoreTemplate() { + return true; + } + + static get observedAttributes() { + return ['focus-size', 'blur-amount', 'dim-amount']; + } + + constructor() { + super(); + this.state = { + focusPosition: { x: 50, y: 50 }, + focusSize: 200, + blurAmount: 10, + dimAmount: 0.8, + }; + console.log('DynamicFocusZone constructor called'); + } + + attributeChangedCallback(name, oldValue, newValue) { + switch (name) { + case 'focus-size': + this.setState({ focusSize: parseInt(newValue) || 200 }); + break; + case 'blur-amount': + this.setState({ blurAmount: parseInt(newValue) || 10 }); + break; + case 'dim-amount': + this.setState({ dimAmount: parseFloat(newValue) || 0.8 }); + break; + } + } + + async connectedCallback() { + await super.connectedCallback(); + this.setupEventListeners(); + this.cloneContent(); + await this.render(); + console.log('DynamicFocusZone connected and rendered'); + } + + setupEventListeners() { + this.addEventListener('mousemove', this.handleMouseMove.bind(this)); + this.addEventListener('mouseleave', this.handleMouseLeave.bind(this)); + this.addEventListener('touchmove', this.handleTouchMove.bind(this)); + console.log('Event listeners set up'); + } + + handleMouseMove(event) { + const { clientX, clientY } = event; + const { left, top, width, height } = this.getBoundingClientRect(); + const x = Math.min(Math.max(clientX - left, 0), width); + const y = Math.min(Math.max(clientY - top, 0), height); + this.updateFocusPosition(x, y); + console.log('Mouse moved', x, y); + } + + handleMouseLeave() { + const { width, height } = this.getBoundingClientRect(); + this.updateFocusPosition(width / 2, height / 2); + console.log('Mouse left, focus centered'); + } + + handleTouchMove(event) { + event.preventDefault(); + const touch = event.touches[0]; + this.handleMouseMove(touch); + } + + updateFocusPosition(x, y) { + this.setState({ focusPosition: { x, y } }); + } + + cloneContent() { + this.originalContent = this.innerHTML; + this.innerHTML = ''; + console.log('Content cloned:', this.originalContent); + } + + render() { + const { focusPosition, focusSize, blurAmount, dimAmount } = this.state; + + this.shadowRoot.innerHTML = ` +
+