feat: refactor components to use slots, implement CSS-controlled SVG graphics, and enhance theming system

- Refactored InitialSection.astro to use named slot (extraContent) instead of prop for flexible HTML/JSX content injection from parent components
- Updated index.astro to utilize extraContent slot in InitialSection component
- Replaced decorative background div in Layout.astro with inline SVG element, enabling dynamic color control via CSS variable (--naliia-n-bg-color)
- Added .bg-svg class and --bg-svg-color variable in global.css for customizable SVG decorative background
- Converted navbar logo from img to inline SVG with CSS-controlled gradient using linearGradient definition
- Implemented gradient variables (--navbar-n-naliia-start, --navbar-n-naliia-end) for theme-aware logo coloring
- Configured vertical gradient (bottom-to-top) with pink color at bottom for navbar logo
- Added data-theme attribute support in Layout.astro for light/dark theme switching
- Extended global.css with comprehensive color palette (pink, yellow, mistyRose variants) and semantic tokens
- Refactored all color references to use CSS custom properties for consistent theming
- Updated Footer.astro logo from img to inline SVG with gradient support matching navbar implementation
- Replaced hardcoded color values in navbar.css and footer.css with semantic token variables
- Added [data-theme='dark'] selector in global.css to support future dark mode implementation
- Created reusable CSS variables for borders, backgrounds, and text colors across components
- Improved pricing card layout with enhanced visual hierarchy and gradient-based pricing tiers
- Restructured index.astro pricing section with improved feature presentation and layout
This commit is contained in:
2026-02-04 18:31:47 -05:00
parent 64309e8813
commit 83b0461f3b
9 changed files with 464 additions and 175 deletions

View File

@@ -32,7 +32,7 @@
}
.offer-card {
border: 1px solid rgba(255, 255, 255, 0.2);
border: var(--main-border);
border-radius: var(--space-lg-24px);
height: 200px;
@@ -65,74 +65,66 @@
.pricing-cards-container {
display: flex;
flex-direction: row;
flex-direction: column;
justify-content: center;
align-items: center;
gap: var(--space-lg-24px);
}
.pricing-card {
border-radius: var(--space-lg-24px);
.best-plan-card {
border-top-left-radius: var(--space-2xl-48px);
border-top-right-radius: var(--space-2xl-48px);
padding: var(--space-3xl-64px) var(--space-xl-32px);
display: flex;
align-items: center;
gap: var(--space-2xl-48px);
padding: var(--space-xl-32px);
height: 372px;
width: 100%;
box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);
background-color: var(--pricingcard-bgcolor);
box-sizing: border-box;
}
.price-container {
height: 100%;
width: 50%;
display: flex;
flex-direction: column;
justify-content: space-between;
gap: var(--space-2xl-48px);
border-top-left-radius: var(--space-2xl-48px);
min-height: 650px;
width: 380px;
box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);
background-color: #363636;
}
& .plan-type {
font-weight: bold;
background-color: var(--pricingcard-plantype-bgcolor);
color: var(--pricingcard-plantype-txtcolor);
padding: var(--space-sm-8px) var(--space-md-16px);
border-radius: var(--space-md-16px);
width: fit-content;
display: flex;
align-items: center;
justify-content: center;
}
.pricing-card-content {
display: flex;
flex-direction: column;
gap: var(--space-2xl-48px);
}
.more-details {
font-size: var(--font-desktop-base);
line-height: var(--line-height-desktop-base);
color: white;
text-align: left;
cursor: pointer;
text-decoration: underline;
}
.best-plan-card {
border: 4px solid #e54c75;
height: 680px;
}
.pricing-card .plan-type {
font-weight: bold;
background-color: #e54c75;
padding: var(--space-sm-8px) var(--space-md-16px);
border-radius: var(--space-md-16px);
width: fit-content;
display: flex;
align-items: center;
justify-content: center;
& a {
color: var(--pricingcard-value-txtcolor);
}
}
.price-and-description {
display: flex;
flex-direction: column;
gap: var(--space-sm-8px);
}
.features-container {
display: flex;
flex-direction: column;
gap: var(--space-sm-8px);
& h4,
h6,
p {
color: var(--pricingcard-value-txtcolor);
}
&& li {
color: white;
font-size: var(--font-desktop-base);
line-height: var(--line-height-desktop-base);
& .price-title {
text-decoration: underline;
}
}
@@ -163,8 +155,45 @@
font-size: var(--font-desktop-sm);
font-weight: normal;
line-height: var(--line-height-desktop-sm);
color: white;
text-align: center;
cursor: pointer;
text-decoration: underline;
}
.divider {
width: 1px;
height: 95%;
background-color: rgba(255, 255, 255, 0.2);
}
.features-container {
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
gap: var(--space-md-16px);
& .features-subtitle {
font-weight: bold;
font-size: var(--font-desktop-base);
color: var(--pricingcard-features-subtitlecolor);
}
}
.features-list {
display: flex;
flex-direction: column;
gap: var(--space-md-16px);
& .basic-features,
.webapp-features,
.ai-features {
display: flex;
flex-direction: column;
}
& p {
color: var(--pricingcard-features-txtcolor);
}
}