diff --git a/lib/simpleshop_theme/theme/preview_data.ex b/lib/simpleshop_theme/theme/preview_data.ex
index 93ce095..6b0fe94 100644
--- a/lib/simpleshop_theme/theme/preview_data.ex
+++ b/lib/simpleshop_theme/theme/preview_data.ex
@@ -57,6 +57,50 @@ defmodule SimpleshopTheme.Theme.PreviewData do
mock_testimonials()
end
+ @doc """
+ Returns product reviews for preview.
+
+ Always returns mock data formatted for the reviews_section component.
+ """
+ def reviews do
+ [
+ %{
+ rating: 5,
+ title: "Absolutely beautiful",
+ body: "The quality exceeded my expectations. The colours are vibrant and the paper feels premium. It's now pride of place in my living room.",
+ author: "Sarah M.",
+ date: "2 weeks ago",
+ verified: true
+ },
+ %{
+ rating: 4,
+ title: "Great gift",
+ body: "Bought this as a gift and it arrived beautifully packaged. Fast shipping too. Would definitely order again.",
+ author: "James T.",
+ date: "1 month ago",
+ verified: true
+ }
+ ]
+ end
+
+ @doc """
+ Returns about page content for preview.
+
+ Returns structured content blocks for the rich_text component.
+ """
+ def about_content do
+ [
+ %{type: :lead, text: "I'm Emma, a nature photographer based in the UK. What started as weekend walks with my camera has grown into something I never expected – a little shop where I can share my favourite captures with others."},
+ %{type: :paragraph, text: "Every design in this shop comes from my own photography. Whether it's early morning mist over the hills, autumn leaves in the local woods, or the quiet beauty of wildflower meadows, I'm drawn to the peaceful moments that nature offers."},
+ %{type: :paragraph, text: "I work with quality print partners to bring these images to life on products you can actually use and enjoy – from art prints for your walls to mugs for your morning tea."},
+ %{type: :heading, text: "Quality you can trust"},
+ %{type: :paragraph, text: "I've carefully chosen print partners who share my commitment to quality. Every product is made to order using premium materials and printing techniques that ensure vibrant colours and lasting quality."},
+ %{type: :heading, text: "Printed sustainably"},
+ %{type: :paragraph, text: "Because each item is printed on demand, there's no waste from unsold stock. My print partners use eco-friendly inks where possible, and products are shipped directly to you to minimise unnecessary handling."},
+ %{type: :closing, text: "Thank you for visiting. It means a lot that you're here."}
+ ]
+ end
+
@doc """
Returns categories for preview.
diff --git a/lib/simpleshop_theme_web/components/shop_components.ex b/lib/simpleshop_theme_web/components/shop_components.ex
index cc3996a..f359ef1 100644
--- a/lib/simpleshop_theme_web/components/shop_components.ex
+++ b/lib/simpleshop_theme_web/components/shop_components.ex
@@ -1885,4 +1885,754 @@ defmodule SimpleshopThemeWeb.ShopComponents do
"""
end
+
+ @doc """
+ Renders a star rating display.
+
+ ## Attributes
+
+ * `rating` - Required. Number of filled stars (1-5).
+ * `max` - Optional. Maximum stars to display. Defaults to 5.
+ * `size` - Optional. Size variant: `:sm` (w-4), `:md` (w-5). Defaults to `:sm`.
+ * `color` - Optional. Star color. Defaults to "#f59e0b" (amber).
+
+ ## Examples
+
+ <.star_rating rating={5} />
+ <.star_rating rating={4} size={:md} />
+ """
+ attr :rating, :integer, required: true
+ attr :max, :integer, default: 5
+ attr :size, :atom, default: :sm
+ attr :color, :string, default: "#f59e0b"
+
+ def star_rating(assigns) do
+ size_class = if assigns.size == :md, do: "w-5 h-5", else: "w-4 h-4"
+ assigns = assign(assigns, :size_class, size_class)
+
+ ~H"""
+
<%= @product.description %>. Crafted with attention to detail and quality materials, this product is designed to last. Perfect for everyday use or special occasions.
+
+
+ <%= if @show_size_guide do %>
+ <.accordion_item title="Size Guide">
+
+
+
+
Size
+
Chest (cm)
+
Length (cm)
+
+
+
+ <%= for {size_row, idx} <- Enum.with_index(@sizes) do %>
+
+ """
+ end
+
+ defp rich_text_block(%{block: %{type: :paragraph}} = assigns) do
+ ~H"""
+
+ <%= @block.text %>
+
+ """
+ end
+
+ defp rich_text_block(%{block: %{type: :heading}} = assigns) do
+ ~H"""
+
+ <%= @block.text %>
+
+ """
+ end
+
+ defp rich_text_block(%{block: %{type: :closing}} = assigns) do
+ ~H"""
+
+ <%= @block.text %>
+
+ """
+ end
+
+ defp rich_text_block(assigns) do
+ ~H"""
+
+ <%= @block.text %>
+
+ """
+ end
end
diff --git a/lib/simpleshop_theme_web/live/theme_live/preview_pages/about.html.heex b/lib/simpleshop_theme_web/live/theme_live/preview_pages/about.html.heex
index fc9859f..a4e5cd0 100644
--- a/lib/simpleshop_theme_web/live/theme_live/preview_pages/about.html.heex
+++ b/lib/simpleshop_theme_web/live/theme_live/preview_pages/about.html.heex
@@ -1,64 +1,26 @@
-
<.skip_link />
-
<%= if @theme_settings.announcement_bar do %>
<.announcement_bar theme_settings={@theme_settings} />
<% end %>
-
<.shop_header theme_settings={@theme_settings} logo_image={@logo_image} header_image={@header_image} active_page="about" mode={:preview} cart_count={2} />
-
-
<.hero_section
title="About the studio"
description="Nature photography, printed with care"
background={:sunken}
/>
-
<.content_body image_url="/mockups/night-sky-blanket-3.jpg">
-
- I'm Emma, a nature photographer based in the UK. What started as weekend walks with my camera has grown into something I never expected – a little shop where I can share my favourite captures with others.
-
-
-
- Every design in this shop comes from my own photography. Whether it's early morning mist over the hills, autumn leaves in the local woods, or the quiet beauty of wildflower meadows, I'm drawn to the peaceful moments that nature offers.
-
-
-
- I work with quality print partners to bring these images to life on products you can actually use and enjoy – from art prints for your walls to mugs for your morning tea.
-
-
-
- Quality you can trust
-
-
- I've carefully chosen print partners who share my commitment to quality. Every product is made to order using premium materials and printing techniques that ensure vibrant colours and lasting quality.
-
-
-
- Printed sustainably
-
-
- Because each item is printed on demand, there's no waste from unsold stock. My print partners use eco-friendly inks where possible, and products are shipped directly to you to minimise unnecessary handling.
-
-
-
- Thank you for visiting. It means a lot that you're here.
-
- <%= for size <- ["S", "M", "L", "XL"] do %>
-
- <% end %>
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
- <%= if product.in_stock do %>
- In stock
- <% else %>
- Out of stock
- <% end %>
-
-
-
-
-
-
-
-
-
- <%= if @theme_settings.pdp_trust_badges do %>
-
-
-
-
-
Free Delivery
-
On orders over £40
-
-
-
-
-
-
Easy Returns
-
30-day return policy
-
-
-
- <% end %>
-
-
-
-
-
-
- Description
-
-
-
-
<%= product.description %>. Crafted with attention to detail and quality materials, this product is designed to last. Perfect for everyday use or special occasions.
-
-
-
-
-
-
- Size Guide
-
-
-
-
-
-
-
Size
-
Chest (cm)
-
Length (cm)
-
-
-
-
-
S
-
86-91
-
71
-
-
-
M
-
91-96
-
73
-
-
-
L
-
96-101
-
75
-
-
-
XL
-
101-106
-
77
-
-
-
-
-
-
-
-
-
- Shipping & Returns
-
-
-
-
-
Delivery
-
Free UK delivery on orders over £40. Standard delivery 3-5 working days. Express delivery available at checkout.
-
-
-
Returns
-
We offer a 30-day return policy. Items must be unused and in original packaging. Please contact us to arrange a return.