@hoardodile/ui 0.1.7 → 0.1.8

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 (260) hide show
  1. package/dist/chunk-2BVZEYNW.js +97 -0
  2. package/dist/chunk-2BVZEYNW.js.map +1 -0
  3. package/dist/chunk-2DTR6CD5.js +47 -0
  4. package/dist/chunk-2DTR6CD5.js.map +1 -0
  5. package/dist/chunk-2HWSCY4T.js +20 -0
  6. package/dist/chunk-2HWSCY4T.js.map +1 -0
  7. package/dist/chunk-363CCKQ7.js +75 -0
  8. package/dist/chunk-363CCKQ7.js.map +1 -0
  9. package/dist/chunk-3ZQJWBVB.js +30 -0
  10. package/dist/chunk-3ZQJWBVB.js.map +1 -0
  11. package/dist/chunk-4D36OO5W.js +277 -0
  12. package/dist/chunk-4D36OO5W.js.map +1 -0
  13. package/dist/chunk-4UITFLIN.js +31 -0
  14. package/dist/chunk-4UITFLIN.js.map +1 -0
  15. package/dist/chunk-6HAIUXNZ.js +11 -0
  16. package/dist/chunk-6HAIUXNZ.js.map +1 -0
  17. package/dist/chunk-7JMMFY67.js +62 -0
  18. package/dist/chunk-7JMMFY67.js.map +1 -0
  19. package/dist/chunk-7MWWHI6T.js +1149 -0
  20. package/dist/chunk-7MWWHI6T.js.map +1 -0
  21. package/dist/chunk-AEHTAUAQ.js +65 -0
  22. package/dist/chunk-AEHTAUAQ.js.map +1 -0
  23. package/dist/chunk-ASRGQ5BD.js +130 -0
  24. package/dist/chunk-ASRGQ5BD.js.map +1 -0
  25. package/dist/chunk-BFGOE5AI.js +187 -0
  26. package/dist/chunk-BFGOE5AI.js.map +1 -0
  27. package/dist/chunk-BRT25IDQ.js +46 -0
  28. package/dist/chunk-BRT25IDQ.js.map +1 -0
  29. package/dist/chunk-BU5DQOPM.js +29 -0
  30. package/dist/chunk-BU5DQOPM.js.map +1 -0
  31. package/dist/chunk-BWASOT5X.js +266 -0
  32. package/dist/chunk-BWASOT5X.js.map +1 -0
  33. package/dist/chunk-F32V4Z7Q.js +26 -0
  34. package/dist/chunk-F32V4Z7Q.js.map +1 -0
  35. package/dist/chunk-F7RHDRRJ.js +24 -0
  36. package/dist/chunk-F7RHDRRJ.js.map +1 -0
  37. package/dist/chunk-FH5RNCFR.js +21 -0
  38. package/dist/chunk-FH5RNCFR.js.map +1 -0
  39. package/dist/chunk-GKSX5ULZ.js +513 -0
  40. package/dist/chunk-GKSX5ULZ.js.map +1 -0
  41. package/dist/chunk-JPFDNRCA.js +26 -0
  42. package/dist/chunk-JPFDNRCA.js.map +1 -0
  43. package/dist/chunk-KNPRUZ4H.js +13 -0
  44. package/dist/chunk-KNPRUZ4H.js.map +1 -0
  45. package/dist/chunk-KOFWEPPB.js +254 -0
  46. package/dist/chunk-KOFWEPPB.js.map +1 -0
  47. package/dist/chunk-M5OJN54O.js +10 -0
  48. package/dist/chunk-M5OJN54O.js.map +1 -0
  49. package/dist/chunk-OEVALKQ5.js +51 -0
  50. package/dist/chunk-OEVALKQ5.js.map +1 -0
  51. package/dist/chunk-OW5FWLPH.js +33 -0
  52. package/dist/chunk-OW5FWLPH.js.map +1 -0
  53. package/dist/chunk-POX7TXBH.js +41 -0
  54. package/dist/chunk-POX7TXBH.js.map +1 -0
  55. package/dist/chunk-PWJBHUM2.js +58 -0
  56. package/dist/chunk-PWJBHUM2.js.map +1 -0
  57. package/dist/chunk-QGMDWGJT.js +23 -0
  58. package/dist/chunk-QGMDWGJT.js.map +1 -0
  59. package/dist/chunk-QGTQQNUL.js +36 -0
  60. package/dist/chunk-QGTQQNUL.js.map +1 -0
  61. package/dist/chunk-SAY52ZKI.js +152 -0
  62. package/dist/chunk-SAY52ZKI.js.map +1 -0
  63. package/dist/chunk-SKDPGSRL.js +166 -0
  64. package/dist/chunk-SKDPGSRL.js.map +1 -0
  65. package/dist/chunk-T56ARCUK.js +38 -0
  66. package/dist/chunk-T56ARCUK.js.map +1 -0
  67. package/dist/chunk-TDDHQZ62.js +227 -0
  68. package/dist/chunk-TDDHQZ62.js.map +1 -0
  69. package/dist/chunk-TMQ5OMBK.js +29 -0
  70. package/dist/chunk-TMQ5OMBK.js.map +1 -0
  71. package/dist/chunk-UEVND7AS.js +23 -0
  72. package/dist/chunk-UEVND7AS.js.map +1 -0
  73. package/dist/chunk-UPWHCG4S.js +40 -0
  74. package/dist/chunk-UPWHCG4S.js.map +1 -0
  75. package/dist/chunk-VWUNF7VX.js +3 -0
  76. package/dist/chunk-VWUNF7VX.js.map +1 -0
  77. package/dist/chunk-WI6O7GZK.js +45 -0
  78. package/dist/chunk-WI6O7GZK.js.map +1 -0
  79. package/dist/chunk-WVEK3WCX.js +21 -0
  80. package/dist/chunk-WVEK3WCX.js.map +1 -0
  81. package/dist/chunk-XBPQEZES.js +48 -0
  82. package/dist/chunk-XBPQEZES.js.map +1 -0
  83. package/dist/chunk-ZYAGKKR7.js +142 -0
  84. package/dist/chunk-ZYAGKKR7.js.map +1 -0
  85. package/dist/components/alert.js +2 -21
  86. package/dist/components/alert.js.map +1 -1
  87. package/dist/components/app-dialog.js +10 -654
  88. package/dist/components/app-dialog.js.map +1 -1
  89. package/dist/components/badge.js +2 -23
  90. package/dist/components/badge.js.map +1 -1
  91. package/dist/components/breadcrumb.js +5 -504
  92. package/dist/components/breadcrumb.js.map +1 -1
  93. package/dist/components/button.js +3 -76
  94. package/dist/components/button.js.map +1 -1
  95. package/dist/components/caption-bar.js +7 -521
  96. package/dist/components/caption-bar.js.map +1 -1
  97. package/dist/components/checkbox.js +4 -74
  98. package/dist/components/checkbox.js.map +1 -1
  99. package/dist/components/chip-button.js +4 -85
  100. package/dist/components/chip-button.js.map +1 -1
  101. package/dist/components/close-confirm-dialog.js +12 -662
  102. package/dist/components/close-confirm-dialog.js.map +1 -1
  103. package/dist/components/color-picker.js +7 -533
  104. package/dist/components/color-picker.js.map +1 -1
  105. package/dist/components/combobox.js +15 -937
  106. package/dist/components/combobox.js.map +1 -1
  107. package/dist/components/confirm-by-typing-dialog.js +12 -669
  108. package/dist/components/confirm-by-typing-dialog.js.map +1 -1
  109. package/dist/components/confirm-dialog.js +11 -637
  110. package/dist/components/confirm-dialog.js.map +1 -1
  111. package/dist/components/count-badge.js +2 -21
  112. package/dist/components/count-badge.js.map +1 -1
  113. package/dist/components/dialog.js +8 -569
  114. package/dist/components/dialog.js.map +1 -1
  115. package/dist/components/dropdown-menu.js +9 -1007
  116. package/dist/components/dropdown-menu.js.map +1 -1
  117. package/dist/components/dropdown-select.js +9 -883
  118. package/dist/components/dropdown-select.js.map +1 -1
  119. package/dist/components/empty.js +2 -21
  120. package/dist/components/empty.js.map +1 -1
  121. package/dist/components/filter-rail.js +7 -145
  122. package/dist/components/filter-rail.js.map +1 -1
  123. package/dist/components/fixed-action-bar.js +2 -21
  124. package/dist/components/fixed-action-bar.js.map +1 -1
  125. package/dist/components/font-picker.js +11 -589
  126. package/dist/components/font-picker.js.map +1 -1
  127. package/dist/components/form.js +9 -66
  128. package/dist/components/form.js.map +1 -1
  129. package/dist/components/icon-tile.js +3 -43
  130. package/dist/components/icon-tile.js.map +1 -1
  131. package/dist/components/icon-toggle.js +3 -43
  132. package/dist/components/icon-toggle.js.map +1 -1
  133. package/dist/components/icon.js +3 -47
  134. package/dist/components/icon.js.map +1 -1
  135. package/dist/components/image-crop-panel.js +19 -775
  136. package/dist/components/image-crop-panel.js.map +1 -1
  137. package/dist/components/image-cropper.js +1 -164
  138. package/dist/components/image-cropper.js.map +1 -1
  139. package/dist/components/input-group.js +6 -268
  140. package/dist/components/input-group.js.map +1 -1
  141. package/dist/components/input.js +3 -58
  142. package/dist/components/input.js.map +1 -1
  143. package/dist/components/label.js +3 -38
  144. package/dist/components/label.js.map +1 -1
  145. package/dist/components/list-empty-row.js +2 -21
  146. package/dist/components/list-empty-row.js.map +1 -1
  147. package/dist/components/management-empty.js +2 -21
  148. package/dist/components/management-empty.js.map +1 -1
  149. package/dist/components/management-skeleton.js +4 -59
  150. package/dist/components/management-skeleton.js.map +1 -1
  151. package/dist/components/meta-chip.js +2 -21
  152. package/dist/components/meta-chip.js.map +1 -1
  153. package/dist/components/mobile-drawer.js +7 -268
  154. package/dist/components/mobile-drawer.js.map +1 -1
  155. package/dist/components/page-header.js +3 -42
  156. package/dist/components/page-header.js.map +1 -1
  157. package/dist/components/page-scaffold.js +5 -76
  158. package/dist/components/page-scaffold.js.map +1 -1
  159. package/dist/components/pagination-bar.js +13 -617
  160. package/dist/components/pagination-bar.js.map +1 -1
  161. package/dist/components/pagination.js +6 -684
  162. package/dist/components/pagination.js.map +1 -1
  163. package/dist/components/panel-toolbar.js +11 -716
  164. package/dist/components/panel-toolbar.js.map +1 -1
  165. package/dist/components/pill-tabs.js +2 -21
  166. package/dist/components/pill-tabs.js.map +1 -1
  167. package/dist/components/plugin-download-consent.js +13 -663
  168. package/dist/components/plugin-download-consent.js.map +1 -1
  169. package/dist/components/popover.js +5 -242
  170. package/dist/components/popover.js.map +1 -1
  171. package/dist/components/preview-card.js +2 -21
  172. package/dist/components/preview-card.js.map +1 -1
  173. package/dist/components/progress.js +2 -20
  174. package/dist/components/progress.js.map +1 -1
  175. package/dist/components/radio-group.js +2 -21
  176. package/dist/components/radio-group.js.map +1 -1
  177. package/dist/components/scroll-area.js +2 -21
  178. package/dist/components/scroll-area.js.map +1 -1
  179. package/dist/components/search-field.js +6 -590
  180. package/dist/components/search-field.js.map +1 -1
  181. package/dist/components/secondary-stat.js +3 -40
  182. package/dist/components/secondary-stat.js.map +1 -1
  183. package/dist/components/section-header.js +3 -43
  184. package/dist/components/section-header.js.map +1 -1
  185. package/dist/components/section-label.js +3 -44
  186. package/dist/components/section-label.js.map +1 -1
  187. package/dist/components/section-tabs.js +2 -21
  188. package/dist/components/section-tabs.js.map +1 -1
  189. package/dist/components/separator.js +3 -47
  190. package/dist/components/separator.js.map +1 -1
  191. package/dist/components/sheet.js +8 -467
  192. package/dist/components/sheet.js.map +1 -1
  193. package/dist/components/sidebar.js +24 -1047
  194. package/dist/components/sidebar.js.map +1 -1
  195. package/dist/components/skeleton.js +3 -39
  196. package/dist/components/skeleton.js.map +1 -1
  197. package/dist/components/slider.js +2 -21
  198. package/dist/components/slider.js.map +1 -1
  199. package/dist/components/sortable-chip-list.js +2 -21
  200. package/dist/components/sortable-chip-list.js.map +1 -1
  201. package/dist/components/special-tag-surface.js +3 -531
  202. package/dist/components/special-tag-surface.js.map +1 -1
  203. package/dist/components/spinner.js +3 -63
  204. package/dist/components/spinner.js.map +1 -1
  205. package/dist/components/surface.js +3 -49
  206. package/dist/components/surface.js.map +1 -1
  207. package/dist/components/switch.js +3 -51
  208. package/dist/components/switch.js.map +1 -1
  209. package/dist/components/table.js +2 -20
  210. package/dist/components/table.js.map +1 -1
  211. package/dist/components/tag-chip.js +6 -617
  212. package/dist/components/tag-chip.js.map +1 -1
  213. package/dist/components/textarea.js +3 -56
  214. package/dist/components/textarea.js.map +1 -1
  215. package/dist/components/toast.js +8 -809
  216. package/dist/components/toast.js.map +1 -1
  217. package/dist/components/toggle.js +2 -20
  218. package/dist/components/toggle.js.map +1 -1
  219. package/dist/components/tooltip.js +3 -80
  220. package/dist/components/tooltip.js.map +1 -1
  221. package/dist/hooks/use-dialog-footer-actions.js +1 -9
  222. package/dist/hooks/use-dialog-footer-actions.js.map +1 -1
  223. package/dist/hooks/use-form-field.js +1 -34
  224. package/dist/hooks/use-form-field.js.map +1 -1
  225. package/dist/hooks/use-mobile.js +2 -27
  226. package/dist/hooks/use-mobile.js.map +1 -1
  227. package/dist/hooks/useMobileBackToClose.js +3 -232
  228. package/dist/hooks/useMobileBackToClose.js.map +1 -1
  229. package/dist/icons/actions.js +4 -524
  230. package/dist/icons/actions.js.map +1 -1
  231. package/dist/icons/icon-style.js +1 -49
  232. package/dist/icons/icon-style.js.map +1 -1
  233. package/dist/icons/marks.js +1 -46
  234. package/dist/icons/marks.js.map +1 -1
  235. package/dist/icons/registry.js +2 -1194
  236. package/dist/icons/registry.js.map +1 -1
  237. package/dist/index.js +10 -651
  238. package/dist/index.js.map +1 -1
  239. package/dist/lib/colors.js +1 -63
  240. package/dist/lib/colors.js.map +1 -1
  241. package/dist/lib/merge-config.js +1 -18
  242. package/dist/lib/merge-config.js.map +1 -1
  243. package/dist/lib/pagination.js +1 -24
  244. package/dist/lib/pagination.js.map +1 -1
  245. package/dist/lib/tag-surface.js +5 -613
  246. package/dist/lib/tag-surface.js.map +1 -1
  247. package/dist/lib/utils.js +2 -24
  248. package/dist/lib/utils.js.map +1 -1
  249. package/dist/res-card-template/format.js +1 -21
  250. package/dist/res-card-template/format.js.map +1 -1
  251. package/dist/res-card-template/icon.js +1 -39
  252. package/dist/res-card-template/icon.js.map +1 -1
  253. package/dist/res-card-template/index.js +3 -329
  254. package/dist/res-card-template/index.js.map +1 -1
  255. package/dist/res-card-template/template.js +3 -331
  256. package/dist/res-card-template/template.js.map +1 -1
  257. package/dist/viewport.js +1 -11
  258. package/dist/viewport.js.map +1 -1
  259. package/package.json +3 -3
  260. package/src/components/image-crop-panel.dist.test.tsx +54 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/merge-config.ts","../../src/lib/utils.ts","../../src/components/special/gold.tsx","../../src/components/special/kintsugi.tsx","../../src/components/special/oilslick.tsx","../../src/components/special/rainbow.tsx","../../src/components/special/silver.tsx","../../src/components/special-tag-surface.tsx","../../src/lib/colors.ts","../../src/lib/tag-surface.ts","../../src/components/tag-chip.tsx"],"names":["jsx","jsxs","TagChip"],"mappings":"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","file":"tag-chip.js","sourcesContent":["import { extendTailwindMerge } from \"tailwind-merge\"\n\n// The app's `@theme inline` tokens (theme.css) generate utility names\n// tailwind-merge doesn't know, so it misclassifies them — e.g. `text-ui` is\n// parsed as a text color and dropped next to any `text-*` color. The default\n// class groups are theme-backed, so extending the theme (keys mirror the v4\n// token namespaces one-to-one) registers every custom utility with correct\n// conflict semantics. merge-config.test.ts pins this list against theme.css.\nexport const mergeTheme = {\n\ttext: [\"tiny\", \"ui\", \"doc\", \"doc-title\", \"doc-heading\", \"quote\"],\n\tspacing: [\"chip\", \"control\", \"nav\", \"sidebar\", \"panel\"],\n\ttracking: [\"label\"],\n\tshadow: [\"card\", \"dialog\"],\n\tcontainer: [\"reading\", \"medium\", \"content\"],\n\tfont: [\"doc\", \"heading\"],\n\tease: [\"standard\"],\n\tanimate: [\"skel\", \"pop\"],\n} as const\n\nexport const twMerge = extendTailwindMerge({\n\textend: { theme: mergeTheme },\n})\n","import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"./merge-config\"\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs))\n}\n","import { cn } from \"@hoardodile/ui/lib/utils\"\n\nimport type { SpecialTagStyleConfig } from \"./types\"\n\nfunction GoldSurface({\n\tid,\n\tactive,\n}: {\n\treadonly id: string\n\treadonly active?: boolean\n}) {\n\tconst gradientId = `${id}-gold-gradient`\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn(\n\t\t\t\t\"size-full\",\n\t\t\t\t!active &&\n\t\t\t\t\t\"[filter:brightness(1.1)] group-hover:[filter:brightness(1.16)]\",\n\t\t\t)}\n\t\t\twidth=\"100%\"\n\t\t\theight=\"100%\"\n\t\t\tviewBox=\"0 0 100 100\"\n\t\t\tpreserveAspectRatio=\"none\"\n\t\t>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid={gradientId}\n\t\t\t\t\tx1=\"0%\"\n\t\t\t\t\ty1=\"0%\"\n\t\t\t\t\tx2=\"100%\"\n\t\t\t\t\ty2=\"0%\"\n\t\t\t\t\tgradientTransform=\"rotate(30, 0.5, 0.5)\"\n\t\t\t\t>\n\t\t\t\t\t<stop offset=\"10%\" stopColor=\"#daa520\" />\n\t\t\t\t\t<stop offset=\"30%\" stopColor=\"#ffd700\" />\n\t\t\t\t\t<stop offset=\"50%\" stopColor=\"#f0e68c\" />\n\t\t\t\t\t<stop offset=\"70%\" stopColor=\"#ffd700\" />\n\t\t\t\t\t<stop offset=\"90%\" stopColor=\"#daa520\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t\t<rect\n\t\t\t\twidth=\"100\"\n\t\t\t\theight=\"100\"\n\t\t\t\tfill={active ? \"#8a6d1f\" : `url(#${gradientId})`}\n\t\t\t/>\n\t\t\t{!active && (\n\t\t\t\t<rect\n\t\t\t\t\tx=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"100\"\n\t\t\t\t\theight=\"8\"\n\t\t\t\t\tfill=\"#ffffff\"\n\t\t\t\t\topacity=\"0.12\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</svg>\n\t)\n}\n\nexport const goldConfig: SpecialTagStyleConfig = {\n\trender: GoldSurface,\n\tdefault: {\n\t\tstyle: {\n\t\t\tcolor: \"#725603\",\n\t\t\tboxShadow: \"inset 0 0 0 1px rgba(114, 86, 3, 0.2)\",\n\t\t},\n\t},\n\tactive: {\n\t\tstyle: {\n\t\t\tcolor: \"#ffffff\",\n\t\t},\n\t},\n}\n","import { cn } from \"@hoardodile/ui/lib/utils\"\n\nimport type { SpecialTagStyleConfig } from \"./types\"\n\nfunction KintsugiSurface({\n\tid,\n\tactive,\n}: {\n\treadonly id: string\n\treadonly active?: boolean\n}) {\n\tif (active) {\n\t\treturn (\n\t\t\t<svg\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"size-full\",\n\t\t\t\t\t!active &&\n\t\t\t\t\t\t\"[filter:brightness(1.02)] group-hover:[filter:brightness(1.06)]\",\n\t\t\t\t)}\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"100%\"\n\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\tpreserveAspectRatio=\"none\"\n\t\t\t>\n\t\t\t\t<rect width=\"100\" height=\"100\" fill=\"#9a9a8a\" />\n\t\t\t</svg>\n\t\t)\n\t}\n\n\tconst goldGradientId = `${id}-kintsugi-gold`\n\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn(\n\t\t\t\t\"size-full\",\n\t\t\t\t!active &&\n\t\t\t\t\t\"[filter:brightness(1.02)] group-hover:[filter:brightness(1.06)]\",\n\t\t\t)}\n\t\t\twidth=\"100%\"\n\t\t\theight=\"100%\"\n\t\t\tviewBox=\"0 0 100 100\"\n\t\t\tpreserveAspectRatio=\"none\"\n\t\t>\n\t\t\t<style>{`\n\t\t\t\t@keyframes ${id}-gold-shimmer {\n\t\t\t\t\t0% { stroke-dashoffset: 60; }\n\t\t\t\t\t100% { stroke-dashoffset: 0; }\n\t\t\t\t}\n\t\t\t\t.${id}-gold-vein {\n\t\t\t\t\tstroke-dasharray: 30 30;\n\t\t\t\t\tanimation: ${id}-gold-shimmer 5s linear infinite;\n\t\t\t\t}\n\t\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\t\t.${id}-gold-vein {\n\t\t\t\t\t\tanimation: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`}</style>\n\n\t\t\t<defs>\n\t\t\t\t<linearGradient id={goldGradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n\t\t\t\t\t<stop offset=\"0%\" stopColor=\"#b8860b\" />\n\t\t\t\t\t<stop offset=\"35%\" stopColor=\"#ffd700\" />\n\t\t\t\t\t<stop offset=\"50%\" stopColor=\"#fffacd\" />\n\t\t\t\t\t<stop offset=\"65%\" stopColor=\"#ffd700\" />\n\t\t\t\t\t<stop offset=\"100%\" stopColor=\"#b8860b\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\n\t\t\t{/* Celadon/cream ceramic base */}\n\t\t\t<rect width=\"100\" height=\"100\" fill=\"#d8d4c5\" />\n\t\t\t<rect width=\"100\" height=\"100\" fill=\"#b8c4b8\" opacity=\"0.35\" />\n\n\t\t\t{/* Subtle surface texture */}\n\t\t\t<ellipse cx=\"30\" cy=\"25\" rx=\"40\" ry=\"25\" fill=\"#ffffff\" opacity=\"0.08\" />\n\t\t\t<ellipse cx=\"75\" cy=\"70\" rx=\"35\" ry=\"28\" fill=\"#000000\" opacity=\"0.04\" />\n\n\t\t\t{/* Crack lines (dark) */}\n\t\t\t<path\n\t\t\t\td=\"M 5 20 Q 25 22 35 45 T 60 80\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"#5a5650\"\n\t\t\t\tstrokeWidth=\"0.7\"\n\t\t\t\topacity=\"0.45\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M 80 10 Q 70 35 85 55 T 55 95\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"#5a5650\"\n\t\t\t\tstrokeWidth=\"0.6\"\n\t\t\t\topacity=\"0.40\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M 10 70 Q 30 68 45 55 T 75 45\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"#5a5650\"\n\t\t\t\tstrokeWidth=\"0.5\"\n\t\t\t\topacity=\"0.38\"\n\t\t\t/>\n\n\t\t\t{/* Gold repair veins */}\n\t\t\t<path\n\t\t\t\tclassName={`${id}-gold-vein`}\n\t\t\t\td=\"M 4 18 Q 24 20 34 43 T 58 78\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke={`url(#${goldGradientId})`}\n\t\t\t\tstrokeWidth=\"1.4\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\tclassName={`${id}-gold-vein`}\n\t\t\t\td=\"M 82 8 Q 72 33 87 53 T 53 93\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke={`url(#${goldGradientId})`}\n\t\t\t\tstrokeWidth=\"1.2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\tclassName={`${id}-gold-vein`}\n\t\t\t\td=\"M 8 68 Q 28 66 43 53 T 73 43\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke={`url(#${goldGradientId})`}\n\t\t\t\tstrokeWidth=\"1.0\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport const kintsugiConfig: SpecialTagStyleConfig = {\n\trender: KintsugiSurface,\n\tdefault: {\n\t\tstyle: {\n\t\t\tcolor: \"#4a4030\",\n\t\t\tboxShadow: \"inset 0 0 0 1px rgba(74, 64, 48, 0.12)\",\n\t\t},\n\t},\n\tactive: {\n\t\tstyle: {\n\t\t\tcolor: \"#ffffff\",\n\t\t},\n\t},\n}\n","import { cn } from \"@hoardodile/ui/lib/utils\"\n\nimport type { SpecialTagStyleConfig } from \"./types\"\n\nfunction OilslickSurface({\n\tid,\n\tactive,\n}: {\n\treadonly id: string\n\treadonly active?: boolean\n}) {\n\tif (active) {\n\t\treturn (\n\t\t\t<svg\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"size-full\",\n\t\t\t\t\t!active &&\n\t\t\t\t\t\t\"[filter:saturate(1.15)] group-hover:[filter:saturate(1.3)_brightness(1.08)]\",\n\t\t\t\t)}\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"100%\"\n\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\tpreserveAspectRatio=\"none\"\n\t\t\t>\n\t\t\t\t<rect width=\"100\" height=\"100\" fill=\"#1a1a2e\" />\n\t\t\t</svg>\n\t\t)\n\t}\n\n\tconst gradientA = `${id}-oilslick-a`\n\tconst gradientB = `${id}-oilslick-b`\n\tconst gradientC = `${id}-oilslick-c`\n\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn(\n\t\t\t\t\"size-full\",\n\t\t\t\t!active &&\n\t\t\t\t\t\"[filter:saturate(1.15)] group-hover:[filter:saturate(1.3)_brightness(1.08)]\",\n\t\t\t)}\n\t\t\twidth=\"100%\"\n\t\t\theight=\"100%\"\n\t\t\tviewBox=\"0 0 100 100\"\n\t\t\tpreserveAspectRatio=\"none\"\n\t\t>\n\t\t\t<defs>\n\t\t\t\t<radialGradient id={gradientA} cx=\"30%\" cy=\"30%\" r=\"70%\">\n\t\t\t\t\t<stop offset=\"0%\" stopColor=\"#8b5cf6\">\n\t\t\t\t\t\t<animate\n\t\t\t\t\t\t\tattributeName=\"stop-color\"\n\t\t\t\t\t\t\tvalues=\"#8b5cf6;#06b6d4;#8b5cf6\"\n\t\t\t\t\t\t\tdur=\"8s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</stop>\n\t\t\t\t\t<stop offset=\"60%\" stopColor=\"#1e1b4b\" stopOpacity=\"0.9\" />\n\t\t\t\t\t<stop offset=\"100%\" stopColor=\"#0f0f1a\" stopOpacity=\"0\" />\n\t\t\t\t</radialGradient>\n\t\t\t\t<radialGradient id={gradientB} cx=\"70%\" cy=\"60%\" r=\"60%\">\n\t\t\t\t\t<stop offset=\"0%\" stopColor=\"#10b981\">\n\t\t\t\t\t\t<animate\n\t\t\t\t\t\t\tattributeName=\"stop-color\"\n\t\t\t\t\t\t\tvalues=\"#10b981;#f59e0b;#ec4899;#10b981\"\n\t\t\t\t\t\t\tdur=\"10s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</stop>\n\t\t\t\t\t<stop offset=\"55%\" stopColor=\"#1e1b4b\" stopOpacity=\"0.8\" />\n\t\t\t\t\t<stop offset=\"100%\" stopColor=\"#0f0f1a\" stopOpacity=\"0\" />\n\t\t\t\t</radialGradient>\n\t\t\t\t<radialGradient id={gradientC} cx=\"50%\" cy=\"80%\" r=\"55%\">\n\t\t\t\t\t<stop offset=\"0%\" stopColor=\"#ec4899\">\n\t\t\t\t\t\t<animate\n\t\t\t\t\t\t\tattributeName=\"stop-color\"\n\t\t\t\t\t\t\tvalues=\"#ec4899;#8b5cf6;#06b6d4;#ec4899\"\n\t\t\t\t\t\t\tdur=\"7s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</stop>\n\t\t\t\t\t<stop offset=\"50%\" stopColor=\"#1e1b4b\" stopOpacity=\"0.7\" />\n\t\t\t\t\t<stop offset=\"100%\" stopColor=\"#0f0f1a\" stopOpacity=\"0\" />\n\t\t\t\t</radialGradient>\n\t\t\t</defs>\n\n\t\t\t<rect width=\"100\" height=\"100\" fill=\"#0a0a12\" />\n\t\t\t<rect\n\t\t\t\twidth=\"100\"\n\t\t\t\theight=\"100\"\n\t\t\t\tfill={`url(#${gradientA})`}\n\t\t\t\topacity=\"0.85\"\n\t\t\t/>\n\t\t\t<rect\n\t\t\t\twidth=\"100\"\n\t\t\t\theight=\"100\"\n\t\t\t\tfill={`url(#${gradientB})`}\n\t\t\t\topacity=\"0.75\"\n\t\t\t/>\n\t\t\t<rect\n\t\t\t\twidth=\"100\"\n\t\t\t\theight=\"100\"\n\t\t\t\tfill={`url(#${gradientC})`}\n\t\t\t\topacity=\"0.70\"\n\t\t\t/>\n\n\t\t\t{/* Thin oily film highlights */}\n\t\t\t<path\n\t\t\t\td=\"M -10 60 Q 25 45 50 60 T 110 55\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"#ffffff\"\n\t\t\t\tstrokeWidth=\"0.8\"\n\t\t\t\topacity=\"0.12\"\n\t\t\t>\n\t\t\t\t<animate\n\t\t\t\t\tattributeName=\"d\"\n\t\t\t\t\tvalues=\"M -10 60 Q 25 45 50 60 T 110 55;M -10 55 Q 30 70 55 50 T 110 65;M -10 60 Q 25 45 50 60 T 110 55\"\n\t\t\t\t\tdur=\"12s\"\n\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t/>\n\t\t\t</path>\n\t\t</svg>\n\t)\n}\n\nexport const oilslickConfig: SpecialTagStyleConfig = {\n\trender: OilslickSurface,\n\tdefault: {\n\t\tstyle: {\n\t\t\tcolor: \"#ffffff\",\n\t\t\tboxShadow:\n\t\t\t\t\"inset 0 0 0 1px rgba(255, 255, 255, 0.08), 0 0 10px rgba(139, 92, 246, 0.20)\",\n\t\t},\n\t},\n\tactive: {\n\t\tstyle: {\n\t\t\tcolor: \"#ffffff\",\n\t\t},\n\t},\n}\n","import { cn } from \"@hoardodile/ui/lib/utils\"\n\nimport type { SpecialTagStyleConfig } from \"./types\"\n\nfunction RainbowSurface({\n\tid,\n\tactive,\n}: {\n\treadonly id: string\n\treadonly active?: boolean\n}) {\n\tconst gradientId = `${id}-rainbow-gradient`\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn(\n\t\t\t\t\"size-full\",\n\t\t\t\t!active && \"group-hover:[filter:brightness(1.08)]\",\n\t\t\t)}\n\t\t\twidth=\"100%\"\n\t\t\theight=\"100%\"\n\t\t\tviewBox=\"0 0 100 100\"\n\t\t\tpreserveAspectRatio=\"none\"\n\t\t>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid={gradientId}\n\t\t\t\t\tx1=\"0%\"\n\t\t\t\t\ty1=\"0%\"\n\t\t\t\t\tx2=\"100%\"\n\t\t\t\t\ty2=\"0%\"\n\t\t\t\t\tgradientTransform=\"rotate(30, 0.5, 0.5)\"\n\t\t\t\t>\n\t\t\t\t\t<stop offset=\"0%\" stopColor=\"#fbffca\" />\n\t\t\t\t\t<stop offset=\"33%\" stopColor=\"#baffbf\" />\n\t\t\t\t\t<stop offset=\"66%\" stopColor=\"#a7efff\" />\n\t\t\t\t\t<stop offset=\"100%\" stopColor=\"#ffabff\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t\t<rect\n\t\t\t\twidth=\"100\"\n\t\t\t\theight=\"100\"\n\t\t\t\tfill={active ? \"#005458\" : `url(#${gradientId})`}\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport const rainbowConfig: SpecialTagStyleConfig = {\n\trender: RainbowSurface,\n\tdefault: {\n\t\tclassName: \"font-bold dark:[text-shadow:0_0_5px_rgba(0,0,0,0.5)]\",\n\t\tstyle: {\n\t\t\tcolor: \"#ffffff\",\n\t\t\ttextShadow: \"0 0 5px rgba(0, 0, 0, 0.2)\",\n\t\t\tboxShadow: \"inset 0 0 0 1px rgba(0, 247, 255, 0.1)\",\n\t\t},\n\t},\n\tactive: {\n\t\tstyle: {\n\t\t\tcolor: \"#ffffff\",\n\t\t},\n\t},\n}\n","import { cn } from \"@hoardodile/ui/lib/utils\"\n\nimport type { SpecialTagStyleConfig } from \"./types\"\n\nfunction SilverSurface({\n\tid,\n\tactive,\n}: {\n\treadonly id: string\n\treadonly active?: boolean\n}) {\n\tconst gradientId = `${id}-silver-gradient`\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn(\n\t\t\t\t\"size-full\",\n\t\t\t\t!active &&\n\t\t\t\t\t\"[filter:brightness(1.1)] group-hover:[filter:brightness(1.16)]\",\n\t\t\t)}\n\t\t\twidth=\"100%\"\n\t\t\theight=\"100%\"\n\t\t\tviewBox=\"0 0 100 100\"\n\t\t\tpreserveAspectRatio=\"none\"\n\t\t>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid={gradientId}\n\t\t\t\t\tx1=\"0%\"\n\t\t\t\t\ty1=\"0%\"\n\t\t\t\t\tx2=\"100%\"\n\t\t\t\t\ty2=\"0%\"\n\t\t\t\t\tgradientTransform=\"rotate(30, 0.5, 0.5)\"\n\t\t\t\t>\n\t\t\t\t\t<stop offset=\"10%\" stopColor=\"#afaeae\" />\n\t\t\t\t\t<stop offset=\"30%\" stopColor=\"#d6d6d6\" />\n\t\t\t\t\t<stop offset=\"50%\" stopColor=\"#eeeeee\" />\n\t\t\t\t\t<stop offset=\"70%\" stopColor=\"#d6d6d6\" />\n\t\t\t\t\t<stop offset=\"90%\" stopColor=\"#afaeae\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t\t<rect\n\t\t\t\twidth=\"100\"\n\t\t\t\theight=\"100\"\n\t\t\t\tfill={active ? \"#5a5a5a\" : `url(#${gradientId})`}\n\t\t\t/>\n\t\t\t{!active && (\n\t\t\t\t<rect\n\t\t\t\t\tx=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"100\"\n\t\t\t\t\theight=\"8\"\n\t\t\t\t\tfill=\"#ffffff\"\n\t\t\t\t\topacity=\"0.16\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</svg>\n\t)\n}\n\nexport const silverConfig: SpecialTagStyleConfig = {\n\trender: SilverSurface,\n\tdefault: {\n\t\tstyle: {\n\t\t\tcolor: \"#2a2a2a\",\n\t\t\tboxShadow: \"inset 0 0 0 1px rgba(0, 0, 0, 0.08)\",\n\t\t},\n\t},\n\tactive: {\n\t\tstyle: {\n\t\t\tcolor: \"#ffffff\",\n\t\t},\n\t},\n}\n","import { cn } from \"@hoardodile/ui/lib/utils\"\nimport { useId } from \"react\"\nimport type { TagSpecialStyle } from \"@hoardodile/ui/lib/colors\"\nimport { goldConfig } from \"./special/gold\"\nimport { kintsugiConfig } from \"./special/kintsugi\"\nimport { oilslickConfig } from \"./special/oilslick\"\nimport { rainbowConfig } from \"./special/rainbow\"\nimport { silverConfig } from \"./special/silver\"\nimport type { SpecialTagStyleConfig } from \"./special/types\"\n\nexport type SpecialTagSurfaceProps = {\n\treadonly style: TagSpecialStyle\n\treadonly active?: boolean\n\treadonly className?: string\n}\n\nconst SPECIAL_TAG_CONFIG: Record<TagSpecialStyle, SpecialTagStyleConfig> = {\n\tsilver: silverConfig,\n\tgold: goldConfig,\n\trainbow: rainbowConfig,\n\toilslick: oilslickConfig,\n\tkintsugi: kintsugiConfig,\n}\n\nexport function getSpecialTagStyleConfig(\n\tstyle: TagSpecialStyle,\n): SpecialTagStyleConfig {\n\treturn SPECIAL_TAG_CONFIG[style]\n}\n\n/**\n * SVG background surface for special tag styles.\n *\n * Each style owns a self-contained SVG renderer in `src/components/special/`.\n * This component only picks the right renderer from the registry and applies\n * positioning; all styling (filters, colors, shadows) lives in the renderer or\n * the chip container config.\n */\nexport function SpecialTagSurface(props: SpecialTagSurfaceProps) {\n\tconst { style, active, className } = props\n\tconst config = SPECIAL_TAG_CONFIG[style]\n\tconst Renderer = config.render\n\tconst reactId = useId()\n\t// React useId() can produce ids containing colons, which break SVG\n\t// url(#id) references in some browsers. Replace them with a safe delimiter.\n\tconst safeId = reactId.replace(/:/g, \"-\")\n\n\treturn (\n\t\t<span className={cn(className)} aria-hidden=\"true\">\n\t\t\t<Renderer id={safeId} active={active} />\n\t\t</span>\n\t)\n}\n","/**\n * Pure color utilities used by tag/category chip rendering.\n *\n * Centralized here so chip components, color pickers, and tests share\n * one definition for \"looks white\"/\"looks black\" and the color-mix\n * blending used to keep chips subtle on cards and sidebars.\n */\n\nexport const TAG_SPECIAL_STYLES = [\n\t\"silver\",\n\t\"gold\",\n\t\"rainbow\",\n\t\"oilslick\",\n\t\"kintsugi\",\n] as const\n\n/** Default color presets shared by every color picker in the app. */\nexport const DEFAULT_COLOR_PRESETS = [\n\t\"#9D9D9D\",\n\t\"#000000\",\n\t\"#FFFFFF\",\n\t\"#27AE60\",\n\t\"#0070DD\",\n\t\"#00BCD4\",\n\t\"#8E44AD\",\n\t\"#FF8000\",\n\t\"#F1C40F\",\n\t\"#E74C3C\",\n] as const\n\nexport type TagSpecialStyle = (typeof TAG_SPECIAL_STYLES)[number]\n\nexport function isSpecialTagStyle(color: string): color is TagSpecialStyle {\n\treturn TAG_SPECIAL_STYLES.includes(color as TagSpecialStyle)\n}\n\nexport type TagChipColors = {\n\treadonly baseBg: string\n\treadonly hoverBg: string\n\treadonly fg: string\n}\n\nconst WHITE_COLOR_PATTERN =\n\t/^(?:#fff(?:fff)?|white|rgba?\\(\\s*255\\s*,\\s*255\\s*,\\s*255\\b)/i\nconst BLACK_COLOR_PATTERN =\n\t/^(?:#000(?:000)?|black|rgba?\\(\\s*0\\s*,\\s*0\\s*,\\s*0\\b)/i\n\n/**\n * Tests whether a CSS color string visually resolves to white in any\n * common short form (`#fff`, `#ffffff`, `white`, `rgb(255,255,255,…)`).\n */\nexport function isWhiteHex(color: string): boolean {\n\tif (color === \"\") return false\n\treturn WHITE_COLOR_PATTERN.test(color.trim())\n}\n\n/** Mirror of {@link isWhiteHex} for black. */\nexport function isBlackHex(color: string): boolean {\n\tif (color === \"\") return false\n\treturn BLACK_COLOR_PATTERN.test(color.trim())\n}\n\n/**\n * Resolve a chip's background/hover/foreground triple for the given\n * `color`. White and black are special-cased so they remain visibly\n * black/white in both light and dark themes instead of vanishing into\n * the chip background.\n */\nexport function computeTagChipColors(color: string): TagChipColors {\n\tif (color === \"\") {\n\t\treturn {\n\t\t\tbaseBg: \"var(--color-muted)\",\n\t\t\thoverBg: \"var(--color-accent)\",\n\t\t\tfg: \"var(--color-foreground)\",\n\t\t}\n\t}\n\tif (isWhiteHex(color)) {\n\t\treturn {\n\t\t\tbaseBg: \"#ffffff\",\n\t\t\thoverBg: \"#f1f5f9\",\n\t\t\tfg: \"#0a0a0a\",\n\t\t}\n\t}\n\tif (isBlackHex(color)) {\n\t\treturn {\n\t\t\tbaseBg: \"#0a0a0a\",\n\t\t\thoverBg: \"#262626\",\n\t\t\tfg: \"#ffffff\",\n\t\t}\n\t}\n\treturn {\n\t\tbaseBg: `color-mix(in srgb, ${color} 6%, var(--color-card))`,\n\t\thoverBg: `color-mix(in srgb, ${color} 20%, var(--color-card))`,\n\t\tfg: color,\n\t}\n}\n","import { getSpecialTagStyleConfig } from \"@hoardodile/ui/components/special-tag-surface\"\nimport {\n\tcomputeTagChipColors,\n\tisSpecialTagStyle,\n\ttype TagSpecialStyle,\n} from \"@hoardodile/ui/lib/colors\"\nimport { cn } from \"@hoardodile/ui/lib/utils\"\nimport type { CSSProperties } from \"react\"\n\nexport type ResolvedTagChipSurface = {\n\treadonly className: string\n\treadonly style: CSSProperties | undefined\n\t/** The special SVG texture to layer under the chip's content, or null. */\n\treadonly texture: TagSpecialStyle | null\n}\n\n/**\n * Resolves a chip's visual surface for a user-assigned color — the single\n * source of chip coloring shared by every tag/category pill in the app.\n *\n * A plain color tints the whole chip (a 6% wash as fill, the color as ink,\n * deepening to the hover tint when `active`); the five special styles\n * (silver, gold, rainbow, oilslick, kintsugi) render their SVG texture;\n * an empty color falls back to the default muted chip, taking the primary\n * fill when `active`.\n */\nexport function resolveTagChipSurface(\n\tcolor: string,\n\tactive: boolean,\n): ResolvedTagChipSurface {\n\tif (isSpecialTagStyle(color)) {\n\t\tconst config = getSpecialTagStyleConfig(color)\n\t\treturn {\n\t\t\tclassName: cn(\n\t\t\t\t\"relative isolate group\",\n\t\t\t\tconfig.default.className,\n\t\t\t\tactive ? config.active?.className : undefined,\n\t\t\t),\n\t\t\tstyle: {\n\t\t\t\t...config.default.style,\n\t\t\t\t...(active ? config.active?.style : {}),\n\t\t\t},\n\t\t\ttexture: color,\n\t\t}\n\t}\n\n\tif (color === \"\") {\n\t\treturn active\n\t\t\t? {\n\t\t\t\t\tclassName: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n\t\t\t\t\tstyle: undefined,\n\t\t\t\t\ttexture: null,\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tclassName: \"bg-muted text-foreground hover:bg-accent\",\n\t\t\t\t\tstyle: undefined,\n\t\t\t\t\ttexture: null,\n\t\t\t\t}\n\t}\n\n\tconst chipColors = computeTagChipColors(color)\n\treturn {\n\t\tclassName: \"bg-(--chip-bg) hover:bg-(--chip-hover-bg)\",\n\t\tstyle: {\n\t\t\t[\"--chip-bg\" as string]: active ? chipColors.hoverBg : chipColors.baseBg,\n\t\t\t[\"--chip-hover-bg\" as string]: chipColors.hoverBg,\n\t\t\tcolor: chipColors.fg,\n\t\t},\n\t\ttexture: null,\n\t}\n}\n","import { cn } from \"@hoardodile/ui/lib/utils\"\nimport {\n\ttype ComponentPropsWithoutRef,\n\tcloneElement,\n\tforwardRef,\n\ttype MouseEvent,\n\ttype ReactElement,\n\ttype ReactNode,\n\ttype Ref,\n} from \"react\"\nimport { SpecialTagSurface } from \"@hoardodile/ui/components/special-tag-surface\"\nimport { resolveTagChipSurface } from \"@hoardodile/ui/lib/tag-surface\"\n\n/** The two sanctioned chip sizes: `sm` (default, `px-2 py-1`) for cards and\n inline rows, `md` (`px-2 py-1.5`) for the filterer facets (Categories,\n Traits, Relations). */\nexport type TagChipSize = \"sm\" | \"md\"\n\ntype TagChipBaseProps = {\n\t/**\n\t * Effective display color. Special names (`silver`, `gold`, `rainbow`,\n\t * ...) render their SVG texture; an empty string falls back to the\n\t * default muted chip, taking the primary fill when `active`. Ignored\n\t * when `border` is set — bordered modes never take a tint.\n\t */\n\treadonly color?: string\n\t/** Chip height tier — see {@link TagChipSize}. */\n\treadonly size?: TagChipSize\n\t/**\n\t * Border mode instead of the fill/ghost anatomies. Only `\"dashed\"`\n\t * exists today (add pills, unused entities): a `border-dashed` hairline\n\t * with muted ink and no color tint — `active` swaps in the accent fill\n\t * with a transparent border so the width never moves with the state.\n\t */\n\treadonly border?: \"dashed\"\n\t/** Selected: colored chips deepen to their hover tint, special styles\n\t switch to their own active appearance, uncolored chips take the\n\t primary fill. */\n\treadonly active?: boolean\n\t/** Leading icon; rides the chip's own gap, so no wrapper is needed. */\n\treadonly icon?: ReactNode\n\t/** False removes the right border-radius so the chip can glue flush\n\t against a sibling (e.g. the category rail's chevron). */\n\treadonly roundedRight?: boolean\n\t/**\n\t * Root element mode: `\"inline\"` (default) renders a plain `<span>`,\n\t * `\"button\"` a real `<button type=\"button\">`. The element is chosen\n\t * only from this prop (or `render`) — passing an `onClick` never\n\t * changes the element, so interactive wrappers (hover cards,\n\t * popovers) that merge click handlers onto the chip cannot swap its\n\t * DOM node mid-interaction.\n\t */\n\treadonly display?: \"inline\" | \"button\"\n\t/**\n\t * Polymorphic root: pass a `render={<button ... />}` element to render\n\t * the chip as that element. The chip's own classes, style, handlers,\n\t * texture and icon merge onto it, and the chip's children become the\n\t * element's children — so the render element should carry only its own\n\t * props. Wins over `display`; `display=\"button\"` is the plain way to\n\t * get a real button without supplying a render element.\n\t */\n\treadonly render?: ReactElement<Record<string, unknown>>\n\t/**\n\t * Trailing suffix, separated from the label by a middle dot (e.g. a\n\t * trait's kind \"cm\" or a count). Rendered at the label's own size —\n\t * same line box, so the chip height never depends on the suffix —\n\t * with muted ink and a bold dot.\n\t */\n\treadonly suffix?: ReactNode\n\treadonly children?: ReactNode\n\treadonly onMouseDown?: (event: MouseEvent<HTMLSpanElement>) => void\n}\n\nexport type TagChipProps = TagChipBaseProps &\n\tOmit<ComponentPropsWithoutRef<\"button\">, keyof TagChipBaseProps>\n\n/** Text container: ellipsis truncation that only clips horizontally —\n `truncate`'s `overflow: hidden` would also clip descenders (y, g, p)\n at the tight `leading-none` line box, so the x axis clips while the y\n axis stays visible. */\nconst tagChipLabelClassName =\n\t\"min-w-0 overflow-x-clip text-ellipsis whitespace-nowrap\"\n\n/**\n * The one tag chip: a single rounded pill (inline-flex, `rounded-sm`,\n * `px-2 py-1`, 12px text) that may carry an icon and a special SVG\n * texture. It renders as a span by default; interactive surfaces pass\n * `display=\"button\"` (or `render={<button ... />}` for a custom root,\n * e.g. a navigation anchor) and the chip's styling lands on that\n * element — one element in the DOM plus a single text wrapper, no\n * deeper nesting.\n *\n * The root element is decided purely by `display`/`render` — never by\n * the presence of an `onClick`, so a chip's DOM element cannot change\n * between renders (the hover-card trigger merge in {@link TagChipHover}\n * relies on this).\n *\n * Coloring is delegated to {@link resolveTagChipSurface} so cards,\n * pickers, the doc editor and the character pills all share one\n * definition of \"what a colored tag looks like\".\n *\n * The chip forwards its root ref so composition wrappers (e.g. the\n * {@link TagChipHover} preview-card trigger, which clones the chip and\n * attaches a DOM ref for anchoring) can reach the actual element.\n */\nexport const TagChip = forwardRef<HTMLElement, TagChipProps>(\n\tfunction TagChip(props, ref) {\n\t\tconst {\n\t\t\tcolor,\n\t\t\tsize = \"sm\",\n\t\t\tborder,\n\t\t\tactive,\n\t\t\ticon,\n\t\t\troundedRight,\n\t\t\tdisplay,\n\t\t\trender,\n\t\t\tsuffix,\n\t\t\tchildren,\n\t\t\tclassName,\n\t\t\tstyle,\n\t\t\tonMouseDown,\n\t\t\t...rest\n\t\t} = props\n\t\tconst surface =\n\t\t\tborder !== undefined\n\t\t\t\t? undefined\n\t\t\t\t: resolveTagChipSurface(color ?? \"\", active === true)\n\n\t\t// The root element is fixed by the display mode / render slot —\n\t\t// an onClick merged on by an interactive wrapper must never swap\n\t\t// the chip's element (see the component doc comment).\n\t\tconst interactiveRoot = display === \"button\" || render !== undefined\n\n\t\tconst stateClass =\n\t\t\tborder === \"dashed\"\n\t\t\t\t? active === true\n\t\t\t\t\t? \"border border-transparent bg-accent text-foreground\"\n\t\t\t\t\t: \"border border-dashed border-border-strong text-muted-foreground hover:text-secondary-foreground\"\n\t\t\t\t: undefined\n\n\t\t// Texture and icon are the chip's own decoration, so they lead the\n\t\t// children even when the root element is swapped (render / button).\n\t\tconst content = (\n\t\t\t<>\n\t\t\t\t{surface !== undefined && surface.texture !== null && (\n\t\t\t\t\t<SpecialTagSurface\n\t\t\t\t\t\tstyle={surface.texture}\n\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\tclassName=\"absolute inset-0 -z-10 overflow-hidden rounded-[inherit]\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{icon !== undefined && (\n\t\t\t\t\t// Flex row: the slot accepts several icons as a fragment\n\t\t\t\t\t// (e.g. a kind glyph + the pin), and flex keeps the\n\t\t\t\t\t// blockified preflight svgs on one line.\n\t\t\t\t\t<span className=\"flex shrink-0 items-center gap-1 text-muted-foreground\">\n\t\t\t\t\t\t{icon}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<span className={tagChipLabelClassName}>\n\t\t\t\t\t{children}\n\t\t\t\t\t{suffix !== undefined ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<span className=\"font-bold mx-0.5\">·</span>\n\t\t\t\t\t\t\t<span className=\"shrink-0 opacity-70\">{suffix}</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : null}\n\t\t\t\t</span>\n\t\t\t</>\n\t\t)\n\n\t\tconst chipClassName = cn(\n\t\t\t\"inline-flex min-w-0 max-w-full items-center justify-center gap-1.5 rounded-sm text-xs font-normal leading-none disabled:pointer-events-none disabled:opacity-50\",\n\t\t\tsize === \"md\" ? \"px-2 py-1.5\" : \"px-2 py-1\",\n\t\t\troundedRight === false && \"rounded-r-none\",\n\t\t\tinteractiveRoot && \"cursor-pointer\",\n\t\t\tsurface?.className,\n\t\t\tstateClass,\n\t\t\tclassName,\n\t\t)\n\t\tconst chipStyle = { ...surface?.style, ...style }\n\n\t\tif (render !== undefined) {\n\t\t\treturn cloneElement(render, {\n\t\t\t\t...rest,\n\t\t\t\tref,\n\t\t\t\tclassName: chipClassName,\n\t\t\t\tstyle: chipStyle,\n\t\t\t\tonMouseDown,\n\t\t\t\tchildren: content,\n\t\t\t})\n\t\t}\n\n\t\tif (display === \"button\") {\n\t\t\treturn (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tref={ref as Ref<HTMLButtonElement>}\n\t\t\t\t\tclassName={chipClassName}\n\t\t\t\t\tstyle={chipStyle}\n\t\t\t\t\tonMouseDown={onMouseDown}\n\t\t\t\t\t{...rest}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</button>\n\t\t\t)\n\t\t}\n\n\t\treturn (\n\t\t\t<span\n\t\t\t\tref={ref as Ref<HTMLSpanElement>}\n\t\t\t\tclassName={chipClassName}\n\t\t\t\tstyle={chipStyle}\n\t\t\t\tonMouseDown={onMouseDown}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</span>\n\t\t)\n\t},\n)\n"]}
1
+ {"version":3,"sources":["../../src/components/tag-chip.tsx"],"names":["TagChip"],"mappings":"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","file":"tag-chip.js","sourcesContent":["import { cn } from \"@hoardodile/ui/lib/utils\"\nimport {\n\ttype ComponentPropsWithoutRef,\n\tcloneElement,\n\tforwardRef,\n\ttype MouseEvent,\n\ttype ReactElement,\n\ttype ReactNode,\n\ttype Ref,\n} from \"react\"\nimport { SpecialTagSurface } from \"@hoardodile/ui/components/special-tag-surface\"\nimport { resolveTagChipSurface } from \"@hoardodile/ui/lib/tag-surface\"\n\n/** The two sanctioned chip sizes: `sm` (default, `px-2 py-1`) for cards and\n inline rows, `md` (`px-2 py-1.5`) for the filterer facets (Categories,\n Traits, Relations). */\nexport type TagChipSize = \"sm\" | \"md\"\n\ntype TagChipBaseProps = {\n\t/**\n\t * Effective display color. Special names (`silver`, `gold`, `rainbow`,\n\t * ...) render their SVG texture; an empty string falls back to the\n\t * default muted chip, taking the primary fill when `active`. Ignored\n\t * when `border` is set — bordered modes never take a tint.\n\t */\n\treadonly color?: string\n\t/** Chip height tier — see {@link TagChipSize}. */\n\treadonly size?: TagChipSize\n\t/**\n\t * Border mode instead of the fill/ghost anatomies. Only `\"dashed\"`\n\t * exists today (add pills, unused entities): a `border-dashed` hairline\n\t * with muted ink and no color tint — `active` swaps in the accent fill\n\t * with a transparent border so the width never moves with the state.\n\t */\n\treadonly border?: \"dashed\"\n\t/** Selected: colored chips deepen to their hover tint, special styles\n\t switch to their own active appearance, uncolored chips take the\n\t primary fill. */\n\treadonly active?: boolean\n\t/** Leading icon; rides the chip's own gap, so no wrapper is needed. */\n\treadonly icon?: ReactNode\n\t/** False removes the right border-radius so the chip can glue flush\n\t against a sibling (e.g. the category rail's chevron). */\n\treadonly roundedRight?: boolean\n\t/**\n\t * Root element mode: `\"inline\"` (default) renders a plain `<span>`,\n\t * `\"button\"` a real `<button type=\"button\">`. The element is chosen\n\t * only from this prop (or `render`) — passing an `onClick` never\n\t * changes the element, so interactive wrappers (hover cards,\n\t * popovers) that merge click handlers onto the chip cannot swap its\n\t * DOM node mid-interaction.\n\t */\n\treadonly display?: \"inline\" | \"button\"\n\t/**\n\t * Polymorphic root: pass a `render={<button ... />}` element to render\n\t * the chip as that element. The chip's own classes, style, handlers,\n\t * texture and icon merge onto it, and the chip's children become the\n\t * element's children — so the render element should carry only its own\n\t * props. Wins over `display`; `display=\"button\"` is the plain way to\n\t * get a real button without supplying a render element.\n\t */\n\treadonly render?: ReactElement<Record<string, unknown>>\n\t/**\n\t * Trailing suffix, separated from the label by a middle dot (e.g. a\n\t * trait's kind \"cm\" or a count). Rendered at the label's own size —\n\t * same line box, so the chip height never depends on the suffix —\n\t * with muted ink and a bold dot.\n\t */\n\treadonly suffix?: ReactNode\n\treadonly children?: ReactNode\n\treadonly onMouseDown?: (event: MouseEvent<HTMLSpanElement>) => void\n}\n\nexport type TagChipProps = TagChipBaseProps &\n\tOmit<ComponentPropsWithoutRef<\"button\">, keyof TagChipBaseProps>\n\n/** Text container: ellipsis truncation that only clips horizontally —\n `truncate`'s `overflow: hidden` would also clip descenders (y, g, p)\n at the tight `leading-none` line box, so the x axis clips while the y\n axis stays visible. */\nconst tagChipLabelClassName =\n\t\"min-w-0 overflow-x-clip text-ellipsis whitespace-nowrap\"\n\n/**\n * The one tag chip: a single rounded pill (inline-flex, `rounded-sm`,\n * `px-2 py-1`, 12px text) that may carry an icon and a special SVG\n * texture. It renders as a span by default; interactive surfaces pass\n * `display=\"button\"` (or `render={<button ... />}` for a custom root,\n * e.g. a navigation anchor) and the chip's styling lands on that\n * element — one element in the DOM plus a single text wrapper, no\n * deeper nesting.\n *\n * The root element is decided purely by `display`/`render` — never by\n * the presence of an `onClick`, so a chip's DOM element cannot change\n * between renders (the hover-card trigger merge in {@link TagChipHover}\n * relies on this).\n *\n * Coloring is delegated to {@link resolveTagChipSurface} so cards,\n * pickers, the doc editor and the character pills all share one\n * definition of \"what a colored tag looks like\".\n *\n * The chip forwards its root ref so composition wrappers (e.g. the\n * {@link TagChipHover} preview-card trigger, which clones the chip and\n * attaches a DOM ref for anchoring) can reach the actual element.\n */\nexport const TagChip = forwardRef<HTMLElement, TagChipProps>(\n\tfunction TagChip(props, ref) {\n\t\tconst {\n\t\t\tcolor,\n\t\t\tsize = \"sm\",\n\t\t\tborder,\n\t\t\tactive,\n\t\t\ticon,\n\t\t\troundedRight,\n\t\t\tdisplay,\n\t\t\trender,\n\t\t\tsuffix,\n\t\t\tchildren,\n\t\t\tclassName,\n\t\t\tstyle,\n\t\t\tonMouseDown,\n\t\t\t...rest\n\t\t} = props\n\t\tconst surface =\n\t\t\tborder !== undefined\n\t\t\t\t? undefined\n\t\t\t\t: resolveTagChipSurface(color ?? \"\", active === true)\n\n\t\t// The root element is fixed by the display mode / render slot —\n\t\t// an onClick merged on by an interactive wrapper must never swap\n\t\t// the chip's element (see the component doc comment).\n\t\tconst interactiveRoot = display === \"button\" || render !== undefined\n\n\t\tconst stateClass =\n\t\t\tborder === \"dashed\"\n\t\t\t\t? active === true\n\t\t\t\t\t? \"border border-transparent bg-accent text-foreground\"\n\t\t\t\t\t: \"border border-dashed border-border-strong text-muted-foreground hover:text-secondary-foreground\"\n\t\t\t\t: undefined\n\n\t\t// Texture and icon are the chip's own decoration, so they lead the\n\t\t// children even when the root element is swapped (render / button).\n\t\tconst content = (\n\t\t\t<>\n\t\t\t\t{surface !== undefined && surface.texture !== null && (\n\t\t\t\t\t<SpecialTagSurface\n\t\t\t\t\t\tstyle={surface.texture}\n\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\tclassName=\"absolute inset-0 -z-10 overflow-hidden rounded-[inherit]\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{icon !== undefined && (\n\t\t\t\t\t// Flex row: the slot accepts several icons as a fragment\n\t\t\t\t\t// (e.g. a kind glyph + the pin), and flex keeps the\n\t\t\t\t\t// blockified preflight svgs on one line.\n\t\t\t\t\t<span className=\"flex shrink-0 items-center gap-1 text-muted-foreground\">\n\t\t\t\t\t\t{icon}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<span className={tagChipLabelClassName}>\n\t\t\t\t\t{children}\n\t\t\t\t\t{suffix !== undefined ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<span className=\"font-bold mx-0.5\">·</span>\n\t\t\t\t\t\t\t<span className=\"shrink-0 opacity-70\">{suffix}</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : null}\n\t\t\t\t</span>\n\t\t\t</>\n\t\t)\n\n\t\tconst chipClassName = cn(\n\t\t\t\"inline-flex min-w-0 max-w-full items-center justify-center gap-1.5 rounded-sm text-xs font-normal leading-none disabled:pointer-events-none disabled:opacity-50\",\n\t\t\tsize === \"md\" ? \"px-2 py-1.5\" : \"px-2 py-1\",\n\t\t\troundedRight === false && \"rounded-r-none\",\n\t\t\tinteractiveRoot && \"cursor-pointer\",\n\t\t\tsurface?.className,\n\t\t\tstateClass,\n\t\t\tclassName,\n\t\t)\n\t\tconst chipStyle = { ...surface?.style, ...style }\n\n\t\tif (render !== undefined) {\n\t\t\treturn cloneElement(render, {\n\t\t\t\t...rest,\n\t\t\t\tref,\n\t\t\t\tclassName: chipClassName,\n\t\t\t\tstyle: chipStyle,\n\t\t\t\tonMouseDown,\n\t\t\t\tchildren: content,\n\t\t\t})\n\t\t}\n\n\t\tif (display === \"button\") {\n\t\t\treturn (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tref={ref as Ref<HTMLButtonElement>}\n\t\t\t\t\tclassName={chipClassName}\n\t\t\t\t\tstyle={chipStyle}\n\t\t\t\t\tonMouseDown={onMouseDown}\n\t\t\t\t\t{...rest}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</button>\n\t\t\t)\n\t\t}\n\n\t\treturn (\n\t\t\t<span\n\t\t\t\tref={ref as Ref<HTMLSpanElement>}\n\t\t\t\tclassName={chipClassName}\n\t\t\t\tstyle={chipStyle}\n\t\t\t\tonMouseDown={onMouseDown}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</span>\n\t\t)\n\t},\n)\n"]}
@@ -1,58 +1,5 @@
1
- import { cva } from 'class-variance-authority';
2
- import 'react';
3
- import { clsx } from 'clsx';
4
- import { extendTailwindMerge } from 'tailwind-merge';
5
- import { jsx } from 'react/jsx-runtime';
6
-
7
- // src/components/textarea.tsx
8
- var mergeTheme = {
9
- text: ["tiny", "ui", "doc", "doc-title", "doc-heading", "quote"],
10
- spacing: ["chip", "control", "nav", "sidebar", "panel"],
11
- tracking: ["label"],
12
- shadow: ["card", "dialog"],
13
- container: ["reading", "medium", "content"],
14
- font: ["doc", "heading"],
15
- ease: ["standard"],
16
- animate: ["skel", "pop"]
17
- };
18
- var twMerge = extendTailwindMerge({
19
- extend: { theme: mergeTheme }
20
- });
21
-
22
- // src/lib/utils.ts
23
- function cn(...inputs) {
24
- return twMerge(clsx(inputs));
25
- }
26
- var textareaVariants = cva(
27
- "flex field-sizing-content min-h-16 w-full resize-none rounded-lg bg-muted px-3 py-2.5 text-ui text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-[3px] aria-invalid:ring-destructive/20",
28
- {
29
- variants: {
30
- size: {
31
- sm: "px-2.5 py-2 text-xs",
32
- md: "px-3 py-2.5",
33
- lg: "px-3.5 py-3"
34
- }
35
- },
36
- defaultVariants: {
37
- size: "md"
38
- }
39
- }
40
- );
41
- function Textarea({
42
- className,
43
- size,
44
- ...props
45
- }) {
46
- return /* @__PURE__ */ jsx(
47
- "textarea",
48
- {
49
- "data-slot": "textarea",
50
- className: cn(textareaVariants({ size }), className),
51
- ...props
52
- }
53
- );
54
- }
55
-
56
- export { Textarea, textareaVariants };
1
+ export { Textarea, textareaVariants } from '../chunk-T56ARCUK.js';
2
+ import '../chunk-M5OJN54O.js';
3
+ import '../chunk-2HWSCY4T.js';
57
4
  //# sourceMappingURL=textarea.js.map
58
5
  //# sourceMappingURL=textarea.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/merge-config.ts","../../src/lib/utils.ts","../../src/components/textarea.tsx"],"names":[],"mappings":";;;;;;;AAQO,IAAM,UAAA,GAAa;AAAA,EACzB,MAAM,CAAC,MAAA,EAAQ,MAAM,KAAA,EAAO,WAAA,EAAa,eAAe,OAAO,CAAA;AAAA,EAC/D,SAAS,CAAC,MAAA,EAAQ,SAAA,EAAW,KAAA,EAAO,WAAW,OAAO,CAAA;AAAA,EACtD,QAAA,EAAU,CAAC,OAAO,CAAA;AAAA,EAClB,MAAA,EAAQ,CAAC,MAAA,EAAQ,QAAQ,CAAA;AAAA,EACzB,SAAA,EAAW,CAAC,SAAA,EAAW,QAAA,EAAU,SAAS,CAAA;AAAA,EAC1C,IAAA,EAAM,CAAC,KAAA,EAAO,SAAS,CAAA;AAAA,EACvB,IAAA,EAAM,CAAC,UAAU,CAAA;AAAA,EACjB,OAAA,EAAS,CAAC,MAAA,EAAQ,KAAK;AACxB,CAAA;AAEO,IAAM,UAAU,mBAAA,CAAoB;AAAA,EAC1C,MAAA,EAAQ,EAAE,KAAA,EAAO,UAAA;AAClB,CAAC,CAAA;;;AClBM,SAAS,MAAM,MAAA,EAAsB;AAC3C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC5B;ACKA,IAAM,gBAAA,GAAmB,GAAA;AAAA,EACvB,uQAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,aAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6E;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,WAAW,EAAA,CAAG,gBAAA,CAAiB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACN;AAEJ","file":"textarea.js","sourcesContent":["import { extendTailwindMerge } from \"tailwind-merge\"\n\n// The app's `@theme inline` tokens (theme.css) generate utility names\n// tailwind-merge doesn't know, so it misclassifies them — e.g. `text-ui` is\n// parsed as a text color and dropped next to any `text-*` color. The default\n// class groups are theme-backed, so extending the theme (keys mirror the v4\n// token namespaces one-to-one) registers every custom utility with correct\n// conflict semantics. merge-config.test.ts pins this list against theme.css.\nexport const mergeTheme = {\n\ttext: [\"tiny\", \"ui\", \"doc\", \"doc-title\", \"doc-heading\", \"quote\"],\n\tspacing: [\"chip\", \"control\", \"nav\", \"sidebar\", \"panel\"],\n\ttracking: [\"label\"],\n\tshadow: [\"card\", \"dialog\"],\n\tcontainer: [\"reading\", \"medium\", \"content\"],\n\tfont: [\"doc\", \"heading\"],\n\tease: [\"standard\"],\n\tanimate: [\"skel\", \"pop\"],\n} as const\n\nexport const twMerge = extendTailwindMerge({\n\textend: { theme: mergeTheme },\n})\n","import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"./merge-config\"\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs))\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\n\n/**\n * Muted-fill textarea (the forms Textarea anatomy): fill background,\n * `rounded-lg`, no border, same anatomy as the inputs. The `size` tiers\n * only shift padding and text; the height stays row-driven.\n */\nconst textareaVariants = cva(\n \"flex field-sizing-content min-h-16 w-full resize-none rounded-lg bg-muted px-3 py-2.5 text-ui text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-[3px] aria-invalid:ring-destructive/20\",\n {\n variants: {\n size: {\n sm: \"px-2.5 py-2 text-xs\",\n md: \"px-3 py-2.5\",\n lg: \"px-3.5 py-3\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction Textarea({\n className,\n size,\n ...props\n}: React.ComponentProps<\"textarea\"> & VariantProps<typeof textareaVariants>) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(textareaVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nexport { Textarea, textareaVariants }\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"textarea.js"}