feat: redesign contact page for POD sellers & add theme enhancements
Contact page redesign: - Replace retail-style contact info (phone, address, hours) with POD-appropriate layout - Add order tracking card with email input - Add "Handy to know" section with printing/delivery/returns info - Add email contact with response time promise - Add social links (Instagram, Pinterest) - Update intro text to be warmer and more personal Collection page improvements: - Replace sidebar filters with horizontal category pills - Add filter pill CSS with theme token integration PDP enhancements: - Add image lightbox with keyboard navigation - Add thumbnail gallery with active state - Add reviews section (toggleable) - Add related products section (toggleable) - Add trust badges section (toggleable) Theme system additions: - Add button_style setting (filled/outline/soft) - Add product_text_align setting (left/center) - Add image_aspect_ratio setting (square/portrait/landscape) - Add responsive form layouts with flex-wrap 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,12 @@ defmodule SimpleshopTheme.Theme.CSSGenerator do
|
||||
.preview-frame, .shop-root {
|
||||
#{generate_accent(settings.accent_color)}
|
||||
#{generate_secondary_colors(settings)}
|
||||
#{generate_font_size(settings.font_size)}
|
||||
#{generate_heading_weight(settings.heading_weight)}
|
||||
#{generate_layout_width(settings.layout_width)}
|
||||
#{generate_button_style(settings.button_style)}
|
||||
#{generate_product_text_align(settings.product_text_align)}
|
||||
#{generate_image_aspect_ratio(settings.image_aspect_ratio)}
|
||||
}
|
||||
"""
|
||||
|> String.trim()
|
||||
@@ -225,6 +231,82 @@ defmodule SimpleshopTheme.Theme.CSSGenerator do
|
||||
"""
|
||||
end
|
||||
|
||||
# Font size variations
|
||||
# Using 18px as base for better accessibility (WCAG recommends 18px+)
|
||||
# Small: 18px, Medium: 19px, Large: 20px
|
||||
defp generate_font_size("small") do
|
||||
"--t-font-size-scale: 1.125;"
|
||||
end
|
||||
|
||||
defp generate_font_size("medium") do
|
||||
"--t-font-size-scale: 1.1875;"
|
||||
end
|
||||
|
||||
defp generate_font_size("large") do
|
||||
"--t-font-size-scale: 1.25;"
|
||||
end
|
||||
|
||||
# Heading weight (override typography default)
|
||||
defp generate_heading_weight("regular") do
|
||||
"--t-heading-weight-override: 400;"
|
||||
end
|
||||
|
||||
defp generate_heading_weight("medium") do
|
||||
"--t-heading-weight-override: 500;"
|
||||
end
|
||||
|
||||
defp generate_heading_weight("bold") do
|
||||
"--t-heading-weight-override: 700;"
|
||||
end
|
||||
|
||||
# Layout width
|
||||
defp generate_layout_width("contained") do
|
||||
"--t-layout-max-width: 1100px;"
|
||||
end
|
||||
|
||||
defp generate_layout_width("wide") do
|
||||
"--t-layout-max-width: 1400px;"
|
||||
end
|
||||
|
||||
defp generate_layout_width("full") do
|
||||
"--t-layout-max-width: 100%;"
|
||||
end
|
||||
|
||||
# Button style
|
||||
defp generate_button_style("filled") do
|
||||
"--t-button-style: filled;"
|
||||
end
|
||||
|
||||
defp generate_button_style("outline") do
|
||||
"--t-button-style: outline;"
|
||||
end
|
||||
|
||||
defp generate_button_style("soft") do
|
||||
"--t-button-style: soft;"
|
||||
end
|
||||
|
||||
# Product text alignment
|
||||
defp generate_product_text_align("left") do
|
||||
"--t-product-text-align: left;"
|
||||
end
|
||||
|
||||
defp generate_product_text_align("center") do
|
||||
"--t-product-text-align: center;"
|
||||
end
|
||||
|
||||
# Image aspect ratio
|
||||
defp generate_image_aspect_ratio("square") do
|
||||
"--t-image-aspect-ratio: 1 / 1;"
|
||||
end
|
||||
|
||||
defp generate_image_aspect_ratio("portrait") do
|
||||
"--t-image-aspect-ratio: 3 / 4;"
|
||||
end
|
||||
|
||||
defp generate_image_aspect_ratio("landscape") do
|
||||
"--t-image-aspect-ratio: 4 / 3;"
|
||||
end
|
||||
|
||||
# Convert hex color to HSL
|
||||
defp hex_to_hsl("#" <> hex), do: hex_to_hsl(hex)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user