/* (c) Copyright Frontify Ltd., all rights reserved. */

export const cssVariableReplacements = {
    'var(--base-color)': 'var(--color-surface-default)',
    'var(--base-color-alt)': 'var(--color-surface-dim)',
    'var(--body-family)': 'var(--typography-font-family-primary)',
    'var(--body-family-stack)': 'var(--body-family)',
    'var(--body-weight-name)': 'var(--typography-font-weight-regular)',
    'var(--body-weight-number)': 'var(--typography-font-weight-regular)',
    'var(--body-weight-strong-name)': 'var(--typography-font-weight-medium)',
    'var(--body-weight-strong-number)': 'var(--typography-font-weight-medium)',
    'var(--body-weight-x-strong-name)': 'var(--typography-font-weight-bold)',
    'var(--body-weight-x-strong-number)': 'var(--typography-font-weight-bold)',
    'var(--body-size-x-small)': 'var(--typography-font-size-x-small)',
    'var(--body-size-x-small-line-height)': 'var(--typography-line-height-tight)',
    'var(--body-size-small)': 'var(--typography-font-size-small)',
    'var(--body-size-small-line-height)': 'var(--typography-line-height-tight)',
    'var(--body-size-medium)': 'var(--typography-font-size-medium)',
    'var(--body-size-medium-line-height)': 'var(--typography-line-height-medium)',
    'var(--body-size-large)': 'var(--typography-font-size-large)',
    'var(--body-size-large-line-height)': 'var(--typography-line-height-wide)',
    'var(--box-neutral-color)': 'var(--color-container-secondary-default)',
    'var(--box-neutral-color-hover)': 'var(--color-container-secondary-hover)',
    'var(--box-neutral-color-pressed)': 'var(--color-container-secondary-active)',
    'var(--box-neutral-inverse-color)': 'var(--color-container-secondary-on-secondary-container)',
    'var(--box-neutral-inverse-color-hover)': 'var(--color-container-secondary-on-secondary-container)',
    'var(--box-neutral-inverse-color-pressed)': 'var(--color-container-secondary-on-secondary-container)',
    'var(--box-neutral-strong-color)': 'var(--color-primary-default)',
    'var(--box-neutral-strong-color-hover)': 'var(--color-primary-hover)',
    'var(--box-neutral-strong-color-pressed)': 'var(--color-primary-active)',
    'var(--box-neutral-strong-inverse-color)': 'var(--color-primary-on-primary)',
    'var(--box-neutral-strong-inverse-color-hover)': 'var(--color-primary-on-primary)',
    'var(--box-neutral-strong-inverse-color-pressed)': 'var(--color-primary-on-primary)',
    'var(--box-neutral-mighty-color)': 'var(--color-primary-default)',
    'var(--box-neutral-mighty-color-hover)': 'var(--color-primary-hover)',
    'var(--box-neutral-mighty-color-pressed)': 'var(--color-primary-active)',
    'var(--box-neutral-mighty-inverse-color)': 'var(--color-primary-on-primary)',
    'var(--box-neutral-mighty-inverse-color-hover)': 'var(--color-primary-on-primary)',
    'var(--box-neutral-mighty-inverse-color-pressed)': 'var(--color-primary-on-primary)',
    'var(--box-selected-color)': 'var(--color-container-highlight-default)',
    'var(--box-selected-color-hover)': 'var(--color-container-highlight-hover)',
    'var(--box-selected-color-pressed)': 'var(--color-container-highlight-active)',
    'var(--box-selected-inverse-color)': 'var(--color-container-highlight-on-highlight-container)',
    'var(--box-selected-inverse-color-hover)': 'var(--color-container-highlight-on-highlight-container)',
    'var(--box-selected-inverse-color-pressed)': 'var(--color-container-highlight-on-highlight-container)',
    'var(--box-selected-strong-color)': 'var(--color-highlight-default)',
    'var(--box-selected-strong-color-hover)': 'var(--color-highlight-hover)',
    'var(--box-selected-strong-color-pressed)': 'var(--color-highlight-active)',
    'var(--box-selected-strong-inverse-color)': 'var(--color-highlight-on-highlight)',
    'var(--box-selected-strong-inverse-color-hover)': 'var(--color-highlight-on-highlight)',
    'var(--box-selected-strong-inverse-color-pressed)': 'var(--color-highlight-on-highlight)',
    'var(--box-disabled-color)': 'var(--color-container-disabled-default)',
    'var(--box-disabled-color-inverse)': 'var(--color-container-disabled-on-disabled)',
    'var(--box-disabled-strong-color)': 'var(--color-disabled-default)',
    'var(--box-disabled-strong-color-inverse)': 'var(--color-disabled-on-disabled)',
    'var(--box-positive-color)': 'var(--color-container-success-default)',
    'var(--box-positive-color-hover)': 'var(--color-container-success-hover)',
    'var(--box-positive-color-pressed)': 'var(--color-container-success-active)',
    'var(--box-positive-inverse-color)': 'var(--color-container-success-on-success-container)',
    'var(--box-positive-inverse-color-hover)': 'var(--color-container-success-on-success-container)',
    'var(--box-positive-inverse-color-pressed)': 'var(--color-container-success-on-success-container)',
    'var(--box-positive-strong-color)': 'var(--color-success-default)',
    'var(--box-positive-strong-color-hover)': 'var(--color-success-hover)',
    'var(--box-positive-strong-color-pressed)': 'var(--color-success-active)',
    'var(--box-positive-strong-inverse-color)': 'var(--color-success-on-success)',
    'var(--box-positive-strong-inverse-color-hover)': 'var(--color-success-on-success)',
    'var(--box-positive-strong-inverse-color-pressed)': 'var(--color-success-on-success)',
    'var(--box-negative-color)': 'var(--color-container-error-default)',
    'var(--box-negative-color-hover)': 'var(--color-container-error-hover)',
    'var(--box-negative-color-pressed)': 'var(--color-container-error-active)',
    'var(--box-negative-inverse-color)': 'var(--color-container-error-on-error-container)',
    'var(--box-negative-inverse-color-hover)': 'var(--color-container-error-on-error-container)',
    'var(--box-negative-inverse-color-pressed)': 'var(--color-container-error-on-error-container)',
    'var(--box-negative-strong-color)': 'var(--color-error-default)',
    'var(--box-negative-strong-color-hover)': 'var(--color-error-hover)',
    'var(--box-negative-strong-color-pressed)': 'var(--color-error-active)',
    'var(--box-negative-strong-inverse-color)': 'var(--color-error-on-error)',
    'var(--box-negative-strong-inverse-color-hover)': 'var(--color-error-on-error)',
    'var(--box-negative-strong-inverse-color-pressed)': 'var(--color-error-on-error)',
    'var(--box-warning-color)': 'var(--color-container-warning-default)',
    'var(--box-warning-color-hover)': 'var(--color-container-warning-hover)',
    'var(--box-warning-color-pressed)': 'var(--color-container-warning-active)',
    'var(--box-warning-inverse-color)': 'var(--color-container-warning-on-warning-container)',
    'var(--box-warning-inverse-color-hover)': 'var(--color-container-warning-on-warning-container)',
    'var(--box-warning-inverse-color-pressed)': 'var(--color-container-warning-on-warning-container)',
    'var(--box-warning-strong-color)': 'var(--color-warning-default)',
    'var(--box-warning-strong-color-hover)': 'var(--color-warning-hover)',
    'var(--box-warning-strong-color-pressed)': 'var(--color-warning-active)',
    'var(--box-warning-strong-inverse-color)': 'var(--color-warning-on-warning)',
    'var(--box-warning-strong-inverse-color-hover)': 'var(--color-warning-on-warning)',
    'var(--box-warning-strong-inverse-color-pressed)': 'var(--color-warning-on-warning)',
    'var(--code-family)': 'var(--typography-font-family-monospace)',
    'var(--code-family-stack)': 'var(--typography-font-family-monospace)',
    'var(--code-weight-name)': 'var(--typography-font-weight-regular)',
    'var(--code-weight-number)': 'var(--typography-font-weight-regular)',
    'var(--code-weight-strong-name)': 'var(--typography-font-weight-bold)',
    'var(--code-weight-strong-number)': 'var(--typography-font-weight-bold)',
    'var(--focus-ring-color)': 'var(--color-focus-default)',
    'var(--heading-family)': 'var(--typography-font-family-primary)',
    'var(--heading-family-stack)': 'var(--typography-font-family-primary)',
    'var(--heading-weight-name)': 'var(--typography-font-weight-medium)',
    'var(--heading-weight-number)': 'var(--typography-font-weight-medium)',
    'var(--heading-weight-strong-name)': 'var(--typography-font-weight-bold)',
    'var(--heading-weight-strong-number)': 'var(--typography-font-weight-bold)',
    'var(--heading-size-medium)': 'var(--typography-font-size-medium)',
    'var(--heading-size-medium-line-height)': 'var(--typography-line-height-tight)',
    'var(--heading-size-large)': 'var(--typography-font-size-large)',
    'var(--heading-size-large-line-height)': 'var(--typography-line-height-wide)',
    'var(--heading-size-x-large)': 'var(--typography-font-size-x-large)',
    'var(--heading-size-x-large-line-height)': 'var(--typography-line-height-loose)',
    'var(--heading-size-xx-large)': 'var(--typography-font-size-xx-large)',
    'var(--heading-size-xx-large-line-height)': 'var(--typography-line-height-extra-loose)',
    'var(--line-color)': 'var(--color-line-mid)',
    'var(--line-color-weak)': 'var(--color-line-subtle)',
    'var(--line-color-strong)': 'var(--color-line-strong)',
    'var(--line-color-x-strong)': 'var(--color-line-strong)',
    'var(--line-color-xx-strong)': 'var(--color-line-strong)',
    'var(--line-color-mighty)': 'var(--color-line-mid)',
    'var(--line-width)': 'var(--border-width-default)',
    'var(--line-width-large)': 'var(--border-width-large)',
    'var(--overlay-color)': 'var(--color-overlay-default)',
    'var(--radius)': 'var(--border-radius-medium)',
    'var(--radius-small)': 'var(--border-radius-small)',
    'var(--radius-large)': 'var(--border-radius-large)',
    'var(--radius-x-large)': 'var(--border-radius-x-large)',
    'var(--shadow-matrix)': 'var(--shadow-default)',
    'var(--shadow-top-matrix)': 'var(--shadow-default)',
    'var(--shadow-bottom-matrix)': 'var(--shadow-default)',
    'var(--shadow-large-matrix)': 'var(--shadow-default)',
    'var(--shadow-large-color)': 'var(--color-shadow-default)',
    'var(--space-xxs)': 'var(--spacing-xx-small)',
    'var(--space-xs)': 'var(--spacing-x-small)',
    'var(--space-s)': 'var(--spacing-small)',
    'var(--space-m)': 'var(--spacing-medium)',
    'var(--space-l)': 'var(--spacing-large)',
    'var(--space-xl)': 'var(--spacing-x-large)',
    'var(--space-xxl)': 'var(--spacing-xx-large)',
    'var(--text-color)': 'var(--color-primary-default)',
    'var(--text-color-hover)': 'var(--color-primary-hover)',
    'var(--text-color-pressed)': 'var(--color-primary-active)',
    'var(--text-color-weak)': 'var(--color-secondary-default)',
    'var(--text-color-weak-hover)': 'var(--color-secondary-hover)',
    'var(--text-color-weak-pressed)': 'var(--color-secondary-active)',
    'var(--text-color-x-weak)': 'var(--color-secondary-default)',
    'var(--text-color-disabled)': 'var(--color-disabled-default)',
    'var(--text-color-negative)': 'var(--color-error-default)',
    'var(--text-color-negative-hover)': 'var(--color-error-hover)',
    'var(--text-color-negative-pressed)': 'var(--color-error-active)',
    'var(--text-color-positive)': 'var(--color-success-default)',
    'var(--text-color-positive-hover)': 'var(--color-success-hover)',
    'var(--text-color-positive-pressed)': 'var(--color-success-active)',
    'var(--text-color-warning)': 'var(--color-warning-default)',
    'var(--text-color-warning-hover)': 'var(--color-warning-hover)',
    'var(--text-color-warning-pressed)': 'var(--color-warning-active)',
    'var(--text-color-interactive)': 'var(--color-highlight-default)',
    'var(--text-color-interactive-hover)': 'var(--color-highlight-hover)',
    'var(--text-color-interactive-pressed)': 'var(--color-highlight-active)',
    'var(--button-background-color)': 'var(--color-container-secondary-default)',
    'var(--button-background-color-hover)': 'var(--color-container-secondary-hover)',
    'var(--button-background-color-pressed)': 'var(--color-container-secondary-active)',
    'var(--button-text-color)': 'var(--color-primary-default)',
    'var(--button-icon-color)': 'var(--color-primary-default)',
    'var(--button-border-color)': 'var(--color-primary-default)',
    'var(--button-negative-background-color)': 'var(--color-container-error-default)',
    'var(--button-negative-background-color-hover)': 'var(--color-container-error-hover)',
    'var(--button-negative-background-color-pressed)': 'var(--color-container-error-active)',
    'var(--button-negative-text-color)': 'var(--color-container-error-on-error-container)',
    'var(--button-negative-icon-color)': 'var(--color-container-error-on-error-container)',
    'var(--button-positive-background-color)': 'var(--color-container-success-default)',
    'var(--button-positive-background-color-hover)': 'var(--color-container-success-hover)',
    'var(--button-positive-background-color-pressed)': 'var(--color-container-success-active)',
    'var(--button-positive-text-color)': 'var(--color-container-success-on-success-container)',
    'var(--button-positive-icon-color)': 'var(--color-container-success-on-success-container)',
    'var(--button-strong-background-color)': 'var(--color-primary-default)',
    'var(--button-strong-background-color-hover)': 'var(--color-primary-hover)',
    'var(--button-strong-background-color-pressed)': 'var(--color-primary-active)',
    'var(--button-strong-text-color)': 'var(--color-primary-on-primary)',
    'var(--button-strong-icon-color)': 'var(--color-primary-on-primary)',
    'var(--button-strong-negative-background-color)': 'var(--color-error-default)',
    'var(--button-strong-negative-background-color-hover)': 'var(--color-error-hover)',
    'var(--button-strong-negative-background-color-pressed)': 'var(--color-error-active)',
    'var(--button-strong-negative-text-color)': 'var(--color-error-on-error)',
    'var(--button-strong-negative-icon-color)': 'var(--color-error-on-error)',
    'var(--button-strong-positive-background-color)': 'var(--color-success-default)',
    'var(--button-strong-positive-background-color-hover)': 'var(--color-success-hover)',
    'var(--button-strong-positive-background-color-pressed)': 'var(--color-success-active)',
    'var(--button-strong-positive-text-color)': 'var(--color-success-on-success)',
    'var(--button-strong-positive-icon-color)': 'var(--color-success-on-success)',
    'var(--button-danger-background-color)': 'var(--color-error-default)',
    'var(--button-danger-background-color-hover)': 'var(--color-error-hover)',
    'var(--button-danger-background-color-pressed)': 'var(--color-error-active)',
    'var(--button-danger-text-color)': 'var(--color-error-on-error)',
    'var(--button-danger-icon-color)': 'var(--color-error-on-error)',
    'var(--code-size-small)': 'var(--typography-font-size-small)',
    'var(--code-size-small-line-height)': 'var(--typography-line-height-tight)',
    'var(--code-size-medium)': 'var(--typography-font-size-medium)',
    'var(--code-size-medium-line-height)': 'var(--typography-line-height-medium)',
    'var(--code-size-large)': 'var(--typography-font-size-large)',
    'var(--code-size-large-line-height)': 'var(--typography-line-height-wide)',
    'var(--button-danger-border-color)': 'var(--color-line-mid)',
    'var(--button-strong-positive-border-color)': 'var(--color-line-mid)',
    'var(--button-strong-negative-border-color)': 'var(--color-line-mid)',
    'var(--button-strong-border-color)': 'var(--color-line-mid)',
    'var(--button-positive-border-color)': 'var(--color-line-mid)',
    'var(--button-negative-border-color)': 'var(--color-line-mid)',
};

export const deprecatedCssVariables = {
    'var(--shadow-large-offset-x)': '/** @deprecated use updated token instead **/',
    'var(--shadow-large-offset-y)': '/** @deprecated use updated token instead **/',
    'var(--shadow-large-spread)': '/** @deprecated use updated token instead **/',
    'var(--shadow-large-blur)': '/** @deprecated use updated token instead **/',
    'var(--shadow-bottom-offset-x)': '/** @deprecated use updated token instead **/',
    'var(--shadow-bottom-offset-y)': '/** @deprecated use updated token instead **/',
    'var(--shadow-bottom-spread)': '/** @deprecated use updated token instead **/',
    'var(--shadow-top-offset-x)': '/** @deprecated use updated token instead **/',
    'var(--shadow-top-offset-y)': '/** @deprecated use updated token instead **/',
    'var(--shadow-top-spread)': '/** @deprecated use updated token instead **/',
    'var(--shadow-offset-x)': '/** @deprecated use updated token instead **/',
    'var(--shadow-offset-y)': '/** @deprecated use updated token instead **/',
    'var(--shadow-spread)': '/** @deprecated use updated token instead **/',
    'var(--shadow-blur)': '/** @deprecated use updated token instead **/',
    'var(--shadow-color)': '/** @deprecated use updated token instead **/',
};

const tailwindColorReplacements = {
    'tw-([^-]+)-base(?![a-zA-Z0-9-])': 'tw-$1-surface',
    'tw-([^-]+)-base-alt(?![a-zA-Z0-9-])': 'tw-$1-surface-dim',
    'tw-([^-]+)-box-neutral(?![a-zA-Z0-9-])': 'tw-$1-container-secondary',
    'tw-([^-]+)-box-neutral-hover(?![a-zA-Z0-9-])': 'tw-$1-container-secondary-hover',
    'tw-([^-]+)-box-neutral-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-secondary-active',
    'tw-([^-]+)-box-neutral-inverse(?![a-zA-Z0-9-])': 'tw-$1-container-secondary-on-secondary-container',
    'tw-([^-]+)-box-neutral-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-container-secondary-on-secondary-container',
    'tw-([^-]+)-box-neutral-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-secondary-on-secondary-container',
    'tw-([^-]+)-box-neutral-strong(?![a-zA-Z0-9-])': 'tw-$1-primary',
    'tw-([^-]+)-box-neutral-strong-hover(?![a-zA-Z0-9-])': 'tw-$1-primary-hover',
    'tw-([^-]+)-box-neutral-strong-pressed(?![a-zA-Z0-9-])': 'tw-$1-primary-active',
    'tw-([^-]+)-box-neutral-strong-inverse(?![a-zA-Z0-9-])': 'tw-$1-primary-on-primary',
    'tw-([^-]+)-box-neutral-strong-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-primary-on-primary',
    'tw-([^-]+)-box-neutral-strong-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-primary-on-primary',
    'tw-([^-]+)-box-neutral-mighty(?![a-zA-Z0-9-])': 'tw-$1-primary',
    'tw-([^-]+)-box-neutral-mighty-hover(?![a-zA-Z0-9-])': 'tw-$1-primary-hover',
    'tw-([^-]+)-box-neutral-mighty-pressed(?![a-zA-Z0-9-])': 'tw-$1-primary-active',
    'tw-([^-]+)-box-neutral-mighty-inverse(?![a-zA-Z0-9-])': 'tw-$1-primary-on-primary',
    'tw-([^-]+)-box-neutral-mighty-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-primary-on-primary',
    'tw-([^-]+)-box-neutral-mighty-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-primary-on-primary',
    'tw-([^-]+)-box-selected(?![a-zA-Z0-9-])': 'tw-$1-container-highlight',
    'tw-([^-]+)-box-selected-hover(?![a-zA-Z0-9-])': 'tw-$1-container-highlight-hover',
    'tw-([^-]+)-box-selected-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-highlight-active',
    'tw-([^-]+)-box-selected-inverse(?![a-zA-Z0-9-])': 'tw-$1-container-highlight-on-highlight-container',
    'tw-([^-]+)-box-selected-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-container-highlight-on-highlight-container',
    'tw-([^-]+)-box-selected-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-highlight-on-highlight-container',
    'tw-([^-]+)-box-selected-strong(?![a-zA-Z0-9-])': 'tw-$1-highlight',
    'tw-([^-]+)-box-selected-strong-hover(?![a-zA-Z0-9-])': 'tw-$1-highlight-hover',
    'tw-([^-]+)-box-selected-strong-pressed(?![a-zA-Z0-9-])': 'tw-$1-highlight-active',
    'tw-([^-]+)-box-selected-strong-inverse(?![a-zA-Z0-9-])': 'tw-$1-highlight-on-highlight',
    'tw-([^-]+)-box-selected-strong-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-highlight-on-highlight',
    'tw-([^-]+)-box-selected-strong-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-highlight-on-highlight',
    'tw-([^-]+)-box-disabled(?![a-zA-Z0-9-])': 'tw-$1-container-disabled',
    'tw-([^-]+)-box-disabled-inverse(?![a-zA-Z0-9-])': 'tw-$1-container-disabled-on-disabled-container',
    'tw-([^-]+)-box-disabled-strong(?![a-zA-Z0-9-])': 'tw-$1-disabled',
    'tw-([^-]+)-box-disabled-strong-inverse(?![a-zA-Z0-9-])': 'tw-$1-disabled-on-disabled',
    'tw-([^-]+)-box-positive(?![a-zA-Z0-9-])': 'tw-$1-container-success',
    'tw-([^-]+)-box-positive-hover(?![a-zA-Z0-9-])': 'tw-$1-container-success-hover',
    'tw-([^-]+)-box-positive-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-success-active',
    'tw-([^-]+)-box-positive-inverse(?![a-zA-Z0-9-])': 'tw-$1-container-success-on-success-container',
    'tw-([^-]+)-box-positive-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-container-success-on-success-container',
    'tw-([^-]+)-box-positive-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-success-on-success-container',
    'tw-([^-]+)-box-positive-strong(?![a-zA-Z0-9-])': 'tw-$1-success',
    'tw-([^-]+)-box-positive-strong-hover(?![a-zA-Z0-9-])': 'tw-$1-success-hover',
    'tw-([^-]+)-box-positive-strong-pressed(?![a-zA-Z0-9-])': 'tw-$1-success-active',
    'tw-([^-]+)-box-positive-strong-inverse(?![a-zA-Z0-9-])': 'tw-$1-success-on-success',
    'tw-([^-]+)-box-positive-strong-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-success-on-success',
    'tw-([^-]+)-box-positive-strong-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-success-on-success',
    'tw-([^-]+)-box-negative(?![a-zA-Z0-9-])': 'tw-$1-container-error',
    'tw-([^-]+)-box-negative-hover(?![a-zA-Z0-9-])': 'tw-$1-container-error-hover',
    'tw-([^-]+)-box-negative-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-error-active',
    'tw-([^-]+)-box-negative-inverse(?![a-zA-Z0-9-])': 'tw-$1-container-error-on-error-container',
    'tw-([^-]+)-box-negative-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-container-error-on-error-container',
    'tw-([^-]+)-box-negative-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-error-on-error-container',
    'tw-([^-]+)-box-negative-strong(?![a-zA-Z0-9-])': 'tw-$1-error',
    'tw-([^-]+)-box-negative-strong-hover(?![a-zA-Z0-9-])': 'tw-$1-error-hover',
    'tw-([^-]+)-box-negative-strong-pressed(?![a-zA-Z0-9-])': 'tw-$1-error-active',
    'tw-([^-]+)-box-negative-strong-inverse(?![a-zA-Z0-9-])': 'tw-$1-error-on-error',
    'tw-([^-]+)-box-negative-strong-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-error-on-error',
    'tw-([^-]+)-box-negative-strong-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-error-on-error',
    'tw-([^-]+)-box-warning(?![a-zA-Z0-9-])': 'tw-$1-container-warning',
    'tw-([^-]+)-box-warning-hover(?![a-zA-Z0-9-])': 'tw-$1-container-warning-hover',
    'tw-([^-]+)-box-warning-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-warning-active',
    'tw-([^-]+)-box-warning-inverse(?![a-zA-Z0-9-])': 'tw-$1-container-warning-on-warning-container',
    'tw-([^-]+)-box-warning-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-container-warning-on-warning-container',
    'tw-([^-]+)-box-warning-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-warning-on-warning-container',
    'tw-([^-]+)-box-warning-strong(?![a-zA-Z0-9-])': 'tw-$1-warning',
    'tw-([^-]+)-box-warning-strong-hover(?![a-zA-Z0-9-])': 'tw-$1-warning-hover',
    'tw-([^-]+)-box-warning-strong-pressed(?![a-zA-Z0-9-])': 'tw-$1-warning-active',
    'tw-([^-]+)-box-warning-strong-inverse(?![a-zA-Z0-9-])': 'tw-$1-warning-on-warning',
    'tw-([^-]+)-box-warning-strong-inverse-hover(?![a-zA-Z0-9-])': 'tw-$1-warning-on-warning',
    'tw-([^-]+)-box-warning-strong-inverse-pressed(?![a-zA-Z0-9-])': 'tw-$1-warning-on-warning',
    'tw-([^-]+)-focus-shadow(?![a-zA-Z0-9-])': 'tw-$1-focus',
    'tw-([^-]+)-line(?![a-zA-Z0-9-])': 'tw-$1-line-mid',
    'tw-([^-]+)-line-weak(?![a-zA-Z0-9-])': 'tw-$1-line-subtle',
    'tw-([^-]+)-line-strong(?![a-zA-Z0-9-])': 'tw-$1-line-strong',
    'tw-([^-]+)-line-x-strong(?![a-zA-Z0-9-])': 'tw-$1-line-strong',
    'tw-([^-]+)-line-xx-strong(?![a-zA-Z0-9-])': 'tw-$1-line-strong',
    'tw-([^-]+)-line-mighty(?![a-zA-Z0-9-])': 'tw-$1-line-mid',
    'tw-([^-]+)-overlay-shadow(?![a-zA-Z0-9-])': 'tw-$1-overlay',
    'tw-([^-]+)-shadow-shadow(?![a-zA-Z0-9-])': 'tw-$1-shadow',
    'tw-([^-]+)-text(?![a-zA-Z0-9-])': 'tw-$1-primary',
    'tw-([^-]+)-text-hover(?![a-zA-Z0-9-])': 'tw-$1-primary-hover',
    'tw-([^-]+)-text-pressed(?![a-zA-Z0-9-])': 'tw-$1-primary-active',
    'tw-([^-]+)-text-weak(?![a-zA-Z0-9-])': 'tw-$1-secondary',
    'tw-([^-]+)-text-weak-hover(?![a-zA-Z0-9-])': 'tw-$1-secondary-hover',
    'tw-([^-]+)-text-weak-pressed(?![a-zA-Z0-9-])': 'tw-$1-secondary-active',
    'tw-([^-]+)-text-x-weak(?![a-zA-Z0-9-])': 'tw-$1-secondary',
    'tw-([^-]+)-text-disabled(?![a-zA-Z0-9-])': 'tw-$1-disabled',
    'tw-([^-]+)-text-negative(?![a-zA-Z0-9-])': 'tw-$1-error',
    'tw-([^-]+)-text-negative-hover(?![a-zA-Z0-9-])': 'tw-$1-error-hover',
    'tw-([^-]+)-text-negative-pressed(?![a-zA-Z0-9-])': 'tw-$1-error-active',
    'tw-([^-]+)-text-positive(?![a-zA-Z0-9-])': 'tw-$1-success',
    'tw-([^-]+)-text-positive-hover(?![a-zA-Z0-9-])': 'tw-$1-success-hover',
    'tw-([^-]+)-text-positive-pressed(?![a-zA-Z0-9-])': 'tw-$1-success-active',
    'tw-([^-]+)-text-warning(?![a-zA-Z0-9-])': 'tw-$1-warning',
    'tw-([^-]+)-text-warning-hover(?![a-zA-Z0-9-])': 'tw-$1-warning-hover',
    'tw-([^-]+)-text-warning-pressed(?![a-zA-Z0-9-])': 'tw-$1-warning-active',
    'tw-([^-]+)-text-interactive(?![a-zA-Z0-9-])': 'tw-$1-highlight',
    'tw-([^-]+)-text-interactive-hover(?![a-zA-Z0-9-])': 'tw-$1-highlight-hover',
    'tw-([^-]+)-text-interactive-pressed(?![a-zA-Z0-9-])': 'tw-$1-highlight-active',
    'tw-([^-]+)-button-background(?![a-zA-Z0-9-])': 'tw-$1-container-secondary',
    'tw-([^-]+)-button-background-hover(?![a-zA-Z0-9-])': 'tw-$1-container-secondary-hover',
    'tw-([^-]+)-button-background-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-secondary-active',
    'tw-([^-]+)-button-text(?![a-zA-Z0-9-])': 'tw-$1-primary',
    'tw-([^-]+)-button-icon(?![a-zA-Z0-9-])': 'tw-$1-primary',
    'tw-([^-]+)-button-border(?![a-zA-Z0-9-])': 'tw-$1-primary',
    'tw-([^-]+)-button-negative-background(?![a-zA-Z0-9-])': 'tw-$1-container-error',
    'tw-([^-]+)-button-negative-background-hover(?![a-zA-Z0-9-])': 'tw-$1-container-error-hover',
    'tw-([^-]+)-button-negative-background-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-error-active',
    'tw-([^-]+)-button-negative-text(?![a-zA-Z0-9-])': 'tw-$1-container-error-on-error-container',
    'tw-([^-]+)-button-negative-icon(?![a-zA-Z0-9-])': 'tw-$1-container-error-on-error-container',
    'tw-([^-]+)-button-positive-background(?![a-zA-Z0-9-])': 'tw-$1-container-success',
    'tw-([^-]+)-button-positive-background-hover(?![a-zA-Z0-9-])': 'tw-$1-container-success-hover',
    'tw-([^-]+)-button-positive-background-pressed(?![a-zA-Z0-9-])': 'tw-$1-container-success-active',
    'tw-([^-]+)-button-positive-text(?![a-zA-Z0-9-])': 'tw-$1-container-success-on-success-container',
    'tw-([^-]+)-button-positive-icon(?![a-zA-Z0-9-])': 'tw-$1-container-success-on-success-container',
    'tw-([^-]+)-button-strong-background(?![a-zA-Z0-9-])': 'tw-$1-primary',
    'tw-([^-]+)-button-strong-background-hover(?![a-zA-Z0-9-])': 'tw-$1-primary-hover',
    'tw-([^-]+)-button-strong-background-pressed(?![a-zA-Z0-9-])': 'tw-$1-primary-active',
    'tw-([^-]+)-button-strong-text(?![a-zA-Z0-9-])': 'tw-$1-primary-on-primary',
    'tw-([^-]+)-button-strong-icon(?![a-zA-Z0-9-])': 'tw-$1-primary-on-primary',
    'tw-([^-]+)-button-strong-negative-background(?![a-zA-Z0-9-])': 'tw-$1-error',
    'tw-([^-]+)-button-strong-negative-background-hover(?![a-zA-Z0-9-])': 'tw-$1-error-hover',
    'tw-([^-]+)-button-strong-negative-background-pressed(?![a-zA-Z0-9-])': 'tw-$1-error-active',
    'tw-([^-]+)-button-strong-negative-text(?![a-zA-Z0-9-])': 'tw-$1-error-on-error',
    'tw-([^-]+)-button-strong-negative-icon(?![a-zA-Z0-9-])': 'tw-$1-error-on-error',
    'tw-([^-]+)-button-strong-positive-background(?![a-zA-Z0-9-])': 'tw-$1-success',
    'tw-([^-]+)-button-strong-positive-background-hover(?![a-zA-Z0-9-])': 'tw-$1-success-hover',
    'tw-([^-]+)-button-strong-positive-background-pressed(?![a-zA-Z0-9-])': 'tw-$1-success-active',
    'tw-([^-]+)-button-strong-positive-text(?![a-zA-Z0-9-])': 'tw-$1-success-on-success',
    'tw-([^-]+)-button-strong-positive-icon(?![a-zA-Z0-9-])': 'tw-$1-success-on-success',
    'tw-([^-]+)-button-danger-background(?![a-zA-Z0-9-])': 'tw-$1-error',
    'tw-([^-]+)-button-danger-background-hover(?![a-zA-Z0-9-])': 'tw-$1-error-hover',
    'tw-([^-]+)-button-danger-background-pressed(?![a-zA-Z0-9-])': 'tw-$1-error-active',
    'tw-([^-]+)-button-danger-text(?![a-zA-Z0-9-])': 'tw-$1-error-on-error',
    'tw-([^-]+)-button-danger-icon(?![a-zA-Z0-9-])': 'tw-$1-error-on-error',
};

const tailwindTokenReplacements = {
    // fontSize
    'tw-text-body-x-small(?![a-zA-Z0-9-])': 'tw-text-x-small',
    'tw-text-body-small(?![a-zA-Z0-9-])': 'tw-text-small',
    'tw-text-body-medium(?![a-zA-Z0-9-])': 'tw-text-medium',
    'tw-text-body-large(?![a-zA-Z0-9-])': 'tw-text-large',
    'tw-text-code-small(?![a-zA-Z0-9-])': 'tw-text-small',
    'tw-text-code-medium(?![a-zA-Z0-9-])': 'tw-text-medium',
    'tw-text-code-large(?![a-zA-Z0-9-])': 'tw-text-large',

    // new named token key in the new `fontSize` config using the variable lookup method.
    'tw-text-heading-medium(?![a-zA-Z0-9-])': 'tw-text-medium', // Note: new 'medium' fontSize is used for old 'heading-medium'
    'tw-text-heading-large(?![a-zA-Z0-9-])': 'tw-text-large', // Note: new 'large' fontSize is used for old 'heading-large'
    'tw-text-heading-x-large(?![a-zA-Z0-9-])': 'tw-text-x-large',
    'tw-text-heading-xx-large(?![a-zA-Z0-9-])': 'tw-text-xx-large',

    // fontFamily
    'tw-font-body(?![a-zA-Z0-9-])': 'tw-font-primary',
    'tw-font-body--stack(?![a-zA-Z0-9-])': 'tw-font-primary', // (via --body-family-stack -> --body-family -> new primary)
    'tw-font-code(?![a-zA-Z0-9-])': 'tw-font-monospace', // Assuming --typography-font-family-monoe in CSS map meant --typography-font-family-monospace
    'tw-font-code--stack(?![a-zA-Z0-9-])': 'tw-font-monospace',
    'tw-font-heading(?![a-zA-Z0-9-])': 'tw-font-primary',
    'tw-font-heading--stack(?![a-zA-Z0-9-])': 'tw-font-primary',

    // boxShadow (Only for direct var-to-var mappings)
    'tw-shadow-matrix(?![a-zA-Z0-9-])': 'tw-shadow',
    'tw-shadow-top-matrix(?![a-zA-Z0-9-])': 'tw-shadow',
    'tw-shadow-bottom-matrix(?![a-zA-Z0-9-])': 'tw-shadow',
    'tw-shadow-large-matrix(?![a-zA-Z0-9-])': 'tw-shadow-large',

    // borderWidth
    'tw-border-width(?![a-zA-Z0-9-])': 'tw-border-width-medium',
    'tw-border-width-large(?![a-zA-Z0-9-])': 'tw-border-width-large',

    // outline
    'tw-outline-violet(?![a-zA-Z0-9-])': 'tw-outline',
    'tw-outline-blue(?![a-zA-Z0-9-])': 'tw-outline',

    // borderRadius
    'tw-rounded(?![a-zA-Z0-9-])': 'tw-rounded-medium', // Old DEFAULT (var(--radius)) maps to new borderRadius.medium (var(--border-radius-medium))
    'tw-rounded-small(?![a-zA-Z0-9-])': 'tw-rounded-small',
    'tw-rounded-large(?![a-zA-Z0-9-])': 'tw-rounded-large',
    'tw-rounded-x-large(?![a-zA-Z0-9-])': 'tw-rounded-x-large',

    // spacing
    'tw-([^-]+)-xxs(?![a-zA-Z0-9-])': 'tw-$1-xx-small',
    'tw-([^-]+)-xs(?![a-zA-Z0-9-])': 'tw-$1-x-small',
    'tw-([^-]+)-s(?![a-zA-Z0-9-])': 'tw-$1-small',
    'tw-([^-]+)-m(?![a-zA-Z0-9-])': 'tw-$1-medium',
    'tw-([^-]+)-xl(?![a-zA-Z0-9-])': 'tw-$1-x-large',
    'tw-([^-]+)-xxl(?![a-zA-Z0-9-])': 'tw-$1-xx-large',
};

export const tailwindClassReplacements = {
    ...tailwindColorReplacements,
    ...tailwindTokenReplacements,
};
