All checks were successful
deploy / deploy (push) Successful in 1m23s
Replaces hardcoded PreviewData placeholders with generated content derived from real shop state: connected providers (production lead times), shipping countries (grouped by region), shop country (jurisdiction language and governing law), and feature flags (abandoned cart recovery section, newsletter, VAT clause). Returns policy correctly cites Consumer Contracts Regulations Reg 28(1)(b) for POD exemption and Consumer Rights Act for defective goods. Cart recovery section uses jurisdiction-specific wording: PECR Reg 22 for UK, GDPR Art 6(1)(f) for EU, generic otherwise. About page unchanged — shop owner's story to tell. 26 new tests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
76 lines
2.2 KiB
Elixir
76 lines
2.2 KiB
Elixir
defmodule BerrypodWeb.Shop.Content do
|
||
use BerrypodWeb, :live_view
|
||
|
||
alias Berrypod.LegalPages
|
||
alias Berrypod.Theme.PreviewData
|
||
|
||
@impl true
|
||
def mount(_params, _session, socket) do
|
||
{:ok, socket}
|
||
end
|
||
|
||
@impl true
|
||
def handle_params(_params, _uri, socket) do
|
||
config = page_config(socket.assigns.live_action)
|
||
{:noreply, assign(socket, config)}
|
||
end
|
||
|
||
@impl true
|
||
def render(assigns) do
|
||
~H"""
|
||
<BerrypodWeb.PageTemplates.content {assigns} />
|
||
"""
|
||
end
|
||
|
||
defp page_config(:about) do
|
||
%{
|
||
page_title: "About",
|
||
page_description: "Your story goes here – this is sample content for the demo shop",
|
||
og_url: BerrypodWeb.Endpoint.url() <> "/about",
|
||
active_page: "about",
|
||
hero_title: "About the studio",
|
||
hero_description: "Your story goes here – this is sample content for the demo shop",
|
||
hero_background: :sunken,
|
||
image_src: "/mockups/night-sky-blanket-3",
|
||
image_alt: "Night sky blanket draped over a chair",
|
||
content_blocks: PreviewData.about_content()
|
||
}
|
||
end
|
||
|
||
defp page_config(:delivery) do
|
||
%{
|
||
page_title: "Delivery & returns",
|
||
page_description: "Everything you need to know about shipping and returns.",
|
||
og_url: BerrypodWeb.Endpoint.url() <> "/delivery",
|
||
active_page: "delivery",
|
||
hero_title: "Delivery & returns",
|
||
hero_description: "Everything you need to know about shipping and returns",
|
||
content_blocks: LegalPages.delivery_content()
|
||
}
|
||
end
|
||
|
||
defp page_config(:privacy) do
|
||
%{
|
||
page_title: "Privacy policy",
|
||
page_description: "How we handle your personal information.",
|
||
og_url: BerrypodWeb.Endpoint.url() <> "/privacy",
|
||
active_page: "privacy",
|
||
hero_title: "Privacy policy",
|
||
hero_description: "How we handle your personal information",
|
||
content_blocks: LegalPages.privacy_content()
|
||
}
|
||
end
|
||
|
||
defp page_config(:terms) do
|
||
%{
|
||
page_title: "Terms of service",
|
||
page_description: "The terms and conditions governing purchases from our shop.",
|
||
og_url: BerrypodWeb.Endpoint.url() <> "/terms",
|
||
active_page: "terms",
|
||
hero_title: "Terms of service",
|
||
hero_description: "The legal bits",
|
||
content_blocks: LegalPages.terms_content()
|
||
}
|
||
end
|
||
end
|