{"version":3,"file":"core.dev.cjs","sources":["../src/runtime.ts","../src/internal/to-class-name.ts","../src/internal/format.ts","../src/utils.ts","../src/internal/precedence.ts","../src/internal/registry.ts","../src/internal/stringify.ts","../src/internal/sorted-insertion-index.ts","../src/colors.ts","../src/internal/serialize.ts","../src/internal/merge.ts","../src/internal/translate.ts","../src/internal/define.ts","../src/parse.ts","../src/internal/interleave.ts","../src/internal/interpolate.ts","../src/alias.ts","../src/internal/astish.ts","../src/css.ts","../src/animation.ts","../src/rules.ts","../src/autocomplete.ts","../src/define-config.ts","../src/internal/warn.ts","../src/internal/context.ts","../src/twind.ts","../src/internal/theme.ts","../src/internal/changed.ts","../src/observe.ts","../src/sheets.ts","../src/keyframes.ts","../src/ssr.ts","../src/internal/parse-html.ts","../src/style.ts","../src/cx.ts","../src/inject-global.ts","../src/install.ts","../src/tx.ts"],"sourcesContent":["import type {\n  Twind,\n  BaseTheme,\n  TwindConfig,\n  Sheet,\n  TwindUserConfig,\n  ExtractThemes,\n  Preset,\n} from './types'\n\nimport { twind } from './twind'\nimport { observe } from './observe'\nimport { getSheet } from './sheets'\nimport { noop } from './utils'\nimport { DEV } from 'distilt/env'\n\n/**\n * @group Runtime\n * @param install\n * @returns\n */\nexport function auto(install: () => void): () => void {\n  // If we run in the browser we call install at latest when the body is inserted\n  // This algorith works well for _normal_ scripts (`<script src=\"...\"></script>`)\n  // but not for modules because those are executed __after__ the DOM is ready\n  // and we would have FOUC\n  if (typeof document != 'undefined' && document.currentScript) {\n    const cancelAutoInstall = () => observer.disconnect()\n\n    const observer: MutationObserver = new MutationObserver((mutationsList) => {\n      for (const { target } of mutationsList) {\n        // If we reach the body we immediately run the install to prevent FOUC\n        if (target === document.body) {\n          install()\n          return cancelAutoInstall()\n        }\n      }\n    })\n\n    observer.observe(document.documentElement, {\n      childList: true,\n      subtree: true,\n    })\n\n    return cancelAutoInstall\n  }\n\n  return noop\n}\n\nlet active: Twind\n\nfunction assertActive() {\n  if (DEV && !active) {\n    throw new Error(\n      `No active twind instance found. Make sure to call setup or install before accessing tw.`,\n    )\n  }\n}\n\n/**\n * A proxy to the currently active Twind instance.\n * @group Style Injectors\n */\nexport const tw: Twind<any, any> = /* #__PURE__ */ new Proxy(\n  // just exposing the active as tw should work with most bundlers\n  // as ES module export can be re-assigned BUT some bundlers to not honor this\n  // -> using a delegation proxy here\n  noop as unknown as Twind<any, any>,\n  {\n    apply(_target, _thisArg, args) {\n      if (DEV) assertActive()\n\n      return active(args[0])\n    },\n    get(target, property) {\n      if (DEV) {\n        // Workaround webpack accessing the prototype in dev mode\n        if (!active && property in target) {\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n          return (target as any)[property]\n        }\n\n        assertActive()\n      }\n\n      const value = active[property as keyof Twind]\n\n      if (typeof value === 'function') {\n        return function () {\n          if (DEV) assertActive()\n\n          // eslint-disable-next-line prefer-rest-params\n          return value.apply(active, arguments)\n        }\n      }\n\n      return value\n    },\n  },\n)\n\nexport type SheetFactory<SheetTarget = unknown> = () => Sheet<SheetTarget>\n\n/**\n * Manages a single Twind instance — works in browser, Node.js, Deno, workers...\n *\n * @group Runtime\n * @param config\n * @param sheet\n * @param target\n * @returns\n */\nexport function setup<Theme extends BaseTheme = BaseTheme, SheetTarget = unknown>(\n  config?: TwindConfig<Theme>,\n  sheet?: Sheet<SheetTarget> | SheetFactory<SheetTarget>,\n  target?: HTMLElement,\n): Twind<Theme, SheetTarget>\n\nexport function setup<\n  Theme = BaseTheme,\n  Presets extends Preset<any>[] = Preset[],\n  SheetTarget = unknown,\n>(\n  config?: TwindUserConfig<Theme, Presets>,\n  sheet?: Sheet<SheetTarget> | SheetFactory<SheetTarget>,\n  target?: HTMLElement,\n): Twind<BaseTheme & ExtractThemes<Theme, Presets>, SheetTarget>\n\nexport function setup<Theme extends BaseTheme = BaseTheme, SheetTarget = unknown>(\n  config: TwindConfig<any> | TwindUserConfig<any> = {},\n  sheet: Sheet<SheetTarget> | SheetFactory<SheetTarget> = getSheet as SheetFactory<SheetTarget>,\n  target?: HTMLElement,\n): Twind<Theme, SheetTarget> {\n  active?.destroy()\n\n  active = observe(\n    twind(config as TwindUserConfig, typeof sheet == 'function' ? sheet() : sheet),\n    target,\n  )\n\n  return active as unknown as Twind<Theme, SheetTarget>\n}\n","import type { ParsedRule } from '../parse'\n\nexport function toClassName(rule: ParsedRule): string {\n  return [...rule.v, (rule.i ? '!' : '') + rule.n].join(':')\n}\n","import type { ParsedRule } from '../parse'\nimport { toClassName } from './to-class-name'\n\nexport function format(rules: ParsedRule[], seperator = ','): string {\n  return rules.map(toClassName).join(seperator)\n}\n","import type { MaybeArray, ScreenValue } from './types'\n\n/**\n * @internal\n */\nexport const escape =\n  (typeof CSS !== 'undefined' && CSS.escape) ||\n  // Simplified: escaping only special characters\n  // Needed for NodeJS and Edge <79 (https://caniuse.com/mdn-api_css_escape)\n  ((className: string): string =>\n    className\n      // Simplifed escape testing only for chars that we know happen to be in tailwind directives\n      .replace(/[!\"'`*+.,;:\\\\/<=>?@#$%&^|~()[\\]{}]/g, '\\\\$&')\n      // If the character is the first character and is in the range [0-9] (2xl, ...)\n      // https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n      .replace(/^\\d/, '\\\\3$& '))\n\n// Based on https://stackoverflow.com/a/52171480\n/**\n * @group Configuration\n * @param value\n * @returns\n */\nexport function hash(value: string): string {\n  // eslint-disable-next-line no-var\n  for (var h = 9, index = value.length; index--; ) {\n    h = Math.imul(h ^ value.charCodeAt(index), 0x5f356495)\n  }\n\n  return '#' + ((h ^ (h >>> 9)) >>> 0).toString(36)\n}\n\n/**\n * @internal\n * @param screen\n * @param prefix\n * @returns\n */\nexport function mql(screen: MaybeArray<ScreenValue>, prefix = '@media '): string {\n  return (\n    prefix +\n    asArray(screen)\n      .map((screen) => {\n        if (typeof screen == 'string') {\n          screen = { min: screen }\n        }\n\n        return (\n          (screen as { raw?: string }).raw ||\n          Object.keys(screen)\n            .map((feature) => `(${feature}-width:${(screen as Record<string, string>)[feature]})`)\n            .join(' and ')\n        )\n      })\n      .join(',')\n  )\n}\n\n/**\n * @internal\n * @param value\n * @returns\n */\nexport function asArray<T>(value: T = [] as unknown as T): T extends Array<any> ? T : T[] {\n  return (Array.isArray(value) ? value : value == null ? [] : [value]) as T extends Array<any>\n    ? T\n    : T[]\n}\n\n/**\n * @internal\n * @param value\n * @returns\n */\nexport function identity<T>(value: T): T {\n  return value\n}\n\n/**\n * @internal\n */\nexport function noop(): void {\n  // no-op\n}\n","import type { BaseTheme, Context } from '../types'\nimport type { ParsedRule } from '../parse'\nimport { asArray, mql } from '../utils'\nimport { toClassName } from './to-class-name'\n\n// Based on https://github.com/kripod/otion\n// License MIT\n\n// export const enum Shifts {\n//   darkMode = 30,\n//   layer = 27,\n//   screens = 26,\n//   responsive = 22,\n//   atRules = 18,\n//   variants = 0,\n// }\n\nexport const Layer = {\n  /**\n   * 1. `default` (public)\n   */\n  d /* efaults */: 0b000 << 27 /* Shifts.layer */,\n\n  /**\n   * 2. `base` (public) — for things like reset rules or default styles applied to plain HTML elements.\n   */\n  b /* ase */: 0b001 << 27 /* Shifts.layer */,\n\n  /**\n   * 3. `components` (public, used by `style()`) — is for class-based styles that you want to be able to override with utilities.\n   */\n  c /* omponents */: 0b010 << 27 /* Shifts.layer */,\n  // reserved for style():\n  // - props: 0b011\n  // - when: 0b100\n\n  /**\n   * 6. `aliases` (public, used by `apply()`) — `~(...)`\n   */\n  a /* liases */: 0b101 << 27 /* Shifts.layer */,\n\n  /**\n   * 6. `utilities` (public) — for small, single-purpose classes\n   */\n  u /* tilities */: 0b110 << 27 /* Shifts.layer */,\n\n  /**\n   * 7. `overrides` (public, used by `css()`)\n   */\n  o /* verrides */: 0b111 << 27 /* Shifts.layer */,\n} as const\n\n/*\nTo have a predictable styling the styles must be ordered.\n\nThis order is represented by a precedence number. The lower values\nare inserted before higher values. Meaning higher precedence styles\noverwrite lower precedence styles.\n\nEach rule has some traits that are put into a bit set which form\nthe precedence:\n\n| bits | trait                                                |\n| ---- | ---------------------------------------------------- |\n| 1    | dark mode                                            |\n| 2    | layer: preflight, global, components, utilities, css |\n| 1    | screens: is this a responsive variation of a rule    |\n| 5    | responsive based on min-width                        |\n| 4    | at-rules                                             |\n| 18   | pseudo and group variants                            |\n| 4    | number of declarations (descending)                  |\n| 4    | greatest precedence of properties                    |\n\n**Dark Mode: 1 bit**\n\nFlag for dark mode rules.\n\n**Layer: 3 bits**\n\n- defaults = 0: The preflight styles and any base styles registered by plugins.\n- base = 1: The global styles registered by plugins.\n- components = 2\n- variants = 3\n- compounds = 4\n- aliases = 5\n- utilities = 6: Utility classes and any utility classes registered by plugins.\n- css = 7: Styles generated by css\n\n**Screens: 1 bit**\n\nFlag for screen variants. They may not always have a `min-width` to be detected by _Responsive_ below.\n\n**Responsive: 4 bits**\n\nBased on extracted `min-width` value:\n\n- 576px -> 3\n- 1536px -> 10\n- 36rem -> 3\n- 96rem -> 9\n\n**At-Rules: 4 bits**\n\nBased on the count of special chars (`-:,`) within the at-rule.\n\n**Pseudo and group variants: 18 bits**\n\nEnsures predictable order of pseudo classes.\n\n- https://bitsofco.de/when-do-the-hover-focus-and-active-pseudo-classes-apply/#orderofstyleshoverthenfocusthenactive\n- https://developer.mozilla.org/docs/Web/CSS/:active#Active_links\n- https://github.com/tailwindlabs/tailwindcss/blob/master/stubs/defaultConfig.stub.js#L718\n\n**Number of declarations (descending): 4 bits**\n\nAllows single declaration styles to overwrite styles from multi declaration styles.\n\n**Greatest precedence of properties: 4 bits**\n\nEnsure shorthand properties are inserted before longhand properties; eg longhand override shorthand\n*/\n\nexport function moveToLayer(precedence: number, layer: number): number {\n  // Set layer (first reset, than set)\n  return (precedence & ~Layer.o) | layer\n}\n\n/*\nTo set a bit: n |= mask;\nTo clear a bit: n &= ~mask;\nTo test if a bit is set: (n & mask)\n\nBit shifts for the primary bits:\n\n| bits | trait                                                   | shift |\n| ---- | ------------------------------------------------------- | ----- |\n| 1    | dark mode                                               | 30    |\n| 3    | layer: preflight, global, components, utilities, css    | 27    |\n| 1    | screens: is this a responsive variation of a rule       | 26    |\n| 4    | responsive based on min-width, max-width or width       | 22    |\n| 4    | at-rules                                                | 18    |\n| 18   | pseudo and group variants                               | 0     |\n\nLayer: 0 - 7: 3 bits\n  - defaults: 0 << 27\n  - base: 1 << 27\n  - components: 2 << 27\n  - variants: 3 << 27\n  - joints: 4 << 27\n  - aliases: 5 << 27\n  - utilities: 6 << 27\n  - overrides: 7 << 27\n\nThese are calculated by serialize and added afterwards:\n\n| bits | trait                               |\n| ---- | ----------------------------------- |\n| 4    | number of selectors (descending)    |\n| 4    | number of declarations (descending) |\n| 4    | greatest precedence of properties   |\n\nThese are added by shifting the primary bits using multiplication as js only\nsupports bit shift up to 32 bits.\n*/\n\n// Colon and dash count of string (ascending)\nexport function seperatorPrecedence(string: string): number {\n  return string.match(/[-=:;]/g)?.length || 0\n}\n\nexport function atRulePrecedence(css: string): number {\n  // 0 - 15: 4 bits (max 144rem or 2304px)\n  // rem -> bit\n  // <20 ->  0 (<320px)\n  //  20 ->  1 (320px)\n  //  24 ->  2 (384px)\n  //  28 ->  3 (448px)\n  //  32 ->  4 (512px)\n  //  36 ->  5 (576px)\n  //  42 ->  6 (672px)\n  //  48 ->  7 (768px)\n  //  56 ->  8 (896px)\n  //  64 ->  9 (1024px)\n  //  72 -> 10 (1152px)\n  //  80 -> 11 (1280px)\n  //  96 -> 12 (1536px)\n  // 112 -> 13 (1792px)\n  // 128 -> 14 (2048px)\n  // 144 -> 15 (2304px)\n  // https://www.dcode.fr/function-equation-finder\n  return (\n    (Math.min(\n      /(?:^|width[^\\d]+)(\\d+(?:.\\d+)?)(p)?/.test(css)\n        ? Math.max(0, 29.63 * (+RegExp.$1 / (RegExp.$2 ? 15 : 1)) ** 0.137 - 43)\n        : 0,\n      15,\n    ) <<\n      22) /* Shifts.responsive */ |\n    (Math.min(seperatorPrecedence(css), 15) << 18) /* Shifts.atRules */\n  )\n}\n\n// Pesudo variant presedence\n// Chars 3 - 8: Uniquely identifies a pseudo selector\n// represented as a bit set for each relevant value\n// 18 bits: one for each variant plus one for unknown variants\n//\n// ':group-*' variants are normalized to their native pseudo class (':group-hover' -> ':hover')\n// as they already have a higher selector presedence due to the add '.group' ('.group:hover .group-hover:...')\n\n// Sources:\n// - https://bitsofco.de/when-do-the-hover-focus-and-active-pseudo-classes-apply/#orderofstyleshoverthenfocusthenactive\n// - https://developer.mozilla.org/docs/Web/CSS/:active#Active_links\n// - https://github.com/tailwindlabs/tailwindcss/blob/master/stubs/defaultConfig.stub.js#L931\n\nconst PRECEDENCES_BY_PSEUDO_CLASS = [\n  /* fi */ 'rst-c' /* hild: 0 */,\n  /* la */ 'st-ch' /* ild: 1 */,\n  // even and odd use: nth-child\n  /* nt */ 'h-chi' /* ld: 2 */,\n  /* an */ 'y-lin' /* k: 3 */,\n  /* li */ 'nk' /* : 4 */,\n  /* vi */ 'sited' /* : 5 */,\n  /* ch */ 'ecked' /* : 6 */,\n  /* em */ 'pty' /* : 7 */,\n  /* re */ 'ad-on' /* ly: 8 */,\n  /* fo */ 'cus-w' /* ithin : 9 */,\n  /* ho */ 'ver' /* : 10 */,\n  /* fo */ 'cus' /* : 11 */,\n  /* fo */ 'cus-v' /* isible : 12 */,\n  /* ac */ 'tive' /* : 13 */,\n  /* di */ 'sable' /* d : 14 */,\n  /* op */ 'tiona' /* l: 15 */,\n  /* re */ 'quire' /* d: 16 */,\n]\n\nfunction pseudoPrecedence(selector: string): number {\n  // use first found pseudo-class\n\n  return (\n    1 <<\n    ~(\n      (/:([a-z-]+)/.test(selector) &&\n        ~PRECEDENCES_BY_PSEUDO_CLASS.indexOf(RegExp.$1.slice(2, 7))) ||\n      ~17\n    )\n  )\n}\n\n// https://github.com/kripod/otion/blob/main/packages/otion/src/propertyMatchers.ts\n// \"+1\": [\n// \t/* ^border-.*(w|c|sty) */\n// \t\"border-.*(width,color,style)\",\n\n// \t/* ^[tlbr].{2,4}m?$ */\n// \t\"top\",\n// \t\"left\",\n// \t\"bottom\",\n// \t\"right\",\n\n// \t/* ^c.{7}$ */\n// \t\"continue\",\n\n// \t/* ^c.{8}$ */\n// \t\"container\",\n// ],\n\n// \"-1\": [\n// \t/* ^[fl].{5}l */\n// \t\"flex-flow\",\n// \t\"line-clamp\",\n\n// \t/* ^g.{8}$ */\n// \t\"grid-area\",\n\n// \t/* ^pl */\n// \t\"place-content\",\n// \t\"place-items\",\n// \t\"place-self\",\n\n// ],\n\n// group: 1 => +1\n// group: 2 => -1\n\n// 0 - 15 => 4 bits\n// Ignore vendor prefixed and custom properties\nexport function declarationPropertyPrecedence(property: string): number {\n  return property[0] == '-'\n    ? 0\n    : seperatorPrecedence(property) +\n        (/^(?:(border-(?!w|c|sty)|[tlbr].{2,4}m?$|c.{7,8}$)|([fl].{5}l|g.{8}$|pl))/.test(property)\n          ? +!!RegExp.$1 /* +1 */ || -!!RegExp.$2 /* -1 */\n          : 0) +\n        1\n}\n\nexport interface ConvertedRule {\n  /** The name to use for `&` expansion in selectors. Maybe empty for at-rules like `@import`, `@font-face`, `@media`, ... */\n  n?: string | undefined\n\n  /** The calculated precedence taking all variants into account. */\n  p: number\n\n  /** The rulesets (selectors and at-rules). expanded variants `@media ...`, `@supports ...`, `&:focus`, `.dark &` */\n  r?: string[]\n\n  /** Is this rule `!important` eg something like `!underline` or `!bg-red-500` or `!red-500` */\n  i?: boolean | undefined\n}\n\nexport function convert<Theme extends BaseTheme = BaseTheme>(\n  { n: name, i: important, v: variants = [] }: Partial<ParsedRule>,\n  context: Context<Theme>,\n  precedence: number,\n  conditions?: string[],\n): ConvertedRule {\n  if (name) {\n    name = toClassName({ n: name, i: important, v: variants })\n  }\n\n  conditions = [...asArray(conditions)]\n\n  for (const variant of variants) {\n    const screen = context.theme('screens', variant)\n\n    for (const condition of asArray((screen && mql(screen)) || context.v(variant))) {\n      conditions.push(condition)\n\n      precedence |= screen\n        ? (1 << 26) /* Shifts.screens */ | atRulePrecedence(condition)\n        : variant == 'dark'\n        ? 1 << 30 /* Shifts.darkMode */\n        : condition[0] == '@'\n        ? atRulePrecedence(condition)\n        : pseudoPrecedence(condition)\n    }\n  }\n\n  return { n: name, p: precedence, r: conditions, i: important }\n}\n","import type { BaseTheme, Context, Falsey, RuleResult, TwindRule } from '../types'\nimport type { ParsedRule } from '../parse'\n\nconst registry = new Map<string, RegisterCallback>()\n\nexport type RegisterCallback = (rule: ParsedRule, context: Context) => Falsey | TwindRule[]\n\nexport function register(className: string, factory: RegisterCallback): string {\n  registry.set(className, factory)\n  return className\n}\n\nexport function resolve<Theme extends BaseTheme = BaseTheme>(\n  rule: ParsedRule,\n  context: Context<Theme>,\n): RuleResult | TwindRule[] {\n  const factory = registry.get(rule.n)\n\n  return factory ? factory(rule, context as any) : context.r(rule.n, rule.v[0] == 'dark')\n}\n","import type { TwindRule } from '../types'\nimport { escape } from '../utils'\n\nexport function stringify(rule: TwindRule): string | undefined {\n  if (rule.d) {\n    const groups: string[] = []\n\n    const selector = replaceEach(\n      // merge all conditions into a selector string\n      rule.r.reduce((selector, condition) => {\n        if (condition[0] == '@') {\n          groups.push(condition)\n          return selector\n        }\n\n        // Go over the selector and replace the matching multiple selectors if any\n        return condition ? merge(selector, condition) : selector\n      }, '&'),\n      // replace '&' with rule name or an empty string\n      (selectorPart) => replaceReference(selectorPart, rule.n ? '.' + escape(rule.n) : ''),\n    )\n\n    if (selector) {\n      groups.push(selector.replace(/:merge\\((.+?)\\)/g, '$1'))\n    }\n\n    return groups.reduceRight((body, grouping) => grouping + '{' + body + '}', rule.d)\n  }\n}\n\nfunction replaceEach(selector: string, iteratee: (selectorPart: string) => string): string {\n  return selector.replace(\n    / *((?:\\(.+?\\)|\\[.+?\\]|[^,])+) *(,|$)/g,\n    (_, selectorPart: string, comma: string) => iteratee(selectorPart) + comma,\n  )\n}\n\nfunction replaceReference(selector: string, reference: string): string {\n  return selector.replace(/&/g, reference)\n}\n\nfunction merge(selector: string, condition: string): string {\n  return replaceEach(selector, (selectorPart) =>\n    replaceEach(\n      condition,\n      // If the current condition has a nested selector replace it\n      (conditionPart) => {\n        const mergeMatch = /(:merge\\(.+?\\))(:[a-z-]+|\\\\[.+])/.exec(conditionPart)\n\n        if (mergeMatch) {\n          const selectorIndex = selectorPart.indexOf(mergeMatch[1])\n\n          if (~selectorIndex) {\n            // [':merge(.group):hover .rule', ':merge(.group):focus &'] -> ':merge(.group):focus:hover .rule'\n            // ':merge(.group)' + ':focus' + ':hover .rule'\n            return (\n              selectorPart.slice(0, selectorIndex) +\n              mergeMatch[0] +\n              selectorPart.slice(selectorIndex + mergeMatch[1].length)\n            )\n          }\n\n          // [':merge(.peer):focus~&', ':merge(.group):hover &'] -> ':merge(.peer):focus~:merge(.group):hover &'\n          return replaceReference(selectorPart, conditionPart)\n        }\n\n        // Return the current selector with the key matching multiple selectors if any\n        return replaceReference(conditionPart, selectorPart)\n      },\n    ),\n  )\n}\n","import { Layer } from './precedence'\n\nconst collator = new Intl.Collator('en', { numeric: true })\n\nexport interface SortableRule {\n  /** The calculated precedence taking all variants into account. */\n  p: number\n\n  /* The precedence of the properties within {@link d}. */\n  o: number\n\n  /** The name to use for `&` expansion in selectors. Maybe empty for at-rules like `@import`, `@font-face`, `@media`, ... */\n  n?: string | null\n}\n\n/**\n * Find the array index of where to add an element to keep it sorted.\n *\n * @returns The insertion index\n */\nexport function sortedInsertionIndex(\n  array: readonly SortableRule[],\n  element: SortableRule,\n): number {\n  // Find position using binary search\n  // eslint-disable-next-line no-var\n  for (var low = 0, high = array.length; low < high; ) {\n    const pivot = (high + low) >> 1\n\n    // Less-Then-Equal to add new equal element after all existing equal elements (stable sort)\n    if (compareTwindRules(array[pivot], element) <= 0) {\n      low = pivot + 1\n    } else {\n      high = pivot\n    }\n  }\n\n  return high\n}\n\nexport function compareTwindRules(a: SortableRule, b: SortableRule): number {\n  // base and overrides (css) layers are kept in order they are declared\n  const layer = a.p & Layer.o\n\n  if (layer == (b.p & Layer.o) && (layer == Layer.b || layer == Layer.o)) {\n    return 0\n  }\n\n  return (\n    a.p - b.p ||\n    a.o - b.o ||\n    collator.compare(byModifier(a.n), byModifier(b.n)) ||\n    collator.compare(byName(a.n), byName(b.n))\n  )\n}\n\nfunction byModifier(s: string | null | undefined) {\n  return ((s || '').split(/:/).pop() as string).split('/').pop() || '\\x00'\n}\n\nfunction byName(s: string | null | undefined) {\n  return (s || '').replace(/\\W/g, (c) => String.fromCharCode(127 + c.charCodeAt(0))) + '\\x00'\n}\n","import type { ColorValue, ColorFunctionOptions, Context, Falsey } from './types'\n\nfunction parseColorComponent(chars: string, factor: number): number {\n  return Math.round(parseInt(chars, 16) * factor)\n}\n\n/**\n * @internal\n * @param color\n * @param options\n * @returns\n */\nexport function toColorValue(color: ColorValue, options: ColorFunctionOptions = {}): string {\n  if (typeof color == 'function') {\n    return color(options)\n  }\n\n  const { opacityValue = '1', opacityVariable } = options\n  const opacity = opacityVariable ? `var(${opacityVariable})` : opacityValue\n\n  if (color.includes('<alpha-value>')) {\n    return color.replace('<alpha-value>', opacity)\n  }\n\n  // rgb hex: #0123 and #001122\n  if (color[0] == '#' && (color.length == 4 || color.length == 7)) {\n    const size = (color.length - 1) / 3\n    const factor = [17, 1, 0.062272][size - 1]\n\n    return `rgba(${[\n      parseColorComponent(color.substr(1, size), factor),\n      parseColorComponent(color.substr(1 + size, size), factor),\n      parseColorComponent(color.substr(1 + 2 * size, size), factor),\n      opacity,\n    ]})`\n  }\n\n  if (opacity == '1') return color\n  if (opacity == '0') return '#0000'\n\n  // convert rgb and hsl to alpha variant\n  return color.replace(/^(rgb|hsl)(\\([^)]+)\\)$/, `$1a$2,${opacity})`)\n}\n\n/**\n * Looks for a matching dark color within a [tailwind color palette](https://tailwindcss.com/docs/customizing-colors) (`50`, `100`, `200`, ..., `800`, `900`).\n *\n * ```js\n * defineConfig({\n *   darkColor: autoDarkColor,\n * })\n * ```\n *\n * **Note**: Does not work for arbitrary values like `[theme(colors.gray.500)]` or `[theme(colors.gray.500, #ccc)]`.\n *\n * @group Configuration\n * @param section within theme to use\n * @param key of the light color or an arbitrary value\n * @param context to use\n * @returns the dark color if found\n */\nexport function autoDarkColor(\n  section: string,\n  key: string,\n  { theme }: Context<any>,\n): ColorValue | Falsey {\n  // 50 -> 900, 100 -> 800, ..., 800 -> 100, 900 -> 50\n  // key: gray-50, gray.50\n  key = key.replace(\n    /\\d+$/,\n    (shade) =>\n      // ~~(parseInt(shade, 10) / 100): 50 -> 0, 900 -> 9\n      // (9 - 0) -> 900, (9 - 9) -> 50\n      ((9 - ~~(parseInt(shade, 10) / 100) || 0.5) * 100) as any,\n  )\n\n  return theme(section as 'colors', key)\n}\n","import type {\n  CSSObject,\n  Falsey,\n  Context,\n  TwindRule,\n  BaseTheme,\n  MaybeArray,\n  ColorValue,\n} from '../types'\nimport type { ParsedRule } from '../parse'\nimport type { ConvertedRule } from './precedence'\nimport { Layer, moveToLayer } from './precedence'\nimport { mql, hash, asArray } from '../utils'\n\nimport { atRulePrecedence, declarationPropertyPrecedence, convert } from './precedence'\nimport { stringify } from './stringify'\nimport { translateWith } from './translate'\nimport { parse } from '../parse'\nimport { compareTwindRules } from './sorted-insertion-index'\nimport { toColorValue } from '../colors'\n\nexport function serialize<Theme extends BaseTheme = BaseTheme>(\n  style: CSSObject | Falsey,\n  rule: Partial<ParsedRule>,\n  context: Context<Theme>,\n  precedence: number,\n  conditions: string[] = [],\n): TwindRule[] {\n  return serialize$(style, convert(rule, context, precedence, conditions), context)\n}\n\nfunction serialize$<Theme extends BaseTheme = BaseTheme>(\n  style: CSSObject | Falsey,\n  { n: name, p: precedence, r: conditions = [], i: important }: ConvertedRule,\n  context: Context<Theme>,\n): TwindRule[] {\n  const rules: TwindRule[] = []\n\n  // The generated declaration block eg body of the css rule\n  let declarations = ''\n\n  // This ensures that 'border-top-width' has a higher precedence than 'border-top'\n  let maxPropertyPrecedence = 0\n\n  // More specific utilities have less declarations and a higher precedence\n  let numberOfDeclarations = 0\n\n  for (let key in style || {}) {\n    const value = (style as Record<string, unknown>)[key]\n\n    if (key[0] == '@') {\n      // at rules: https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule\n      if (!value) continue\n\n      // @apply ...;\n      if (key[1] == 'a') {\n        rules.push(\n          ...translateWith(\n            name as string,\n            precedence,\n            parse('' + value),\n            context,\n            precedence,\n            conditions,\n            important,\n            true /* useOrderOfRules */,\n          ),\n        )\n        continue\n      }\n\n      // @layer <layer>\n      if (key[1] == 'l') {\n        for (const css of asArray(value as MaybeArray<CSSObject>)) {\n          rules.push(\n            ...serialize$(\n              css,\n              {\n                n: name,\n                p: moveToLayer(precedence, Layer[key[7] as 'b']),\n                r: key[7] == 'd' ? [] : conditions,\n                i: important,\n              },\n              context,\n            ),\n          )\n        }\n\n        continue\n      }\n\n      // @import\n      if (key[1] == 'i') {\n        rules.push(\n          ...asArray(value).map((value) => ({\n            // before all layers\n            p: -1,\n            o: 0,\n            r: [],\n            d: key + ' ' + (value as string),\n          })),\n        )\n        continue\n      }\n\n      // @keyframes\n      if (key[1] == 'k') {\n        // Use defaults layer\n        rules.push({\n          p: Layer.d,\n          o: 0,\n          r: [key],\n          d: serialize$(value as CSSObject, { p: Layer.d }, context)\n            .map(stringify)\n            .join(''),\n        })\n        continue\n      }\n\n      // @font-face\n      // TODO @font-feature-values\n      if (key[1] == 'f') {\n        // Use defaults layer\n        rules.push(\n          ...asArray(value).map((value) => ({\n            p: Layer.d,\n            o: 0,\n            r: [key],\n            d: serialize$(value as CSSObject, { p: Layer.d }, context)\n              .map(stringify)\n              .join(''),\n          })),\n        )\n        continue\n      }\n      // -> All other are handled below; same as selector\n    }\n\n    // @media\n    // @supports\n    // selector\n    if (typeof value == 'object' && !Array.isArray(value)) {\n      // at-rule or non-global selector\n      if (key[0] == '@' || key.includes('&')) {\n        let rulePrecedence = precedence\n        if (key[0] == '@') {\n          // Handle `@media screen(sm)` and `@media (screen(sm) or ...)`\n          key = key.replace(/\\bscreen\\(([^)]+)\\)/g, (_, screenKey) => {\n            const screen = context.theme('screens', screenKey)\n\n            if (screen) {\n              rulePrecedence |= 1 << 26 /* Shifts.screens */\n              return mql(screen, '')\n            }\n\n            return _\n          })\n\n          rulePrecedence |= atRulePrecedence(key)\n        }\n\n        rules.push(\n          ...serialize$(\n            value as CSSObject,\n            {\n              n: name,\n              p: rulePrecedence,\n              r: [...conditions, key],\n              i: important,\n            },\n            context,\n          ),\n        )\n      } else {\n        // global selector\n        rules.push(\n          ...serialize$(value as CSSObject, { p: precedence, r: [...conditions, key] }, context),\n        )\n      }\n    } else if (key == 'label' && value) {\n      name = (value as string) + hash(JSON.stringify([precedence, important, style]))\n    } else if (value || value === 0) {\n      // property -> hyphenate\n      key = key.replace(/[A-Z]/g, (_) => '-' + _.toLowerCase())\n\n      // Update precedence\n      numberOfDeclarations += 1\n      maxPropertyPrecedence = Math.max(maxPropertyPrecedence, declarationPropertyPrecedence(key))\n\n      declarations +=\n        (declarations ? ';' : '') +\n        asArray(value)\n          .map((value) =>\n            context.s(\n              key,\n              // support theme(...) function in values\n              // calc(100vh - theme('spacing.12'))\n              resolveThemeFunction('' + value, context.theme) + (important ? ' !important' : ''),\n            ),\n          )\n          .join(';')\n    }\n  }\n\n  // PERF: prevent unshift using `rules = [{}]` above and then `rules[0] = {...}`\n  rules.unshift({\n    n: name,\n\n    p: precedence,\n\n    o:\n      // number of declarations (descending)\n      Math.max(0, 15 - numberOfDeclarations) +\n      // greatest precedence of properties\n      // if there is no property precedence this is most likely a custom property only declaration\n      // these have the highest precedence\n      Math.min(maxPropertyPrecedence || 15, 15) * 1.5,\n\n    r: conditions,\n\n    // stringified declarations\n    d: declarations,\n  })\n\n  return rules.sort(compareTwindRules)\n}\n\nexport function resolveThemeFunction<Theme extends BaseTheme = BaseTheme>(\n  value: string,\n  theme: Context<Theme>['theme'],\n): string {\n  // support theme(...) function in values\n  // calc(100vh - theme('spacing.12'))\n  // theme('borderColor.DEFAULT', 'currentColor')\n\n  // PERF: check for theme before running the regexp\n  // if (value.includes('theme')) {\n  return value.replace(\n    /theme\\(([\"'`])?(.+?)\\1(?:\\s*,\\s*([\"'`])?(.+?)\\3)?\\)/g,\n    (_, __, key: string, ___, defaultValue = '') => {\n      const value = theme(key, defaultValue)\n\n      if (typeof value == 'function' && /color|fill|stroke/i.test(key)) {\n        return toColorValue(value as ColorValue)\n      }\n\n      return '' + asArray(value as unknown).filter((v) => Object(v) !== v)\n    },\n  )\n  // }\n\n  // return value\n}\n","import type { TwindRule } from '../types'\n\nexport function merge(rules: TwindRule[], name: string): TwindRule[] {\n  // merge:\n  // - same conditions\n  // - replace name with hash of name + condititions + declarations\n  // - precedence:\n  //   - combine bits or use max precendence\n  //   - set layer bit to merged\n  const result: TwindRule[] = []\n\n  let current: TwindRule | undefined\n\n  for (const rule of rules) {\n    // only merge rules with declarations and names (eg no global rules)\n    if (!(rule.d && rule.n)) {\n      result.push({ ...rule, n: rule.n && name })\n    } else if (current?.p == rule.p && '' + current.r == '' + rule.r) {\n      current.c = [current.c, rule.c].filter(Boolean).join(' ')\n      current.d = current.d + ';' + rule.d\n    } else {\n      // only set name for named rules eg not for global or className propagation rules\n      result.push((current = { ...rule, n: rule.n && name }))\n    }\n  }\n\n  return result\n}\n","import type { TwindRule, Context, BaseTheme } from '../types'\nimport type { ParsedRule } from '../parse'\n\nimport { parse } from '../parse'\nimport { convert, Layer, moveToLayer } from './precedence'\n\nimport { resolve } from './registry'\nimport { serialize } from './serialize'\nimport { sortedInsertionIndex } from './sorted-insertion-index'\nimport { toClassName } from './to-class-name'\nimport { asArray } from '../utils'\nimport { merge } from './merge'\n\nexport function translate<Theme extends BaseTheme = BaseTheme>(\n  rules: readonly ParsedRule[],\n  context: Context<Theme>,\n  precedence = Layer.u,\n  conditions?: string[],\n  important?: boolean,\n): TwindRule[] {\n  // Sorted by precedence\n  const result: TwindRule[] = []\n\n  for (const rule of rules) {\n    for (const cssRule of translate$(rule, context, precedence, conditions, important)) {\n      result.splice(sortedInsertionIndex(result, cssRule), 0, cssRule)\n    }\n  }\n\n  return result\n}\n\nfunction translate$<Theme extends BaseTheme = BaseTheme>(\n  rule: ParsedRule,\n  context: Context<Theme>,\n  precedence: number,\n  conditions?: string[],\n  important?: boolean,\n): TwindRule[] {\n  rule = { ...rule, i: rule.i || important }\n\n  const resolved = resolve(rule, context)\n\n  if (!resolved) {\n    // propagate className as is\n    return [{ c: toClassName(rule), p: 0, o: 0, r: [] }]\n  }\n\n  // a list of class names\n  if (typeof resolved == 'string') {\n    ;({ r: conditions, p: precedence } = convert(rule, context, precedence, conditions))\n\n    return merge(translate(parse(resolved), context, precedence, conditions, rule.i), rule.n)\n  }\n\n  if (Array.isArray(resolved)) {\n    return resolved.map((rule) => ({\n      o: 0,\n      ...rule,\n      r: [...asArray(conditions), ...asArray(rule.r)],\n      p: moveToLayer(precedence, rule.p ?? precedence),\n    }))\n  }\n\n  return serialize(resolved, rule, context, precedence, conditions)\n}\n\nexport function translateWith<Theme extends BaseTheme = BaseTheme>(\n  name: string,\n  layer: number,\n  rules: ParsedRule[],\n  context: Context<Theme>,\n  precedence: number,\n  conditions?: string[] | undefined,\n  important?: boolean | undefined,\n  useOrderOfRules?: boolean,\n) {\n  return merge(\n    (useOrderOfRules\n      ? rules.flatMap((rule) => translate([rule], context, precedence, conditions, important))\n      : translate(rules, context, precedence, conditions, important)\n    ).map((rule) =>\n      // do not move defaults\n      // move only rules with a name unless they are in the base layer\n      rule.p & Layer.o && (rule.n || layer == Layer.b)\n        ? { ...rule, p: moveToLayer(rule.p, layer), o: 0 }\n        : rule,\n    ),\n    name,\n  )\n}\n","import type { Falsey } from '../types'\nimport type { ParsedRule } from '../parse'\nimport { convert } from './precedence'\nimport { register } from './registry'\nimport { translateWith } from './translate'\n\nexport function define(\n  className: string,\n  layer: number,\n  rules: Falsey | ParsedRule[],\n  useOrderOfRules?: boolean,\n): string {\n  return register(className, (rule, context) => {\n    const { n: name, p: precedence, r: conditions, i: important } = convert(rule, context, layer)\n\n    return (\n      rules &&\n      translateWith(\n        name as string,\n        layer,\n        rules,\n        context,\n        precedence,\n        conditions,\n        important,\n        useOrderOfRules,\n      )\n    )\n  })\n}\n","import { DEV } from 'distilt/env'\n\nimport { hash } from './utils'\nimport { define } from './internal/define'\nimport { format } from './internal/format'\nimport { Layer } from './internal/precedence'\n\nexport interface ParsedRule {\n  /**\n   * The utility name including `-` if set, but without `!` and variants\n   */\n  readonly n: string\n\n  /**\n   * All variants without trailing colon: `hover`, `after:`, `[...]`\n   */\n  readonly v: string[]\n\n  /**\n   * Something like `!underline` or `!bg-red-500` or `!red-500`\n   */\n  readonly i?: boolean\n}\n\nexport interface ParsedDevRule extends ParsedRule {\n  readonly a: string[]\n  readonly l: [start: number, end: number]\n}\n\nfunction createRule(\n  active: string[],\n  current: ParsedRule[][],\n  loc?: ParsedDevRule['l'] | false,\n): void {\n  if (active[active.length - 1] != '(') {\n    const variants: string[] = []\n    let important = false\n    let negated = false\n    let name = ''\n\n    for (let value of active) {\n      if (value == '(' || /[~@]$/.test(value)) continue\n\n      if (value[0] == '!') {\n        value = value.slice(1)\n        important = !important\n      }\n\n      if (value.endsWith(':')) {\n        variants[value == 'dark:' ? 'unshift' : 'push'](value.slice(0, -1))\n        continue\n      }\n\n      if (value[0] == '-') {\n        value = value.slice(1)\n        negated = !negated\n      }\n\n      if (value.endsWith('-')) {\n        value = value.slice(0, -1)\n      }\n\n      if (value && value != '&') {\n        name += (name && '-') + value\n      }\n    }\n\n    if (name) {\n      if (negated) name = '-' + name\n\n      current[0].push(\n        DEV\n          ? Object.defineProperties(\n              { n: name, v: variants.filter(uniq), i: important },\n              {\n                a: { value: [...active] },\n                l: { value: loc },\n              },\n            )\n          : { n: name, v: variants.filter(uniq), i: important },\n      )\n    }\n  }\n}\n\nfunction uniq<T>(value: T, index: number, values: T[]): boolean {\n  return values.indexOf(value) == index\n}\n\nconst cache = new Map<string, ParsedRule[]>()\n\n/**\n * @internal\n * @param token\n * @returns\n */\nexport function parse(token: string): ParsedRule[] {\n  let parsed = cache.get(token)\n\n  if (!parsed) {\n    // Stack of active groupings (`(`), variants, or nested (`~` or `@`)\n    const active: string[] = []\n\n    // Stack of current rule list to put new rules in\n    // the first `0` element is the current list\n    const current: ParsedRule[][] = [[]]\n\n    let startIndex = 0\n    let skip = 0\n    let comment: RegExp | null = null\n    let position = 0\n\n    // eslint-disable-next-line no-inner-declarations\n    const commit = (isRule?: boolean, endOffset = 0) => {\n      if (startIndex != position) {\n        active.push(token.slice(startIndex, position + endOffset))\n\n        if (isRule) {\n          createRule(active, current, DEV && [startIndex, position + endOffset])\n        }\n      }\n      startIndex = position + 1\n    }\n\n    for (; position < token.length; position++) {\n      const char = token[position]\n\n      if (skip) {\n        // within [...]\n        // skip over until not skipping\n        // ignore escaped chars\n        if (token[position - 1] != '\\\\') {\n          skip += +(char == '[') || -(char == ']')\n        }\n      } else if (char == '[') {\n        // start to skip\n        skip += 1\n      } else if (comment) {\n        if (token[position - 1] != '\\\\' && comment.test(token.slice(position))) {\n          comment = null\n          startIndex = position + RegExp.lastMatch.length\n        }\n      } else if (\n        char == '/' &&\n        token[position - 1] != '\\\\' &&\n        (token[position + 1] == '*' || token[position + 1] == '/')\n      ) {\n        // multiline or single line comment\n        comment = token[position + 1] == '*' ? /^\\*\\// : /^[\\r\\n]/\n      } else if (char == '(') {\n        // hover:(...) or utilitity-(...)\n        commit()\n        active.push(char)\n      } else if (char == ':') {\n        // hover: or after::\n        if (token[position + 1] != ':') {\n          commit(false, 1)\n        }\n      } else if (/[\\s,)]/.test(char)) {\n        // whitespace, comma or closing brace\n        commit(true)\n\n        let lastGroup = active.lastIndexOf('(')\n\n        if (char == ')') {\n          // Close nested block\n          const nested = active[lastGroup - 1]\n\n          if (/[~@]$/.test(nested)) {\n            const rules = current.shift() as ParsedRule[]\n\n            active.length = lastGroup\n\n            // remove variants that are already applied through active\n            createRule([...active, '#'], current, DEV && [startIndex, position])\n            const { v } = current[0].pop() as ParsedRule\n\n            for (const rule of rules) {\n              // if a rule has dark we need to splice after the first entry eg dark\n              rule.v.splice(+(rule.v[0] == 'dark') - +(v[0] == 'dark'), v.length)\n            }\n\n            createRule(\n              [\n                ...active,\n                define(\n                  // named nested\n                  nested.length > 1\n                    ? nested.slice(0, -1) + hash(JSON.stringify([nested, rules]))\n                    : nested + '(' + format(rules) + ')',\n                  Layer.a,\n                  rules,\n                  /@$/.test(nested),\n                ),\n              ],\n              current,\n              DEV && [startIndex, position],\n            )\n          }\n\n          lastGroup = active.lastIndexOf('(', lastGroup - 1)\n        }\n\n        active.length = lastGroup + 1\n      } else if (/[~@]/.test(char) && token[position + 1] == '(') {\n        // start nested block\n        // ~(...) or button~(...)\n        // @(...) or button@(...)\n        current.unshift([])\n      }\n    }\n\n    // Consume remaining stack\n    commit(true)\n\n    cache.set(token, (parsed = current[0]))\n  }\n\n  return parsed\n}\n","export function interleave<Interpolations>(\n  strings: TemplateStringsArray,\n  interpolations: readonly Interpolations[],\n  handle: (interpolation: Interpolations) => string,\n): string {\n  return interpolations.reduce(\n    (result: string, interpolation, index) => result + handle(interpolation) + strings[index + 1],\n    strings[0],\n  )\n}\n","import type { Class } from '../types'\nimport { interleave } from './interleave'\n\n// based on https://github.com/lukeed/clsx and https://github.com/jorgebucaran/classcat\nexport function interpolate(\n  strings: TemplateStringsArray | Class,\n  interpolations: Class[],\n): string {\n  return Array.isArray(strings) && Array.isArray((strings as unknown as TemplateStringsArray).raw)\n    ? interleave(strings as unknown as TemplateStringsArray, interpolations, (value) =>\n        toString(value).trim(),\n      )\n    : interpolations\n        .filter(Boolean)\n        .reduce(\n          (result: string, value) => result + toString(value),\n          strings ? toString(strings as Class) : '',\n        )\n}\n\nfunction toString(value: Class): string {\n  let result = ''\n  let tmp: string\n\n  if (value && typeof value == 'object') {\n    if (Array.isArray(value)) {\n      if ((tmp = interpolate(value[0], value.slice(1)))) {\n        result += ' ' + tmp\n      }\n    } else {\n      for (const key in value) {\n        if (value[key]) result += ' ' + key\n      }\n    }\n  } else if (value != null && typeof value != 'boolean') {\n    result += ' ' + value\n  }\n\n  return result\n}\n","import type { Class, Nested } from './types'\nimport { format } from './internal/format'\nimport { parse } from './parse'\nimport { interpolate } from './internal/interpolate'\n\n/**\n * @group Class Name Generators\n */\nexport const apply = /* #__PURE__ */ alias('@')\n\n/**\n * @group Class Name Generators\n */\nexport const shortcut = /* #__PURE__ */ alias('~')\n\nfunction alias(marker: string): Nested {\n  return new Proxy(\n    function alias(strings: TemplateStringsArray | Class, ...interpolations: Class[]): string {\n      return alias$('', strings, interpolations)\n    } as Nested,\n    {\n      get(target, name) {\n        if (name in target) return target[name as string]\n\n        return function namedAlias(\n          strings: TemplateStringsArray | Class,\n          ...interpolations: Class[]\n        ): string {\n          return alias$(name as string, strings, interpolations)\n        }\n      },\n    },\n  )\n\n  function alias$(\n    name: string,\n    strings: TemplateStringsArray | Class,\n    interpolations: Class[],\n  ): string {\n    return format(parse(name + marker + '(' + interpolate(strings, interpolations) + ')'))\n  }\n}\n","import type { CSSObject, CSSValue } from '../types'\nimport { interleave } from './interleave'\n\nexport function astish(\n  strings: CSSObject | string | TemplateStringsArray,\n  interpolations: readonly CSSValue[],\n): CSSObject[] {\n  return Array.isArray(strings)\n    ? astish$(\n        interleave(strings as TemplateStringsArray, interpolations, (interpolation) =>\n          interpolation != null && typeof interpolation != 'boolean'\n            ? (interpolation as unknown as string)\n            : '',\n        ),\n      )\n    : typeof strings == 'string'\n    ? astish$(strings)\n    : [strings as CSSObject]\n}\n\n// Based on https://github.com/cristianbote/goober/blob/master/src/core/astish.js\nconst newRule = / *(?:(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}))/g\n\n/**\n * Convert a css style string into a object\n */\nfunction astish$(css: string): CSSObject[] {\n  css = removeComments(css)\n\n  const tree: CSSObject[] = [{}]\n  const rules: CSSObject[] = [tree[0]]\n  const conditions: string[] = []\n  let block: RegExpExecArray | null\n\n  while ((block = newRule.exec(css))) {\n    // Remove the current entry\n    if (block[4]) {\n      tree.shift()\n      conditions.shift()\n    }\n\n    if (block[3]) {\n      // new nested\n      conditions.unshift(block[3])\n      tree.unshift({})\n      rules.push(conditions.reduce((body, condition) => ({ [condition]: body }), tree[0]))\n    } else if (!block[4]) {\n      // if we already have that property — start a new CSSObject\n      if (tree[0][block[1]]) {\n        tree.unshift({})\n        rules.push(conditions.reduce((body, condition) => ({ [condition]: body }), tree[0]))\n      }\n      tree[0][block[1]] = block[2]\n    }\n  }\n\n  // console.log(rules)\n  return rules\n}\n\n// Remove comments (multiline and single line)\nfunction removeComments(css: string): string {\n  return css.replace(/\\/\\*[^]*?\\*\\/|\\s\\s+|\\n/gm, ' ')\n}\n","import type { CSSObject, CSSValue } from './types'\n\nimport { register } from './internal/registry'\nimport { serialize } from './internal/serialize'\nimport { hash } from './utils'\nimport { Layer } from './internal/precedence'\nimport { merge } from './internal/merge'\nimport { astish } from './internal/astish'\n\n/**\n * @group Class Name Generators\n * @param strings\n * @param interpolations\n */\nexport function css(strings: TemplateStringsArray, ...interpolations: readonly CSSValue[]): string\n\nexport function css(style: CSSObject | string): string\n\nexport function css(\n  strings: CSSObject | string | TemplateStringsArray,\n  ...interpolations: readonly CSSValue[]\n): string {\n  const ast = astish(strings, interpolations)\n\n  const className = (ast.find((o) => o.label)?.label || 'css') + hash(JSON.stringify(ast))\n\n  return register(className, (rule, context) =>\n    merge(\n      ast.flatMap((css) => serialize(css, rule, context, Layer.o)),\n      className,\n    ),\n  )\n}\n","import type { CSSObject, CSSProperties, StringLike } from './types'\n\nimport { css } from './css'\n\nexport interface AnimationFunction {\n  (animation: string | CSSProperties, waypoints: StringLike): StringLike\n}\n\nexport type Animation = AnimationFunction & {\n  [label: string]: AnimationFunction\n}\n\n/**\n * @group Class Name Generators\n */\nexport const animation = /* #__PURE__ */ new Proxy(\n  function animation(animation: string | CSSProperties, waypoints: StringLike): StringLike {\n    return animation$('animation', animation, waypoints)\n  } as Animation,\n  {\n    get(target, name) {\n      if (name in target) return target[name as string]\n\n      return function namedAnimation(\n        animation: string | CSSProperties,\n        waypoints: StringLike,\n      ): StringLike {\n        return animation$(name as string, animation, waypoints)\n      }\n    },\n  },\n)\n\nfunction animation$(\n  label: string,\n  animation: string | CSSProperties,\n  waypoints: StringLike,\n): StringLike {\n  return {\n    toString() {\n      return css({\n        label,\n        '@layer components': {\n          ...(typeof animation == 'object' ? animation : { animation }),\n          animationName: '' + waypoints,\n        },\n      } as CSSObject)\n    },\n  } as StringLike\n}\n","import { DEV } from 'distilt/env'\n\nimport type {\n  Context,\n  ColorValue,\n  ColorFunction,\n  BaseTheme,\n  MatchResult,\n  RuleResolver,\n  CSSProperties,\n  CSSObject,\n  RuleResult,\n  ThemeValue,\n  KebabCase,\n  MatchConverter,\n  Rule,\n  MaybeArray,\n} from './types'\n\nimport { toColorValue } from './colors'\nimport { resolveThemeFunction } from './internal/serialize'\nimport {\n  type AutocompleteProvider,\n  type AutocompleteItem,\n  withAutocomplete,\n  type AutocompleteModifier,\n} from './autocomplete'\n\nexport type ThemeMatchResult<Value> = MatchResult & {\n  /** The found theme value */\n  _: Value\n}\n\nexport type ThemeRuleResolver<Value, Theme extends BaseTheme = BaseTheme> = RuleResolver<\n  Theme,\n  ThemeMatchResult<Value>\n>\n\nexport type ThemeMatchConverter<Value, Theme extends BaseTheme = BaseTheme> = MatchConverter<\n  Theme,\n  ThemeMatchResult<Value>\n>\n\n// indirection wrapper to remove autocomplete functions from production bundles\nfunction withAutocomplete$<Theme extends BaseTheme = BaseTheme>(\n  resolver: RuleResolver<Theme>,\n  autocomplete: AutocompleteProvider<Theme> | false,\n): RuleResolver<Theme> {\n  if (DEV) {\n    return withAutocomplete(resolver, autocomplete)\n  }\n\n  return resolver\n}\n\n/**\n * @group Configuration\n * @param pattern\n */\nexport function match<Theme extends BaseTheme = BaseTheme>(\n  pattern: MaybeArray<string | RegExp>,\n): Rule<Theme>\n\n/**\n * @group Configuration\n * @param pattern\n * @param resolver\n */\nexport function match<Theme extends BaseTheme = BaseTheme>(\n  pattern: MaybeArray<string | RegExp>,\n  resolver: RuleResolver<Theme>,\n): Rule<Theme>\n\n/**\n * @group Configuration\n * @param pattern\n * @param resolve\n */\nexport function match<Theme extends BaseTheme = BaseTheme>(\n  pattern: MaybeArray<string | RegExp>,\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  resolve: (string & {}) | CSSObject,\n): Rule<Theme>\n\n/**\n * @group Configuration\n * @param pattern\n * @param resolve\n * @param convert\n */\nexport function match<Theme extends BaseTheme = BaseTheme>(\n  pattern: MaybeArray<string | RegExp>,\n  resolve: keyof CSSProperties,\n  convert?: MatchConverter<Theme>,\n): Rule<Theme>\n\nexport function match<Theme extends BaseTheme = BaseTheme>(\n  pattern: MaybeArray<string | RegExp>,\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  resolve?: RuleResolver<Theme> | (string & {}) | CSSObject | keyof CSSProperties,\n  convert?: MatchConverter<Theme>,\n): Rule<Theme> {\n  return [pattern, fromMatch(resolve as keyof CSSProperties, convert)]\n}\n\n/**\n * @group Configuration\n * @internal\n * @deprecated Use {@link match} instead.\n */\nexport function fromMatch<Theme extends BaseTheme = BaseTheme>(): RuleResolver<Theme>\n\n/**\n * @group Configuration\n * @internal\n * @deprecated Use {@link match} instead.\n */\nexport function fromMatch<Theme extends BaseTheme = BaseTheme>(\n  resolver: RuleResolver<Theme>,\n): RuleResolver<Theme>\n\n/**\n * @group Configuration\n * @internal\n * @deprecated Use {@link match} instead.\n */\nexport function fromMatch<Theme extends BaseTheme = BaseTheme>(\n  resolve: keyof CSSProperties,\n  convert?: MatchConverter<Theme>,\n): RuleResolver<Theme>\n\n/**\n * @group Configuration\n * @internal\n * @deprecated Use {@link match} instead.\n */\nexport function fromMatch<Theme extends BaseTheme = BaseTheme>(\n  resolve: string | CSSObject,\n): RuleResolver<Theme>\n\nexport function fromMatch<Theme extends BaseTheme = BaseTheme>(\n  resolve?: RuleResolver<Theme> | keyof CSSProperties | string | CSSObject,\n  convert?: MatchConverter<Theme>,\n): RuleResolver<Theme> {\n  return typeof resolve == 'function'\n    ? resolve\n    : typeof resolve == 'string' && /^[\\w-]+$/.test(resolve) // a CSS property alias\n    ? (match, context) =>\n        ({\n          [resolve]: convert ? convert(match, context) : maybeNegate(match, 1),\n        } as CSSObject)\n    : (match) =>\n        // CSSObject, shortcut or apply\n        resolve ||\n        ({\n          [match[1]]: maybeNegate(match, 2),\n        } as CSSObject)\n}\n\nfunction maybeNegate<T>(\n  match: MatchResult,\n  offset: number,\n  value: T | string = match.slice(offset).find(Boolean) || match.$$ || match.input,\n): T | string {\n  return match.input[0] == '-' ? `calc(${value} * -1)` : value\n}\n\n/**\n * @group Configuration\n * @param pattern\n * @param section\n * @param resolve\n * @param convert\n * @returns\n */\nexport function matchTheme<\n  Theme extends BaseTheme = BaseTheme,\n  Section extends keyof Theme & string = keyof Theme & string,\n>(\n  pattern: MaybeArray<string | RegExp>,\n\n  /** Theme section to use (default: `$1` — The first matched group) */\n  section?: '' | Section | KebabCase<Section>,\n\n  /** The css property (default: value of {@link section}) */\n  resolve?: keyof CSSProperties | ThemeRuleResolver<ThemeValue<Theme[Section]>, Theme>,\n\n  convert?: ThemeMatchConverter<ThemeValue<Theme[Section]>, Theme>,\n): Rule<Theme> {\n  return [pattern, fromTheme(section, resolve, convert)]\n}\n\n/**\n * @group Configuration\n * @internal\n * @deprecated Use {@link matchTheme} instead.\n * @param section\n * @param resolve\n * @param convert\n * @returns\n */\nexport function fromTheme<\n  Theme extends BaseTheme = BaseTheme,\n  Section extends keyof Theme & string = keyof Theme & string,\n>(\n  /** Theme section to use (default: `$1` — The first matched group) */\n  section?: '' | Section | KebabCase<Section>,\n\n  /** The css property (default: value of {@link section}) */\n  resolve?: keyof CSSProperties | ThemeRuleResolver<ThemeValue<Theme[Section]>, Theme>,\n\n  convert?: ThemeMatchConverter<ThemeValue<Theme[Section]>, Theme>,\n): RuleResolver<Theme> {\n  const factory: (\n    match: ThemeMatchResult<ThemeValue<Theme[Section]>>,\n    context: Context<Theme>,\n    section: Section,\n  ) => RuleResult =\n    typeof resolve == 'string'\n      ? (match, context) =>\n          ({ [resolve]: convert ? convert(match, context) : match._ } as CSSObject)\n      : resolve || (({ 1: $1, _ }, context, section) => ({ [$1 || section]: _ } as CSSObject))\n\n  return withAutocomplete$(\n    (match, context) => {\n      const themeSection = camelize(section || match[1]) as Section\n\n      const value =\n        context.theme(themeSection, match.$$) ??\n        (arbitrary(match.$$, themeSection, context) as ThemeValue<Theme[Section]>)\n\n      if (value != null) {\n        ;(match as ThemeMatchResult<ThemeValue<Theme[Section]>>)._ = maybeNegate(\n          match,\n          0,\n          value,\n        ) as ThemeValue<Theme[Section]>\n\n        return factory(match as ThemeMatchResult<ThemeValue<Theme[Section]>>, context, themeSection)\n      }\n    },\n    DEV &&\n      ((match, context) => {\n        const themeSection = camelize(section || match[1]) as Section\n\n        const isKeyLookup = match.input.endsWith('-')\n\n        if (isKeyLookup) {\n          return Object.entries(context.theme(themeSection) || {})\n            .filter(\n              ([key, value]) =>\n                key &&\n                key != 'DEFAULT' &&\n                (!/color|fill|stroke/i.test(themeSection) ||\n                  ['string', 'function'].includes(typeof value)),\n            )\n            .map(\n              ([key, value]): AutocompleteItem => ({\n                suffix: key.replace(/-DEFAULT/g, ''),\n                theme: { section: themeSection, key },\n                color:\n                  /color|fill|stroke/i.test(themeSection) &&\n                  toColorValue(value as ColorValue, { opacityValue: '1' }),\n              }),\n            )\n            .concat([{ suffix: '[' }])\n        }\n\n        const value = context.theme(themeSection, 'DEFAULT')\n\n        if (value) {\n          return [\n            {\n              suffix: '',\n              theme: { section: themeSection, key: 'DEFAULT' },\n              color:\n                /color|fill|stroke/i.test(themeSection) &&\n                toColorValue(value as ColorValue, { opacityValue: '1' }),\n            },\n          ]\n        }\n\n        return []\n      }),\n  )\n}\n\nexport type FilterByThemeValue<Theme, Value> = {\n  [key in keyof Theme & string]: ThemeValue<Theme[key]> extends Value ? Theme[key] : never\n}\n\nexport interface ColorFromThemeValue {\n  value: string\n  color: ColorFunction\n  opacityVariable: string | undefined\n  opacityValue: string | undefined\n}\n\nexport interface ColorFromThemeOptions<\n  Theme extends BaseTheme = BaseTheme,\n  Section extends keyof FilterByThemeValue<Theme, ColorValue> = keyof FilterByThemeValue<\n    Theme,\n    ColorValue\n  >,\n  OpacitySection extends keyof FilterByThemeValue<Theme, string> = keyof FilterByThemeValue<\n    Theme,\n    string\n  >,\n> {\n  /** Theme section to use (default: `$0.replace('-', 'Color')` — The matched string with `Color` appended) */\n  section?: Section | KebabCase<Section>\n  /** The css property (default: value of {@link section}) */\n  property?: keyof CSSProperties\n  /** `--tw-${$0}opacity` -> '--tw-text-opacity' */\n  opacityVariable?: string | false\n  /** `section.replace('Color', 'Opacity')` -> 'textOpacity' */\n  opacitySection?: OpacitySection\n  selector?: string\n}\n\n/**\n * @group Configuration\n * @param pattern\n * @param options\n * @param resolve\n * @returns\n */\nexport function matchColor<\n  Theme extends BaseTheme = BaseTheme,\n  Section extends keyof FilterByThemeValue<Theme, ColorValue> = keyof FilterByThemeValue<\n    Theme,\n    ColorValue\n  >,\n  OpacitySection extends keyof FilterByThemeValue<Theme, string> = keyof FilterByThemeValue<\n    Theme,\n    string\n  >,\n>(\n  pattern: MaybeArray<string | RegExp>,\n  options: ColorFromThemeOptions<Theme, Section, OpacitySection> = {},\n  resolve?: ThemeRuleResolver<ColorFromThemeValue, Theme>,\n): Rule<Theme> {\n  return [pattern, colorFromTheme(options, resolve)]\n}\n\n/**\n * @group Configuration\n * @internal\n * @deprecated Use {@link matchColor} instead.\n * @param options\n * @param resolve\n * @returns\n */\nexport function colorFromTheme<\n  Theme extends BaseTheme = BaseTheme,\n  Section extends keyof FilterByThemeValue<Theme, ColorValue> = keyof FilterByThemeValue<\n    Theme,\n    ColorValue\n  >,\n  OpacitySection extends keyof FilterByThemeValue<Theme, string> = keyof FilterByThemeValue<\n    Theme,\n    string\n  >,\n>(\n  options: ColorFromThemeOptions<Theme, Section, OpacitySection> = {},\n  resolve?: ThemeRuleResolver<ColorFromThemeValue, Theme>,\n): RuleResolver<Theme> {\n  return withAutocomplete$(\n    (match, context) => {\n      // text- -> textColor\n      // ring-offset(?:-|$) -> ringOffsetColor\n      const { section = (camelize(match[0]).replace('-', '') + 'Color') as Section } = options\n\n      // extract color and opacity\n      // rose-500                  -> ['rose-500']\n      // [hsl(0_100%_/_50%)]       -> ['[hsl(0_100%_/_50%)]']\n      // indigo-500/100            -> ['indigo-500', '100']\n      // [hsl(0_100%_/_50%)]/[.25] -> ['[hsl(0_100%_/_50%)]', '[.25]']\n      const [colorMatch, opacityMatch] = parseValue(match.$$)\n\n      if (!colorMatch) return\n\n      const colorValue =\n        (context.theme(section, colorMatch) as ColorValue) ||\n        arbitrary(colorMatch, section, context)\n\n      if (!colorValue || typeof colorValue == 'object') return\n\n      const {\n        // text- -> --tw-text-opacity\n        // ring-offset(?:-|$) -> --tw-ring-offset-opacity\n        // TODO move this default into preset-tailwind?\n        opacityVariable = `--tw-${match[0].replace(/-$/, '')}-opacity`,\n        opacitySection = section.replace('Color', 'Opacity') as OpacitySection,\n        property = section,\n        selector,\n      } = options\n\n      const opacityValue =\n        (context.theme(opacitySection, opacityMatch || 'DEFAULT') as string | undefined) ||\n        (opacityMatch && arbitrary(opacityMatch, opacitySection, context))\n\n      // if (typeof color != 'string') {\n      //   console.warn(`Invalid color ${colorMatch} (from ${match.input}):`, color)\n      //   return\n      // }\n\n      const create =\n        resolve ||\n        (({ _ }) => {\n          const properties = toCSS(property, _)\n\n          return selector ? { [selector]: properties } : properties\n        })\n\n      ;(match as ThemeMatchResult<ColorFromThemeValue>)._ = {\n        value: toColorValue(colorValue, {\n          opacityVariable: opacityVariable || undefined,\n          opacityValue: opacityValue || undefined,\n        }),\n        color: (options) => toColorValue(colorValue, options),\n        opacityVariable: opacityVariable || undefined,\n        opacityValue: opacityValue || undefined,\n      }\n\n      let properties = create(match as ThemeMatchResult<ColorFromThemeValue>, context)\n\n      // auto support dark mode colors\n      if (!match.dark) {\n        const darkColorValue = context.d(section, colorMatch, colorValue)\n\n        if (darkColorValue && darkColorValue !== colorValue) {\n          ;(match as ThemeMatchResult<ColorFromThemeValue>)._ = {\n            value: toColorValue(darkColorValue, {\n              opacityVariable: opacityVariable || undefined,\n              opacityValue: opacityValue || '1',\n            }),\n            color: (options) => toColorValue(darkColorValue, options),\n            opacityVariable: opacityVariable || undefined,\n            opacityValue: opacityValue || undefined,\n          }\n\n          properties = {\n            '&': properties,\n            [context.v('dark') as string]: create(\n              match as ThemeMatchResult<ColorFromThemeValue>,\n              context,\n            ),\n          } as CSSObject\n        }\n      }\n\n      return properties\n    },\n    DEV &&\n      ((match, context) => {\n        const {\n          section = (camelize(match[0]).replace('-', '') + 'Color') as Section,\n          opacitySection = section.replace('Color', 'Opacity') as OpacitySection,\n        } = options\n\n        const isKeyLookup = match.input.endsWith('-')\n\n        const opacities = Object.entries<string>(context.theme(opacitySection) || {}).filter(\n          ([key, value]) => key != 'DEFAULT' && /^[\\w-]+$/.test(key) && typeof value == 'string',\n        )\n\n        if (isKeyLookup) {\n          // ['gray-50', ['/0', '/10', ...]],\n          // ['gray-100', ['/0', '/10', ...]],\n\n          return Object.entries(context.theme(section) || {})\n            .filter(\n              ([key, value]) =>\n                key && key != 'DEFAULT' && ['string', 'function'].includes(typeof value),\n            )\n            .map(\n              ([key, value]): AutocompleteItem => ({\n                suffix: key.replace(/-DEFAULT/g, ''),\n                theme: { section, key },\n                color: toColorValue(value as ColorValue, {\n                  opacityValue: (context.theme(opacitySection, 'DEFAULT') as string) || '1',\n                }),\n                modifiers:\n                  (typeof value == 'function' ||\n                    (typeof value == 'string' &&\n                      (value.includes('<alpha-value>') ||\n                        (value[0] == '#' && (value.length == 4 || value.length == 7))))) &&\n                  opacities\n                    .map(\n                      ([key, opacityValue]): AutocompleteModifier => ({\n                        modifier: key,\n                        theme: { section: opacitySection, key },\n                        color: toColorValue(value as ColorValue, { opacityValue }),\n                      }),\n                    )\n                    .concat([\n                      {\n                        modifier: '[',\n                        color: toColorValue(value as ColorValue, { opacityValue: '1' }),\n                      },\n                    ]),\n              }),\n            )\n            .concat([{ suffix: '[' }])\n        }\n\n        const value = context.theme(section, 'DEFAULT')\n\n        if (value) {\n          return [\n            {\n              suffix: '',\n              theme: { section, key: 'DEFAULT' },\n              color: toColorValue(value as ColorValue, {\n                opacityValue: (context.theme(opacitySection, 'DEFAULT') as string) || '1',\n              }),\n              modifiers:\n                (typeof value == 'function' ||\n                  (typeof value == 'string' &&\n                    (value.includes('<alpha-value>') ||\n                      (value[0] == '#' && (value.length == 4 || value.length == 7))))) &&\n                opacities\n                  .map(\n                    ([key, opacityValue]): AutocompleteModifier => ({\n                      modifier: key,\n                      theme: { section: opacitySection, key },\n                      color: toColorValue(value as ColorValue, { opacityValue }),\n                    }),\n                  )\n                  .concat([\n                    {\n                      modifier: '[',\n                      color: toColorValue(value as ColorValue, { opacityValue: '1' }),\n                    },\n                  ]),\n            },\n          ]\n        }\n\n        return []\n      }),\n  )\n}\n\n/**\n * @internal\n * @param input\n */\nexport function parseValue(\n  input: string,\n):\n  | [value: string, modifier: string | undefined]\n  | [value: undefined, modifier: string | undefined] {\n  // extract color and opacity\n  // rose-500                  -> ['rose-500']\n  // [hsl(0_100%_/_50%)]       -> ['[hsl(0_100%_/_50%)]']\n  // indigo-500/100            -> ['indigo-500', '100']\n  // [hsl(0_100%_/_50%)]/[.25] -> ['[hsl(0_100%_/_50%)]', '[.25]']\n  return (input.match(/^(\\[[^\\]]+]|[^/]+?)(?:\\/(.+))?$/) || []).slice(1) as [\n    value: string,\n    modifier: string | undefined,\n  ]\n}\n\n/**\n * @internal\n * @param property\n * @param value\n * @returns\n */\nexport function toCSS(property: string, value: string | ColorFromThemeValue): CSSObject {\n  const properties: CSSObject = {}\n\n  if (typeof value === 'string') {\n    properties[property] = value\n  } else {\n    if (value.opacityVariable && value.value.includes(value.opacityVariable)) {\n      properties[value.opacityVariable] = value.opacityValue || '1'\n    }\n\n    properties[property] = value.value\n  }\n\n  return properties\n}\n\n/**\n * @internal\n * @param value\n * @param section\n * @param context\n * @returns\n */\nexport function arbitrary<Theme extends BaseTheme = BaseTheme>(\n  value: string,\n  section: string | undefined,\n  context: Context<Theme>,\n): string | undefined {\n  if (value[0] == '[' && value.slice(-1) == ']') {\n    value = normalize(resolveThemeFunction(value.slice(1, -1), context.theme))\n\n    if (!section) return value\n\n    if (\n      // Respect type hints from the user on ambiguous arbitrary values - https://tailwindcss.com/docs/adding-custom-styles#resolving-ambiguities\n      !(\n        // If this is a color section and the value is a hex color, color function or color name\n        (\n          (/color|fill|stroke/i.test(section) &&\n            !(\n              /^color:/.test(value) || /^(#|((hsl|rgb)a?|hwb|lab|lch|color)\\(|[a-z]+$)/.test(value)\n            )) ||\n          // url(, [a-z]-gradient(, image(, cross-fade(, image-set(\n          (/image/i.test(section) && !(/^image:/.test(value) || /^[a-z-]+\\(/.test(value))) ||\n          // font-*\n          // - fontWeight (type: ['lookup', 'number', 'any'])\n          // - fontFamily (type: ['lookup', 'generic-name', 'family-name'])\n          (/weight/i.test(section) && !(/^(number|any):/.test(value) || /^\\d+$/.test(value))) ||\n          // bg-*\n          // - backgroundPosition (type: ['lookup', ['position', { preferOnConflict: true }]])\n          // - backgroundSize (type: ['lookup', 'length', 'percentage', 'size'])\n          (/position/i.test(section) && /^(length|size):/.test(value))\n        )\n      )\n    ) {\n      // remove arbitrary type prefix — we do not need it but user may use it\n      // https://github.com/tailwindlabs/tailwindcss/blob/master/src/util/dataTypes.js\n      // url, number, percentage, length, line-width, shadow, color, image, gradient, position, family-name, lookup, any, generic-name, absolute-size, relative-size\n      return value.replace(/^[a-z-]+:/, '')\n    }\n  }\n}\n\nfunction camelize(value: string): string {\n  return value.replace(/-./g, (x) => x[1].toUpperCase())\n}\n\n/**\n * @internal\n * @param value\n * @returns\n */\nexport function normalize(value: string): string {\n  // Keep raw strings if it starts with `url(`\n  if (value.includes('url(')) {\n    return value.replace(\n      /(.*?)(url\\(.*?\\))(.*?)/g,\n      (_, before = '', url, after = '') => normalize(before) + url + normalize(after),\n    )\n  }\n\n  return (\n    value\n      // Convert `_` to ` `, except for escaped underscores `\\_`\n      .replace(\n        /(^|[^\\\\])_+/g,\n        (fullMatch, characterBefore: string) =>\n          characterBefore + ' '.repeat(fullMatch.length - characterBefore.length),\n      )\n      .replace(/\\\\_/g, '_')\n\n      // Add spaces around operators inside math functions like calc() that do not follow an operator\n      // or '('.\n      .replace(/(calc|min|max|clamp)\\(.+\\)/g, (match) =>\n        match.replace(\n          /(-?\\d*\\.?\\d(?!\\b-.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g,\n          '$1 $2 ',\n        ),\n      )\n  )\n}\n","import type {\n  BaseTheme,\n  CSSProperties,\n  MatchResult,\n  Rule,\n  RuleResolver,\n  ThemeFunction,\n  VariantResolver,\n} from './types'\nimport { DEV } from 'distilt/env'\nimport { fromMatch } from './rules'\nimport { asArray } from './utils'\n\nexport type AutocompleteItem = {\n  prefix?: string\n  suffix: string\n  theme?: { section: string; key: string }\n  modifiers?: AutocompleteModifier[] | false | null | undefined\n  color?: string | false | null | undefined\n  label?: string\n}\n\nexport type AutocompleteModifier = {\n  modifier: string\n  theme?: { section: string; key: string }\n  color?: string | false | null | undefined\n  label?: string\n}\n\nexport interface AutocompleteContext<Theme extends BaseTheme = BaseTheme> {\n  /** Allows to resolve theme values. */\n  readonly theme: ThemeFunction<Theme>\n  readonly variants: Record<string, string>\n}\n\nexport type AutocompleteProvider<Theme extends BaseTheme = BaseTheme> = (\n  match: MatchResult,\n  context: AutocompleteContext<Theme>,\n) => (string | AutocompleteItem)[]\n\nconst kAutocomplete = /* #__PURE__ */ Symbol('@twind/autocomplete')\n\n/**\n * @experimental\n * @group Configuration\n * @param resolver\n * @param autocomplete\n */\nexport function withAutocomplete<Theme extends BaseTheme = BaseTheme>(\n  resolver: RuleResolver<Theme>,\n  autocomplete: AutocompleteProvider<Theme> | false | null | undefined,\n): RuleResolver<Theme>\n\nexport function withAutocomplete<Theme extends BaseTheme = BaseTheme>(\n  resolver: VariantResolver<Theme>,\n  autocomplete: AutocompleteProvider<Theme> | false | null | undefined,\n): VariantResolver<Theme>\n\nexport function withAutocomplete<Theme extends BaseTheme = BaseTheme>(\n  rule: Rule<Theme>,\n  autocomplete: AutocompleteProvider<Theme> | false | null | undefined,\n): Rule<Theme>\n\nexport function withAutocomplete<Theme extends BaseTheme = BaseTheme>(\n  rule: Rule<Theme> | RuleResolver<Theme> | VariantResolver<Theme>,\n  autocomplete: AutocompleteProvider<Theme> | false | null | undefined,\n): Rule<Theme> | RuleResolver<Theme> | VariantResolver<Theme> {\n  if (DEV && autocomplete) {\n    if (typeof rule == 'function') {\n      return Object.defineProperty(rule, kAutocomplete, {\n        value: autocomplete,\n        configurable: true,\n      })\n    }\n\n    const [pattern, resolve, convert] = asArray(rule) as Exclude<Rule<Theme>, string | RegExp>\n\n    // [\n    //   patterns: MaybeArray<string | RegExp>,\n    //   resolve?: keyof CSSProperties | string | CSSObject | RuleResolver<Theme>,\n    //   convert?: MatchConverter<Theme>,\n    // ]\n\n    return [\n      pattern,\n      Object.defineProperty(fromMatch(resolve as keyof CSSProperties, convert), kAutocomplete, {\n        value: autocomplete,\n        configurable: true,\n      }),\n    ]\n  }\n\n  return rule\n}\n\n/**\n * @internal\n * @param resolver\n * @returns\n */\nexport function getAutocompleteProvider<Theme extends BaseTheme = BaseTheme>(\n  resolver: RuleResolver<Theme> | VariantResolver<Theme>,\n): AutocompleteProvider<Theme> | undefined {\n  return (resolver as { [kAutocomplete]?: AutocompleteProvider<Theme> })[kAutocomplete]\n}\n","import type {\n  BaseTheme,\n  Preset,\n  TwindConfig,\n  TwindUserConfig,\n  ExtractThemes,\n  TwindPresetConfig,\n} from './types'\n\nimport { asArray } from './utils'\n\n/**\n * @group Configuration\n * @param param0\n * @returns\n */\nexport function defineConfig<Theme = BaseTheme, Presets extends Preset<any>[] = Preset[]>({\n  presets = [] as unknown as Presets,\n  ...userConfig\n}: TwindUserConfig<Theme, Presets>): TwindConfig<BaseTheme & ExtractThemes<Theme, Presets>> {\n  // most user config values go first to have precendence over preset config\n  // only `preflight` and `theme` are applied as last preset to override all presets\n  let config: TwindConfig<BaseTheme & ExtractThemes<Theme, Presets>> = {\n    darkMode: undefined,\n    darkColor: undefined,\n    preflight: userConfig.preflight !== false && [],\n    theme: {},\n    variants: asArray(userConfig.variants),\n    rules: asArray(userConfig.rules),\n    ignorelist: asArray(userConfig.ignorelist),\n    hash: undefined,\n    stringify: (property, value) => property + ':' + value,\n    finalize: [],\n  }\n\n  for (const preset of asArray([\n    ...presets,\n    {\n      darkMode: userConfig.darkMode,\n      darkColor: userConfig.darkColor,\n      preflight: userConfig.preflight !== false && asArray(userConfig.preflight),\n      theme: userConfig.theme as TwindConfig<BaseTheme & ExtractThemes<Theme, Presets>>['theme'],\n      hash: userConfig.hash,\n      stringify: userConfig.stringify,\n      finalize: userConfig.finalize,\n    } as TwindPresetConfig<Theme>,\n  ])) {\n    const {\n      preflight,\n      darkMode = config.darkMode,\n      darkColor = config.darkColor,\n      theme,\n      variants,\n      rules,\n      ignorelist,\n      hash = config.hash,\n      stringify = config.stringify,\n      finalize,\n    } = typeof preset == 'function' ? preset(config) : (preset as TwindPresetConfig<Theme>)\n\n    config = {\n      // values defined by user or previous presets take precedence\n      preflight: config.preflight !== false &&\n        preflight !== false && [...config.preflight, ...asArray(preflight)],\n\n      darkMode,\n      darkColor,\n\n      theme: {\n        ...config.theme,\n        ...theme,\n        extend: {\n          ...config.theme.extend,\n          ...theme?.extend,\n        },\n      },\n\n      variants: [...config.variants, ...asArray(variants)],\n      rules: [...config.rules, ...asArray(rules)],\n      ignorelist: [...config.ignorelist, ...asArray(ignorelist)],\n\n      hash,\n      stringify,\n\n      finalize: [...config.finalize, ...asArray(finalize)],\n    } as TwindConfig<BaseTheme & ExtractThemes<Theme, Presets>>\n  }\n\n  return config\n}\n","import { DEV } from 'distilt/env'\n\ndeclare global {\n  interface WindowEventMap {\n    warning: CustomEvent<Warning>\n  }\n}\n\nexport type Warning = {\n  [Code in keyof WarningEventMap]: { message: string; code: Code; detail: WarningEventMap[Code] }\n}[keyof WarningEventMap]\n\nexport interface WarningEventMap {\n  TWIND_INVALID_CLASS: string\n  TWIND_INVALID_CSS: string\n}\n\nexport function warn<Code extends keyof WarningEventMap>(\n  message: string,\n  code: Code,\n  detail: WarningEventMap[Code],\n): void {\n  if (DEV) {\n    if (typeof dispatchEvent == 'function' && typeof CustomEvent === 'function') {\n      // Browser\n      const event = new CustomEvent('warning', {\n        detail: { message, code, detail },\n        cancelable: true,\n      })\n\n      dispatchEvent(event)\n\n      if (!event.defaultPrevented) {\n        console.warn(`[${code}] ${message}`, { detail })\n      }\n    } else if (typeof process == 'object' && typeof process.emitWarning == 'function') {\n      // Node.JS\n      process.emitWarning(message, { code, detail } as unknown as string)\n    } else {\n      // Fallback\n      console.warn(`[${code}] ${message}`, { detail })\n    }\n  }\n}\n","import type {\n  BaseTheme,\n  Context,\n  RuleResult,\n  TwindConfig,\n  CSSProperties,\n  MatchResult,\n  MaybeArray,\n  RuleResolver,\n  MatchConverter,\n  Rule,\n  CSSObject,\n  Variant,\n  VariantResult,\n  VariantResolver,\n  Falsey,\n} from '../types'\n\nimport { DEV } from 'distilt/env'\n\nimport { makeThemeFunction } from './theme'\nimport { asArray, escape, hash as defaultHash, identity, noop } from '../utils'\nimport { fromMatch } from '../rules'\nimport { warn } from './warn'\n\ntype ResolveFunction<Theme extends BaseTheme = BaseTheme> = (\n  className: string,\n  context: Context<Theme>,\n  isDark?: boolean,\n) => RuleResult\n\ntype VariantFunction<Theme extends BaseTheme = BaseTheme> = (\n  variant: string,\n  context: Context<Theme>,\n) => VariantResult\n\nexport function createContext<Theme extends BaseTheme = BaseTheme>({\n  theme,\n  darkMode,\n  darkColor = noop,\n  variants,\n  rules,\n  hash,\n  stringify,\n  ignorelist,\n  finalize,\n}: TwindConfig<Theme>): Context<Theme> {\n  // Used to cache resolved rule values\n  const variantCache = new Map<string, MaybeArray<string>>()\n\n  // lazy created resolve functions\n  const variantResolvers = new Map<Variant<Theme>, VariantFunction<Theme>>()\n\n  // Used to cache resolved rule values\n  const ruleCache = new Map<string, RuleResult>()\n\n  // lazy created resolve functions\n  const ruleResolvers = new Map<Rule<Theme>, ResolveFunction<Theme>>()\n\n  const ignored = createRegExpExecutor(ignorelist, (value, condition) => condition.test(value))\n\n  const reportedUnknownClasses = /* #__PURE__ */ new Set<string>()\n\n  // add dark as last variant to allow user to override it\n  // we can modify variants as it has been passed through defineConfig which already made a copy\n  variants.push([\n    'dark',\n    Array.isArray(darkMode) || darkMode == 'class'\n      ? `${asArray(darkMode)[1] || '.dark'} &`\n      : typeof darkMode == 'string' && darkMode != 'media'\n      ? darkMode // a custom selector\n      : '@media (prefers-color-scheme:dark)',\n  ])\n\n  const h =\n    typeof hash == 'function'\n      ? (value: string) => hash(value, defaultHash)\n      : hash\n      ? defaultHash\n      : identity\n\n  if (h !== identity) {\n    finalize.push((rule) => ({\n      ...rule,\n      n: rule.n && h(rule.n),\n      d: rule.d?.replace(\n        /--(tw(?:-[\\w-]+)?)\\b/g,\n        (_: string, property: string) => '--' + h(property).replace('#', ''),\n      ),\n    }))\n  }\n\n  const ctx: Context<Theme> = {\n    theme: makeThemeFunction(theme),\n\n    e: escape,\n\n    h,\n\n    s(property, value) {\n      return stringify(property, value, ctx)\n    },\n\n    d(section, key, color) {\n      return darkColor(section, key, ctx, color)\n    },\n\n    v(value) {\n      if (!variantCache.has(value)) {\n        variantCache.set(\n          value,\n          find(value, variants, variantResolvers, getVariantResolver, ctx) || '&:' + value,\n        )\n      }\n\n      return variantCache.get(value) as string\n    },\n\n    r(className, isDark) {\n      const key = JSON.stringify([className, isDark])\n\n      if (!ruleCache.has(key)) {\n        ruleCache.set(\n          key,\n          !ignored(className, ctx) &&\n            find(className, rules, ruleResolvers, getRuleResolver, ctx, isDark),\n        )\n\n        if (DEV) {\n          const rule = ruleCache.get(key)\n          if (rule == null && !reportedUnknownClasses.has(className)) {\n            reportedUnknownClasses.add(className)\n\n            warn(\n              `Unknown class ${JSON.stringify(className)} found.`,\n              'TWIND_INVALID_CLASS',\n              className,\n            )\n          }\n        }\n      }\n\n      return ruleCache.get(key)\n    },\n\n    f(rule) {\n      return finalize.reduce((rule, p) => p(rule, ctx), rule)\n    },\n  }\n\n  return ctx\n}\n\nfunction find<Value, Config, Result, Theme extends BaseTheme = BaseTheme>(\n  value: Value,\n  list: Config[],\n  cache: Map<Config, (value: Value, context: Context<Theme>, isDark?: boolean) => Result>,\n  getResolver: (\n    item: Config,\n  ) => (value: Value, context: Context<Theme>, isDark?: boolean) => Result,\n  context: Context<Theme>,\n  isDark?: boolean,\n) {\n  for (const item of list) {\n    let resolver = cache.get(item)\n\n    if (!resolver) {\n      cache.set(item, (resolver = getResolver(item)))\n    }\n\n    const resolved = resolver(value, context, isDark)\n\n    if (resolved) return resolved\n  }\n}\n\nfunction getVariantResolver<Theme extends BaseTheme = BaseTheme>(\n  variant: Variant<Theme>,\n): VariantFunction<Theme> {\n  return createVariantFunction(variant[0], variant[1])\n}\n\nfunction getRuleResolver<Theme extends BaseTheme = BaseTheme>(\n  rule: Rule<Theme>,\n): ResolveFunction<Theme> {\n  if (Array.isArray(rule)) {\n    return createResolveFunction(rule[0], rule[1], rule[2])\n  }\n\n  return createResolveFunction(rule)\n}\n\nfunction createVariantFunction<Theme extends BaseTheme = BaseTheme>(\n  patterns: MaybeArray<string | RegExp>,\n  resolve: string | VariantResolver<Theme>,\n): VariantFunction<Theme> {\n  return createResolve(patterns, typeof resolve == 'function' ? resolve : () => resolve)\n}\n\nfunction createResolveFunction<Theme extends BaseTheme = BaseTheme>(\n  patterns: MaybeArray<string | RegExp>,\n  resolve?: keyof CSSProperties | string | CSSObject | RuleResolver<Theme>,\n  convert?: MatchConverter<Theme>,\n): ResolveFunction<Theme> {\n  return createResolve(patterns, fromMatch(resolve as keyof CSSProperties, convert))\n}\n\nfunction createResolve<Result, Theme extends BaseTheme = BaseTheme>(\n  patterns: MaybeArray<string | RegExp>,\n  resolve: (match: MatchResult, context: Context<Theme>) => Result,\n): (value: string, context: Context<Theme>, isDark?: boolean) => Result | undefined {\n  return createRegExpExecutor(patterns, (value, condition, context, isDark?: boolean) => {\n    const match = condition.exec(value) as MatchResult | Falsey\n\n    if (match) {\n      // MATCH.$_ = value\n      match.$$ = value.slice(match[0].length)\n      match.dark = isDark\n\n      return resolve(match, context)\n    }\n  })\n}\n\nfunction createRegExpExecutor<Result, Theme extends BaseTheme = any>(\n  patterns: MaybeArray<string | RegExp>,\n  run: (value: string, condition: RegExp, context: Context<Theme>, isDark?: boolean) => Result,\n): (value: string, context: Context<Theme>, isDark?: boolean) => Result | undefined {\n  const conditions = asArray(patterns).map(toCondition)\n\n  return (value, context, isDark) => {\n    for (const condition of conditions) {\n      const result = run(value, condition, context, isDark)\n\n      if (result) return result\n    }\n  }\n}\n\nexport function toCondition(value: string | RegExp): RegExp {\n  // \"visible\" -> /^visible$/\n  // \"(float)-(left|right|none)\" -> /^(float)-(left|right|none)$/\n  // \"auto-rows-\" -> /^auto-rows-/\n  // \"gap(-|$)\" -> /^gap(-|$)/\n  return typeof value == 'string'\n    ? new RegExp('^' + value + (value.includes('$') || value.slice(-1) == '-' ? '' : '$'))\n    : value\n}\n","import type {\n  BaseTheme,\n  ExtractThemes,\n  Preset,\n  Twind,\n  Sheet,\n  TwindConfig,\n  TwindRule,\n  TwindUserConfig,\n} from './types'\nimport type { SortableRule } from './internal/sorted-insertion-index'\n\nimport { sortedInsertionIndex } from './internal/sorted-insertion-index'\nimport { stringify } from './internal/stringify'\nimport { createContext } from './internal/context'\nimport { translate, translateWith } from './internal/translate'\nimport { parse } from './parse'\nimport { defineConfig } from './define-config'\nimport { asArray } from './utils'\nimport { serialize } from './internal/serialize'\nimport { Layer } from './internal/precedence'\n\n/**\n * @group Runtime\n * @param config\n * @param sheet\n */\nexport function twind<Theme extends BaseTheme = BaseTheme, Target = unknown>(\n  config: TwindConfig<Theme>,\n  sheet: Sheet<Target>,\n): Twind<Theme, Target>\n\nexport function twind<\n  Theme = BaseTheme,\n  Presets extends Preset<any>[] = Preset[],\n  Target = unknown,\n>(\n  config: TwindUserConfig<Theme, Presets>,\n  sheet: Sheet<Target>,\n): Twind<BaseTheme & ExtractThemes<Theme, Presets>, Target>\n\nexport function twind(userConfig: TwindConfig<any> | TwindUserConfig<any>, sheet: Sheet): Twind {\n  const config = defineConfig(userConfig as TwindUserConfig<any>)\n\n  const context = createContext(config)\n\n  // Map of tokens to generated className\n  let cache = new Map<string, string>()\n\n  // An array of precedence by index within the sheet\n  // always sorted\n  let sortedPrecedences: SortableRule[] = []\n\n  // Cache for already inserted css rules\n  // to prevent double insertions\n  let insertedRules = new Set<string>()\n\n  sheet.resume(\n    (className) => cache.set(className, className),\n    (cssText, rule) => {\n      sheet.insert(cssText, sortedPrecedences.length, rule)\n      sortedPrecedences.push(rule)\n      insertedRules.add(cssText)\n    },\n  )\n\n  function insert(rule: TwindRule): string | undefined {\n    const finalRule = context.f(rule)\n\n    const cssText = stringify(finalRule)\n\n    // If not already inserted\n    if (cssText && !insertedRules.has(cssText)) {\n      // Mark rule as inserted\n      insertedRules.add(cssText)\n\n      // Find the correct position\n      const index = sortedInsertionIndex(sortedPrecedences, rule)\n\n      // Insert\n      sheet.insert(cssText, index, rule)\n\n      // Update sorted index\n      sortedPrecedences.splice(index, 0, rule)\n    }\n\n    return finalRule.n\n  }\n\n  return Object.defineProperties(\n    function tw(tokens) {\n      if (!cache.size) {\n        for (let preflight of asArray(config.preflight)) {\n          if (typeof preflight == 'function') {\n            preflight = preflight(context)\n          }\n\n          if (preflight) {\n            ;(typeof preflight == 'string'\n              ? translateWith('', Layer.b, parse(preflight), context, Layer.b, [], false, true)\n              : serialize(preflight, {}, context, Layer.b)\n            ).forEach(insert)\n          }\n        }\n      }\n\n      tokens = '' + tokens\n\n      let className = cache.get(tokens)\n\n      if (!className) {\n        const classNames = new Set<string | undefined>()\n\n        for (const rule of translate(parse(tokens), context)) {\n          classNames.add(rule.c).add(insert(rule))\n        }\n\n        className = [...classNames].filter(Boolean).join(' ')\n\n        // Remember the generated class name\n        cache.set(tokens, className).set(className, className)\n      }\n\n      return className\n    } as Twind,\n    Object.getOwnPropertyDescriptors({\n      get target() {\n        return sheet.target\n      },\n\n      theme: context.theme,\n\n      config,\n\n      snapshot() {\n        const restoreSheet = sheet.snapshot()\n        const insertedRules$ = new Set(insertedRules)\n        const cache$ = new Map(cache)\n        const sortedPrecedences$ = [...sortedPrecedences]\n\n        return () => {\n          restoreSheet()\n\n          insertedRules = insertedRules$\n          cache = cache$\n          sortedPrecedences = sortedPrecedences$\n        }\n      },\n\n      clear() {\n        sheet.clear()\n\n        insertedRules = new Set()\n        cache = new Map()\n        sortedPrecedences = []\n      },\n\n      destroy() {\n        this.clear()\n        sheet.destroy()\n      },\n    }),\n  )\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport type {\n  BaseTheme,\n  MaybeColorValue,\n  ThemeConfig,\n  ThemeFunction,\n  ThemeSectionResolverContext,\n} from '../types'\nimport { toColorValue } from '../colors'\nimport { resolveThemeFunction } from './serialize'\n\nexport function makeThemeFunction<Theme extends BaseTheme = BaseTheme>({\n  extend = {},\n  ...base\n}: ThemeConfig<Theme>): ThemeFunction<Theme> {\n  const resolved: Record<string, any> = {}\n\n  const resolveContext: ThemeSectionResolverContext<Theme> = {\n    get colors() {\n      return theme('colors')\n    },\n\n    theme,\n\n    // Stub implementation as negated values are automatically infered and do _not_ need to be in the theme\n    negative() {\n      return {}\n    },\n\n    breakpoints(screens) {\n      const breakpoints = {} as Record<string, string>\n\n      for (const key in screens) {\n        if (typeof screens[key] == 'string') {\n          breakpoints['screen-' + key] = screens[key] as string\n        }\n      }\n\n      return breakpoints\n    },\n  }\n\n  return theme as ThemeFunction<Theme>\n\n  function theme(\n    sectionKey?: string,\n    key?: string,\n    defaultValue?: any,\n    opacityValue?: string | undefined,\n  ): any {\n    if (sectionKey) {\n      ;({ 1: sectionKey, 2: opacityValue } =\n        // eslint-disable-next-line no-sparse-arrays\n        /^(\\S+?)(?:\\s*\\/\\s*([^/]+))?$/.exec(sectionKey) || ([, sectionKey] as [undefined, string]))\n\n      if (/[.[]/.test(sectionKey)) {\n        const path: string[] = []\n\n        // dotted deep access: colors.gray.500 or spacing[2.5]\n        sectionKey.replace(\n          /\\[([^\\]]+)\\]|([^.[]+)/g,\n          (_, $1, $2 = $1) => path.push($2) as unknown as string,\n        )\n\n        sectionKey = path.shift() as string\n        defaultValue = key\n        key = path.join('-')\n      }\n\n      const section =\n        resolved[sectionKey] ||\n        // two-step deref to allow extend section to reference base section\n        Object.assign(\n          Object.assign(\n            // Make sure to not get into recursive calls\n            (resolved[sectionKey] = {}),\n            deref(base, sectionKey),\n          ),\n          deref(extend, sectionKey),\n        )\n\n      if (key == null) return section\n\n      key ||= 'DEFAULT'\n\n      const value =\n        section[key] ?? key.split('-').reduce((obj, prop) => obj?.[prop], section) ?? defaultValue\n\n      return opacityValue\n        ? toColorValue(value, { opacityValue: resolveThemeFunction(opacityValue, theme) })\n        : value\n    }\n\n    // Collect the whole theme\n    const result = {} as Record<string, any>\n\n    for (const section of [...Object.keys(base), ...Object.keys(extend)]) {\n      result[section] = theme(section)\n    }\n\n    return result\n  }\n\n  function deref(source: any, section: string): any {\n    let value = source[section]\n\n    if (typeof value == 'function') {\n      value = value(resolveContext)\n    }\n\n    if (value && /color|fill|stroke/i.test(section)) {\n      return flattenColorPalette(value)\n    }\n\n    return value\n  }\n}\n\nfunction flattenColorPalette(colors: Record<string, MaybeColorValue>, path: string[] = []): any {\n  const flattend: Record<string, MaybeColorValue> = {}\n\n  for (const key in colors) {\n    const value = colors[key]\n\n    let keyPath = [...path, key]\n\n    flattend[keyPath.join('-')] = value\n\n    if (key == 'DEFAULT') {\n      keyPath = path\n      flattend[path.join('-')] = value\n    }\n\n    if (typeof value == 'object') {\n      Object.assign(flattend, flattenColorPalette(value, keyPath))\n    }\n  }\n\n  return flattend\n}\n","/**\n * Determines if two class name strings contain the same classes.\n *\n * @param a first class names\n * @param b second class names\n * @returns are they different\n */\nexport function changed(a: string, b: string): boolean {\n  return a != b && '' + a.split(' ').sort() != '' + b.split(' ').sort()\n}\n","import type { BaseTheme, Twind } from './types'\n\nimport { changed } from './internal/changed'\nimport { tw as tw$ } from './runtime'\n\nexport interface TwindMutationObserver {\n  observe: (target: Node) => void\n  disconnect: () => void\n}\n\n/**\n * @group Runtime\n * @param tw\n * @param target\n * @returns\n * @internal\n */\nexport function mo<Theme extends BaseTheme = BaseTheme, Target = unknown>(\n  tw: Twind<Theme, Target>,\n): TwindMutationObserver {\n  const observer = new MutationObserver(handleMutationRecords)\n\n  return {\n    observe(target) {\n      observer.observe(target, {\n        attributeFilter: ['class'],\n        subtree: true,\n        childList: true,\n      })\n\n      // handle class attribute on target\n      handleClassAttributeChange(target as Element)\n\n      // handle children of target\n      handleMutationRecords([{ target, type: '' }])\n    },\n    disconnect() {\n      observer.disconnect()\n    },\n  }\n\n  function handleMutationRecords(records: MinimalMutationRecord[]): void {\n    for (const { type, target } of records) {\n      if (type[0] == 'a' /* attribute */) {\n        // class attribute has been changed\n        handleClassAttributeChange(target as Element)\n      } else {\n        /* childList */\n        // some nodes have been added — find all with a class attribute\n        for (const el of (target as Element).querySelectorAll('[class]')) {\n          handleClassAttributeChange(el)\n        }\n      }\n    }\n\n    // remove pending mutations — these are triggered by updating the class attributes\n    observer.takeRecords()\n    // XXX maybe we need to handle all pending mutations\n    // observer.takeRecords().forEach(handleMutation)\n  }\n\n  function handleClassAttributeChange(target: Element): void {\n    // Not using target.classList.value (not supported in all browsers) or target.class (this is an SVGAnimatedString for svg)\n    // safe guard access to getAttribute because ShadowRoot does not have attribute but child nodes\n    const tokens = target.getAttribute?.('class')\n\n    let className: string\n\n    // try do keep classNames unmodified\n    if (tokens && changed(tokens, (className = tw(tokens)))) {\n      // Not using `target.className = ...` as that is read-only for SVGElements\n      target.setAttribute('class', className)\n    }\n  }\n}\n\n/**\n * @group Runtime\n * @param tw\n * @param target\n * @returns\n */\nexport function observe<Theme extends BaseTheme = BaseTheme, Target = unknown>(\n  tw: Twind<Theme, Target> = tw$ as unknown as Twind<Theme, Target>,\n  target: false | Node = typeof document != 'undefined' && document.documentElement,\n): Twind<Theme, Target> {\n  if (target) {\n    const observer = mo(tw)\n\n    observer.observe(target)\n\n    // monkey patch tw.destroy to disconnect this observer\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    const { destroy } = tw\n    tw.destroy = () => {\n      observer.disconnect()\n      destroy.call(tw)\n    }\n  }\n\n  return tw\n}\n\n/**\n * Simplified MutationRecord which allows us to pass an\n * ArrayLike (compatible with Array and NodeList) `addedNodes` and\n * omit other properties we are not interested in.\n */\ninterface MinimalMutationRecord {\n  readonly type: string\n  readonly target: Node\n}\n","import { warn } from './internal/warn'\nimport type { Sheet, SheetRule } from './types'\nimport { asArray, noop } from './utils'\n\nfunction getStyleElement(selector: string | null | undefined | false): HTMLStyleElement {\n  let style = document.querySelector(selector || 'style[data-twind=\"\"]')\n\n  if (!style || style.tagName != 'STYLE') {\n    style = document.createElement('style')\n    document.head.prepend(style)\n  }\n\n  ;(style as HTMLElement).dataset.twind = 'claimed'\n\n  return style as HTMLStyleElement\n}\n\n/**\n * @group Sheets\n * @param element\n * @returns\n */\nexport function cssom(\n  element?: CSSStyleSheet | HTMLStyleElement | string | null | false,\n): Sheet<CSSStyleSheet> {\n  const target = (element as CSSStyleSheet)?.cssRules\n    ? (element as CSSStyleSheet)\n    : ((element && typeof element != 'string'\n        ? (element as HTMLStyleElement)\n        : getStyleElement(element)\n      ).sheet as CSSStyleSheet)\n\n  return {\n    target,\n\n    snapshot() {\n      // collect current rules\n      const rules = Array.from(target.cssRules, (rule) => rule.cssText)\n\n      return () => {\n        // remove all existing rules\n        this.clear()\n\n        // add all snapshot rules back\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        rules.forEach(this.insert as (cssText: string, index: number) => void)\n      }\n    },\n\n    clear() {\n      // remove all added rules\n      for (let index = target.cssRules.length; index--; ) {\n        target.deleteRule(index)\n      }\n    },\n\n    destroy() {\n      target.ownerNode?.remove()\n    },\n\n    insert(cssText, index) {\n      try {\n        // Insert\n        target.insertRule(cssText, index)\n      } catch (error) {\n        // Empty rule to keep index valid — not using `*{}` as that would show up in all rules (DX)\n        target.insertRule(':root{}', index)\n\n        // Some thrown errors are because of specific pseudo classes\n        // lets filter them to prevent unnecessary warnings\n        // ::-moz-focus-inner\n        // :-moz-focusring\n        if (!/:-[mwo]/.test(cssText)) {\n          warn((error as Error).message, 'TWIND_INVALID_CSS', cssText)\n        }\n      }\n    },\n\n    resume: noop,\n  }\n}\n\n/**\n * @group Sheets\n * @param element\n * @returns\n */\nexport function dom(element?: HTMLStyleElement | string | null | false): Sheet<HTMLStyleElement> {\n  const target = element && typeof element != 'string' ? element : getStyleElement(element)\n\n  return {\n    target,\n\n    snapshot() {\n      // collect current rules\n      const rules = Array.from(target.childNodes, (node) => node.textContent as string)\n\n      return () => {\n        // remove all existing rules\n        this.clear()\n\n        // add all snapshot rules back\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        rules.forEach(this.insert as (cssText: string, index: number) => void)\n      }\n    },\n\n    clear() {\n      target.textContent = ''\n    },\n\n    destroy() {\n      target.remove()\n    },\n\n    insert(cssText, index) {\n      target.insertBefore(document.createTextNode(cssText), target.childNodes[index] || null)\n    },\n\n    resume: noop,\n  }\n}\n\n/**\n * @group Sheets\n * @param includeResumeData\n * @returns\n */\nexport function virtual(includeResumeData?: boolean): Sheet<string[]> {\n  const target: string[] = []\n\n  return {\n    target,\n\n    snapshot() {\n      // collect current rules\n      const rules = [...target]\n\n      return () => {\n        // remove all existing rules and add all snapshot rules back\n        target.splice(0, target.length, ...rules)\n      }\n    },\n\n    clear() {\n      target.length = 0\n    },\n\n    destroy() {\n      this.clear()\n    },\n\n    insert(css, index, rule) {\n      target.splice(\n        index,\n        0,\n        includeResumeData\n          ? `/*!${rule.p.toString(36)},${(rule.o * 2).toString(36)}${\n              rule.n ? ',' + rule.n : ''\n            }*/${css}`\n          : css,\n      )\n    },\n\n    resume: noop,\n  }\n}\n\n/**\n * Returns a sheet useable in the current environment.\n *\n * @group Sheets\n * @param useDOMSheet usually something like `process.env.NODE_ENV != 'production'` or `import.meta.env.DEV` (default: browser={@link cssom}, server={@link virtual})\n * @param disableResume to not include or use resume data\n * @returns a sheet to use\n */\nexport function getSheet(\n  useDOMSheet?: boolean,\n  disableResume?: boolean,\n): Sheet<string[] | HTMLStyleElement | CSSStyleSheet> {\n  const sheet =\n    typeof document == 'undefined' ? virtual(!disableResume) : useDOMSheet ? dom() : cssom()\n\n  if (!disableResume) sheet.resume = resume\n\n  return sheet\n}\n\n/**\n * @group Sheets\n * @param target\n * @returns\n */\nexport function stringify(target: unknown): string {\n  // string[] | CSSStyleSheet | HTMLStyleElement\n  return (\n    // prefer the raw text content of a CSSStyleSheet as it may include the resume data\n    ((target as CSSStyleSheet).ownerNode || (target as HTMLStyleElement)).textContent ||\n    ((target as CSSStyleSheet).cssRules\n      ? Array.from((target as CSSStyleSheet).cssRules, (rule) => rule.cssText)\n      : asArray(target)\n    ).join('')\n  )\n}\n\nfunction resume(\n  this: Sheet,\n  addClassName: (className: string) => void,\n  insert: (cssText: string, rule: SheetRule) => void,\n) {\n  // hydration from SSR sheet\n  const textContent = stringify(this.target)\n  const RE = /\\/\\*!([\\da-z]+),([\\da-z]+)(?:,(.+?))?\\*\\//g\n\n  // only if this is a hydratable sheet\n  if (RE.test(textContent)) {\n    // RE has global flag — reset index to get the first match as well\n    RE.lastIndex = 0\n\n    // 1. start with a fresh sheet\n    this.clear()\n\n    // 2. add all existing class attributes to the token/className cache\n    if (typeof document != 'undefined') {\n      for (const el of document.querySelectorAll('[class]')) {\n        addClassName(el.getAttribute('class') as string)\n      }\n    }\n\n    // 3. parse SSR styles\n    let lastMatch: RegExpExecArray | null | undefined\n\n    while (\n      (function commit(match?: RegExpExecArray | null) {\n        if (lastMatch) {\n          insert(\n            // grep the cssText from the previous match end up to this match start\n            textContent.slice(lastMatch.index + lastMatch[0].length, match?.index),\n            {\n              p: parseInt(lastMatch[1], 36),\n              o: parseInt(lastMatch[2], 36) / 2,\n              n: lastMatch[3],\n            },\n          )\n        }\n\n        return (lastMatch = match)\n      })(RE.exec(textContent))\n    ) {\n      /* no-op */\n    }\n  }\n}\n","import type { CSSObject, CSSValue, StringLike } from './types'\n\nimport { escape, hash } from './utils'\nimport { tw as tw$ } from './runtime'\nimport { astish } from './internal/astish'\nimport { css } from './css'\n\nexport interface KeyframesFunction {\n  (style: CSSObject | string): StringLike\n\n  (strings: TemplateStringsArray, ...interpolations: readonly CSSValue[]): StringLike\n\n  bind(thisArg?: ((tokens: string) => string) | undefined | void): Keyframes & {\n    [label: string]: KeyframesFunction\n  }\n\n  call(\n    thisArg: ((tokens: string) => string) | undefined | void,\n    style: CSSObject | string,\n  ): StringLike\n\n  call(\n    thisArg: ((tokens: string) => string) | undefined | void,\n    strings: TemplateStringsArray,\n    ...interpolations: readonly CSSValue[]\n  ): StringLike\n\n  apply(\n    thisArg: ((tokens: string) => string) | undefined | void,\n    args: [CSSObject | string],\n  ): StringLike\n\n  apply(\n    thisArg: ((tokens: string) => string) | undefined | void,\n    args:\n      | [CSSObject | string]\n      | [strings: TemplateStringsArray, ...interpolations: readonly CSSValue[]],\n  ): StringLike\n}\n\nexport type Keyframes = KeyframesFunction & {\n  [label: string]: KeyframesFunction\n}\n\n/**\n * **Note**: The styles will be injected on first use.\n *\n * @group Style Injectors\n */\nexport const keyframes = /* #__PURE__ */ bind()\n\nfunction bind(thisArg: ((tokens: string) => string) | undefined | void): Keyframes {\n  return new Proxy(\n    function keyframes(\n      strings: CSSObject | string | TemplateStringsArray,\n      ...interpolations: readonly CSSValue[]\n    ): StringLike {\n      return keyframes$(thisArg, '', strings, interpolations)\n    } as Keyframes,\n    {\n      get(target, name) {\n        if (name === 'bind') {\n          return bind\n        }\n\n        if (name in target) return target[name as string]\n\n        return function namedKeyframes(\n          strings: CSSObject | string | TemplateStringsArray,\n          ...interpolations: readonly CSSValue[]\n        ): StringLike {\n          return keyframes$(thisArg, name as string, strings, interpolations)\n        }\n      },\n    },\n  )\n}\n\nfunction keyframes$(\n  thisArg: ((tokens: string) => string) | undefined | void,\n  name: string,\n  strings: CSSObject | string | TemplateStringsArray,\n  interpolations: readonly CSSValue[],\n): StringLike {\n  // lazy inject keyframes\n  return {\n    toString() {\n      // lazy access tw\n      const tw = typeof thisArg == 'function' ? thisArg : tw$\n\n      const ast = astish(strings, interpolations)\n\n      const keyframeName = escape(name + hash(JSON.stringify([name, ast])))\n\n      tw(\n        css({\n          [`@keyframes ${keyframeName}`]: astish(strings, interpolations),\n        } as unknown as CSSObject),\n      )\n\n      return keyframeName\n    },\n  } as StringLike\n}\n","import type { Twind } from './types'\nimport { changed } from './internal/changed'\nimport { tw as tw$ } from './runtime'\nimport { identity } from './utils'\nimport { stringify } from './sheets'\nimport { fixClassList, parseHTML } from './internal/parse-html'\n\n/**\n * Options for {@link inline}\n */\nexport interface InlineOptions {\n  /**\n   * {@link Twind} instance to use (default: {@link @twind/core.tw})\n   */\n  tw?: Twind<any, any>\n\n  /**\n   * Allows to minify the resulting CSS.\n   */\n  minify?: InlineMinify\n}\n\nexport interface InlineMinify {\n  /**\n   * Called to minify the CSS.\n   *\n   * @param css the CSS to minify\n   * @param html the HTML that will be used — allows to only include above-the-fold CSS\n   * @return the resulting CSS\n   */\n  (css: string, html: string): string\n}\n/**\n * Used for static HTML processing (usually to provide SSR support for your javascript-powered web apps)\n *\n * 1. parse the markup and process element classes with the provided Twind instance\n * 2. update the class attributes _if_ necessary\n * 3. inject a style element with the CSS as last element into the head\n * 4. return the HTML string with the final element classes\n *\n * ```js\n * import { inline } from '@twind/core'\n *\n * function render() {\n *   return inline(renderApp())\n * }\n * ```\n *\n * Minify CSS with [@parcel/css](https://www.npmjs.com/package/@parcel/css):\n *\n * ```js\n * import { inline } from '@twind/core'\n * import { transform } from '@parcel/css'\n *\n * function render() {\n *   return inline(renderApp(), { minify: (css) => transform({ filename: 'twind.css', code: Buffer.from(css), minify: true }) })\n * }\n * ```\n *\n * You can provide your own Twind instance:\n *\n * ```js\n * import { inline } from '@twind/core'\n * import { tw } from './custom/twind/instance'\n *\n * function render() {\n *   return inline(renderApp(), { tw })\n * }\n * ```\n *\n * @group Static Extraction\n * @param markup HTML to process\n * @param options to customize the processing\n * @returns the resulting HTML\n */\nexport function inline(markup: string, options: InlineOptions['tw'] | InlineOptions = {}): string {\n  const { tw = tw$, minify = identity } =\n    typeof options == 'function' ? ({ tw: options } as InlineOptions) : options\n\n  const { html, css } = extract(markup, tw)\n\n  // inject as last element into the head\n  return html.replace('</head>', `<style data-twind>${minify(css, html)}</style></head>`)\n}\n\n/**\n * Result of {@link extract}\n */\nexport interface ExtractResult {\n  /** The possibly modified HTML */\n  html: string\n\n  /** The generated CSS */\n  css: string\n}\n\n/**\n * Used for static HTML processing (usually to provide SSR support for your javascript-powered web apps)\n *\n * **Note**: Consider using {@link inline} instead.\n *\n * 1. parse the markup and process element classes with the provided Twind instance\n * 2. update the class attributes _if_ necessary\n * 3. return the HTML string with the final element classes\n *\n * ```js\n * import { extract } from '@twind/core'\n *\n * function render() {\n *   const { html, css } = extract(renderApp())\n *\n *   // inject as last element into the head\n *   return html.replace('</head>', `<style data-twind>${css}</style></head>`)\n * }\n * ```\n *\n * You can provide your own Twind instance:\n *\n * ```js\n * import { extract } from '@twind/core'\n * import { tw } from './custom/twind/instance'\n *\n * function render() {\n *   const { html, css } = extract(renderApp(), tw)\n *\n *   // inject as last element into the head\n *   return html.replace('</head>', `<style data-twind>${css}</style></head>`)\n * }\n * ```\n *\n * @group Static Extraction\n * @param markup HTML to process\n * @param tw a {@link Twind} instance (default: twind managed tw)\n * @returns the possibly modified html and css\n */\nexport function extract(html: string, tw: Twind<any, any> = tw$): ExtractResult {\n  const restore = tw.snapshot()\n\n  const result = { html: consume(html, tw), css: stringify(tw.target) }\n\n  restore()\n\n  return result\n}\n\n/**\n * Used for static HTML processing (usually to provide SSR support for your javascript-powered web apps)\n *\n * **Note**: Consider using {@link inline} or {@link extract} instead.\n *\n * 1. parse the markup and process element classes with the provided Twind instance\n * 2. update the class attributes _if_ necessary\n * 3. return the HTML string with the final element classes\n *\n * ```js\n * import { consume, stringify, tw } from '@twind/core'\n *\n * function render() {\n *   const html = renderApp()\n *\n *   // remember global classes\n *   const restore = tw.snapshot()\n *\n *   // generated markup\n *   const markup = consume(html)\n *\n *   // create CSS\n *   const css = stringify(tw.target)\n *\n *   // restore global classes\n *   restore()\n *\n *   // inject as last element into the head\n *   return markup.replace('</head>', `<style data-twind>${css}</style></head>`)\n * }\n * ```\n *\n * You can provide your own Twind instance:\n *\n * ```js\n * import { consume, stringify } from '@twind/core'\n * import { tw } from './custom/twind/instance'\n *\n * function render() {\n *   const html = renderApp()\n *\n *   // remember global classes\n *   const restore = snapshot(tw.target)\n *\n *   // generated markup\n *   const markup = consume(html)\n *\n *   // restore global classes\n *   restore()\n *\n *   // create CSS\n *   const css = stringify(tw.target)\n *\n *   // inject as last element into the head\n *   return markup.replace('</head>', `<style data-twind>${css}</style></head>`)\n * }\n * ```\n *\n * @group Static Extraction\n * @param markup HTML to process\n * @param tw a {@link Twind} instance\n * @returns possibly modified HTML\n */\nexport function consume(markup: string, tw: (className: string) => string = tw$): string {\n  let result = ''\n  let lastChunkStart = 0\n\n  parseHTML(markup, (startIndex, endIndex, quote) => {\n    const value = markup.slice(startIndex, endIndex)\n    const className = tw(fixClassList(value, quote))\n\n    // We only need to shift things around if we need to actually change the markup\n    if (changed(value, className)) {\n      // We've hit another mutation boundary\n\n      // Add quote if necessary\n      quote = quote ? '' : '\"'\n\n      result += markup.slice(lastChunkStart, startIndex) + quote + className + quote\n\n      lastChunkStart = endIndex\n    }\n  })\n\n  // Combine the current result with the tail-end of the input\n  return result + markup.slice(lastChunkStart, markup.length)\n}\n","// For now we are using a simple parser adapted from htm (https://github.com/developit/htm/blob/master/src/build.mjs)\n// If we find any issues we can switch to something more sophisticated like\n// - https://github.com/acrazing/html5parser\n// - https://github.com/fb55/htmlparser2\n\nconst MODE_SLASH = 0\nconst MODE_TEXT = 1\nconst MODE_WHITESPACE = 2\nconst MODE_TAGNAME = 3\nconst MODE_COMMENT = 4\nconst MODE_ATTRIBUTE = 5\n\nexport function parseHTML(\n  markup: string,\n  onClass: (startIndex: number, endIndex: number, quote: string) => false | unknown,\n): void {\n  let mode = MODE_TEXT\n  let startIndex = 0\n  let quote = ''\n  let attributeName = ''\n\n  const commit = (currentIndex: number): void => {\n    if (mode == MODE_ATTRIBUTE && attributeName == 'class') {\n      if (onClass(startIndex, currentIndex, quote) === false) {\n        markup = ''\n      }\n    }\n  }\n\n  for (let position = 0; position < markup.length; position++) {\n    const char = markup[position]\n\n    if (mode == MODE_TEXT) {\n      if (char == '<') {\n        mode = markup.substr(position + 1, 3) == '!--' ? MODE_COMMENT : MODE_TAGNAME\n      }\n    } else if (mode == MODE_COMMENT) {\n      // Ignore everything until the last three characters are '-', '-' and '>'\n      if (char == '>' && markup.slice(position - 2, position) == '--') {\n        mode = MODE_TEXT\n      }\n    } else if (quote) {\n      if (char == quote && markup[position - 1] != '\\\\') {\n        commit(position)\n        mode = MODE_WHITESPACE\n        quote = ''\n      }\n    } else if (char == '\"' || char == \"'\") {\n      quote = char\n      startIndex += 1\n    } else if (char == '>') {\n      commit(position)\n      mode = MODE_TEXT\n    } else if (!mode) {\n      // MODE_SLASH\n      // Ignore everything until the tag ends\n    } else if (char == '=') {\n      attributeName = markup.slice(startIndex, position)\n      mode = MODE_ATTRIBUTE\n      startIndex = position + 1\n    } else if (char == '/' && (mode < MODE_ATTRIBUTE || markup[position + 1] == '>')) {\n      commit(position)\n      mode = MODE_SLASH\n    } else if (/\\s/.test(char)) {\n      // <a class=font-bold>\n      commit(position)\n      mode = MODE_WHITESPACE\n      startIndex = position + 1\n    }\n  }\n}\n\nexport function fixClassList(value: string, quote: string): string {\n  // const value = markup.slice(startIndex, endIndex)\n\n  // Lets handle some special react cases:\n  //   * arbitrary values for `content-`\n  //     <span class=\"before:content-[&#x27;asas&#x27;]\"></span>\n  //     <span class=\"before:content-[&quot;asas&quot;]\"></span>\n  //\n  //   * self-referenced groups\n  //     <span class=\"flex(&amp; col)\"></span>\n  //\n  //     If a class name contains `'`, `\"`, or `&` those will be replaced with HTML entities\n  //     To fix this we replace those for depending on the actual symbol that is being used\n  //     As an alternative we could always escape class names direcly in twind like react does\n  //     but this works for now\n  return (\n    quote == `\"`\n      ? // `'` -> &#39; &apos; &#x27;\n        value.replace(/(=|\\[)(?:&#39;|&apos;|&#x27;)|(?:&#39;|&apos;|&#x27;)(])/g, `$1'$2`)\n      : quote == `'`\n      ? // `\"` -> &#34; &quot; &#x22;\n        value.replace(/(=|\\[)(?:&#34;|&quot;|&#x22;)|(?:&#34;|&quot;|&#x22;)(])/g, `$1\"$2`)\n      : value\n  ).replace(/(&#38;|&amp;|&#x26;)/g, '&')\n}\n","// Based on https://github.com/modulz/stitches\n// License MIT\n// eslint-disable @typescript-eslint/ban-types\n\nimport type { Falsey, MatchResult } from './types'\nimport { parse } from './parse'\nimport { Layer } from './internal/precedence'\n\nimport { escape, hash } from './utils'\nimport { define } from './internal/define'\n\nexport type StrictMorphVariant<T> = T extends number\n  ? `${T}` | T\n  : T extends 'true'\n  ? true | T\n  : T extends 'false'\n  ? false | T\n  : T\n\nexport type MorphVariant<T> = T extends number\n  ? `${T}` | T\n  : T extends 'true'\n  ? boolean | T\n  : T extends 'false'\n  ? boolean | T\n  : T extends `${number}`\n  ? number | T\n  : T\n\nexport type StyleTokenValue = string | Falsey\n\n// No support for thunks yet — these may use props that are not in the generated class name\n// and may therefore override each other\n\nexport type StyleToken = StyleTokenValue\n\n/**\n * Allows to extract the supported properties of a style function.\n *\n * Here is an example for `react`\n * ```js\n * import { HTMLAttributes } from \"react\";\n * import { style, PropsOf } from \"@twind/core\";\n * const button = style({ ... })\n * type ButtonProps = PropsOf<typeof button>\n * export const Button = (props: ButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n *   return <button className={style(props)} {...rest} />\n * }\n * ```\n */\nexport type PropsOf<T> = T extends Style<infer Variants>\n  ? {\n      [key in keyof Variants]: MorphVariant<keyof Variants[key]>\n    }\n  : never\n\nexport type DefaultVariants<Variants> = {\n  [key in keyof Variants]?:\n    | StrictMorphVariant<keyof Variants[key]>\n    | (Record<string, StrictMorphVariant<keyof Variants[key]>> & {\n        /** initial breakpoint */\n        _?: StrictMorphVariant<keyof Variants[key]>\n      })\n}\n\nexport type VariantsProps<Variants> = {\n  [key in keyof Variants]?:\n    | MorphVariant<keyof Variants[key]>\n    // TODO possible breakpoint from theme\n    | (Record<string, MorphVariant<keyof Variants[key]>> & {\n        /** initial breakpoint */\n        _?: MorphVariant<keyof Variants[key]>\n      })\n}\n\nexport type When<Variants> = {\n  [key in keyof Variants]?: StrictMorphVariant<keyof Variants[key]>\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport interface StyleConfig<Variants, BaseVariants = {}> {\n  /** Used as prefix */\n  label?: string\n  base?: StyleToken\n  props?: Variants & {\n    [variant in keyof BaseVariants]?: {\n      [key in keyof BaseVariants[variant]]?: StyleToken\n    }\n  }\n  defaults?: DefaultVariants<Variants & BaseVariants>\n  when?: [match: When<Variants & BaseVariants>, then: StyleToken][]\n}\n\nexport interface StyleFunction {\n  <Variants>(config?: StyleConfig<Variants>): Style<Variants>\n  <Variants, BaseVariants>(\n    base: Style<BaseVariants>,\n    config?: StyleConfig<Variants, BaseVariants>,\n  ): Style<Variants & BaseVariants>\n}\n\nexport type StyleProps<Variants> = VariantsProps<Variants>\n\nexport interface Style<Variants> {\n  /**\n   * CSS Class associated with the current component.\n   *\n   * ```jsx\n   * const button = style({\n   *   base: css({\n   *     color: \"DarkSlateGray\"\n   *   })\n   * })\n   *\n   * <div className={button()} />\n   * ```\n   * <br />\n   */\n  (props?: StyleProps<Variants>): string\n\n  /**\n   * To be used as resolve within config.rules:\n   *\n   * ```js\n   * {\n   *   rules: [\n   *     // label?prop=value&other=propValue\n   *     // if the style has base eg no prop is required\n   *     ['label(\\\\?.+)?', style( /* ... *\\/ )],\n   *\n   *     // if the style requires at least one prop\n   *     ['label\\\\?(.+)', style( /* ... *\\/ )],\n   *   ]\n   * }\n   * ```\n   *\n   * The first group is used to extract the props using {@link !URLSearchParams | URLSearchParams}.\n   */\n  (match: MatchResult): string\n\n  readonly defaults: StyleProps<Variants>\n\n  /**\n   * CSS Class associated with the current component.\n   *\n   * ```js\n   * const button = style({\n   *   base: css`\n   *     color: \"DarkSlateGray\"\n   *   `\n   * })\n   *\n   * <div className={button.className} />\n   * ```\n   */\n  readonly className: string\n\n  /**\n   * CSS Selector associated with the current component.\n   *\n   * ```js\n   * const button = style({\n   *   base: css({\n   *     color: \"DarkSlateGray\"\n   *   })\n   * })\n   *\n   * const Card = styled({\n   *   base: css`\n   *     & ${button.selector} {\n   *       boxShadow: \"0 0 0 5px\"\n   *     }\n   *   `\n   * })\n   * ```\n   */\n  readonly selector: string\n}\n\n/**\n * @group Class Name Generators\n */\nexport const style = (<Variants, BaseVariants>(\n  base: Style<BaseVariants> | StyleConfig<Variants>,\n  config?: StyleConfig<Variants, BaseVariants>,\n): Style<Variants & BaseVariants> =>\n  (typeof base == 'function' ? createStyle(config, base) : createStyle(base)) as Style<\n    Variants & BaseVariants\n  > &\n    string) as StyleFunction\n\nfunction createStyle<Variants, BaseVariants>(\n  config: StyleConfig<Variants, BaseVariants> = {},\n  parent?: Style<BaseVariants>,\n): Style<Variants & BaseVariants> {\n  const { label = 'style', base, props: variants = {}, defaults: localDefaults, when = [] } = config\n\n  const defaults = { ...parent?.defaults, ...localDefaults }\n\n  const id = hash(JSON.stringify([label, parent?.className, base, variants, defaults, when]))\n\n  // Layers:\n  // component: 0b010\n  // props: 0b011\n  // when: 0b100\n\n  const className = register('', base || '', Layer.c)\n\n  function register(mq: string, token: string, layer: number): string {\n    return define(\n      // `<name>#<id>` or `<parent>~<name>#<id>`\n      ((parent ? parent.className.replace(/#.+$/, '~') : '') + label + mq + id).replace(\n        /[: ,()[\\]]/,\n        '',\n      ),\n      layer,\n      token && parse(token),\n    )\n  }\n\n  return Object.defineProperties(\n    function style(allProps) {\n      let isWithinRuleDeclaration\n\n      if (Array.isArray(allProps)) {\n        isWithinRuleDeclaration = true\n        allProps = Object.fromEntries(new URLSearchParams(allProps[1]).entries()) as VariantsProps<\n          Variants & BaseVariants\n        >\n      }\n\n      const props = { ...defaults, ...allProps }\n\n      // If this style is used within config.rules we do NOT include the marker classes\n      let classNames = isWithinRuleDeclaration\n        ? ''\n        : (parent ? parent(props) + ' ' : '') + className\n\n      let token: StyleToken\n\n      for (const variantKey in variants) {\n        const variant = (variants as Record<string, Record<string, StyleToken>>)[variantKey]\n        const propsValue = (props as Record<string, unknown>)[variantKey]\n\n        if (propsValue === Object(propsValue)) {\n          // inline responsive breakpoints\n          let mq = ''\n          token = ''\n\n          for (const breakpoint in propsValue as Record<string, string>) {\n            const breakpointToken = variant[(propsValue as Record<string, string>)[breakpoint]]\n\n            if (breakpointToken) {\n              mq += '@' + breakpoint + '-' + (propsValue as Record<string, string>)[breakpoint]\n\n              token +=\n                (token && ' ') +\n                (breakpoint == '_' ? breakpointToken : breakpoint + ':(' + breakpointToken + ')')\n            }\n          }\n\n          if (token) {\n            classNames +=\n              ' ' + register('--' + variantKey + '-' + mq, token, 0b011 << 27 /* Shifts.layer */)\n          }\n        } else if ((token = variant[propsValue as string])) {\n          classNames +=\n            ' ' +\n            register(\n              '--' + variantKey + '-' + (propsValue as string),\n              token,\n              0b011 << 27 /* Shifts.layer */,\n            )\n        }\n      }\n\n      when.forEach((match, index) => {\n        let mq = ''\n\n        for (const variantKey in match[0]) {\n          const propsValue = (props as Record<string, unknown>)[variantKey]\n\n          // TODO we ignore inline responsive breakpoints for now — what be the result??\n          if (\n            propsValue !== Object(propsValue) &&\n            '' + propsValue == '' + (match[0] as Record<string, string>)[variantKey]\n          ) {\n            mq += (mq && '_') + variantKey + '-' + (propsValue as string)\n          } else {\n            mq = ''\n            break\n          }\n        }\n\n        if (mq && (token = match[1])) {\n          classNames +=\n            ' ' + register('-' + index + '--' + mq, token, 0b100 << 27 /* Shifts.layer */)\n        }\n      })\n\n      return classNames\n    } as Style<Variants & BaseVariants>,\n    Object.getOwnPropertyDescriptors({\n      className,\n      defaults,\n      selector: '.' + escape(className),\n    }),\n  )\n}\n","import type { Class } from './types'\nimport { parse } from './parse'\nimport { format } from './internal/format'\nimport { interpolate } from './internal/interpolate'\n\n/**\n * Constructs `class` strings conditionally.\n *\n * Twinds version of popular libraries like [classnames](https://github.com/JedWatson/classnames) or [clsx](https://github.com/lukeed/clsx).\n * The key advantage of `cx` is that it supports twinds enhanced class name syntax like grouping and aliases.\n *\n * @group Class Name Generators\n * @param strings\n * @param interpolations\n * @returns\n */\nexport function cx(strings: TemplateStringsArray, ...interpolations: Class[]): string\n\n/**\n * Constructs `class` strings conditionally.\n *\n * Twinds version of popular libraries like [classnames](https://github.com/JedWatson/classnames) or [clsx](https://github.com/lukeed/clsx).\n * The key advantage of `cx` is that it supports twinds enhanced class name syntax like grouping and aliases.\n *\n * @group Class Name Generators\n * @param input\n */\nexport function cx(...input: Class[]): string\n\nexport function cx(strings: TemplateStringsArray | Class, ...interpolations: Class[]): string {\n  return format(parse(interpolate(strings, interpolations)), ' ')\n}\n","import type { CSSBase, CSSObject, CSSValue } from './types'\n\nimport { tw as tw$ } from './runtime'\nimport { astish } from './internal/astish'\nimport { css } from './css'\n\nexport interface InjectGlobalFunction {\n  (style: CSSBase | string): void\n\n  (strings: TemplateStringsArray, ...interpolations: readonly CSSValue[]): void\n\n  bind(thisArg?: ((tokens: string) => string) | undefined | void): InjectGlobalFunction\n\n  call(thisArg: ((tokens: string) => string) | undefined | void, style: CSSBase | string): void\n\n  apply(thisArg: ((tokens: string) => string) | undefined | void, args: [CSSBase | string]): void\n}\n\n/**\n * Injects styles into the global scope and is useful for applications such as gloabl styles, CSS resets or font faces.\n *\n * It **does not** return a class name, but adds the styles within the base layer to the stylesheet directly.\n *\n * @group Style Injectors\n */\nexport const injectGlobal: InjectGlobalFunction = function injectGlobal(\n  this: ((tokens: string) => string) | undefined | void,\n  strings: CSSBase | string | TemplateStringsArray,\n  ...interpolations: readonly CSSValue[]\n): void {\n  const tw = typeof this == 'function' ? this : tw$\n\n  tw(\n    css({\n      '@layer base': astish(strings as CSSObject, interpolations),\n    } as CSSObject),\n  )\n}\n","import type { Twind, BaseTheme, TwindConfig, TwindUserConfig, Preset, ExtractThemes } from './types'\n\nimport { PROD } from 'distilt/env'\n\nimport { defineConfig } from './define-config'\nimport { setup } from './runtime'\nimport { getSheet } from './sheets'\n\n/**\n * @group Runtime\n * @param config\n * @param isProduction\n */\nexport function install<Theme extends BaseTheme = BaseTheme>(\n  config: TwindConfig<Theme>,\n  isProduction?: boolean,\n): Twind<Theme & BaseTheme>\n\nexport function install<Theme = BaseTheme, Presets extends Preset<any>[] = Preset[]>(\n  config: TwindUserConfig<Theme, Presets>,\n  isProduction?: boolean,\n): Twind<BaseTheme & ExtractThemes<Theme, Presets>>\n\nexport function install(config: TwindConfig | TwindUserConfig, isProduction = PROD): Twind {\n  const config$ = defineConfig(config as TwindUserConfig)\n\n  return setup(\n    {\n      ...config$,\n      // in production use short hashed class names\n      hash: config$.hash ?? isProduction,\n    },\n    () => getSheet(!isProduction),\n  )\n}\n","import type { Class } from './types'\nimport { interpolate } from './internal/interpolate'\nimport { tw as tw$ } from './runtime'\n\nexport interface TxFunction {\n  (...classes: Class[]): string\n\n  (strings: TemplateStringsArray, ...interpolations: readonly Class[]): string\n\n  bind(thisArg?: ((tokens: string) => string) | undefined | void): TxFunction\n\n  call(thisArg: ((tokens: string) => string) | undefined | void, ...classes: Class[]): string\n  call(\n    thisArg: ((tokens: string) => string) | undefined | void,\n    strings: TemplateStringsArray,\n    ...interpolations: readonly Class[]\n  ): string\n\n  apply(\n    thisArg: ((tokens: string) => string) | undefined | void,\n    classes: Class[] | [strings: TemplateStringsArray, ...interpolations: readonly Class[]],\n  ): string\n}\n\n/**\n * Combines {@link tw} and {@link cx}.\n *\n * Using the default `tw` instance:\n *\n * ```js\n * import { tw } from '@twind/core'\n * tx`underline ${falsy && 'italic'}`\n * tx('underline', falsy && 'italic')\n * tx({'underline': true, 'italic': false})\n *\n * // using a custom twind instance\n * import { tw } from './custom/twind'\n * import { tw } from './custom/twind'\n * tx.bind(tw)\n * ```\n *\n * Using a custom `tw` instance:\n *\n * ```js\n * import { tx as tx$ } from '@twind/core'\n * import { tw } from './custom/twind'\n *\n * export const tx = tx$.bind(tw)\n *\n * tx`underline ${falsy && 'italic'}`\n * tx('underline', falsy && 'italic')\n * tx({'underline': true, 'italic': false})\n * ```\n *\n * @group Style Injectors\n * @param this {@link Twind} instance to use (default: {@link tw})\n * @param strings\n * @param interpolations\n * @returns the class name\n */\nexport const tx: TxFunction = function tx(\n  this: ((tokens: string) => string) | undefined | void,\n  strings: TemplateStringsArray | Class,\n  ...interpolations: Class[]\n): string {\n  const tw = typeof this == 'function' ? this : tw$\n  return tw(interpolate(strings, interpolations))\n}\n"],"names":["active","toClassName","rule","v","i","n","join","format","rules","seperator","map","escape","CSS","className","replace","hash","value","h","index","length","Math","imul","charCodeAt","toString","mql","screen","prefix","asArray","min","raw","Object","keys","feature","Array","isArray","identity","noop","Layer","d","b","c","a","u","o","seperatorPrecedence","string","match","atRulePrecedence","css","test","max","RegExp","$1","$2","PRECEDENCES_BY_PSEUDO_CLASS","convert","name","important","variants","context","precedence","conditions","variant","theme","condition","selector","push","indexOf","slice","p","r","registry","Map","stringify","groups","replaceEach","reduce","selectorPart","conditionPart","mergeMatch","exec","selectorIndex","replaceReference","reduceRight","body","grouping","iteratee","_","comma","reference","collator","Intl","Collator","numeric","sortedInsertionIndex","array","element","low","high","pivot","compareTwindRules","layer","compare","byModifier","byName","s","split","pop","String","fromCharCode","parseColorComponent","chars","factor","round","parseInt","toColorValue","color","options","opacityValue","opacityVariable","opacity","includes","size","substr","serialize","style","serialize$","declarations","maxPropertyPrecedence","numberOfDeclarations","key","property","translateWith","parse","JSON","toLowerCase","resolveThemeFunction","rulePrecedence","screenKey","unshift","sort","__","___","defaultValue","filter","merge","current","result","Boolean","translate","cssRule","translate$","resolved","resolve","factory","get","splice","useOrderOfRules","flatMap","define","set","createRule","loc","negated","endsWith","defineProperties","uniq","l","values","cache","token","parsed","startIndex","skip","comment","position","commit","isRule","endOffset","char","lastMatch","lastGroup","lastIndexOf","nested","shift","interleave","strings","interpolations","handle","interpolation","interpolate","trim","tmp","apply","alias","shortcut","marker","Proxy","alias$","target","namedAlias","astish","astish$","newRule","block","tree","ast","find","label","animation","waypoints","animation$","namedAnimation","animationName","fromMatch","maybeNegate","offset","$$","input","fromTheme","section","withAutocomplete","themeSection","camelize","arbitrary","isKeyLookup","entries","suffix","concat","colorFromTheme","colorMatch","opacityMatch","parseValue","colorValue","opacitySection","create","properties","toCSS","undefined","dark","darkColorValue","opacities","modifiers","modifier","normalize","x","toUpperCase","before","url","after","fullMatch","characterBefore","repeat","kAutocomplete","Symbol","autocomplete","defineProperty","configurable","pattern","defineConfig","presets","userConfig","config","darkMode","darkColor","preflight","ignorelist","finalize","preset","extend","warn","message","code","detail","dispatchEvent","CustomEvent","event","cancelable","defaultPrevented","console","process","emitWarning","list","getResolver","isDark","item","resolver","getVariantResolver","createResolve","getRuleResolver","patterns","createRegExpExecutor","run","toCondition","twind","sheet","createContext","variantCache","variantResolvers","ruleCache","ruleResolvers","ignored","reportedUnknownClasses","Set","defaultHash","ctx","makeThemeFunction","base","resolveContext","colors","negative","breakpoints","screens","sectionKey","path","assign","deref","obj","prop","source","flattenColorPalette","flattend","keyPath","e","has","add","f","sortedPrecedences","insertedRules","resume","cssText","insert","finalRule","tw","tokens","forEach","classNames","getOwnPropertyDescriptors","snapshot","restoreSheet","insertedRules$","cache$","sortedPrecedences$","clear","destroy","changed","mo","observer","MutationObserver","handleMutationRecords","observe","attributeFilter","subtree","childList","handleClassAttributeChange","type","disconnect","records","el","querySelectorAll","takeRecords","getAttribute","setAttribute","tw$","call","getStyleElement","document","querySelector","tagName","createElement","head","prepend","dataset","virtual","includeResumeData","getSheet","useDOMSheet","disableResume","ownerNode","textContent","cssRules","from","addClassName","RE","lastIndex","assertActive","Error","_target","_thisArg","args","arguments","setup","keyframes","bind","thisArg","keyframes$","namedKeyframes","keyframeName","extract","html","restore","consume","markup","lastChunkStart","parseHTML","onClass","mode","quote","attributeName","currentIndex","MODE_TAGNAME","MODE_TEXT","endIndex","createStyle","parent","props","defaults","localDefaults","when","id","register","mq","allProps","isWithinRuleDeclaration","fromEntries","URLSearchParams","variantKey","propsValue","breakpoint","breakpointToken","install","shade","deleteRule","remove","insertRule","error","childNodes","node","insertBefore","createTextNode","minify","isProduction","config$"],"mappings":"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"}