Beauty Affairs HK

Entrypoints

Every compiled bundle and the Liquid file that loads it, for finding which file to edit to change something on the page.

The left column of each table is a path relative to src/entrypoints. It is the exact string you pass to the vite-tag snippet:

{%- render 'vite-tag' with 'mini-cart/elements/mini-cart.ts' -%}

A script generates the tables below. After adding, moving or removing an entrypoint, run it from the repository root:

python3 doc-site/scripts/build-entrypoint-table.py

The script fills the "Why" column of the second table from the NOTES map at its top. Add a note there for any new file that appears in that table.

src/entrypoints holds 116 files. 62 Liquid files render 101 of them.

Rendered entrypoints

EntrypointRendered by
cart-reward-banner.csssections/cart-reward-banner.liquid, snippets/global-popup.liquid
cart-reward-banner.tssections/cart-reward-banner.liquid
clickable-slideshow.tssections/clickable-slideshow.liquid
collection-page-updates.tssnippets/collection-page-updates.liquid
custom.csslayout/theme.discovery-bar.liquid, layout/theme.liquid, layout/theme.medispa-redesign.liquid
eyebrow-banner.csssnippets/eyebrow-banner.liquid
eyebrow-banner.tssnippets/eyebrow-banner.liquid
global-popup.csssnippets/global-popup.liquid
homepage-prominence-banner.csssections/homepage-prominence-banner.liquid
homepage-prominence-banner.tssections/homepage-prominence-banner.liquid
homepage-redesign/components/blog-posts-redesign.csssections/blog-posts-redesign.liquid
homepage-redesign/components/carousel-navigation.csssnippets/carousel-navigation.liquid
homepage-redesign/components/cvp-carousel.csssections/cvp-carousel.liquid
homepage-redesign/components/cvp-carousel.tssections/cvp-carousel.liquid
homepage-redesign/components/explore-by-category.csssections/explore-by-category.liquid
homepage-redesign/components/gift-idea-cards.csssections/gift-idea-cards.liquid
homepage-redesign/components/hero-banner.csssections/hero-banner.liquid
homepage-redesign/components/hero-banner.tssections/hero-banner.liquid
homepage-redesign/components/medispa-service-callout.csssections/medispa-service-callout.liquid
homepage-redesign/components/need-help-popup.csssections/need-help-popup.liquid
homepage-redesign/components/need-help-popup.tssections/need-help-popup.liquid
homepage-redesign/components/our-difference.csssections/our-difference.liquid
homepage-redesign/components/plp-segmentation-tiles.csssections/plp-segmentation-tiles.liquid
homepage-redesign/components/plp-segmentation-tiles.tssections/plp-segmentation-tiles.liquid
homepage-redesign/components/popular-categories.csssections/popular-categories.liquid
homepage-redesign/components/product-card.csssections/product-recommendations.liquid, snippets/homepage-component-product-card.liquid, snippets/tbyb-product-card.liquid
homepage-redesign/components/product-card.tssections/product-recommendations.liquid, snippets/homepage-component-product-card.liquid, snippets/tbyb-product-card.liquid
homepage-redesign/components/products-carousel.csssnippets/homepage-component-products-carousel-shell.liquid, snippets/homepage-component-products-carousel.liquid
homepage-redesign/components/products-carousel.tssnippets/homepage-component-products-carousel-shell.liquid, snippets/homepage-component-products-carousel.liquid
homepage-redesign/components/recently-viewed.tssnippets/homepage-component-recently-viewed.liquid
homepage-redesign/components/review-carousel.csssections/review-carousel.liquid
homepage-redesign/components/review-carousel.tssections/review-carousel.liquid
homepage-redesign/components/seo-content-redesign.csssections/seo-content-redesign.liquid
homepage-redesign/components/shop-by-routine.csssections/shop-by-routine.liquid
homepage-redesign/components/shop-by-routine.tssections/shop-by-routine.liquid
homepage-redesign/components/shop-popular-brand-carousel.csssections/shop-popular-brand-carousel.liquid
homepage-redesign/components/shop-popular-brand-carousel.tssections/shop-popular-brand-carousel.liquid
homepage-redesign/components/skin-type-carousels.csssections/skin-type-carousels.liquid
homepage-redesign/components/skin-type-carousels.tssections/skin-type-carousels.liquid
homepage-redesign/components/special-offer-block.csssections/special-offer-block.liquid
homepage-redesign/components/sticky-category-bar.csssections/sticky-category-bar.liquid
homepage-redesign/components/sticky-category-bar.tssections/sticky-category-bar.liquid
homepage-redesign/components/tabbed-carousels.csssections/items-youll-love.liquid
homepage-redesign/components/tabbed-carousels.tssections/items-youll-love.liquid
homepage-redesign/components/unlock-free-bonus.csssections/unlock-free-bonus.liquid
homepage-redesign/components/unlock-free-bonus.tssections/unlock-free-bonus.liquid
how-it-works-slider.tssections/how-it-works-slider.liquid
klaviyo-popup-trigger.tssnippets/klaviyo-popup-trigger.liquid
lazy-mutation-callback.tslayout/theme.liquid
medispa-calendar-react.tsxsnippets/medispa-calendar-placeholder.liquid
medispa-calendar.csssnippets/medispa-calendar-placeholder.liquid
medispa-navbar.csssections/discovery-bar-header.liquid, sections/medispa-header.liquid
medispa-overview-services-grid.tssections/overview-services-grid.liquid
medispa-overview-styles.csslayout/theme.discovery-bar.liquid, layout/theme.medispa-redesign.liquid
medispa-quick-navigation-bar.csssections/medispa-quick-navigation-bar.liquid
medispa-redesign-styles.csslayout/theme.discovery-bar.liquid, layout/theme.medispa-redesign.liquid
medispa-sidebar.tssections/discovery-bar-header.liquid, sections/medispa-header.liquid
medispa-tnc-popup.csssnippets/medispa-tnc-popup.liquid
medispa-tnc-popup.tssnippets/medispa-tnc-popup.liquid
menu-redesign.csslayout/theme.liquid
menu-redesign.tssections/header.liquid
mini-cart/components/free-gifts.tssnippets/mini-cart.free-gifts.liquid
mini-cart/elements/mini-cart-clear-cart.csssnippets/mini-cart.clear-cart.liquid
mini-cart/elements/mini-cart-clear-cart.tssnippets/mini-cart.clear-cart.liquid
mini-cart/elements/mini-cart-discount-code.csssnippets/mini-cart.discount-code.liquid
mini-cart/elements/mini-cart-discount-code.tssnippets/mini-cart.discount-code.liquid
mini-cart/elements/mini-cart-footer.csssnippets/mini-cart.footer.liquid
mini-cart/elements/mini-cart-footer.tssnippets/mini-cart.footer.liquid
mini-cart/elements/mini-cart-gifts-accordion.csssnippets/mini-cart.gifts-accordion.liquid
mini-cart/elements/mini-cart-gifts-accordion.tssnippets/mini-cart.gifts-accordion.liquid
mini-cart/elements/mini-cart-header.csssnippets/mini-cart.header.liquid
mini-cart/elements/mini-cart-header.tssnippets/mini-cart.header.liquid
mini-cart/elements/mini-cart-line-items.csssnippets/mini-cart.line-items.liquid
mini-cart/elements/mini-cart-line-items.tssnippets/mini-cart.line-items.liquid
mini-cart/elements/mini-cart-progress-bar.csssnippets/mini-cart.progress-bar.liquid
mini-cart/elements/mini-cart-progress-bar.tssnippets/mini-cart.progress-bar.liquid
mini-cart/elements/mini-cart-recommendations.csssnippets/mini-cart.recommendations.liquid
mini-cart/elements/mini-cart-recommendations.tssnippets/mini-cart.recommendations.liquid
mini-cart/elements/mini-cart-summary.csssnippets/mini-cart.summary.liquid
mini-cart/elements/mini-cart-summary.tssnippets/mini-cart.summary.liquid
mini-cart/elements/mini-cart.csssections/mini-cart.liquid
mini-cart/elements/mini-cart.tssections/mini-cart.liquid
overview-services-grid.csssections/overview-services-grid.liquid
pack-options.csssnippets/pack-options.liquid
pack-options.tssnippets/pack-options.liquid
pdp-gift-card-form.tssnippets/pdp-gift-card-form.liquid
popup-logic.tssnippets/popup-logic.liquid
product-accordion.tssections/medispa-faqs.liquid
product-popover.tslayout/theme.discovery-bar.liquid, layout/theme.liquid, layout/theme.medispa-redesign.liquid
purchase-gift-manager.tslayout/theme.liquid
select-options-modal.csssections/select-options-modal.liquid
select-options-modal.tssections/select-options-modal.liquid
styles.csslayout/theme.discovery-bar.liquid, layout/theme.liquid, layout/theme.medispa-redesign.liquid
subscription-page.csslayout/theme.liquid
swatch-filters.tssnippets/swatch-filters.liquid
tbyb-product-card.csssnippets/tbyb-product-card.liquid
tbyb-product-card.tssnippets/tbyb-product-card.liquid
tbyb-product-grid.csssections/tbyb-product-grid.liquid
theme.csslayout/theme.discovery-bar.liquid, layout/theme.liquid, layout/theme.medispa-redesign.liquid
theme.styles.csslayout/theme.discovery-bar.liquid, layout/theme.liquid, layout/theme.medispa-redesign.liquid
upnova-sticky-fix.tslayout/theme.discovery-bar.liquid, layout/theme.liquid, layout/theme.medispa-redesign.liquid

Not rendered by any Liquid file

Other files import some of these as modules. Check before deleting any of them.

FileWhy
counter.tsUnused. Demo counter from the project template, with its own usage example in a comment.
main.tsUnused. Contains only the Vite modulepreload polyfill import.
mini-cart/elements/00-example.tsDeliberate template. Copy it when adding a mini-cart element.
mini-cart/internals/cart-service.tsImported by mini-cart.ts.
mini-cart/internals/cart-store.tsImported by mini-cart.ts.
mini-cart/internals/checkout-chain.tsImported by mini-cart-footer.ts.
mini-cart/internals/command-controller.tsImported by mini-cart.ts.
mini-cart/internals/core.tsImported across the mini-cart. Holds event names and types.
mini-cart/internals/event-bus.tsImported across the mini-cart.
mini-cart/internals/fetch-interceptor.tsImported by mini-cart.ts.
mini-cart/internals/line-item-properties-update-chain.tsImported by mini-cart-line-items.ts and by both rules.
mini-cart/internals/line-item-rules/promotion-label-quantity-rule.tsImported by mini-cart-line-items.ts.
mini-cart/internals/line-item-rules/remaining-amount-recalculation-rule.tsImported by mini-cart-line-items.ts.
mini-cart/internals/simple-cart-service.tsImported by mini-cart.ts and the command controller.
quick-add-modal.cssUnused. Styles a modal no Liquid file renders.
utils.tsShared module. Imported through @/entrypoints/utils by the booking calendar and a mini-cart rule.

How to read the second table

A file with no Liquid consumer is one of three things.

Another entrypoint imports it. Everything under mini-cart/internals/ is in this group. mini-cart.ts imports those files, and Vite emits each one as its own chunk because it sits in the entrypoints directory. The page loads them as module preloads, which you can see in snippets/vite-tag.liquid.

It is a shared module stored in this directory. The booking calendar and a mini-cart rule import utils.ts through the @/ alias.

It is unused. Legacy and unused code lists these files.

Adding a new entrypoint

  1. Create the file under src/entrypoints, either directly in that directory or in a subdirectory. The build finds it automatically, and there is no list to update.
  2. Run npm run build, or keep npm run dev running, so snippets/vite-tag.liquid regenerates.
  3. Render it from your Liquid with the path relative to src/entrypoints, without a leading slash.
  4. Regenerate this page.

A vite-tag render whose path matches no branch of the generated snippet outputs nothing and reports no error. If your script does not run, check the path first. See Asset not loading.

How the directory is organised

src/entrypoints/homepage-redesign/components/ holds the homepage sections built during the redesign. A section there usually has a .ts and .css pair, and the same Liquid file renders both.

src/entrypoints/mini-cart/ has two subdirectories. elements/ holds custom elements, each rendered by its own snippet. internals/ holds modules that other files import and no Liquid renders.

src/components/ holds code that other files import and Liquid never renders. Every file in src/entrypoints is a build target, and every file in src/components or src/lib is a module.

On this page