@bergetai/ui 0.14.2 → 0.16.0

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 (660) hide show
  1. package/README.md +32 -46
  2. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  3. package/dist/components/alert/Alert.cjs +31 -0
  4. package/dist/components/alert/Alert.cjs.map +1 -0
  5. package/dist/components/alert/Alert.d.cts +14 -0
  6. package/dist/components/alert/Alert.d.cts.map +1 -0
  7. package/dist/components/alert/Alert.d.mts +14 -0
  8. package/dist/components/alert/Alert.d.mts.map +1 -0
  9. package/dist/components/alert/Alert.mjs +27 -0
  10. package/dist/components/alert/Alert.mjs.map +1 -0
  11. package/dist/components/alert/index.d.cts +3 -0
  12. package/dist/components/alert/index.d.mts +3 -0
  13. package/dist/components/alert-dialog/AlertDialog.cjs +95 -0
  14. package/dist/components/alert-dialog/AlertDialog.cjs.map +1 -0
  15. package/dist/components/alert-dialog/AlertDialog.d.cts +46 -0
  16. package/dist/components/alert-dialog/AlertDialog.d.cts.map +1 -0
  17. package/dist/components/alert-dialog/AlertDialog.d.mts +46 -0
  18. package/dist/components/alert-dialog/AlertDialog.d.mts.map +1 -0
  19. package/dist/components/alert-dialog/AlertDialog.mjs +83 -0
  20. package/dist/components/alert-dialog/AlertDialog.mjs.map +1 -0
  21. package/dist/components/alert-dialog/index.d.cts +2 -0
  22. package/dist/components/alert-dialog/index.d.mts +2 -0
  23. package/dist/components/badge/Badge.cjs +57 -0
  24. package/dist/components/badge/Badge.cjs.map +1 -0
  25. package/dist/components/badge/Badge.d.cts +16 -0
  26. package/dist/components/badge/Badge.d.cts.map +1 -0
  27. package/dist/components/badge/Badge.d.mts +16 -0
  28. package/dist/components/badge/Badge.d.mts.map +1 -0
  29. package/dist/components/badge/Badge.mjs +55 -0
  30. package/dist/components/badge/Badge.mjs.map +1 -0
  31. package/dist/components/badge/index.d.cts +2 -0
  32. package/dist/components/badge/index.d.mts +2 -0
  33. package/dist/components/berget-logo/BergetLogo.cjs +87 -0
  34. package/dist/components/berget-logo/BergetLogo.cjs.map +1 -0
  35. package/dist/components/berget-logo/BergetLogo.d.cts +14 -0
  36. package/dist/components/berget-logo/BergetLogo.d.cts.map +1 -0
  37. package/dist/components/berget-logo/BergetLogo.d.mts +14 -0
  38. package/dist/components/berget-logo/BergetLogo.d.mts.map +1 -0
  39. package/dist/components/berget-logo/BergetLogo.mjs +85 -0
  40. package/dist/components/berget-logo/BergetLogo.mjs.map +1 -0
  41. package/dist/components/berget-logo/index.d.cts +2 -0
  42. package/dist/components/berget-logo/index.d.mts +2 -0
  43. package/dist/components/box/Box.cjs +67 -0
  44. package/dist/components/box/Box.cjs.map +1 -0
  45. package/dist/components/box/Box.d.cts +21 -0
  46. package/dist/components/box/Box.d.cts.map +1 -0
  47. package/dist/components/box/Box.d.mts +21 -0
  48. package/dist/components/box/Box.d.mts.map +1 -0
  49. package/dist/components/box/Box.mjs +64 -0
  50. package/dist/components/box/Box.mjs.map +1 -0
  51. package/dist/components/box/index.d.cts +2 -0
  52. package/dist/components/box/index.d.mts +2 -0
  53. package/dist/components/bubble/index.d.cts +2 -0
  54. package/dist/components/bubble/index.d.mts +2 -0
  55. package/dist/components/button/Button.cjs +75 -0
  56. package/dist/components/button/Button.cjs.map +1 -0
  57. package/dist/components/button/Button.d.cts +19 -0
  58. package/dist/components/button/Button.d.cts.map +1 -0
  59. package/dist/components/button/Button.d.mts +19 -0
  60. package/dist/components/button/Button.d.mts.map +1 -0
  61. package/dist/components/button/Button.mjs +74 -0
  62. package/dist/components/button/Button.mjs.map +1 -0
  63. package/dist/components/button/index.d.cts +3 -0
  64. package/dist/components/button/index.d.mts +3 -0
  65. package/dist/components/card/Card.cjs +36 -0
  66. package/dist/components/card/Card.cjs.map +1 -0
  67. package/dist/components/card/Card.d.cts +15 -0
  68. package/dist/components/card/Card.d.cts.map +1 -0
  69. package/dist/components/card/Card.d.mts +15 -0
  70. package/dist/components/card/Card.d.mts.map +1 -0
  71. package/dist/components/card/Card.mjs +28 -0
  72. package/dist/components/card/Card.mjs.map +1 -0
  73. package/dist/components/card/index.d.cts +3 -0
  74. package/dist/components/card/index.d.mts +3 -0
  75. package/dist/components/checkbox/Checkbox.cjs +87 -0
  76. package/dist/components/checkbox/Checkbox.cjs.map +1 -0
  77. package/dist/components/checkbox/Checkbox.d.cts +18 -0
  78. package/dist/components/checkbox/Checkbox.d.cts.map +1 -0
  79. package/dist/components/checkbox/Checkbox.d.mts +18 -0
  80. package/dist/components/checkbox/Checkbox.d.mts.map +1 -0
  81. package/dist/components/checkbox/Checkbox.mjs +84 -0
  82. package/dist/components/checkbox/Checkbox.mjs.map +1 -0
  83. package/dist/components/checkbox/index.d.cts +2 -0
  84. package/dist/components/checkbox/index.d.mts +2 -0
  85. package/dist/components/code-block/CodeBlock.cjs +58 -0
  86. package/dist/components/code-block/CodeBlock.cjs.map +1 -0
  87. package/dist/components/code-block/CodeBlock.d.cts +10 -0
  88. package/dist/components/code-block/CodeBlock.d.cts.map +1 -0
  89. package/dist/components/code-block/CodeBlock.d.mts +10 -0
  90. package/dist/components/code-block/CodeBlock.d.mts.map +1 -0
  91. package/dist/components/code-block/CodeBlock.mjs +58 -0
  92. package/dist/components/code-block/CodeBlock.mjs.map +1 -0
  93. package/dist/components/container/Container.cjs +50 -0
  94. package/dist/components/container/Container.cjs.map +1 -0
  95. package/dist/components/container/Container.d.cts +17 -0
  96. package/dist/components/container/Container.d.cts.map +1 -0
  97. package/dist/components/container/Container.d.mts +17 -0
  98. package/dist/components/container/Container.d.mts.map +1 -0
  99. package/dist/components/container/Container.mjs +47 -0
  100. package/dist/components/container/Container.mjs.map +1 -0
  101. package/dist/components/container/index.d.cts +2 -0
  102. package/dist/components/container/index.d.mts +2 -0
  103. package/dist/components/country-select/CountrySelect.cjs +95 -0
  104. package/dist/components/country-select/CountrySelect.cjs.map +1 -0
  105. package/dist/components/country-select/CountrySelect.d.cts +16 -0
  106. package/dist/components/country-select/CountrySelect.d.cts.map +1 -0
  107. package/dist/components/country-select/CountrySelect.d.mts +16 -0
  108. package/dist/components/country-select/CountrySelect.d.mts.map +1 -0
  109. package/dist/components/country-select/CountrySelect.mjs +93 -0
  110. package/dist/components/country-select/CountrySelect.mjs.map +1 -0
  111. package/dist/components/country-select/countries.cjs +409 -0
  112. package/dist/components/country-select/countries.cjs.map +1 -0
  113. package/dist/components/country-select/countries.d.cts +17 -0
  114. package/dist/components/country-select/countries.d.cts.map +1 -0
  115. package/dist/components/country-select/countries.d.mts +17 -0
  116. package/dist/components/country-select/countries.d.mts.map +1 -0
  117. package/dist/components/country-select/countries.mjs +405 -0
  118. package/dist/components/country-select/countries.mjs.map +1 -0
  119. package/dist/components/country-select/index.d.cts +3 -0
  120. package/dist/components/country-select/index.d.mts +3 -0
  121. package/dist/components/dialog/Dialog.cjs +85 -0
  122. package/dist/components/dialog/Dialog.cjs.map +1 -0
  123. package/dist/components/dialog/Dialog.d.cts +35 -0
  124. package/dist/components/dialog/Dialog.d.cts.map +1 -0
  125. package/dist/components/dialog/Dialog.d.mts +35 -0
  126. package/dist/components/dialog/Dialog.d.mts.map +1 -0
  127. package/dist/components/dialog/Dialog.mjs +74 -0
  128. package/dist/components/dialog/Dialog.mjs.map +1 -0
  129. package/dist/components/dialog/index.d.cts +2 -0
  130. package/dist/components/dialog/index.d.mts +2 -0
  131. package/dist/components/divider/Divider.cjs +72 -0
  132. package/dist/components/divider/Divider.cjs.map +1 -0
  133. package/dist/components/divider/Divider.mjs +70 -0
  134. package/dist/components/divider/Divider.mjs.map +1 -0
  135. package/dist/components/dropdown-menu/DropdownMenu.cjs +101 -0
  136. package/dist/components/dropdown-menu/DropdownMenu.cjs.map +1 -0
  137. package/dist/components/dropdown-menu/DropdownMenu.d.cts +62 -0
  138. package/dist/components/dropdown-menu/DropdownMenu.d.cts.map +1 -0
  139. package/dist/components/dropdown-menu/DropdownMenu.d.mts +62 -0
  140. package/dist/components/dropdown-menu/DropdownMenu.d.mts.map +1 -0
  141. package/dist/components/dropdown-menu/DropdownMenu.mjs +85 -0
  142. package/dist/components/dropdown-menu/DropdownMenu.mjs.map +1 -0
  143. package/dist/components/dropdown-menu/index.d.cts +3 -0
  144. package/dist/components/dropdown-menu/index.d.mts +3 -0
  145. package/dist/components/empty/Empty.cjs +51 -0
  146. package/dist/components/empty/Empty.cjs.map +1 -0
  147. package/dist/components/empty/Empty.d.cts +17 -0
  148. package/dist/components/empty/Empty.d.cts.map +1 -0
  149. package/dist/components/empty/Empty.d.mts +17 -0
  150. package/dist/components/empty/Empty.d.mts.map +1 -0
  151. package/dist/components/empty/Empty.mjs +44 -0
  152. package/dist/components/empty/Empty.mjs.map +1 -0
  153. package/dist/components/empty/index.d.cts +3 -0
  154. package/dist/components/empty/index.d.mts +3 -0
  155. package/dist/components/field/index.d.cts +2 -0
  156. package/dist/components/field/index.d.mts +2 -0
  157. package/dist/components/fog-illustration/FogIllustration.cjs +342 -0
  158. package/dist/components/fog-illustration/FogIllustration.cjs.map +1 -0
  159. package/dist/components/fog-illustration/FogIllustration.d.cts +35 -0
  160. package/dist/components/fog-illustration/FogIllustration.d.cts.map +1 -0
  161. package/dist/components/fog-illustration/FogIllustration.d.mts +35 -0
  162. package/dist/components/fog-illustration/FogIllustration.d.mts.map +1 -0
  163. package/dist/components/fog-illustration/FogIllustration.mjs +341 -0
  164. package/dist/components/fog-illustration/FogIllustration.mjs.map +1 -0
  165. package/dist/components/grid/Grid.cjs +51 -0
  166. package/dist/components/grid/Grid.cjs.map +1 -0
  167. package/dist/components/grid/Grid.d.cts +25 -0
  168. package/dist/components/grid/Grid.d.cts.map +1 -0
  169. package/dist/components/grid/Grid.d.mts +25 -0
  170. package/dist/components/grid/Grid.d.mts.map +1 -0
  171. package/dist/components/grid/Grid.mjs +48 -0
  172. package/dist/components/grid/Grid.mjs.map +1 -0
  173. package/dist/components/grid/index.d.cts +2 -0
  174. package/dist/components/grid/index.d.mts +2 -0
  175. package/dist/components/icon/Icon.cjs +30 -0
  176. package/dist/components/icon/Icon.cjs.map +1 -0
  177. package/dist/components/icon/Icon.d.cts +14 -0
  178. package/dist/components/icon/Icon.d.cts.map +1 -0
  179. package/dist/components/icon/Icon.d.mts +14 -0
  180. package/dist/components/icon/Icon.d.mts.map +1 -0
  181. package/dist/components/icon/Icon.mjs +28 -0
  182. package/dist/components/icon/Icon.mjs.map +1 -0
  183. package/dist/components/icon/index.d.cts +2 -0
  184. package/dist/components/icon/index.d.mts +2 -0
  185. package/dist/components/input/index.d.cts +2 -0
  186. package/dist/components/input/index.d.mts +2 -0
  187. package/dist/components/input-group/InputGroup.cjs +41 -0
  188. package/dist/components/input-group/InputGroup.cjs.map +1 -0
  189. package/dist/components/input-group/InputGroup.d.cts +33 -0
  190. package/dist/components/input-group/InputGroup.d.cts.map +1 -0
  191. package/dist/components/input-group/InputGroup.d.mts +33 -0
  192. package/dist/components/input-group/InputGroup.d.mts.map +1 -0
  193. package/dist/components/input-group/InputGroup.mjs +36 -0
  194. package/dist/components/input-group/InputGroup.mjs.map +1 -0
  195. package/dist/components/input-group/index.d.cts +3 -0
  196. package/dist/components/input-group/index.d.mts +3 -0
  197. package/dist/components/item/Item.cjs +65 -0
  198. package/dist/components/item/Item.cjs.map +1 -0
  199. package/dist/components/item/Item.d.cts +24 -0
  200. package/dist/components/item/Item.d.cts.map +1 -0
  201. package/dist/components/item/Item.d.mts +24 -0
  202. package/dist/components/item/Item.d.mts.map +1 -0
  203. package/dist/components/item/Item.mjs +54 -0
  204. package/dist/components/item/Item.mjs.map +1 -0
  205. package/dist/components/item/index.d.cts +3 -0
  206. package/dist/components/item/index.d.mts +3 -0
  207. package/dist/components/label/index.d.cts +2 -0
  208. package/dist/components/label/index.d.mts +2 -0
  209. package/dist/components/language-select/LanguageSelect.cjs +48 -0
  210. package/dist/components/language-select/LanguageSelect.cjs.map +1 -0
  211. package/dist/components/language-select/LanguageSelect.d.cts +17 -0
  212. package/dist/components/language-select/LanguageSelect.d.cts.map +1 -0
  213. package/dist/components/language-select/LanguageSelect.d.mts +17 -0
  214. package/dist/components/language-select/LanguageSelect.d.mts.map +1 -0
  215. package/dist/components/language-select/LanguageSelect.mjs +46 -0
  216. package/dist/components/language-select/LanguageSelect.mjs.map +1 -0
  217. package/dist/components/language-select/index.d.cts +2 -0
  218. package/dist/components/language-select/index.d.mts +2 -0
  219. package/dist/components/link/Link.cjs +71 -0
  220. package/dist/components/link/Link.cjs.map +1 -0
  221. package/dist/components/link/Link.d.cts +18 -0
  222. package/dist/components/link/Link.d.cts.map +1 -0
  223. package/dist/components/link/Link.d.mts +18 -0
  224. package/dist/components/link/Link.d.mts.map +1 -0
  225. package/dist/components/link/Link.mjs +68 -0
  226. package/dist/components/link/Link.mjs.map +1 -0
  227. package/dist/components/link/index.d.cts +2 -0
  228. package/dist/components/link/index.d.mts +2 -0
  229. package/dist/components/list/List.cjs +71 -0
  230. package/dist/components/list/List.cjs.map +1 -0
  231. package/dist/components/list/List.d.cts +24 -0
  232. package/dist/components/list/List.d.cts.map +1 -0
  233. package/dist/components/list/List.d.mts +24 -0
  234. package/dist/components/list/List.d.mts.map +1 -0
  235. package/dist/components/list/List.mjs +66 -0
  236. package/dist/components/list/List.mjs.map +1 -0
  237. package/dist/components/list/index.d.cts +2 -0
  238. package/dist/components/list/index.d.mts +2 -0
  239. package/dist/components/message/index.d.cts +2 -0
  240. package/dist/components/message/index.d.mts +2 -0
  241. package/dist/components/message-scroller/index.d.cts +2 -0
  242. package/dist/components/message-scroller/index.d.mts +2 -0
  243. package/dist/components/model-card/ModelCard.cjs +108 -0
  244. package/dist/components/model-card/ModelCard.cjs.map +1 -0
  245. package/dist/components/model-card/ModelCard.d.cts +58 -0
  246. package/dist/components/model-card/ModelCard.d.cts.map +1 -0
  247. package/dist/components/model-card/ModelCard.d.mts +58 -0
  248. package/dist/components/model-card/ModelCard.d.mts.map +1 -0
  249. package/dist/components/model-card/ModelCard.mjs +106 -0
  250. package/dist/components/model-card/ModelCard.mjs.map +1 -0
  251. package/dist/components/model-card/index.d.cts +3 -0
  252. package/dist/components/model-card/index.d.mts +3 -0
  253. package/dist/components/model-logo/ModelLogo.cjs +98 -0
  254. package/dist/components/model-logo/ModelLogo.cjs.map +1 -0
  255. package/dist/components/model-logo/ModelLogo.d.cts +32 -0
  256. package/dist/components/model-logo/ModelLogo.d.cts.map +1 -0
  257. package/dist/components/model-logo/ModelLogo.d.mts +32 -0
  258. package/dist/components/model-logo/ModelLogo.d.mts.map +1 -0
  259. package/dist/components/model-logo/ModelLogo.mjs +95 -0
  260. package/dist/components/model-logo/ModelLogo.mjs.map +1 -0
  261. package/dist/components/model-logo/index.d.cts +2 -0
  262. package/dist/components/model-logo/index.d.mts +2 -0
  263. package/dist/components/navigation-menu/NavigationMenu.cjs +65 -0
  264. package/dist/components/navigation-menu/NavigationMenu.cjs.map +1 -0
  265. package/dist/components/navigation-menu/NavigationMenu.d.cts +11 -0
  266. package/dist/components/navigation-menu/NavigationMenu.d.cts.map +1 -0
  267. package/dist/components/navigation-menu/NavigationMenu.d.mts +11 -0
  268. package/dist/components/navigation-menu/NavigationMenu.d.mts.map +1 -0
  269. package/dist/components/navigation-menu/NavigationMenu.mjs +57 -0
  270. package/dist/components/navigation-menu/NavigationMenu.mjs.map +1 -0
  271. package/dist/components/navigation-menu/index.d.cts +3 -0
  272. package/dist/components/navigation-menu/index.d.mts +3 -0
  273. package/dist/components/neural-flow/NeuralFlow.cjs +1038 -0
  274. package/dist/components/neural-flow/NeuralFlow.cjs.map +1 -0
  275. package/dist/components/neural-flow/NeuralFlow.d.cts +47 -0
  276. package/dist/components/neural-flow/NeuralFlow.d.cts.map +1 -0
  277. package/dist/components/neural-flow/NeuralFlow.d.mts +47 -0
  278. package/dist/components/neural-flow/NeuralFlow.d.mts.map +1 -0
  279. package/dist/components/neural-flow/NeuralFlow.mjs +1032 -0
  280. package/dist/components/neural-flow/NeuralFlow.mjs.map +1 -0
  281. package/dist/components/neural-flow/index.d.cts +2 -0
  282. package/dist/components/neural-flow/index.d.mts +2 -0
  283. package/dist/components/neural-flow/mnist-samples.cjs +73 -0
  284. package/dist/components/neural-flow/mnist-samples.cjs.map +1 -0
  285. package/dist/components/neural-flow/mnist-samples.mjs +73 -0
  286. package/dist/components/neural-flow/mnist-samples.mjs.map +1 -0
  287. package/dist/components/neural-flow/sparse-weights.cjs +21 -0
  288. package/dist/components/neural-flow/sparse-weights.cjs.map +1 -0
  289. package/dist/components/neural-flow/sparse-weights.mjs +21 -0
  290. package/dist/components/neural-flow/sparse-weights.mjs.map +1 -0
  291. package/dist/components/progress/Progress.cjs +25 -0
  292. package/dist/components/progress/Progress.cjs.map +1 -0
  293. package/dist/components/progress/Progress.d.cts +8 -0
  294. package/dist/components/progress/Progress.d.cts.map +1 -0
  295. package/dist/components/progress/Progress.d.mts +8 -0
  296. package/dist/components/progress/Progress.d.mts.map +1 -0
  297. package/dist/components/progress/Progress.mjs +19 -0
  298. package/dist/components/progress/Progress.mjs.map +1 -0
  299. package/dist/components/progress/index.d.cts +3 -0
  300. package/dist/components/progress/index.d.mts +3 -0
  301. package/dist/components/search-input/SearchInput.cjs +28 -0
  302. package/dist/components/search-input/SearchInput.cjs.map +1 -0
  303. package/dist/components/search-input/SearchInput.d.cts +10 -0
  304. package/dist/components/search-input/SearchInput.d.cts.map +1 -0
  305. package/dist/components/search-input/SearchInput.d.mts +10 -0
  306. package/dist/components/search-input/SearchInput.d.mts.map +1 -0
  307. package/dist/components/search-input/SearchInput.mjs +26 -0
  308. package/dist/components/search-input/SearchInput.mjs.map +1 -0
  309. package/dist/components/search-input/index.d.cts +2 -0
  310. package/dist/components/search-input/index.d.mts +2 -0
  311. package/dist/components/select/index.d.cts +2 -0
  312. package/dist/components/select/index.d.mts +2 -0
  313. package/dist/components/sidebar/Sidebar.cjs +203 -0
  314. package/dist/components/sidebar/Sidebar.cjs.map +1 -0
  315. package/dist/components/sidebar/Sidebar.d.cts +69 -0
  316. package/dist/components/sidebar/Sidebar.d.cts.map +1 -0
  317. package/dist/components/sidebar/Sidebar.d.mts +69 -0
  318. package/dist/components/sidebar/Sidebar.d.mts.map +1 -0
  319. package/dist/components/sidebar/Sidebar.mjs +150 -0
  320. package/dist/components/sidebar/Sidebar.mjs.map +1 -0
  321. package/dist/components/sidebar/index.d.cts +3 -0
  322. package/dist/components/sidebar/index.d.mts +3 -0
  323. package/dist/components/skeleton/Skeleton.cjs +20 -0
  324. package/dist/components/skeleton/Skeleton.cjs.map +1 -0
  325. package/dist/components/skeleton/Skeleton.d.cts +7 -0
  326. package/dist/components/skeleton/Skeleton.d.cts.map +1 -0
  327. package/dist/components/skeleton/Skeleton.d.mts +7 -0
  328. package/dist/components/skeleton/Skeleton.d.mts.map +1 -0
  329. package/dist/components/skeleton/Skeleton.mjs +18 -0
  330. package/dist/components/skeleton/Skeleton.mjs.map +1 -0
  331. package/dist/components/skeleton/index.d.cts +2 -0
  332. package/dist/components/skeleton/index.d.mts +2 -0
  333. package/dist/components/slider/Slider.cjs +23 -0
  334. package/dist/components/slider/Slider.cjs.map +1 -0
  335. package/dist/components/slider/Slider.d.cts +20 -0
  336. package/dist/components/slider/Slider.d.cts.map +1 -0
  337. package/dist/components/slider/Slider.d.mts +20 -0
  338. package/dist/components/slider/Slider.d.mts.map +1 -0
  339. package/dist/components/slider/Slider.mjs +23 -0
  340. package/dist/components/slider/Slider.mjs.map +1 -0
  341. package/dist/components/slider/index.d.cts +2 -0
  342. package/dist/components/slider/index.d.mts +2 -0
  343. package/dist/components/switch/Switch.cjs +85 -0
  344. package/dist/components/switch/Switch.cjs.map +1 -0
  345. package/dist/components/switch/Switch.d.cts +21 -0
  346. package/dist/components/switch/Switch.d.cts.map +1 -0
  347. package/dist/components/switch/Switch.d.mts +21 -0
  348. package/dist/components/switch/Switch.d.mts.map +1 -0
  349. package/dist/components/switch/Switch.mjs +81 -0
  350. package/dist/components/switch/Switch.mjs.map +1 -0
  351. package/dist/components/switch/index.d.cts +2 -0
  352. package/dist/components/switch/index.d.mts +2 -0
  353. package/dist/components/table/Table.cjs +67 -0
  354. package/dist/components/table/Table.cjs.map +1 -0
  355. package/dist/components/table/Table.d.cts +13 -0
  356. package/dist/components/table/Table.d.cts.map +1 -0
  357. package/dist/components/table/Table.d.mts +13 -0
  358. package/dist/components/table/Table.d.mts.map +1 -0
  359. package/dist/components/table/Table.mjs +58 -0
  360. package/dist/components/table/Table.mjs.map +1 -0
  361. package/dist/components/table/index.d.cts +2 -0
  362. package/dist/components/table/index.d.mts +2 -0
  363. package/dist/components/text-area/index.d.cts +2 -0
  364. package/dist/components/text-area/index.d.mts +2 -0
  365. package/dist/components/theme-provider/ThemeProvider.cjs +81 -0
  366. package/dist/components/theme-provider/ThemeProvider.cjs.map +1 -0
  367. package/dist/components/theme-provider/ThemeProvider.d.cts +21 -0
  368. package/dist/components/theme-provider/ThemeProvider.d.cts.map +1 -0
  369. package/dist/components/theme-provider/ThemeProvider.d.mts +21 -0
  370. package/dist/components/theme-provider/ThemeProvider.d.mts.map +1 -0
  371. package/dist/components/theme-provider/ThemeProvider.mjs +78 -0
  372. package/dist/components/theme-provider/ThemeProvider.mjs.map +1 -0
  373. package/dist/components/theme-provider/ThemeToggle.cjs +56 -0
  374. package/dist/components/theme-provider/ThemeToggle.cjs.map +1 -0
  375. package/dist/components/theme-provider/ThemeToggle.d.cts +12 -0
  376. package/dist/components/theme-provider/ThemeToggle.d.cts.map +1 -0
  377. package/dist/components/theme-provider/ThemeToggle.d.mts +12 -0
  378. package/dist/components/theme-provider/ThemeToggle.d.mts.map +1 -0
  379. package/dist/components/theme-provider/ThemeToggle.mjs +54 -0
  380. package/dist/components/theme-provider/ThemeToggle.mjs.map +1 -0
  381. package/dist/components/theme-provider/index.d.cts +3 -0
  382. package/dist/components/theme-provider/index.d.mts +3 -0
  383. package/dist/components/tooltip/Tooltip.cjs +28 -0
  384. package/dist/components/tooltip/Tooltip.cjs.map +1 -0
  385. package/dist/components/tooltip/Tooltip.d.cts +14 -0
  386. package/dist/components/tooltip/Tooltip.d.cts.map +1 -0
  387. package/dist/components/tooltip/Tooltip.d.mts +14 -0
  388. package/dist/components/tooltip/Tooltip.d.mts.map +1 -0
  389. package/dist/components/tooltip/Tooltip.mjs +23 -0
  390. package/dist/components/tooltip/Tooltip.mjs.map +1 -0
  391. package/dist/components/tooltip/index.d.cts +3 -0
  392. package/dist/components/tooltip/index.d.mts +3 -0
  393. package/dist/components/typography/Typography.cjs +69 -0
  394. package/dist/components/typography/Typography.cjs.map +1 -0
  395. package/dist/components/typography/Typography.d.cts +14 -0
  396. package/dist/components/typography/Typography.d.cts.map +1 -0
  397. package/dist/components/typography/Typography.d.mts +14 -0
  398. package/dist/components/typography/Typography.d.mts.map +1 -0
  399. package/dist/components/typography/Typography.mjs +67 -0
  400. package/dist/components/typography/Typography.mjs.map +1 -0
  401. package/dist/components/typography/index.d.cts +2 -0
  402. package/dist/components/typography/index.d.mts +2 -0
  403. package/dist/components/window-frame/WindowFrame.cjs +47 -0
  404. package/dist/components/window-frame/WindowFrame.cjs.map +1 -0
  405. package/dist/components/window-frame/WindowFrame.d.cts +19 -0
  406. package/dist/components/window-frame/WindowFrame.d.cts.map +1 -0
  407. package/dist/components/window-frame/WindowFrame.d.mts +19 -0
  408. package/dist/components/window-frame/WindowFrame.d.mts.map +1 -0
  409. package/dist/components/window-frame/WindowFrame.mjs +46 -0
  410. package/dist/components/window-frame/WindowFrame.mjs.map +1 -0
  411. package/dist/components/window-frame/index.d.cts +2 -0
  412. package/dist/components/window-frame/index.d.mts +2 -0
  413. package/dist/hooks/use-mobile.cjs +23 -0
  414. package/dist/hooks/use-mobile.cjs.map +1 -0
  415. package/dist/hooks/use-mobile.mjs +21 -0
  416. package/dist/hooks/use-mobile.mjs.map +1 -0
  417. package/dist/index.cjs +280 -5937
  418. package/dist/index.d.cts +101 -840
  419. package/dist/index.d.mts +101 -0
  420. package/dist/index.mjs +58 -0
  421. package/dist/lib/shiki-theme.cjs +10 -0
  422. package/dist/lib/shiki-theme.cjs.map +1 -0
  423. package/dist/lib/shiki-theme.d.cts +4 -0
  424. package/dist/lib/shiki-theme.d.cts.map +1 -0
  425. package/dist/lib/shiki-theme.d.mts +4 -0
  426. package/dist/lib/shiki-theme.d.mts.map +1 -0
  427. package/dist/lib/shiki-theme.mjs +11 -0
  428. package/dist/lib/shiki-theme.mjs.map +1 -0
  429. package/dist/lib/shiki.cjs +31 -0
  430. package/dist/lib/shiki.cjs.map +1 -0
  431. package/dist/lib/shiki.d.cts +6 -0
  432. package/dist/lib/shiki.d.cts.map +1 -0
  433. package/dist/lib/shiki.d.mts +6 -0
  434. package/dist/lib/shiki.d.mts.map +1 -0
  435. package/dist/lib/shiki.mjs +30 -0
  436. package/dist/lib/shiki.mjs.map +1 -0
  437. package/dist/lib/terminal.d.cts +12 -0
  438. package/dist/lib/terminal.d.cts.map +1 -0
  439. package/dist/lib/terminal.d.mts +12 -0
  440. package/dist/lib/terminal.d.mts.map +1 -0
  441. package/dist/lib/utils.cjs +43 -0
  442. package/dist/lib/utils.cjs.map +1 -0
  443. package/dist/lib/utils.mjs +41 -0
  444. package/dist/lib/utils.mjs.map +1 -0
  445. package/dist/neural-flow.cjs +3 -1015
  446. package/dist/neural-flow.d.cts +3 -47
  447. package/dist/neural-flow.d.mts +3 -0
  448. package/dist/neural-flow.mjs +1 -0
  449. package/dist/primitives/alert.cjs +43 -0
  450. package/dist/primitives/alert.cjs.map +1 -0
  451. package/dist/primitives/alert.d.cts +8 -0
  452. package/dist/primitives/alert.d.cts.map +1 -0
  453. package/dist/primitives/alert.d.mts +8 -0
  454. package/dist/primitives/alert.d.mts.map +1 -0
  455. package/dist/primitives/alert.mjs +39 -0
  456. package/dist/primitives/alert.mjs.map +1 -0
  457. package/dist/primitives/bubble.cjs +80 -0
  458. package/dist/primitives/bubble.cjs.map +1 -0
  459. package/dist/primitives/bubble.d.cts +19 -0
  460. package/dist/primitives/bubble.d.cts.map +1 -0
  461. package/dist/primitives/bubble.d.mts +19 -0
  462. package/dist/primitives/bubble.d.mts.map +1 -0
  463. package/dist/primitives/bubble.mjs +75 -0
  464. package/dist/primitives/bubble.mjs.map +1 -0
  465. package/dist/primitives/button.cjs +47 -0
  466. package/dist/primitives/button.cjs.map +1 -0
  467. package/dist/primitives/button.d.cts +11 -0
  468. package/dist/primitives/button.d.cts.map +1 -0
  469. package/dist/primitives/button.d.mts +11 -0
  470. package/dist/primitives/button.d.mts.map +1 -0
  471. package/dist/primitives/button.mjs +46 -0
  472. package/dist/primitives/button.mjs.map +1 -0
  473. package/dist/primitives/card.cjs +67 -0
  474. package/dist/primitives/card.cjs.map +1 -0
  475. package/dist/primitives/card.d.cts +11 -0
  476. package/dist/primitives/card.d.cts.map +1 -0
  477. package/dist/primitives/card.d.mts +11 -0
  478. package/dist/primitives/card.d.mts.map +1 -0
  479. package/dist/primitives/card.mjs +59 -0
  480. package/dist/primitives/card.mjs.map +1 -0
  481. package/dist/primitives/checkbox.cjs +22 -0
  482. package/dist/primitives/checkbox.cjs.map +1 -0
  483. package/dist/primitives/checkbox.mjs +22 -0
  484. package/dist/primitives/checkbox.mjs.map +1 -0
  485. package/dist/primitives/command.cjs +69 -0
  486. package/dist/primitives/command.cjs.map +1 -0
  487. package/dist/primitives/command.mjs +62 -0
  488. package/dist/primitives/command.mjs.map +1 -0
  489. package/dist/primitives/dropdown-menu.cjs +155 -0
  490. package/dist/primitives/dropdown-menu.cjs.map +1 -0
  491. package/dist/primitives/dropdown-menu.d.cts +30 -0
  492. package/dist/primitives/dropdown-menu.d.cts.map +1 -0
  493. package/dist/primitives/dropdown-menu.d.mts +30 -0
  494. package/dist/primitives/dropdown-menu.d.mts.map +1 -0
  495. package/dist/primitives/dropdown-menu.mjs +139 -0
  496. package/dist/primitives/dropdown-menu.mjs.map +1 -0
  497. package/dist/primitives/empty.cjs +67 -0
  498. package/dist/primitives/empty.cjs.map +1 -0
  499. package/dist/primitives/empty.d.cts +8 -0
  500. package/dist/primitives/empty.d.cts.map +1 -0
  501. package/dist/primitives/empty.d.mts +8 -0
  502. package/dist/primitives/empty.d.mts.map +1 -0
  503. package/dist/primitives/empty.mjs +62 -0
  504. package/dist/primitives/empty.mjs.map +1 -0
  505. package/dist/primitives/field.cjs +121 -0
  506. package/dist/primitives/field.cjs.map +1 -0
  507. package/dist/primitives/field.d.cts +27 -0
  508. package/dist/primitives/field.d.cts.map +1 -0
  509. package/dist/primitives/field.d.mts +27 -0
  510. package/dist/primitives/field.d.mts.map +1 -0
  511. package/dist/primitives/field.mjs +112 -0
  512. package/dist/primitives/field.mjs.map +1 -0
  513. package/dist/primitives/input-group.cjs +88 -0
  514. package/dist/primitives/input-group.cjs.map +1 -0
  515. package/dist/primitives/input-group.d.cts +21 -0
  516. package/dist/primitives/input-group.d.cts.map +1 -0
  517. package/dist/primitives/input-group.d.mts +21 -0
  518. package/dist/primitives/input-group.d.mts.map +1 -0
  519. package/dist/primitives/input-group.mjs +81 -0
  520. package/dist/primitives/input-group.mjs.map +1 -0
  521. package/dist/primitives/input.cjs +20 -0
  522. package/dist/primitives/input.cjs.map +1 -0
  523. package/dist/primitives/input.d.cts +6 -0
  524. package/dist/primitives/input.d.cts.map +1 -0
  525. package/dist/primitives/input.d.mts +6 -0
  526. package/dist/primitives/input.d.mts.map +1 -0
  527. package/dist/primitives/input.mjs +18 -0
  528. package/dist/primitives/input.mjs.map +1 -0
  529. package/dist/primitives/item.cjs +135 -0
  530. package/dist/primitives/item.cjs.map +1 -0
  531. package/dist/primitives/item.d.cts +18 -0
  532. package/dist/primitives/item.d.cts.map +1 -0
  533. package/dist/primitives/item.d.mts +18 -0
  534. package/dist/primitives/item.d.mts.map +1 -0
  535. package/dist/primitives/item.mjs +124 -0
  536. package/dist/primitives/item.mjs.map +1 -0
  537. package/dist/primitives/label.cjs +18 -0
  538. package/dist/primitives/label.cjs.map +1 -0
  539. package/dist/primitives/label.d.cts +6 -0
  540. package/dist/primitives/label.d.cts.map +1 -0
  541. package/dist/primitives/label.d.mts +6 -0
  542. package/dist/primitives/label.d.mts.map +1 -0
  543. package/dist/primitives/label.mjs +16 -0
  544. package/dist/primitives/label.mjs.map +1 -0
  545. package/dist/primitives/message-scroller.cjs +69 -0
  546. package/dist/primitives/message-scroller.cjs.map +1 -0
  547. package/dist/primitives/message-scroller.d.cts +13 -0
  548. package/dist/primitives/message-scroller.d.cts.map +1 -0
  549. package/dist/primitives/message-scroller.d.mts +13 -0
  550. package/dist/primitives/message-scroller.d.mts.map +1 -0
  551. package/dist/primitives/message-scroller.mjs +62 -0
  552. package/dist/primitives/message-scroller.mjs.map +1 -0
  553. package/dist/primitives/message.cjs +58 -0
  554. package/dist/primitives/message.cjs.map +1 -0
  555. package/dist/primitives/message.d.cts +13 -0
  556. package/dist/primitives/message.d.cts.map +1 -0
  557. package/dist/primitives/message.d.mts +13 -0
  558. package/dist/primitives/message.d.mts.map +1 -0
  559. package/dist/primitives/message.mjs +51 -0
  560. package/dist/primitives/message.mjs.map +1 -0
  561. package/dist/primitives/navigation-menu.cjs +44 -0
  562. package/dist/primitives/navigation-menu.cjs.map +1 -0
  563. package/dist/primitives/navigation-menu.d.cts +9 -0
  564. package/dist/primitives/navigation-menu.d.cts.map +1 -0
  565. package/dist/primitives/navigation-menu.d.mts +9 -0
  566. package/dist/primitives/navigation-menu.d.mts.map +1 -0
  567. package/dist/primitives/navigation-menu.mjs +41 -0
  568. package/dist/primitives/navigation-menu.mjs.map +1 -0
  569. package/dist/primitives/popover.cjs +40 -0
  570. package/dist/primitives/popover.cjs.map +1 -0
  571. package/dist/primitives/popover.mjs +36 -0
  572. package/dist/primitives/popover.mjs.map +1 -0
  573. package/dist/primitives/progress.cjs +50 -0
  574. package/dist/primitives/progress.cjs.map +1 -0
  575. package/dist/primitives/progress.d.cts +10 -0
  576. package/dist/primitives/progress.d.cts.map +1 -0
  577. package/dist/primitives/progress.d.mts +10 -0
  578. package/dist/primitives/progress.d.mts.map +1 -0
  579. package/dist/primitives/progress.mjs +46 -0
  580. package/dist/primitives/progress.mjs.map +1 -0
  581. package/dist/primitives/select.cjs +111 -0
  582. package/dist/primitives/select.cjs.map +1 -0
  583. package/dist/primitives/select.d.cts +18 -0
  584. package/dist/primitives/select.d.cts.map +1 -0
  585. package/dist/primitives/select.d.mts +18 -0
  586. package/dist/primitives/select.d.mts.map +1 -0
  587. package/dist/primitives/select.mjs +100 -0
  588. package/dist/primitives/select.mjs.map +1 -0
  589. package/dist/primitives/separator.cjs +17 -0
  590. package/dist/primitives/separator.cjs.map +1 -0
  591. package/dist/primitives/separator.d.cts +6 -0
  592. package/dist/primitives/separator.d.cts.map +1 -0
  593. package/dist/primitives/separator.d.mts +6 -0
  594. package/dist/primitives/separator.d.mts.map +1 -0
  595. package/dist/primitives/separator.mjs +17 -0
  596. package/dist/primitives/separator.mjs.map +1 -0
  597. package/dist/primitives/sheet.cjs +78 -0
  598. package/dist/primitives/sheet.cjs.map +1 -0
  599. package/dist/primitives/sheet.mjs +72 -0
  600. package/dist/primitives/sheet.mjs.map +1 -0
  601. package/dist/primitives/sidebar.cjs +413 -0
  602. package/dist/primitives/sidebar.cjs.map +1 -0
  603. package/dist/primitives/sidebar.d.cts +66 -0
  604. package/dist/primitives/sidebar.d.cts.map +1 -0
  605. package/dist/primitives/sidebar.d.mts +66 -0
  606. package/dist/primitives/sidebar.d.mts.map +1 -0
  607. package/dist/primitives/sidebar.mjs +388 -0
  608. package/dist/primitives/sidebar.mjs.map +1 -0
  609. package/dist/primitives/skeleton.cjs +15 -0
  610. package/dist/primitives/skeleton.cjs.map +1 -0
  611. package/dist/primitives/skeleton.mjs +15 -0
  612. package/dist/primitives/skeleton.mjs.map +1 -0
  613. package/dist/primitives/slider.cjs +35 -0
  614. package/dist/primitives/slider.cjs.map +1 -0
  615. package/dist/primitives/slider.d.cts +6 -0
  616. package/dist/primitives/slider.d.cts.map +1 -0
  617. package/dist/primitives/slider.d.mts +6 -0
  618. package/dist/primitives/slider.d.mts.map +1 -0
  619. package/dist/primitives/slider.mjs +35 -0
  620. package/dist/primitives/slider.mjs.map +1 -0
  621. package/dist/primitives/table.cjs +78 -0
  622. package/dist/primitives/table.cjs.map +1 -0
  623. package/dist/primitives/table.mjs +69 -0
  624. package/dist/primitives/table.mjs.map +1 -0
  625. package/dist/primitives/textarea.cjs +18 -0
  626. package/dist/primitives/textarea.cjs.map +1 -0
  627. package/dist/primitives/textarea.d.cts +6 -0
  628. package/dist/primitives/textarea.d.cts.map +1 -0
  629. package/dist/primitives/textarea.d.mts +6 -0
  630. package/dist/primitives/textarea.d.mts.map +1 -0
  631. package/dist/primitives/textarea.mjs +16 -0
  632. package/dist/primitives/textarea.mjs.map +1 -0
  633. package/dist/primitives/tooltip.cjs +46 -0
  634. package/dist/primitives/tooltip.cjs.map +1 -0
  635. package/dist/primitives/tooltip.d.cts +9 -0
  636. package/dist/primitives/tooltip.d.cts.map +1 -0
  637. package/dist/primitives/tooltip.d.mts +9 -0
  638. package/dist/primitives/tooltip.d.mts.map +1 -0
  639. package/dist/primitives/tooltip.mjs +43 -0
  640. package/dist/primitives/tooltip.mjs.map +1 -0
  641. package/dist/shiki.cjs +6 -80
  642. package/dist/shiki.d.cts +3 -10
  643. package/dist/shiki.d.mts +3 -0
  644. package/dist/shiki.mjs +3 -0
  645. package/dist/styles/index.css +11 -0
  646. package/package.json +20 -13
  647. package/dist/chunk-3LBFYXI6.js +0 -42
  648. package/dist/chunk-3LBFYXI6.js.map +0 -1
  649. package/dist/index.cjs.map +0 -1
  650. package/dist/index.d.ts +0 -840
  651. package/dist/index.js +0 -5685
  652. package/dist/index.js.map +0 -1
  653. package/dist/neural-flow.cjs.map +0 -1
  654. package/dist/neural-flow.d.ts +0 -47
  655. package/dist/neural-flow.js +0 -978
  656. package/dist/neural-flow.js.map +0 -1
  657. package/dist/shiki.cjs.map +0 -1
  658. package/dist/shiki.d.ts +0 -10
  659. package/dist/shiki.js +0 -11
  660. package/dist/shiki.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FogIllustration.d.cts","names":[],"sources":["../../../src/components/fog-illustration/FogIllustration.tsx"],"mappings":";;;;;;;;;;;;;;YAmBY;;EAEV;;EAEA;;EAEA;;;qBAIW,mBAAmB;iBAMf;;EAEf,UAAU,QAAQ;;EAElB;;EAEA;;qBAmNW,oBAAmB,SAAA,OAAA,aAAmC,qDAAoB,IAAA"}
@@ -0,0 +1,35 @@
1
+ //#region src/components/fog-illustration/FogIllustration.d.ts
2
+ /**
3
+ * FogIllustration — a volumetric fog raymarcher rendered as chunky
4
+ * 1-bit dither in a given palette.
5
+ *
6
+ * Two GPU passes: the scene is raymarched at low internal resolution
7
+ * (ridged fbm ground, drifting fog volumes, air haze — the fog hides
8
+ * the low resolution), then a full-resolution pass thresholds the
9
+ * scene against a Bayer matrix with hash jitter: ink dots on milk,
10
+ * with moss-tinted dots where fog dominates.
11
+ *
12
+ * The canvas fills its parent element; give the parent a size.
13
+ * Pauses under prefers-reduced-motion after one frame.
14
+ */
15
+ export type FogPalette = {
16
+ /** Dark terrain and dither ink. */
17
+ ink: string;
18
+ /** Background the dots sit on. */
19
+ milk: string;
20
+ /** Tint for dots where fog dominates. */
21
+ moss: string;
22
+ };
23
+ /** The Berget brand palette, as rendered sRGB. */
24
+ export declare const FOG_BRAND_PALETTE: FogPalette;
25
+ export interface FogIllustrationProps {
26
+ /** Colors as hex strings. Unset keys fall back to the brand palette. */
27
+ palette?: Partial<FogPalette>;
28
+ /** Flight speed multiplier @default 1 */
29
+ speed?: number;
30
+ /** Additional CSS classes for the canvas element */
31
+ className?: string;
32
+ }
33
+ export declare const FogIllustration: ({ palette, speed, className }: FogIllustrationProps) => import("react/jsx-runtime").JSX.Element;
34
+ //#endregion
35
+ //# sourceMappingURL=FogIllustration.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FogIllustration.d.mts","names":[],"sources":["../../../src/components/fog-illustration/FogIllustration.tsx"],"mappings":";;;;;;;;;;;;;;YAmBY;;EAEV;;EAEA;;EAEA;;;qBAIW,mBAAmB;iBAMf;;EAEf,UAAU,QAAQ;;EAElB;;EAEA;;qBAmNW,oBAAmB,SAAA,OAAA,aAAmC,qDAAoB,IAAA"}
@@ -0,0 +1,341 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.mjs";
3
+ import { useEffect, useRef } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/fog-illustration/FogIllustration.tsx
6
+ /** The Berget brand palette, as rendered sRGB. */
7
+ const FOG_BRAND_PALETTE = {
8
+ ink: "#171a1a",
9
+ milk: "#f7f5ed",
10
+ moss: "#598c6b"
11
+ };
12
+ const hexToRgb = (hex) => {
13
+ let h = hex.replace("#", "");
14
+ if (h.length === 3) h = h.split("").map((c) => c + c).join("");
15
+ const n = Number.parseInt(h, 16);
16
+ return [
17
+ (n >> 16 & 255) / 255,
18
+ (n >> 8 & 255) / 255,
19
+ (n & 255) / 255
20
+ ];
21
+ };
22
+ const hexToRgbAll = (p) => ({
23
+ ink: hexToRgb(p.ink),
24
+ milk: hexToRgb(p.milk),
25
+ moss: hexToRgb(p.moss)
26
+ });
27
+ const VERT = `#version 300 es
28
+ void main() {
29
+ vec2 p = vec2(float((gl_VertexID << 1) & 2), float(gl_VertexID & 2));
30
+ gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0);
31
+ }`;
32
+ /** Pass A — raymarch the foggy terrain at low resolution. */
33
+ const SCENE_FRAG = `#version 300 es
34
+ precision highp float;
35
+ out vec4 outColor;
36
+ uniform vec2 uRes;
37
+ uniform float uTime;
38
+ uniform sampler2D uNoise;
39
+
40
+ float noise(vec3 x) {
41
+ // 3D value noise from the 2D random texture — iq's two-slice trick:
42
+ // z slices are tiled into the u axis, two neighbours mixed by fract(z).
43
+ vec3 p = floor(x), f = fract(x);
44
+ f = f * f * (3.0 - 2.0 * f);
45
+ vec2 uv = (p.xy + vec2(37.0, 239.0) * p.z) + f.xy;
46
+ vec2 rg = texture(uNoise, (uv + 0.5) / 256.0).xy;
47
+ return mix(rg.x, rg.y, f.z) * 2.0 - 1.0;
48
+ }
49
+
50
+ float ground(vec3 pos, int oct) {
51
+ float f = 0.0;
52
+ float s = 1.4;
53
+ vec3 p = pos * s * 0.1;
54
+ for (int i = 0; i < 6; i++) {
55
+ if (i >= oct) break;
56
+ f += abs(noise(p)) * s;
57
+ p = vec3(p.z * 5.0, p.xy * 3.0 + p.yx * 4.0 * vec2(1, -1)) * 2.0 / 5.0;
58
+ s /= 2.0;
59
+ }
60
+ return (pos.y + f) * 0.8;
61
+ }
62
+
63
+ float fogD(vec3 pos, int oct) {
64
+ float f = 0.0;
65
+ float s = 1.0;
66
+ vec3 p = pos * 0.7;
67
+ p += uTime * vec3(0.0, -0.02, 0.02);
68
+ for (int i = 0; i < 6; i++) {
69
+ if (i >= oct) break;
70
+ f += noise(p) * s;
71
+ p = vec3(p.z * 5.0, p.xy * 3.0 + p.yx * 4.0 * vec2(1, -1)) * 2.0 / 5.0;
72
+ s /= 1.7;
73
+ }
74
+ f += smoothstep(0.2, 0.0, abs(pos.y + 1.0)) * 0.4;
75
+ f += smoothstep(0.35, 0.15, abs(pos.y - 0.02)) * 0.7;
76
+ f *= 1.0 - smoothstep(-0.1, 0.55, pos.y);
77
+ f = smoothstep(0.45, 1.7, f);
78
+ float g = ground(pos, 2);
79
+ f *= 1.0 - g / (abs(g) + 0.04);
80
+ return f;
81
+ }
82
+
83
+ float airD(vec3 pos) { return exp2(-pos.y / 5.0 - 3.0); }
84
+
85
+ void main() {
86
+ float time = uTime * 0.2;
87
+ vec3 velocity = vec3(1.0, 0.0, 0.0);
88
+ vec3 camPos = vec3(sin(time * 0.618) * 0.4, 0.62 + 0.08 * sin(time), 0.0) + time * velocity;
89
+ vec3 camLook = vec3(-1.0, -0.3, 4.0) + (time - sin(time)) * velocity;
90
+
91
+ vec2 fc = gl_FragCoord.xy;
92
+ vec3 ray = vec3((fc - uRes * 0.5) / uRes.x, 1.0);
93
+ vec3 camDir = normalize(camLook - camPos);
94
+ vec3 camRight = normalize(cross(vec3(0.0, 1.0, 0.0), camDir));
95
+ vec3 camUp = cross(camDir, camRight);
96
+ ray = normalize(ray.x * camRight + ray.y * camUp + ray.z * camDir);
97
+
98
+ vec3 sunDir = normalize(vec3(-3.0, 2.0, 1.0));
99
+
100
+ vec3 pos = camPos;
101
+ float absorption = 1.0;
102
+ float emission = 0.0;
103
+ float fogFactor = 0.0;
104
+ float lastStride = 0.0;
105
+ float lastFog = 0.0;
106
+ float lastAir = 0.0;
107
+
108
+ for (int i = 0; i < 80; i++) {
109
+ float h = ground(pos, 4);
110
+ float fog = fogD(pos, 3);
111
+ float fogIntegral = lastStride * mix(fog, lastFog, 0.5);
112
+ float air = airD(pos);
113
+ float airIntegral = lastStride * mix(air, lastAir, 0.5);
114
+
115
+ float fogAbsDelta = pow(0.1, fogIntegral);
116
+ float fogEmiDelta = 1.0 - fogAbsDelta;
117
+ float shadowStep = 0.07;
118
+ float shadow = (fog - fogD(pos + sunDir * shadowStep, 2)) / shadowStep;
119
+ fogEmiDelta *= mix(0.2, 0.85, smoothstep(-1.0, 1.0, shadow));
120
+
121
+ float airAbsDelta = pow(0.55, airIntegral);
122
+ float airEmiDelta = (1.0 - pow(0.55, airIntegral)) * 0.5;
123
+
124
+ float absDelta = fogAbsDelta * airAbsDelta;
125
+ emission += absorption * sqrt(absDelta) * (fogEmiDelta + airEmiDelta);
126
+ absorption *= absDelta;
127
+
128
+ fogFactor = max(fogFactor, (1.0 - absorption) * step(0.05, fog));
129
+
130
+ lastFog = fog;
131
+ lastAir = air;
132
+ h = min(h, 0.1);
133
+ lastStride = h;
134
+ pos += h * ray;
135
+ if (h < 0.001) break;
136
+ }
137
+
138
+ float brightness;
139
+ if (absorption > 0.02) {
140
+ // terrain visible — light it
141
+ vec2 d = vec2(-1.0, 1.0) * 0.02;
142
+ vec3 normal = normalize(
143
+ ground(pos + d.xxx, 5) * d.xxx +
144
+ ground(pos + d.xyy, 5) * d.xyy +
145
+ ground(pos + d.yxy, 5) * d.yxy +
146
+ ground(pos + d.yyx, 5) * d.yyx
147
+ );
148
+ float ao = smoothstep(-0.2, 1.5, ground(pos + normal * 0.3, 5) / 0.3);
149
+ float shade = (0.5 * ao + 0.5 * max(dot(normal, sunDir), 0.0)) * 0.65;
150
+ brightness = shade * absorption + emission;
151
+ } else {
152
+ brightness = emission;
153
+ }
154
+
155
+ // Clear sky — rays that escape upward land on milk, whatever the
156
+ // haze did. The poster look: light sky, dark ridges, fog between.
157
+ float sky = smoothstep(-0.15, 0.35, ray.y) * 0.92;
158
+ brightness = max(brightness, sky * absorption);
159
+
160
+ outColor = vec4(clamp(brightness, 0.0, 1.0), clamp(fogFactor, 0.0, 1.0), 0.0, 1.0);
161
+ }`;
162
+ /** Pass B — full-resolution 1-bit dither of the scene. */
163
+ const DITHER_FRAG = `#version 300 es
164
+ precision highp float;
165
+ out vec4 outColor;
166
+ uniform vec2 uRes;
167
+ uniform float uDot;
168
+ uniform sampler2D uScene;
169
+ uniform vec3 uInk;
170
+ uniform vec3 uMilk;
171
+ uniform vec3 uMoss;
172
+
173
+ float bayer2(vec2 a) { a = floor(a); return fract(a.x / 2.0 + a.y * a.y * 0.75); }
174
+ float bayer4(vec2 a) { return bayer2(0.5 * a) * 0.25 + bayer2(a); }
175
+ float hash12(vec2 p) {
176
+ vec3 p3 = fract(vec3(p.xyx) * 0.1031);
177
+ p3 += dot(p3, p3.yzx + 33.33);
178
+ return fract((p3.x + p3.y) * p3.z);
179
+ }
180
+
181
+ void main() {
182
+ // Chunky cells: one dot decision per uDot×uDot block — the dither
183
+ // reads as visible pixels, not 1px noise.
184
+ vec2 cell = floor(gl_FragCoord.xy / uDot);
185
+ vec4 scene = texture(uScene, (cell * uDot + uDot * 0.5) / uRes);
186
+ float darkness = 1.0 - scene.r;
187
+ float jitter = (hash12(cell) - 0.5) * 0.3;
188
+ float on = step(darkness, bayer4(cell) + jitter);
189
+ vec3 col = scene.g > 0.5 ? uMoss : uInk;
190
+ outColor = vec4(mix(col, uMilk, on), 1.0);
191
+ }`;
192
+ const compile = (gl, type, src) => {
193
+ const sh = gl.createShader(type);
194
+ if (!sh) throw new Error("shader creation failed");
195
+ gl.shaderSource(sh, src);
196
+ gl.compileShader(sh);
197
+ if (!gl.getShaderParameter(sh, gl.COMPILE_STATUS)) throw new Error(gl.getShaderInfoLog(sh) || "shader compile failed");
198
+ return sh;
199
+ };
200
+ const program = (gl, frag) => {
201
+ const p = gl.createProgram();
202
+ if (!p) throw new Error("program creation failed");
203
+ gl.attachShader(p, compile(gl, gl.VERTEX_SHADER, VERT));
204
+ gl.attachShader(p, compile(gl, gl.FRAGMENT_SHADER, frag));
205
+ gl.linkProgram(p);
206
+ if (!gl.getProgramParameter(p, gl.LINK_STATUS)) throw new Error(gl.getProgramInfoLog(p) || "program link failed");
207
+ return p;
208
+ };
209
+ const FogIllustration = ({ palette, speed = 1, className }) => {
210
+ const ref = useRef(null);
211
+ const live = useRef({
212
+ palette: {
213
+ ...FOG_BRAND_PALETTE,
214
+ ...palette
215
+ },
216
+ speed
217
+ });
218
+ live.current = {
219
+ palette: {
220
+ ...FOG_BRAND_PALETTE,
221
+ ...palette
222
+ },
223
+ speed
224
+ };
225
+ useEffect(() => {
226
+ const canvas = ref.current;
227
+ const parent = canvas?.parentElement;
228
+ if (!canvas || !parent) return;
229
+ const gl = canvas.getContext("webgl2", {
230
+ antialias: false,
231
+ alpha: false,
232
+ preserveDrawingBuffer: true
233
+ });
234
+ if (!gl) return;
235
+ let sceneProg;
236
+ let ditherProg;
237
+ try {
238
+ sceneProg = program(gl, SCENE_FRAG);
239
+ ditherProg = program(gl, DITHER_FRAG);
240
+ } catch (err) {
241
+ console.error("fog shader failed:", err);
242
+ return;
243
+ }
244
+ const noiseTex = gl.createTexture();
245
+ gl.bindTexture(gl.TEXTURE_2D, noiseTex);
246
+ const N = 256;
247
+ const data = new Uint8Array(N * N * 4);
248
+ for (let i = 0; i < data.length; i += 4) {
249
+ data[i] = Math.random() * 256;
250
+ data[i + 1] = Math.random() * 256;
251
+ data[i + 2] = Math.random() * 256;
252
+ data[i + 3] = 255;
253
+ }
254
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, N, N, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);
255
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
256
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
257
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
258
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
259
+ const sceneTex = gl.createTexture();
260
+ gl.bindTexture(gl.TEXTURE_2D, sceneTex);
261
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
262
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
263
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
264
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
265
+ const fbo = gl.createFramebuffer();
266
+ const SCALE = .3;
267
+ const reduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
268
+ const start = performance.now();
269
+ let raf = 0;
270
+ let last = 0;
271
+ const render = (elapsed) => {
272
+ const w = parent.clientWidth;
273
+ const h = parent.clientHeight;
274
+ if (w === 0 || h === 0) return;
275
+ const dpr = Math.min(window.devicePixelRatio || 1, 2);
276
+ if (canvas.width !== Math.round(w * dpr) || canvas.height !== Math.round(h * dpr)) {
277
+ canvas.width = Math.round(w * dpr);
278
+ canvas.height = Math.round(h * dpr);
279
+ }
280
+ const sceneW = Math.max(64, Math.round(w * SCALE));
281
+ const sceneH = Math.max(64, Math.round(h * SCALE));
282
+ gl.bindTexture(gl.TEXTURE_2D, sceneTex);
283
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, sceneW, sceneH, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
284
+ const t = elapsed * live.current.speed;
285
+ gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
286
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, sceneTex, 0);
287
+ gl.viewport(0, 0, sceneW, sceneH);
288
+ gl.useProgram(sceneProg);
289
+ gl.activeTexture(gl.TEXTURE0);
290
+ gl.bindTexture(gl.TEXTURE_2D, noiseTex);
291
+ gl.uniform1i(gl.getUniformLocation(sceneProg, "uNoise"), 0);
292
+ gl.uniform2f(gl.getUniformLocation(sceneProg, "uRes"), sceneW, sceneH);
293
+ gl.uniform1f(gl.getUniformLocation(sceneProg, "uTime"), t);
294
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
295
+ const { ink, milk, moss } = hexToRgbAll(live.current.palette);
296
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
297
+ gl.viewport(0, 0, canvas.width, canvas.height);
298
+ gl.useProgram(ditherProg);
299
+ gl.activeTexture(gl.TEXTURE0);
300
+ gl.bindTexture(gl.TEXTURE_2D, sceneTex);
301
+ gl.uniform1i(gl.getUniformLocation(ditherProg, "uScene"), 0);
302
+ gl.uniform2f(gl.getUniformLocation(ditherProg, "uRes"), canvas.width, canvas.height);
303
+ gl.uniform1f(gl.getUniformLocation(ditherProg, "uDot"), Math.max(3, Math.round(dpr * 2)));
304
+ gl.uniform3f(gl.getUniformLocation(ditherProg, "uInk"), ...ink);
305
+ gl.uniform3f(gl.getUniformLocation(ditherProg, "uMilk"), ...milk);
306
+ gl.uniform3f(gl.getUniformLocation(ditherProg, "uMoss"), ...moss);
307
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
308
+ };
309
+ render(0);
310
+ if (!reduced) {
311
+ const frame = (now) => {
312
+ if (now - last >= 1e3 / 30) {
313
+ last = now;
314
+ render((now - start) / 1e3);
315
+ }
316
+ raf = requestAnimationFrame(frame);
317
+ };
318
+ raf = requestAnimationFrame(frame);
319
+ }
320
+ const observer = new ResizeObserver(() => render((performance.now() - start) / 1e3));
321
+ observer.observe(parent);
322
+ return () => {
323
+ cancelAnimationFrame(raf);
324
+ observer.disconnect();
325
+ gl.deleteProgram(sceneProg);
326
+ gl.deleteProgram(ditherProg);
327
+ gl.deleteTexture(noiseTex);
328
+ gl.deleteTexture(sceneTex);
329
+ gl.deleteFramebuffer(fbo);
330
+ };
331
+ }, []);
332
+ return /* @__PURE__ */ jsx("canvas", {
333
+ ref,
334
+ "aria-hidden": "true",
335
+ className: cn("size-full", className)
336
+ });
337
+ };
338
+ //#endregion
339
+ export { FOG_BRAND_PALETTE, FogIllustration };
340
+
341
+ //# sourceMappingURL=FogIllustration.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FogIllustration.mjs","names":[],"sources":["../../../src/components/fog-illustration/FogIllustration.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { cn } from '../../lib/utils';\n\n/**\n * FogIllustration — a volumetric fog raymarcher rendered as chunky\n * 1-bit dither in a given palette.\n *\n * Two GPU passes: the scene is raymarched at low internal resolution\n * (ridged fbm ground, drifting fog volumes, air haze — the fog hides\n * the low resolution), then a full-resolution pass thresholds the\n * scene against a Bayer matrix with hash jitter: ink dots on milk,\n * with moss-tinted dots where fog dominates.\n *\n * The canvas fills its parent element; give the parent a size.\n * Pauses under prefers-reduced-motion after one frame.\n */\n\nexport type FogPalette = {\n /** Dark terrain and dither ink. */\n ink: string;\n /** Background the dots sit on. */\n milk: string;\n /** Tint for dots where fog dominates. */\n moss: string;\n};\n\n/** The Berget brand palette, as rendered sRGB. */\nexport const FOG_BRAND_PALETTE: FogPalette = {\n ink: '#171a1a',\n milk: '#f7f5ed',\n moss: '#598c6b',\n};\n\nexport interface FogIllustrationProps {\n /** Colors as hex strings. Unset keys fall back to the brand palette. */\n palette?: Partial<FogPalette>;\n /** Flight speed multiplier @default 1 */\n speed?: number;\n /** Additional CSS classes for the canvas element */\n className?: string;\n}\n\nconst hexToRgb = (hex: string): [number, number, number] => {\n let h = hex.replace('#', '');\n if (h.length === 3)\n h = h\n .split('')\n .map((c) => c + c)\n .join('');\n const n = Number.parseInt(h, 16);\n return [((n >> 16) & 255) / 255, ((n >> 8) & 255) / 255, (n & 255) / 255];\n};\n\nconst hexToRgbAll = (p: FogPalette) => ({\n ink: hexToRgb(p.ink),\n milk: hexToRgb(p.milk),\n moss: hexToRgb(p.moss),\n});\n\nconst VERT = `#version 300 es\nvoid main() {\n vec2 p = vec2(float((gl_VertexID << 1) & 2), float(gl_VertexID & 2));\n gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0);\n}`;\n\n/** Pass A — raymarch the foggy terrain at low resolution. */\nconst SCENE_FRAG = `#version 300 es\nprecision highp float;\nout vec4 outColor;\nuniform vec2 uRes;\nuniform float uTime;\nuniform sampler2D uNoise;\n\nfloat noise(vec3 x) {\n // 3D value noise from the 2D random texture — iq's two-slice trick:\n // z slices are tiled into the u axis, two neighbours mixed by fract(z).\n vec3 p = floor(x), f = fract(x);\n f = f * f * (3.0 - 2.0 * f);\n vec2 uv = (p.xy + vec2(37.0, 239.0) * p.z) + f.xy;\n vec2 rg = texture(uNoise, (uv + 0.5) / 256.0).xy;\n return mix(rg.x, rg.y, f.z) * 2.0 - 1.0;\n}\n\nfloat ground(vec3 pos, int oct) {\n float f = 0.0;\n float s = 1.4;\n vec3 p = pos * s * 0.1;\n for (int i = 0; i < 6; i++) {\n if (i >= oct) break;\n f += abs(noise(p)) * s;\n p = vec3(p.z * 5.0, p.xy * 3.0 + p.yx * 4.0 * vec2(1, -1)) * 2.0 / 5.0;\n s /= 2.0;\n }\n return (pos.y + f) * 0.8;\n}\n\nfloat fogD(vec3 pos, int oct) {\n float f = 0.0;\n float s = 1.0;\n vec3 p = pos * 0.7;\n p += uTime * vec3(0.0, -0.02, 0.02);\n for (int i = 0; i < 6; i++) {\n if (i >= oct) break;\n f += noise(p) * s;\n p = vec3(p.z * 5.0, p.xy * 3.0 + p.yx * 4.0 * vec2(1, -1)) * 2.0 / 5.0;\n s /= 1.7;\n }\n f += smoothstep(0.2, 0.0, abs(pos.y + 1.0)) * 0.4;\n f += smoothstep(0.35, 0.15, abs(pos.y - 0.02)) * 0.7;\n f *= 1.0 - smoothstep(-0.1, 0.55, pos.y);\n f = smoothstep(0.45, 1.7, f);\n float g = ground(pos, 2);\n f *= 1.0 - g / (abs(g) + 0.04);\n return f;\n}\n\nfloat airD(vec3 pos) { return exp2(-pos.y / 5.0 - 3.0); }\n\nvoid main() {\n float time = uTime * 0.2;\n vec3 velocity = vec3(1.0, 0.0, 0.0);\n vec3 camPos = vec3(sin(time * 0.618) * 0.4, 0.62 + 0.08 * sin(time), 0.0) + time * velocity;\n vec3 camLook = vec3(-1.0, -0.3, 4.0) + (time - sin(time)) * velocity;\n\n vec2 fc = gl_FragCoord.xy;\n vec3 ray = vec3((fc - uRes * 0.5) / uRes.x, 1.0);\n vec3 camDir = normalize(camLook - camPos);\n vec3 camRight = normalize(cross(vec3(0.0, 1.0, 0.0), camDir));\n vec3 camUp = cross(camDir, camRight);\n ray = normalize(ray.x * camRight + ray.y * camUp + ray.z * camDir);\n\n vec3 sunDir = normalize(vec3(-3.0, 2.0, 1.0));\n\n vec3 pos = camPos;\n float absorption = 1.0;\n float emission = 0.0;\n float fogFactor = 0.0;\n float lastStride = 0.0;\n float lastFog = 0.0;\n float lastAir = 0.0;\n\n for (int i = 0; i < 80; i++) {\n float h = ground(pos, 4);\n float fog = fogD(pos, 3);\n float fogIntegral = lastStride * mix(fog, lastFog, 0.5);\n float air = airD(pos);\n float airIntegral = lastStride * mix(air, lastAir, 0.5);\n\n float fogAbsDelta = pow(0.1, fogIntegral);\n float fogEmiDelta = 1.0 - fogAbsDelta;\n float shadowStep = 0.07;\n float shadow = (fog - fogD(pos + sunDir * shadowStep, 2)) / shadowStep;\n fogEmiDelta *= mix(0.2, 0.85, smoothstep(-1.0, 1.0, shadow));\n\n float airAbsDelta = pow(0.55, airIntegral);\n float airEmiDelta = (1.0 - pow(0.55, airIntegral)) * 0.5;\n\n float absDelta = fogAbsDelta * airAbsDelta;\n emission += absorption * sqrt(absDelta) * (fogEmiDelta + airEmiDelta);\n absorption *= absDelta;\n\n fogFactor = max(fogFactor, (1.0 - absorption) * step(0.05, fog));\n\n lastFog = fog;\n lastAir = air;\n h = min(h, 0.1);\n lastStride = h;\n pos += h * ray;\n if (h < 0.001) break;\n }\n\n float brightness;\n if (absorption > 0.02) {\n // terrain visible — light it\n vec2 d = vec2(-1.0, 1.0) * 0.02;\n vec3 normal = normalize(\n ground(pos + d.xxx, 5) * d.xxx +\n ground(pos + d.xyy, 5) * d.xyy +\n ground(pos + d.yxy, 5) * d.yxy +\n ground(pos + d.yyx, 5) * d.yyx\n );\n float ao = smoothstep(-0.2, 1.5, ground(pos + normal * 0.3, 5) / 0.3);\n float shade = (0.5 * ao + 0.5 * max(dot(normal, sunDir), 0.0)) * 0.65;\n brightness = shade * absorption + emission;\n } else {\n brightness = emission;\n }\n\n // Clear sky — rays that escape upward land on milk, whatever the\n // haze did. The poster look: light sky, dark ridges, fog between.\n float sky = smoothstep(-0.15, 0.35, ray.y) * 0.92;\n brightness = max(brightness, sky * absorption);\n\n outColor = vec4(clamp(brightness, 0.0, 1.0), clamp(fogFactor, 0.0, 1.0), 0.0, 1.0);\n}`;\n\n/** Pass B — full-resolution 1-bit dither of the scene. */\nconst DITHER_FRAG = `#version 300 es\nprecision highp float;\nout vec4 outColor;\nuniform vec2 uRes;\nuniform float uDot;\nuniform sampler2D uScene;\nuniform vec3 uInk;\nuniform vec3 uMilk;\nuniform vec3 uMoss;\n\nfloat bayer2(vec2 a) { a = floor(a); return fract(a.x / 2.0 + a.y * a.y * 0.75); }\nfloat bayer4(vec2 a) { return bayer2(0.5 * a) * 0.25 + bayer2(a); }\nfloat hash12(vec2 p) {\n vec3 p3 = fract(vec3(p.xyx) * 0.1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nvoid main() {\n // Chunky cells: one dot decision per uDot×uDot block — the dither\n // reads as visible pixels, not 1px noise.\n vec2 cell = floor(gl_FragCoord.xy / uDot);\n vec4 scene = texture(uScene, (cell * uDot + uDot * 0.5) / uRes);\n float darkness = 1.0 - scene.r;\n float jitter = (hash12(cell) - 0.5) * 0.3;\n float on = step(darkness, bayer4(cell) + jitter);\n vec3 col = scene.g > 0.5 ? uMoss : uInk;\n outColor = vec4(mix(col, uMilk, on), 1.0);\n}`;\n\nconst compile = (gl: WebGL2RenderingContext, type: number, src: string): WebGLShader => {\n const sh = gl.createShader(type);\n if (!sh) throw new Error('shader creation failed');\n gl.shaderSource(sh, src);\n gl.compileShader(sh);\n if (!gl.getShaderParameter(sh, gl.COMPILE_STATUS)) {\n throw new Error(gl.getShaderInfoLog(sh) || 'shader compile failed');\n }\n return sh;\n};\n\nconst program = (gl: WebGL2RenderingContext, frag: string): WebGLProgram => {\n const p = gl.createProgram();\n if (!p) throw new Error('program creation failed');\n gl.attachShader(p, compile(gl, gl.VERTEX_SHADER, VERT));\n gl.attachShader(p, compile(gl, gl.FRAGMENT_SHADER, frag));\n gl.linkProgram(p);\n if (!gl.getProgramParameter(p, gl.LINK_STATUS)) {\n throw new Error(gl.getProgramInfoLog(p) || 'program link failed');\n }\n return p;\n};\n\nexport const FogIllustration = ({ palette, speed = 1, className }: FogIllustrationProps) => {\n const ref = useRef<HTMLCanvasElement>(null);\n // Live props — the GL setup runs once; palette and speed changes\n // apply on the next frame without rebuilding the context.\n const live = useRef({ palette: { ...FOG_BRAND_PALETTE, ...palette }, speed });\n live.current = { palette: { ...FOG_BRAND_PALETTE, ...palette }, speed };\n\n useEffect(() => {\n const canvas = ref.current;\n const parent = canvas?.parentElement;\n if (!canvas || !parent) return;\n\n // preserveDrawingBuffer keeps the frame readable for screenshots —\n // the cost is negligible for a decorative illustration.\n const gl = canvas.getContext('webgl2', {\n antialias: false,\n alpha: false,\n preserveDrawingBuffer: true,\n });\n if (!gl) return;\n\n let sceneProg: WebGLProgram;\n let ditherProg: WebGLProgram;\n try {\n sceneProg = program(gl, SCENE_FRAG);\n ditherProg = program(gl, DITHER_FRAG);\n } catch (err) {\n console.error('fog shader failed:', err);\n return; // shader failed — leave the panel empty rather than broken\n }\n\n // Noise texture — the Shadertoy iChannel1 stand-in.\n const noiseTex = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, noiseTex);\n const N = 256;\n const data = new Uint8Array(N * N * 4);\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.random() * 256;\n data[i + 1] = Math.random() * 256;\n data[i + 2] = Math.random() * 256;\n data[i + 3] = 255;\n }\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, N, N, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n // Low-res scene target.\n const sceneTex = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, sceneTex);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n const fbo = gl.createFramebuffer();\n\n const SCALE = 0.3; // internal raymarch resolution\n const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n const start = performance.now();\n let raf = 0;\n let last = 0;\n\n const render = (elapsed: number) => {\n const w = parent.clientWidth;\n const h = parent.clientHeight;\n if (w === 0 || h === 0) return;\n const dpr = Math.min(window.devicePixelRatio || 1, 2);\n if (canvas.width !== Math.round(w * dpr) || canvas.height !== Math.round(h * dpr)) {\n canvas.width = Math.round(w * dpr);\n canvas.height = Math.round(h * dpr);\n }\n const sceneW = Math.max(64, Math.round(w * SCALE));\n const sceneH = Math.max(64, Math.round(h * SCALE));\n gl.bindTexture(gl.TEXTURE_2D, sceneTex);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, sceneW, sceneH, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n const t = elapsed * live.current.speed;\n\n // Pass A — scene at low resolution.\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, sceneTex, 0);\n gl.viewport(0, 0, sceneW, sceneH);\n gl.useProgram(sceneProg);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, noiseTex);\n gl.uniform1i(gl.getUniformLocation(sceneProg, 'uNoise'), 0);\n gl.uniform2f(gl.getUniformLocation(sceneProg, 'uRes'), sceneW, sceneH);\n gl.uniform1f(gl.getUniformLocation(sceneProg, 'uTime'), t);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n\n // Pass B — dither at full resolution.\n const { ink, milk, moss } = hexToRgbAll(live.current.palette);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.useProgram(ditherProg);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, sceneTex);\n gl.uniform1i(gl.getUniformLocation(ditherProg, 'uScene'), 0);\n gl.uniform2f(gl.getUniformLocation(ditherProg, 'uRes'), canvas.width, canvas.height);\n gl.uniform1f(gl.getUniformLocation(ditherProg, 'uDot'), Math.max(3, Math.round(dpr * 2)));\n gl.uniform3f(gl.getUniformLocation(ditherProg, 'uInk'), ...ink);\n gl.uniform3f(gl.getUniformLocation(ditherProg, 'uMilk'), ...milk);\n gl.uniform3f(gl.getUniformLocation(ditherProg, 'uMoss'), ...moss);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n };\n\n render(0);\n if (!reduced) {\n const frame = (now: number) => {\n if (now - last >= 1000 / 30) {\n last = now;\n render((now - start) / 1000);\n }\n raf = requestAnimationFrame(frame);\n };\n raf = requestAnimationFrame(frame);\n }\n const observer = new ResizeObserver(() => render((performance.now() - start) / 1000));\n observer.observe(parent);\n\n return () => {\n cancelAnimationFrame(raf);\n observer.disconnect();\n gl.deleteProgram(sceneProg);\n gl.deleteProgram(ditherProg);\n gl.deleteTexture(noiseTex);\n gl.deleteTexture(sceneTex);\n gl.deleteFramebuffer(fbo);\n };\n }, []);\n\n return <canvas ref={ref} aria-hidden=\"true\" className={cn('size-full', className)} />;\n};\n"],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ "use client";
2
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
3
+ const require_utils = require("../../lib/utils.cjs");
4
+ let react = require("react");
5
+ react = require_runtime.__toESM(react, 1);
6
+ let class_variance_authority = require("class-variance-authority");
7
+ let _base_ui_react_merge_props = require("@base-ui/react/merge-props");
8
+ let _base_ui_react_use_render = require("@base-ui/react/use-render");
9
+ //#region src/components/grid/Grid.tsx
10
+ const gridVariants = (0, class_variance_authority.cva)("grid", {
11
+ variants: {
12
+ align: {
13
+ start: "items-start",
14
+ center: "items-center",
15
+ end: "items-end",
16
+ stretch: "items-stretch"
17
+ },
18
+ justify: {
19
+ start: "justify-start",
20
+ center: "justify-center",
21
+ end: "justify-end",
22
+ between: "justify-between",
23
+ around: "justify-around",
24
+ evenly: "justify-evenly"
25
+ }
26
+ },
27
+ defaultVariants: {
28
+ align: "stretch",
29
+ justify: "start"
30
+ }
31
+ });
32
+ const Grid = react.forwardRef(({ className, align, justify, cols, rows, gap, gapX, gapY, asChild = false, children, ...props }, ref) => {
33
+ return (0, _base_ui_react_use_render.useRender)({
34
+ ref,
35
+ defaultTagName: "div",
36
+ render: asChild ? children : void 0,
37
+ props: (0, _base_ui_react_merge_props.mergeProps)({
38
+ className: require_utils.cn(gridVariants({
39
+ align,
40
+ justify
41
+ }), cols !== void 0 && `grid-cols-${cols}`, rows !== void 0 && `grid-rows-${rows}`, gap !== void 0 && `gap-${gap}`, gapX !== void 0 && `gap-x-${gapX}`, gapY !== void 0 && `gap-y-${gapY}`, className),
42
+ children: asChild ? void 0 : children
43
+ }, props)
44
+ });
45
+ });
46
+ Grid.displayName = "Grid";
47
+ //#endregion
48
+ exports.Grid = Grid;
49
+ exports.gridVariants = gridVariants;
50
+
51
+ //# sourceMappingURL=Grid.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.cjs","names":["cva","React","useRender","mergeProps","cn"],"sources":["../../../src/components/grid/Grid.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\n\nconst gridVariants = cva('grid', {\n variants: {\n align: {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n },\n justify: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n },\n },\n defaultVariants: {\n align: 'stretch',\n justify: 'start',\n },\n});\n\nexport type SpacingScale =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 8\n | 10\n | 12\n | 16\n | 20\n | 24\n | 32\n | 40\n | 48\n | 56\n | 64\n | 72\n | 80\n | 96;\n\nexport type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;\n\nexport type GridRowsScale = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface GridProps\n extends useRender.ComponentProps<'div'>, VariantProps<typeof gridVariants> {\n children?: React.ReactNode;\n cols?: GridColsScale;\n rows?: GridRowsScale;\n gap?: SpacingScale;\n gapX?: SpacingScale;\n gapY?: SpacingScale;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n}\n\nconst Grid = React.forwardRef<HTMLElement, GridProps>(\n (\n { className, align, justify, cols, rows, gap, gapX, gapY, asChild = false, children, ...props },\n ref,\n ) => {\n return useRender({\n ref,\n defaultTagName: 'div',\n render: asChild ? (children as React.ReactElement) : undefined,\n props: mergeProps<'div'>(\n {\n className: cn(\n gridVariants({ align, justify }),\n cols !== undefined && `grid-cols-${cols}`,\n rows !== undefined && `grid-rows-${rows}`,\n gap !== undefined && `gap-${gap}`,\n gapX !== undefined && `gap-x-${gapX}`,\n gapY !== undefined && `gap-y-${gapY}`,\n className,\n ),\n children: asChild ? undefined : children,\n } as React.ComponentProps<'div'>,\n props,\n ),\n });\n },\n);\nGrid.displayName = 'Grid';\n\nexport { Grid, gridVariants };\n"],"mappings":";;;;;;;;;AAQA,MAAM,gBAAA,GAAeA,yBAAAA,IAAAA,CAAI,QAAQ;CAC/B,UAAU;EACR,OAAO;GACL,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;EACX;EACA,SAAS;GACP,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT,QAAQ;GACR,QAAQ;EACV;CACF;CACA,iBAAiB;EACf,OAAO;EACP,SAAS;CACX;AACF,CAAC;AAyCD,MAAM,OAAOC,MAAM,YAEf,EAAE,WAAW,OAAO,SAAS,MAAM,MAAM,KAAK,MAAM,MAAM,UAAU,OAAO,UAAU,GAAG,SACxF,QACG;CACH,QAAA,GAAOC,0BAAAA,UAAAA,CAAU;EACf;EACA,gBAAgB;EAChB,QAAQ,UAAW,WAAkC,KAAA;EACrD,QAAA,GAAOC,2BAAAA,WAAAA,CACL;GACE,WAAWC,cAAAA,GACT,aAAa;IAAE;IAAO;GAAQ,CAAC,GAC/B,SAAS,KAAA,KAAa,aAAa,QACnC,SAAS,KAAA,KAAa,aAAa,QACnC,QAAQ,KAAA,KAAa,OAAO,OAC5B,SAAS,KAAA,KAAa,SAAS,QAC/B,SAAS,KAAA,KAAa,SAAS,QAC/B,SACF;GACA,UAAU,UAAU,KAAA,IAAY;EAClC,GACA,KACF;CACF,CAAC;AACH,CACF;AACA,KAAK,cAAc"}
@@ -0,0 +1,25 @@
1
+ import * as React from "react";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import { useRender } from "@base-ui/react/use-render";
4
+ //#region src/components/grid/Grid.d.ts
5
+ declare const gridVariants: (props?: ({
6
+ align?: "center" | "start" | "end" | "stretch" | null | undefined;
7
+ justify?: "center" | "start" | "end" | "between" | "around" | "evenly" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ export type SpacingScale = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 | 96;
10
+ export type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;
11
+ export type GridRowsScale = 1 | 2 | 3 | 4 | 5 | 6;
12
+ export interface GridProps extends useRender.ComponentProps<'div'>, VariantProps<typeof gridVariants> {
13
+ children?: React.ReactNode;
14
+ cols?: GridColsScale;
15
+ rows?: GridRowsScale;
16
+ gap?: SpacingScale;
17
+ gapX?: SpacingScale;
18
+ gapY?: SpacingScale;
19
+ /** Render as a different element/component. Replaces the Radix `asChild` prop. */
20
+ asChild?: boolean;
21
+ }
22
+ declare const Grid: React.ForwardRefExoticComponent<Omit<GridProps, "ref"> & React.RefAttributes<HTMLElement>>;
23
+ //#endregion
24
+ export { Grid, gridVariants };
25
+ //# sourceMappingURL=Grid.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.d.cts","names":[],"sources":["../../../src/components/grid/Grid.tsx"],"mappings":";;;;cAQM,eAAY;;;6CAqBhB;YAEU;YAuBA;YAEA;iBAEK,kBACP,UAAU,uBAAuB,oBAAoB;EAC7D,WAAW,MAAM;EACjB,OAAO;EACP,OAAO;EACP,MAAM;EACN,OAAO;EACP,OAAO;;EAEP;;cAGI,MAAI,MAAA,0BAAA,KAAA,oBAAA,MAAA,cAAA"}
@@ -0,0 +1,25 @@
1
+ import * as React from "react";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import { useRender } from "@base-ui/react/use-render";
4
+ //#region src/components/grid/Grid.d.ts
5
+ declare const gridVariants: (props?: ({
6
+ align?: "center" | "start" | "end" | "stretch" | null | undefined;
7
+ justify?: "center" | "start" | "end" | "between" | "around" | "evenly" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ export type SpacingScale = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 | 96;
10
+ export type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;
11
+ export type GridRowsScale = 1 | 2 | 3 | 4 | 5 | 6;
12
+ export interface GridProps extends useRender.ComponentProps<'div'>, VariantProps<typeof gridVariants> {
13
+ children?: React.ReactNode;
14
+ cols?: GridColsScale;
15
+ rows?: GridRowsScale;
16
+ gap?: SpacingScale;
17
+ gapX?: SpacingScale;
18
+ gapY?: SpacingScale;
19
+ /** Render as a different element/component. Replaces the Radix `asChild` prop. */
20
+ asChild?: boolean;
21
+ }
22
+ declare const Grid: React.ForwardRefExoticComponent<Omit<GridProps, "ref"> & React.RefAttributes<HTMLElement>>;
23
+ //#endregion
24
+ export { Grid, gridVariants };
25
+ //# sourceMappingURL=Grid.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.d.mts","names":[],"sources":["../../../src/components/grid/Grid.tsx"],"mappings":";;;;cAQM,eAAY;;;6CAqBhB;YAEU;YAuBA;YAEA;iBAEK,kBACP,UAAU,uBAAuB,oBAAoB;EAC7D,WAAW,MAAM;EACjB,OAAO;EACP,OAAO;EACP,MAAM;EACN,OAAO;EACP,OAAO;;EAEP;;cAGI,MAAI,MAAA,0BAAA,KAAA,oBAAA,MAAA,cAAA"}
@@ -0,0 +1,48 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.mjs";
3
+ import * as React from "react";
4
+ import { cva } from "class-variance-authority";
5
+ import { mergeProps } from "@base-ui/react/merge-props";
6
+ import { useRender } from "@base-ui/react/use-render";
7
+ //#region src/components/grid/Grid.tsx
8
+ const gridVariants = cva("grid", {
9
+ variants: {
10
+ align: {
11
+ start: "items-start",
12
+ center: "items-center",
13
+ end: "items-end",
14
+ stretch: "items-stretch"
15
+ },
16
+ justify: {
17
+ start: "justify-start",
18
+ center: "justify-center",
19
+ end: "justify-end",
20
+ between: "justify-between",
21
+ around: "justify-around",
22
+ evenly: "justify-evenly"
23
+ }
24
+ },
25
+ defaultVariants: {
26
+ align: "stretch",
27
+ justify: "start"
28
+ }
29
+ });
30
+ const Grid = React.forwardRef(({ className, align, justify, cols, rows, gap, gapX, gapY, asChild = false, children, ...props }, ref) => {
31
+ return useRender({
32
+ ref,
33
+ defaultTagName: "div",
34
+ render: asChild ? children : void 0,
35
+ props: mergeProps({
36
+ className: cn(gridVariants({
37
+ align,
38
+ justify
39
+ }), cols !== void 0 && `grid-cols-${cols}`, rows !== void 0 && `grid-rows-${rows}`, gap !== void 0 && `gap-${gap}`, gapX !== void 0 && `gap-x-${gapX}`, gapY !== void 0 && `gap-y-${gapY}`, className),
40
+ children: asChild ? void 0 : children
41
+ }, props)
42
+ });
43
+ });
44
+ Grid.displayName = "Grid";
45
+ //#endregion
46
+ export { Grid, gridVariants };
47
+
48
+ //# sourceMappingURL=Grid.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.mjs","names":[],"sources":["../../../src/components/grid/Grid.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\n\nconst gridVariants = cva('grid', {\n variants: {\n align: {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n },\n justify: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n },\n },\n defaultVariants: {\n align: 'stretch',\n justify: 'start',\n },\n});\n\nexport type SpacingScale =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 8\n | 10\n | 12\n | 16\n | 20\n | 24\n | 32\n | 40\n | 48\n | 56\n | 64\n | 72\n | 80\n | 96;\n\nexport type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;\n\nexport type GridRowsScale = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface GridProps\n extends useRender.ComponentProps<'div'>, VariantProps<typeof gridVariants> {\n children?: React.ReactNode;\n cols?: GridColsScale;\n rows?: GridRowsScale;\n gap?: SpacingScale;\n gapX?: SpacingScale;\n gapY?: SpacingScale;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n}\n\nconst Grid = React.forwardRef<HTMLElement, GridProps>(\n (\n { className, align, justify, cols, rows, gap, gapX, gapY, asChild = false, children, ...props },\n ref,\n ) => {\n return useRender({\n ref,\n defaultTagName: 'div',\n render: asChild ? (children as React.ReactElement) : undefined,\n props: mergeProps<'div'>(\n {\n className: cn(\n gridVariants({ align, justify }),\n cols !== undefined && `grid-cols-${cols}`,\n rows !== undefined && `grid-rows-${rows}`,\n gap !== undefined && `gap-${gap}`,\n gapX !== undefined && `gap-x-${gapX}`,\n gapY !== undefined && `gap-y-${gapY}`,\n className,\n ),\n children: asChild ? undefined : children,\n } as React.ComponentProps<'div'>,\n props,\n ),\n });\n },\n);\nGrid.displayName = 'Grid';\n\nexport { Grid, gridVariants };\n"],"mappings":";;;;;;;AAQA,MAAM,eAAe,IAAI,QAAQ;CAC/B,UAAU;EACR,OAAO;GACL,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;EACX;EACA,SAAS;GACP,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT,QAAQ;GACR,QAAQ;EACV;CACF;CACA,iBAAiB;EACf,OAAO;EACP,SAAS;CACX;AACF,CAAC;AAyCD,MAAM,OAAO,MAAM,YAEf,EAAE,WAAW,OAAO,SAAS,MAAM,MAAM,KAAK,MAAM,MAAM,UAAU,OAAO,UAAU,GAAG,SACxF,QACG;CACH,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,QAAQ,UAAW,WAAkC,KAAA;EACrD,OAAO,WACL;GACE,WAAW,GACT,aAAa;IAAE;IAAO;GAAQ,CAAC,GAC/B,SAAS,KAAA,KAAa,aAAa,QACnC,SAAS,KAAA,KAAa,aAAa,QACnC,QAAQ,KAAA,KAAa,OAAO,OAC5B,SAAS,KAAA,KAAa,SAAS,QAC/B,SAAS,KAAA,KAAa,SAAS,QAC/B,SACF;GACA,UAAU,UAAU,KAAA,IAAY;EAClC,GACA,KACF;CACF,CAAC;AACH,CACF;AACA,KAAK,cAAc"}
@@ -0,0 +1,2 @@
1
+ import { Grid, GridColsScale, GridProps, GridRowsScale, SpacingScale, gridVariants } from "./Grid.cjs";
2
+ export { Grid, type GridColsScale, type GridProps, type GridRowsScale, type SpacingScale, gridVariants };
@@ -0,0 +1,2 @@
1
+ import { Grid, GridColsScale, GridProps, GridRowsScale, SpacingScale, gridVariants } from "./Grid.mjs";
2
+ export { Grid, type GridColsScale, type GridProps, type GridRowsScale, type SpacingScale, gridVariants };
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
3
+ const require_utils = require("../../lib/utils.cjs");
4
+ let react = require("react");
5
+ react = require_runtime.__toESM(react, 1);
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ //#region src/components/icon/Icon.tsx
8
+ const iconStrokeMap = {
9
+ 12: 1.4,
10
+ 16: 1.4,
11
+ 24: 1.6,
12
+ 32: 1.8
13
+ };
14
+ const Icon = react.forwardRef(({ icon: IconComponent, size, className, "aria-label": ariaLabel, "aria-hidden": ariaHidden = true, ...props }, ref) => {
15
+ const strokeWidth = iconStrokeMap[size];
16
+ const sizeClass = size === 12 ? "w-3 h-3" : size === 16 ? "w-4 h-4" : size === 24 ? "w-6 h-6" : "w-8 h-8";
17
+ const ariaAttributes = ariaLabel ? { "aria-label": ariaLabel } : { "aria-hidden": ariaHidden };
18
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconComponent, {
19
+ ref,
20
+ className: require_utils.cn(sizeClass, className),
21
+ strokeWidth,
22
+ ...ariaAttributes,
23
+ ...props
24
+ });
25
+ });
26
+ Icon.displayName = "Icon";
27
+ //#endregion
28
+ exports.Icon = Icon;
29
+
30
+ //# sourceMappingURL=Icon.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.cjs","names":["React","cn"],"sources":["../../../src/components/icon/Icon.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { LucideIcon, LucideProps } from 'lucide-react';\nimport { cn } from '../../lib/utils';\n\nexport interface IconProps extends Omit<LucideProps, 'size'> {\n icon: LucideIcon;\n size: 12 | 16 | 24 | 32;\n className?: string;\n 'aria-label'?: string;\n 'aria-hidden'?: boolean;\n}\n\nconst iconStrokeMap: Record<IconProps['size'], number> = {\n 12: 1.4,\n 16: 1.4,\n 24: 1.6,\n 32: 1.8,\n};\n\nconst Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n icon: IconComponent,\n size,\n className,\n 'aria-label': ariaLabel,\n 'aria-hidden': ariaHidden = true,\n ...props\n },\n ref,\n ) => {\n const strokeWidth = iconStrokeMap[size];\n const sizeClass =\n size === 12 ? 'w-3 h-3' : size === 16 ? 'w-4 h-4' : size === 24 ? 'w-6 h-6' : 'w-8 h-8';\n\n const ariaAttributes = ariaLabel ? { 'aria-label': ariaLabel } : { 'aria-hidden': ariaHidden };\n\n return (\n <IconComponent\n ref={ref}\n className={cn(sizeClass, className)}\n strokeWidth={strokeWidth}\n {...ariaAttributes}\n {...props}\n />\n );\n },\n);\n\nIcon.displayName = 'Icon';\n\nexport { Icon };\n"],"mappings":";;;;;;;AAcA,MAAM,gBAAmD;CACvD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,MAAM,OAAOA,MAAM,YAEf,EACE,MAAM,eACN,MACA,WACA,cAAc,WACd,eAAe,aAAa,MAC5B,GAAG,SAEL,QACG;CACH,MAAM,cAAc,cAAc;CAClC,MAAM,YACJ,SAAS,KAAK,YAAY,SAAS,KAAK,YAAY,SAAS,KAAK,YAAY;CAEhF,MAAM,iBAAiB,YAAY,EAAE,cAAc,UAAU,IAAI,EAAE,eAAe,WAAW;CAE7F,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD;EACO;EACL,WAAWC,cAAAA,GAAG,WAAW,SAAS;EACrB;EACb,GAAI;EACJ,GAAI;CACL,CAAA;AAEL,CACF;AAEA,KAAK,cAAc"}