diff --git a/docs/storefront/stencil/themes/context/handlebars-reference.mdx b/docs/storefront/stencil/themes/context/handlebars-reference.md
similarity index 56%
rename from docs/storefront/stencil/themes/context/handlebars-reference.mdx
rename to docs/storefront/stencil/themes/context/handlebars-reference.md
index b542b3c98..750532924 100644
--- a/docs/storefront/stencil/themes/context/handlebars-reference.mdx
+++ b/docs/storefront/stencil/themes/context/handlebars-reference.md
@@ -2,67 +2,249 @@
This article is a reference for [Stencil](/docs/storefront/stencil/start) supported [Handlebars](https://handlebarsjs.com/) helpers. It includes [custom helpers](#custom-helpers) documentation and a list of acceptlisted [standard helpers](#standard-helpers).
-## Custom helpers
-
-The following table contains BigCommerce's open source [Handlebars helpers](https://github.com/bigcommerce/paper-handlebars/tree/master/helpers).
-
-| Helper | Category | Description |
-|:-------|:---------|:------------|
-| [limit](#limit) | array | Limits array to second argument. |
-| [pluck](#pluck) | array | Uses search key to get values from collections. |
-| [cdn](#cdn) | assets | A URL transformer for content delivery networks. |
-| [earlyHint](#earlyhint) | assets | Reduces page load time and perceived latency. |
-| [money](#money) | currency | Formats number length, thousands delimiter, and decimal delimiter. |
-| [moment](#moment) | date | Use [momentjs](https://momentjs.com/) to format and calculate dates. |
-| [getFontLoaderConfig](#getfontloaderconfig) | fonts | Returns font-loader config as a JSON string. |
-| [getFontsCollection](#getfontscollection) | fonts | Returns `` elements for configured fonts. |
-| [encodeHtmlEntities](#encodehtmlentities) | html | Encodes HTML entities. |
-| [nl2br](#nl2br) | html | Converts newline characters to `
` tags. |
-| [pre](#pre) | html | Renders preformatted text. |
-| [resourceHints](#resourcehints) | html | Pre-fetches Google fonts. |
-| [stylesheet](#stylesheet) | html | Renders a `` tag for inserting a stylesheet. |
-| [lang](#lang) | i18n | Maps keys to translation files. |
-| [langJson](#langjson) | i18n | Returns language translation keys as a JSON string. |
-| [getContentImage](#getcontentimage) | images | Returns sized image URL from store's `/content` directory. |
-| [getContentImageSrcset](#getcontentimagesrcset) | images | Returns source set of URLs for images in `/content`. |
-| [getImage](#getimage) | images | Returns image URL for specified size. |
-| [getImageManagerImage](#getimagemanagerimage) | images | Returns sized image URL for images in `/product_images/uploaded_images`. |
-| [getImageManagerImageSrcset](#getimagemanagerimagesrcset) | images | Returns image srcset for images in `/product_images/uploaded_images`. |
-| [getImageSrcset](#getimagesrcset) | images | Returns single image URL or list of URLs for different sizes. |
-| [getImageSrcset1x2x](#getimagesrcset) | images | Returns single image URL or list of URLs for different sizes. The 1x and 2x designations indicate the ratio of device pixels to the intended image CSS pixels. |
-| [any](#any) | logic | Renders block if **any** params are true. |
-| [all](#all) | logic | Renders block if **all** params are true. |
-| [compare](#compare) | logic | Compares values with JavaScript operators, including `typeof`. |
-| [contains](#contains) | logic | Renders block if first param is in second param. |
-| [for](#for) | logic | Iterates for range `a` to `b`, inclusive of `b`. |
-| [if](#if) | logic | Renders block if statement is true. |
-| [or](#or) | logic | Renders block if one or more parameters evaluate to true. |
-| [unless](#unless) | logic | Renders block if a statement evaluates to false. |
-| [option](#option) | misc | Returns the given value of `prop` from `this.options`. |
-| [get](#get) | object| Use property paths (`a.b.c`) to get a value or nested value from the context. |
-| [getObject](#getobject) | object| Use property paths (`a.b.c`) to get an object from the context. |
-| [concat](#concat) | string | Concatenates two strings. |
-| [multiConcat](#multiConcat) | string | Concatenates multiple strings. |
-| [join](#join) | string | Joins an array of string elements into one string. |
-| [json](#json) | string | Converts a JavaScript object into a JSON string. |
-| [occurrences](#occurrences) | string | Returns the number of occurrences of substring within the given string. |
-| [replace](#replace) | string | Replaces all instances of the first parameter in the second parameter. |
-| [setURLQueryParam](#seturlqueryparam) | string | Appends keys values to a URL. |
-| [stripQuerystring](#stripquerystring) | string | Removes a query string. |
-| [strReplace](#strreplace) | string | Replaces some or all occurrences of a target substring within a subject string. |
-| [toLowerCase](#tolowercase) | string | Converts a string to lowercase. |
-| [truncate](#truncate) | string | Truncates a string. |
-| [block](#block) | template | Defines a content block. |
-| [dynamicComponent](#dynamiccomponent) | template | Inserts a dynamic partial in the specified path. |
-| [inject](#inject) | template | Injects key values into `{{jsContext}}`. |
-| [jsContext](#jscontext) | template | Returns JSON for all data injected by `{{inject}}`. |
-| [partial](#partial) | template | Overrides content defined by `{{block}}`. |
-| [region](#region) | template | Specifies a widget region. |
-| [assignVar](#assignvar) | variables | Saves value to a variable. |
-| [getVar](#getvar) | variables| Returns a variable value. |
+
+## Supported Standard Features
+The following standard Handlebars features that are supported in Stencil themes.
+All documentation of standard Handlebars features can be found in the [Handlebars documentation](https://handlebarsjs.com/guide/builtin-helpers.html).
+
+> **NOTE**:
+>
+> The standard Handlebars features `if` and `unless` have additional functionality provided by BigCommerce.
+> See the [if](#if) and [unless](#unless) sections for more information.
+
+
+| Helper | Category | Description |
+|:---------------------------------------------------------------------|:----------|:----------------------------------------------------------------------------------------------------------------------------------------------|
+| [if](https://handlebarsjs.com/guide/builtin-helpers.html#if) | logical | Block helper that renders it's contents when the input is evaluated to be [Truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy). |
+| [unless](https://handlebarsjs.com/guide/builtin-helpers.html#unless) | logical | Block helper that renders it's contents when the input is evaluated to be [Falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy). |
+| [else](https://handlebarsjs.com/guide/builtin-helpers.html#if) | logical | Alternative output for when a logical block conditionally renders its contents. |
+| [each](https://handlebarsjs.com/guide/builtin-helpers.html#each) | iteration | Block helper that iterates over the items in a given array. |
+| [with](https://handlebarsjs.com/guide/builtin-helpers.html#with) | object | Block helper that uses the given value as context for the block. The first provided value becomes "this" within the block. |
+| [lookup](https://handlebarsjs.com/guide/builtin-helpers.html#lookup) | utility | Inline helper to retrieve a value at a specific index within a array, or a value using a given key from a object. |
+| [log](https://handlebarsjs.com/guide/builtin-helpers.html#log) | debugging | Log the input value to the standard output ( stencil-cli ). |
+
+
+## BigCommerce Provided Helpers
+
+The following tables contains BigCommerce's open source handlebars helpers which can be found at the BigCommerce [GitHub](https://github.com/bigcommerce/paper-handlebars/tree/master/helpers).
+
+
+### Assets
+Asset helpers are used to access and retrieve assets from your theme or store.
+
+| Helper | Category | Description |
+|:--------------------------------------------|:---------|:----------------------------------------------------|
+| [cdn](#cdn) | assets | A URL transformer for content delivery networks. |
+| [earlyHint](#earlyhint) | assets | Reduces page load time and perceived latency. |
+| [getFontLoaderConfig](#getfontloaderconfig) | fonts | Returns font-loader config as a JSON string. |
+| [getFontsCollection](#getfontscollection) | fonts | Returns `` elements for configured fonts. |
+| [lang](#lang) | i18n | Maps keys to translation files. |
+| [langJson](#langjson) | i18n | Returns language translation keys as a JSON string. |
+
+
+### Templating
+Helpers that are used to define and render templates.
+
+| Helper | Category | Description |
+|:----------------------------------------------------------|:---------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [block](#block) | template | Defines a content block. |
+| [partial](#partial) | template | Overrides content defined by `{{block}}`. |
+| [region](#region) | template | Specifies a widget region. |
+| [inject](#inject) | template | Injects key values into `{{jsContext}}`. |
+| [jsContext](#jscontext) | template | Returns JSON for all data injected by `{{inject}}`. |
+| [dynamicComponent](#dynamiccomponent) | template | Inserts a dynamic partial in the specified path. |
+| [option](#option) | misc | Returns the given value of `prop` from `this.options`. |
+| [stylesheet](#stylesheet) | html | Renders a `` tag for inserting a stylesheet. |
+| [getContentImage](#getcontentimage) | images | Returns sized image URL from store's `/content` directory. |
+| [getContentImageSrcset](#getcontentimagesrcset) | images | Returns source set of URLs for images in `/content`. |
+| [getImage](#getimage) | images | Returns image URL for specified size. |
+| [getImageManagerImage](#getimagemanagerimage) | images | Returns sized image URL for images in `/product_images/uploaded_images`. |
+| [getImageManagerImageSrcset](#getimagemanagerimagesrcset) | images | Returns image srcset for images in `/product_images/uploaded_images`. |
+| [getImageSrcset](#getimagesrcset) | images | Returns single image URL or list of URLs for different sizes. |
+| [getImageSrcset1x2x](#getimagesrcset) | images | Returns single image URL or list of URLs for different sizes. The 1x and 2x designations indicate the ratio of device pixels to the intended image CSS pixels. |
+| [pre](#pre) | html | Renders preformatted text. |
+| [resourceHints](#resourcehints) | html | Pre-fetches Google fonts. |
+
+
+### Logic and Control Flow
+| Helper | Category | Description |
+|:----------------------|:-------------|:---------------------------------------------------------------|
+| [if](#if) | control flow | Renders block if statement is true. |
+| [unless](#unless) | control flow | Renders block if a statement evaluates to false. |
+| [or](#or) | control flow | Renders block if one or more parameters evaluate to true. |
+| [any](#any) | logic | Renders block if **any** params are true. |
+| [all](#all) | logic | Renders block if **all** params are true. |
+| [compare](#compare) | logic | Compares values with JavaScript operators, including `typeof`. |
+| [contains](#contains) | logic | Renders block if first param is in second param. |
+
+
+### Objects, Arrays, and Iteration
+| Helper | Category | Description |
+|:--------------------------------|:----------|:------------------------------------------------------------------------------|
+| [limit](#limit) | array | Limits array to second argument. |
+| [pluck](#pluck) | array | Uses search key to get values from collections. |
+| [for](#for) | iteration | Iterates for range `a` to `b`, inclusive of `b`. |
+| [get](#get) | object | Use property paths (`a.b.c`) to get a value or nested value from the context. |
+| [getObject](#getobject) | object | Use property paths (`a.b.c`) to get an object from the context. |
+| [concat](#concat) | string | Concatenates two strings. |
+| [multiConcat](#multiConcat) | string | Concatenates multiple strings. |
+| [join](#join) | string | Joins an array of string elements into one string. |
+| [json](#json) | string | Converts a JavaScript object into a JSON string. |
+| [JSONparse](#jsonparse) | object | Parses the given string using `JSON.parse`. |
+| [JSONparseSafe](#jsonparsesafe) | object | Parses the given string safely using `JSON.parseSafe`. |
+| [reverse](#reverse) | string | Reverses a string. |
+
+
+### String Manipulation
+| Helper | Category | Description |
+|:--------------------------------------|:---------|:--------------------------------------------------------------------------------|
+| [occurrences](#occurrences) | string | Returns the number of occurrences of substring within the given string. |
+| [replace](#replace) | string | Replaces all instances of the first parameter in the second parameter. |
+| [setURLQueryParam](#seturlqueryparam) | string | Appends keys values to a URL. |
+| [stripQuerystring](#stripquerystring) | string | Removes a query string. |
+| [strReplace](#strreplace) | string | Replaces some or all occurrences of a target substring within a subject string. |
+| [toLowerCase](#tolowercase) | string | Converts a string to lowercase. |
+| [truncate](#truncate) | string | Truncates a string. |
+
+
+### Utility and Miscellaneous Others
+| Helper | Category | Description |
+|:------------------------------------------|:----------|:---------------------------------------------------------------------|
+| [money](#money) | currency | Formats number length, thousands delimiter, and decimal delimiter. |
+| [moment](#moment) | date | Use [momentjs](https://momentjs.com/) to format and calculate dates. |
+| [encodeHtmlEntities](#encodehtmlentities) | html | Encodes HTML entities. |
+| [nl2br](#nl2br) | html | Converts newline characters to `
` tags. |
+| [typeof](#typeof) | misc | Returns the type of a variable. |
+
+
+
+### Custom data and variables
+| Helper | Category | Description |
+|:------------------------------|:----------|:----------------------------|
+| [assignVar](#assignvar) | variables | Saves value to a variable. |
+| [getVar](#getvar) | variables | Returns a variable value. |
| [decrementVar](#decrementvar) | variables | Decrements a variable by 1. |
| [incrementVar](#incrementvar) | variables | Increments a variable by 1. |
+
+### 3rd Party Helpers and Libraries
+The following table contains generally accepted listed standard Handlebars helpers available to all Stencil themes.
+Each helper is linked to its GitHub documentation including parameters and examples.
+
+| Helper | Category | Description |
+|:-------------------------------------------------------------------------------------------------|:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [after](https://github.com/helpers/handlebars-helpers#after) | array | Returns all of the items in an array after the specified index. |
+| [arrayify](https://github.com/helpers/handlebars-helpers#arrayify) | array | Casts the given value to an array. |
+| [before](https://github.com/helpers/handlebars-helpers#before) | array | Returns all of the items in the collection before the specified count. |
+| [eachIndex](https://github.com/helpers/handlebars-helpers#eachIndex) | array | |
+| [filter](https://github.com/helpers/handlebars-helpers#filter) | array | Block helper that filters the given array and renders the block for values that evaluate to `true`, otherwise the inverse block is returned. |
+| [first](https://github.com/helpers/handlebars-helpers#first) | array | Returns the first item or first `n` items of an array. |
+| [forEach](https://github.com/helpers/handlebars-helpers#forEach) | array | Iterates over each item in an array and exposes the current item in the array as context to the inner block. |
+| [inArray](https://github.com/helpers/handlebars-helpers#inArray) | array | Block helper that renders the block if an array has the given `value`. |
+| [isArray](https://github.com/helpers/handlebars-helpers#isArray) | array | Returns `true` if value is an es5 array. |
+| [last](https://github.com/helpers/handlebars-helpers#last) | array | Returns the last item, or last `n` items of an array or string. |
+| [length](https://github.com/helpers/handlebars-helpers#length) | array | Returns the length of the given string or array. |
+| [lengthEqual](https://github.com/helpers/handlebars-helpers#lengthEqual) | array | Returns true if the length of the given value is equal to the given `length`. |
+| [map](https://github.com/helpers/handlebars-helpers#map) | array | Returns a new array created by calling `function` on each element of the given array. |
+| [some](https://github.com/helpers/handlebars-helpers#some) | array | Block helper that returns the block if the callback returns `true` for some value in the given array. |
+| [sort](https://github.com/helpers/handlebars-helpers#sort) | array | Sorts the given array. If an array of objects is passed, you may optionally pass a `key` to sort on as the second argument. |
+| [sortBy](https://github.com/helpers/handlebars-helpers#sortBy) | array | Sorts an array. If an array of objects is passed, you may optionally pass a `key` to sort on as the second argument. |
+| [withAfter](https://github.com/helpers/handlebars-helpers#withAfter) | array | Uses the items in the array *after* the specified index as context inside a block. |
+| [withBefore](https://github.com/helpers/handlebars-helpers#withBefore) | array | Uses the items in the array *before* the specified index as context inside a block. |
+| [withFirst](https://github.com/helpers/handlebars-helpers#withFirst) | array | Uses the first item in a collection inside a handlebars block expression. |
+| [withLast](https://github.com/helpers/handlebars-helpers#withLast) | array | Uses the last item or `n` items in an array as context inside a block. |
+| [withSort](https://github.com/helpers/handlebars-helpers#withSort) | array | Block helper that sorts a collection and exposes the sorted collection as context inside the block. |
+| [isEmpty](https://github.com/helpers/handlebars-helpers#isEmpty) | collection | Inline, subexpression, or block helper that returns `true` (or the block) if the given collection is empty, or `false` (or the inverse block, if supplied) if the collection is not empty. |
+| [iterate](https://github.com/helpers/handlebars-helpers#iterate) | collection | Block helper that iterates over an array or object. If an array is given, `.forEach` is called, or if an object is given, `.forOwn` is called, otherwise the inverse block is returned. |
+| [and](https://github.com/helpers/handlebars-helpers#and) | comparison | Helper that renders the block if both of the given values are truthy. If an inverse block is specified it will be rendered when falsy. |
+| [default](https://github.com/helpers/handlebars-helpers#default) | comparison | Returns the first value that is not undefined, otherwise the default value is returned. |
+| [eq](https://github.com/helpers/handlebars-helpers#eq) | comparison | Block helper that renders a block if `a` is equal to `b`. If an inverse block is specified it will be rendered when falsy. |
+| [gt](https://github.com/helpers/handlebars-helpers#gt) | comparison | Block helper that renders a block if `a` is greater than `b`. If an inverse block is specified, it will be rendered when false. |
+| [gte](https://github.com/helpers/handlebars-helpers#gte) | comparison | Block helper that renders a block if `a` is greater than or equal to `b`. If an inverse block is specified it will be rendered when falsy. |
+| [has](https://github.com/helpers/handlebars-helpers#has) | comparison | Block helper that renders a block if value has pattern. If an inverse block is specified it will be rendered when falsy. |
+| [ifEven](https://github.com/helpers/handlebars-helpers#ifEven) | comparison | Returns `true` if the given value is an even number. |
+| [ifNth](https://github.com/helpers/handlebars-helpers#ifNth) | comparison | Conditionally renders a block if the remainder is zero when `a` operand is divided by `b`. If an inverse block is specified it will be rendered when the remainder is not zero. |
+| [ifOdd](https://github.com/helpers/handlebars-helpers#ifOdd) | comparison | Block helper that renders a block if value is an odd number. If an inverse block is specified it will be rendered when falsy. |
+| [is](https://github.com/helpers/handlebars-helpers#is) | comparison | Block helper that renders a block if `a` is equal to `b`. If an inverse block is specified it will be rendered when falsy. Similar to eq but does not do strict equality. |
+| [isnt](https://github.com/helpers/handlebars-helpers#isnt) | comparison | Block helper that renders a block if `a` is not equal to `b`. If an inverse block is specified it will be rendered when falsy. Similar to unlessEq but does not use strict equality for comparisons. |
+| [lt](https://github.com/helpers/handlebars-helpers#lt) | comparison | Block helper that renders a block if `a` is less than `b`. If an inverse block is specified it will be rendered when falsy. |
+| [lte](https://github.com/helpers/handlebars-helpers#lte) | comparison | Block helper that renders a block if `a` is less than or equal to `b`. If an inverse block is specified it will be rendered when falsy. |
+| [neither](https://github.com/helpers/handlebars-helpers#neither) | comparison | Block helper that renders a block if neither of the given values are truthy. If an inverse block is specified it will be rendered when falsy. |
+| [unlessEq](https://github.com/helpers/handlebars-helpers#unlessEq) | comparison | Block helper that always renders the inverse block unless `a` is equal to `b`. |
+| [unlessGt](https://github.com/helpers/handlebars-helpers#unlessGt) | comparison | Block helper that always renders the inverse block unless `a` is greater than `b`. |
+| [unlessLt](https://github.com/helpers/handlebars-helpers#unlessLt) | comparison | Block helper that always renders the inverse block unless `a` is less than `b`. |
+| [unlessGteq](https://github.com/helpers/handlebars-helpers#unlessGteq) | comparison | Block helper that always renders the inverse block unless `a` is greater than or equal to `b`. |
+| [unlessLteq](https://github.com/helpers/handlebars-helpers#unlessLteq) | comparison | Block helper that always renders the inverse block unless `a` is less than or equal to `b`. |
+| [sanitize](https://github.com/helpers/handlebars-helpers#sanitize) | html | Strips HTML tags from a string, so that only the text nodes are preserved. |
+| [ul](https://github.com/helpers/handlebars-helpers#ul) | html | Block helper for creating unordered lists (`