@hoardodile/ui 0.1.7 → 0.1.9

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/icons/icon-style.ts","../../src/icons/registry.ts","../../src/lib/merge-config.ts","../../src/lib/utils.ts","../../src/components/button.tsx","../../src/icons/marks.tsx","../../src/components/spinner.tsx","../../src/components/toast.tsx"],"names":["CheckCircleBoldWeight","CheckCircleBoldDuotone","CheckCircleLinear","DangerTriangleBoldWeight","DangerTriangleBoldDuotone","DangerTriangleLinear","ForbiddenCircleBoldWeight","ForbiddenCircleBoldDuotone","ForbiddenCircleLinear","InfoCircleBoldWeight","InfoCircleBoldDuotone","InfoCircleLinear","ButtonPrimitive","jsx","ToastPrimitive","useTranslation","jsxs"],"mappings":"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","file":"toast.js","sourcesContent":["import { type ComponentType, createElement, useSyncExternalStore } from \"react\"\nimport type { IconType } from \"../components/icon.tsx\"\n\n/**\n * Icon-mode-aware glyph wrapper (Settings → Icons in the host app).\n *\n * The active icon style lives as `data-icon-style` on `document.documentElement`\n * — the host app writes it from its preference store, plugin iframes receive\n * it through the `themeChanged` push — so this module needs no context or\n * injected state: a single shared `MutationObserver` watches the attribute\n * and every wrapped component re-renders through `useSyncExternalStore`\n * when it flips.\n *\n * Only `linear` needs a component swap: the boldDuotone glyphs change to\n * their thin-line linear counterparts. `grayscale` is pure CSS (theme.css\n * recolors the `.hd-icon` hook), so the store only tracks the mode.\n */\nexport type IconStyleValue = \"duotone\" | \"grayscale\" | \"linear\"\n\n/**\n * The parallel Solar weights an icon registers — named after Solar's own\n * weights (DESIGN.md — Iconography). Every icon carries all of them;\n * adding a mode here forces every registry entry to fill it in.\n */\nexport type IconMode = \"bold\" | \"boldDuotone\" | \"linear\"\n\n/** All three mode glyphs of one icon. Mandatory and complete by type. */\nexport type IconVariants = Record<IconMode, IconType>\n\nfunction readIconMode(): IconMode {\n\treturn document.documentElement.dataset.iconStyle === \"linear\"\n\t\t? \"linear\"\n\t\t: \"boldDuotone\"\n}\n\n// Never read `document` at module load — pure-logic consumers (node test\n// environments) import this module without a DOM. The first subscribe\n// (component mount) snapshots the current value.\nlet currentMode: IconMode = \"boldDuotone\"\nlet observer: MutationObserver | undefined\nconst listeners = new Set<() => void>()\n\nfunction ensureObserver(): void {\n\tif (observer !== undefined || typeof document === \"undefined\") return\n\tobserver = new MutationObserver(() => {\n\t\tconst next = readIconMode()\n\t\tif (next === currentMode) return\n\t\tcurrentMode = next\n\t\tfor (const cb of listeners) cb()\n\t})\n\tobserver.observe(document.documentElement, {\n\t\tattributes: true,\n\t\tattributeFilter: [\"data-icon-style\"],\n\t})\n}\n\nfunction subscribeIconStyle(callback: () => void): () => void {\n\tensureObserver()\n\tcurrentMode = readIconMode()\n\tlisteners.add(callback)\n\treturn () => {\n\t\tlisteners.delete(callback)\n\t}\n}\n\nfunction getIconStyleSnapshot(): IconMode {\n\treturn currentMode\n}\n\n/**\n * Wraps a Solar glyph family so its render follows the host's icon style.\n *\n * `createIcon({ bold, boldDuotone, linear })` — the three parallel weights\n * of one icon. Without a `mode` prop the wrapper renders the glyph for the\n * active icon style; an explicit `mode` overrides it (selected states pass\n * `\"bold\"` through `Icon`).\n *\n * Every wrapped render merges the `hd-icon` hook class, so the duotone /\n * grayscale CSS in theme.css applies to direct renders too. Returns\n * `undefined`-free components callable through the `Icon` wrapper or bare\n * JSX alike.\n */\nexport function createIcon(\n\tvariants: IconVariants,\n): ComponentType<Record<string, unknown>> {\n\tfunction Icon(props: Record<string, unknown>) {\n\t\tconst current = useSyncExternalStore(\n\t\t\tsubscribeIconStyle,\n\t\t\tgetIconStyleSnapshot,\n\t\t\t() => \"boldDuotone\",\n\t\t)\n\t\tconst { mode, ...rest } = props as { readonly mode?: IconMode } & Record<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>\n\t\tconst Component = variants[(mode ?? current) as IconMode]\n\t\tconst className =\n\t\t\ttypeof rest.className === \"string\"\n\t\t\t\t? `hd-icon ${rest.className}`\n\t\t\t\t: \"hd-icon\"\n\t\treturn createElement(Component, { ...rest, className })\n\t}\n\treturn Icon\n}\n","/**\n * Central Solar icon registry for the design system.\n *\n * Every Solar glyph the app renders is exported here through `createIcon`\n * from `@hoardodile/ui` — one component per glyph carrying the three\n * parallel Solar weights (bold / boldDuotone / linear). The wrapper picks\n * the glyph for the active icon style preference (Settings → Icons): in\n * `linear` style the boldDuotone glyphs swap to their thin-line linear\n * counterparts; an explicit `mode` prop overrides (`\"bold\"` for selected\n * states). Every export carries the `hd-icon` hook class so the\n * duotone/grayscale CSS in theme.css applies to direct renders too. All\n * exports are wrapped — never the raw glyphs. Importing Solar directly is\n * confined to this file and @hoardodile/ui internals — consumers import\n * the wrapped exports only.\n *\n * Structure — imports first, one block per Solar weight (bold / bold-duotone /\n * linear, alphabetical by glyph; every glyph has all three), then one\n * export section, alphabetical by name (ordinal, case-sensitive —\n * `BookTone`'s stem `Book` sorts before `Bookmark`):\n *\n * export const <Name> = createIcon({\n * bold: <Name>BoldWeight, — filled, single-color; selected states\n * boldDuotone: <Name>BoldDuotone, — two-tone, the default\n * linear: <Name>Linear, — thin-line; `linear` icon style\n * })\n *\n * Modes are parallel and mandatory: adding a member to `IconMode` forces\n * every entry to register it (guarded by icons.test.ts). One exception:\n * `MenuDots` maps its `linear` slot to the filled weight — the thin-line\n * dots read as noise at small sizes. Tree-shaking keeps only the variants\n * actually imported.\n */\n\nimport { AddCircleIcon as AddCircleBoldWeight } from \"@solar-icons/react/bold/add-circle\"\nimport { AlignLeftIcon as AlignLeftBoldWeight } from \"@solar-icons/react/bold/align-left\"\nimport { AltArrowDownIcon as AltArrowDownBoldWeight } from \"@solar-icons/react/bold/alt-arrow-down\"\nimport { AltArrowLeftIcon as AltArrowLeftBoldWeight } from \"@solar-icons/react/bold/alt-arrow-left\"\nimport { AltArrowRightIcon as AltArrowRightBoldWeight } from \"@solar-icons/react/bold/alt-arrow-right\"\nimport { AltArrowUpIcon as AltArrowUpBoldWeight } from \"@solar-icons/react/bold/alt-arrow-up\"\nimport { ArchiveIcon as ArchiveBoldWeight } from \"@solar-icons/react/bold/archive\"\nimport { ArrowRightIcon as ArrowRightBoldWeight } from \"@solar-icons/react/bold/arrow-right\"\nimport { ArrowToTopLeftIcon as ArrowToTopLeftBoldWeight } from \"@solar-icons/react/bold/arrow-to-top-left\"\nimport { ArrowToTopRightIcon as ArrowToTopRightBoldWeight } from \"@solar-icons/react/bold/arrow-to-top-right\"\nimport { BellIcon as BellBoldWeight } from \"@solar-icons/react/bold/bell\"\nimport { BoltIcon as BoltBoldWeight } from \"@solar-icons/react/bold/bolt\"\nimport { BookIcon as BookBoldWeight } from \"@solar-icons/react/bold/book\"\nimport { Book2Icon as Book2BoldWeight } from \"@solar-icons/react/bold/book-2\"\nimport { BookmarkIcon as BookmarkBoldWeight } from \"@solar-icons/react/bold/bookmark\"\nimport { BookmarkCircleIcon as BookmarkCircleBoldWeight } from \"@solar-icons/react/bold/bookmark-circle\"\nimport { BoxIcon as BoxBoldWeight } from \"@solar-icons/react/bold/box\"\nimport { BranchingPathsUpIcon as BranchingPathsUpBoldWeight } from \"@solar-icons/react/bold/branching-paths-up\"\nimport { BugIcon as BugBoldWeight } from \"@solar-icons/react/bold/bug\"\nimport { CalendarDateIcon as CalendarDateBoldWeight } from \"@solar-icons/react/bold/calendar-date\"\nimport { ChatRoundIcon as ChatRoundBoldWeight } from \"@solar-icons/react/bold/chat-round\"\nimport { ChatRoundDotsIcon as ChatRoundDotsBoldWeight } from \"@solar-icons/react/bold/chat-round-dots\"\nimport { ChatRoundLineIcon as ChatRoundLineBoldWeight } from \"@solar-icons/react/bold/chat-round-line\"\nimport { ChatSquareIcon as ChatSquareBoldWeight } from \"@solar-icons/react/bold/chat-square\"\nimport { CheckCircleIcon as CheckCircleBoldWeight } from \"@solar-icons/react/bold/check-circle\"\nimport { ChecklistIcon as ChecklistBoldWeight } from \"@solar-icons/react/bold/checklist\"\nimport { ClipboardListIcon as ClipboardListBoldWeight } from \"@solar-icons/react/bold/clipboard-list\"\nimport { ClockCircleIcon as ClockCircleBoldWeight } from \"@solar-icons/react/bold/clock-circle\"\nimport { CompassIcon as CompassBoldWeight } from \"@solar-icons/react/bold/compass\"\nimport { CopyIcon as CopyBoldWeight } from \"@solar-icons/react/bold/copy\"\nimport { CrownIcon as CrownBoldWeight } from \"@solar-icons/react/bold/crown\"\nimport { DangerTriangleIcon as DangerTriangleBoldWeight } from \"@solar-icons/react/bold/danger-triangle\"\nimport { DatabaseIcon as DatabaseBoldWeight } from \"@solar-icons/react/bold/database\"\nimport { DisketteIcon as DisketteBoldWeight } from \"@solar-icons/react/bold/diskette\"\nimport { DislikeIcon as DislikeBoldWeight } from \"@solar-icons/react/bold/dislike\"\nimport { DocumentAddIcon as DocumentAddBoldWeight } from \"@solar-icons/react/bold/document-add\"\nimport { DocumentTextIcon as DocumentTextBoldWeight } from \"@solar-icons/react/bold/document-text\"\nimport { DoubleAltArrowDownIcon as DoubleAltArrowDownBoldWeight } from \"@solar-icons/react/bold/double-alt-arrow-down\"\nimport { DownloadIcon as DownloadBoldWeight } from \"@solar-icons/react/bold/download\"\nimport { EraserIcon as EraserBoldWeight } from \"@solar-icons/react/bold/eraser\"\nimport { EyeIcon as EyeBoldWeight } from \"@solar-icons/react/bold/eye\"\nimport { FileIcon as FileBoldWeight } from \"@solar-icons/react/bold/file\"\nimport { FileRemoveIcon as FileRemoveBoldWeight } from \"@solar-icons/react/bold/file-remove\"\nimport { FileTextIcon as FileTextBoldWeight } from \"@solar-icons/react/bold/file-text\"\nimport { FilterIcon as FilterBoldWeight } from \"@solar-icons/react/bold/filter\"\nimport { FiltersIcon as FiltersBoldWeight } from \"@solar-icons/react/bold/filters\"\nimport { FolderIcon as FolderBoldWeight } from \"@solar-icons/react/bold/folder\"\nimport { FolderOpenIcon as FolderOpenBoldWeight } from \"@solar-icons/react/bold/folder-open\"\nimport { FolderPathConnectIcon as FolderPathConnectBoldWeight } from \"@solar-icons/react/bold/folder-path-connect\"\nimport { ForbiddenCircleIcon as ForbiddenCircleBoldWeight } from \"@solar-icons/react/bold/forbidden-circle\"\nimport { GalleryIcon as GalleryBoldWeight } from \"@solar-icons/react/bold/gallery\"\nimport { GalleryAddIcon as GalleryAddBoldWeight } from \"@solar-icons/react/bold/gallery-add\"\nimport { GalleryWideIcon as GalleryWideBoldWeight } from \"@solar-icons/react/bold/gallery-wide\"\nimport { GlobalIcon as GlobalBoldWeight } from \"@solar-icons/react/bold/global\"\nimport { GraphDownIcon as GraphDownBoldWeight } from \"@solar-icons/react/bold/graph-down\"\nimport { GraphUpIcon as GraphUpBoldWeight } from \"@solar-icons/react/bold/graph-up\"\nimport { HamburgerMenuIcon as HamburgerMenuBoldWeight } from \"@solar-icons/react/bold/hamburger-menu\"\nimport { HandHeartIcon as HandHeartBoldWeight } from \"@solar-icons/react/bold/hand-heart\"\nimport { HeartIcon as HeartBoldWeight } from \"@solar-icons/react/bold/heart\"\nimport { HelpIcon as HelpBoldWeight } from \"@solar-icons/react/bold/help\"\nimport { HistoryIcon as HistoryBoldWeight } from \"@solar-icons/react/bold/history\"\nimport { HomeAngleIcon as HomeAngleBoldWeight } from \"@solar-icons/react/bold/home-angle\"\nimport { InfoCircleIcon as InfoCircleBoldWeight } from \"@solar-icons/react/bold/info-circle\"\nimport { LayersIcon as LayersBoldWeight } from \"@solar-icons/react/bold/layers\"\nimport { LetterIcon as LetterBoldWeight } from \"@solar-icons/react/bold/letter\"\nimport { LikeIcon as LikeBoldWeight } from \"@solar-icons/react/bold/like\"\nimport { LinkIcon as LinkBoldWeight } from \"@solar-icons/react/bold/link\"\nimport { ListIcon as ListBoldWeight } from \"@solar-icons/react/bold/list\"\nimport { ListVerticalIcon as ListVerticalBoldWeight } from \"@solar-icons/react/bold/list-vertical\"\nimport { LockPasswordIcon as LockPasswordBoldWeight } from \"@solar-icons/react/bold/lock-password\"\nimport { Login2Icon as Login2BoldWeight } from \"@solar-icons/react/bold/login-2\"\nimport { LogoutIcon as LogoutBoldWeight } from \"@solar-icons/react/bold/logout\"\nimport { MagicWand2Icon as MagicWand2BoldWeight } from \"@solar-icons/react/bold/magic-wand-2\"\nimport { MagnifierIcon as MagnifierBoldWeight } from \"@solar-icons/react/bold/magnifier\"\nimport { MagnifierZoomInIcon as MagnifierZoomInBoldWeight } from \"@solar-icons/react/bold/magnifier-zoom-in\"\nimport { MagnifierZoomOutIcon as MagnifierZoomOutBoldWeight } from \"@solar-icons/react/bold/magnifier-zoom-out\"\nimport { MaximizeIcon as MaximizeBoldWeight } from \"@solar-icons/react/bold/maximize\"\nimport { MenuDotsIcon as MenuDotsBoldWeight } from \"@solar-icons/react/bold/menu-dots\"\nimport { MinimizeIcon as MinimizeBoldWeight } from \"@solar-icons/react/bold/minimize\"\nimport { MinusSquareIcon as MinusSquareBoldWeight } from \"@solar-icons/react/bold/minus-square\"\nimport { MonitorIcon as MonitorBoldWeight } from \"@solar-icons/react/bold/monitor\"\nimport { MonitorSmartphoneIcon as MonitorSmartphoneBoldWeight } from \"@solar-icons/react/bold/monitor-smartphone\"\nimport { MoonIcon as MoonBoldWeight } from \"@solar-icons/react/bold/moon\"\nimport { MoveToFolderIcon as MoveToFolderBoldWeight } from \"@solar-icons/react/bold/move-to-folder\"\nimport { MusicNotesIcon as MusicNotesBoldWeight } from \"@solar-icons/react/bold/music-notes\"\nimport { PaletteIcon as PaletteBoldWeight } from \"@solar-icons/react/bold/palette\"\nimport { PaletteRoundIcon as PaletteRoundBoldWeight } from \"@solar-icons/react/bold/palette-round\"\nimport { PauseIcon as PauseBoldWeight } from \"@solar-icons/react/bold/pause\"\nimport { PenIcon as PenBoldWeight } from \"@solar-icons/react/bold/pen\"\nimport { PenNewRoundIcon as PenNewRoundBoldWeight } from \"@solar-icons/react/bold/pen-new-round\"\nimport { PieChartIcon as PieChartBoldWeight } from \"@solar-icons/react/bold/pie-chart\"\nimport { PinIcon as PinBoldWeight } from \"@solar-icons/react/bold/pin\"\nimport { PlayIcon as PlayBoldWeight } from \"@solar-icons/react/bold/play\"\nimport { PlugCircleIcon as PlugCircleBoldWeight } from \"@solar-icons/react/bold/plug-circle\"\nimport { PlusMinusIcon as PlusMinusBoldWeight } from \"@solar-icons/react/bold/plus-minus\"\nimport { PulseIcon as PulseBoldWeight } from \"@solar-icons/react/bold/pulse\"\nimport { RefreshIcon as RefreshBoldWeight } from \"@solar-icons/react/bold/refresh\"\nimport { RefreshCircleIcon as RefreshCircleBoldWeight } from \"@solar-icons/react/bold/refresh-circle\"\nimport { ReorderIcon as ReorderBoldWeight } from \"@solar-icons/react/bold/reorder\"\nimport { RepeatIcon as RepeatBoldWeight } from \"@solar-icons/react/bold/repeat\"\nimport { ReplyIcon as ReplyBoldWeight } from \"@solar-icons/react/bold/reply\"\nimport { RestartIcon as RestartBoldWeight } from \"@solar-icons/react/bold/restart\"\nimport { RocketIcon as RocketBoldWeight } from \"@solar-icons/react/bold/rocket\"\nimport { RouteIcon as RouteBoldWeight } from \"@solar-icons/react/bold/route\"\nimport { ScaleIcon as ScaleBoldWeight } from \"@solar-icons/react/bold/scale\"\nimport { ServerIcon as ServerBoldWeight } from \"@solar-icons/react/bold/server\"\nimport { SettingsIcon as SettingsBoldWeight } from \"@solar-icons/react/bold/settings\"\nimport { ShareIcon as ShareBoldWeight } from \"@solar-icons/react/bold/share\"\nimport { ShieldCheckIcon as ShieldCheckBoldWeight } from \"@solar-icons/react/bold/shield-check\"\nimport { Shop2Icon as Shop2BoldWeight } from \"@solar-icons/react/bold/shop-2\"\nimport { SidebarMinimalisticIcon as SidebarMinimalisticBoldWeight } from \"@solar-icons/react/bold/sidebar-minimalistic\"\nimport { SliderHorizontalIcon as SliderHorizontalBoldWeight } from \"@solar-icons/react/bold/slider-horizontal\"\nimport { SmartphoneIcon as SmartphoneBoldWeight } from \"@solar-icons/react/bold/smartphone\"\nimport { SortIcon as SortBoldWeight } from \"@solar-icons/react/bold/sort\"\nimport { SortByTimeIcon as SortByTimeBoldWeight } from \"@solar-icons/react/bold/sort-by-time\"\nimport { SortHorizontalIcon as SortHorizontalBoldWeight } from \"@solar-icons/react/bold/sort-horizontal\"\nimport { SortVerticalIcon as SortVerticalBoldWeight } from \"@solar-icons/react/bold/sort-vertical\"\nimport { StarIcon as StarBoldWeight } from \"@solar-icons/react/bold/star\"\nimport { StructureIcon as StructureBoldWeight } from \"@solar-icons/react/bold/structure\"\nimport { SunIcon as SunBoldWeight } from \"@solar-icons/react/bold/sun\"\nimport { TagIcon as TagBoldWeight } from \"@solar-icons/react/bold/tag\"\nimport { TelescopeIcon as TelescopeBoldWeight } from \"@solar-icons/react/bold/telescope\"\nimport { TestTubeIcon as TestTubeBoldWeight } from \"@solar-icons/react/bold/test-tube\"\nimport { TextFormatIcon as TextFormatBoldWeight } from \"@solar-icons/react/bold/text-format\"\nimport { TransferHorizontalIcon as TransferHorizontalBoldWeight } from \"@solar-icons/react/bold/transfer-horizontal\"\nimport { TranslationIcon as TranslationBoldWeight } from \"@solar-icons/react/bold/translation\"\nimport { TrashBinMinimalisticIcon as TrashBinMinimalisticBoldWeight } from \"@solar-icons/react/bold/trash-bin-minimalistic\"\nimport { UndoLeftIcon as UndoLeftBoldWeight } from \"@solar-icons/react/bold/undo-left\"\nimport { UndoLeftRoundIcon as UndoLeftRoundBoldWeight } from \"@solar-icons/react/bold/undo-left-round\"\nimport { UndoRightIcon as UndoRightBoldWeight } from \"@solar-icons/react/bold/undo-right\"\nimport { UndoRightRoundIcon as UndoRightRoundBoldWeight } from \"@solar-icons/react/bold/undo-right-round\"\nimport { UploadIcon as UploadBoldWeight } from \"@solar-icons/react/bold/upload\"\nimport { UserIcon as UserBoldWeight } from \"@solar-icons/react/bold/user\"\nimport { UserIdIcon as UserIdBoldWeight } from \"@solar-icons/react/bold/user-id\"\nimport { UserMinusIcon as UserMinusBoldWeight } from \"@solar-icons/react/bold/user-minus\"\nimport { UserPlusIcon as UserPlusBoldWeight } from \"@solar-icons/react/bold/user-plus\"\nimport { UsersGroupRoundedIcon as UsersGroupRoundedBoldWeight } from \"@solar-icons/react/bold/users-group-rounded\"\nimport { UsersGroupTwoRoundedIcon as UsersGroupTwoRoundedBoldWeight } from \"@solar-icons/react/bold/users-group-two-rounded\"\nimport { VideoFrameIcon as VideoFrameBoldWeight } from \"@solar-icons/react/bold/video-frame\"\nimport { VideoFramePlayHorizontalIcon as VideoFramePlayHorizontalBoldWeight } from \"@solar-icons/react/bold/video-frame-play-horizontal\"\nimport { Widget2Icon as Widget2BoldWeight } from \"@solar-icons/react/bold/widget-2\"\nimport { Widget5Icon as Widget5BoldWeight } from \"@solar-icons/react/bold/widget-5\"\nimport { WindowFrameIcon as WindowFrameBoldWeight } from \"@solar-icons/react/bold/window-frame\"\nimport { AddCircleIcon as AddCircleBoldDuotone } from \"@solar-icons/react/bold-duotone/add-circle\"\nimport { AlignLeftIcon as AlignLeftBoldDuotone } from \"@solar-icons/react/bold-duotone/align-left\"\nimport { AltArrowDownIcon as AltArrowDownBoldDuotone } from \"@solar-icons/react/bold-duotone/alt-arrow-down\"\nimport { AltArrowLeftIcon as AltArrowLeftBoldDuotone } from \"@solar-icons/react/bold-duotone/alt-arrow-left\"\nimport { AltArrowRightIcon as AltArrowRightBoldDuotone } from \"@solar-icons/react/bold-duotone/alt-arrow-right\"\nimport { AltArrowUpIcon as AltArrowUpBoldDuotone } from \"@solar-icons/react/bold-duotone/alt-arrow-up\"\nimport { ArchiveIcon as ArchiveBoldDuotone } from \"@solar-icons/react/bold-duotone/archive\"\nimport { ArrowRightIcon as ArrowRightBoldDuotone } from \"@solar-icons/react/bold-duotone/arrow-right\"\nimport { ArrowToTopLeftIcon as ArrowToTopLeftBoldDuotone } from \"@solar-icons/react/bold-duotone/arrow-to-top-left\"\nimport { ArrowToTopRightIcon as ArrowToTopRightBoldDuotone } from \"@solar-icons/react/bold-duotone/arrow-to-top-right\"\nimport { BellIcon as BellBoldDuotone } from \"@solar-icons/react/bold-duotone/bell\"\nimport { BoltIcon as BoltBoldDuotone } from \"@solar-icons/react/bold-duotone/bolt\"\nimport { BookIcon as BookBoldDuotone } from \"@solar-icons/react/bold-duotone/book\"\nimport { Book2Icon as Book2BoldDuotone } from \"@solar-icons/react/bold-duotone/book-2\"\nimport { BookmarkIcon as BookmarkBoldDuotone } from \"@solar-icons/react/bold-duotone/bookmark\"\nimport { BookmarkCircleIcon as BookmarkCircleBoldDuotone } from \"@solar-icons/react/bold-duotone/bookmark-circle\"\nimport { BoxIcon as BoxBoldDuotone } from \"@solar-icons/react/bold-duotone/box\"\nimport { BranchingPathsUpIcon as BranchingPathsUpBoldDuotone } from \"@solar-icons/react/bold-duotone/branching-paths-up\"\nimport { BugIcon as BugBoldDuotone } from \"@solar-icons/react/bold-duotone/bug\"\nimport { CalendarDateIcon as CalendarDateBoldDuotone } from \"@solar-icons/react/bold-duotone/calendar-date\"\nimport { ChatRoundIcon as ChatRoundBoldDuotone } from \"@solar-icons/react/bold-duotone/chat-round\"\nimport { ChatRoundDotsIcon as ChatRoundDotsBoldDuotone } from \"@solar-icons/react/bold-duotone/chat-round-dots\"\nimport { ChatRoundLineIcon as ChatRoundLineBoldDuotone } from \"@solar-icons/react/bold-duotone/chat-round-line\"\nimport { ChatSquareIcon as ChatSquareBoldDuotone } from \"@solar-icons/react/bold-duotone/chat-square\"\nimport { CheckCircleIcon as CheckCircleBoldDuotone } from \"@solar-icons/react/bold-duotone/check-circle\"\nimport { ChecklistIcon as ChecklistBoldDuotone } from \"@solar-icons/react/bold-duotone/checklist\"\nimport { ClipboardListIcon as ClipboardListBoldDuotone } from \"@solar-icons/react/bold-duotone/clipboard-list\"\nimport { ClockCircleIcon as ClockCircleBoldDuotone } from \"@solar-icons/react/bold-duotone/clock-circle\"\nimport { CompassIcon as CompassBoldDuotone } from \"@solar-icons/react/bold-duotone/compass\"\nimport { CopyIcon as CopyBoldDuotone } from \"@solar-icons/react/bold-duotone/copy\"\nimport { CrownIcon as CrownBoldDuotone } from \"@solar-icons/react/bold-duotone/crown\"\nimport { DangerTriangleIcon as DangerTriangleBoldDuotone } from \"@solar-icons/react/bold-duotone/danger-triangle\"\nimport { DatabaseIcon as DatabaseBoldDuotone } from \"@solar-icons/react/bold-duotone/database\"\nimport { DisketteIcon as DisketteBoldDuotone } from \"@solar-icons/react/bold-duotone/diskette\"\nimport { DislikeIcon as DislikeBoldDuotone } from \"@solar-icons/react/bold-duotone/dislike\"\nimport { DocumentAddIcon as DocumentAddBoldDuotone } from \"@solar-icons/react/bold-duotone/document-add\"\nimport { DocumentTextIcon as DocumentTextBoldDuotone } from \"@solar-icons/react/bold-duotone/document-text\"\nimport { DoubleAltArrowDownIcon as DoubleAltArrowDownBoldDuotone } from \"@solar-icons/react/bold-duotone/double-alt-arrow-down\"\nimport { DownloadIcon as DownloadBoldDuotone } from \"@solar-icons/react/bold-duotone/download\"\nimport { EraserIcon as EraserBoldDuotone } from \"@solar-icons/react/bold-duotone/eraser\"\nimport { EyeIcon as EyeBoldDuotone } from \"@solar-icons/react/bold-duotone/eye\"\nimport { FileIcon as FileBoldDuotone } from \"@solar-icons/react/bold-duotone/file\"\nimport { FileRemoveIcon as FileRemoveBoldDuotone } from \"@solar-icons/react/bold-duotone/file-remove\"\nimport { FileTextIcon as FileTextBoldDuotone } from \"@solar-icons/react/bold-duotone/file-text\"\nimport { FilterIcon as FilterBoldDuotone } from \"@solar-icons/react/bold-duotone/filter\"\nimport { FiltersIcon as FiltersBoldDuotone } from \"@solar-icons/react/bold-duotone/filters\"\nimport { FolderIcon as FolderBoldDuotone } from \"@solar-icons/react/bold-duotone/folder\"\nimport { FolderOpenIcon as FolderOpenBoldDuotone } from \"@solar-icons/react/bold-duotone/folder-open\"\nimport { FolderPathConnectIcon as FolderPathConnectBoldDuotone } from \"@solar-icons/react/bold-duotone/folder-path-connect\"\nimport { ForbiddenCircleIcon as ForbiddenCircleBoldDuotone } from \"@solar-icons/react/bold-duotone/forbidden-circle\"\nimport { GalleryIcon as GalleryBoldDuotone } from \"@solar-icons/react/bold-duotone/gallery\"\nimport { GalleryAddIcon as GalleryAddBoldDuotone } from \"@solar-icons/react/bold-duotone/gallery-add\"\nimport { GalleryWideIcon as GalleryWideBoldDuotone } from \"@solar-icons/react/bold-duotone/gallery-wide\"\nimport { GlobalIcon as GlobalBoldDuotone } from \"@solar-icons/react/bold-duotone/global\"\nimport { GraphDownIcon as GraphDownBoldDuotone } from \"@solar-icons/react/bold-duotone/graph-down\"\nimport { GraphUpIcon as GraphUpBoldDuotone } from \"@solar-icons/react/bold-duotone/graph-up\"\nimport { HamburgerMenuIcon as HamburgerMenuBoldDuotone } from \"@solar-icons/react/bold-duotone/hamburger-menu\"\nimport { HandHeartIcon as HandHeartBoldDuotone } from \"@solar-icons/react/bold-duotone/hand-heart\"\nimport { HeartIcon as HeartBoldDuotone } from \"@solar-icons/react/bold-duotone/heart\"\nimport { HelpIcon as HelpBoldDuotone } from \"@solar-icons/react/bold-duotone/help\"\nimport { HistoryIcon as HistoryBoldDuotone } from \"@solar-icons/react/bold-duotone/history\"\nimport { HomeAngleIcon as HomeAngleBoldDuotone } from \"@solar-icons/react/bold-duotone/home-angle\"\nimport { InfoCircleIcon as InfoCircleBoldDuotone } from \"@solar-icons/react/bold-duotone/info-circle\"\nimport { LayersIcon as LayersBoldDuotone } from \"@solar-icons/react/bold-duotone/layers\"\nimport { LetterIcon as LetterBoldDuotone } from \"@solar-icons/react/bold-duotone/letter\"\nimport { LikeIcon as LikeBoldDuotone } from \"@solar-icons/react/bold-duotone/like\"\nimport { LinkIcon as LinkBoldDuotone } from \"@solar-icons/react/bold-duotone/link\"\nimport { ListIcon as ListBoldDuotone } from \"@solar-icons/react/bold-duotone/list\"\nimport { ListVerticalIcon as ListVerticalBoldDuotone } from \"@solar-icons/react/bold-duotone/list-vertical\"\nimport { LockPasswordIcon as LockPasswordBoldDuotone } from \"@solar-icons/react/bold-duotone/lock-password\"\nimport { Login2Icon as Login2BoldDuotone } from \"@solar-icons/react/bold-duotone/login-2\"\nimport { LogoutIcon as LogoutBoldDuotone } from \"@solar-icons/react/bold-duotone/logout\"\nimport { MagicWand2Icon as MagicWand2BoldDuotone } from \"@solar-icons/react/bold-duotone/magic-wand-2\"\nimport { MagnifierIcon as MagnifierBoldDuotone } from \"@solar-icons/react/bold-duotone/magnifier\"\nimport { MagnifierZoomInIcon as MagnifierZoomInBoldDuotone } from \"@solar-icons/react/bold-duotone/magnifier-zoom-in\"\nimport { MagnifierZoomOutIcon as MagnifierZoomOutBoldDuotone } from \"@solar-icons/react/bold-duotone/magnifier-zoom-out\"\nimport { MaximizeIcon as MaximizeBoldDuotone } from \"@solar-icons/react/bold-duotone/maximize\"\nimport { MenuDotsIcon as MenuDotsBoldDuotone } from \"@solar-icons/react/bold-duotone/menu-dots\"\nimport { MinimizeIcon as MinimizeBoldDuotone } from \"@solar-icons/react/bold-duotone/minimize\"\nimport { MinusSquareIcon as MinusSquareBoldDuotone } from \"@solar-icons/react/bold-duotone/minus-square\"\nimport { MonitorIcon as MonitorBoldDuotone } from \"@solar-icons/react/bold-duotone/monitor\"\nimport { MonitorSmartphoneIcon as MonitorSmartphoneBoldDuotone } from \"@solar-icons/react/bold-duotone/monitor-smartphone\"\nimport { MoonIcon as MoonBoldDuotone } from \"@solar-icons/react/bold-duotone/moon\"\nimport { MoveToFolderIcon as MoveToFolderBoldDuotone } from \"@solar-icons/react/bold-duotone/move-to-folder\"\nimport { MusicNotesIcon as MusicNotesBoldDuotone } from \"@solar-icons/react/bold-duotone/music-notes\"\nimport { PaletteIcon as PaletteBoldDuotone } from \"@solar-icons/react/bold-duotone/palette\"\nimport { PaletteRoundIcon as PaletteRoundBoldDuotone } from \"@solar-icons/react/bold-duotone/palette-round\"\nimport { PauseIcon as PauseBoldDuotone } from \"@solar-icons/react/bold-duotone/pause\"\nimport { PenIcon as PenBoldDuotone } from \"@solar-icons/react/bold-duotone/pen\"\nimport { PenNewRoundIcon as PenNewRoundBoldDuotone } from \"@solar-icons/react/bold-duotone/pen-new-round\"\nimport { PieChartIcon as PieChartBoldDuotone } from \"@solar-icons/react/bold-duotone/pie-chart\"\nimport { PinIcon as PinBoldDuotone } from \"@solar-icons/react/bold-duotone/pin\"\nimport { PlayIcon as PlayBoldDuotone } from \"@solar-icons/react/bold-duotone/play\"\nimport { PlugCircleIcon as PlugCircleBoldDuotone } from \"@solar-icons/react/bold-duotone/plug-circle\"\nimport { PlusMinusIcon as PlusMinusBoldDuotone } from \"@solar-icons/react/bold-duotone/plus-minus\"\nimport { PulseIcon as PulseBoldDuotone } from \"@solar-icons/react/bold-duotone/pulse\"\nimport { RefreshIcon as RefreshBoldDuotone } from \"@solar-icons/react/bold-duotone/refresh\"\nimport { RefreshCircleIcon as RefreshCircleBoldDuotone } from \"@solar-icons/react/bold-duotone/refresh-circle\"\nimport { ReorderIcon as ReorderBoldDuotone } from \"@solar-icons/react/bold-duotone/reorder\"\nimport { RepeatIcon as RepeatBoldDuotone } from \"@solar-icons/react/bold-duotone/repeat\"\nimport { ReplyIcon as ReplyBoldDuotone } from \"@solar-icons/react/bold-duotone/reply\"\nimport { RestartIcon as RestartBoldDuotone } from \"@solar-icons/react/bold-duotone/restart\"\nimport { RocketIcon as RocketBoldDuotone } from \"@solar-icons/react/bold-duotone/rocket\"\nimport { RouteIcon as RouteBoldDuotone } from \"@solar-icons/react/bold-duotone/route\"\nimport { ScaleIcon as ScaleBoldDuotone } from \"@solar-icons/react/bold-duotone/scale\"\nimport { ServerIcon as ServerBoldDuotone } from \"@solar-icons/react/bold-duotone/server\"\nimport { SettingsIcon as SettingsBoldDuotone } from \"@solar-icons/react/bold-duotone/settings\"\nimport { ShareIcon as ShareBoldDuotone } from \"@solar-icons/react/bold-duotone/share\"\nimport { ShieldCheckIcon as ShieldCheckBoldDuotone } from \"@solar-icons/react/bold-duotone/shield-check\"\nimport { Shop2Icon as Shop2BoldDuotone } from \"@solar-icons/react/bold-duotone/shop-2\"\nimport { SidebarMinimalisticIcon as SidebarMinimalisticBoldDuotone } from \"@solar-icons/react/bold-duotone/sidebar-minimalistic\"\nimport { SliderHorizontalIcon as SliderHorizontalBoldDuotone } from \"@solar-icons/react/bold-duotone/slider-horizontal\"\nimport { SmartphoneIcon as SmartphoneBoldDuotone } from \"@solar-icons/react/bold-duotone/smartphone\"\nimport { SortIcon as SortBoldDuotone } from \"@solar-icons/react/bold-duotone/sort\"\nimport { SortByTimeIcon as SortByTimeBoldDuotone } from \"@solar-icons/react/bold-duotone/sort-by-time\"\nimport { SortHorizontalIcon as SortHorizontalBoldDuotone } from \"@solar-icons/react/bold-duotone/sort-horizontal\"\nimport { SortVerticalIcon as SortVerticalBoldDuotone } from \"@solar-icons/react/bold-duotone/sort-vertical\"\nimport { StarIcon as StarBoldDuotone } from \"@solar-icons/react/bold-duotone/star\"\nimport { StructureIcon as StructureBoldDuotone } from \"@solar-icons/react/bold-duotone/structure\"\nimport { SunIcon as SunBoldDuotone } from \"@solar-icons/react/bold-duotone/sun\"\nimport { TagIcon as TagBoldDuotone } from \"@solar-icons/react/bold-duotone/tag\"\nimport { TelescopeIcon as TelescopeBoldDuotone } from \"@solar-icons/react/bold-duotone/telescope\"\nimport { TestTubeIcon as TestTubeBoldDuotone } from \"@solar-icons/react/bold-duotone/test-tube\"\nimport { TextFormatIcon as TextFormatBoldDuotone } from \"@solar-icons/react/bold-duotone/text-format\"\nimport { TransferHorizontalIcon as TransferHorizontalBoldDuotone } from \"@solar-icons/react/bold-duotone/transfer-horizontal\"\nimport { TranslationIcon as TranslationBoldDuotone } from \"@solar-icons/react/bold-duotone/translation\"\nimport { TrashBinMinimalisticIcon as TrashBinMinimalisticBoldDuotone } from \"@solar-icons/react/bold-duotone/trash-bin-minimalistic\"\nimport { UndoLeftIcon as UndoLeftBoldDuotone } from \"@solar-icons/react/bold-duotone/undo-left\"\nimport { UndoLeftRoundIcon as UndoLeftRoundBoldDuotone } from \"@solar-icons/react/bold-duotone/undo-left-round\"\nimport { UndoRightIcon as UndoRightBoldDuotone } from \"@solar-icons/react/bold-duotone/undo-right\"\nimport { UndoRightRoundIcon as UndoRightRoundBoldDuotone } from \"@solar-icons/react/bold-duotone/undo-right-round\"\nimport { UploadIcon as UploadBoldDuotone } from \"@solar-icons/react/bold-duotone/upload\"\nimport { UserIcon as UserBoldDuotone } from \"@solar-icons/react/bold-duotone/user\"\nimport { UserIdIcon as UserIdBoldDuotone } from \"@solar-icons/react/bold-duotone/user-id\"\nimport { UserMinusIcon as UserMinusBoldDuotone } from \"@solar-icons/react/bold-duotone/user-minus\"\nimport { UserPlusIcon as UserPlusBoldDuotone } from \"@solar-icons/react/bold-duotone/user-plus\"\nimport { UsersGroupRoundedIcon as UsersGroupRoundedBoldDuotone } from \"@solar-icons/react/bold-duotone/users-group-rounded\"\nimport { UsersGroupTwoRoundedIcon as UsersGroupTwoRoundedBoldDuotone } from \"@solar-icons/react/bold-duotone/users-group-two-rounded\"\nimport { VideoFrameIcon as VideoFrameBoldDuotone } from \"@solar-icons/react/bold-duotone/video-frame\"\nimport { VideoFramePlayHorizontalIcon as VideoFramePlayHorizontalBoldDuotone } from \"@solar-icons/react/bold-duotone/video-frame-play-horizontal\"\nimport { Widget2Icon as Widget2BoldDuotone } from \"@solar-icons/react/bold-duotone/widget-2\"\nimport { Widget5Icon as Widget5BoldDuotone } from \"@solar-icons/react/bold-duotone/widget-5\"\nimport { WindowFrameIcon as WindowFrameBoldDuotone } from \"@solar-icons/react/bold-duotone/window-frame\"\nimport { AddCircleIcon as AddCircleLinear } from \"@solar-icons/react/linear/add-circle\"\nimport { AlignLeftIcon as AlignLeftLinear } from \"@solar-icons/react/linear/align-left\"\nimport { AltArrowDownIcon as AltArrowDownLinear } from \"@solar-icons/react/linear/alt-arrow-down\"\nimport { AltArrowLeftIcon as AltArrowLeftLinear } from \"@solar-icons/react/linear/alt-arrow-left\"\nimport { AltArrowRightIcon as AltArrowRightLinear } from \"@solar-icons/react/linear/alt-arrow-right\"\nimport { AltArrowUpIcon as AltArrowUpLinear } from \"@solar-icons/react/linear/alt-arrow-up\"\nimport { ArchiveIcon as ArchiveLinear } from \"@solar-icons/react/linear/archive\"\nimport { ArrowRightIcon as ArrowRightLinear } from \"@solar-icons/react/linear/arrow-right\"\nimport { ArrowToTopLeftIcon as ArrowToTopLeftLinear } from \"@solar-icons/react/linear/arrow-to-top-left\"\nimport { ArrowToTopRightIcon as ArrowToTopRightLinear } from \"@solar-icons/react/linear/arrow-to-top-right\"\nimport { BellIcon as BellLinear } from \"@solar-icons/react/linear/bell\"\nimport { BoltIcon as BoltLinear } from \"@solar-icons/react/linear/bolt\"\nimport { BookIcon as BookLinear } from \"@solar-icons/react/linear/book\"\nimport { Book2Icon as Book2Linear } from \"@solar-icons/react/linear/book-2\"\nimport { BookmarkIcon as BookmarkLinear } from \"@solar-icons/react/linear/bookmark\"\nimport { BookmarkCircleIcon as BookmarkCircleLinear } from \"@solar-icons/react/linear/bookmark-circle\"\nimport { BoxIcon as BoxLinear } from \"@solar-icons/react/linear/box\"\nimport { BranchingPathsUpIcon as BranchingPathsUpLinear } from \"@solar-icons/react/linear/branching-paths-up\"\nimport { BugIcon as BugLinear } from \"@solar-icons/react/linear/bug\"\nimport { CalendarDateIcon as CalendarDateLinear } from \"@solar-icons/react/linear/calendar-date\"\nimport { ChatRoundIcon as ChatRoundLinear } from \"@solar-icons/react/linear/chat-round\"\nimport { ChatRoundDotsIcon as ChatRoundDotsLinear } from \"@solar-icons/react/linear/chat-round-dots\"\nimport { ChatRoundLineIcon as ChatRoundLineLinear } from \"@solar-icons/react/linear/chat-round-line\"\nimport { ChatSquareIcon as ChatSquareLinear } from \"@solar-icons/react/linear/chat-square\"\nimport { CheckCircleIcon as CheckCircleLinear } from \"@solar-icons/react/linear/check-circle\"\nimport { ChecklistIcon as ChecklistLinear } from \"@solar-icons/react/linear/checklist\"\nimport { ClipboardListIcon as ClipboardListLinear } from \"@solar-icons/react/linear/clipboard-list\"\nimport { ClockCircleIcon as ClockCircleLinear } from \"@solar-icons/react/linear/clock-circle\"\nimport { CompassIcon as CompassLinear } from \"@solar-icons/react/linear/compass\"\nimport { CopyIcon as CopyLinear } from \"@solar-icons/react/linear/copy\"\nimport { CrownIcon as CrownLinear } from \"@solar-icons/react/linear/crown\"\nimport { DangerTriangleIcon as DangerTriangleLinear } from \"@solar-icons/react/linear/danger-triangle\"\nimport { DatabaseIcon as DatabaseLinear } from \"@solar-icons/react/linear/database\"\nimport { DisketteIcon as DisketteLinear } from \"@solar-icons/react/linear/diskette\"\nimport { DislikeIcon as DislikeLinear } from \"@solar-icons/react/linear/dislike\"\nimport { DocumentAddIcon as DocumentAddLinear } from \"@solar-icons/react/linear/document-add\"\nimport { DocumentTextIcon as DocumentTextLinear } from \"@solar-icons/react/linear/document-text\"\nimport { DoubleAltArrowDownIcon as DoubleAltArrowDownLinear } from \"@solar-icons/react/linear/double-alt-arrow-down\"\nimport { DownloadIcon as DownloadLinear } from \"@solar-icons/react/linear/download\"\nimport { EraserIcon as EraserLinear } from \"@solar-icons/react/linear/eraser\"\nimport { EyeIcon as EyeLinear } from \"@solar-icons/react/linear/eye\"\nimport { FileIcon as FileLinear } from \"@solar-icons/react/linear/file\"\nimport { FileRemoveIcon as FileRemoveLinear } from \"@solar-icons/react/linear/file-remove\"\nimport { FileTextIcon as FileTextLinear } from \"@solar-icons/react/linear/file-text\"\nimport { FilterIcon as FilterLinear } from \"@solar-icons/react/linear/filter\"\nimport { FiltersIcon as FiltersLinear } from \"@solar-icons/react/linear/filters\"\nimport { FolderIcon as FolderLinear } from \"@solar-icons/react/linear/folder\"\nimport { FolderOpenIcon as FolderOpenLinear } from \"@solar-icons/react/linear/folder-open\"\nimport { FolderPathConnectIcon as FolderPathConnectLinear } from \"@solar-icons/react/linear/folder-path-connect\"\nimport { ForbiddenCircleIcon as ForbiddenCircleLinear } from \"@solar-icons/react/linear/forbidden-circle\"\nimport { GalleryIcon as GalleryLinear } from \"@solar-icons/react/linear/gallery\"\nimport { GalleryAddIcon as GalleryAddLinear } from \"@solar-icons/react/linear/gallery-add\"\nimport { GalleryWideIcon as GalleryWideLinear } from \"@solar-icons/react/linear/gallery-wide\"\nimport { GlobalIcon as GlobalLinear } from \"@solar-icons/react/linear/global\"\nimport { GraphDownIcon as GraphDownLinear } from \"@solar-icons/react/linear/graph-down\"\nimport { GraphUpIcon as GraphUpLinear } from \"@solar-icons/react/linear/graph-up\"\nimport { HamburgerMenuIcon as HamburgerMenuLinear } from \"@solar-icons/react/linear/hamburger-menu\"\nimport { HandHeartIcon as HandHeartLinear } from \"@solar-icons/react/linear/hand-heart\"\nimport { HeartIcon as HeartLinear } from \"@solar-icons/react/linear/heart\"\nimport { HelpIcon as HelpLinear } from \"@solar-icons/react/linear/help\"\nimport { HistoryIcon as HistoryLinear } from \"@solar-icons/react/linear/history\"\nimport { HomeAngleIcon as HomeAngleLinear } from \"@solar-icons/react/linear/home-angle\"\nimport { InfoCircleIcon as InfoCircleLinear } from \"@solar-icons/react/linear/info-circle\"\nimport { LayersIcon as LayersLinear } from \"@solar-icons/react/linear/layers\"\nimport { LetterIcon as LetterLinear } from \"@solar-icons/react/linear/letter\"\nimport { LikeIcon as LikeLinear } from \"@solar-icons/react/linear/like\"\nimport { LinkIcon as LinkLinear } from \"@solar-icons/react/linear/link\"\nimport { ListIcon as ListLinear } from \"@solar-icons/react/linear/list\"\nimport { ListVerticalIcon as ListVerticalLinear } from \"@solar-icons/react/linear/list-vertical\"\nimport { LockPasswordIcon as LockPasswordLinear } from \"@solar-icons/react/linear/lock-password\"\nimport { Login2Icon as Login2Linear } from \"@solar-icons/react/linear/login-2\"\nimport { LogoutIcon as LogoutLinear } from \"@solar-icons/react/linear/logout\"\nimport { MagicWand2Icon as MagicWand2Linear } from \"@solar-icons/react/linear/magic-wand-2\"\nimport { MagnifierIcon as MagnifierLinear } from \"@solar-icons/react/linear/magnifier\"\nimport { MagnifierZoomInIcon as MagnifierZoomInLinear } from \"@solar-icons/react/linear/magnifier-zoom-in\"\nimport { MagnifierZoomOutIcon as MagnifierZoomOutLinear } from \"@solar-icons/react/linear/magnifier-zoom-out\"\nimport { MaximizeIcon as MaximizeLinear } from \"@solar-icons/react/linear/maximize\"\nimport { MinimizeIcon as MinimizeLinear } from \"@solar-icons/react/linear/minimize\"\nimport { MinusSquareIcon as MinusSquareLinear } from \"@solar-icons/react/linear/minus-square\"\nimport { MonitorIcon as MonitorLinear } from \"@solar-icons/react/linear/monitor\"\nimport { MonitorSmartphoneIcon as MonitorSmartphoneLinear } from \"@solar-icons/react/linear/monitor-smartphone\"\nimport { MoonIcon as MoonLinear } from \"@solar-icons/react/linear/moon\"\nimport { MoveToFolderIcon as MoveToFolderLinear } from \"@solar-icons/react/linear/move-to-folder\"\nimport { MusicNotesIcon as MusicNotesLinear } from \"@solar-icons/react/linear/music-notes\"\nimport { PaletteIcon as PaletteLinear } from \"@solar-icons/react/linear/palette\"\nimport { PaletteRoundIcon as PaletteRoundLinear } from \"@solar-icons/react/linear/palette-round\"\nimport { PauseIcon as PauseLinear } from \"@solar-icons/react/linear/pause\"\nimport { PenIcon as PenLinear } from \"@solar-icons/react/linear/pen\"\nimport { PenNewRoundIcon as PenNewRoundLinear } from \"@solar-icons/react/linear/pen-new-round\"\nimport { PieChartIcon as PieChartLinear } from \"@solar-icons/react/linear/pie-chart\"\nimport { PinIcon as PinLinear } from \"@solar-icons/react/linear/pin\"\nimport { PlayIcon as PlayLinear } from \"@solar-icons/react/linear/play\"\nimport { PlugCircleIcon as PlugCircleLinear } from \"@solar-icons/react/linear/plug-circle\"\nimport { PlusMinusIcon as PlusMinusLinear } from \"@solar-icons/react/linear/plus-minus\"\nimport { PulseIcon as PulseLinear } from \"@solar-icons/react/linear/pulse\"\nimport { RefreshIcon as RefreshLinear } from \"@solar-icons/react/linear/refresh\"\nimport { RefreshCircleIcon as RefreshCircleLinear } from \"@solar-icons/react/linear/refresh-circle\"\nimport { ReorderIcon as ReorderLinear } from \"@solar-icons/react/linear/reorder\"\nimport { RepeatIcon as RepeatLinear } from \"@solar-icons/react/linear/repeat\"\nimport { ReplyIcon as ReplyLinear } from \"@solar-icons/react/linear/reply\"\nimport { RestartIcon as RestartLinear } from \"@solar-icons/react/linear/restart\"\nimport { RocketIcon as RocketLinear } from \"@solar-icons/react/linear/rocket\"\nimport { RouteIcon as RouteLinear } from \"@solar-icons/react/linear/route\"\nimport { ScaleIcon as ScaleLinear } from \"@solar-icons/react/linear/scale\"\nimport { ServerIcon as ServerLinear } from \"@solar-icons/react/linear/server\"\nimport { SettingsIcon as SettingsLinear } from \"@solar-icons/react/linear/settings\"\nimport { ShareIcon as ShareLinear } from \"@solar-icons/react/linear/share\"\nimport { ShieldCheckIcon as ShieldCheckLinear } from \"@solar-icons/react/linear/shield-check\"\nimport { Shop2Icon as Shop2Linear } from \"@solar-icons/react/linear/shop-2\"\nimport { SidebarMinimalisticIcon as SidebarMinimalisticLinear } from \"@solar-icons/react/linear/sidebar-minimalistic\"\nimport { SliderHorizontalIcon as SliderHorizontalLinear } from \"@solar-icons/react/linear/slider-horizontal\"\nimport { SmartphoneIcon as SmartphoneLinear } from \"@solar-icons/react/linear/smartphone\"\nimport { SortIcon as SortLinear } from \"@solar-icons/react/linear/sort\"\nimport { SortByTimeIcon as SortByTimeLinear } from \"@solar-icons/react/linear/sort-by-time\"\nimport { SortHorizontalIcon as SortHorizontalLinear } from \"@solar-icons/react/linear/sort-horizontal\"\nimport { SortVerticalIcon as SortVerticalLinear } from \"@solar-icons/react/linear/sort-vertical\"\nimport { StarIcon as StarLinear } from \"@solar-icons/react/linear/star\"\nimport { StructureIcon as StructureLinear } from \"@solar-icons/react/linear/structure\"\nimport { SunIcon as SunLinear } from \"@solar-icons/react/linear/sun\"\nimport { TagIcon as TagLinear } from \"@solar-icons/react/linear/tag\"\nimport { TelescopeIcon as TelescopeLinear } from \"@solar-icons/react/linear/telescope\"\nimport { TestTubeIcon as TestTubeLinear } from \"@solar-icons/react/linear/test-tube\"\nimport { TextFormatIcon as TextFormatLinear } from \"@solar-icons/react/linear/text-format\"\nimport { TransferHorizontalIcon as TransferHorizontalLinear } from \"@solar-icons/react/linear/transfer-horizontal\"\nimport { TranslationIcon as TranslationLinear } from \"@solar-icons/react/linear/translation\"\nimport { TrashBinMinimalisticIcon as TrashBinMinimalisticLinear } from \"@solar-icons/react/linear/trash-bin-minimalistic\"\nimport { UndoLeftIcon as UndoLeftLinear } from \"@solar-icons/react/linear/undo-left\"\nimport { UndoLeftRoundIcon as UndoLeftRoundLinear } from \"@solar-icons/react/linear/undo-left-round\"\nimport { UndoRightIcon as UndoRightLinear } from \"@solar-icons/react/linear/undo-right\"\nimport { UndoRightRoundIcon as UndoRightRoundLinear } from \"@solar-icons/react/linear/undo-right-round\"\nimport { UploadIcon as UploadLinear } from \"@solar-icons/react/linear/upload\"\nimport { UserIcon as UserLinear } from \"@solar-icons/react/linear/user\"\nimport { UserIdIcon as UserIdLinear } from \"@solar-icons/react/linear/user-id\"\nimport { UserMinusIcon as UserMinusLinear } from \"@solar-icons/react/linear/user-minus\"\nimport { UserPlusIcon as UserPlusLinear } from \"@solar-icons/react/linear/user-plus\"\nimport { UsersGroupRoundedIcon as UsersGroupRoundedLinear } from \"@solar-icons/react/linear/users-group-rounded\"\nimport { UsersGroupTwoRoundedIcon as UsersGroupTwoRoundedLinear } from \"@solar-icons/react/linear/users-group-two-rounded\"\nimport { VideoFrameIcon as VideoFrameLinear } from \"@solar-icons/react/linear/video-frame\"\nimport { VideoFramePlayHorizontalIcon as VideoFramePlayHorizontalLinear } from \"@solar-icons/react/linear/video-frame-play-horizontal\"\nimport { Widget2Icon as Widget2Linear } from \"@solar-icons/react/linear/widget-2\"\nimport { Widget5Icon as Widget5Linear } from \"@solar-icons/react/linear/widget-5\"\nimport { WindowFrameIcon as WindowFrameLinear } from \"@solar-icons/react/linear/window-frame\"\nimport { createIcon } from \"./icon-style\"\n\n// ── One icon per glyph - three parallel Solar weights ────────────\nexport const AddCircle = createIcon({\n\tbold: AddCircleBoldWeight,\n\tboldDuotone: AddCircleBoldDuotone,\n\tlinear: AddCircleLinear,\n})\nexport const AlignLeft = createIcon({\n\tbold: AlignLeftBoldWeight,\n\tboldDuotone: AlignLeftBoldDuotone,\n\tlinear: AlignLeftLinear,\n})\nexport const AltArrowDown = createIcon({\n\tbold: AltArrowDownBoldWeight,\n\tboldDuotone: AltArrowDownBoldDuotone,\n\tlinear: AltArrowDownLinear,\n})\nexport const AltArrowLeft = createIcon({\n\tbold: AltArrowLeftBoldWeight,\n\tboldDuotone: AltArrowLeftBoldDuotone,\n\tlinear: AltArrowLeftLinear,\n})\nexport const AltArrowRight = createIcon({\n\tbold: AltArrowRightBoldWeight,\n\tboldDuotone: AltArrowRightBoldDuotone,\n\tlinear: AltArrowRightLinear,\n})\nexport const AltArrowUp = createIcon({\n\tbold: AltArrowUpBoldWeight,\n\tboldDuotone: AltArrowUpBoldDuotone,\n\tlinear: AltArrowUpLinear,\n})\nexport const Archive = createIcon({\n\tbold: ArchiveBoldWeight,\n\tboldDuotone: ArchiveBoldDuotone,\n\tlinear: ArchiveLinear,\n})\nexport const ArrowRight = createIcon({\n\tbold: ArrowRightBoldWeight,\n\tboldDuotone: ArrowRightBoldDuotone,\n\tlinear: ArrowRightLinear,\n})\nexport const ArrowToTopLeft = createIcon({\n\tbold: ArrowToTopLeftBoldWeight,\n\tboldDuotone: ArrowToTopLeftBoldDuotone,\n\tlinear: ArrowToTopLeftLinear,\n})\nexport const ArrowToTopRight = createIcon({\n\tbold: ArrowToTopRightBoldWeight,\n\tboldDuotone: ArrowToTopRightBoldDuotone,\n\tlinear: ArrowToTopRightLinear,\n})\nexport const Bell = createIcon({\n\tbold: BellBoldWeight,\n\tboldDuotone: BellBoldDuotone,\n\tlinear: BellLinear,\n})\nexport const Bolt = createIcon({\n\tbold: BoltBoldWeight,\n\tboldDuotone: BoltBoldDuotone,\n\tlinear: BoltLinear,\n})\nexport const Book = createIcon({\n\tbold: BookBoldWeight,\n\tboldDuotone: BookBoldDuotone,\n\tlinear: BookLinear,\n})\nexport const Book2 = createIcon({\n\tbold: Book2BoldWeight,\n\tboldDuotone: Book2BoldDuotone,\n\tlinear: Book2Linear,\n})\nexport const Bookmark = createIcon({\n\tbold: BookmarkBoldWeight,\n\tboldDuotone: BookmarkBoldDuotone,\n\tlinear: BookmarkLinear,\n})\nexport const BookmarkCircle = createIcon({\n\tbold: BookmarkCircleBoldWeight,\n\tboldDuotone: BookmarkCircleBoldDuotone,\n\tlinear: BookmarkCircleLinear,\n})\nexport const Box = createIcon({\n\tbold: BoxBoldWeight,\n\tboldDuotone: BoxBoldDuotone,\n\tlinear: BoxLinear,\n})\nexport const BranchingPathsUp = createIcon({\n\tbold: BranchingPathsUpBoldWeight,\n\tboldDuotone: BranchingPathsUpBoldDuotone,\n\tlinear: BranchingPathsUpLinear,\n})\nexport const Bug = createIcon({\n\tbold: BugBoldWeight,\n\tboldDuotone: BugBoldDuotone,\n\tlinear: BugLinear,\n})\nexport const CalendarDate = createIcon({\n\tbold: CalendarDateBoldWeight,\n\tboldDuotone: CalendarDateBoldDuotone,\n\tlinear: CalendarDateLinear,\n})\nexport const ChatRound = createIcon({\n\tbold: ChatRoundBoldWeight,\n\tboldDuotone: ChatRoundBoldDuotone,\n\tlinear: ChatRoundLinear,\n})\nexport const ChatRoundDots = createIcon({\n\tbold: ChatRoundDotsBoldWeight,\n\tboldDuotone: ChatRoundDotsBoldDuotone,\n\tlinear: ChatRoundDotsLinear,\n})\nexport const ChatRoundLine = createIcon({\n\tbold: ChatRoundLineBoldWeight,\n\tboldDuotone: ChatRoundLineBoldDuotone,\n\tlinear: ChatRoundLineLinear,\n})\nexport const ChatSquare = createIcon({\n\tbold: ChatSquareBoldWeight,\n\tboldDuotone: ChatSquareBoldDuotone,\n\tlinear: ChatSquareLinear,\n})\nexport const CheckCircle = createIcon({\n\tbold: CheckCircleBoldWeight,\n\tboldDuotone: CheckCircleBoldDuotone,\n\tlinear: CheckCircleLinear,\n})\nexport const Checklist = createIcon({\n\tbold: ChecklistBoldWeight,\n\tboldDuotone: ChecklistBoldDuotone,\n\tlinear: ChecklistLinear,\n})\nexport const ClipboardList = createIcon({\n\tbold: ClipboardListBoldWeight,\n\tboldDuotone: ClipboardListBoldDuotone,\n\tlinear: ClipboardListLinear,\n})\nexport const ClockCircle = createIcon({\n\tbold: ClockCircleBoldWeight,\n\tboldDuotone: ClockCircleBoldDuotone,\n\tlinear: ClockCircleLinear,\n})\nexport const Compass = createIcon({\n\tbold: CompassBoldWeight,\n\tboldDuotone: CompassBoldDuotone,\n\tlinear: CompassLinear,\n})\nexport const Copy = createIcon({\n\tbold: CopyBoldWeight,\n\tboldDuotone: CopyBoldDuotone,\n\tlinear: CopyLinear,\n})\nexport const Crown = createIcon({\n\tbold: CrownBoldWeight,\n\tboldDuotone: CrownBoldDuotone,\n\tlinear: CrownLinear,\n})\nexport const DangerTriangle = createIcon({\n\tbold: DangerTriangleBoldWeight,\n\tboldDuotone: DangerTriangleBoldDuotone,\n\tlinear: DangerTriangleLinear,\n})\nexport const Database = createIcon({\n\tbold: DatabaseBoldWeight,\n\tboldDuotone: DatabaseBoldDuotone,\n\tlinear: DatabaseLinear,\n})\nexport const Diskette = createIcon({\n\tbold: DisketteBoldWeight,\n\tboldDuotone: DisketteBoldDuotone,\n\tlinear: DisketteLinear,\n})\nexport const Dislike = createIcon({\n\tbold: DislikeBoldWeight,\n\tboldDuotone: DislikeBoldDuotone,\n\tlinear: DislikeLinear,\n})\nexport const DocumentAdd = createIcon({\n\tbold: DocumentAddBoldWeight,\n\tboldDuotone: DocumentAddBoldDuotone,\n\tlinear: DocumentAddLinear,\n})\nexport const DocumentText = createIcon({\n\tbold: DocumentTextBoldWeight,\n\tboldDuotone: DocumentTextBoldDuotone,\n\tlinear: DocumentTextLinear,\n})\nexport const DoubleAltArrowDown = createIcon({\n\tbold: DoubleAltArrowDownBoldWeight,\n\tboldDuotone: DoubleAltArrowDownBoldDuotone,\n\tlinear: DoubleAltArrowDownLinear,\n})\nexport const Download = createIcon({\n\tbold: DownloadBoldWeight,\n\tboldDuotone: DownloadBoldDuotone,\n\tlinear: DownloadLinear,\n})\nexport const Eraser = createIcon({\n\tbold: EraserBoldWeight,\n\tboldDuotone: EraserBoldDuotone,\n\tlinear: EraserLinear,\n})\nexport const Eye = createIcon({\n\tbold: EyeBoldWeight,\n\tboldDuotone: EyeBoldDuotone,\n\tlinear: EyeLinear,\n})\nexport const File = createIcon({\n\tbold: FileBoldWeight,\n\tboldDuotone: FileBoldDuotone,\n\tlinear: FileLinear,\n})\nexport const FileRemove = createIcon({\n\tbold: FileRemoveBoldWeight,\n\tboldDuotone: FileRemoveBoldDuotone,\n\tlinear: FileRemoveLinear,\n})\nexport const FileText = createIcon({\n\tbold: FileTextBoldWeight,\n\tboldDuotone: FileTextBoldDuotone,\n\tlinear: FileTextLinear,\n})\nexport const Filter = createIcon({\n\tbold: FilterBoldWeight,\n\tboldDuotone: FilterBoldDuotone,\n\tlinear: FilterLinear,\n})\nexport const Filters = createIcon({\n\tbold: FiltersBoldWeight,\n\tboldDuotone: FiltersBoldDuotone,\n\tlinear: FiltersLinear,\n})\nexport const Folder = createIcon({\n\tbold: FolderBoldWeight,\n\tboldDuotone: FolderBoldDuotone,\n\tlinear: FolderLinear,\n})\nexport const FolderOpen = createIcon({\n\tbold: FolderOpenBoldWeight,\n\tboldDuotone: FolderOpenBoldDuotone,\n\tlinear: FolderOpenLinear,\n})\nexport const FolderPathConnect = createIcon({\n\tbold: FolderPathConnectBoldWeight,\n\tboldDuotone: FolderPathConnectBoldDuotone,\n\tlinear: FolderPathConnectLinear,\n})\nexport const ForbiddenCircle = createIcon({\n\tbold: ForbiddenCircleBoldWeight,\n\tboldDuotone: ForbiddenCircleBoldDuotone,\n\tlinear: ForbiddenCircleLinear,\n})\nexport const Gallery = createIcon({\n\tbold: GalleryBoldWeight,\n\tboldDuotone: GalleryBoldDuotone,\n\tlinear: GalleryLinear,\n})\nexport const GalleryAdd = createIcon({\n\tbold: GalleryAddBoldWeight,\n\tboldDuotone: GalleryAddBoldDuotone,\n\tlinear: GalleryAddLinear,\n})\nexport const GalleryWide = createIcon({\n\tbold: GalleryWideBoldWeight,\n\tboldDuotone: GalleryWideBoldDuotone,\n\tlinear: GalleryWideLinear,\n})\nexport const Global = createIcon({\n\tbold: GlobalBoldWeight,\n\tboldDuotone: GlobalBoldDuotone,\n\tlinear: GlobalLinear,\n})\nexport const GraphDown = createIcon({\n\tbold: GraphDownBoldWeight,\n\tboldDuotone: GraphDownBoldDuotone,\n\tlinear: GraphDownLinear,\n})\nexport const GraphUp = createIcon({\n\tbold: GraphUpBoldWeight,\n\tboldDuotone: GraphUpBoldDuotone,\n\tlinear: GraphUpLinear,\n})\nexport const HamburgerMenu = createIcon({\n\tbold: HamburgerMenuBoldWeight,\n\tboldDuotone: HamburgerMenuBoldDuotone,\n\tlinear: HamburgerMenuLinear,\n})\nexport const HandHeart = createIcon({\n\tbold: HandHeartBoldWeight,\n\tboldDuotone: HandHeartBoldDuotone,\n\tlinear: HandHeartLinear,\n})\nexport const Heart = createIcon({\n\tbold: HeartBoldWeight,\n\tboldDuotone: HeartBoldDuotone,\n\tlinear: HeartLinear,\n})\nexport const Help = createIcon({\n\tbold: HelpBoldWeight,\n\tboldDuotone: HelpBoldDuotone,\n\tlinear: HelpLinear,\n})\nexport const History = createIcon({\n\tbold: HistoryBoldWeight,\n\tboldDuotone: HistoryBoldDuotone,\n\tlinear: HistoryLinear,\n})\nexport const HomeAngle = createIcon({\n\tbold: HomeAngleBoldWeight,\n\tboldDuotone: HomeAngleBoldDuotone,\n\tlinear: HomeAngleLinear,\n})\nexport const InfoCircle = createIcon({\n\tbold: InfoCircleBoldWeight,\n\tboldDuotone: InfoCircleBoldDuotone,\n\tlinear: InfoCircleLinear,\n})\nexport const Layers = createIcon({\n\tbold: LayersBoldWeight,\n\tboldDuotone: LayersBoldDuotone,\n\tlinear: LayersLinear,\n})\nexport const Letter = createIcon({\n\tbold: LetterBoldWeight,\n\tboldDuotone: LetterBoldDuotone,\n\tlinear: LetterLinear,\n})\nexport const Like = createIcon({\n\tbold: LikeBoldWeight,\n\tboldDuotone: LikeBoldDuotone,\n\tlinear: LikeLinear,\n})\nexport const Link = createIcon({\n\tbold: LinkBoldWeight,\n\tboldDuotone: LinkBoldDuotone,\n\tlinear: LinkLinear,\n})\nexport const List = createIcon({\n\tbold: ListBoldWeight,\n\tboldDuotone: ListBoldDuotone,\n\tlinear: ListLinear,\n})\nexport const ListVertical = createIcon({\n\tbold: ListVerticalBoldWeight,\n\tboldDuotone: ListVerticalBoldDuotone,\n\tlinear: ListVerticalLinear,\n})\nexport const LockPassword = createIcon({\n\tbold: LockPasswordBoldWeight,\n\tboldDuotone: LockPasswordBoldDuotone,\n\tlinear: LockPasswordLinear,\n})\nexport const Login2 = createIcon({\n\tbold: Login2BoldWeight,\n\tboldDuotone: Login2BoldDuotone,\n\tlinear: Login2Linear,\n})\nexport const Logout = createIcon({\n\tbold: LogoutBoldWeight,\n\tboldDuotone: LogoutBoldDuotone,\n\tlinear: LogoutLinear,\n})\nexport const MagicWand2 = createIcon({\n\tbold: MagicWand2BoldWeight,\n\tboldDuotone: MagicWand2BoldDuotone,\n\tlinear: MagicWand2Linear,\n})\nexport const Magnifier = createIcon({\n\tbold: MagnifierBoldWeight,\n\tboldDuotone: MagnifierBoldDuotone,\n\tlinear: MagnifierLinear,\n})\nexport const MagnifierZoomIn = createIcon({\n\tbold: MagnifierZoomInBoldWeight,\n\tboldDuotone: MagnifierZoomInBoldDuotone,\n\tlinear: MagnifierZoomInLinear,\n})\nexport const MagnifierZoomOut = createIcon({\n\tbold: MagnifierZoomOutBoldWeight,\n\tboldDuotone: MagnifierZoomOutBoldDuotone,\n\tlinear: MagnifierZoomOutLinear,\n})\nexport const Maximize = createIcon({\n\tbold: MaximizeBoldWeight,\n\tboldDuotone: MaximizeBoldDuotone,\n\tlinear: MaximizeLinear,\n})\nexport const MenuDots = createIcon({\n\tbold: MenuDotsBoldWeight,\n\tboldDuotone: MenuDotsBoldDuotone,\n\tlinear: MenuDotsBoldWeight,\n})\nexport const Minimize = createIcon({\n\tbold: MinimizeBoldWeight,\n\tboldDuotone: MinimizeBoldDuotone,\n\tlinear: MinimizeLinear,\n})\nexport const MinusSquare = createIcon({\n\tbold: MinusSquareBoldWeight,\n\tboldDuotone: MinusSquareBoldDuotone,\n\tlinear: MinusSquareLinear,\n})\nexport const Monitor = createIcon({\n\tbold: MonitorBoldWeight,\n\tboldDuotone: MonitorBoldDuotone,\n\tlinear: MonitorLinear,\n})\nexport const MonitorSmartphone = createIcon({\n\tbold: MonitorSmartphoneBoldWeight,\n\tboldDuotone: MonitorSmartphoneBoldDuotone,\n\tlinear: MonitorSmartphoneLinear,\n})\nexport const Moon = createIcon({\n\tbold: MoonBoldWeight,\n\tboldDuotone: MoonBoldDuotone,\n\tlinear: MoonLinear,\n})\nexport const MoveToFolder = createIcon({\n\tbold: MoveToFolderBoldWeight,\n\tboldDuotone: MoveToFolderBoldDuotone,\n\tlinear: MoveToFolderLinear,\n})\nexport const MusicNotes = createIcon({\n\tbold: MusicNotesBoldWeight,\n\tboldDuotone: MusicNotesBoldDuotone,\n\tlinear: MusicNotesLinear,\n})\nexport const Palette = createIcon({\n\tbold: PaletteBoldWeight,\n\tboldDuotone: PaletteBoldDuotone,\n\tlinear: PaletteLinear,\n})\nexport const PaletteRound = createIcon({\n\tbold: PaletteRoundBoldWeight,\n\tboldDuotone: PaletteRoundBoldDuotone,\n\tlinear: PaletteRoundLinear,\n})\nexport const Pause = createIcon({\n\tbold: PauseBoldWeight,\n\tboldDuotone: PauseBoldDuotone,\n\tlinear: PauseLinear,\n})\nexport const Pen = createIcon({\n\tbold: PenBoldWeight,\n\tboldDuotone: PenBoldDuotone,\n\tlinear: PenLinear,\n})\nexport const PenNewRound = createIcon({\n\tbold: PenNewRoundBoldWeight,\n\tboldDuotone: PenNewRoundBoldDuotone,\n\tlinear: PenNewRoundLinear,\n})\nexport const PieChart = createIcon({\n\tbold: PieChartBoldWeight,\n\tboldDuotone: PieChartBoldDuotone,\n\tlinear: PieChartLinear,\n})\nexport const Pin = createIcon({\n\tbold: PinBoldWeight,\n\tboldDuotone: PinBoldDuotone,\n\tlinear: PinLinear,\n})\nexport const Play = createIcon({\n\tbold: PlayBoldWeight,\n\tboldDuotone: PlayBoldDuotone,\n\tlinear: PlayLinear,\n})\nexport const PlugCircle = createIcon({\n\tbold: PlugCircleBoldWeight,\n\tboldDuotone: PlugCircleBoldDuotone,\n\tlinear: PlugCircleLinear,\n})\nexport const PlusMinus = createIcon({\n\tbold: PlusMinusBoldWeight,\n\tboldDuotone: PlusMinusBoldDuotone,\n\tlinear: PlusMinusLinear,\n})\nexport const Pulse = createIcon({\n\tbold: PulseBoldWeight,\n\tboldDuotone: PulseBoldDuotone,\n\tlinear: PulseLinear,\n})\nexport const Refresh = createIcon({\n\tbold: RefreshBoldWeight,\n\tboldDuotone: RefreshBoldDuotone,\n\tlinear: RefreshLinear,\n})\nexport const RefreshCircle = createIcon({\n\tbold: RefreshCircleBoldWeight,\n\tboldDuotone: RefreshCircleBoldDuotone,\n\tlinear: RefreshCircleLinear,\n})\nexport const Reorder = createIcon({\n\tbold: ReorderBoldWeight,\n\tboldDuotone: ReorderBoldDuotone,\n\tlinear: ReorderLinear,\n})\nexport const Repeat = createIcon({\n\tbold: RepeatBoldWeight,\n\tboldDuotone: RepeatBoldDuotone,\n\tlinear: RepeatLinear,\n})\nexport const Reply = createIcon({\n\tbold: ReplyBoldWeight,\n\tboldDuotone: ReplyBoldDuotone,\n\tlinear: ReplyLinear,\n})\nexport const Restart = createIcon({\n\tbold: RestartBoldWeight,\n\tboldDuotone: RestartBoldDuotone,\n\tlinear: RestartLinear,\n})\nexport const Rocket = createIcon({\n\tbold: RocketBoldWeight,\n\tboldDuotone: RocketBoldDuotone,\n\tlinear: RocketLinear,\n})\nexport const Route = createIcon({\n\tbold: RouteBoldWeight,\n\tboldDuotone: RouteBoldDuotone,\n\tlinear: RouteLinear,\n})\nexport const Scale = createIcon({\n\tbold: ScaleBoldWeight,\n\tboldDuotone: ScaleBoldDuotone,\n\tlinear: ScaleLinear,\n})\nexport const Server = createIcon({\n\tbold: ServerBoldWeight,\n\tboldDuotone: ServerBoldDuotone,\n\tlinear: ServerLinear,\n})\nexport const Settings = createIcon({\n\tbold: SettingsBoldWeight,\n\tboldDuotone: SettingsBoldDuotone,\n\tlinear: SettingsLinear,\n})\nexport const Share = createIcon({\n\tbold: ShareBoldWeight,\n\tboldDuotone: ShareBoldDuotone,\n\tlinear: ShareLinear,\n})\nexport const ShieldCheck = createIcon({\n\tbold: ShieldCheckBoldWeight,\n\tboldDuotone: ShieldCheckBoldDuotone,\n\tlinear: ShieldCheckLinear,\n})\nexport const Shop2 = createIcon({\n\tbold: Shop2BoldWeight,\n\tboldDuotone: Shop2BoldDuotone,\n\tlinear: Shop2Linear,\n})\nexport const SidebarMinimalistic = createIcon({\n\tbold: SidebarMinimalisticBoldWeight,\n\tboldDuotone: SidebarMinimalisticBoldDuotone,\n\tlinear: SidebarMinimalisticLinear,\n})\nexport const SliderHorizontal = createIcon({\n\tbold: SliderHorizontalBoldWeight,\n\tboldDuotone: SliderHorizontalBoldDuotone,\n\tlinear: SliderHorizontalLinear,\n})\nexport const Smartphone = createIcon({\n\tbold: SmartphoneBoldWeight,\n\tboldDuotone: SmartphoneBoldDuotone,\n\tlinear: SmartphoneLinear,\n})\nexport const Sort = createIcon({\n\tbold: SortBoldWeight,\n\tboldDuotone: SortBoldDuotone,\n\tlinear: SortLinear,\n})\nexport const SortByTime = createIcon({\n\tbold: SortByTimeBoldWeight,\n\tboldDuotone: SortByTimeBoldDuotone,\n\tlinear: SortByTimeLinear,\n})\nexport const SortHorizontal = createIcon({\n\tbold: SortHorizontalBoldWeight,\n\tboldDuotone: SortHorizontalBoldDuotone,\n\tlinear: SortHorizontalLinear,\n})\nexport const SortVertical = createIcon({\n\tbold: SortVerticalBoldWeight,\n\tboldDuotone: SortVerticalBoldDuotone,\n\tlinear: SortVerticalLinear,\n})\nexport const Star = createIcon({\n\tbold: StarBoldWeight,\n\tboldDuotone: StarBoldDuotone,\n\tlinear: StarLinear,\n})\nexport const Structure = createIcon({\n\tbold: StructureBoldWeight,\n\tboldDuotone: StructureBoldDuotone,\n\tlinear: StructureLinear,\n})\nexport const Sun = createIcon({\n\tbold: SunBoldWeight,\n\tboldDuotone: SunBoldDuotone,\n\tlinear: SunLinear,\n})\nexport const Tag = createIcon({\n\tbold: TagBoldWeight,\n\tboldDuotone: TagBoldDuotone,\n\tlinear: TagLinear,\n})\nexport const Telescope = createIcon({\n\tbold: TelescopeBoldWeight,\n\tboldDuotone: TelescopeBoldDuotone,\n\tlinear: TelescopeLinear,\n})\nexport const TestTube = createIcon({\n\tbold: TestTubeBoldWeight,\n\tboldDuotone: TestTubeBoldDuotone,\n\tlinear: TestTubeLinear,\n})\nexport const TextFormat = createIcon({\n\tbold: TextFormatBoldWeight,\n\tboldDuotone: TextFormatBoldDuotone,\n\tlinear: TextFormatLinear,\n})\nexport const TransferHorizontal = createIcon({\n\tbold: TransferHorizontalBoldWeight,\n\tboldDuotone: TransferHorizontalBoldDuotone,\n\tlinear: TransferHorizontalLinear,\n})\nexport const Translation = createIcon({\n\tbold: TranslationBoldWeight,\n\tboldDuotone: TranslationBoldDuotone,\n\tlinear: TranslationLinear,\n})\nexport const TrashBinMinimalistic = createIcon({\n\tbold: TrashBinMinimalisticBoldWeight,\n\tboldDuotone: TrashBinMinimalisticBoldDuotone,\n\tlinear: TrashBinMinimalisticLinear,\n})\nexport const UndoLeft = createIcon({\n\tbold: UndoLeftBoldWeight,\n\tboldDuotone: UndoLeftBoldDuotone,\n\tlinear: UndoLeftLinear,\n})\nexport const UndoLeftRound = createIcon({\n\tbold: UndoLeftRoundBoldWeight,\n\tboldDuotone: UndoLeftRoundBoldDuotone,\n\tlinear: UndoLeftRoundLinear,\n})\nexport const UndoRight = createIcon({\n\tbold: UndoRightBoldWeight,\n\tboldDuotone: UndoRightBoldDuotone,\n\tlinear: UndoRightLinear,\n})\nexport const UndoRightRound = createIcon({\n\tbold: UndoRightRoundBoldWeight,\n\tboldDuotone: UndoRightRoundBoldDuotone,\n\tlinear: UndoRightRoundLinear,\n})\nexport const Upload = createIcon({\n\tbold: UploadBoldWeight,\n\tboldDuotone: UploadBoldDuotone,\n\tlinear: UploadLinear,\n})\nexport const User = createIcon({\n\tbold: UserBoldWeight,\n\tboldDuotone: UserBoldDuotone,\n\tlinear: UserLinear,\n})\nexport const UserId = createIcon({\n\tbold: UserIdBoldWeight,\n\tboldDuotone: UserIdBoldDuotone,\n\tlinear: UserIdLinear,\n})\nexport const UserMinus = createIcon({\n\tbold: UserMinusBoldWeight,\n\tboldDuotone: UserMinusBoldDuotone,\n\tlinear: UserMinusLinear,\n})\nexport const UserPlus = createIcon({\n\tbold: UserPlusBoldWeight,\n\tboldDuotone: UserPlusBoldDuotone,\n\tlinear: UserPlusLinear,\n})\nexport const UsersGroupRounded = createIcon({\n\tbold: UsersGroupRoundedBoldWeight,\n\tboldDuotone: UsersGroupRoundedBoldDuotone,\n\tlinear: UsersGroupRoundedLinear,\n})\nexport const UsersGroupTwoRounded = createIcon({\n\tbold: UsersGroupTwoRoundedBoldWeight,\n\tboldDuotone: UsersGroupTwoRoundedBoldDuotone,\n\tlinear: UsersGroupTwoRoundedLinear,\n})\nexport const VideoFrame = createIcon({\n\tbold: VideoFrameBoldWeight,\n\tboldDuotone: VideoFrameBoldDuotone,\n\tlinear: VideoFrameLinear,\n})\nexport const VideoFramePlayHorizontal = createIcon({\n\tbold: VideoFramePlayHorizontalBoldWeight,\n\tboldDuotone: VideoFramePlayHorizontalBoldDuotone,\n\tlinear: VideoFramePlayHorizontalLinear,\n})\nexport const Widget2 = createIcon({\n\tbold: Widget2BoldWeight,\n\tboldDuotone: Widget2BoldDuotone,\n\tlinear: Widget2Linear,\n})\nexport const Widget5 = createIcon({\n\tbold: Widget5BoldWeight,\n\tboldDuotone: Widget5BoldDuotone,\n\tlinear: Widget5Linear,\n})\nexport const WindowFrame = createIcon({\n\tbold: WindowFrameBoldWeight,\n\tboldDuotone: WindowFrameBoldDuotone,\n\tlinear: WindowFrameLinear,\n})\n","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 { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg text-ui font-medium whitespace-nowrap outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary px-4! text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-background shadow-xs hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n danger:\n \"bg-[color-mix(in_oklab,var(--destructive),black_12%)] text-white hover:bg-[color-mix(in_oklab,var(--destructive),black_4%)] focus-visible:border-destructive/40 focus-visible:ring-destructive/20 disabled:bg-destructive/10 disabled:text-muted-foreground dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-control gap-2 px-3 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-2 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-chip gap-2 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5\",\n lg: \"h-10 gap-2 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n icon: \"size-9\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n active,\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props &\n VariantProps<typeof buttonVariants> & {\n /** Latched toggle state: accent fill, hover pinned so an active\n button never shifts. Callers keep choosing the matching aria\n attribute (`aria-pressed` / `aria-expanded`). */\n active?: boolean\n }) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(\n buttonVariants({ variant, size, className }),\n active && \"bg-accent text-accent-foreground hover:bg-accent\"\n )}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","/**\n * Local utility marks — the three plain glyphs Solar's vocabulary lacks\n * (its ✓/×/+ only exist inside Circle/Square containers, whose marks occupy\n * barely a third of the box and go muddy below 16px). These are drawn\n * in-house for the spots where a bare mark is the whole meaning: checkbox\n * ticks, selected badges, pill clears, add affordances.\n *\n * Check and Cross are strokes in Solar's language (24 viewBox, round caps)\n * at 2 units — diagonals anti-alias gracefully at any tier. Plus is a\n * filled cross instead: its pure orthogonal edges land on integer pixels\n * at the md tier (3-unit arms render as a crisp 2px bar at 16px), where a\n * 1.33px stroke would straddle pixel boundaries and blur. Weight-insensitive:\n * no tone layer, no weight variants. Original geometry — not derived\n * from Solar assets.\n *\n * Marks ride the same `mode` channel as registry icons (declared, ignored):\n * a check is a check in every weight.\n */\nimport type { IconMode } from \"./icon-style.ts\"\n\ntype MarkProps = {\n\tclassName?: string\n\tmode?: IconMode\n}\n\nfunction Mark({\n\td,\n\tfilled,\n\tclassName,\n}: MarkProps & { d: string; filled?: boolean }) {\n\treturn (\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tclassName={className}\n\t\t>\n\t\t\t{filled ? (\n\t\t\t\t<path d={d} fill=\"currentColor\" />\n\t\t\t) : (\n\t\t\t\t<path\n\t\t\t\t\td={d}\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</svg>\n\t)\n}\n\n/** Plain ✓ — checkbox ticks, selected badges. */\nexport function Check(props: MarkProps) {\n\treturn <Mark {...props} d=\"M5 12.8l4.7 4.7L19 7.2\" />\n}\n\n/** Plain × — pill and chip clears. */\nexport function Cross(props: MarkProps) {\n\treturn <Mark {...props} d=\"M6 6l12 12M18 6L6 18\" />\n}\n\n/** Plain + — add affordances. Filled cross, 3-unit arms spanning 5–19. */\nexport function Plus(props: MarkProps) {\n\treturn (\n\t\t<Mark\n\t\t\t{...props}\n\t\t\tfilled\n\t\t\td=\"M10.5 5h3v5.5H19v3h-5.5V19h-3v-5.5H5v-3h5.5V5Z\"\n\t\t/>\n\t)\n}\n","import { useTranslation } from \"react-i18next\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n\tconst { t } = useTranslation(\"ui\", { useSuspense: false })\n\treturn (\n\t\t<svg\n\t\t\tdata-slot=\"spinner\"\n\t\t\trole=\"status\"\n\t\t\taria-label={t(\"aria.loading\")}\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tclassName={cn(\"size-4 animate-spin\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<circle\n\t\t\t\tclassName=\"opacity-25\"\n\t\t\t\tcx=\"12\"\n\t\t\t\tcy=\"12\"\n\t\t\t\tr=\"10\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"4\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M22 12a10 10 0 0 0-10-10\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"4\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport { Spinner }\n","import { CheckCircle } from \"@hoardodile/ui/icons/registry\"\nimport { DangerTriangle } from \"@hoardodile/ui/icons/registry\"\nimport { ForbiddenCircle } from \"@hoardodile/ui/icons/registry\"\nimport { InfoCircle } from \"@hoardodile/ui/icons/registry\"\nimport * as React from \"react\"\nimport { Toast as ToastPrimitive } from \"@base-ui/react/toast\"\nimport { useTranslation } from \"react-i18next\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\nimport { Button } from \"@hoardodile/ui/components/button\"\nimport { Cross } from \"@hoardodile/ui/icons/marks\"\nimport { Spinner } from \"@hoardodile/ui/components/spinner\"\n\nconst toast = ToastPrimitive.createToastManager()\n\nfunction ToastProvider({ ...props }: ToastPrimitive.Provider.Props) {\n return <ToastPrimitive.Provider {...props} />\n}\n\nfunction ToastPortal({ ...props }: ToastPrimitive.Portal.Props) {\n return <ToastPrimitive.Portal data-slot=\"toast-portal\" {...props} />\n}\n\nfunction ToastViewport({ className, ...props }: ToastPrimitive.Viewport.Props) {\n return (\n <ToastPrimitive.Viewport\n data-slot=\"toast-viewport\"\n className={cn(\n \"pointer-events-none fixed inset-x-4 bottom-4 z-50 mx-auto w-auto max-w-sm outline-none sm:right-4 sm:left-auto sm:mx-0 sm:w-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction Toast({ className, ...props }: ToastPrimitive.Root.Props) {\n return (\n <ToastPrimitive.Root\n data-slot=\"toast\"\n className={cn(\n \"group/toast pointer-events-auto absolute right-0 bottom-0 z-[calc(1000-var(--toast-index))] w-full origin-bottom rounded-2xl border bg-popover text-popover-foreground shadow-lg will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]\",\n \"h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]\",\n \"after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n \"data-expanded:h-(--toast-height) data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]\",\n \"data-limited:opacity-0 data-starting-style:[transform:translateY(150%)]\",\n \"[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]\",\n \"data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\n \"data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\n \"data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\n \"data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ToastContent({ className, ...props }: ToastPrimitive.Content.Props) {\n return (\n <ToastPrimitive.Content\n data-slot=\"toast-content\"\n className={cn(\n \"flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ToastTitle({ className, ...props }: ToastPrimitive.Title.Props) {\n return (\n <ToastPrimitive.Title\n data-slot=\"toast-title\"\n className={cn(\"text-sm font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction ToastDescription({\n className,\n ...props\n}: ToastPrimitive.Description.Props) {\n return (\n <ToastPrimitive.Description\n data-slot=\"toast-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction ToastAction({\n className,\n render = <Button variant=\"outline\" size=\"sm\" />,\n ...props\n}: ToastPrimitive.Action.Props) {\n return (\n <ToastPrimitive.Action\n data-slot=\"toast-action\"\n render={render}\n className={cn(\"shrink-0\", className)}\n {...props}\n />\n )\n}\n\nfunction ToastClose({\n className,\n children,\n render = <Button variant=\"ghost\" size=\"icon-sm\" />,\n ...props\n}: ToastPrimitive.Close.Props) {\n const { t } = useTranslation(\"ui\", { useSuspense: false })\n return (\n <ToastPrimitive.Close\n data-slot=\"toast-close\"\n aria-label={t(\"aria.closeToast\")}\n render={render}\n className={cn(\n \"relative shrink-0 text-muted-foreground after:absolute after:-inset-2 after:content-[''] hover:text-foreground\",\n className\n )}\n {...props}\n >\n {children ?? (\n <Cross aria-hidden=\"true\" />\n )}\n </ToastPrimitive.Close>\n )\n}\n\nfunction ToastIcon({ type }: { type: string | undefined }) {\n let icon: React.ReactNode = null\n\n if (type === \"success\") {\n icon = (\n <CheckCircle className=\"text-emerald-500\" aria-hidden=\"true\" />\n )\n }\n\n if (type === \"info\") {\n icon = (\n <InfoCircle aria-hidden=\"true\" />\n )\n }\n\n if (type === \"warning\") {\n icon = (\n <DangerTriangle className=\"text-amber-500\" aria-hidden=\"true\" />\n )\n }\n\n if (type === \"error\") {\n icon = (\n <ForbiddenCircle className=\"text-destructive\" aria-hidden=\"true\" />\n )\n }\n\n if (type === \"loading\") {\n icon = (\n <Spinner className=\"size-4\" aria-hidden=\"true\" />\n )\n }\n\n if (!icon) {\n return null\n }\n\n return (\n <span\n data-slot=\"toast-icon\"\n className=\"shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\"\n >\n {icon}\n </span>\n )\n}\n\nfunction ToastList() {\n const { toasts } = ToastPrimitive.useToastManager()\n\n return toasts.map((toastItem) => (\n <Toast key={toastItem.id} toast={toastItem}>\n <ToastContent>\n <ToastIcon type={toastItem.type} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <ToastTitle />\n <ToastDescription />\n </div>\n <ToastAction />\n <ToastClose />\n </ToastContent>\n </Toast>\n ))\n}\n\nfunction Toaster({\n children,\n toastManager = toast,\n ...props\n}: ToastPrimitive.Provider.Props) {\n return (\n <ToastProvider toastManager={toastManager} {...props}>\n {children}\n <ToastPortal>\n <ToastViewport>\n <ToastList />\n </ToastViewport>\n </ToastPortal>\n </ToastProvider>\n )\n}\n\nconst createToastManager = ToastPrimitive.createToastManager\nconst useToastManager = ToastPrimitive.useToastManager\n\nexport {\n Toaster,\n Toast,\n ToastAction,\n ToastClose,\n ToastContent,\n ToastDescription,\n ToastPortal,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n createToastManager,\n toast,\n useToastManager,\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"toast.js"}
@@ -1,27 +1,9 @@
1
+ import { cn } from '../chunk-M5OJN54O.js';
2
+ import '../chunk-2HWSCY4T.js';
1
3
  import { Toggle as Toggle$1 } from '@base-ui/react/toggle';
2
4
  import { cva } from 'class-variance-authority';
3
- import { clsx } from 'clsx';
4
- import { extendTailwindMerge } from 'tailwind-merge';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
7
- var mergeTheme = {
8
- text: ["tiny", "ui", "doc", "doc-title", "doc-heading", "quote"],
9
- spacing: ["chip", "control", "nav", "sidebar", "panel"],
10
- tracking: ["label"],
11
- shadow: ["card", "dialog"],
12
- container: ["reading", "medium", "content"],
13
- font: ["doc", "heading"],
14
- ease: ["standard"],
15
- animate: ["skel", "pop"]
16
- };
17
- var twMerge = extendTailwindMerge({
18
- extend: { theme: mergeTheme }
19
- });
20
-
21
- // src/lib/utils.ts
22
- function cn(...inputs) {
23
- return twMerge(clsx(inputs));
24
- }
25
7
  var toggleVariants = cva(
26
8
  "group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
27
9
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/merge-config.ts","../../src/lib/utils.ts","../../src/components/toggle.tsx"],"names":["TogglePrimitive"],"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;ACEA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,2gBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EACE,sFAAA;AAAA,QACF,EAAA,EAAI,0FAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,GAAG;AACL,CAAA,EAAgE;AAC9D,EAAA,uBACE,GAAA;AAAA,IAACA,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA,GACN;AAEJ","file":"toggle.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","\"use client\"\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\n\nconst toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border border-input bg-transparent shadow-xs hover:bg-muted\",\n },\n size: {\n default:\n \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n sm: \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5\",\n lg: \"h-10 min-w-10 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n"]}
1
+ {"version":3,"sources":["../../src/components/toggle.tsx"],"names":["TogglePrimitive"],"mappings":";;;;;;AAOA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,2gBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EACE,sFAAA;AAAA,QACF,EAAA,EAAI,0FAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,GAAG;AACL,CAAA,EAAgE;AAC9D,EAAA,uBACE,GAAA;AAAA,IAACA,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA,GACN;AAEJ","file":"toggle.js","sourcesContent":["\"use client\"\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\n\nconst toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border border-input bg-transparent shadow-xs hover:bg-muted\",\n },\n size: {\n default:\n \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n sm: \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5\",\n lg: \"h-10 min-w-10 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n"]}
@@ -1,82 +1,5 @@
1
- import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
2
- import { clsx } from 'clsx';
3
- import { extendTailwindMerge } from 'tailwind-merge';
4
- import { jsx, jsxs } from 'react/jsx-runtime';
5
-
6
- // src/components/tooltip.tsx
7
- var mergeTheme = {
8
- text: ["tiny", "ui", "doc", "doc-title", "doc-heading", "quote"],
9
- spacing: ["chip", "control", "nav", "sidebar", "panel"],
10
- tracking: ["label"],
11
- shadow: ["card", "dialog"],
12
- container: ["reading", "medium", "content"],
13
- font: ["doc", "heading"],
14
- ease: ["standard"],
15
- animate: ["skel", "pop"]
16
- };
17
- var twMerge = extendTailwindMerge({
18
- extend: { theme: mergeTheme }
19
- });
20
-
21
- // src/lib/utils.ts
22
- function cn(...inputs) {
23
- return twMerge(clsx(inputs));
24
- }
25
- function TooltipProvider({
26
- delay = 0,
27
- ...props
28
- }) {
29
- return /* @__PURE__ */ jsx(
30
- Tooltip$1.Provider,
31
- {
32
- "data-slot": "tooltip-provider",
33
- delay,
34
- ...props
35
- }
36
- );
37
- }
38
- function Tooltip({ ...props }) {
39
- return /* @__PURE__ */ jsx(Tooltip$1.Root, { "data-slot": "tooltip", ...props });
40
- }
41
- function TooltipTrigger({ ...props }) {
42
- return /* @__PURE__ */ jsx(Tooltip$1.Trigger, { "data-slot": "tooltip-trigger", ...props });
43
- }
44
- function TooltipContent({
45
- className,
46
- side = "top",
47
- sideOffset = 4,
48
- align = "center",
49
- alignOffset = 0,
50
- children,
51
- ...props
52
- }) {
53
- return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
54
- Tooltip$1.Positioner,
55
- {
56
- align,
57
- alignOffset,
58
- side,
59
- sideOffset,
60
- className: "isolate z-50",
61
- children: /* @__PURE__ */ jsxs(
62
- Tooltip$1.Popup,
63
- {
64
- "data-slot": "tooltip-content",
65
- className: cn(
66
- "z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
67
- className
68
- ),
69
- ...props,
70
- children: [
71
- children,
72
- /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })
73
- ]
74
- }
75
- )
76
- }
77
- ) });
78
- }
79
-
80
- export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
1
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../chunk-7JMMFY67.js';
2
+ import '../chunk-M5OJN54O.js';
3
+ import '../chunk-2HWSCY4T.js';
81
4
  //# sourceMappingURL=tooltip.js.map
82
5
  //# sourceMappingURL=tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/merge-config.ts","../../src/lib/utils.ts","../../src/components/tooltip.tsx"],"names":["TooltipPrimitive"],"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;ACDA,SAAS,eAAA,CAAgB;AAAA,EACvB,KAAA,GAAQ,CAAA;AAAA,EACR,GAAG;AACL,CAAA,EAAoC;AAClC,EAAA,uBACE,GAAA;AAAA,IAACA,SAAA,CAAiB,QAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,KAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,OAAA,CAAQ,EAAE,GAAG,KAAA,EAAM,EAAgC;AAC1D,EAAA,2BAAQA,SAAA,CAAiB,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC/D;AAEA,SAAS,cAAA,CAAe,EAAE,GAAG,KAAA,EAAM,EAAmC;AACpE,EAAA,2BAAQA,SAAA,CAAiB,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,UAAA,GAAa,CAAA;AAAA,EACb,KAAA,GAAQ,QAAA;AAAA,EACR,WAAA,GAAc,CAAA;AAAA,EACd,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAIK;AACH,EAAA,uBACE,GAAA,CAACA,SAAA,CAAiB,MAAA,EAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAACA,SAAA,CAAiB,UAAA;AAAA,IAAjB;AAAA,MACC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAU,cAAA;AAAA,MAEV,QAAA,kBAAA,IAAA;AAAA,QAACA,SAAA,CAAiB,KAAA;AAAA,QAAjB;AAAA,UACC,WAAA,EAAU,iBAAA;AAAA,UACV,SAAA,EAAW,EAAA;AAAA,YACT,iwBAAA;AAAA,YACA;AAAA,WACF;AAAA,UACC,GAAG,KAAA;AAAA,UAEH,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,4BACD,GAAA,CAACA,SAAA,CAAiB,KAAA,EAAjB,EAAuB,WAAU,0hBAAA,EAA2hB;AAAA;AAAA;AAAA;AAC/jB;AAAA,GACF,EACF,CAAA;AAEJ","file":"tooltip.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 { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n )\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n side = \"top\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n \"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tooltip.js"}
@@ -1,11 +1,3 @@
1
- import { createContext, useContext } from 'react';
2
-
3
- // src/hooks/use-dialog-footer-actions.ts
4
- var DialogFooterActionsContext = createContext(null);
5
- function useDialogFooterActions() {
6
- return useContext(DialogFooterActionsContext);
7
- }
8
-
9
- export { DialogFooterActionsContext, useDialogFooterActions };
1
+ export { DialogFooterActionsContext, useDialogFooterActions } from '../chunk-6HAIUXNZ.js';
10
2
  //# sourceMappingURL=use-dialog-footer-actions.js.map
11
3
  //# sourceMappingURL=use-dialog-footer-actions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/use-dialog-footer-actions.ts"],"names":[],"mappings":";;;AAcA,IAAM,0BAAA,GACL,cAA+C,IAAI;AAGpD,SAAS,sBAAA,GAA0D;AAClE,EAAA,OAAO,WAAW,0BAA0B,CAAA;AAC7C","file":"use-dialog-footer-actions.js","sourcesContent":["import { createContext, type ReactNode, useContext } from \"react\"\n\n/**\n * Footer action slot plumbing for `AppDialog` — the context shared\n * between the dialog shell (`@hoardodile/ui/components/app-dialog`) and\n * body panels that contribute their primary action through\n * `DialogFooterActions`, so action buttons land in the footer instead of\n * the body.\n */\n\ntype DialogFooterActionsValue = {\n\treadonly setFooterActions: (node: ReactNode | null) => void\n}\n\nconst DialogFooterActionsContext =\n\tcreateContext<DialogFooterActionsValue | null>(null)\n\n/** The nearest dialog's footer action slot, or null outside a dialog. */\nfunction useDialogFooterActions(): DialogFooterActionsValue | null {\n\treturn useContext(DialogFooterActionsContext)\n}\n\nexport { DialogFooterActionsContext, useDialogFooterActions }\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"use-dialog-footer-actions.js"}
@@ -1,36 +1,3 @@
1
- import * as React from 'react';
2
- import { useFormContext, useFormState } from 'react-hook-form';
3
-
4
- // src/hooks/use-form-field.ts
5
- var FormFieldContext = React.createContext(
6
- void 0
7
- );
8
- var FormItemContext = React.createContext(
9
- void 0
10
- );
11
- function useFormField() {
12
- const fieldContext = React.useContext(FormFieldContext);
13
- const itemContext = React.useContext(FormItemContext);
14
- const { getFieldState } = useFormContext();
15
- const formState = useFormState({ name: fieldContext?.name });
16
- if (!fieldContext) {
17
- throw new Error("useFormField should be used within <FormField>");
18
- }
19
- if (!itemContext) {
20
- throw new Error("useFormField should be used within <FormItem>");
21
- }
22
- const fieldState = getFieldState(fieldContext.name, formState);
23
- const { id } = itemContext;
24
- return {
25
- id,
26
- name: fieldContext.name,
27
- formItemId: `${id}-form-item`,
28
- formDescriptionId: `${id}-form-item-description`,
29
- formMessageId: `${id}-form-item-message`,
30
- ...fieldState
31
- };
32
- }
33
-
34
- export { FormFieldContext, FormItemContext, useFormField };
1
+ export { FormFieldContext, FormItemContext, useFormField } from '../chunk-QGTQQNUL.js';
35
2
  //# sourceMappingURL=use-form-field.js.map
36
3
  //# sourceMappingURL=use-form-field.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/use-form-field.ts"],"names":[],"mappings":";;;;AAuBA,IAAM,gBAAA,GAAyB,KAAA,CAAA,aAAA;AAAA,EAC9B;AACD;AAMA,IAAM,eAAA,GAAwB,KAAA,CAAA,aAAA;AAAA,EAC7B;AACD;AAEA,SAAS,YAAA,GAAe;AACvB,EAAA,MAAM,YAAA,GAAqB,iBAAW,gBAAgB,CAAA;AACtD,EAAA,MAAM,WAAA,GAAoB,iBAAW,eAAe,CAAA;AACpD,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,cAAA,EAAe;AACzC,EAAA,MAAM,YAAY,YAAA,CAAa,EAAE,IAAA,EAAM,YAAA,EAAc,MAAM,CAAA;AAE3D,EAAA,IAAI,CAAC,YAAA,EAAc;AAClB,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EACjE;AACA,EAAA,IAAI,CAAC,WAAA,EAAa;AACjB,IAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,EAChE;AAEA,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,YAAA,CAAa,IAAA,EAAM,SAAS,CAAA;AAC7D,EAAA,MAAM,EAAE,IAAG,GAAI,WAAA;AAEf,EAAA,OAAO;AAAA,IACN,EAAA;AAAA,IACA,MAAM,YAAA,CAAa,IAAA;AAAA,IACnB,UAAA,EAAY,GAAG,EAAE,CAAA,UAAA,CAAA;AAAA,IACjB,iBAAA,EAAmB,GAAG,EAAE,CAAA,sBAAA,CAAA;AAAA,IACxB,aAAA,EAAe,GAAG,EAAE,CAAA,kBAAA,CAAA;AAAA,IACpB,GAAG;AAAA,GACJ;AACD","file":"use-form-field.js","sourcesContent":["import * as React from \"react\"\nimport {\n\ttype FieldPath,\n\ttype FieldValues,\n\tuseFormContext,\n\tuseFormState,\n} from \"react-hook-form\"\n\n/**\n * Field-state plumbing shared by the `Form*` components in\n * `@hoardodile/ui/components/form`: connects a `<FormField>` (the\n * react-hook-form `Controller` wrapper) to its `<FormItem>` via two\n * private contexts and exposes the resolved field state — id parts and\n * error — to the label/control/description/message render pieces.\n */\n\ntype FormFieldContextValue<\n\tTFieldValues extends FieldValues = FieldValues,\n\tTName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n\tname: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue | undefined>(\n\tundefined,\n)\n\ntype FormItemContextValue = {\n\tid: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue | undefined>(\n\tundefined,\n)\n\nfunction useFormField() {\n\tconst fieldContext = React.useContext(FormFieldContext)\n\tconst itemContext = React.useContext(FormItemContext)\n\tconst { getFieldState } = useFormContext()\n\tconst formState = useFormState({ name: fieldContext?.name })\n\n\tif (!fieldContext) {\n\t\tthrow new Error(\"useFormField should be used within <FormField>\")\n\t}\n\tif (!itemContext) {\n\t\tthrow new Error(\"useFormField should be used within <FormItem>\")\n\t}\n\n\tconst fieldState = getFieldState(fieldContext.name, formState)\n\tconst { id } = itemContext\n\n\treturn {\n\t\tid,\n\t\tname: fieldContext.name,\n\t\tformItemId: `${id}-form-item`,\n\t\tformDescriptionId: `${id}-form-item-description`,\n\t\tformMessageId: `${id}-form-item-message`,\n\t\t...fieldState,\n\t}\n}\n\nexport { FormFieldContext, FormItemContext, useFormField }\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"use-form-field.js"}
@@ -1,29 +1,4 @@
1
- import { useMedia } from 'react-use';
2
-
3
- // src/viewport.ts
4
- var MOBILE_BREAKPOINT_PX = 768;
5
- var MOBILE_QUERY = `(max-width: ${MOBILE_BREAKPOINT_PX - 1}px)`;
6
- var SIDEBAR_BREAKPOINT_PX = 1150;
7
- var SIDEBAR_QUERY = `(max-width: ${SIDEBAR_BREAKPOINT_PX - 1}px)`;
8
- var PANEL_BREAKPOINT_PX = 1440;
9
- var PANEL_QUERY = `(max-width: ${PANEL_BREAKPOINT_PX - 1}px)`;
10
- function isBelowMd() {
11
- if (typeof window === "undefined") return false;
12
- return window.matchMedia(MOBILE_QUERY).matches;
13
- }
14
- function useBelowMd() {
15
- return useMedia(MOBILE_QUERY, false);
16
- }
17
- function useBelowSidebar() {
18
- return useMedia(SIDEBAR_QUERY, false);
19
- }
20
- function useBelowPanel() {
21
- return useMedia(PANEL_QUERY, false);
22
- }
23
- function useIsMobile() {
24
- return useBelowMd();
25
- }
26
-
27
- export { isBelowMd, useBelowMd, useBelowPanel, useBelowSidebar, useIsMobile };
1
+ export { isBelowMd, useBelowMd, useBelowPanel, useBelowSidebar, useIsMobile } from '../chunk-QGMDWGJT.js';
2
+ import '../chunk-KNPRUZ4H.js';
28
3
  //# sourceMappingURL=use-mobile.js.map
29
4
  //# sourceMappingURL=use-mobile.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/viewport.ts","../../src/hooks/use-mobile.ts"],"names":[],"mappings":";;;AAeO,IAAM,oBAAA,GAAuB,GAAA;AAgB7B,IAAM,YAAA,GAAe,CAAA,YAAA,EAAe,oBAAA,GAAuB,CAAC,CAAA,GAAA,CAAA;AAW5D,IAAM,qBAAA,GAAwB,IAAA;AAQ9B,IAAM,aAAA,GAAgB,CAAA,YAAA,EAAe,qBAAA,GAAwB,CAAC,CAAA,GAAA,CAAA;AAW9D,IAAM,mBAAA,GAAsB,IAAA;AAO5B,IAAM,WAAA,GAAc,CAAA,YAAA,EAAe,mBAAA,GAAsB,CAAC,CAAA,GAAA,CAAA;ACtD1D,SAAS,SAAA,GAAqB;AACpC,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,KAAA;AAC1C,EAAA,OAAO,MAAA,CAAO,UAAA,CAAW,YAAY,CAAA,CAAE,OAAA;AACxC;AAEO,SAAS,UAAA,GAAsB;AACrC,EAAA,OAAO,QAAA,CAAS,cAAc,KAAK,CAAA;AACpC;AASO,SAAS,eAAA,GAA2B;AAC1C,EAAA,OAAO,QAAA,CAAS,eAAe,KAAK,CAAA;AACrC;AAQO,SAAS,aAAA,GAAyB;AACxC,EAAA,OAAO,QAAA,CAAS,aAAa,KAAK,CAAA;AACnC;AASO,SAAS,WAAA,GAAuB;AACtC,EAAA,OAAO,UAAA,EAAW;AACnB","file":"use-mobile.js","sourcesContent":["/**\n * Mobile viewport initial-scale factor used across the app shell and\n * plugin iframe previews. Kept in one place so it can be changed\n * without hunting through HTML templates and CSS rules.\n */\nexport const MOBILE_INITIAL_SCALE = 0.8\n\n/**\n * Width in pixels at which the app switches from below-md to md+ layouts.\n *\n * This value is intentionally aligned with Tailwind's `md` breakpoint\n * (768 px) so that JS detection and CSS responsive prefixes stay in sync.\n * Components that need to know whether they are in the \"below md\" viewport\n * should use {@link isBelowMd} or {@link useBelowMd} from @hoardodile/ui/hooks/use-mobile.\n */\nexport const MOBILE_BREAKPOINT_PX = 768\n\n/**\n * Same breakpoint expressed in rems, matching Tailwind's default theme\n * (`--breakpoint-md: 48rem`). Useful for CSS media queries and comments.\n */\nexport const MOBILE_BREAKPOINT_REM = MOBILE_BREAKPOINT_PX / 16\n\n/**\n * Media query string that matches viewports below the `md` breakpoint\n * (< 768 px). Shared between JS hooks and anywhere else that needs to detect\n * a below-md viewport.\n *\n * Keep this in sync with the CSS/Tailwind breakpoint so JS and CSS never\n * disagree about the viewport size.\n */\nexport const MOBILE_QUERY = `(max-width: ${MOBILE_BREAKPOINT_PX - 1}px)`\n\n/**\n * Width in pixels at which the app switches from a drawer to a fixed left\n * sidebar (the \"app shell\"). Raised above `md` so mid-size viewports keep\n * the whole width for their content column — below this the sidebar hides\n * behind the hamburger drawer.\n *\n * Use the CSS `sidebar:` / `max-sidebar:` variants (`--breakpoint-sidebar`)\n * at call sites — this value is the single source of truth for both.\n */\nexport const SIDEBAR_BREAKPOINT_PX = 1150\n\n/**\n * Media query string that matches viewports below the sidebar breakpoint\n * (`max-sidebar`), i.e. where the shell shows the drawer instead of the fixed\n * sidebar. Shared between JS hooks and anywhere else that needs the\n * below-sidebar viewport.\n */\nexport const SIDEBAR_QUERY = `(max-width: ${SIDEBAR_BREAKPOINT_PX - 1}px)`\n\n/**\n * Width in pixels at which the right filter rail switches from a fixed\n * column to a drawer (DESIGN.md — Layout: \"the panel becomes an\n * overlay below 1440px\"). Below this the sidebar + panel + content no\n * longer fit comfortably, so the rail hides behind a Filters button.\n *\n * Use the CSS `panel:` / `max-panel:` variants (`--breakpoint-panel`)\n * at call sites — this value is the single source of truth for both.\n */\nexport const PANEL_BREAKPOINT_PX = 1440\n\n/**\n * Media query string that matches viewports below the panel breakpoint\n * (< 1440 px), i.e. where the filter rail lives in a drawer. Shared\n * between JS hooks and anywhere else that needs the below-panel viewport.\n */\nexport const PANEL_QUERY = `(max-width: ${PANEL_BREAKPOINT_PX - 1}px)`\n","import {\n\tMOBILE_QUERY,\n\tPANEL_QUERY,\n\tSIDEBAR_QUERY,\n} from \"@hoardodile/ui/viewport\"\nimport { useMedia } from \"react-use\"\n\n/**\n * One-shot check for viewports below the `md` breakpoint (< 768 px).\n *\n * Prefer {@link useBelowMd} in React components so they re-render when the\n * viewport crosses the breakpoint. Use this helper only in event handlers,\n * utility functions, or effects where a reactive hook is not appropriate.\n */\nexport function isBelowMd(): boolean {\n\tif (typeof window === \"undefined\") return false\n\treturn window.matchMedia(MOBILE_QUERY).matches\n}\n\nexport function useBelowMd(): boolean {\n\treturn useMedia(MOBILE_QUERY, false)\n}\n\n/**\n * Reactive check for viewports below the app-shell sidebar breakpoint\n * (`max-sidebar`), where the fixed sidebar is replaced by the hamburger\n * drawer. Keep in sync with `SIDEBAR_BREAKPOINT_PX` and the\n * `sidebar:` / `max-sidebar:` CSS variants. The shell alone decides its own chrome;\n * compact-UI consumers keep using {@link useBelowMd}.\n */\nexport function useBelowSidebar(): boolean {\n\treturn useMedia(SIDEBAR_QUERY, false)\n}\n\n/**\n * Reactive check for viewports below the filter-rail breakpoint\n * (< 1440 px), where the rail becomes a drawer instead of a fixed right\n * column. Keep in sync with `PANEL_BREAKPOINT_PX` and the\n * `panel:` / `max-panel:` CSS variants.\n */\nexport function useBelowPanel(): boolean {\n\treturn useMedia(PANEL_QUERY, false)\n}\n\n/**\n * Compatibility alias for official shadcn-generated components (e.g.\n * `sidebar.tsx`), which import `useIsMobile` from this module. Mobile\n * detection rules are owned by THIS file for the whole repo (apps and\n * plugins alike) — never let the registry version of `use-mobile.ts`\n * replace it; restore after every `shadcn add`.\n */\nexport function useIsMobile(): boolean {\n\treturn useBelowMd()\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"use-mobile.js"}