Theme documentation
Good ingredients.
A considered store.
Norveta · Development version 0.1.0
Updated 14 October 2026 · Sim Digital Labs Ltd
Sim Digital Labs Ltd · version 0.1.0 · development release · 14 October 2026
Norveta is intended for food, coffee and local retail stores. This documentation does not claim Theme Store approval, a published listing, completed live acceptance or a Lighthouse score.
Install and preview
- Duplicate or download your existing theme before changing it.
- Open Shopify admin → Online Store → Themes, choose the theme import/add action and upload Norveta-0.1.0-Install.zip. For the Coffee homepage and palette, upload Norveta-0.1.0-Coffee-Install.zip instead. Keep the chosen ZIP compressed.
- Keep Norveta as a draft. Open the editor and preview from that draft's own actions.
- Configure your brand and content using the sequence below. Save and inspect both desktop and mobile layouts.
- Publish only after your catalog, delivery, checkout, apps and accessibility checks pass and this development release clears its release gates.
The outer Development ZIP is for source, guides and QA records; uploading it as a theme fails because it is not the Shopify theme root. Install uploads theme files and does not import products, stock, collections, menus, orders, customers or shipping settings. See Shopify's installation guide.
The current source folder and packaged source are
theme/. Developer tools are optional for merchant
configuration. Setting names here are English; editor labels follow the
available translations.
Configure in order
| Step | Configure | Verify |
|---|---|---|
| 1 | Norveta/Norveta Coffee style, colors, fonts, favicon, socials, standard button corners and desktop/mobile section spacing | Contrast and typography at both widths |
| 2 | Shopify product descriptions, media, options, prices, stock and publication | Correct variant, price and actual availability |
| 3 | Collections, menus and page content | Each link reaches the intended destination |
| 4 | Header/footer menus, logo, account tools, policies and localization | Mobile menu, language and policy links |
| 5 | Home sections and selected catalog resources | Own copy, images and working buttons |
| 6 | Product/cart blocks and required properties | Quantity, plans, gifts and totals |
| 7 | Actual locations, delivery and pickup | A full checkout for each offered method |
| 8 | Search & Discovery, languages and apps | Results, filters, recommendations and translations |
| 9 | Keyboard, mobile, editor and performance checks | A complete usable purchase flow |
Norveta and Norveta Coffee have
separate install-time homepage overrides under listings,
with different palettes and discovery layouts. They do not create
separate catalogs. Changing a visual style on an existing installation
updates presentational settings; it does not certify that the preset
homepage override was applied. Back up saved configuration before
switching styles. Each preset still needs a matching populated demo
before submission.
All 51 section files
This source has 51 Liquid section files. Addable sections have editor presets; template/internal files belong to their page or rendering feature. Availability depends on the template. File names are useful in support requests; ordinary configuration uses the editor.
File without .liquid |
Purpose and setup |
|---|---|
nv-header |
Header group: desktop/mobile logo widths, main menu, promotions, search, account tools and sticky setting |
nv-footer |
Footer group: copy, selected menus, policies, localization and social/Shop tools |
nv-hero |
Desktop/mobile image, overlay/text colors, copy, button and promise blocks |
nv-slideshow |
Slide images/copy/links; manual controls and optional autoplay/timing |
nv-categories |
Collection-image cards; select actual collections |
nv-collection-navigation |
Up to 24 collection links, optional images and native mobile horizontal scroll |
nv-featured-collection |
Selected collection grid, heading and product limit |
nv-featured-product |
Selected product and basic/app blocks; purchase link opens the full product page for options and its native purchase form |
apps |
Shopify-managed standalone app wrapper; section spacing and full page width controls |
nv-promo-grid |
Promotion images, text and links |
nv-story |
Brand story image/text, layout and optional link |
nv-rich-text |
Heading, rich text, alignment and optional button |
nv-icons |
Merchant icon/text benefits with accurate copy |
nv-trust-badges |
Up to 24 fixed-icon/text blocks; icons do not certify claims |
nv-press |
Genuine press mentions, images and links |
nv-testimonials |
Genuine quotes, permission and accurate attribution |
nv-faq |
Question/answer blocks |
nv-newsletter |
Native signup and consent copy; campaigns configured separately |
nv-popup |
Optional dialog, image/link, delay and frequency |
nv-age-gate |
Optional session acknowledgment; not identity/age verification |
nv-countdown |
Genuine timezone-qualified end date and destination |
nv-stores |
Store cards, address, hours, directions and remembered preference |
nv-events |
Timed/all-day events, chronological order, related event/details, actual product ticket and ICS/Google/Outlook/Yahoo |
nv-comparison |
Up to four merchant-selected products with actual product information |
nv-customer-comparison |
Global footer-group customer selection, up to four persisted products, fresh prices and availability |
nv-hotspots |
Image hotspots linked to selected products |
nv-lookbook |
Curated image/story/product blocks |
nv-before-after |
Two merchant images and descriptive comparison labels |
nv-gallery |
Image gallery with meaningful alternatives |
nv-video |
Hosted/external primary video, optional mobile hosted source/poster, captions and transcript |
nv-product-tabs |
Product description and merchant text panels |
nv-size-chart |
Measurement labels/rows/guidance; no automatic unit conversion |
nv-product-nutrition |
Current-product nutrition/ingredients/allergens; typed custom data and optional verified meters |
nv-liquid |
Advanced custom Liquid; developer changes require separate testing |
product-recommendations |
Product-template related/complementary Shopify recommendations |
product-purchase-tools |
Product-template sticky purchase bar and image zoom |
cart-gift-wrap |
Cart-template paid wrapping service product |
main-product |
Product template: ordered/app blocks, media and purchase form |
main-collection |
Collection products, filters, sort and pagination |
main-search |
Full search results, filtering/sort/pagination |
main-cart |
Native cart quantities, removal, note, totals and checkout |
nv-sticky-cart |
Cart-template fixed subtotal/checkout bar submitting the existing native cart form |
cart-drawer |
Internal cart rendering endpoint; do not add a duplicate editor section |
predictive-search |
Internal on-demand predictive-search endpoint |
nv-page |
Default page content |
nv-contact |
Contact page and native form |
nv-blog |
Blog listing |
nv-article |
Article content, including a written recipe or editorial story |
nv-list-collections |
Collection-list page |
nv-404 |
Not-found page |
nv-password |
Password storefront page |
Gift cards use standalone templates/gift_card.liquid,
not another addable section.
Products, ordered blocks and apps
The product template offers Vendor, Title, Price, SKU, Variants, Quantity, Description, Pickup, Stock inquiry, Shipping, Inventory, Buy buttons, Nutrition, Accordion, Allergen, Text, Personalization and app blocks. Keep a clear title and usable Buy buttons. Required text properties must remain visible and labeled in the actual purchase flow.
Use actual Shopify product options and prices. The full page uses option-value selection and selected-variant media. Quick forms open the actual product form to preserve required fields; products with app blocks can fall back to the full page. Test an app in its intended context instead of assuming it works in every quick view.
Quantity follows Shopify variant minimum/increment/maximum. Selling plans require configured product subscription plans/apps; the theme cannot create subscription contracts. Accelerated checkout is Shopify-owned and depends on eligibility. Main gift-card purchases preserve recipient fields by omitting their accelerated shortcut. Featured product directs purchase to the full product page, where customers choose the variant, plan and required fields. Its app blocks use the selected product context; verify the complete product-page purchase flow for each installed app.
Legacy Nutrition/Allergen blocks, custom tabs and size-chart text are merchant-authored template content. Shared template fields appear on every product assigned to that template. Use a product-specific template or the current-product nutrition section below for distinct facts. Enter verified units, serving sizes and measurements; the theme does not calculate or validate dietary claims.
Subscription setup and customer wording
Norveta supports Shopify selling-plan selection and cart presentation. No subscription app is included in either Install ZIP. Shopify Subscriptions is Shopify's own optional application; it is not a Sim Digital Labs product. Ordinary one-time product sales do not require it. Theme installation does not create plans, contracts or recurring charges.
Create and configure actual product plans in your chosen subscription app, including variant eligibility, delivery/billing intervals, discounts and cancellation terms. Give each plan a clear customer-facing name in the intended storefront language. The Norveta selector displays that configured name and Shopify's allocated price; it does not automatically translate merchant plan names or invent recurring terms. Products without selling-plan groups have no plan selector. Required-plan products omit the one-time choice.
Illustrative customer wording only: “One-time purchase — $10” and “Deliver every month, save 10% — $9”. These numbers are the technical QA fixture, not merchant defaults. The current selector appends the allocated price to the configured plan name; avoid including a duplicate price in the name. Avoid labeling every allocation as a price per delivery: prepaid/multiple-delivery plans can have different billing schedules.
Use a product-specific Text/Accordion block or supported app block to explain actual billing and delivery frequency, automatic renewal, cancellation and any commitment. Verify this against the app configuration and Shopify's native purchase/checkout terms. Do not use a shared template to make monthly/discount/cancellation promises for products with different plans. Customer-facing content should describe the purchase, without mentioning the theme QA or technical app setup.
Scoped live acceptance: optional and required monthly plan selection, allocated price, quantity, separate one-time/subscription cart lines and plan links passed on the separate QA store. Payment, contracts, renewals, accelerated checkout and all subscription apps are not certified. Consult QA/subscription-qa-setup-20261014.json.
Product nutrition with current-product data
First create storefront-visible product definitions in
Settings → Custom data → Products:
custom.nutrition_information with JSON type,
custom.ingredients and custom.allergens with
multi-line text type. Theme upload does not create these definitions.
Next populate each product with its own supplier/label-verified facts.
Finally add Product nutrition to the product template;
its namespace/key settings retrieve those current-product fields. Follow
QA/Product-Nutrition-Setup.txt for the precise JSON shape
and validation rules.
The JSON needs a serving basis and numeric nutrient amounts with units. Zero is valid; quoted numbers, missing/negative amounts or units are not displayed. Ingredients/allergens use Shopify's typed renderer. Missing facts are omitted, never interpreted as allergen-free. Optional meters default off and need a verified numeric value, positive maximum and explicit basis; they are not daily recommendations or automatic scores. Up to 30 valid rows and 10 meters are supported. This is product-level data; different variant formulas need distinct products or a variant-aware integration. A shared template reads each current product's data and hides the storefront section when facts are absent.
Customer comparison and sticky cart
The customer comparison section is in the global footer group so it can work across product/listing pages. Product-card comparison buttons add/remove selections; up to four IDs/handles are remembered in that browser. Actual products/prices/availability are retrieved afresh, not trusted from saved price data. Customers can remove/clear selections and retry failures. Set up to four fallback products in its editor setting for the static/no-JavaScript comparison. Currency and unavailable-product cases still need review in your configured store.
Add Sticky cart to the cart template for a fixed subtotal/checkout bar. Its enhanced button submits the existing native cart form and checkout control, so unsaved native cart fields remain associated with checkout. It is separate from the product-page sticky purchase bar. Empty carts omit it; failed refreshes return to a cart link. Verify quantity, note, discounts and footer visibility in your store before release.
Actual locations, warehouses and pickup
Store cards present your name, public address, opening hours, image and directions. In the current source, Remember preferred store saves a browser preference for that section. It does not reserve inventory, change price, allocate a warehouse or set checkout fulfillment. A warehouse card is not automatically a customer collection point.
Configure actual Shopify locations and variant stock. Under Settings → Shipping and delivery → Pickup in store, activate eligible locations and their genuine processing times, then add the product-template Pickup block. It reads Shopify's selected-variant availability/time; checkout determines fulfillment. Use Shopify's pickup setup guide for physical products, eligible locations, inventory and transfers.
Test different variants and every offered location at checkout. If pickup is missing, check physical/shipping status, location stock, online fulfillment and pickup activation. Availability can change; it is not a reservation. Never replace an unavailable result with an invented badge.
Low-stock messaging requires tracked, positive inventory within the configured threshold. It represents the variant quantity read by the source, not a preferred-branch stock count. Backorder copy is optional and tied to tracked, nonpositive inventory with continue-selling enabled. Use it only with a real fulfillment process. Preorder allocation, warehouse transfer and ready-for-pickup operations belong to Shopify/apps/merchant operations.
Gift cards, recipients and paid wrapping
Create an actual Shopify gift-card product. The main form collects recipient email/name/message and an optional send date; Shopify handles issuance/delivery. Test with an appropriate development transaction. A normal product with a “gift card” tag is not a Shopify gift-card product.
The issued card page uses Shopify balance/code/expiry/status, official QR rendering, printing and a Wallet link when supplied. The readable code works without JavaScript/QR. Keep gift-card codes/links private and out of public demo copy, support screenshots and analytics.
For paid wrapping, create a real service product with the exact intended price, publish it to Online Store and select it in Cart gift wrap. Configure shipping/physical status to match the actual service. It opens its actual product form and becomes a separate, priced cart line; removing it removes that charge. Check required properties, quantity, discount/tax and stock policy. A note alone is not a paid wrapping charge.
Search, filters and recommendations
Native search submits the standard form. Predictive search starts after two characters and returns limited product/collection/page/article/query suggestions. Request failure or an unsupported predictive locale leaves full search available.
Configure filters in Shopify Search & Discovery, then enable the collection filter setting. Choices derive from the actual catalog, not invented theme options. Uploading Norveta does not configure filters. See adding filters.
Add Product recommendations to the product template and select related/complementary intent. Configure choices in Search & Discovery. Shopify supplies eligible results; an empty response hides the section. Other collection selections do not isolate this endpoint. See recommendation configuration.
Languages and RTL
EN/FR/DE/IT/ES/TR storefront and editor dictionaries are bundled. Publish languages separately in Shopify and translate your product, collection, menu, page, policy and section copy. Theme button labels do not translate merchant-written content.
Footer language/country controls depend on published languages and Shopify Markets. Verify actual translated routes and currency at checkout. Root and gift-card markup set RTL for Arabic/Hebrew/Persian, but those dictionaries are not bundled. An RTL launch needs translations and a full visual/keyboard review; direction markup alone does not prove language support.
Images, video, recipes and events
Use licensed original media and accurate alternative text. Supply the hero's separate mobile image and review focal crops at wide/narrow sizes. Cards use square crops; other sections differ. Review each crop rather than forcing every upload to identical dimensions. Keep essential text in HTML instead of inside an image.
Product pages support images, video, external video and models; zoom applies to images. A second card image needs a real second product image. Video loads after interaction. Add hosted captions or provider captions plus a transcript. The video section can select a separate Mobile Shopify-hosted video and Mobile poster image below 750 px. Only one active media player is instantiated; switching across that boundary pauses/releases the previous player and creates the appropriate source without autoplay. Captions/transcript are shared, so both versions must match their timing and content. If no mobile source is selected, the primary source remains the fallback. Verify inactive-source network behavior and both cuts in your configured store.
Header's Mobile logo width applies at 640 px and below; desktop width is separate. Global Layout and buttons controls standard themed button corner radius and standard section vertical padding separately for desktop/mobile. Specialized section geometry and Shopify payment-widget styling can differ. Keep adequate touch targets/contrast at each extreme. Direct add is off by default and applies only to safely eligible single-variant cards; other products retain their actual purchase form and required fields.
Write recipes as real article/page text: ingredients, quantities, serving size, equipment, steps and verified storage/preparation details. Link actual related products and use clear headings. This release does not automatically calculate recipe nutrition or create recipe structured data from prose.
Countdowns and timed events need valid timezone-qualified ISO
timestamps, such as 2026-12-01T18:00:00+00:00, and an end
after the start. For an All-day event use date-only
YYYY-MM-DD start/end; the entered end is the last included
day (a one-day event uses the same start/end date). Export converts that
to the exclusive next day. An optional IANA timezone such as
Europe/London must be valid; timed timestamps still require
their offset. Keep merchant display labels consistent with the actual
dates.
Events support native details, uniquely matched related-event links, an actual selected product and a real details/booking page. JavaScript sorts valid events chronologically, exposes ICS (Apple-compatible) and Google/Outlook/Yahoo calendar links, hides invalid storefront entries and optionally hides past events using their actual end. Without JavaScript, events remain in merchant order and dynamic calendar/date checks do not run. When Display date is empty, a native no-JS fallback shows the supplied start/end and optional timezone, with an inclusive final-day explanation for all-day events. You can still provide merchant display labels for a friendlier date format. Calendar imports and provider links need actual acceptance checks. Booking is handled by the linked destination or actual Shopify product; the theme does not reserve attendance by itself.
Accessibility and checkout
Use clear links, meaningful image alternatives and adequate contrast. Test keyboard navigation through menus, search, option choices, properties, quantities, dialogs, close buttons and cart/checkout. Check focus restoration, long translations, mobile zoom and reduced motion.
Spot-check without JavaScript: product/cart forms and readable content should remain usable; interactive media offers native fallback where provided. Shopify owns payment, final availability, tax, currency, rates and checkout fulfillment. Static linting is not accessibility certification or a speed score. Merchant media/apps can change behavior. Final project Lighthouse belongs to the owner and is not claimed complete.
Standalone app sections
Install and configure the chosen app through Shopify, then add its app block in the theme editor where the app permits. Product and Featured product sections accept app blocks. For a standalone app section, Shopify uses the Norveta app wrapper. Add section spacing applies the theme's vertical section spacing; Use full page width removes the usual page-width container. These controls change layout, not the app's permissions, product data or behavior. The wrapper appears when Shopify creates an app section; it is not a normal content section to add on its own. App embeds are configured separately in the editor's App embeds panel.
Check the app on its full product page after saving and reopening the editor. Products with app blocks use the full product page when quick buy cannot safely render the integration. Actual third-party app rendering still requires testing with the installed app.
Required personalization setup
Assign the personalized product template in Shopify, or
add a Personalization block to the intended product template. Set its
field label, character limit and Required setting. The
provided personalized template uses a required Gift message field and
disables accelerated checkout. All products assigned to that template
share its block settings; the customer's entered message belongs to the
individual cart line.
Before launch, try adding with the required field empty, then enter a test message and add again. Check the message in both the drawer and full cart, then change quantity and verify it remains with the same line. Remove the test line afterward. This is a text property; it does not upload a customer file or send a gift card to a recipient.
Variant and field preservation
With JavaScript enabled, same-product option links preserve visible quantity, personalization fields and supported recipient choices across navigation. A one-use, two-minute browser-tab draft is consumed on the target page; values are not added to the URL. Current plan choices are kept only when available on the new variant; otherwise review the displayed plan notice. Hidden quantity and variant IDs come from the newly rendered product. Selected files block navigation rather than being silently lost. Storage failure keeps the current page open. The personalized alternate template remains selected in option links. This does not certify JavaScript-disabled persistence or arbitrary app state.
Troubleshooting
| Symptom | First checks |
|---|---|
| ZIP rejected | Inner Install ZIP and layout/theme.liquid at theme
root |
| Design missing | Correct Norveta draft preview, saved editor changes and assigned template |
| Empty collection | Actual selected collection, eligible products and Online Store publication |
| Other demo products visible | Search/recommendations/all-products routes and actual publication; collections are not global isolation |
| Wrong option/price | Actual variant values, full page and relevant app behavior |
| Add disabled | Stock policy, selected variant, quantity rules, required properties and selling plan |
| Wrapping not charged | Published service product selected; actual cart line/price |
| No filters/recommendations | Search & Discovery configuration, relevant section and eligible products |
| Search suggestions stop loading | After 10 seconds the suggestion request ends with guidance; submit the normal Search form or enter a new query to retry. A response that reports unsupported predictive search leaves the normal search form available |
| Quick buy stops loading | After 10 seconds use View full product details. Close and reopen quick buy to retry; incomplete variant content remains blocked from purchase |
| Pickup missing | Physical product, actual location stock, online fulfillment, pickup and delivery rules |
| Nutrition changed on several products | Shared template fields; assign the correct template/data source |
| No language control | Published store languages and footer localization setting |
| Untranslated text | Merchant resource translation and missing keys after code updates |
| Video unavailable | Interaction, source access, captions/provider and native fallback |
| Timer/calendar hidden | Valid timezone/date, end after start and expiry |
| No automatic restock email | Only manual inquiry is implemented; verify monitored native contact workflow |
| App differs in quick view | Full product page, correct app placement and app requirements |
Updates and support
Duplicate/download before updating. Record custom code, selected
resources, templates, app blocks, translations and key settings. Add the
new version as a draft, deliberately reapply compatible configuration,
compare previews and retest products/cart/checkout/apps. Do not blindly
overwrite settings_data.json, templates or custom Liquid.
Keep the previous theme for rollback until the update is accepted.
Source author is Sim Digital Labs Ltd. Use the Norveta guide and Norveta support form, or contact hello@simdigitallabs.com. The public guide and support page were verified in browser. One approved technical form test confirmed provider-delivered staff notification and requester acknowledgement. Inbox placement across all providers is not certified. Built-in configuration and theme bugs are in scope; custom design/code, app integrations and store operations are separate services. Theme support requests receive an initial human reply within two business days. The automatic acknowledgement confirms receipt; it is not the support reply. Critical theme bugs are prioritised immediately. Free custom development is not included.
Provide support with version, shop domain, affected public template/product URL, reproduction steps, expected/actual behavior, browser/device, app names and redacted screenshots. Say whether it reproduces in an unmodified draft. Do not send credentials, private gift codes or customer personal data. Platform/order/payment questions may need Shopify; app behavior may need its developer.
Release and developer reference
Complete applicable scope, current Theme Store compliance, official Theme Check, live editor/commerce/mobile/keyboard/integration acceptance, genuine demo configuration and owner-run Lighthouse before release. Theme upload/ZIP integrity alone is not approval.
Optional checks from an extracted Development package:
python3 tools/verify_theme.py --root theme --json
python3 tools/package_theme.py --root theme --out /absolute/delivery/path --version 0.1.0
Use Theme only when your checkout names its source
folder that way. These check/package source; they do not execute
checkout/orders or replace official Theme Check. See
PROJECT_STATUS.md, QA/milestone-scope.json and
dated QA records for separate source coverage and actual runtime
evidence.
JavaScript fallback limitation
Ordinary product/cart templates retain native forms, quantity/plan field associations, variant navigation links and cart removal URLs. The optional required pickup-preference gate depends on JavaScript and deliberately keeps Add disabled without it, showing a localized explanation. Leave this gate off if your store requires purchasing without JavaScript; native checkout still determines fulfillment. Source review is not a completed live no-JavaScript acceptance test.
Getting started
Upload the standard Install ZIP as a draft. Choose your own products, collections, menus and images. Use Coffee Install ZIP for the Coffee homepage. The theme does not import products or stock. Configure actual delivery and pickup in Shopify admin.
Your separate subscription app manages plans and recurring billing; no app is included. Preference filters and taste information depend on your configured product data.
The theme has not yet received Shopify Theme Store approval. For setup questions and theme bugs, use the support form in English or Turkish.