Storefront widgets

Sale price styling

On this page

This page is for theme developers. It lists every class, state and CSS custom property of the sale price widget, <andor-price class="andor-price">.

The widget comes from the AndOr Sale price block and the pasted <andor-price> tag. It uses AndOr’s widget styles.

What each token changes

The numbers on the diagram match the table. The diagram is a simplified drawing. The full list of tokens is below. For every layout the block offers, see Looks.

No.TokenWhat it changes
1--andor-sale-colorthe sale amount and the badge
2--andor-original-colorthe struck amount
3--andor-price-gapspace between the parts
4--andor-price-badge-border-colorthe badge border
5--andor-price-badge-radiusbadge corners
6--andor-price-badge-backgroundthe badge fill

How precedence works

Put your CSS in your theme’s stylesheet or in the app embed’s Custom CSS box. To see which value wins, read Which value wins.

What this means for the sale price:

  • No inline colors. The color and size settings go into a block-scoped rule, and only when changed from the default.
  • So an untouched block follows the app embed’s colors and a :root rule.

Parts

Class What it is
.andor-price The whole price line (the <andor-price> host)
.andor-price__original The struck original amount, an <s>
.andor-price__sale The sale amount
.andor-price__badge The optional badge after the amounts
.andor-price__label A visually hidden label (“Regular price”, “Sale price”). Do not restyle

States and data attributes

Attribute On Value and meaning
data-andor-state host active or hidden. A styling hook
data-andor-kind host percentage or amount_each, the winning discount’s kind
data-andor-mode host Always price
data-andor-widget-id host The block id
data-andor-product-id host The product id, when known
data-andor-variant-id host The variant the price is shown for
hidden host No sale for this variant now
data-andor-original-amount original span The node the script reads the money format from
data-andor-sale-amount sale span The only node the script rewrites

The host also carries data-descriptors, data-price, data-currency and data-best-id. They are frozen names that the price script reads. Do not rename or remove them.

Caution A hidden widget has both hidden and an inline display: none. Never force it visible with a rule like andor-price { display: block }. That would bring back an ended sale. Style andor-price[hidden] or [data-andor-state="hidden"] instead.

Custom properties

Property Default What it does
--andor-sale-color accent, then #c0392b Sale amount and badge color
--andor-original-color muted, then #6d7175 Struck amount color
--andor-price-gap --andor-space, then 0.4em Space between the parts
--andor-price-font-size inherit Size of the whole line
--andor-price-font-weight 600 Sale amount weight
--andor-price-space-block-start 0 Margin above
--andor-price-space-block-end 0 Margin below
--andor-price-badge-padding 0.1em 0.5em Badge padding
--andor-price-badge-border-color currentColor Badge border
--andor-price-badge-radius 0.2em Badge corners
--andor-price-badge-background transparent Badge fill
--andor-price-badge-font-size 0.85em Badge size

“Accent” is --andor-color-accent and “muted” is --andor-color-muted. Both are global tokens.

Examples

Match Dawn’s own sale price. Dawn’s colors are RGB numbers, so wrap them in rgb() or rgba():

andor-price {
  --andor-original-color: rgba(var(--color-foreground), 0.75);
  --andor-sale-color: rgb(var(--color-foreground));
  --andor-price-font-size: 1.6rem;
  --andor-price-badge-radius: var(--badge-corner-radius, 4rem);
}
CSS

Horizon uses full colors, so use them as they are:

andor-price {
  --andor-original-color: var(--color-foreground-muted, #666);
  --andor-sale-color: var(--color-foreground);
  --andor-price-badge-radius: var(--style-border-radius-pills, 40px);
}
CSS

Check the theme variable names in the theme version you run.

Next steps

Last updated

Was this page helpful?

No

Questions? Email andor@backtrackhq.com or use the chat in the app.