Included
* Standardised all six theme.json files to manifest version 2:
* admin
* common
* corporate
* saasland
* swiss
* welcome
* Every manifest now uses the same fields and structure.
* Separate active frontend and backend themes.
* One-click theme activation.
* Theme preview in a new browser tab without activating it.
* Theme cards showing:
* Preview
* Name
* Version
* Author
* Description
* Theme type
* Active status
* Dynamic theme-specific settings.
* Support for:
* Text
* URL
* Colour
* Textarea
* Checkbox fields
* Variants
* Appearance
* Accent palettes
* Theme ZIP installation.
* Theme ZIP export.
* Asset optimisation.
* Accessibility validation.
* Safe ZIP path validation.
* Theme inheritance.
* Active themes cannot be uninstalled.
* Parent themes cannot be uninstalled while child themes depend on them.
* Stylist administration routes now require an authenticated, verified user.
* Manifest validation now restricts theme types to:
* frontend
* backend
* common
* Added activation tests for independent frontend and backend theme selection.
The supplied corporate theme was incomplete, so I added the required backend entry view and placeholder asset files while preserving its supplied layout.
108 lines
2.4 KiB
JSON
108 lines
2.4 KiB
JSON
{
|
|
"manifest_version": 2,
|
|
"name": "Swiss",
|
|
"slug": "swiss",
|
|
"version": "1.1.0",
|
|
"author": "ABSDEV",
|
|
"description": "Dark Marketing Theme with integrated feature, pricing, privacy and terms sections.",
|
|
"type": "frontend",
|
|
"extends": null,
|
|
"entry_view": "home",
|
|
"stylesheet": "css/theme.css",
|
|
"script": "js/app.js",
|
|
"preview": "images/preview.webp",
|
|
"views": true,
|
|
"livewire_views": true,
|
|
"supports": {
|
|
"dark_mode": true,
|
|
"animations": true,
|
|
"privacy": true,
|
|
"terms": true,
|
|
"auth": false,
|
|
"preview": true,
|
|
"variants": true,
|
|
"settings": true,
|
|
"seo": true,
|
|
"export": true,
|
|
"accessibility_validation": true
|
|
},
|
|
"variables": {
|
|
"brand-primary": "#f97316",
|
|
"brand-secondary": "#111111",
|
|
"brand-accent": "#fb923c",
|
|
"surface": "#0f0e0d",
|
|
"surface-muted": "#191714",
|
|
"text-primary": "#f7f3ef"
|
|
},
|
|
"variants": {
|
|
"light": {
|
|
"label": "Light",
|
|
"variables": {}
|
|
},
|
|
"dark": {
|
|
"label": "Dark",
|
|
"variables": {
|
|
"surface": "#0f172a",
|
|
"surface-muted": "#111827",
|
|
"text-primary": "#f8fafc"
|
|
}
|
|
}
|
|
},
|
|
"appearances": {},
|
|
"accents": {},
|
|
"default_appearance": null,
|
|
"default_accent": null,
|
|
"settings": {
|
|
"site_title": {
|
|
"type": "text",
|
|
"label": "Site title",
|
|
"default": "Saasland"
|
|
},
|
|
"site_description": {
|
|
"type": "text",
|
|
"label": "Site description",
|
|
"default": "Dark SaaS marketing theme with integrated feature, pricing, privacy and terms sections."
|
|
},
|
|
"logo_url": {
|
|
"type": "url",
|
|
"label": "Logo URL",
|
|
"default": ""
|
|
},
|
|
"--brand-primary": {
|
|
"type": "color",
|
|
"label": "Primary colour",
|
|
"default": "#f97316"
|
|
},
|
|
"hero_title": {
|
|
"type": "text",
|
|
"label": "Hero title",
|
|
"default": ""
|
|
},
|
|
"facebook_url": {
|
|
"type": "url",
|
|
"label": "Facebook URL",
|
|
"default": ""
|
|
},
|
|
"x_url": {
|
|
"type": "url",
|
|
"label": "X URL",
|
|
"default": ""
|
|
},
|
|
"linkedin_url": {
|
|
"type": "url",
|
|
"label": "LinkedIn URL",
|
|
"default": ""
|
|
}
|
|
},
|
|
"seo": {
|
|
"title": "Saasland",
|
|
"description": "Dark SaaS marketing theme with integrated feature, pricing, privacy and terms sections.",
|
|
"image": "images/preview.webp",
|
|
"json_ld": {
|
|
"@context": "https://schema.org",
|
|
"@type": "WebSite",
|
|
"name": "Saasland"
|
|
}
|
|
}
|
|
}
|