@techfides/ui-library-design 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/README.md +1 -3
  2. package/css/theme.css +61 -82
  3. package/dist/anatomies.d.ts +1 -9
  4. package/dist/anatomies.js +0 -2
  5. package/dist/anatomy.d.ts +2 -3
  6. package/dist/anatomy.js +0 -2
  7. package/dist/brands.d.ts +1 -2
  8. package/dist/brands.js +0 -2
  9. package/dist/cn.d.ts +1 -2
  10. package/dist/cn.generated.js +40 -4
  11. package/dist/cn.js +0 -2
  12. package/dist/control.d.ts +1 -2
  13. package/dist/control.js +0 -2
  14. package/dist/index.d.ts +2 -1
  15. package/dist/index.js +2 -1
  16. package/dist/mark.d.ts +1 -2
  17. package/dist/mark.js +0 -2
  18. package/dist/parts/control.js +0 -2
  19. package/dist/parts/eyebrow.js +0 -2
  20. package/dist/parts/mark.js +0 -2
  21. package/dist/parts/reveal.js +0 -2
  22. package/dist/parts/rouse.js +0 -2
  23. package/dist/parts/rule.js +0 -2
  24. package/dist/parts/scroll.js +0 -2
  25. package/dist/parts/shell.js +0 -2
  26. package/dist/parts/surface.js +0 -2
  27. package/dist/parts/tone.js +0 -2
  28. package/dist/parts/travel.js +0 -2
  29. package/dist/recipes/accordion.d.ts +1 -2
  30. package/dist/recipes/accordion.js +0 -2
  31. package/dist/recipes/alert.d.ts +1 -2
  32. package/dist/recipes/alert.js +0 -2
  33. package/dist/recipes/band.d.ts +1 -2
  34. package/dist/recipes/band.js +0 -2
  35. package/dist/recipes/bars.d.ts +1 -2
  36. package/dist/recipes/bars.js +0 -2
  37. package/dist/recipes/brandMark.d.ts +1 -2
  38. package/dist/recipes/brandMark.js +0 -2
  39. package/dist/recipes/button.d.ts +1 -2
  40. package/dist/recipes/button.js +0 -2
  41. package/dist/recipes/cardHeader.d.ts +1 -2
  42. package/dist/recipes/cardHeader.js +0 -2
  43. package/dist/recipes/chart.d.ts +5 -0
  44. package/dist/recipes/chart.js +5 -0
  45. package/dist/recipes/checkbox.d.ts +1 -2
  46. package/dist/recipes/checkbox.js +0 -2
  47. package/dist/recipes/chip.d.ts +1 -2
  48. package/dist/recipes/chip.js +0 -2
  49. package/dist/recipes/codeEditor.d.ts +1 -2
  50. package/dist/recipes/codeEditor.js +0 -2
  51. package/dist/recipes/datePicker.d.ts +1 -2
  52. package/dist/recipes/datePicker.js +0 -2
  53. package/dist/recipes/dialog.d.ts +1 -2
  54. package/dist/recipes/dialog.js +0 -2
  55. package/dist/recipes/feature.d.ts +1 -2
  56. package/dist/recipes/feature.js +0 -2
  57. package/dist/recipes/field.d.ts +1 -2
  58. package/dist/recipes/field.js +0 -2
  59. package/dist/recipes/findings.d.ts +1 -2
  60. package/dist/recipes/findings.js +0 -2
  61. package/dist/recipes/heading.d.ts +1 -2
  62. package/dist/recipes/heading.js +0 -2
  63. package/dist/recipes/heartbeat.d.ts +1 -2
  64. package/dist/recipes/heartbeat.js +0 -2
  65. package/dist/recipes/ink.d.ts +1 -2
  66. package/dist/recipes/ink.js +0 -2
  67. package/dist/recipes/input.d.ts +1 -3
  68. package/dist/recipes/input.js +0 -3
  69. package/dist/recipes/listItem.d.ts +1 -2
  70. package/dist/recipes/listItem.js +0 -2
  71. package/dist/recipes/listbox.d.ts +1 -2
  72. package/dist/recipes/listbox.js +0 -2
  73. package/dist/recipes/marquee.d.ts +1 -2
  74. package/dist/recipes/marquee.js +0 -2
  75. package/dist/recipes/menu.d.ts +1 -2
  76. package/dist/recipes/menu.js +0 -2
  77. package/dist/recipes/metaRow.d.ts +1 -2
  78. package/dist/recipes/metaRow.js +0 -2
  79. package/dist/recipes/meter.d.ts +1 -2
  80. package/dist/recipes/meter.js +0 -2
  81. package/dist/recipes/motion.d.ts +1 -2
  82. package/dist/recipes/motion.js +0 -2
  83. package/dist/recipes/nebula.d.ts +1 -2
  84. package/dist/recipes/nebula.js +0 -2
  85. package/dist/recipes/numberRange.d.ts +1 -2
  86. package/dist/recipes/numberRange.js +0 -2
  87. package/dist/recipes/paper.d.ts +1 -2
  88. package/dist/recipes/paper.js +0 -2
  89. package/dist/recipes/progressBar.d.ts +1 -2
  90. package/dist/recipes/progressBar.js +0 -2
  91. package/dist/recipes/queue.d.ts +1 -2
  92. package/dist/recipes/queue.js +0 -2
  93. package/dist/recipes/radioGroup.d.ts +1 -3
  94. package/dist/recipes/radioGroup.js +0 -3
  95. package/dist/recipes/scopeSwitcher.d.ts +1 -4
  96. package/dist/recipes/scopeSwitcher.js +0 -4
  97. package/dist/recipes/scrollArea.d.ts +1 -2
  98. package/dist/recipes/scrollArea.js +0 -2
  99. package/dist/recipes/searchPalette.d.ts +1 -3
  100. package/dist/recipes/searchPalette.js +0 -3
  101. package/dist/recipes/sectionHeader.d.ts +1 -2
  102. package/dist/recipes/sectionHeader.js +0 -2
  103. package/dist/recipes/segmentedControl.d.ts +1 -2
  104. package/dist/recipes/segmentedControl.js +0 -2
  105. package/dist/recipes/select.d.ts +1 -3
  106. package/dist/recipes/select.js +0 -3
  107. package/dist/recipes/separator.d.ts +1 -2
  108. package/dist/recipes/separator.js +0 -2
  109. package/dist/recipes/sidebar.d.ts +1 -2
  110. package/dist/recipes/sidebar.js +0 -2
  111. package/dist/recipes/sky.d.ts +1 -2
  112. package/dist/recipes/sky.js +0 -2
  113. package/dist/recipes/slider.d.ts +1 -2
  114. package/dist/recipes/slider.js +0 -2
  115. package/dist/recipes/stat.d.ts +1 -3
  116. package/dist/recipes/stat.js +0 -4
  117. package/dist/recipes/switch.d.ts +1 -2
  118. package/dist/recipes/switch.js +0 -2
  119. package/dist/recipes/table.d.ts +1 -2
  120. package/dist/recipes/table.js +0 -2
  121. package/dist/recipes/tableFilter.d.ts +1 -2
  122. package/dist/recipes/tableFilter.js +0 -2
  123. package/dist/recipes/tablePaging.d.ts +1 -2
  124. package/dist/recipes/tablePaging.js +0 -2
  125. package/dist/recipes/tail.d.ts +1 -2
  126. package/dist/recipes/tail.js +0 -2
  127. package/dist/recipes/text.d.ts +1 -2
  128. package/dist/recipes/text.js +0 -2
  129. package/dist/recipes/textarea.d.ts +1 -2
  130. package/dist/recipes/textarea.js +0 -2
  131. package/dist/recipes/tile.d.ts +1 -2
  132. package/dist/recipes/tile.js +0 -2
  133. package/dist/recipes/tooltip.d.ts +1 -2
  134. package/dist/recipes/tooltip.js +0 -2
  135. package/dist/recipes/topBar.d.ts +1 -2
  136. package/dist/recipes/topBar.js +0 -2
  137. package/dist/recipes/trail.d.ts +1 -2
  138. package/dist/recipes/trail.js +0 -2
  139. package/dist/recipes/userMenu.d.ts +1 -2
  140. package/dist/recipes/userMenu.js +0 -2
  141. package/dist/tone.d.ts +1 -2
  142. package/dist/tone.js +0 -2
  143. package/package.json +1 -1
  144. package/dist/anatomies.js.map +0 -1
  145. package/dist/anatomy.js.map +0 -1
  146. package/dist/brands.js.map +0 -1
  147. package/dist/cn.generated.js.map +0 -1
  148. package/dist/cn.js.map +0 -1
  149. package/dist/control.js.map +0 -1
  150. package/dist/mark.js.map +0 -1
  151. package/dist/parts/control.js.map +0 -1
  152. package/dist/parts/eyebrow.js.map +0 -1
  153. package/dist/parts/mark.js.map +0 -1
  154. package/dist/parts/reveal.js.map +0 -1
  155. package/dist/parts/rouse.js.map +0 -1
  156. package/dist/parts/rule.js.map +0 -1
  157. package/dist/parts/scroll.js.map +0 -1
  158. package/dist/parts/shell.js.map +0 -1
  159. package/dist/parts/surface.js.map +0 -1
  160. package/dist/parts/tone.js.map +0 -1
  161. package/dist/parts/travel.js.map +0 -1
  162. package/dist/recipes/accordion.js.map +0 -1
  163. package/dist/recipes/alert.js.map +0 -1
  164. package/dist/recipes/band.js.map +0 -1
  165. package/dist/recipes/bars.js.map +0 -1
  166. package/dist/recipes/brandMark.js.map +0 -1
  167. package/dist/recipes/button.js.map +0 -1
  168. package/dist/recipes/cardHeader.js.map +0 -1
  169. package/dist/recipes/checkbox.js.map +0 -1
  170. package/dist/recipes/chip.js.map +0 -1
  171. package/dist/recipes/codeEditor.js.map +0 -1
  172. package/dist/recipes/datePicker.js.map +0 -1
  173. package/dist/recipes/dialog.js.map +0 -1
  174. package/dist/recipes/feature.js.map +0 -1
  175. package/dist/recipes/field.js.map +0 -1
  176. package/dist/recipes/findings.js.map +0 -1
  177. package/dist/recipes/heading.js.map +0 -1
  178. package/dist/recipes/heartbeat.js.map +0 -1
  179. package/dist/recipes/ink.js.map +0 -1
  180. package/dist/recipes/input.js.map +0 -1
  181. package/dist/recipes/listItem.js.map +0 -1
  182. package/dist/recipes/listbox.js.map +0 -1
  183. package/dist/recipes/marquee.js.map +0 -1
  184. package/dist/recipes/menu.js.map +0 -1
  185. package/dist/recipes/metaRow.js.map +0 -1
  186. package/dist/recipes/meter.js.map +0 -1
  187. package/dist/recipes/motion.js.map +0 -1
  188. package/dist/recipes/nebula.js.map +0 -1
  189. package/dist/recipes/numberRange.js.map +0 -1
  190. package/dist/recipes/paper.js.map +0 -1
  191. package/dist/recipes/progressBar.js.map +0 -1
  192. package/dist/recipes/queue.js.map +0 -1
  193. package/dist/recipes/radioGroup.js.map +0 -1
  194. package/dist/recipes/scopeSwitcher.js.map +0 -1
  195. package/dist/recipes/scrollArea.js.map +0 -1
  196. package/dist/recipes/searchPalette.js.map +0 -1
  197. package/dist/recipes/sectionHeader.js.map +0 -1
  198. package/dist/recipes/segmentedControl.js.map +0 -1
  199. package/dist/recipes/select.js.map +0 -1
  200. package/dist/recipes/separator.js.map +0 -1
  201. package/dist/recipes/sidebar.js.map +0 -1
  202. package/dist/recipes/sky.js.map +0 -1
  203. package/dist/recipes/slider.js.map +0 -1
  204. package/dist/recipes/stat.js.map +0 -1
  205. package/dist/recipes/switch.js.map +0 -1
  206. package/dist/recipes/table.js.map +0 -1
  207. package/dist/recipes/tableFilter.js.map +0 -1
  208. package/dist/recipes/tablePaging.js.map +0 -1
  209. package/dist/recipes/tail.js.map +0 -1
  210. package/dist/recipes/text.js.map +0 -1
  211. package/dist/recipes/textarea.js.map +0 -1
  212. package/dist/recipes/tile.js.map +0 -1
  213. package/dist/recipes/tooltip.js.map +0 -1
  214. package/dist/recipes/topBar.js.map +0 -1
  215. package/dist/recipes/trail.js.map +0 -1
  216. package/dist/recipes/userMenu.js.map +0 -1
  217. package/dist/tone.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"radioGroup.js","names":[],"sources":["../../src/recipes/radioGroup.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport type { MarkPlate } from '#mark'\nimport { defaultMarkPlate } from '#mark'\nimport { eyebrowQuiet } from '#parts/eyebrow'\nimport {\n markBox,\n markGroup,\n markPlate,\n markPress,\n markRow,\n markStack,\n markTitle,\n} from '#parts/mark'\nimport { defaultTone, tones } from '#parts/tone'\nimport type { Tone } from '#tone'\nimport { toneBlend } from '#tone'\n\nconst radioAccents = tones\n\ntype RadioAccent = Tone\n\nconst defaultRadioAccent = defaultTone\n\nconst radioGroupRecipe = cva([markGroup, 'font-tf-body'])\n\nconst radioGroupLabelRecipe = cva([\n `text-tf-caption-sm ${eyebrowQuiet}`,\n 'px-3 pb-1 font-medium',\n '**:data-[part=required-indicator]:text-tf-danger-hi',\n])\n\nconst radioRecipe = cva([...markRow, 'justify-between gap-6'], {\n defaultVariants: { plate: defaultMarkPlate },\n variants: {\n plate: {\n bare: markPlate.bare,\n full: `${markPlate.full} not-data-[state=checked]:not-data-readonly:interactive:hovered:bg-tf-panel-hi`,\n snug: `${markPlate.snug} not-data-[state=checked]:not-data-readonly:interactive:hovered:bg-tf-panel-hi`,\n } satisfies Record<MarkPlate, string>,\n },\n})\n\nconst radioIndicatorRecipe = cva(\n [\n 'pointer-events-none left-0 h-(--height) w-(--width)',\n 'rounded-tf-block tf-tinted data-disabled:opacity-50',\n '[--transition-duration:var(--tf-duration-2)]',\n '[--transition-timing-function:var(--ease-tf-glide)]',\n ],\n {\n compoundVariants: [{ class: toneBlend.danger, invalid: true }],\n defaultVariants: { accent: defaultRadioAccent, invalid: false },\n variants: {\n accent: toneBlend,\n invalid: { false: '', true: '' },\n },\n },\n)\n\nconst radioLeadRecipe = cva('flex min-w-0 items-center gap-3')\n\nconst radioControlRecipe = cva(\n [\n ...markBox,\n 'rounded-tf-pill bg-tf-sunken',\n 'not-data-readonly:interactive:hovered:bg-tf-sunken-hi',\n 'data-[state=checked]:tf-mark-lit',\n 'data-[state=checked]:**:data-[part=dot]:scale-100',\n 'data-invalid:blend-tf-danger data-invalid:tf-mark-failed',\n markPress,\n ],\n {\n defaultVariants: { accent: defaultRadioAccent },\n variants: { accent: toneBlend },\n },\n)\n\nconst radioDotRecipe = cva([\n 'block size-tf-mark-dot rounded-tf-pill bg-tf-blend',\n 'scale-0 tf-moves-spring tf-transition motion-reduce:transition-none',\n])\n\nconst radioLabelRecipe = cva(markStack)\n\nconst radioTitleRecipe = cva(markTitle)\n\nconst radioHintRecipe = cva('text-tf-caption font-medium text-tf-muted')\n\nconst radioAsideRecipe = cva('shrink-0 text-tf-body-sm font-medium text-tf-muted tabular-nums')\n\nconst radioErrorRecipe = cva('px-3 pt-1 text-tf-caption font-medium text-tf-danger-hi tf-arrives')\n\nconst radioGroupAnatomy = anatomy({\n dot: { part: 'dot', recipe: radioDotRecipe, required: true },\n requiredIndicator: {\n part: 'required-indicator',\n recipe: radioGroupLabelRecipe,\n required: false,\n },\n root: { part: 'radio-group', recipe: radioGroupRecipe, required: true },\n})\n\nexport {\n type RadioAccent,\n defaultRadioAccent,\n radioAccents,\n radioAsideRecipe,\n radioControlRecipe,\n radioDotRecipe,\n radioErrorRecipe,\n radioGroupAnatomy,\n radioGroupLabelRecipe,\n radioGroupRecipe,\n radioHintRecipe,\n radioIndicatorRecipe,\n radioLabelRecipe,\n radioLeadRecipe,\n radioRecipe,\n radioTitleRecipe,\n}\n"],"mappings":";;;;;;;;AAmBA,MAAM,eAAe;AAIrB,MAAM,qBAAqB;AAE3B,MAAM,mBAAmB,IAAI,CAAC,WAAW,cAAc,CAAC;AAExD,MAAM,wBAAwB,IAAI;CAChC,sBAAsB;CACtB;CACA;AACF,CAAC;AAED,MAAM,cAAc,IAAI,CAAC,GAAG,SAAS,uBAAuB,GAAG;CAC7D,iBAAiB,EAAE,OAAO,iBAAiB;CAC3C,UAAU,EACR,OAAO;EACL,MAAM,UAAU;EAChB,MAAM,GAAG,UAAU,KAAK;EACxB,MAAM,GAAG,UAAU,KAAK;CAC1B,EACF;AACF,CAAC;AAED,MAAM,uBAAuB,IAC3B;CACE;CACA;CACA;CACA;AACF,GACA;CACE,kBAAkB,CAAC;EAAE,OAAO,UAAU;EAAQ,SAAS;CAAK,CAAC;CAC7D,iBAAiB;EAAE,QAAQ;EAAoB,SAAS;CAAM;CAC9D,UAAU;EACR,QAAQ;EACR,SAAS;GAAE,OAAO;GAAI,MAAM;EAAG;CACjC;AACF,CACF;AAEA,MAAM,kBAAkB,IAAI,iCAAiC;AAE7D,MAAM,qBAAqB,IACzB;CACE,GAAG;CACH;CACA;CACA;CACA;CACA;CACA;AACF,GACA;CACE,iBAAiB,EAAE,QAAQ,mBAAmB;CAC9C,UAAU,EAAE,QAAQ,UAAU;AAChC,CACF;AAEA,MAAM,iBAAiB,IAAI,CACzB,sDACA,qEACF,CAAC;AAED,MAAM,mBAAmB,IAAI,SAAS;AAEtC,MAAM,mBAAmB,IAAI,SAAS;AAEtC,MAAM,kBAAkB,IAAI,2CAA2C;AAEvE,MAAM,mBAAmB,IAAI,iEAAiE;AAE9F,MAAM,mBAAmB,IAAI,oEAAoE;AAEjG,MAAM,oBAAoB,QAAQ;CAChC,KAAK;EAAE,MAAM;EAAO,QAAQ;EAAgB,UAAU;CAAK;CAC3D,mBAAmB;EACjB,MAAM;EACN,QAAQ;EACR,UAAU;CACZ;CACA,MAAM;EAAE,MAAM;EAAe,QAAQ;EAAkB,UAAU;CAAK;AACxE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scopeSwitcher.js","names":[],"sources":["../../src/recipes/scopeSwitcher.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { controlInert, controlPress, controlQuiet, controlReach } from '#parts/control'\nimport { eyebrowType } from '#parts/eyebrow'\nimport { travelMarkBase } from '#parts/travel'\n\nimport { menuListRecipe } from './menu'\nimport { collapseMotion, railCollapse, railMorph } from './motion'\n\nconst scopeSwitcherRecipe = cva([\n 'group relative flex w-full items-center gap-2 rounded-tf-block px-3 py-1.5 text-left',\n 'in-data-rail:justify-center in-data-rail:gap-0 in-data-rail:px-2',\n 'bg-tf-sunken',\n '[&>svg]:size-tf-icon-sm [&>svg]:shrink-0',\n ...controlQuiet,\n ...controlReach,\n ...controlPress,\n ...controlInert,\n])\n\nconst scopeSwitcherPillRecipe = cva([\n 'inline-flex flex-none items-center gap-2 rounded-tf-pill px-3 py-1.5',\n 'bg-tf-panel-2 text-tf-body-sm font-medium text-tf-fg',\n '[&_svg]:size-tf-icon-sm [&_svg]:shrink-0',\n ...controlQuiet,\n ...controlReach,\n ...controlPress,\n ...controlInert,\n])\n\nconst scopeSwitcherTextRecipe = cva(`flex flex-col gap-0 ${railCollapse}`)\n\nconst scopeSwitcherEyebrowRecipe = cva([\n 'truncate text-tf-caption-sm text-tf-accent-hi',\n eyebrowType,\n])\n\nconst scopeSwitcherValueRecipe = cva(\n 'truncate font-tf-display text-tf-body-sm font-medium tracking-tf-tight text-tf-fg',\n)\n\nconst scopeSwitcherChevronsRecipe = cva([\n 'flex-none text-tf-muted',\n 'in-data-rail:size-0! in-data-rail:opacity-0',\n '[--tf-travel:opacity_var(--tf-timing-glide)]',\n railMorph,\n])\n\nconst scopeSwitcherPillIconRecipe = cva('flex-none text-tf-accent-hi')\n\nconst scopeSwitcherIconRecipe = cva([\n 'relative isolate flex size-tf-control-sm flex-none items-center justify-center rounded-tf-control',\n 'bg-tf-blend text-tf-on-accent tf-cloud-brand tf-clouded blend-tf-accent tf-blend-drift',\n 'tf-edge-sweep tf-swept tf-icons-solo tf-inner-lit',\n '[&_svg]:size-tf-icon-md [&_svg]:shrink-0',\n])\n\nconst scopeSwitcherListRecipe = cva(['relative flex flex-col gap-1 pt-2', ...collapseMotion])\n\nconst scopeSwitcherMarkRecipe = cva([\n ...travelMarkBase,\n 'inset-x-0 h-[61px] rounded-tf-control bg-tf-panel-hi',\n])\n\nconst scopeSwitcherRowRecipe = cva(\n [\n 'group relative flex w-full items-center gap-2 rounded-tf-control px-3 py-2 text-left',\n 'tf-transition data-highlighted:bg-tf-panel-hi',\n '[&>svg]:size-tf-icon-sm [&>svg]:shrink-0',\n ...controlQuiet,\n ...controlReach,\n ...controlPress,\n ...controlInert,\n ],\n {\n defaultVariants: { selected: false },\n variants: {\n selected: {\n false: '',\n true: 'tf-tinted blend-tf-accent',\n },\n },\n },\n)\n\nconst scopeSwitcherCodeRecipe = cva([\n 'relative isolate flex size-tf-control-sm flex-none items-center justify-center rounded-tf-pill',\n 'bg-tf-panel-hi text-tf-caption font-medium text-tf-fg',\n 'tf-edge-sweep tf-swept blend-tf-accent',\n 'tf-transition motion-reduce:transition-none',\n])\n\nconst scopeSwitcherRowTextRecipe = cva('flex min-w-0 flex-1 flex-col gap-0')\n\nconst scopeSwitcherRowNameRecipe = cva('truncate text-tf-body-sm font-medium text-tf-fg')\n\nconst scopeSwitcherRowMetaRecipe = cva('truncate text-tf-caption-sm text-tf-muted')\n\nconst scopeSwitcherBadgeRecipe = cva(\n [\n 'inline-flex flex-none items-center gap-2 rounded-tf-pill bg-tf-panel-hi px-2 py-1',\n 'text-tf-caption-sm font-normal tabular-nums',\n ],\n {\n defaultVariants: { tone: 'accent' },\n variants: {\n tone: {\n accent: 'text-tf-accent-hi',\n warning: 'text-tf-warning-hi',\n },\n },\n },\n)\n\nconst scopeSwitcherDotRecipe = cva('size-1.5 flex-none rounded-tf-pill bg-current')\n\nconst scopeSwitcherWarningRecipe = cva('flex-none text-tf-danger-hi')\n\nconst scopeSwitcherAnatomy = anatomy({\n eyebrow: { part: 'eyebrow', recipe: scopeSwitcherEyebrowRecipe, required: false },\n list: { part: 'list', recipe: menuListRecipe, required: false },\n mark: { part: 'mark', recipe: scopeSwitcherMarkRecipe, required: true },\n root: { part: 'scope-switcher', recipe: scopeSwitcherRecipe, required: true },\n rowText: { part: 'row-text', recipe: scopeSwitcherRowTextRecipe, required: true },\n text: { part: 'text', recipe: scopeSwitcherTextRecipe, required: false },\n value: { part: 'value', recipe: scopeSwitcherValueRecipe, required: true },\n})\n\nexport {\n scopeSwitcherAnatomy,\n scopeSwitcherBadgeRecipe,\n scopeSwitcherChevronsRecipe,\n scopeSwitcherCodeRecipe,\n scopeSwitcherDotRecipe,\n scopeSwitcherEyebrowRecipe,\n scopeSwitcherIconRecipe,\n scopeSwitcherListRecipe,\n scopeSwitcherMarkRecipe,\n scopeSwitcherPillIconRecipe,\n scopeSwitcherPillRecipe,\n scopeSwitcherRecipe,\n scopeSwitcherRowNameRecipe,\n scopeSwitcherRowMetaRecipe,\n scopeSwitcherRowRecipe,\n scopeSwitcherRowTextRecipe,\n scopeSwitcherTextRecipe,\n scopeSwitcherValueRecipe,\n scopeSwitcherWarningRecipe,\n}\n"],"mappings":";;;;;;;;AAUA,MAAM,sBAAsB,IAAI;CAC9B;CACA;CACA;CACA;CACA,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACL,CAAC;AAED,MAAM,0BAA0B,IAAI;CAClC;CACA;CACA;CACA,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACL,CAAC;AAED,MAAM,0BAA0B,IAAI,uBAAuB,cAAc;AAEzE,MAAM,6BAA6B,IAAI,CACrC,iDACA,WACF,CAAC;AAED,MAAM,2BAA2B,IAC/B,mFACF;AAEA,MAAM,8BAA8B,IAAI;CACtC;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,8BAA8B,IAAI,6BAA6B;AAErE,MAAM,0BAA0B,IAAI;CAClC;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,0BAA0B,IAAI,CAAC,qCAAqC,GAAG,cAAc,CAAC;AAE5F,MAAM,0BAA0B,IAAI,CAClC,GAAG,gBACH,sDACF,CAAC;AAED,MAAM,yBAAyB,IAC7B;CACE;CACA;CACA;CACA,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACL,GACA;CACE,iBAAiB,EAAE,UAAU,MAAM;CACnC,UAAU,EACR,UAAU;EACR,OAAO;EACP,MAAM;CACR,EACF;AACF,CACF;AAEA,MAAM,0BAA0B,IAAI;CAClC;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,6BAA6B,IAAI,oCAAoC;AAE3E,MAAM,6BAA6B,IAAI,iDAAiD;AAExF,MAAM,6BAA6B,IAAI,2CAA2C;AAElF,MAAM,2BAA2B,IAC/B,CACE,qFACA,6CACF,GACA;CACE,iBAAiB,EAAE,MAAM,SAAS;CAClC,UAAU,EACR,MAAM;EACJ,QAAQ;EACR,SAAS;CACX,EACF;AACF,CACF;AAEA,MAAM,yBAAyB,IAAI,+CAA+C;AAElF,MAAM,6BAA6B,IAAI,6BAA6B;AAEpE,MAAM,uBAAuB,QAAQ;CACnC,SAAS;EAAE,MAAM;EAAW,QAAQ;EAA4B,UAAU;CAAM;CAChF,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAgB,UAAU;CAAM;CAC9D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAyB,UAAU;CAAK;CACtE,MAAM;EAAE,MAAM;EAAkB,QAAQ;EAAqB,UAAU;CAAK;CAC5E,SAAS;EAAE,MAAM;EAAY,QAAQ;EAA4B,UAAU;CAAK;CAChF,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAyB,UAAU;CAAM;CACvE,OAAO;EAAE,MAAM;EAAS,QAAQ;EAA0B,UAAU;CAAK;AAC3E,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scrollArea.js","names":[],"sources":["../../src/recipes/scrollArea.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { scrollFades } from '#parts/scroll'\n\nconst RAIL = 'rounded-tf-inline'\n\ntype ScrollAreaSurface = 'card' | 'bare'\n\ntype ScrollAreaWay = 'vertical' | 'horizontal'\n\nconst defaultScrollAreaSurface = 'card' satisfies ScrollAreaSurface\n\nconst scrollAreaSurfaces = ['card', 'bare'] as const satisfies readonly ScrollAreaSurface[]\n\nconst scrollAreaRecipe = cva(['relative flex flex-col', 'font-tf-body'], {\n defaultVariants: { surface: defaultScrollAreaSurface },\n variants: {\n surface: {\n bare: '',\n card: 'tf-edge-sweep rounded-tf-block bg-tf-panel px-2 shadow-tf-float tf-edge-plain',\n } satisfies Record<ScrollAreaSurface, string>,\n },\n})\n\nconst scrollViewportRecipe = cva([\n 'flex tf-scroll-hidden min-h-0 flex-col py-2 pr-3 outline-hidden',\n 'in-data-overflow-x:pb-3',\n ...scrollFades,\n])\n\nconst scrollContentRecipe = cva('flex flex-col')\n\nconst scrollBarRecipe = cva(\n [`${RAIL} bg-tf-panel`, 'tf-transition motion-reduce:transition-none'],\n {\n defaultVariants: { way: 'vertical' },\n variants: {\n way: {\n horizontal: 'mx-2 mb-1 h-1 opacity-0 in-data-overflow-x:opacity-100',\n vertical: 'my-2 mr-1 w-1 opacity-0 in-data-overflow-y:opacity-100',\n } satisfies Record<ScrollAreaWay, string>,\n },\n },\n)\n\nconst scrollThumbRecipe = cva(\n [\n `${RAIL} bg-tf-line`,\n 'in-data-hover:bg-tf-line-hi in-data-scrolling:bg-tf-line-hi',\n 'data-dragging:bg-tf-accent-hi',\n 'tf-transition motion-reduce:transition-none',\n ],\n {\n defaultVariants: { way: 'vertical' },\n variants: {\n way: {\n horizontal: 'h-1 min-w-tf-icon-solo-lg',\n vertical: 'min-h-tf-icon-solo-lg w-1',\n } satisfies Record<ScrollAreaWay, string>,\n },\n },\n)\n\nconst scrollCornerRecipe = cva('bg-transparent')\n\nconst scrollAreaAnatomy = anatomy({\n root: { part: 'scroll-area', recipe: scrollAreaRecipe, required: true },\n})\n\nexport {\n type ScrollAreaSurface,\n defaultScrollAreaSurface,\n scrollAreaAnatomy,\n scrollAreaRecipe,\n scrollAreaSurfaces,\n scrollBarRecipe,\n scrollContentRecipe,\n scrollCornerRecipe,\n scrollThumbRecipe,\n scrollViewportRecipe,\n}\n"],"mappings":";;;;AAKA,MAAM,OAAO;AAMb,MAAM,2BAA2B;AAEjC,MAAM,qBAAqB,CAAC,QAAQ,MAAM;AAE1C,MAAM,mBAAmB,IAAI,CAAC,0BAA0B,cAAc,GAAG;CACvE,iBAAiB,EAAE,SAAS,yBAAyB;CACrD,UAAU,EACR,SAAS;EACP,MAAM;EACN,MAAM;CACR,EACF;AACF,CAAC;AAED,MAAM,uBAAuB,IAAI;CAC/B;CACA;CACA,GAAG;AACL,CAAC;AAED,MAAM,sBAAsB,IAAI,eAAe;AAE/C,MAAM,kBAAkB,IACtB,CAAC,GAAG,KAAK,eAAe,6CAA6C,GACrE;CACE,iBAAiB,EAAE,KAAK,WAAW;CACnC,UAAU,EACR,KAAK;EACH,YAAY;EACZ,UAAU;CACZ,EACF;AACF,CACF;AAEA,MAAM,oBAAoB,IACxB;CACE,GAAG,KAAK;CACR;CACA;CACA;AACF,GACA;CACE,iBAAiB,EAAE,KAAK,WAAW;CACnC,UAAU,EACR,KAAK;EACH,YAAY;EACZ,UAAU;CACZ,EACF;AACF,CACF;AAEA,MAAM,qBAAqB,IAAI,gBAAgB;AAE/C,MAAM,oBAAoB,QAAQ,EAChC,MAAM;CAAE,MAAM;CAAe,QAAQ;CAAkB,UAAU;AAAK,EACxE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchPalette.js","names":[],"sources":["../../src/recipes/searchPalette.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { controlInert, controlPress, controlReach } from '#parts/control'\nimport { ruleFading } from '#parts/rule'\nimport { scrollFades } from '#parts/scroll'\nimport { travelMarkBase } from '#parts/travel'\n\nimport { mirrorMotion } from './motion'\n\nconst GROUND = 'relative flex-none bg-tf-shade-under'\n\nconst searchTriggerRecipe = cva([\n 'relative isolate inline-flex h-tf-control-sm min-w-60 items-center gap-3',\n 'rounded-tf-control bg-tf-control pr-3 pl-3',\n 'font-tf-body text-tf-body-sm font-medium text-tf-muted',\n 'interactive:hovered:bg-tf-control-hi interactive:hovered:text-tf-fg',\n 'tf-icons [&_svg]:size-tf-icon-sm [&_svg]:shrink-0',\n 'cursor-pointer tf-transition motion-reduce:transition-none',\n ...controlReach,\n ...controlInert,\n])\n\nconst searchLabelRecipe = cva('min-w-0 flex-1 truncate text-left')\n\nconst searchKeyRecipe = cva([\n 'flex h-6 flex-none items-center rounded-tf-inline bg-tf-panel-hi px-2',\n 'text-tf-caption-sm font-normal text-tf-muted',\n])\n\nconst searchPositionerRecipe = cva([\n 'fixed inset-0 z-tf-modal flex items-start justify-center',\n 'px-4 pt-24 pb-10 font-tf-body sm:px-10',\n])\n\nconst searchPanelRecipe = cva([\n 'relative isolate rounded-tf-card bg-tf-shade-deep backdrop-blur-tf-panel',\n 'tf-edge-sweep tf-swept blend-tf-accent tf-edge-plain',\n 'flex max-h-full w-full max-w-tf-measure flex-col overflow-hidden',\n 'text-tf-body-sm font-medium text-tf-fg shadow-tf-float',\n ...mirrorMotion,\n 'motion-reduce:animate-none',\n])\n\nconst searchFieldRecipe = cva([\n GROUND,\n 'flex h-tf-control-lg items-center gap-3 rounded-t-tf-card px-5',\n 'tf-icons [&_svg]:size-tf-icon-sm [&_svg]:shrink-0 [&_svg]:text-tf-muted',\n])\n\nconst searchInputRecipe = cva([\n 'min-w-0 flex-1 border-0 bg-transparent outline-hidden',\n 'font-tf-body text-tf-body text-tf-fg placeholder:text-tf-muted',\n])\n\nconst searchRuleRecipe = cva(`absolute inset-x-0 bottom-0 ${ruleFading}`)\n\nconst searchListRecipe = cva([\n 'relative flex tf-scroll-hidden max-h-80 min-h-0 flex-col overflow-auto p-2',\n 'outline-hidden data-empty:hidden',\n ...scrollFades,\n])\n\nconst searchHitRecipe = cva([\n 'relative flex h-tf-control-md min-h-tf-control-md flex-none items-center gap-4',\n 'rounded-tf-control px-3 text-left text-tf-fg',\n 'tf-icons [&_svg]:size-tf-icon-sm [&_svg]:shrink-0 [&_svg]:text-tf-muted',\n 'cursor-pointer tf-transition motion-reduce:transition-none',\n ...controlReach,\n ...controlPress,\n ...controlInert,\n])\n\nconst searchMarkRecipe = cva([\n ...travelMarkBase,\n 'inset-x-2 h-tf-control-md rounded-tf-control bg-tf-panel-hi',\n])\n\nconst searchHitTextRecipe = cva('min-w-0 flex-1 truncate')\n\nconst searchHitMetaRecipe = cva([\n 'flex-none text-tf-caption-sm whitespace-nowrap text-tf-muted tabular-nums',\n])\n\nconst searchEmptyRecipe = cva([\n 'flex h-tf-control-lg flex-none items-center justify-center px-3',\n 'bg-tf-panel-2 text-tf-caption font-medium text-tf-muted',\n])\n\nconst searchFootRecipe = cva([\n GROUND,\n 'flex items-center justify-between gap-3 rounded-b-tf-card px-5 py-3',\n 'text-tf-caption-sm text-tf-muted',\n])\n\nconst searchPaletteAnatomy = anatomy({\n empty: { part: 'empty', recipe: searchEmptyRecipe, required: false },\n foot: { part: 'foot', recipe: searchFootRecipe, required: true },\n hint: { part: 'hint', recipe: searchFootRecipe, required: true },\n mark: { part: 'mark', recipe: searchMarkRecipe, required: true },\n meta: { part: 'meta', recipe: searchHitMetaRecipe, required: false },\n root: { part: 'search-palette', recipe: searchPanelRecipe, required: true },\n rule: { part: 'rule', recipe: searchRuleRecipe, required: true },\n searchTrigger: { part: 'search-trigger', recipe: searchTriggerRecipe, required: true },\n shortcut: { part: 'shortcut', recipe: searchKeyRecipe, required: false },\n})\n\nexport {\n searchEmptyRecipe,\n searchFieldRecipe,\n searchFootRecipe,\n searchHitMetaRecipe,\n searchHitRecipe,\n searchHitTextRecipe,\n searchInputRecipe,\n searchKeyRecipe,\n searchLabelRecipe,\n searchListRecipe,\n searchMarkRecipe,\n searchPaletteAnatomy,\n searchPanelRecipe,\n searchPositionerRecipe,\n searchRuleRecipe,\n searchTriggerRecipe,\n}\n"],"mappings":";;;;;;;;AAUA,MAAM,SAAS;AAEf,MAAM,sBAAsB,IAAI;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA,GAAG;CACH,GAAG;AACL,CAAC;AAED,MAAM,oBAAoB,IAAI,mCAAmC;AAEjE,MAAM,kBAAkB,IAAI,CAC1B,yEACA,8CACF,CAAC;AAED,MAAM,yBAAyB,IAAI,CACjC,4DACA,wCACF,CAAC;AAED,MAAM,oBAAoB,IAAI;CAC5B;CACA;CACA;CACA;CACA,GAAG;CACH;AACF,CAAC;AAED,MAAM,oBAAoB,IAAI;CAC5B;CACA;CACA;AACF,CAAC;AAED,MAAM,oBAAoB,IAAI,CAC5B,yDACA,gEACF,CAAC;AAED,MAAM,mBAAmB,IAAI,+BAA+B,YAAY;AAExE,MAAM,mBAAmB,IAAI;CAC3B;CACA;CACA,GAAG;AACL,CAAC;AAED,MAAM,kBAAkB,IAAI;CAC1B;CACA;CACA;CACA;CACA,GAAG;CACH,GAAG;CACH,GAAG;AACL,CAAC;AAED,MAAM,mBAAmB,IAAI,CAC3B,GAAG,gBACH,6DACF,CAAC;AAED,MAAM,sBAAsB,IAAI,yBAAyB;AAEzD,MAAM,sBAAsB,IAAI,CAC9B,2EACF,CAAC;AAED,MAAM,oBAAoB,IAAI,CAC5B,mEACA,yDACF,CAAC;AAED,MAAM,mBAAmB,IAAI;CAC3B;CACA;CACA;AACF,CAAC;AAED,MAAM,uBAAuB,QAAQ;CACnC,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAmB,UAAU;CAAM;CACnE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAkB,UAAU;CAAK;CAC/D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAkB,UAAU;CAAK;CAC/D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAkB,UAAU;CAAK;CAC/D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAqB,UAAU;CAAM;CACnE,MAAM;EAAE,MAAM;EAAkB,QAAQ;EAAmB,UAAU;CAAK;CAC1E,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAkB,UAAU;CAAK;CAC/D,eAAe;EAAE,MAAM;EAAkB,QAAQ;EAAqB,UAAU;CAAK;CACrF,UAAU;EAAE,MAAM;EAAY,QAAQ;EAAiB,UAAU;CAAM;AACzE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sectionHeader.js","names":[],"sources":["../../src/recipes/sectionHeader.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\n\ntype SectionHeaderSize = 'section' | 'hero' | 'panel'\n\ntype SectionHeaderEyebrow = 'lead' | 'quiet'\n\nconst defaultSectionHeaderSize = 'section' satisfies SectionHeaderSize\n\nconst sectionHeaderSizes = [\n 'section',\n 'hero',\n 'panel',\n] as const satisfies readonly SectionHeaderSize[]\n\nconst sectionHeaderEyebrows = ['lead', 'quiet'] as const satisfies readonly SectionHeaderEyebrow[]\n\nconst RESTING_EYEBROW = {\n hero: 'lead',\n panel: 'quiet',\n section: 'quiet',\n} satisfies Record<SectionHeaderSize, SectionHeaderEyebrow>\n\nconst restingEyebrow = (size: SectionHeaderSize): SectionHeaderEyebrow => RESTING_EYEBROW[size]\n\nconst sectionHeaderRecipe = cva('flex flex-col gap-6')\n\nconst sectionHeaderLabelStackRecipe = cva('flex flex-col', {\n defaultVariants: { size: defaultSectionHeaderSize },\n variants: {\n size: {\n hero: 'gap-4',\n panel: 'gap-2',\n section: 'gap-4',\n } satisfies Record<SectionHeaderSize, string>,\n },\n})\n\nconst sectionHeaderActionsRecipe = cva('flex flex-wrap items-center gap-4')\n\nconst sectionHeaderAnatomy = anatomy({\n actions: { part: 'actions', recipe: sectionHeaderActionsRecipe, required: false },\n root: { part: 'section-header', recipe: sectionHeaderRecipe, required: true },\n stack: { part: 'stack', recipe: sectionHeaderLabelStackRecipe, required: true },\n})\n\nexport {\n type SectionHeaderEyebrow,\n type SectionHeaderSize,\n defaultSectionHeaderSize,\n restingEyebrow,\n sectionHeaderAnatomy,\n sectionHeaderEyebrows,\n sectionHeaderLabelStackRecipe,\n sectionHeaderRecipe,\n sectionHeaderSizes,\n}\n"],"mappings":";;;AAQA,MAAM,2BAA2B;AAEjC,MAAM,qBAAqB;CACzB;CACA;CACA;AACF;AAEA,MAAM,wBAAwB,CAAC,QAAQ,OAAO;AAE9C,MAAM,kBAAkB;CACtB,MAAM;CACN,OAAO;CACP,SAAS;AACX;AAEA,MAAM,kBAAkB,SAAkD,gBAAgB;AAE1F,MAAM,sBAAsB,IAAI,qBAAqB;AAErD,MAAM,gCAAgC,IAAI,iBAAiB;CACzD,iBAAiB,EAAE,MAAM,yBAAyB;CAClD,UAAU,EACR,MAAM;EACJ,MAAM;EACN,OAAO;EACP,SAAS;CACX,EACF;AACF,CAAC;AAED,MAAM,6BAA6B,IAAI,mCAAmC;AAE1E,MAAM,uBAAuB,QAAQ;CACnC,SAAS;EAAE,MAAM;EAAW,QAAQ;EAA4B,UAAU;CAAM;CAChF,MAAM;EAAE,MAAM;EAAkB,QAAQ;EAAqB,UAAU;CAAK;CAC5E,OAAO;EAAE,MAAM;EAAS,QAAQ;EAA+B,UAAU;CAAK;AAChF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"segmentedControl.js","names":[],"sources":["../../src/recipes/segmentedControl.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { controlInert, controlPress, controlReach, hitArea } from '#parts/control'\n\nconst HIT_AREA = hitArea('after:h-tf-target')\n\nconst segmentedControlRecipe = cva(\n 'relative isolate flex items-center gap-1 rounded-tf-pill bg-tf-panel p-1',\n)\n\nconst segmentedControlIndicatorRecipe = cva([\n 'pointer-events-none absolute z-[-1] rounded-tf-pill bg-tf-blend blend-tf-accent',\n 'top-(--top) left-(--left) h-(--height) w-(--width)',\n '[--transition-duration:var(--tf-duration-1)]',\n '[--transition-timing-function:var(--ease-tf)]',\n])\n\nconst segmentedControlItemRecipe = cva(\n [\n 'relative flex h-tf-control-2xs items-center rounded-tf-pill px-3 text-tf-caption-sm font-normal',\n 'cursor-pointer tf-transition motion-reduce:transition-none',\n HIT_AREA,\n ...controlReach,\n ...controlPress,\n ...controlInert,\n ],\n {\n defaultVariants: { checked: false },\n variants: {\n checked: {\n false: 'text-tf-muted interactive:hovered:text-tf-fg',\n true: 'text-tf-on-accent',\n },\n },\n },\n)\n\nconst segmentedControlAnatomy = anatomy({\n root: { part: 'segmented-control', recipe: segmentedControlRecipe, required: true },\n})\n\nexport {\n segmentedControlAnatomy,\n segmentedControlIndicatorRecipe,\n segmentedControlItemRecipe,\n segmentedControlRecipe,\n}\n"],"mappings":";;;;AAKA,MAAM,WAAW,QAAQ,mBAAmB;AAE5C,MAAM,yBAAyB,IAC7B,0EACF;AAEA,MAAM,kCAAkC,IAAI;CAC1C;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,6BAA6B,IACjC;CACE;CACA;CACA;CACA,GAAG;CACH,GAAG;CACH,GAAG;AACL,GACA;CACE,iBAAiB,EAAE,SAAS,MAAM;CAClC,UAAU,EACR,SAAS;EACP,OAAO;EACP,MAAM;CACR,EACF;AACF,CACF;AAEA,MAAM,0BAA0B,QAAQ,EACtC,MAAM;CAAE,MAAM;CAAqB,QAAQ;CAAwB,UAAU;AAAK,EACpF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"select.js","names":[],"sources":["../../src/recipes/select.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\n\nimport { fieldFootRecipe, fieldRecipe, trailingRecipe } from './field'\nimport { menuMarkRecipe, menuShortcutRecipe } from './menu'\n\nconst selectTriggerRecipe = cva([\n 'flex items-center text-left',\n 'cursor-pointer disabled:cursor-not-allowed',\n 'data-readonly:cursor-default',\n 'outline-hidden',\n])\n\nconst selectValueRecipe = cva('min-w-0 flex-1 truncate')\n\nconst selectIndicatorRecipe = cva([\n 'tf-transition motion-reduce:transition-none',\n 'data-[state=open]:rotate-180',\n])\n\nconst selectRowRecipe = cva([\n 'reached:**:data-[part=trailing]:text-tf-accent-hi',\n 'reached:**:data-[part=trailing]:stroke-tf-ink',\n 'has-data-[state=open]:**:data-[part=trailing]:text-tf-accent-hi',\n 'has-data-[state=open]:**:data-[part=trailing]:stroke-tf-ink',\n])\n\nconst selectEmptyRecipe = cva([\n 'flex h-tf-row min-h-tf-row flex-none items-center px-3',\n 'text-tf-body-sm font-medium text-tf-muted',\n])\n\nconst selectAnatomy = anatomy({\n empty: { part: 'empty', recipe: selectEmptyRecipe, required: false },\n foot: { part: 'foot', recipe: fieldFootRecipe, required: true },\n held: { part: 'held', recipe: menuMarkRecipe, required: true },\n mark: { part: 'mark', recipe: menuMarkRecipe, required: true },\n meta: { part: 'meta', recipe: menuShortcutRecipe, required: false },\n root: { part: 'select', recipe: fieldRecipe, required: true },\n row: { part: 'row', recipe: selectRowRecipe, required: true },\n spinner: { part: 'spinner', recipe: trailingRecipe, required: false },\n trailing: { part: 'trailing', recipe: trailingRecipe, required: true },\n})\n\nexport {\n selectAnatomy,\n selectEmptyRecipe,\n selectIndicatorRecipe,\n selectRowRecipe,\n selectTriggerRecipe,\n selectValueRecipe,\n}\n"],"mappings":";;;;;AAOA,MAAM,sBAAsB,IAAI;CAC9B;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,oBAAoB,IAAI,yBAAyB;AAEvD,MAAM,wBAAwB,IAAI,CAChC,+CACA,8BACF,CAAC;AAED,MAAM,kBAAkB,IAAI;CAC1B;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,oBAAoB,IAAI,CAC5B,0DACA,2CACF,CAAC;AAED,MAAM,gBAAgB,QAAQ;CAC5B,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAmB,UAAU;CAAM;CACnE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAiB,UAAU;CAAK;CAC9D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAgB,UAAU;CAAK;CAC7D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAgB,UAAU;CAAK;CAC7D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAoB,UAAU;CAAM;CAClE,MAAM;EAAE,MAAM;EAAU,QAAQ;EAAa,UAAU;CAAK;CAC5D,KAAK;EAAE,MAAM;EAAO,QAAQ;EAAiB,UAAU;CAAK;CAC5D,SAAS;EAAE,MAAM;EAAW,QAAQ;EAAgB,UAAU;CAAM;CACpE,UAAU;EAAE,MAAM;EAAY,QAAQ;EAAgB,UAAU;CAAK;AACvE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"separator.js","names":[],"sources":["../../src/recipes/separator.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport {\n fadingDownOf,\n fadingOf,\n filledDownOf,\n filledOf,\n ruleQuiet,\n ruleQuietDown,\n} from '#parts/rule'\nimport { defaultTone, tones } from '#parts/tone'\nimport type { Tone } from '#tone'\nimport { toneBlend } from '#tone'\n\ntype SeparatorOrientation = 'horizontal' | 'vertical'\n\ntype SeparatorVariant = 'fade' | 'filled' | 'quiet'\n\nconst defaultSeparatorOrientation = 'horizontal' satisfies SeparatorOrientation\n\nconst defaultSeparatorVariant = 'filled' satisfies SeparatorVariant\n\nconst defaultSeparatorTone = defaultTone\n\ninterface TonedRule {\n class: string\n orientation: SeparatorOrientation\n tone: Tone\n variant: SeparatorVariant\n}\n\nconst tonedRules: TonedRule[] = tones.flatMap((tone) => {\n const blend = toneBlend[tone]\n\n return [\n { class: fadingOf(blend), orientation: 'horizontal', tone, variant: 'fade' },\n { class: filledOf(blend), orientation: 'horizontal', tone, variant: 'filled' },\n { class: fadingDownOf(blend), orientation: 'vertical', tone, variant: 'fade' },\n { class: filledDownOf(blend), orientation: 'vertical', tone, variant: 'filled' },\n ]\n})\n\nconst separatorRecipe = cva('shrink-0', {\n compoundVariants: [\n { class: ruleQuiet, orientation: 'horizontal', variant: 'quiet' },\n { class: ruleQuietDown, orientation: 'vertical', variant: 'quiet' },\n ...tonedRules,\n ],\n defaultVariants: {\n orientation: defaultSeparatorOrientation,\n tone: defaultSeparatorTone,\n variant: defaultSeparatorVariant,\n },\n variants: {\n orientation: {\n horizontal: 'w-full',\n vertical: 'self-stretch',\n } satisfies Record<SeparatorOrientation, string>,\n tone: {\n accent: '',\n danger: '',\n info: '',\n success: '',\n warning: '',\n } satisfies Record<Tone, string>,\n variant: {\n fade: '',\n filled: '',\n quiet: '',\n } satisfies Record<SeparatorVariant, string>,\n },\n})\n\nconst separatorOrientations = [\n 'horizontal',\n 'vertical',\n] as const satisfies readonly SeparatorOrientation[]\n\nconst separatorVariants = ['fade', 'filled', 'quiet'] as const satisfies readonly SeparatorVariant[]\n\nconst separatorTones = tones\n\nconst separatorAnatomy = anatomy({\n root: { part: 'separator', recipe: separatorRecipe, required: true },\n})\n\nexport {\n type SeparatorOrientation,\n type SeparatorVariant,\n defaultSeparatorOrientation,\n defaultSeparatorTone,\n defaultSeparatorVariant,\n separatorAnatomy,\n separatorOrientations,\n separatorRecipe,\n separatorTones,\n separatorVariants,\n}\n"],"mappings":";;;;;;AAmBA,MAAM,8BAA8B;AAEpC,MAAM,0BAA0B;AAEhC,MAAM,uBAAuB;AAS7B,MAAM,aAA0B,MAAM,SAAS,SAAS;CACtD,MAAM,QAAQ,UAAU;CAExB,OAAO;EACL;GAAE,OAAO,SAAS,KAAK;GAAG,aAAa;GAAc;GAAM,SAAS;EAAO;EAC3E;GAAE,OAAO,SAAS,KAAK;GAAG,aAAa;GAAc;GAAM,SAAS;EAAS;EAC7E;GAAE,OAAO,aAAa,KAAK;GAAG,aAAa;GAAY;GAAM,SAAS;EAAO;EAC7E;GAAE,OAAO,aAAa,KAAK;GAAG,aAAa;GAAY;GAAM,SAAS;EAAS;CACjF;AACF,CAAC;AAED,MAAM,kBAAkB,IAAI,YAAY;CACtC,kBAAkB;EAChB;GAAE,OAAO;GAAW,aAAa;GAAc,SAAS;EAAQ;EAChE;GAAE,OAAO;GAAe,aAAa;GAAY,SAAS;EAAQ;EAClE,GAAG;CACL;CACA,iBAAiB;EACf,aAAa;EACb,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,aAAa;GACX,YAAY;GACZ,UAAU;EACZ;EACA,MAAM;GACJ,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,SAAS;GACT,SAAS;EACX;EACA,SAAS;GACP,MAAM;GACN,QAAQ;GACR,OAAO;EACT;CACF;AACF,CAAC;AAED,MAAM,wBAAwB,CAC5B,cACA,UACF;AAEA,MAAM,oBAAoB;CAAC;CAAQ;CAAU;AAAO;AAEpD,MAAM,iBAAiB;AAEvB,MAAM,mBAAmB,QAAQ,EAC/B,MAAM;CAAE,MAAM;CAAa,QAAQ;CAAiB,UAAU;AAAK,EACrE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar.js","names":[],"sources":["../../src/recipes/sidebar.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { controlInert, controlPress, controlReach } from '#parts/control'\nimport { eyebrowLead } from '#parts/eyebrow'\nimport { surfaceLifted, surfacePanel } from '#parts/surface'\n\nimport { collapseMotion, drawerMotion, railCollapse, railMorph, scrimMirrorMotion } from './motion'\n\nconst CHILD_INSET = 'pl-11'\n\nconst ROW_STRIDE = `calc(var(--spacing-tf-control-md) + var(--spacing))`\n\nconst RAIL_STRIDE = `calc(var(--spacing-tf-control-md) + var(--spacing))`\n\nconst sidebarTravel = (index: number, rail: boolean): string => {\n const step = String(index)\n\n if (rail) {\n return `0 calc(${RAIL_STRIDE} * ${step})`\n }\n return `0 calc(${ROW_STRIDE} * ${step})`\n}\n\nconst MORPHS = railMorph\n\nconst ITEM = [\n 'group relative flex flex-none items-center rounded-tf-control',\n 'text-tf-body text-tf-muted',\n 'interactive:hovered:text-tf-fg aria-[current=page]:text-tf-on-accent',\n 'not-aria-[current=page]:interactive:hovered:bg-tf-panel-hi',\n `cursor-pointer ${MORPHS}`,\n ...controlReach,\n ...controlPress,\n ...controlInert,\n]\n\nconst sidebarRecipe = cva([\n 'sticky top-0 z-tf-dropdown hidden h-dvh min-h-0 flex-none flex-col gap-6 py-6 lg:flex',\n 'w-tf-sidebar data-rail:w-tf-rail',\n 'border-r border-tf-line-2 bg-tf-glass backdrop-blur-tf-glass',\n 'tf-icons font-tf-body text-tf-fg',\n MORPHS,\n])\n\nconst sidebarScopeRecipe = cva('flex-none px-3')\n\nconst sidebarMobileBarRecipe = cva([\n 'fixed inset-x-0 top-0 z-tf-dropdown flex items-center gap-3 px-4 lg:hidden',\n 'h-tf-control-lg border-b border-tf-line-2 bg-tf-panel-2 backdrop-blur-tf-panel',\n 'tf-icons font-tf-body text-tf-fg',\n])\n\nconst sidebarMobileHeadingsRecipe = cva('flex min-w-0 flex-1 flex-col gap-0')\n\nconst sidebarMobileEyebrowRecipe = cva(['truncate', eyebrowLead])\n\nconst sidebarMobileTitleRecipe = cva(\n 'truncate font-tf-display text-tf-h4 font-bold tracking-tf-tight text-tf-fg',\n)\n\nconst sidebarOverlayBackdropRecipe = cva([\n 'fixed inset-0 z-tf-modal bg-tf-scrim backdrop-blur-tf-scrim',\n ...scrimMirrorMotion,\n 'motion-reduce:animate-none',\n])\n\nconst sidebarOverlayPositionerRecipe = cva('fixed inset-0 z-tf-modal flex flex-col font-tf-body')\n\nconst sidebarOverlayPanelRecipe = cva([\n ...surfacePanel,\n ...surfaceLifted,\n 'flex h-full w-full flex-col overflow-hidden rounded-tf-none',\n 'text-tf-body-sm font-medium text-tf-fg',\n ...drawerMotion,\n 'motion-reduce:animate-none',\n])\n\nconst sidebarOverlayHeadRecipe = cva(\n 'relative flex flex-none items-center gap-5 border-b border-tf-line-2 px-4 py-3',\n)\n\nconst sidebarOverlayBrandRecipe = cva([\n 'flex min-w-0 items-center gap-3',\n '[&_svg]:size-tf-icon-solo-sm [&_svg]:shrink-0',\n])\n\nconst sidebarOverlayScopeRecipe = cva('ml-auto truncate text-tf-body-sm font-medium text-tf-fg')\n\nconst sidebarOverlayBodyRecipe = cva([\n 'flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto px-4 py-4',\n 'tf-scroll-thin tf-scroll-faded',\n '[--tf-fade-foot:calc(var(--spacing)*2)] [--tf-fade-head:calc(var(--spacing)*2)]',\n])\n\nconst sidebarOverlayNavRecipe = cva('flex flex-none flex-col gap-1')\n\nconst sidebarOverlaySeparatorRecipe = cva('h-px w-full flex-none bg-tf-line-2')\n\nconst sidebarOverlayItemActive =\n 'aria-[current=page]:bg-tf-blend aria-[current=page]:blend-tf-accent'\n\nconst sidebarHeadRecipe = cva(['flex flex-none items-center gap-3 px-3', MORPHS])\n\nconst sidebarBrandRecipe = cva([\n 'flex min-w-0 items-center gap-3 pl-3',\n 'in-data-rail:gap-0 in-data-rail:pl-4',\n '[&_svg]:size-tf-icon-solo-sm [&_svg]:shrink-0',\n MORPHS,\n])\n\nconst sidebarBrandStackRecipe = cva(['flex flex-col gap-px', railCollapse])\n\nconst sidebarWordmarkRecipe = cva(['truncate font-tf-display text-tf-lead tracking-tf-tight'])\n\nconst sidebarBrandSubtitleRecipe = cva('truncate text-tf-caption-sm text-tf-muted')\n\nconst sidebarToggleRecipe = cva('flex-none [&_svg]:size-tf-icon-solo-sm')\n\nconst sidebarSwitchRecipe = cva([\n 'flex flex-none items-center justify-end in-data-rail:pr-2',\n MORPHS,\n])\n\nconst FADED = [\n 'tf-scroll-faded tf-scroll-thin',\n '[--tf-fade-head:calc(var(--spacing)*2)] [--tf-fade-foot:calc(var(--spacing)*2)]',\n 'outline-hidden focused:outline-2 focused:-outline-offset-2 focused:outline-tf-accent-hi',\n].join(' ')\n\nconst sidebarNavRecipe = cva([\n 'relative flex min-h-0 flex-1 flex-col gap-1 overflow-y-auto px-3 py-2',\n FADED,\n])\n\nconst sidebarMarkRecipe = cva([\n 'pointer-events-none absolute inset-x-3 top-2 h-tf-control-md rounded-tf-control',\n 'in-data-rail:inset-x-4',\n 'bg-tf-blend blend-tf-accent',\n `tf-slides-settle ${MORPHS}`,\n])\n\nconst sidebarGroupRecipe = cva('flex flex-none flex-col')\n\nconst sidebarItemRecipe = cva(\n [\n ...ITEM,\n 'h-tf-control-md min-h-tf-control-md w-full text-left',\n '[&>svg]:size-tf-icon-sm [&>svg]:shrink-0',\n ],\n {\n defaultVariants: { level: 'top' },\n variants: {\n level: {\n child: `${CHILD_INSET} pr-3`,\n top: [\n 'gap-3 px-3',\n 'in-data-rail:gap-0',\n 'in-data-rail:px-[calc((var(--spacing-tf-rail)-var(--spacing)*6-var(--spacing-tf-icon-md))/2)]',\n ].join(' '),\n },\n },\n },\n)\n\nconst sidebarIconRecipe = cva([\n 'relative inline-flex size-tf-icon-md flex-none [&_svg]:size-tf-icon-md',\n '[&_svg]:shrink-0',\n MORPHS,\n])\n\nconst sidebarLabelRecipe = cva(['truncate text-left tf-text-trim', railCollapse])\n\nconst sidebarChevronRecipe = cva([\n 'w-tf-icon-sm flex-none overflow-hidden in-data-rail:w-0 in-data-rail:opacity-0',\n 'group-aria-expanded:rotate-180',\n MORPHS,\n])\n\nconst sidebarDotRecipe = cva([\n 'pointer-events-none absolute -right-1 -bottom-1',\n 'size-1 rounded-tf-pill bg-current opacity-0 in-data-rail:opacity-100',\n MORPHS,\n])\n\nconst sidebarSubRecipe = cva(['flex flex-col gap-1 pt-1', ...collapseMotion])\n\nconst sidebarFootRecipe = cva('relative mt-auto flex flex-none flex-col gap-1 px-3')\n\nconst sidebarAnatomy = anatomy({\n brand: { part: 'brand', recipe: sidebarBrandRecipe, required: true },\n brandStack: { part: 'brand-stack', recipe: sidebarBrandStackRecipe, required: true },\n brandSubtitle: { part: 'brand-subtitle', recipe: sidebarBrandSubtitleRecipe, required: false },\n child: { part: 'child', recipe: sidebarItemRecipe, required: false },\n dot: { part: 'dot', recipe: sidebarDotRecipe, required: false },\n foot: { part: 'foot', recipe: sidebarFootRecipe, required: true },\n head: { part: 'head', recipe: sidebarHeadRecipe, required: true },\n item: { part: 'item', recipe: sidebarItemRecipe, required: false },\n label: { part: 'label', recipe: sidebarLabelRecipe, required: true },\n mark: { part: 'mark', recipe: sidebarMarkRecipe, required: true },\n mobileBar: { part: 'mobile-bar', recipe: sidebarMobileBarRecipe, required: true },\n mobileEyebrow: { part: 'mobile-eyebrow', recipe: sidebarMobileEyebrowRecipe, required: false },\n mobileHeadings: {\n part: 'mobile-headings',\n recipe: sidebarMobileHeadingsRecipe,\n required: false,\n },\n mobileTitle: { part: 'mobile-title', recipe: sidebarMobileTitleRecipe, required: false },\n nav: { part: 'nav', recipe: sidebarNavRecipe, required: true },\n overlayBody: { part: 'overlay-body', recipe: sidebarOverlayBodyRecipe, required: true },\n overlayBrand: { part: 'overlay-brand', recipe: sidebarOverlayBrandRecipe, required: true },\n overlayHead: { part: 'overlay-head', recipe: sidebarOverlayHeadRecipe, required: true },\n overlayScope: { part: 'overlay-scope', recipe: sidebarOverlayScopeRecipe, required: false },\n root: { part: 'sidebar', recipe: sidebarRecipe, required: true },\n scope: { part: 'scope', recipe: sidebarScopeRecipe, required: false },\n separator: { part: 'separator', recipe: sidebarOverlaySeparatorRecipe, required: true },\n switch: { part: 'switch', recipe: sidebarSwitchRecipe, required: true },\n wordmark: { part: 'wordmark', recipe: sidebarWordmarkRecipe, required: true },\n})\n\nexport {\n sidebarAnatomy,\n sidebarBrandRecipe,\n sidebarBrandStackRecipe,\n sidebarBrandSubtitleRecipe,\n sidebarChevronRecipe,\n sidebarDotRecipe,\n sidebarFootRecipe,\n sidebarGroupRecipe,\n sidebarHeadRecipe,\n sidebarIconRecipe,\n sidebarItemRecipe,\n sidebarLabelRecipe,\n sidebarMarkRecipe,\n sidebarMobileBarRecipe,\n sidebarMobileEyebrowRecipe,\n sidebarMobileHeadingsRecipe,\n sidebarMobileTitleRecipe,\n sidebarNavRecipe,\n sidebarOverlayBackdropRecipe,\n sidebarOverlayBodyRecipe,\n sidebarOverlayBrandRecipe,\n sidebarOverlayHeadRecipe,\n sidebarOverlayItemActive,\n sidebarOverlayNavRecipe,\n sidebarOverlayPanelRecipe,\n sidebarOverlayPositionerRecipe,\n sidebarOverlayScopeRecipe,\n sidebarOverlaySeparatorRecipe,\n sidebarRecipe,\n sidebarScopeRecipe,\n sidebarSubRecipe,\n sidebarSwitchRecipe,\n sidebarToggleRecipe,\n sidebarTravel,\n sidebarWordmarkRecipe,\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sky.js","names":[],"sources":["../../src/recipes/sky.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\n\nimport { nebulaRecipe } from './nebula'\n\nconst DIM = 1\nconst MID = 2\nconst BRIGHT = 3\n\nconst FAINT = 28\nconst DUSKY = 40\nconst STEADY = 55\nconst CLEAR = 70\nconst KEEN = 95\n\nconst STAR_PX = [DIM, DIM, MID, MID, BRIGHT] as const\nconst STAR_GLOW = [FAINT, DUSKY, STEADY, CLEAR, KEEN] as const\n\nconst SEED_BASE = 7\nconst SEED_STEP = 131\nconst LEHMER_MULTIPLIER = 16_807\nconst LEHMER_MODULUS = 2_147_483_647\n\nconst FIRST = 0\nconst ORIGIN = 0\nconst ONE = 1\nconst EDGE = 4\nconst FIELD = 92\nconst CLOUD_SHIFT = 26\nconst HALF = 0.5\n\nconst LAYERS = 4\n\nconst HALO_AT = CLEAR\n\nconst HALO_SCALE = 5\n\nconst HALO_GLOW = 7\n\nconst CORE_EDGE = 99\n\ninterface Speck {\n across: number\n down: number\n glow: number\n px: number\n}\n\ninterface StarLayer {\n delay: string\n image: string\n position: string\n size: string\n}\n\ninterface Cloud {\n delay: string\n shift: string\n}\n\nconst skyRecipe = cva([\n 'relative isolate overflow-hidden',\n 'rounded-tf-card bg-tf-bg',\n 'font-tf-body text-tf-fg',\n])\n\nconst driftRecipe = cva([\n 'pointer-events-none absolute -inset-1/4',\n '[rotate:var(--tf-sweep)] tf-turning',\n '[animation-duration:calc(var(--tf-sweep-duration)*45)]',\n])\n\nconst starRecipe = cva('pointer-events-none absolute inset-0 tf-twinkling bg-no-repeat')\n\nconst contentRecipe = cva('relative')\n\nconst hashOf = (seed: string): number => {\n let value = SEED_BASE\n\n for (const letter of seed) {\n value = (value * SEED_STEP + (letter.codePointAt(FIRST) ?? ORIGIN)) % LEHMER_MODULUS\n }\n return value + ONE\n}\n\nconst streamFrom = (seed: string): (() => number) => {\n let state = hashOf(seed)\n\n return () => {\n state = (state * LEHMER_MULTIPLIER) % LEHMER_MODULUS\n return state / LEHMER_MODULUS\n }\n}\n\nconst pick = <Value>(choices: readonly Value[], roll: number, fallback: Value): Value =>\n choices[Math.floor(roll * choices.length)] ?? fallback\n\nconst glowOf = (strength: number): string =>\n `color-mix(in oklab, var(--color-tf-fg) ${String(strength)}%, transparent)`\n\nconst circleOf = (strength: number): string => {\n const ink = glowOf(strength)\n\n return `radial-gradient(circle closest-side, ${ink} 0, ${ink} ${String(CORE_EDGE)}%, transparent 100%)`\n}\n\nconst haloOf = (strength: number): string => {\n const ink = glowOf(strength)\n\n return `radial-gradient(circle closest-side, ${ink} 0, transparent 100%)`\n}\n\nconst speckFrom = (roll: () => number): Speck => {\n const step = roll()\n\n return {\n across: EDGE + roll() * FIELD,\n down: EDGE + roll() * FIELD,\n glow: pick(STAR_GLOW, step, FAINT),\n px: pick(STAR_PX, step, DIM),\n }\n}\n\nconst spotOf = (speck: Speck): string => `${String(speck.across)}% ${String(speck.down)}%`\n\nconst sizeOf = (across: number): string => `${String(across)}px ${String(across)}px`\n\ninterface Drawing {\n images: string[]\n positions: string[]\n sizes: string[]\n}\n\nconst draw = (sheet: Drawing, speck: Speck): void => {\n if (speck.glow >= HALO_AT) {\n sheet.images.push(haloOf(HALO_GLOW))\n sheet.positions.push(spotOf(speck))\n sheet.sizes.push(sizeOf(speck.px * HALO_SCALE))\n }\n sheet.images.push(circleOf(speck.glow))\n sheet.positions.push(spotOf(speck))\n sheet.sizes.push(sizeOf(speck.px))\n}\n\nconst starLayers = (count: number, seed: string): StarLayer[] => {\n const roll = streamFrom(seed)\n const sheets: Drawing[] = Array.from({ length: LAYERS }, () => ({\n images: [],\n positions: [],\n sizes: [],\n }))\n\n for (let drawn = ORIGIN; drawn < count; drawn += ONE) {\n const speck = speckFrom(roll)\n const sheet = sheets[Math.floor(roll() * LAYERS)] ?? sheets[FIRST]\n\n if (sheet) {\n draw(sheet, speck)\n }\n }\n return sheets.map((sheet, index) => ({\n delay: `calc(var(--tf-twinkle-duration) * -${String(index / LAYERS)})`,\n image: sheet.images.join(', '),\n position: sheet.positions.join(', '),\n size: sheet.sizes.join(', '),\n }))\n}\n\nconst cloudDrift = (seed: string): Cloud => {\n const roll = streamFrom(`cloud:${seed}`)\n const turn = roll()\n const across = (roll() - HALF) * CLOUD_SHIFT\n const down = (roll() - HALF) * CLOUD_SHIFT\n\n return {\n delay: `calc(var(--tf-sweep-duration) * -${String(turn)})`,\n shift: `${String(across)}% ${String(down)}%`,\n }\n}\n\nconst skyAnatomy = anatomy({\n content: { part: 'content', recipe: contentRecipe, required: true },\n nebula: { part: 'nebula', recipe: nebulaRecipe, required: true },\n root: { part: 'sky', recipe: skyRecipe, required: true },\n star: { part: 'star', recipe: starRecipe, required: true },\n stars: { part: 'stars', recipe: driftRecipe, required: true },\n})\n\nexport {\n type Cloud,\n type StarLayer,\n cloudDrift,\n contentRecipe,\n driftRecipe,\n skyAnatomy,\n skyRecipe,\n starLayers,\n starRecipe,\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"slider.js","names":[],"sources":["../../src/recipes/slider.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { controlReach } from '#parts/control'\nimport { markKnob } from '#parts/mark'\n\nconst sliderKnobSize = 20\n\nconst sliderRecipe = cva(\n [\n 'flex w-full flex-col gap-2',\n 'font-tf-body',\n 'data-disabled:cursor-not-allowed',\n 'data-disabled:**:data-[part=value-text]:text-tf-muted',\n ],\n {\n defaultVariants: { fullWidth: false },\n variants: {\n fullWidth: { false: 'max-w-tf-panel', true: '' },\n },\n },\n)\n\nconst sliderHeadRecipe = cva('flex items-baseline justify-between gap-4')\n\nconst sliderLabelRecipe = cva('text-tf-body text-tf-fg data-disabled:text-tf-muted')\n\nconst sliderValueRecipe = cva([\n 'font-tf-display text-tf-h4 font-bold tracking-tf-tight tabular-nums',\n 'text-tf-fg in-data-dragging:text-tf-accent-hi in-data-focus:text-tf-accent-hi',\n 'tf-transition motion-reduce:transition-none',\n])\n\nconst sliderControlRecipe = cva([\n 'relative flex min-h-tf-target w-full items-center',\n 'not-data-readonly:interactive:cursor-pointer',\n 'data-readonly:cursor-default',\n])\n\nconst sliderTrackRecipe = cva([\n 'h-tf-mark-track w-full overflow-hidden rounded-tf-inline bg-tf-line',\n 'data-disabled:opacity-50',\n])\n\nconst sliderRangeRecipe = cva([\n 'h-tf-mark-track',\n 'bg-tf-blend-rise blend-tf-accent',\n 'data-invalid:blend-tf-danger',\n 'tf-transition not-data-dragging:tf-travels motion-reduce:transition-none',\n])\n\nconst sliderNotchesRecipe = cva('pointer-events-none absolute inset-0')\n\nconst sliderNotchRecipe = cva([\n 'h-full w-tf-hairline',\n 'data-[state=over-value]:bg-tf-line-hi data-[state=under-value]:bg-tf-shade-under',\n 'tf-transition motion-reduce:transition-none',\n])\n\nconst sliderThumbRecipe = cva([\n ...markKnob,\n 'size-tf-icon-solo-sm blend-tf-accent',\n 'inset-ring inset-ring-tf-line-hi',\n 'in-data-invalid:inset-ring-tf-danger-hi',\n 'tf-glow tf-fill-scale tf-settled-quiet',\n 'interactive:hovered:tf-raised',\n 'not-data-dragging:tf-travels',\n 'data-dragging:bg-tf-fg-held data-dragging:tf-raised',\n 'motion-safe:data-dragging:scale-112',\n 'data-disabled:opacity-50',\n ...controlReach,\n])\n\nconst sliderFootRecipe = cva('flex items-baseline justify-between gap-4')\n\nconst sliderHintRecipe = cva('text-tf-caption font-medium', {\n defaultVariants: { invalid: false },\n variants: {\n invalid: { false: 'text-tf-muted', true: 'text-tf-danger-hi tf-arrives' },\n },\n})\n\nconst sliderBoundsRecipe = cva(\n 'ms-auto shrink-0 text-tf-caption font-medium text-tf-muted tabular-nums',\n)\n\nconst sliderAnatomy = anatomy({\n bounds: { part: 'bounds', recipe: sliderBoundsRecipe, required: true },\n root: { part: 'slider', recipe: sliderRecipe, required: true },\n})\n\nexport {\n sliderAnatomy,\n sliderBoundsRecipe,\n sliderControlRecipe,\n sliderFootRecipe,\n sliderHeadRecipe,\n sliderHintRecipe,\n sliderKnobSize,\n sliderLabelRecipe,\n sliderNotchRecipe,\n sliderNotchesRecipe,\n sliderRangeRecipe,\n sliderRecipe,\n sliderThumbRecipe,\n sliderTrackRecipe,\n sliderValueRecipe,\n}\n"],"mappings":";;;;;AAMA,MAAM,iBAAiB;AAEvB,MAAM,eAAe,IACnB;CACE;CACA;CACA;CACA;AACF,GACA;CACE,iBAAiB,EAAE,WAAW,MAAM;CACpC,UAAU,EACR,WAAW;EAAE,OAAO;EAAkB,MAAM;CAAG,EACjD;AACF,CACF;AAEA,MAAM,mBAAmB,IAAI,2CAA2C;AAExE,MAAM,oBAAoB,IAAI,qDAAqD;AAEnF,MAAM,oBAAoB,IAAI;CAC5B;CACA;CACA;AACF,CAAC;AAED,MAAM,sBAAsB,IAAI;CAC9B;CACA;CACA;AACF,CAAC;AAED,MAAM,oBAAoB,IAAI,CAC5B,uEACA,0BACF,CAAC;AAED,MAAM,oBAAoB,IAAI;CAC5B;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,sBAAsB,IAAI,sCAAsC;AAEtE,MAAM,oBAAoB,IAAI;CAC5B;CACA;CACA;AACF,CAAC;AAED,MAAM,oBAAoB,IAAI;CAC5B,GAAG;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG;AACL,CAAC;AAED,MAAM,mBAAmB,IAAI,2CAA2C;AAExE,MAAM,mBAAmB,IAAI,+BAA+B;CAC1D,iBAAiB,EAAE,SAAS,MAAM;CAClC,UAAU,EACR,SAAS;EAAE,OAAO;EAAiB,MAAM;CAA+B,EAC1E;AACF,CAAC;AAED,MAAM,qBAAqB,IACzB,yEACF;AAEA,MAAM,gBAAgB,QAAQ;CAC5B,QAAQ;EAAE,MAAM;EAAU,QAAQ;EAAoB,UAAU;CAAK;CACrE,MAAM;EAAE,MAAM;EAAU,QAAQ;EAAc,UAAU;CAAK;AAC/D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stat.js","names":[],"sources":["../../src/recipes/stat.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { tileRoused } from '#parts/rouse'\nimport { defaultTone, tones } from '#parts/tone'\nimport type { Tone } from '#tone'\nimport { toneBlend } from '#tone'\n\nconst statAccents = tones\n\ntype StatAccent = Tone\n\nconst statDirections = ['up', 'down'] as const\n\ntype StatDirection = (typeof statDirections)[number]\n\nconst defaultStatAccent = defaultTone\n\nconst BLEND = toneBlend\n\ntype StatSurface = 'glass' | 'flat'\n\nconst statSurfaces = ['glass', 'flat'] as const satisfies readonly StatSurface[]\n\nconst defaultStatSurface = 'glass' satisfies StatSurface\n\nconst statRecipe = cva(\n [\n '@container relative isolate flex min-w-0 grow items-center gap-5 p-6',\n 'font-tf-body text-tf-fg tf-transition',\n tileRoused,\n ],\n {\n defaultVariants: { accent: defaultStatAccent, surface: defaultStatSurface },\n variants: {\n accent: BLEND,\n surface: {\n flat: '',\n glass: [\n 'rounded-tf-card bg-tf-glass shadow-tf-float backdrop-blur-tf-glass',\n 'tf-edge-sweep',\n 'motion-safe:tf-lands',\n ].join(' '),\n } satisfies Record<StatSurface, string>,\n },\n },\n)\n\nconst statStackRecipe = cva('flex min-w-0 grow flex-wrap items-center gap-x-3 gap-y-1')\n\nconst statLabelRecipe = cva(['order-1 grow text-tf-body-sm font-medium text-tf-fg'])\n\nconst statFigureRecipe = cva('order-3 m-0 flex basis-full flex-nowrap items-baseline gap-2')\n\nconst statValueRecipe = cva([\n 'font-tf-display text-tf-figure font-bold tracking-tf-tight text-tf-fg',\n 'motion-safe:tf-tallies',\n])\n\nconst statUnitRecipe = cva('text-tf-unit font-tf-body font-medium text-tf-muted')\n\nconst statHintRecipe = cva('order-4 basis-full text-tf-caption-sm text-tf-muted')\n\nconst statSparkShapes = ['line', 'bars'] as const\n\ntype StatSparkShape = (typeof statSparkShapes)[number]\n\nconst defaultStatSparkShape = 'line' satisfies StatSparkShape\n\nconst statSparkRecipe = cva('order-5 mt-2 h-7 w-full basis-full')\n\nconst statChangeRecipe = cva([\n 'relative order-2 m-0 ml-auto inline-flex items-center gap-1',\n 'tf-edge-sweep rounded-tf-pill bg-tf-panel px-2 py-1 blend-tf-accent',\n 'text-tf-caption-sm font-normal whitespace-nowrap text-tf-accent-hi tabular-nums',\n 'tf-icons [&_svg]:size-tf-icon-sm [&_svg]:shrink-0',\n])\n\nconst statTermRecipe = cva('sr-only')\n\nconst statBadgeRecipe = cva('absolute top-4 right-4')\n\nconst statCountedRecipe = cva('')\n\nconst statAnatomy = anatomy({\n badge: { part: 'badge', recipe: statBadgeRecipe, required: false },\n change: { part: 'change', recipe: statChangeRecipe, required: false },\n counted: { part: 'counted', recipe: statCountedRecipe, required: true },\n figure: { part: 'figure', recipe: statFigureRecipe, required: true },\n hint: { part: 'hint', recipe: statHintRecipe, required: false },\n label: { part: 'label', recipe: statLabelRecipe, required: true },\n root: { part: 'stat', recipe: statRecipe, required: true },\n spark: { part: 'spark', recipe: statSparkRecipe, required: false },\n stack: { part: 'stack', recipe: statStackRecipe, required: true },\n term: { part: 'term', recipe: statTermRecipe, required: false },\n unit: { part: 'unit', recipe: statUnitRecipe, required: false },\n value: { part: 'value', recipe: statValueRecipe, required: true },\n way: { part: 'way', recipe: statTermRecipe, required: false },\n})\n\nexport {\n type StatAccent,\n type StatDirection,\n type StatSparkShape,\n type StatSurface,\n defaultStatAccent,\n defaultStatSparkShape,\n defaultStatSurface,\n statAccents,\n statAnatomy,\n statChangeRecipe,\n statDirections,\n statFigureRecipe,\n statHintRecipe,\n statLabelRecipe,\n statRecipe,\n statSparkRecipe,\n statSparkShapes,\n statStackRecipe,\n statSurfaces,\n statTermRecipe,\n statUnitRecipe,\n statValueRecipe,\n}\n"],"mappings":";;;;;;AAQA,MAAM,cAAc;AAIpB,MAAM,iBAAiB,CAAC,MAAM,MAAM;AAIpC,MAAM,oBAAoB;AAE1B,MAAM,QAAQ;AAId,MAAM,eAAe,CAAC,SAAS,MAAM;AAErC,MAAM,qBAAqB;AAE3B,MAAM,aAAa,IACjB;CACE;CACA;CACA;AACF,GACA;CACE,iBAAiB;EAAE,QAAQ;EAAmB,SAAS;CAAmB;CAC1E,UAAU;EACR,QAAQ;EACR,SAAS;GACP,MAAM;GACN,OAAO;IACL;IACA;IACA;GACF,CAAC,CAAC,KAAK,GAAG;EACZ;CACF;AACF,CACF;AAEA,MAAM,kBAAkB,IAAI,0DAA0D;AAEtF,MAAM,kBAAkB,IAAI,CAAC,qDAAqD,CAAC;AAEnF,MAAM,mBAAmB,IAAI,8DAA8D;AAE3F,MAAM,kBAAkB,IAAI,CAC1B,yEACA,wBACF,CAAC;AAED,MAAM,iBAAiB,IAAI,qDAAqD;AAEhF,MAAM,iBAAiB,IAAI,qDAAqD;AAEhF,MAAM,kBAAkB,CAAC,QAAQ,MAAM;AAIvC,MAAM,wBAAwB;AAE9B,MAAM,kBAAkB,IAAI,oCAAoC;AAEhE,MAAM,mBAAmB,IAAI;CAC3B;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,iBAAiB,IAAI,SAAS;AAEpC,MAAM,kBAAkB,IAAI,wBAAwB;AAEpD,MAAM,oBAAoB,IAAI,EAAE;AAEhC,MAAM,cAAc,QAAQ;CAC1B,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAiB,UAAU;CAAM;CACjE,QAAQ;EAAE,MAAM;EAAU,QAAQ;EAAkB,UAAU;CAAM;CACpE,SAAS;EAAE,MAAM;EAAW,QAAQ;EAAmB,UAAU;CAAK;CACtE,QAAQ;EAAE,MAAM;EAAU,QAAQ;EAAkB,UAAU;CAAK;CACnE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAgB,UAAU;CAAM;CAC9D,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAiB,UAAU;CAAK;CAChE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAY,UAAU;CAAK;CACzD,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAiB,UAAU;CAAM;CACjE,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAiB,UAAU;CAAK;CAChE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAgB,UAAU;CAAM;CAC9D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAgB,UAAU;CAAM;CAC9D,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAiB,UAAU;CAAK;CAChE,KAAK;EAAE,MAAM;EAAO,QAAQ;EAAgB,UAAU;CAAM;AAC9D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"switch.js","names":[],"sources":["../../src/recipes/switch.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport type { MarkPlate } from '#mark'\nimport { defaultMarkPlate } from '#mark'\nimport {\n markFace,\n markKnob,\n markPlate,\n markPlated,\n markPress,\n markRow,\n markStack,\n markTitle,\n} from '#parts/mark'\nimport { defaultTone, tones } from '#parts/tone'\nimport type { Tone } from '#tone'\nimport { toneBlend } from '#tone'\n\nconst switchAccents = tones\n\ntype SwitchAccent = Tone\n\nconst defaultSwitchAccent = defaultTone\n\nconst TRACK = [\n 'box-border justify-start rounded-tf-control',\n 'w-[calc(var(--spacing-tf-icon-lg)*2)]',\n 'h-[calc(var(--spacing-tf-icon-md)+2*var(--spacing-tf-mark-inset))]',\n 'p-tf-mark-inset',\n]\n\nconst FILL = ['bg-tf-panel', 'tf-ramp']\n\nconst OFF = ['data-[state=unchecked]:interactive:not-data-readonly:hovered:bg-tf-panel-hi']\n\nconst ON = [\n 'data-[state=checked]:tf-mark-lit',\n 'data-[state=checked]:tf-mark-glowing',\n 'data-[state=checked]:bg-tf-blend',\n 'data-[state=checked]:interactive:not-data-readonly:hovered:tf-blended',\n]\n\nconst switchRecipe = cva([...markRow, 'justify-between gap-6'], {\n defaultVariants: { plate: defaultMarkPlate },\n variants: {\n plate: {\n bare: `${markPlate.bare} ${markPlated.bare}`,\n full: `${markPlate.full} ${markPlated.full}`,\n snug: `${markPlate.snug} ${markPlated.snug}`,\n } satisfies Record<MarkPlate, string>,\n },\n})\n\nconst switchControlRecipe = cva(\n [\n ...markFace,\n ...TRACK,\n ...FILL,\n ...OFF,\n ...ON,\n 'data-invalid:blend-tf-danger data-invalid:tf-mark-failed',\n ],\n {\n defaultVariants: { accent: defaultSwitchAccent },\n variants: { accent: toneBlend },\n },\n)\n\nconst switchThumbRecipe = cva([\n ...markKnob,\n 'size-tf-icon-md',\n 'data-[state=checked]:translate-x-tf-icon-sm',\n markPress,\n])\n\nconst switchLabelRecipe = cva(markStack)\n\nconst switchTitleRecipe = cva(markTitle)\n\nconst switchHintRecipe = cva('text-tf-caption font-medium', {\n defaultVariants: { invalid: false },\n variants: {\n invalid: { false: 'text-tf-muted', true: 'text-tf-danger-hi tf-arrives' },\n },\n})\n\nconst switchAnatomy = anatomy({\n root: { part: 'switch', recipe: switchRecipe, required: true },\n})\n\nexport {\n type SwitchAccent,\n defaultSwitchAccent,\n switchAccents,\n switchAnatomy,\n switchControlRecipe,\n switchHintRecipe,\n switchLabelRecipe,\n switchRecipe,\n switchThumbRecipe,\n switchTitleRecipe,\n}\n"],"mappings":";;;;;;;AAmBA,MAAM,gBAAgB;AAItB,MAAM,sBAAsB;AAE5B,MAAM,QAAQ;CACZ;CACA;CACA;CACA;AACF;AAEA,MAAM,OAAO,CAAC,eAAe,SAAS;AAEtC,MAAM,MAAM,CAAC,6EAA6E;AAE1F,MAAM,KAAK;CACT;CACA;CACA;CACA;AACF;AAEA,MAAM,eAAe,IAAI,CAAC,GAAG,SAAS,uBAAuB,GAAG;CAC9D,iBAAiB,EAAE,OAAO,iBAAiB;CAC3C,UAAU,EACR,OAAO;EACL,MAAM,GAAG,UAAU,KAAK,GAAG,WAAW;EACtC,MAAM,GAAG,UAAU,KAAK,GAAG,WAAW;EACtC,MAAM,GAAG,UAAU,KAAK,GAAG,WAAW;CACxC,EACF;AACF,CAAC;AAED,MAAM,sBAAsB,IAC1B;CACE,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH;AACF,GACA;CACE,iBAAiB,EAAE,QAAQ,oBAAoB;CAC/C,UAAU,EAAE,QAAQ,UAAU;AAChC,CACF;AAEA,MAAM,oBAAoB,IAAI;CAC5B,GAAG;CACH;CACA;CACA;AACF,CAAC;AAED,MAAM,oBAAoB,IAAI,SAAS;AAEvC,MAAM,oBAAoB,IAAI,SAAS;AAEvC,MAAM,mBAAmB,IAAI,+BAA+B;CAC1D,iBAAiB,EAAE,SAAS,MAAM;CAClC,UAAU,EACR,SAAS;EAAE,OAAO;EAAiB,MAAM;CAA+B,EAC1E;AACF,CAAC;AAED,MAAM,gBAAgB,QAAQ,EAC5B,MAAM;CAAE,MAAM;CAAU,QAAQ;CAAc,UAAU;AAAK,EAC/D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table.js","names":[],"sources":["../../src/recipes/table.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { controlInert, controlPress, controlQuietIcon, controlReach } from '#parts/control'\nimport { eyebrowQuiet, eyebrowType } from '#parts/eyebrow'\nimport { revealedControl, revealedIcon, shownControl, shownIcon } from '#parts/reveal'\nimport { ruleFading } from '#parts/rule'\nimport { toneTint } from '#tone'\n\nimport { tableFilterRuleRecipe } from './tableFilter'\n\ntype TableAlign = 'start' | 'end'\n\ntype TableFilterKind = 'text' | 'enum' | 'range'\n\nconst defaultTableAlign = 'start' satisfies TableAlign\n\nconst TIGHT = [\n 'flex size-tf-control-2xs flex-none items-center justify-center rounded-tf-inline',\n 'tf-icons [&_svg]:size-tf-icon-2xs [&_svg]:shrink-0',\n 'cursor-pointer tf-transition motion-reduce:transition-none',\n 'interactive:hovered:bg-tf-panel-hi interactive:hovered:text-tf-fg',\n ...controlReach,\n ...controlInert,\n]\n\nconst CELL = 'flex min-w-0 items-center px-4'\n\nconst tablePinWidth = 52\n\nconst tableActionsWidth = 160\n\nconst tableRecipe = cva('flex w-full min-w-0 flex-col gap-8 font-tf-body')\n\nconst tableToolbarRecipe = cva('flex flex-wrap items-center gap-3')\n\nconst tableSearchRecipe = cva('max-w-tf-panel flex-none')\n\nconst tableAppliedRecipe = cva('flex flex-1 flex-wrap items-center justify-end gap-2')\n\nconst tableSelectionRecipe = cva([\n 'flex flex-wrap items-center gap-4 rounded-tf-control bg-tf-accent-tint px-4 py-3',\n 'animate-tf-in motion-reduce:animate-none',\n])\n\nconst tableSelectionCountRecipe = cva('text-tf-body-sm font-medium text-tf-accent-hi')\n\nconst tableSelectionActionsRecipe = cva('ml-auto flex flex-wrap items-center gap-2')\n\nconst tableCardRecipe = cva('relative isolate rounded-tf-card', {\n defaultVariants: { bordered: true },\n variants: {\n bordered: {\n false: '',\n true: 'tf-edge-sweep tf-swept blend-tf-accent tf-edge-plain',\n },\n },\n})\n\nconst tableScrollRecipe = cva([\n 'tf-scroll-thin overflow-x-auto rounded-tf-card',\n 'tf-resizes motion-reduce:transition-none',\n])\n\nconst tableGridRecipe = cva('overflow-x-clip text-tf-body-sm font-medium text-tf-fg')\n\nconst tableHeadRowRecipe = cva('grid h-tf-control-md')\n\nconst tableHeadCellRecipe = cva([CELL, 'gap-1 whitespace-nowrap'], {\n defaultVariants: { align: defaultTableAlign },\n variants: {\n align: {\n end: 'justify-end',\n start: '',\n } satisfies Record<TableAlign, string>,\n },\n})\n\nconst tableHeadingRecipe = cva([`flex-none text-tf-caption ${eyebrowQuiet}`])\n\nconst tableSortRecipe = cva(\n [\n '-ml-2 flex h-tf-row min-w-0 items-center gap-2 rounded-tf-inline px-2',\n `text-tf-caption ${eyebrowType}`,\n 'tf-icons [&_svg]:size-tf-icon-2xs [&_svg]:shrink-0',\n 'cursor-pointer tf-transition motion-reduce:transition-none',\n 'interactive:hovered:bg-tf-panel-hi interactive:hovered:text-tf-fg',\n ...controlReach,\n ...controlPress,\n ...controlInert,\n ],\n {\n defaultVariants: { sorted: false },\n variants: {\n sorted: { false: 'text-tf-muted', true: 'text-tf-accent-hi' },\n },\n },\n)\n\nconst tableSortLabelRecipe = cva('min-w-0 truncate')\n\nconst tableSortIconRecipe = cva('tf-transition motion-reduce:transition-none', {\n defaultVariants: { descending: false },\n variants: {\n descending: { false: '', true: 'rotate-180' },\n },\n})\n\nconst tableSortMarkRecipe = cva('', {\n defaultVariants: { sorted: false },\n variants: {\n sorted: { false: revealedIcon, true: shownIcon },\n },\n})\n\nconst tableFilterMarkRecipe = cva('', {\n defaultVariants: { on: false },\n variants: {\n on: { false: revealedControl, true: shownControl },\n },\n})\n\nconst tableRankRecipe = cva([\n 'flex-none rounded-tf-pill bg-tf-accent-tint px-1.5',\n 'text-tf-caption-sm font-normal text-tf-accent-hi tabular-nums',\n])\n\nconst tableFilterRecipe = cva(TIGHT, {\n defaultVariants: { on: false },\n variants: {\n on: { false: 'text-tf-muted', true: 'bg-tf-accent-tint text-tf-accent-hi' },\n },\n})\n\nconst tableRuleRecipe = cva(`block ${ruleFading}`)\n\nconst PAGING = [\n 'data-[going=forward]:[--tf-page-from:calc(var(--spacing)*4)]',\n 'data-[going=back]:[--tf-page-from:calc(var(--spacing)*-4)]',\n 'data-[step=a]:motion-safe:animate-tf-page',\n 'data-[step=b]:motion-safe:animate-tf-page-again',\n]\n\nconst tableBodyRecipe = cva(PAGING)\n\nconst tableGroupRecipe = cva('border-b border-tf-line-2 last:border-b-0')\n\nconst A_WASH_OVER_WHATEVER_IS_THERE = [\n 'relative',\n \"before:pointer-events-none before:absolute before:inset-0 before:content-['']\",\n 'before:tf-transition before:motion-reduce:transition-none',\n 'not-data-selected:hovered:before:bg-tf-panel-2',\n 'data-selected:before:bg-tf-accent-tint',\n]\n\nconst tableRowRecipe = cva(\n ['grid tf-transition motion-reduce:transition-none', ...A_WASH_OVER_WHATEVER_IS_THERE],\n {\n defaultVariants: { accent: 'none', dense: false },\n variants: {\n accent: { ...toneTint, none: '' },\n dense: { false: 'h-tf-control-lg', true: 'h-tf-control-md' },\n },\n },\n)\n\nconst tableSelectCellRecipe = cva('flex items-center justify-center')\n\nconst tableMarkRecipe = cva('flex')\n\nconst tableCellRecipe = cva([CELL, 'gap-3'], {\n defaultVariants: { align: defaultTableAlign, mono: false, tabular: false },\n variants: {\n align: {\n end: 'justify-end text-right',\n start: '',\n } satisfies Record<TableAlign, string>,\n mono: { false: '', true: 'font-mono' },\n tabular: { false: '', true: 'whitespace-nowrap tabular-nums' },\n },\n})\n\nconst tableValueRecipe = cva('min-w-0 truncate')\n\nconst tableExpandRecipe = cva(TIGHT, {\n defaultVariants: { open: false },\n variants: {\n open: { false: 'text-tf-muted', true: 'text-tf-accent-hi' },\n },\n})\n\nconst tableExpandIconRecipe = cva('tf-transition motion-reduce:transition-none', {\n defaultVariants: { open: false },\n variants: {\n open: { false: '', true: 'rotate-90' },\n },\n})\n\nconst tableActionsCellRecipe = cva([\n 'sticky right-0 flex items-center justify-end gap-2 pr-3 pl-6',\n 'backdrop-blur-tf-panel in-data-turning:bg-tf-surface-quiet',\n 'before:absolute before:inset-y-0 before:left-0 before:w-tf-hairline before:bg-tf-line-2',\n \"before:content-['']\",\n])\n\nconst tableStepRecipe = cva(controlQuietIcon)\n\nconst tableDetailRecipe = cva('tf-unfolds bg-tf-sunken-hi motion-reduce:transition-none')\n\nconst tableDetailBodyRecipe = cva([\n 'py-5 pr-6 pl-16',\n 'animate-tf-fade-in motion-reduce:animate-none',\n])\n\nconst tableSkeletonBarRecipe = cva('h-3 tf-breathing rounded-tf-pill bg-tf-panel', {\n defaultVariants: { numeric: false },\n variants: {\n numeric: { false: 'w-3/5', true: 'w-2/5' },\n },\n})\n\nconst tableSkeletonMarkRecipe = cva(\n 'size-tf-icon-lg flex-none tf-breathing rounded-tf-inline bg-tf-panel',\n)\n\nconst tableEmptyRecipe = cva('flex flex-col items-center gap-2 px-6 py-14 text-center')\n\nconst tableEmptyTitleRecipe = cva(\n 'font-tf-display text-tf-h4 font-bold tracking-tf-tight text-tf-fg',\n)\n\nconst tableEmptyHintRecipe = cva('text-tf-body-sm font-medium text-tf-muted')\n\nconst tableAnatomy = anatomy({\n bar: { part: 'bar', recipe: tableSkeletonBarRecipe, required: false },\n filterRule: { part: 'filter-rule', recipe: tableFilterRuleRecipe, required: true },\n head: { part: 'head', recipe: tableHeadCellRecipe, required: true },\n mark: { part: 'mark', recipe: tableSortMarkRecipe, required: false },\n rank: { part: 'rank', recipe: tableRankRecipe, required: false },\n root: { part: 'table', recipe: tableRecipe, required: true },\n rule: { part: 'rule', recipe: tableRuleRecipe, required: true },\n ruled: { part: 'ruled', recipe: tableGroupRecipe, required: true },\n tableFilter: { part: 'table-filter', recipe: tableFilterRecipe, required: false },\n toolbar: { part: 'table-toolbar', recipe: tableToolbarRecipe, required: false },\n})\n\nexport {\n type TableAlign,\n type TableFilterKind,\n tableAnatomy,\n tableActionsCellRecipe,\n tableActionsWidth,\n tableAppliedRecipe,\n tableBodyRecipe,\n tableCardRecipe,\n tableCellRecipe,\n tableDetailBodyRecipe,\n tableDetailRecipe,\n tableEmptyHintRecipe,\n tableEmptyRecipe,\n tableEmptyTitleRecipe,\n tableExpandIconRecipe,\n tableExpandRecipe,\n tableFilterRecipe,\n tableGridRecipe,\n tableGroupRecipe,\n tableHeadCellRecipe,\n tableHeadRowRecipe,\n tableHeadingRecipe,\n tableMarkRecipe,\n tablePinWidth,\n tableRecipe,\n tableRowRecipe,\n tableRuleRecipe,\n tableScrollRecipe,\n tableSearchRecipe,\n tableSelectCellRecipe,\n tableSelectionActionsRecipe,\n tableSelectionCountRecipe,\n tableSelectionRecipe,\n tableSkeletonBarRecipe,\n tableSkeletonMarkRecipe,\n tableFilterMarkRecipe,\n tableRankRecipe,\n tableSortIconRecipe,\n tableSortMarkRecipe,\n tableSortLabelRecipe,\n tableSortRecipe,\n tableStepRecipe,\n tableToolbarRecipe,\n tableValueRecipe,\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tableFilter.js","names":[],"sources":["../../src/recipes/tableFilter.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { eyebrowQuiet } from '#parts/eyebrow'\nimport { ruleQuiet } from '#parts/rule'\n\nimport { overlayMotion } from './motion'\n\nconst tableFilterPanelRecipe = cva(\n [\n 'flex origin-top flex-col gap-3 rounded-tf-card bg-tf-glass p-3 backdrop-blur-tf-glass',\n 'tf-edge-sweep font-tf-body text-tf-body-sm font-medium shadow-tf-float tf-edge-plain',\n 'z-tf-dropdown outline-hidden',\n ...overlayMotion,\n ],\n {\n defaultVariants: { wide: false },\n variants: {\n wide: { false: 'w-72', true: 'w-84' },\n },\n },\n)\n\nconst tableFilterTitleRecipe = cva(`text-tf-caption-sm ${eyebrowQuiet}`)\n\nconst tableFilterOptionsRecipe = cva([\n '-mx-1 flex tf-scroll-thin max-h-64 flex-col overflow-y-auto px-1 py-1.5',\n])\n\nconst tableFilterOptionRecipe = cva('flex-none')\n\nconst tableFilterCountRecipe = cva([\n 'flex-none rounded-tf-pill bg-tf-panel px-1.5',\n 'font-mono text-tf-caption-sm text-tf-muted tabular-nums',\n])\n\nconst tableFilterFieldRecipe = cva('w-full max-w-none')\n\nconst tableFilterRuleRecipe = cva(`block ${ruleQuiet}`)\n\nconst tableFilterFootRecipe = cva('flex items-center justify-between gap-2')\n\nexport {\n tableFilterCountRecipe,\n tableFilterFieldRecipe,\n tableFilterFootRecipe,\n tableFilterOptionRecipe,\n tableFilterOptionsRecipe,\n tableFilterPanelRecipe,\n tableFilterRuleRecipe,\n tableFilterTitleRecipe,\n}\n"],"mappings":";;;;;AAOA,MAAM,yBAAyB,IAC7B;CACE;CACA;CACA;CACA,GAAG;AACL,GACA;CACE,iBAAiB,EAAE,MAAM,MAAM;CAC/B,UAAU,EACR,MAAM;EAAE,OAAO;EAAQ,MAAM;CAAO,EACtC;AACF,CACF;AAEA,MAAM,yBAAyB,IAAI,sBAAsB,cAAc;AAEvE,MAAM,2BAA2B,IAAI,CACnC,yEACF,CAAC;AAED,MAAM,0BAA0B,IAAI,WAAW;AAE/C,MAAM,yBAAyB,IAAI,CACjC,gDACA,yDACF,CAAC;AAED,MAAM,yBAAyB,IAAI,mBAAmB;AAEtD,MAAM,wBAAwB,IAAI,SAAS,WAAW;AAEtD,MAAM,wBAAwB,IAAI,yCAAyC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tablePaging.js","names":[],"sources":["../../src/recipes/tablePaging.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { controlInert, controlPress, controlReach, hitArea } from '#parts/control'\n\nconst PAGE_INK = [\n 'font-mono tabular-nums',\n 'cursor-pointer tf-transition motion-reduce:transition-none',\n ...controlReach,\n ...controlPress,\n ...controlInert,\n]\n\nconst CURRENT = 'data-selected:text-tf-on-accent'\n\nconst HIT_AREA = hitArea('after:h-tf-target')\n\nconst tableFootRecipe = cva('flex flex-wrap items-center gap-4 border-t border-tf-line-2 px-4 py-3')\n\nconst tableRangeRecipe = cva('text-tf-caption font-medium text-tf-muted')\n\nconst tablePagingRecipe = cva('ml-auto flex flex-wrap items-center gap-4')\n\nconst tablePageSizesRecipe = cva(\n 'flex items-center gap-2 text-tf-caption font-medium text-tf-muted',\n)\n\nconst tablePageSizeStripRecipe = cva('relative isolate flex gap-1 rounded-tf-pill bg-tf-panel p-1')\n\nconst tablePageSizeMarkRecipe = cva([\n 'absolute z-[-1] rounded-tf-pill bg-tf-blend blend-tf-accent',\n 'top-(--top) left-(--left) h-(--height) w-(--width)',\n '[--transition-duration:var(--tf-duration-1)]',\n '[--transition-timing-function:var(--ease-tf)]',\n])\n\nconst tablePageSizeRecipe = cva([\n 'relative flex h-tf-control-2xs items-center rounded-tf-pill px-3 text-tf-caption-sm',\n HIT_AREA,\n ...PAGE_INK,\n 'text-tf-muted interactive:hovered:text-tf-fg',\n 'data-[state=checked]:text-tf-on-accent',\n])\n\nconst tablePagesRecipe = cva('relative isolate flex items-center gap-1')\n\nconst tablePageMarkRecipe = cva([\n 'absolute inset-y-0 left-0 z-[-1] rounded-tf-inline bg-tf-blend blend-tf-accent',\n 'w-(--width) translate-x-(--left)',\n 'transition-[translate,width] duration-(--tf-duration-1) ease-(--ease-tf)',\n 'motion-reduce:transition-none',\n])\n\nconst tablePageRecipe = cva([\n 'relative flex h-tf-row min-w-tf-row items-center justify-center rounded-tf-inline px-2',\n 'text-tf-caption font-medium',\n HIT_AREA,\n ...PAGE_INK,\n 'text-tf-fg interactive:hovered:bg-tf-panel-hi',\n CURRENT,\n])\n\nconst tableGapRecipe = cva([\n 'flex h-tf-row min-w-tf-row items-center justify-center',\n 'text-tf-caption font-medium text-tf-muted',\n])\n\nexport {\n tableFootRecipe,\n tableGapRecipe,\n tablePageMarkRecipe,\n tablePageRecipe,\n tablePageSizeMarkRecipe,\n tablePageSizeRecipe,\n tablePageSizeStripRecipe,\n tablePageSizesRecipe,\n tablePagesRecipe,\n tablePagingRecipe,\n tableRangeRecipe,\n}\n"],"mappings":";;;AAIA,MAAM,WAAW;CACf;CACA;CACA,GAAG;CACH,GAAG;CACH,GAAG;AACL;AAEA,MAAM,UAAU;AAEhB,MAAM,WAAW,QAAQ,mBAAmB;AAE5C,MAAM,kBAAkB,IAAI,uEAAuE;AAEnG,MAAM,mBAAmB,IAAI,2CAA2C;AAExE,MAAM,oBAAoB,IAAI,2CAA2C;AAEzE,MAAM,uBAAuB,IAC3B,mEACF;AAEA,MAAM,2BAA2B,IAAI,6DAA6D;AAElG,MAAM,0BAA0B,IAAI;CAClC;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,sBAAsB,IAAI;CAC9B;CACA;CACA,GAAG;CACH;CACA;AACF,CAAC;AAED,MAAM,mBAAmB,IAAI,0CAA0C;AAEvE,MAAM,sBAAsB,IAAI;CAC9B;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,kBAAkB,IAAI;CAC1B;CACA;CACA;CACA,GAAG;CACH;CACA;AACF,CAAC;AAED,MAAM,iBAAiB,IAAI,CACzB,0DACA,2CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tail.js","names":[],"sources":["../../src/recipes/tail.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\n\nconst tailSeverities = ['quiet', 'plain', 'warning', 'danger', 'success'] as const\n\ntype TailSeverity = (typeof tailSeverities)[number]\n\nconst tailRecipe = cva([\n 'overflow-hidden rounded-tf-block bg-tf-sunken-quiet',\n 'shadow-[inset_0_0_0_var(--spacing-tf-hairline)_var(--color-tf-line-2)]',\n])\n\nconst tailScrollRecipe = cva('tf-scroll-thin overflow-x-auto overflow-y-auto')\n\nconst tailLineRecipe = cva(\n 'grid min-w-max grid-cols-[3px_6.5rem_1fr] items-center gap-x-3 py-0.5',\n {\n defaultVariants: { severity: 'plain' },\n variants: {\n severity: {\n danger: 'bg-tf-danger-wash',\n plain: '',\n quiet: '',\n success: 'bg-tf-success-tint',\n warning: 'bg-tf-warning-tint',\n } satisfies Record<TailSeverity, string>,\n },\n },\n)\n\nconst tailGutterRecipe = cva('h-full', {\n defaultVariants: { severity: 'plain' },\n variants: {\n severity: {\n danger: 'bg-tf-danger-hi',\n plain: 'bg-transparent',\n quiet: 'bg-transparent',\n success: 'bg-tf-success-hi',\n warning: 'bg-tf-warning-hi',\n } satisfies Record<TailSeverity, string>,\n },\n})\n\nconst tailAtRecipe = cva('py-0.5 pl-3 font-mono text-tf-caption-sm text-tf-muted')\n\nconst tailTextRecipe = cva('py-0.5 pr-3 font-mono text-tf-caption-sm whitespace-nowrap', {\n defaultVariants: { severity: 'plain' },\n variants: {\n severity: {\n danger: 'text-tf-danger-hi',\n plain: 'text-tf-fg',\n quiet: 'text-tf-muted',\n success: 'text-tf-success-hi',\n warning: 'text-tf-warning-hi',\n } satisfies Record<TailSeverity, string>,\n },\n})\n\nconst tailEmptyRecipe = cva('p-5 text-center text-tf-caption font-medium text-tf-muted')\n\nconst tailAnatomy = anatomy({\n at: { part: 'at', recipe: tailAtRecipe, required: false },\n empty: { part: 'empty', recipe: tailEmptyRecipe, required: false },\n line: { part: 'line', recipe: tailLineRecipe, required: false },\n root: { part: 'tail', recipe: tailRecipe, required: true },\n scroll: { part: 'scroll', recipe: tailScrollRecipe, required: true },\n text: { part: 'text', recipe: tailTextRecipe, required: false },\n})\n\nexport {\n type TailSeverity,\n tailAnatomy,\n tailAtRecipe,\n tailEmptyRecipe,\n tailGutterRecipe,\n tailLineRecipe,\n tailRecipe,\n tailScrollRecipe,\n tailSeverities,\n tailTextRecipe,\n}\n"],"mappings":";;;AAIA,MAAM,iBAAiB;CAAC;CAAS;CAAS;CAAW;CAAU;AAAS;AAIxE,MAAM,aAAa,IAAI,CACrB,uDACA,wEACF,CAAC;AAED,MAAM,mBAAmB,IAAI,gDAAgD;AAE7E,MAAM,iBAAiB,IACrB,yEACA;CACE,iBAAiB,EAAE,UAAU,QAAQ;CACrC,UAAU,EACR,UAAU;EACR,QAAQ;EACR,OAAO;EACP,OAAO;EACP,SAAS;EACT,SAAS;CACX,EACF;AACF,CACF;AAEA,MAAM,mBAAmB,IAAI,UAAU;CACrC,iBAAiB,EAAE,UAAU,QAAQ;CACrC,UAAU,EACR,UAAU;EACR,QAAQ;EACR,OAAO;EACP,OAAO;EACP,SAAS;EACT,SAAS;CACX,EACF;AACF,CAAC;AAED,MAAM,eAAe,IAAI,wDAAwD;AAEjF,MAAM,iBAAiB,IAAI,8DAA8D;CACvF,iBAAiB,EAAE,UAAU,QAAQ;CACrC,UAAU,EACR,UAAU;EACR,QAAQ;EACR,OAAO;EACP,OAAO;EACP,SAAS;EACT,SAAS;CACX,EACF;AACF,CAAC;AAED,MAAM,kBAAkB,IAAI,2DAA2D;AAEvF,MAAM,cAAc,QAAQ;CAC1B,IAAI;EAAE,MAAM;EAAM,QAAQ;EAAc,UAAU;CAAM;CACxD,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAiB,UAAU;CAAM;CACjE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAgB,UAAU;CAAM;CAC9D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAY,UAAU;CAAK;CACzD,QAAQ;EAAE,MAAM;EAAU,QAAQ;EAAkB,UAAU;CAAK;CACnE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAgB,UAAU;CAAM;AAChE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.js","names":[],"sources":["../../src/recipes/text.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { eyebrowType } from '#parts/eyebrow'\nimport { toneText } from '#tone'\n\ntype TextSize = 'caption-sm' | 'caption' | 'body-sm' | 'body' | 'lead'\n\ntype TextTone = 'fg' | 'muted' | 'accent' | 'danger' | 'info' | 'success' | 'warning'\n\ntype TextWeight = 'normal' | 'medium' | 'semibold' | 'bold'\n\ntype TextFamily = 'sans' | 'mono' | 'display'\n\nconst defaultTextSize = 'body' satisfies TextSize\n\nconst defaultTextTone = 'fg' satisfies TextTone\n\nconst defaultTextFamily = 'sans' satisfies TextFamily\n\nconst textSizes = [\n 'caption-sm',\n 'caption',\n 'body-sm',\n 'body',\n 'lead',\n] as const satisfies readonly TextSize[]\n\nconst textTones = [\n 'fg',\n 'muted',\n 'accent',\n 'danger',\n 'info',\n 'success',\n 'warning',\n] as const satisfies readonly TextTone[]\n\nconst textWeights = [\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n] as const satisfies readonly TextWeight[]\n\nconst textFamilies = ['sans', 'mono', 'display'] as const satisfies readonly TextFamily[]\n\nconst SIZE_WEIGHT = {\n body: 'normal',\n 'body-sm': 'medium',\n caption: 'medium',\n 'caption-sm': 'medium',\n lead: 'normal',\n} satisfies Record<TextSize, TextWeight>\n\nconst restingWeight = (size: TextSize, uppercase?: boolean): TextWeight => {\n if (uppercase === true) {\n return 'medium'\n }\n return SIZE_WEIGHT[size]\n}\n\nconst TONE_CLASS = {\n ...toneText,\n fg: 'text-tf-fg',\n muted: 'text-tf-muted',\n} satisfies Record<TextTone, string>\n\nconst textRecipe = cva('tf-transition motion-reduce:transition-none', {\n defaultVariants: {\n family: defaultTextFamily,\n size: defaultTextSize,\n tabular: false,\n tone: defaultTextTone,\n uppercase: false,\n weight: 'normal',\n },\n variants: {\n family: {\n display: 'font-tf-display',\n mono: 'font-mono',\n sans: 'font-tf-body',\n } satisfies Record<TextFamily, string>,\n size: {\n body: 'text-tf-body',\n 'body-sm': 'text-tf-body-sm',\n caption: 'text-tf-caption',\n 'caption-sm': 'text-tf-caption-sm',\n lead: 'max-w-tf-measure text-tf-lead',\n } satisfies Record<TextSize, string>,\n tabular: { false: '', true: 'tabular-nums' },\n tone: TONE_CLASS,\n uppercase: { false: '', true: eyebrowType },\n weight: {\n bold: 'font-bold',\n medium: 'font-medium',\n normal: 'font-normal',\n semibold: 'font-semibold',\n } satisfies Record<TextWeight, string>,\n },\n})\n\nconst textAnatomy = anatomy({\n root: { part: 'text', recipe: textRecipe, required: true },\n})\n\nexport {\n type TextFamily,\n type TextSize,\n type TextTone,\n type TextWeight,\n defaultTextFamily,\n defaultTextSize,\n defaultTextTone,\n restingWeight,\n textAnatomy,\n textFamilies,\n textRecipe,\n textSizes,\n textTones,\n textWeights,\n}\n"],"mappings":";;;;;AAcA,MAAM,kBAAkB;AAExB,MAAM,kBAAkB;AAExB,MAAM,oBAAoB;AAE1B,MAAM,YAAY;CAChB;CACA;CACA;CACA;CACA;AACF;AAEA,MAAM,YAAY;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAM,cAAc;CAClB;CACA;CACA;CACA;AACF;AAEA,MAAM,eAAe;CAAC;CAAQ;CAAQ;AAAS;AAE/C,MAAM,cAAc;CAClB,MAAM;CACN,WAAW;CACX,SAAS;CACT,cAAc;CACd,MAAM;AACR;AAEA,MAAM,iBAAiB,MAAgB,cAAoC;CACzE,IAAI,cAAc,MAChB,OAAO;CAET,OAAO,YAAY;AACrB;AAEA,MAAM,aAAa;CACjB,GAAG;CACH,IAAI;CACJ,OAAO;AACT;AAEA,MAAM,aAAa,IAAI,+CAA+C;CACpE,iBAAiB;EACf,QAAQ;EACR,MAAM;EACN,SAAS;EACT,MAAA;EACA,WAAW;EACX,QAAQ;CACV;CACA,UAAU;EACR,QAAQ;GACN,SAAS;GACT,MAAM;GACN,MAAM;EACR;EACA,MAAM;GACJ,MAAM;GACN,WAAW;GACX,SAAS;GACT,cAAc;GACd,MAAM;EACR;EACA,SAAS;GAAE,OAAO;GAAI,MAAM;EAAe;EAC3C,MAAM;EACN,WAAW;GAAE,OAAO;GAAI,MAAM;EAAY;EAC1C,QAAQ;GACN,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,UAAU;EACZ;CACF;AACF,CAAC;AAED,MAAM,cAAc,QAAQ,EAC1B,MAAM;CAAE,MAAM;CAAQ,QAAQ;CAAY,UAAU;AAAK,EAC3D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"textarea.js","names":[],"sources":["../../src/recipes/textarea.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { controlBase, controlInert } from '#parts/control'\nimport { controlFailed, controlHealthy, controlShell } from '#parts/shell'\n\nimport { fieldFootRecipe, fieldRecipe } from './field'\nimport { nebulaCloudLowRecipe, nebulaVeilRecipe } from './nebula'\n\ntype TextareaReach = 'clear' | 'near' | 'full'\n\nconst TEXTAREA_WAKES = [\n 'reached:[&_textarea]:placeholder:opacity-100',\n 'reached:[&_textarea]:placeholder:delay-(--tf-duration-1)',\n]\n\nconst LABEL_RESTS_BY_THE_FIRST_LINE = 'asleep:**:data-[part=label]:translate-y-2.5'\n\nconst shellSurface = [\n 'relative isolate w-full flex-col',\n 'rounded-tf-control font-tf-body',\n ...controlShell(TEXTAREA_WAKES, LABEL_RESTS_BY_THE_FIRST_LINE),\n]\n\nconst PENDING = [\n 'tf-edge-lit tf-pulsing tf-clouding',\n '**:data-[part=nebula]:tf-cloud-breathing',\n].join(' ')\n\nconst textareaShellRecipe = cva([...controlBase, ...shellSurface], {\n defaultVariants: { invalid: false, loading: false },\n variants: {\n invalid: { false: controlHealthy, true: controlFailed },\n loading: { false: '', true: PENDING },\n },\n})\n\nconst textareaRecipe = cva([\n 'max-h-59 min-h-29 w-full resize-none',\n 'tf-writes bg-transparent px-4 pt-6 pb-5',\n 'tf-scroll-faded [--tf-fade-foot:calc(var(--spacing)*5)] [--tf-fade-head:calc(var(--spacing)*6)]',\n 'text-tf-body text-tf-fg',\n 'placeholder:text-tf-muted placeholder:opacity-0',\n 'data-readonly:text-tf-muted',\n 'tf-scroll-thin outline-hidden',\n ...controlInert,\n])\n\nconst textareaCountRecipe = cva(\n [\n 'flex-none pt-2 font-mono text-tf-caption-sm tabular-nums',\n 'tf-transition motion-reduce:transition-none',\n ],\n {\n defaultVariants: { reach: 'clear' },\n variants: {\n reach: {\n clear: 'text-tf-muted',\n full: 'text-tf-danger-hi',\n near: 'text-tf-warning-hi',\n } satisfies Record<TextareaReach, string>,\n },\n },\n)\n\nconst textareaAnatomy = anatomy({\n cloud: { part: 'cloud', recipe: nebulaCloudLowRecipe, required: true },\n count: { part: 'count', recipe: textareaCountRecipe, required: false },\n foot: { part: 'foot', recipe: fieldFootRecipe, required: true },\n nebula: { part: 'nebula', recipe: nebulaVeilRecipe, required: true },\n root: { part: 'textarea', recipe: fieldRecipe, required: true },\n row: { part: 'row', recipe: textareaShellRecipe, required: true },\n spoken: { part: 'spoken', recipe: fieldFootRecipe, required: false },\n})\n\nexport {\n type TextareaReach,\n textareaAnatomy,\n textareaCountRecipe,\n textareaRecipe,\n textareaShellRecipe,\n}\n"],"mappings":";;;;;;;AAkBA,MAAM,eAAe;CACnB;CACA;CACA,GAAG,aAAa,CAThB,gDACA,0DAQ6B,GAAG,6CAA6B;AAC/D;AAEA,MAAM,UAAU,CACd,sCACA,0CACF,CAAC,CAAC,KAAK,GAAG;AAEV,MAAM,sBAAsB,IAAI,CAAC,GAAG,aAAa,GAAG,YAAY,GAAG;CACjE,iBAAiB;EAAE,SAAS;EAAO,SAAS;CAAM;CAClD,UAAU;EACR,SAAS;GAAE,OAAO;GAAgB,MAAM;EAAc;EACtD,SAAS;GAAE,OAAO;GAAI,MAAM;EAAQ;CACtC;AACF,CAAC;AAED,MAAM,iBAAiB,IAAI;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG;AACL,CAAC;AAED,MAAM,sBAAsB,IAC1B,CACE,4DACA,6CACF,GACA;CACE,iBAAiB,EAAE,OAAO,QAAQ;CAClC,UAAU,EACR,OAAO;EACL,OAAO;EACP,MAAM;EACN,MAAM;CACR,EACF;AACF,CACF;AAEA,MAAM,kBAAkB,QAAQ;CAC9B,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAsB,UAAU;CAAK;CACrE,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAqB,UAAU;CAAM;CACrE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAiB,UAAU;CAAK;CAC9D,QAAQ;EAAE,MAAM;EAAU,QAAQ;EAAkB,UAAU;CAAK;CACnE,MAAM;EAAE,MAAM;EAAY,QAAQ;EAAa,UAAU;CAAK;CAC9D,KAAK;EAAE,MAAM;EAAO,QAAQ;EAAqB,UAAU;CAAK;CAChE,QAAQ;EAAE,MAAM;EAAU,QAAQ;EAAiB,UAAU;CAAM;AACrE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.js","names":[],"sources":["../../src/recipes/tile.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\n\nconst tileTones = ['accent', 'success', 'warning', 'info', 'danger'] as const\n\ntype TileTone = (typeof tileTones)[number]\n\nconst defaultTileTone = 'accent' satisfies TileTone\n\nconst tileRests = ['lit', 'quiet', 'filled'] as const\n\ntype TileRest = (typeof tileRests)[number]\n\nconst defaultTileRest = 'lit' satisfies TileRest\n\nconst BLEND = {\n accent: 'blend-tf-accent',\n danger: 'blend-tf-danger',\n info: 'blend-tf-info',\n success: 'blend-tf-success',\n warning: 'blend-tf-warning',\n} satisfies Record<TileTone, string>\n\nconst INK = {\n accent: 'text-tf-accent-hi',\n danger: 'text-tf-danger-hi',\n info: 'text-tf-info-hi',\n success: 'text-tf-success-hi',\n warning: 'text-tf-warning-hi',\n} satisfies Record<TileTone, string>\n\nconst FILLED_INK = {\n accent: 'text-tf-on-accent',\n danger: 'text-tf-on-semantic',\n info: 'text-tf-on-semantic',\n success: 'text-tf-on-semantic',\n warning: 'text-tf-on-semantic',\n} satisfies Record<TileTone, string>\n\nconst LIT = 'tf-edge-sweep tf-swept tf-inner-lit tf-glass-plate stroke-tf-ink tf-icons-solo'\n\nconst QUIET = [\n 'bg-tf-panel-hi tf-ramp tf-cloud-brand tf-cloud-hidden',\n 'text-tf-fg tf-blend-drift tf-icons',\n].join(' ')\n\nconst FILLED = [\n 'bg-tf-blend tf-cloud-brand tf-clouded tf-blend-drift',\n 'tf-edge-sweep tf-swept tf-inner-lit tf-icons-solo',\n].join(' ')\n\nconst tileRecipe = cva(\n [\n 'relative isolate flex size-tf-control-lg shrink-0 items-center justify-center',\n 'rounded-tf-card',\n 'tf-transition motion-reduce:transition-none',\n '[&_svg]:size-tf-icon-solo-lg [&_svg]:shrink-0',\n ],\n {\n compoundVariants: [\n ...tileTones.map((tone) => ({ class: INK[tone], rest: 'lit' as const, tone })),\n ...tileTones.map((tone) => ({ class: FILLED_INK[tone], rest: 'filled' as const, tone })),\n ],\n defaultVariants: { rest: defaultTileRest, tone: defaultTileTone },\n variants: {\n rest: { filled: FILLED, lit: LIT, quiet: QUIET } satisfies Record<TileRest, string>,\n tone: BLEND,\n },\n },\n)\n\nconst tileGlyphRecipe = cva(\n [\n 'inline-flex items-center justify-center',\n '[&_svg]:size-tf-icon-solo-lg [&_svg]:shrink-0',\n 'tf-moves-spring tf-transition motion-reduce:transition-none',\n ],\n {\n defaultVariants: { rest: defaultTileRest },\n variants: {\n rest: {\n filled: 'motion-safe:tf-pops',\n lit: 'motion-safe:tf-pops',\n quiet: '',\n } satisfies Record<TileRest, string>,\n },\n },\n)\n\nconst tileCloudRecipe = cva('tf-nebula-cloud tf-cloud-tight')\n\nconst tileAnatomy = anatomy({\n cloud: { part: 'cloud', recipe: tileCloudRecipe, required: false },\n glyph: { part: 'glyph', recipe: tileGlyphRecipe, required: true },\n root: { part: 'tile', recipe: tileRecipe, required: true },\n})\n\nexport {\n type TileRest,\n type TileTone,\n defaultTileRest,\n defaultTileTone,\n tileAnatomy,\n tileCloudRecipe,\n tileGlyphRecipe,\n tileRecipe,\n tileRests,\n tileTones,\n}\n"],"mappings":";;;AAIA,MAAM,YAAY;CAAC;CAAU;CAAW;CAAW;CAAQ;AAAQ;AAInE,MAAM,kBAAkB;AAExB,MAAM,YAAY;CAAC;CAAO;CAAS;AAAQ;AAI3C,MAAM,kBAAkB;AAExB,MAAM,QAAQ;CACZ,QAAQ;CACR,QAAQ;CACR,MAAM;CACN,SAAS;CACT,SAAS;AACX;AAEA,MAAM,MAAM;CACV,QAAQ;CACR,QAAQ;CACR,MAAM;CACN,SAAS;CACT,SAAS;AACX;AAEA,MAAM,aAAa;CACjB,QAAQ;CACR,QAAQ;CACR,MAAM;CACN,SAAS;CACT,SAAS;AACX;AAEA,MAAM,MAAM;AAEZ,MAAM,QAAQ,CACZ,yDACA,oCACF,CAAC,CAAC,KAAK,GAAG;AAEV,MAAM,SAAS,CACb,wDACA,mDACF,CAAC,CAAC,KAAK,GAAG;AAEV,MAAM,aAAa,IACjB;CACE;CACA;CACA;CACA;AACF,GACA;CACE,kBAAkB,CAChB,GAAG,UAAU,KAAK,UAAU;EAAE,OAAO,IAAI;EAAO,MAAM;EAAgB;CAAK,EAAE,GAC7E,GAAG,UAAU,KAAK,UAAU;EAAE,OAAO,WAAW;EAAO,MAAM;EAAmB;CAAK,EAAE,CACzF;CACA,iBAAiB;EAAE,MAAA;EAAuB,MAAM;CAAgB;CAChE,UAAU;EACR,MAAM;GAAE,QAAQ;GAAQ,KAAK;GAAK,OAAO;EAAM;EAC/C,MAAM;CACR;AACF,CACF;AAEA,MAAM,kBAAkB,IACtB;CACE;CACA;CACA;AACF,GACA;CACE,iBAAiB,EAAE,MAAA,MAAsB;CACzC,UAAU,EACR,MAAM;EACJ,QAAQ;EACR,KAAK;EACL,OAAO;CACT,EACF;AACF,CACF;AAEA,MAAM,kBAAkB,IAAI,gCAAgC;AAE5D,MAAM,cAAc,QAAQ;CAC1B,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAiB,UAAU;CAAM;CACjE,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAiB,UAAU;CAAK;CAChE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAY,UAAU;CAAK;AAC3D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip.js","names":[],"sources":["../../src/recipes/tooltip.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\n\nimport { arrivalMotion } from './motion'\n\ntype TooltipPlacement = 'top' | 'right' | 'bottom' | 'left'\n\nconst defaultTooltipPlacement = 'right' satisfies TooltipPlacement\n\nconst tooltipOpenToken = '--tf-duration-2'\n\nconst tooltipCloseToken = '--tf-duration-1'\n\nconst tooltipPlacements = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n] as const satisfies readonly TooltipPlacement[]\n\nconst tooltipRecipe = cva([\n 'z-tf-tooltip max-w-tf-panel rounded-tf-inline px-1.5 py-0.75',\n 'bg-tf-glass shadow-tf-float backdrop-blur-tf-glass',\n 'tf-edge-sweep tf-edge-plain',\n 'font-tf-body text-tf-caption-sm text-tf-fg',\n ...arrivalMotion,\n 'motion-reduce:animate-none',\n])\n\nconst tooltipArrowRecipe = cva([\n '[--arrow-size:0.5rem]',\n '[--arrow-background:var(--tf-glass-flat)]',\n])\n\nconst tooltipArrowTipRecipe = cva('border-t border-l border-tf-line')\n\nconst tooltipAnatomy = anatomy({\n root: { part: 'tooltip', recipe: tooltipRecipe, required: true },\n})\n\nexport {\n type TooltipPlacement,\n defaultTooltipPlacement,\n tooltipAnatomy,\n tooltipCloseToken,\n tooltipOpenToken,\n tooltipArrowRecipe,\n tooltipArrowTipRecipe,\n tooltipPlacements,\n tooltipRecipe,\n}\n"],"mappings":";;;;AAQA,MAAM,0BAA0B;AAEhC,MAAM,mBAAmB;AAEzB,MAAM,oBAAoB;AAE1B,MAAM,oBAAoB;CACxB;CACA;CACA;CACA;AACF;AAEA,MAAM,gBAAgB,IAAI;CACxB;CACA;CACA;CACA;CACA,GAAG;CACH;AACF,CAAC;AAED,MAAM,qBAAqB,IAAI,CAC7B,yBACA,2CACF,CAAC;AAED,MAAM,wBAAwB,IAAI,kCAAkC;AAEpE,MAAM,iBAAiB,QAAQ,EAC7B,MAAM;CAAE,MAAM;CAAW,QAAQ;CAAe,UAAU;AAAK,EACjE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topBar.js","names":[],"sources":["../../src/recipes/topBar.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { eyebrowLead } from '#parts/eyebrow'\nimport { ruleFading } from '#parts/rule'\n\nconst topBarRecipe = cva([\n 'sticky top-0 isolate z-tf-raised w-full',\n 'bg-tf-panel-2 backdrop-blur-tf-panel',\n 'tf-icons font-tf-body text-tf-fg',\n 'tf-transition motion-reduce:transition-none',\n 'data-lifted:shadow-tf-float',\n])\n\nconst topBarContentRecipe = cva([\n 'mx-auto flex w-full max-w-tf-canvas flex-wrap items-center gap-4 px-6 py-4 sm:px-12',\n 'min-h-[calc(var(--spacing-tf-control-lg)+var(--spacing)*8)]',\n])\n\nconst topBarEdgeRecipe = cva('-mb-px block h-px w-full')\n\nconst topBarRuleRecipe = cva([\n `absolute inset-x-0 bottom-0 ${ruleFading}`,\n 'opacity-0 tf-transition motion-reduce:transition-none',\n 'in-data-lifted:opacity-100',\n])\n\nconst topBarHeadingsRecipe = cva('flex min-w-0 flex-1 flex-col gap-1')\n\nconst topBarEyebrowRecipe = cva(eyebrowLead)\n\nconst topBarTitleRecipe = cva(\n 'truncate font-tf-display text-tf-h3 font-bold tracking-tf-tight text-tf-fg',\n)\n\nconst topBarActionsRecipe = cva('flex flex-wrap items-center gap-4')\n\nconst topBarLevels = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const\n\ntype TopBarLevel = (typeof topBarLevels)[number]\n\nconst defaultTopBarLevel = 'h1' satisfies TopBarLevel\n\nconst topBarAnatomy = anatomy({\n actions: { part: 'actions', recipe: topBarActionsRecipe, required: false },\n content: { part: 'content', recipe: topBarContentRecipe, required: true },\n edge: { part: 'edge', recipe: topBarEdgeRecipe, required: true },\n eyebrow: { part: 'eyebrow', recipe: topBarEyebrowRecipe, required: false },\n headings: { part: 'headings', recipe: topBarHeadingsRecipe, required: true },\n root: { part: 'top-bar', recipe: topBarRecipe, required: true },\n rule: { part: 'rule', recipe: topBarRuleRecipe, required: true },\n title: { part: 'title', recipe: topBarTitleRecipe, required: true },\n})\n\nexport {\n type TopBarLevel,\n defaultTopBarLevel,\n topBarAnatomy,\n topBarLevels,\n topBarRuleRecipe,\n topBarActionsRecipe,\n topBarContentRecipe,\n topBarEdgeRecipe,\n topBarEyebrowRecipe,\n topBarHeadingsRecipe,\n topBarRecipe,\n topBarTitleRecipe,\n}\n"],"mappings":";;;;;AAMA,MAAM,eAAe,IAAI;CACvB;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,sBAAsB,IAAI,CAC9B,uFACA,6DACF,CAAC;AAED,MAAM,mBAAmB,IAAI,0BAA0B;AAEvD,MAAM,mBAAmB,IAAI;CAC3B,+BAA+B;CAC/B;CACA;AACF,CAAC;AAED,MAAM,uBAAuB,IAAI,oCAAoC;AAErE,MAAM,sBAAsB,IAAI,WAAW;AAE3C,MAAM,oBAAoB,IACxB,4EACF;AAEA,MAAM,sBAAsB,IAAI,mCAAmC;AAEnE,MAAM,eAAe;CAAC;CAAM;CAAM;CAAM;CAAM;CAAM;AAAI;AAIxD,MAAM,qBAAqB;AAE3B,MAAM,gBAAgB,QAAQ;CAC5B,SAAS;EAAE,MAAM;EAAW,QAAQ;EAAqB,UAAU;CAAM;CACzE,SAAS;EAAE,MAAM;EAAW,QAAQ;EAAqB,UAAU;CAAK;CACxE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAkB,UAAU;CAAK;CAC/D,SAAS;EAAE,MAAM;EAAW,QAAQ;EAAqB,UAAU;CAAM;CACzE,UAAU;EAAE,MAAM;EAAY,QAAQ;EAAsB,UAAU;CAAK;CAC3E,MAAM;EAAE,MAAM;EAAW,QAAQ;EAAc,UAAU;CAAK;CAC9D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAkB,UAAU;CAAK;CAC/D,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAmB,UAAU;CAAK;AACpE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"trail.js","names":[],"sources":["../../src/recipes/trail.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\n\nconst trailStates = ['done', 'failed', 'current', 'pending'] as const\n\ntype TrailState = (typeof trailStates)[number]\n\nconst trailFlows = ['row', 'column'] as const\n\ntype TrailFlow = (typeof trailFlows)[number]\n\nconst defaultTrailFlow = 'row' satisfies TrailFlow\n\nconst trailRecipe = cva('rounded-tf-block bg-tf-sunken p-6 font-tf-body', {\n defaultVariants: { flow: defaultTrailFlow },\n variants: {\n flow: {\n column: 'grid grid-cols-1 gap-3',\n row: 'grid gap-y-2',\n } satisfies Record<TrailFlow, string>,\n },\n})\n\nconst trailStepRecipe = cva('relative flex flex-row items-start gap-2')\n\nconst trailCaptionRecipe = cva(\n '[grid-column:span_2] flex min-w-0 flex-1 flex-col gap-0 pr-3 last:[grid-column:span_1] last:pr-0',\n)\n\nconst trailBadgeRecipe = cva(\n [\n 'relative isolate flex size-6.5 flex-none items-center justify-center rounded-tf-pill',\n 'tf-icons',\n '[&_svg]:size-tf-icon-2xs [&_svg]:shrink-0',\n ],\n {\n defaultVariants: { state: 'pending' },\n variants: {\n state: {\n current: 'bg-tf-blend text-tf-on-accent blend-tf-accent',\n done: 'bg-tf-blend text-tf-on-semantic blend-tf-success',\n failed: 'bg-tf-blend text-tf-on-semantic blend-tf-danger',\n pending: 'bg-tf-panel text-tf-muted opacity-55',\n } satisfies Record<TrailState, string>,\n },\n },\n)\n\nconst trailSpinRecipe = cva('[&_svg]:animate-spin motion-reduce:[&_svg]:animate-none')\n\nconst trailConnectorRecipe = cva('', {\n defaultVariants: { flow: defaultTrailFlow, state: 'pending' },\n variants: {\n flow: {\n column: 'absolute top-6.5 -bottom-3 left-[calc(1.625rem/2-1px)] w-0.5',\n row: 'mx-1 mt-[calc(1.625rem/2)] h-0.5 min-w-6',\n } satisfies Record<TrailFlow, string>,\n state: {\n current: 'bg-tf-line',\n done: 'bg-tf-success-hi',\n failed: 'bg-tf-danger-hi',\n pending: 'bg-tf-line',\n } satisfies Record<TrailState, string>,\n },\n})\n\nconst trailLabelRecipe = cva('text-tf-caption font-medium', {\n defaultVariants: { state: 'pending' },\n variants: {\n state: {\n current: 'text-tf-accent-hi',\n done: 'text-tf-fg',\n failed: 'text-tf-danger-hi',\n pending: 'text-tf-muted',\n } satisfies Record<TrailState, string>,\n },\n})\n\nconst trailHintRecipe = cva('text-tf-caption-sm text-tf-muted')\n\nconst trailAnatomy = anatomy({\n badge: { part: 'badge', recipe: trailBadgeRecipe, required: true },\n caption: { part: 'caption', recipe: trailCaptionRecipe, required: true },\n connector: { part: 'connector', recipe: trailConnectorRecipe, required: false },\n hint: { part: 'hint', recipe: trailHintRecipe, required: false },\n label: { part: 'label', recipe: trailLabelRecipe, required: true },\n meta: { part: 'meta', recipe: trailHintRecipe, required: false },\n root: { part: 'trail', recipe: trailRecipe, required: true },\n step: { part: 'step', recipe: trailStepRecipe, required: false },\n})\n\nexport {\n type TrailFlow,\n type TrailState,\n defaultTrailFlow,\n trailAnatomy,\n trailBadgeRecipe,\n trailCaptionRecipe,\n trailConnectorRecipe,\n trailFlows,\n trailHintRecipe,\n trailLabelRecipe,\n trailRecipe,\n trailSpinRecipe,\n trailStates,\n trailStepRecipe,\n}\n"],"mappings":";;;AAIA,MAAM,cAAc;CAAC;CAAQ;CAAU;CAAW;AAAS;AAI3D,MAAM,aAAa,CAAC,OAAO,QAAQ;AAInC,MAAM,mBAAmB;AAEzB,MAAM,cAAc,IAAI,kDAAkD;CACxE,iBAAiB,EAAE,MAAA,MAAuB;CAC1C,UAAU,EACR,MAAM;EACJ,QAAQ;EACR,KAAK;CACP,EACF;AACF,CAAC;AAED,MAAM,kBAAkB,IAAI,0CAA0C;AAEtE,MAAM,qBAAqB,IACzB,kGACF;AAEA,MAAM,mBAAmB,IACvB;CACE;CACA;CACA;AACF,GACA;CACE,iBAAiB,EAAE,OAAO,UAAU;CACpC,UAAU,EACR,OAAO;EACL,SAAS;EACT,MAAM;EACN,QAAQ;EACR,SAAS;CACX,EACF;AACF,CACF;AAEA,MAAM,kBAAkB,IAAI,yDAAyD;AAErF,MAAM,uBAAuB,IAAI,IAAI;CACnC,iBAAiB;EAAE,MAAA;EAAwB,OAAO;CAAU;CAC5D,UAAU;EACR,MAAM;GACJ,QAAQ;GACR,KAAK;EACP;EACA,OAAO;GACL,SAAS;GACT,MAAM;GACN,QAAQ;GACR,SAAS;EACX;CACF;AACF,CAAC;AAED,MAAM,mBAAmB,IAAI,+BAA+B;CAC1D,iBAAiB,EAAE,OAAO,UAAU;CACpC,UAAU,EACR,OAAO;EACL,SAAS;EACT,MAAM;EACN,QAAQ;EACR,SAAS;CACX,EACF;AACF,CAAC;AAED,MAAM,kBAAkB,IAAI,kCAAkC;AAE9D,MAAM,eAAe,QAAQ;CAC3B,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAkB,UAAU;CAAK;CACjE,SAAS;EAAE,MAAM;EAAW,QAAQ;EAAoB,UAAU;CAAK;CACvE,WAAW;EAAE,MAAM;EAAa,QAAQ;EAAsB,UAAU;CAAM;CAC9E,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAiB,UAAU;CAAM;CAC/D,OAAO;EAAE,MAAM;EAAS,QAAQ;EAAkB,UAAU;CAAK;CACjE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAiB,UAAU;CAAM;CAC/D,MAAM;EAAE,MAAM;EAAS,QAAQ;EAAa,UAAU;CAAK;CAC3D,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAiB,UAAU;CAAM;AACjE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"userMenu.js","names":[],"sources":["../../src/recipes/userMenu.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nimport { anatomy } from '#anatomy'\nimport { controlInert, controlPress } from '#parts/control'\n\nimport { railCollapse, railMorph } from './motion'\n\nconst userTriggerRecipe = cva([\n 'flex w-full items-center justify-center gap-3 rounded-tf-control p-3 text-left',\n 'text-tf-fg data-rail:gap-0 data-rail:py-2',\n 'data-rail:px-2',\n 'interactive:hovered:bg-tf-panel',\n 'hovered:**:data-[scope=avatar]:tf-edge-lit',\n 'focused:**:data-[scope=avatar]:tf-edge-lit',\n 'outline-hidden',\n 'focused:outline-2 focused:outline-offset-2 focused:outline-tf-accent-hi focused:outline-solid',\n `cursor-pointer ${railMorph}`,\n '[&_svg]:size-tf-icon-sm [&_svg]:shrink-0',\n ...controlPress,\n ...controlInert,\n])\n\nconst userAvatarRecipe = cva([\n 'relative isolate flex size-tf-control-sm flex-none items-center justify-center',\n 'rounded-tf-pill bg-tf-panel-hi text-tf-caption font-medium text-tf-fg',\n 'tf-edge-sweep tf-swept blend-tf-accent',\n 'tf-transition motion-reduce:transition-none',\n])\n\nconst userPortraitRecipe = cva('size-full rounded-tf-pill object-cover')\n\nconst userIdentityRecipe = cva(`flex flex-col gap-0 ${railCollapse}`)\n\nconst userNameRecipe = cva('truncate text-tf-body-sm font-medium')\n\nconst userRoleRecipe = cva('truncate text-tf-caption-sm text-tf-muted')\n\nconst userChevronRecipe = cva([\n 'flex-none text-tf-muted',\n 'in-data-rail:size-0! in-data-rail:opacity-0',\n '[--tf-travel:opacity_var(--tf-timing-glide)]',\n railMorph,\n])\n\nconst userMenuAnatomy = anatomy({\n identity: { part: 'identity', recipe: userIdentityRecipe, required: true },\n name: { part: 'name', recipe: userNameRecipe, required: true },\n root: { part: 'account', recipe: userTriggerRecipe, required: true },\n subtitle: { part: 'subtitle', recipe: userRoleRecipe, required: false },\n})\n\nexport {\n userAvatarRecipe,\n userMenuAnatomy,\n userPortraitRecipe,\n userChevronRecipe,\n userIdentityRecipe,\n userNameRecipe,\n userRoleRecipe,\n userTriggerRecipe,\n}\n"],"mappings":";;;;;AAOA,MAAM,oBAAoB,IAAI;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,kBAAkB;CAClB;CACA,GAAG;CACH,GAAG;AACL,CAAC;AAED,MAAM,mBAAmB,IAAI;CAC3B;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,qBAAqB,IAAI,wCAAwC;AAEvE,MAAM,qBAAqB,IAAI,uBAAuB,cAAc;AAEpE,MAAM,iBAAiB,IAAI,sCAAsC;AAEjE,MAAM,iBAAiB,IAAI,2CAA2C;AAEtE,MAAM,oBAAoB,IAAI;CAC5B;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,kBAAkB,QAAQ;CAC9B,UAAU;EAAE,MAAM;EAAY,QAAQ;EAAoB,UAAU;CAAK;CACzE,MAAM;EAAE,MAAM;EAAQ,QAAQ;EAAgB,UAAU;CAAK;CAC7D,MAAM;EAAE,MAAM;EAAW,QAAQ;EAAmB,UAAU;CAAK;CACnE,UAAU;EAAE,MAAM;EAAY,QAAQ;EAAgB,UAAU;CAAM;AACxE,CAAC"}
package/dist/tone.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"tone.js","names":[],"sources":["../src/tone.ts"],"sourcesContent":["type Tone = 'accent' | 'success' | 'warning' | 'info' | 'danger'\n\nconst toneBlend = {\n accent: 'blend-tf-accent',\n danger: 'blend-tf-danger',\n info: 'blend-tf-info',\n success: 'blend-tf-success',\n warning: 'blend-tf-warning',\n} satisfies Record<Tone, string>\n\nconst toneText = {\n accent: 'text-tf-accent-hi',\n danger: 'text-tf-danger-hi',\n info: 'text-tf-info-hi',\n success: 'text-tf-success-hi',\n warning: 'text-tf-warning-hi',\n} satisfies Record<Tone, string>\n\nconst toneTint = {\n accent: 'bg-tf-accent-tint',\n danger: 'bg-tf-danger-tint',\n info: 'bg-tf-info-tint',\n success: 'bg-tf-success-tint',\n warning: 'bg-tf-warning-tint',\n} satisfies Record<Tone, string>\n\nexport { type Tone, toneBlend, toneText, toneTint }\n"],"mappings":";AAEA,MAAM,YAAY;CAChB,QAAQ;CACR,QAAQ;CACR,MAAM;CACN,SAAS;CACT,SAAS;AACX;AAEA,MAAM,WAAW;CACf,QAAQ;CACR,QAAQ;CACR,MAAM;CACN,SAAS;CACT,SAAS;AACX;AAEA,MAAM,WAAW;CACf,QAAQ;CACR,QAAQ;CACR,MAAM;CACN,SAAS;CACT,SAAS;AACX"}