mage2kishan / theme-frontend-panth-infotech
Hyva child theme Panth/Infotech for Magento 2, based on the Hyva/default parent theme.
Package info
github.com/mage2sk/theme-frontend-panth-infotech
Language:HTML
Type:magento2-theme
pkg:composer/mage2kishan/theme-frontend-panth-infotech
Requires
- php: ~8.1.0||~8.2.0||~8.3.0||~8.4.0
- mage2kishan/module-advanced-contact-us: ^1.0
- mage2kishan/module-advanced-seo: ^1.0
- mage2kishan/module-advancedcart: ^1.0
- mage2kishan/module-banner-slider: ^1.0
- mage2kishan/module-cachemanager: ^1.0
- mage2kishan/module-checkout-extended: ^1.0
- mage2kishan/module-checkout-success: ^1.0
- mage2kishan/module-core: ^1.0
- mage2kishan/module-corewebvitals: ^1.0
- mage2kishan/module-custom-options: ^1.0
- mage2kishan/module-dynamic-forms: ^1.0
- mage2kishan/module-faq: ^1.0
- mage2kishan/module-footer: ^1.0
- mage2kishan/module-imageoptimizer: ^1.0
- mage2kishan/module-live-activity: ^1.0
- mage2kishan/module-low-stock-notification: ^1.0
- mage2kishan/module-malware-scanner: ^1.0
- mage2kishan/module-mega-menu: ^1.0
- mage2kishan/module-not-found-page: ^1.0
- mage2kishan/module-order-attachments: ^1.0
- mage2kishan/module-pagebuilder-ai: ^1.0
- mage2kishan/module-performance-optimizer: ^1.0
- mage2kishan/module-price-drop-alert: ^1.0
- mage2kishan/module-product-attachments: ^1.0
- mage2kishan/module-product-slider: ^1.0
- mage2kishan/module-productgallery: ^1.0
- mage2kishan/module-producttabs: ^1.0
- mage2kishan/module-quickview: ^1.0
- mage2kishan/module-search-autocomplete: ^1.0
- mage2kishan/module-smart-badge: ^1.0
- mage2kishan/module-testimonials: ^1.0
- mage2kishan/module-theme-customizer: ^1.0
- mage2kishan/module-whatsapp: ^1.0
- mage2kishan/module-zipcode-validation: ^1.0
- magento/framework: ^103.0
Requires (Dev)
None
Suggests
- hyva-themes/magento2-default-theme: Required parent theme — Hyva default (^1.0)
Provides
None
Conflicts
None
Replaces
None
README
mage2kishan/theme-frontend-panth-infotech is a Magento 2 storefront theme
registered as frontend/Panth/Infotech. It is a Hyva child theme: the parent
theme is Hyva/default (declared in theme.xml), and this package only
overrides the templates, layouts and styles listed below. Everything else is
inherited from the Hyva default theme.
Requirements
- PHP
~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 magento/framework^103.0(Magento Open Source or Adobe Commerce 2.4.x)- The Hyva default theme (
hyva-themes/magento2-default-theme), which provides theHyva/defaultparent theme. It is listed undersuggestincomposer.jsonand has to be installed separately with a valid Hyva license. - The
mage2kishan/*modules listed underrequireincomposer.json. They are installed automatically by Composer. - Node.js 20 or newer and npm, only if you rebuild the Tailwind CSS
(
web/tailwind/.nvmrcpins Node 20,package.jsonrequires>=20.0.0).
What the theme overrides
Magento_Catalog
layout/catalog_product_view.xml: switches the date custom option renderer toproduct/view/options/type/date-html5.phtml(native date and time inputs instead of dropdowns).layout/catalog_category_view.xml: empty body; the category page uses the parent layout.templates/product/list/item.phtml: product card for category and search listings (image, name, price, add to cart or configure button, wishlist, compare, and an optionalquickviewchild block).templates/product/price/tier_prices.phtml: tier price list as clickable rows. Clicking a row sets the quantity field; the tier price is recalculated when custom options change the product price.templates/product/view/addtocart.phtml: add to cart / update item button with an icon.templates/product/view/breadcrumbs.phtml: product page breadcrumbs with the separator taken from the Theme Customizer configuration.breadcrumbs_temp.phtmlis a variant without the configurable separator; no layout in this theme uses it.templates/product/view/options/*: custom option templates (select, text, file, date, date dropdowns, native date inputs) with inline price display, file upload box and per-option validation.templates/product/view/product-info.phtml: product info column (title, review summary, short description, stock, attributes, price, quantity, add to cart).templates/product/view/quantity.phtml: quantity field with plus and minus buttons that respect minimum, maximum and increment settings.templates/product/widget/viewed/grid.phtml: recently viewed products grid.
Magento_Checkout
templates/php-cart/wrapper.phtml: cart page layout; on mobile the items are shown first and the summary below.templates/php-cart/form.phtmlandform/clear.phtml: cart items form and an inline clear cart button.templates/php-cart/item/default.phtml: cart row with thumbnail, options, prices, quantity and actions. TheAttachmentsoption added bymage2kishan/module-order-attachmentsis rendered as its own block.templates/php-cart/noItems.phtml: empty cart page that uses theCartEnhancementsview model ofmage2kishan/module-advancedcart.
Magento_GiftMessage
templates/php-cart/gift-options-container.phtml: gift message options on the cart page, based on the Hyva template. Nothing is rendered when gift options are disabled in the configuration.
Magento_Swatches
templates/product/view/renderer.phtml: configurable product swatches in a card layout with the attribute label, the selected value and the swatch options.
Magento_Theme
layout/default.xml: adds the free shipping progress bar to the cart drawer. The back to top button comes frommage2kishan/module-footeronly.layout/default_head_blocks.xml: loads Font Awesome 6.5.1 from cdnjs with a subresource integrity hash (the icons are used by the footer and the mega menu), adds the self-hosted fonts incss/fonts.cssand removes the DM Sans stylesheet from fonts.googleapis.com thatmage2kishan/module-footeradds.templates/html/header.phtml: header with optional top bar, sticky behaviour, search, account, compare, wishlist and mini cart icons, all controlled by the Theme Customizer header configuration. The search and mini cart icons use the Icon Size (px) setting and the header uses the Header Height (px) setting, which overrides theheader.heightvalue fromtheme-config.jsonfor the header element. When the custom header is disabled there, the Hyva default header template is used.templates/html/header/logo.phtml,header/search-form.phtml,header/menu/desktop.phtml: logo, search form (keyboard navigation of suggestions) and the desktop menu (dropdown closes on mouse leave).templates/html/cart/cart-drawer.phtmlandcart/free-shipping-progress.phtml: mini cart drawer with an optional free shipping progress bar. The subtotal row follows the Show Cart Subtotal setting and the Continue Shopping button of the empty drawer follows the Show Continue Shopping Button setting.templates/html/footer.phtml,html/newsletter.phtml: footer columns and newsletter form, configured throughmage2kishan/module-footer.templates/html/breadcrumbs.phtml: breadcrumbs with a configurable separator.templates/html/whatsapp-float.phtml: floating WhatsApp button that links towa.mewith the phone number and message from the Theme Customizer configuration.
Magento_Wishlist
templates/sidebar.phtml: the Hyva wishlist sidebar with the product name as the thumbnail alt text.
Panth_MegaMenu
layout/default.xml: replaces the Hyva desktop and mobile top menus with thePanth\MegaMenu\Block\Menublock (only whenpanth_megamenu/general/enabledis set) and adds the dynamic styles block.templates/menu.phtml: desktop mega menu and mobile drawer. On desktop the top level bar scrolls horizontally when it does not fit; the overflow width is cached and recalculated on window resize.templates/js/megamenu-alpine.phtml,css/styles.phtml,css/dynamic-styles.phtml: Alpine.js components and the custom CSS and JavaScript entered in the mega menu configuration.templates/preview.phtml: the menu preview page used by the admin preview.
Other files
etc/view.xml: image sizes and view settings, based on the Hyva default.web/css/styles.css: the compiled Tailwind CSS served by the theme.web/css/panth-theme.css: loaded afterstyles.cssfromMagento_Theme/layout/default_head_blocks.xml. It holds the primary and secondary button colours, CMS content typography (CMS pages,.cms-content, Page Builder text and HTML elements, static CMS blocks), the cart action row, product card price alignment, slider pager tap targets and mega menu badges. The same file is imported into the Tailwind sources asweb/tailwind/theme/panth-theme.css.web/css/fonts.cssandweb/fonts/: the self-hosted fonts, see "Fonts".web/js/zxcvbn.js: the zxcvbn password strength library.media/preview.jpg: theme preview image shown in the admin.
Fonts
The theme CSS uses 'DM Sans', 'Inter', system-ui, sans-serif for body text
and headings (typography.font-family and typography.heading-font-family in
web/tailwind/theme-config.json). Both families are served from the theme
itself; no font is loaded from Google:
web/fonts/dm-sans-latin.woff2,web/fonts/dm-sans-latin-ext.woff2web/fonts/inter-latin.woff2,web/fonts/inter-latin-ext.woff2
The files are the variable fonts from the Google Fonts API (weights 400 to
800, latin and latin-ext subsets). web/css/fonts.css declares them with
font-display: swap and the same unicode ranges as the Google Fonts CSS.
The fonts are licensed under the SIL Open Font License 1.1; the license text
and the copyright lines are in web/fonts/OFL.txt.
Google Fonts are loaded only when "Load Google Fonts"
(theme_customizer/typography/load_google_fonts) is enabled in the Theme
Customizer. Resource hints for fonts.googleapis.com or fonts.gstatic.com come
from the Core Web Vitals module configuration
(panth_corewebvitals/resource_hints/*), not from the theme; clear those
fields if the store should not contact Google at all.
Admin HTML
Some texts entered in the admin are printed as HTML or code. Only trusted administrators should be given access to these settings.
| Field | Admin location | Output | ACL resource |
|---|---|---|---|
| Top bar Left Side Text, Right Side Text | Stores > Configuration, section panth_header (Header Configuration), group Top Bar |
HTML limited to a, b, br, em, i, small, span, strong, u (escaper allow list) | Panth_ThemeCustomizer::config |
| Copyright Text | Stores > Configuration, section panth_footer (Footer Configuration), group Bottom Bar |
HTML limited to a, b, strong, em, i, u, small, span, br (escaper allow list) | Panth_Footer::config |
| Physical Address | Stores > Configuration, section panth_footer (Footer Configuration), group Column 4 - Contact Information |
plain text, escaped | Panth_Footer::config |
| Custom HTML Content of a menu item | Mega Menu > Menu Items, menu item | raw HTML | Panth_MegaMenu::menu |
| CMS block of a menu item | Mega Menu > Menu Items, menu item | rendered CMS block HTML | Panth_MegaMenu::menu |
| Custom CSS (per menu) | Mega Menu > Menu Items, menu form | raw CSS inside a style element | Panth_MegaMenu::menu |
| Custom CSS | Stores > Configuration, section panth_megamenu, group Styling Settings |
raw CSS inside a style element | Panth_MegaMenu::config |
| Custom JavaScript | Stores > Configuration, section panth_megamenu, group Advanced Settings |
raw JavaScript inside a script element | Panth_MegaMenu::config |
Raw CSS and JavaScript are not escaped, because escaping would break them; a
closing </style or </script sequence in the value is neutralised so the
value cannot close its own element. Any administrator who has one of the ACL
resources above can place markup or script on every storefront page.
Module dependencies
The templates depend on or integrate with these mage2kishan modules:
| Package | Used by |
|---|---|
mage2kishan/module-theme-customizer |
header, breadcrumbs, cart drawer, free shipping bar, WhatsApp button; bin/magento theme:customizer:build runs the npm build |
mage2kishan/module-footer |
footer, newsletter, back to top |
mage2kishan/module-core |
icon view model in the free shipping bar; reads web/tailwind/theme-config.json of the active theme |
mage2kishan/module-advancedcart |
empty cart page |
mage2kishan/module-mega-menu |
everything under Panth_MegaMenu |
mage2kishan/module-quickview |
quickview child block in the product card |
mage2kishan/module-order-attachments |
Attachments option in the cart |
mage2kishan/module-advanced-seo |
outputs the breadcrumb JSON-LD, so the theme breadcrumbs do not |
The other modules in the require list are installed together with the theme
but are not referenced by its templates.
Installation
composer require mage2kishan/theme-frontend-panth-infotech bin/magento setup:upgrade bin/magento cache:flush
In production mode also run bin/magento setup:di:compile and
bin/magento setup:static-content:deploy.
Then open Content > Design > Configuration in the admin, edit the website or store view, choose Panth Infotech - Hyva Child Theme as the applied theme and save.
Primary fill colour
White text on the shipped teal #0D9488 reaches only 3.74:1, below WCAG AA
for normal text. Filled primary surfaces (.btn-primary, .bg-primary with
white text) therefore use --color-primary-fill. generate-theme-css.js
writes it from colors.primary.fill in theme-config.json when that key is
set; otherwise it uses colors.primary.darker (#0F766E, 5.47:1) for the
default teal and colors.primary.DEFAULT for any other primary colour, so a
custom primary colour is kept as chosen. Until the theme is rebuilt,
panth-theme.css falls back to #0F766E.
Building the Tailwind CSS
The Tailwind sources live in web/tailwind. The compiled file is written to
web/css/styles.css.
cd web/tailwind
npm install
npm run build
Scripts defined in web/tailwind/package.json:
prebuildandprewatch: runnode generate-theme-css.js(readstheme-config.jsonand writesbackend-config.css), thennpx hyva-sourcesandnpx hyva-tokens(writehyva-source.cssandhyva-tokens.cssfromhyva.config.json).tailwind-source.cssimports these three files.build:npx tailwindcss -i tailwind-source.css -o ../css/styles.css --minify, followed bypost-build-deploy.sh(postbuild).watch(alsostart): Tailwind in watch mode without minification.browser-sync: starts Browser Sync withbrowser-sync.config.js. Pass the store URL, for examplenpm run browser-sync -- --proxy https://hyva.test --https.
post-build-deploy.sh
After a build, post-build-deploy.sh refreshes the deployed CSS:
- It resolves the Magento root from its own location (or from
MAGENTO_ROOT_OVERRIDE) and only accepts an absolute directory that containsbin/magento,appandpuband is not a system directory such as/,/usror/var. - It refuses to run when the script is not inside that root, or when the theme
directory is not under
app/design/frontend. The theme code (Vendor/Theme) is taken from the directory names, so a copy of the theme under another name deploys itself. - It takes a lock directory in
var/.panth-theme-deploy.lock, so two builds do not deploy at the same time. - It reads the mode from
bin/magento deploy:mode:show. In developer mode it deletespub/static/frontend/<Vendor>/<Theme>/en_US/css/styles.cssso the file is built again on the next request. In production mode it deletespub/static/frontend/<Vendor>/<Theme>and runssetup:static-content:deploy -f en_US --area frontend --theme <Vendor>/<Theme>. In default or maintenance mode it does nothing. - Every deletion goes through a check that rejects paths outside the Magento
root and paths that contain
...
When the theme is installed with Composer it lives in vendor/, so the
post-build step stops with an error after the CSS has been written. Deploy
the static content yourself in that case, or copy the theme to
app/design/frontend/Panth/Infotech before building.
See the Hyva documentation for details on the build: Building your theme.
Uninstall
- In Content > Design > Configuration, switch every store view back to another theme, for example the Hyva default theme.
- Remove the package and clean up:
composer remove mage2kishan/theme-frontend-panth-infotech bin/magento setup:upgrade bin/magento cache:flush
The theme row stays in the theme table. Delete it from there if you do not
want it listed in the admin any more.
Support
Email: kishansavaliyakb@gmail.com
License
Proprietary. See LICENSE.txt.