
Kitchen Repairs , Beginner project
Taps, pipes, sealants, and fixings for kitchen maintenance.
Appearance
A bold, industrial design for hardware stores, tools, and equipment brands.
Hardware stores, power tool brands, automotive parts, construction supplies, workwear, and industrial equipment. If your customers build things, fix things, or get their hands dirty, Tine is your preset.
Red and dark gray with yellow accents. High-contrast and utilitarian — it says durability and no-nonsense quality. The condensed heading font adds a rugged, mechanical character. This is not a delicate design. It's built to sell tools.
Heading text
Body text sample
ButtonHeading text
Body text sample
ButtonHeading text
Body text sample
ButtonHeading text
Body text sample
Button| Role | Font | Weight |
|---|---|---|
| Headings | Oswald | Bold (700) |
| Body | Roboto | Regular (400) |
Oswald is a condensed sans-serif with a strong, mechanical feel. Roboto is clean and highly readable — great for product descriptions and spec sheets.
These sections are a natural fit for Tine's bold, industrial look:
Tine's homepage opener is Shop by Project: a trade-grade job board that organises browsing by the job, not the product category. Every lane is a job-spec card — a real project photo, a one-line scope, and a forged difficulty gauge that reads at a glance: one lit rung for Beginner, two for Intermediate, three for Advanced. A DIY shopper scans it like a blueprint pinned to the workshop wall and knows in a second which jobs are their level and what they'd be taking on.
It's unmistakably the forge preset — squared tempered-iron cards, a warm offset shadow, and a gauge that ignites from ember-gold to forge-red — and unmistakably more than a recoloured image grid. The difficulty gauge is the thing that sets it apart from a plain category grid: it turns how advanced is this? into one glance, and speaks the level to screen readers so the meaning never depends on seeing the meter.
Try the live section below. The default is the Tine forge treatment with the real DIY job board; switch presets to see the same shared section take each preset's colours and type, switch to a phone, and toggle dark mode (the card surface and gauge re-tone with the scheme).
Short kicker text rendered above the heading in smaller, uppercase type.
Everything the job needs, sorted by where you’re starting from.

Taps, pipes, sealants, and fixings for kitchen maintenance.
Start the job
Tile cutting, grouting, plumbing tools, and waterproofing.
Start the job
Fencing, decking, path-laying, and weatherproofing.
Start the job
Benches, clamping, dust collection, and storage.
Start the jobThe same section ships in every preset and works for any catalogue where how advanced something is matters — online courses by skill level, recipes by difficulty, fitness programs by intensity, craft kits by experience. Set every card's level to None and it's a clean plain category grid. Full settings, accessibility, and per-preset notes are on the Shop by level component page.
Built for large catalogs (200+ products). The utilitarian design scales well with big product ranges and deep category trees.

Celtic for "fire" — Tine is the sharp, industrial hardware-niche preset for Shopify merchants selling tools, fasteners, power tools, hand tools, and building supplies. The industrial-grid visual signature (CSS grid-line pattern and sharp corner border-radius on niche sections) signals precision and authority — ideal for hardware resellers and trade suppliers competing against specialist distributors on Shopify.
Tine serves merchants who:
Hardware resellers and tool distributors: 100–5,000+ SKUs, mix of trade and retail customers, strong repeat purchase on consumables (fixings, blades, abrasives), high-value single purchases on power tools. Technical specification accuracy is a trust signal.
Note on scope: The Tine preset features (comparison table, specs-table mode, bulk-pricing) all render on product pages and collection surfaces — not as standalone content pages. This is by design: hardware merchants are product-rich, not content-page-rich. Tine's merchant guide is naturally somewhat shorter than the other presets — that is expected and deliberate, not a gap.
The Tine preset loads assets/preset-tine.css when settings.preset is tine. This CSS:
.niche-anchor--tine selector)The header (a shared component across all presets) wears Tine's fire/forge signature, loaded from assets/tine-visual.css. The palette is forge red, ember gold, and anvil charcoal/steel — not generic SaaS orange:
backdrop-filter: blur(16px)), high-contrast and industrial. On the homepage hero it carries a forge-charcoal scrim; on scroll it settles to solid tempered-iron with a soft forge-red-toned shadow.#dc2626 → #eab308 → #dc2626), wrapped in a soft red heat-bloom. It ignites from the centre and runs to both ends (scaleX, transform-origin: center) like a strip of metal heating to temperature.The signature is decoration only — colour, border, blur, and the underline animation. It adds no menus; your navigation comes from your Shopify menu. It is right-to-left safe (the heat-glow ignites from the centre, so it needs no direction flip) and reduced-motion safe (the heat-glow appears instantly when reduced motion is requested). See the Header guide for the live demo.
sections/comparison-table.liquid) A column-based feature-comparison table for comparing products side by side — designed for hardware buyers making "which fastener/tool is right for my job" decisions.
aria-sort updated; screen reader announces sort direction)orientation: rows): the comparison table doubles as a specs table when orientation is set to rows — columns become attributes, rows become products/modelsaria-sort on sortable <th> elements; keyboard-triggered sort; live-region announces row counts after sort; sticky header option for long tables| Setting | Type | Default | Description |
|---|---|---|---|
orientation | select | columns | columns (product comparison) or rows (specs table / attribute listing) |
heading | text | — | Section heading |
enable_sort | checkbox | true | Enable column-header sort |
sticky_header | checkbox | false | Sticky first row/header on scroll (useful for long tables) |
color_scheme | color_scheme | scheme-1 | Section background |
Where to find it in the theme editor: Sections → Comparison table → Section settings tab.
Product comparison mode (orientation: columns): Use this to compare 2–5 products or models side by side. Each column block defines a product column with a header and up to 15 specification rows.
Specs table mode (orientation: rows): Use this to list all specifications of a single product in a two-column table (attribute + value). This is the preferred pattern for hardware PDPs where a product has 15+ technical attributes. Add a Comparison Table section to your product page template and set orientation: rows.
comparison-table.liquid with orientation: rows) The specs-table mode is the same section as the comparison table but configured for single-product technical data presentation — more compact, not sortable, focused on attribute + value pairs.
Add the comparison-table section to your Tine product template with orientation: rows to display:
Important on standards references: Use current standard names. ASTM A325 was withdrawn and replaced by ASTM F3125/F3125M. Use F3125 / F3125M in any spec row referencing that standard. Add a "Replaces" row if you sell to customers who still search by legacy names.
Metric/imperial note: The uisce_tine.dimensions_mm metafield stores metric dimensions. If your customers expect imperial (e.g., US/Canadian trade), add a companion uisce_tine.dimensions_in metafield and surface both via separate spec rows or a toggle note.
sections/quick-order.liquid) The quick-order section includes a bulk-pricing messaging mechanism: when the cart quantity for a product exceeds a merchant-configured threshold, a savings pill appears highlighting the bulk saving percentage.
bulk_threshold, a pill badge appears: "Save {bulk_save_percent}%" (aria-live announces the saving so screen reader users hear it)| Setting | Type | Default | Description |
|---|---|---|---|
collection | collection | — | Required. Collection to display in the quick-order grid |
bulk_threshold | range 2–50 | 10 | Minimum quantity to show bulk-pricing pill (default: 10 units) |
bulk_save_percent | range 5–50 | 15 | Savings percentage shown in the pill (informational only) |
show_vendor | checkbox | false | Show vendor/brand per product row |
color_scheme | color_scheme | scheme-1 | Section background |
Where to find it in the theme editor: Sections → Quick order → Section settings tab.
The theme's bulk-pricing pill is a display message. To apply actual tiered discounts:
bulk_threshold and bulk_save_percent in the Quick Order section to match your actual first pricing tier.The Tine preset extends snippets/json-ld.liquid to emit Product JSON-LD with additionalProperty entries for technical specifications. Each populated uisce_tine.* metafield generates one PropertyValue entry:
{
"@type": "PropertyValue",
"name": "Material",
"value": "Stainless steel A2"
}This allows Google Shopping to surface richer product data for hardware queries. The schema activates when any of uisce_tine.weight_grams, uisce_tine.dimensions_mm, or uisce_tine.material is populated.
To validate, paste a product URL into Google's Rich Results Test.
Standards reference note: Keep standards names current. Use ASTM F3125/F3125M not the withdrawn ASTM A325. Use ISO 898-1 for carbon/alloy steel bolts. The provisioner seeds examples with current standard names.
The comparison table does not emit structured data (no schema.org type for comparison tables). If you want to expose your comparison data in Google's Knowledge Panel, consider adding a DataCatalog or Table entity via a custom JSON-LD block — this is outside the theme scope but can be added via an HTML block on your comparison page.
The Tine preset does not ship dedicated TDS/SDS (Technical/Safety Data Sheet) sections. Hardware merchants who need to surface compliance documents should use one of these approaches:
File metafields: Use file_reference metafield type in Shopify Admin to attach PDF documents (TDS, SDS, declaration of conformity) to products. The cross-reference PDP block can link to these files.
Metafield + custom block: Add a downloads block to your product template with a repeating link list (file URLs entered manually in block settings). This is a Shopify app-block pattern — no theme code changes required.
REACH/SVHC notice: For products subject to REACH Article 33 (SVHCs >0.1% w/w), add a dedicated "Compliance" tab to your product page with the SDS + SVHC notice. Use a richtext block in the product description tabs section for this content.
niche_metafield_namespace setting Default: uisce_tine. Key metafields used by Tine niche sections and PDP blocks:
| Key | Type | Used by |
|---|---|---|
weight_grams | number_decimal | specs-table-row PDP block |
dimensions_mm | single_line_text_field | specs-table-row PDP block |
material | single_line_text_field | specs-table-row PDP block |
wattage | number_integer | specs-table-row PDP block (power tools) |
size | single_line_text_field | specs-table-row PDP block |
power_source | single_line_text_field | specs-table-row PDP block |
battery_compat | single_line_text_field | specs-table-row PDP block |
Two blocks are available in the Tine product template (templates/product.tine.json):
| Block handle | Description |
|---|---|
specs-table-row | Renders a compact specs row table from uisce_tine.* metafields on the PDP |
cross-reference | Shows cross-reference information (manufacturer, alt part no., replaces, compatible models) |
The scripts/populate-niche-tine.mjs provisioner creates:
uisce_tine.* metafields pre-populated (sourced from ASTM/ISO/DIN representative values)STORE_PRESET=tine SHOPIFY_STORE=your-tine-store.myshopify.com \
SHOPIFY_ACCESS_TOKEN=shpat_xxxx \
node scripts/populate-niche-tine.mjsorientation: rows for specs-table mode.uisce_tine.* metafield definitions and back-fill on products.bulk_threshold.For Tine, the niche features (comparison table, specs table, bulk pricing display) are product-rich and require no app integration at the surface level. For advanced capability:
| Category | Recommendation |
|---|---|
| Real tiered/quantity discounts | Bold Quantity Breaks, Hulk Volume Discounts, or Shopify Scripts (Plus) |
| TDS/SDS document delivery | Cloudflare Pages function (already in project stack) or a file-reference metafield block. No first-party Shopify app recommendation. |
| Trade account pricing | BSS B2B/Wholesale Solution or Locksmith; note B2B features are a v1.1 deferral. |
The savings pill appears when quantity ≥ bulk_threshold. It does not apply a Shopify discount automatically. Customers must add the items to cart and the actual price they pay depends on your Shopify discount configuration. Make sure the threshold and percentage you set in section settings match your actual pricing tiers, or customers will be misled.
Sort order for hardware spec values follows natural alphanumeric ordering (e.g., M8, M10, M12 sort correctly; 1/4-20, 3/8-16, 1/2-13 sort correctly). Pure-numeric values sort numerically. Composite or structured standards codes (e.g., ASTM A307) sort as strings.
When orientation: rows, the sort controls are hidden — a specs table is not sortable by design (it has only one product's values; sorting attribute names is not meaningful).
The preset-tine.css grid-line pattern applies only to .niche-anchor--tine class sections. The visual signature is subtle — a fine 40×40px grid of 1px lines at low opacity. It does not interfere with text legibility. If you find it too visually busy, you can remove the .niche-anchor--tine class from the relevant sections via a theme customization — but this removes the preset differentiation for Theme Store review purposes.
The comparison table implements WCAG 2.1 AA sortable table pattern:
aria-sort on each <th> heading button: "none", "ascending", "descending"<button> elements inside <th> — not <th> elements acting as buttonsEnter or Space on a sort button activates the sort; arrow keys move between column headers (standard table keyboard navigation)The quick-order section renders product rows with:
<label> + <input type="number" min="0" inputmode="numeric"> pairs for quantity inputsaria-live="polite" on the bulk-pricing pill container — announces when the pill appearsaria-describedby referencing the total item countThe Tine preset uses logical CSS properties:
margin-inline-start for feature-check iconspadding-inline for row padding; text-align: start for numeric cellsbackground-position: 0 0 (direction-independent)transform: scaleX(-1) with [dir="rtl"] override so the descending arrow points left in RTL context (correct for bidirectional tables)uisce_tine.material and uisce_tine.dimensions_mm populatedbulk_threshold and bulk_save_percent reflect actual pricing tierssettings.preset is set to tine in Theme settingsThe Tine preset emits Product JSON-LD with additionalProperty entries for technical specifications. To validate:
curl -s "https://your-store.myshopify.com/products/m8-hex-bolt" \
| grep -A 20 '"additionalProperty"'