@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":"DropdownMenu.mjs","names":["DropdownMenuTriggerPrimitive","DropdownMenuSubTriggerPrimitive","DropdownMenuSubContentPrimitive","DropdownMenuContentPrimitive","DropdownMenuItemPrimitive","DropdownMenuCheckboxItemPrimitive","DropdownMenuRadioItemPrimitive","DropdownMenuLabelPrimitive","DropdownMenuSeparatorPrimitive","DropdownMenuShortcutPrimitive"],"sources":["../../../src/components/dropdown-menu/DropdownMenu.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport {\n DropdownMenuCheckboxItem as DropdownMenuCheckboxItemPrimitive,\n DropdownMenuContent as DropdownMenuContentPrimitive,\n DropdownMenuItem as DropdownMenuItemPrimitive,\n DropdownMenuLabel as DropdownMenuLabelPrimitive,\n DropdownMenuRadioItem as DropdownMenuRadioItemPrimitive,\n DropdownMenuSeparator as DropdownMenuSeparatorPrimitive,\n DropdownMenuShortcut as DropdownMenuShortcutPrimitive,\n DropdownMenuSubContent as DropdownMenuSubContentPrimitive,\n DropdownMenuSubTrigger as DropdownMenuSubTriggerPrimitive,\n DropdownMenuTrigger as DropdownMenuTriggerPrimitive,\n} from '../../primitives/dropdown-menu';\nimport { cn, asChildRender } from '../../lib/utils';\n\n/* ------------------------------------------------------------------ */\n/* Root & inert sub-components (re-exported from the primitive) */\n/* ------------------------------------------------------------------ */\n\nexport {\n DropdownMenu,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuRadioGroup,\n} from '../../primitives/dropdown-menu';\n\n/* ------------------------------------------------------------------ */\n/* Trigger */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuTriggerProps = Omit<\n React.ComponentProps<typeof DropdownMenuTriggerPrimitive>,\n 'className' | 'render'\n> & {\n className?: string;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n};\n\nconst DropdownMenuTrigger = React.forwardRef<HTMLButtonElement, DropdownMenuTriggerProps>(\n ({ asChild, children, ...props }, ref) => (\n <DropdownMenuTriggerPrimitive ref={ref} render={asChildRender(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DropdownMenuTriggerPrimitive>\n ),\n);\nDropdownMenuTrigger.displayName = 'DropdownMenuTrigger';\n\n/* ------------------------------------------------------------------ */\n/* SubTrigger */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuSubTriggerProps = Omit<\n React.ComponentProps<typeof DropdownMenuSubTriggerPrimitive>,\n 'className' | 'render'\n> & {\n className?: string;\n inset?: boolean;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n};\n\nconst DropdownMenuSubTrigger = React.forwardRef<HTMLDivElement, DropdownMenuSubTriggerProps>(\n ({ className, inset, asChild, children, ...props }, ref) => (\n <DropdownMenuSubTriggerPrimitive\n ref={ref}\n className={cn(\n // Berget density & radius; focus/accent styling comes from the primitive.\n 'gap-2 rounded-berget-xs px-2 py-1.5',\n inset && 'pl-8',\n className,\n )}\n render={asChildRender(asChild, children)}\n {...props}\n >\n {asChild ? undefined : children}\n </DropdownMenuSubTriggerPrimitive>\n ),\n);\nDropdownMenuSubTrigger.displayName = 'DropdownMenuSubTrigger';\n\n/* ------------------------------------------------------------------ */\n/* SubContent */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuSubContentProps = React.ComponentProps<typeof DropdownMenuSubContentPrimitive>;\n\nconst DropdownMenuSubContent = React.forwardRef<HTMLDivElement, DropdownMenuSubContentProps>(\n ({ className, ...props }, ref) => (\n <DropdownMenuSubContentPrimitive\n ref={ref}\n className={cn(\n 'rounded-berget-xs bg-berget-popover text-berget-popover-foreground shadow-berget-lg',\n className,\n )}\n {...props}\n />\n ),\n);\nDropdownMenuSubContent.displayName = 'DropdownMenuSubContent';\n\n/* ------------------------------------------------------------------ */\n/* Content */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuContentProps = React.ComponentProps<typeof DropdownMenuContentPrimitive>;\n\nconst DropdownMenuContent = React.forwardRef<HTMLDivElement, DropdownMenuContentProps>(\n ({ className, ...props }, ref) => (\n <DropdownMenuContentPrimitive\n ref={ref}\n className={cn(\n 'rounded-berget-xs bg-berget-popover text-berget-popover-foreground shadow-berget-md',\n className,\n )}\n {...props}\n />\n ),\n);\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\n/* ------------------------------------------------------------------ */\n/* Item */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuItemProps = Omit<\n React.ComponentProps<typeof DropdownMenuItemPrimitive>,\n 'className' | 'render' | 'label'\n> & {\n className?: string;\n inset?: boolean;\n /** Typeahead label. Replaces the Radix `textValue` prop. */\n textValue?: string;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n};\n\nconst DropdownMenuItem = React.forwardRef<HTMLDivElement, DropdownMenuItemProps>(\n ({ className, inset, asChild, children, textValue, ...props }, ref) => (\n <DropdownMenuItemPrimitive\n ref={ref}\n label={textValue}\n className={cn(\n // Berget density & radius; focus accent and destructive variant from the primitive.\n 'gap-2 rounded-berget-xs px-2 py-1.5',\n inset && 'pl-8',\n className,\n )}\n render={asChildRender(asChild, children)}\n {...props}\n >\n {asChild ? undefined : children}\n </DropdownMenuItemPrimitive>\n ),\n);\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\n/* ------------------------------------------------------------------ */\n/* CheckboxItem */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuCheckboxItemProps = Omit<\n React.ComponentProps<typeof DropdownMenuCheckboxItemPrimitive>,\n 'className' | 'render' | 'label'\n> & {\n className?: string;\n /** Typeahead label. Replaces the Radix `textValue` prop. */\n textValue?: string;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n};\n\nconst DropdownMenuCheckboxItem = React.forwardRef<HTMLDivElement, DropdownMenuCheckboxItemProps>(\n ({ className, children, asChild, textValue, ...props }, ref) => (\n <DropdownMenuCheckboxItemPrimitive\n ref={ref}\n label={textValue}\n className={cn('rounded-berget-xs', className)}\n render={asChildRender(asChild, children)}\n {...props}\n >\n {asChild ? undefined : children}\n </DropdownMenuCheckboxItemPrimitive>\n ),\n);\nDropdownMenuCheckboxItem.displayName = 'DropdownMenuCheckboxItem';\n\n/* ------------------------------------------------------------------ */\n/* RadioItem */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuRadioItemProps = Omit<\n React.ComponentProps<typeof DropdownMenuRadioItemPrimitive>,\n 'className' | 'render' | 'label'\n> & {\n className?: string;\n /** Typeahead label. Replaces the Radix `textValue` prop. */\n textValue?: string;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n};\n\nconst DropdownMenuRadioItem = React.forwardRef<HTMLDivElement, DropdownMenuRadioItemProps>(\n ({ className, children, asChild, textValue, ...props }, ref) => (\n <DropdownMenuRadioItemPrimitive\n ref={ref}\n label={textValue}\n className={cn('rounded-berget-xs', className)}\n render={asChildRender(asChild, children)}\n {...props}\n >\n {asChild ? undefined : children}\n </DropdownMenuRadioItemPrimitive>\n ),\n);\nDropdownMenuRadioItem.displayName = 'DropdownMenuRadioItem';\n\n/* ------------------------------------------------------------------ */\n/* Label */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuLabelProps = Omit<\n React.ComponentProps<typeof DropdownMenuLabelPrimitive>,\n 'className' | 'render'\n> & {\n className?: string;\n inset?: boolean;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n};\n\nconst DropdownMenuLabel = React.forwardRef<HTMLDivElement, DropdownMenuLabelProps>(\n ({ className, inset, asChild, children, ...props }, ref) => (\n <DropdownMenuLabelPrimitive\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-sm font-semibold text-berget-foreground',\n inset && 'pl-8',\n className,\n )}\n render={asChildRender(asChild, children)}\n {...props}\n >\n {asChild ? undefined : children}\n </DropdownMenuLabelPrimitive>\n ),\n);\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n\n/* ------------------------------------------------------------------ */\n/* Separator */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuSeparatorProps = Omit<\n React.ComponentProps<typeof DropdownMenuSeparatorPrimitive>,\n 'className'\n> & { className?: string };\n\nconst DropdownMenuSeparator = React.forwardRef<HTMLDivElement, DropdownMenuSeparatorProps>(\n ({ className, ...props }, ref) => (\n <DropdownMenuSeparatorPrimitive\n ref={ref}\n className={cn('bg-berget-separator', className)}\n {...props}\n />\n ),\n);\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\n\n/* ------------------------------------------------------------------ */\n/* Shortcut */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuShortcutProps = React.ComponentProps<typeof DropdownMenuShortcutPrimitive>;\n\nconst DropdownMenuShortcut = ({ className, ...props }: DropdownMenuShortcutProps) => {\n return (\n <DropdownMenuShortcutPrimitive\n className={cn('text-berget-muted-foreground', className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n\n/* ------------------------------------------------------------------ */\n/* Exports */\n/* ------------------------------------------------------------------ */\n\nexport {\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n};\n"],"mappings":";;;;;;AA2CA,MAAM,sBAAsB,MAAM,YAC/B,EAAE,SAAS,UAAU,GAAG,SAAS,QAChC,oBAACA,uBAAD;CAAmC;CAAK,QAAQ,cAAc,SAAS,QAAQ;CAAG,GAAI;CACnF,UAAA,UAAU,KAAA,IAAY;AACK,CAAA,CAElC;AACA,oBAAoB,cAAc;AAgBlC,MAAM,yBAAyB,MAAM,YAClC,EAAE,WAAW,OAAO,SAAS,UAAU,GAAG,SAAS,QAClD,oBAACC,0BAAD;CACO;CACL,WAAW,GAET,uCACA,SAAS,QACT,SACF;CACA,QAAQ,cAAc,SAAS,QAAQ;CACvC,GAAI;CAEH,UAAA,UAAU,KAAA,IAAY;AACQ,CAAA,CAErC;AACA,uBAAuB,cAAc;AAQrC,MAAM,yBAAyB,MAAM,YAClC,EAAE,WAAW,GAAG,SAAS,QACxB,oBAACC,0BAAD;CACO;CACL,WAAW,GACT,uFACA,SACF;CACA,GAAI;AACL,CAAA,CAEL;AACA,uBAAuB,cAAc;AAQrC,MAAM,sBAAsB,MAAM,YAC/B,EAAE,WAAW,GAAG,SAAS,QACxB,oBAACC,uBAAD;CACO;CACL,WAAW,GACT,uFACA,SACF;CACA,GAAI;AACL,CAAA,CAEL;AACA,oBAAoB,cAAc;AAkBlC,MAAM,mBAAmB,MAAM,YAC5B,EAAE,WAAW,OAAO,SAAS,UAAU,WAAW,GAAG,SAAS,QAC7D,oBAACC,oBAAD;CACO;CACL,OAAO;CACP,WAAW,GAET,uCACA,SAAS,QACT,SACF;CACA,QAAQ,cAAc,SAAS,QAAQ;CACvC,GAAI;CAEH,UAAA,UAAU,KAAA,IAAY;AACE,CAAA,CAE/B;AACA,iBAAiB,cAAc;AAiB/B,MAAM,2BAA2B,MAAM,YACpC,EAAE,WAAW,UAAU,SAAS,WAAW,GAAG,SAAS,QACtD,oBAACC,4BAAD;CACO;CACL,OAAO;CACP,WAAW,GAAG,qBAAqB,SAAS;CAC5C,QAAQ,cAAc,SAAS,QAAQ;CACvC,GAAI;CAEH,UAAA,UAAU,KAAA,IAAY;AACU,CAAA,CAEvC;AACA,yBAAyB,cAAc;AAiBvC,MAAM,wBAAwB,MAAM,YACjC,EAAE,WAAW,UAAU,SAAS,WAAW,GAAG,SAAS,QACtD,oBAACC,yBAAD;CACO;CACL,OAAO;CACP,WAAW,GAAG,qBAAqB,SAAS;CAC5C,QAAQ,cAAc,SAAS,QAAQ;CACvC,GAAI;CAEH,UAAA,UAAU,KAAA,IAAY;AACO,CAAA,CAEpC;AACA,sBAAsB,cAAc;AAgBpC,MAAM,oBAAoB,MAAM,YAC7B,EAAE,WAAW,OAAO,SAAS,UAAU,GAAG,SAAS,QAClD,oBAACC,qBAAD;CACO;CACL,WAAW,GACT,4DACA,SAAS,QACT,SACF;CACA,QAAQ,cAAc,SAAS,QAAQ;CACvC,GAAI;CAEH,UAAA,UAAU,KAAA,IAAY;AACG,CAAA,CAEhC;AACA,kBAAkB,cAAc;AAWhC,MAAM,wBAAwB,MAAM,YACjC,EAAE,WAAW,GAAG,SAAS,QACxB,oBAACC,yBAAD;CACO;CACL,WAAW,GAAG,uBAAuB,SAAS;CAC9C,GAAI;AACL,CAAA,CAEL;AACA,sBAAsB,cAAc;AAQpC,MAAM,wBAAwB,EAAE,WAAW,GAAG,YAAuC;CACnF,OACE,oBAACC,wBAAD;EACE,WAAW,GAAG,gCAAgC,SAAS;EACvD,GAAI;CACL,CAAA;AAEL;AACA,qBAAqB,cAAc"}
@@ -0,0 +1,3 @@
1
+ import { DropdownMenu, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuSub } from "../../primitives/dropdown-menu.cjs";
2
+ import { DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "./DropdownMenu.cjs";
3
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
@@ -0,0 +1,3 @@
1
+ import { DropdownMenu, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuSub } from "../../primitives/dropdown-menu.mjs";
2
+ import { DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "./DropdownMenu.mjs";
3
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
@@ -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
+ const require_empty = require("../../primitives/empty.cjs");
5
+ let react = require("react");
6
+ react = require_runtime.__toESM(react, 1);
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ //#region src/components/empty/Empty.tsx
9
+ /** Empty — pass-through; the primitive contains no Berget-incompatible styling. */
10
+ function Empty({ className, ...props }) {
11
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_empty.Empty, {
12
+ className,
13
+ ...props
14
+ });
15
+ }
16
+ /** EmptyMedia — override icon-variant background/foreground with Berget tokens. */
17
+ const EmptyMedia = react.forwardRef(({ className, ...props }, ref) => {
18
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_empty.EmptyMedia, {
19
+ ref,
20
+ className: require_utils.cn("data-[variant=icon]:bg-berget-empty-media-icon-bg data-[variant=icon]:text-berget-empty-media-icon-fg", className),
21
+ ...props
22
+ });
23
+ });
24
+ EmptyMedia.displayName = "EmptyMedia";
25
+ /** EmptyTitle — explicit semantic foreground + larger size (primitive defaults to text-sm). */
26
+ const EmptyTitle = react.forwardRef(({ className, ...props }, ref) => {
27
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_empty.EmptyTitle, {
28
+ ref,
29
+ className: require_utils.cn("text-base text-berget-empty-title-fg", className),
30
+ ...props
31
+ });
32
+ });
33
+ EmptyTitle.displayName = "EmptyTitle";
34
+ /** EmptyDescription — override muted text colour. */
35
+ const EmptyDescription = react.forwardRef(({ className, ...props }, ref) => {
36
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_empty.EmptyDescription, {
37
+ ref,
38
+ className: require_utils.cn("text-berget-empty-description-fg", className),
39
+ ...props
40
+ });
41
+ });
42
+ EmptyDescription.displayName = "EmptyDescription";
43
+ //#endregion
44
+ exports.Empty = Empty;
45
+ exports.EmptyContent = require_empty.EmptyContent;
46
+ exports.EmptyDescription = EmptyDescription;
47
+ exports.EmptyHeader = require_empty.EmptyHeader;
48
+ exports.EmptyMedia = EmptyMedia;
49
+ exports.EmptyTitle = EmptyTitle;
50
+
51
+ //# sourceMappingURL=Empty.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Empty.cjs","names":["EmptyPrimitive","React","EmptyMediaPrimitive","cn","EmptyTitlePrimitive","EmptyDescriptionPrimitive"],"sources":["../../../src/components/empty/Empty.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n Empty as EmptyPrimitive,\n EmptyHeader,\n EmptyContent,\n EmptyMedia as EmptyMediaPrimitive,\n EmptyTitle as EmptyTitlePrimitive,\n EmptyDescription as EmptyDescriptionPrimitive,\n} from '@/primitives/empty';\n\nexport type EmptyProps = React.ComponentProps<typeof EmptyPrimitive>;\n\n/** Empty — pass-through; the primitive contains no Berget-incompatible styling. */\nexport function Empty({ className, ...props }: EmptyProps) {\n return <EmptyPrimitive className={className} {...props} />;\n}\n\n/** Re-export unchanged sub-components. */\nexport { EmptyHeader, EmptyContent };\n\n/** EmptyMedia — override icon-variant background/foreground with Berget tokens. */\nexport const EmptyMedia = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof EmptyMediaPrimitive>\n>(({ className, ...props }, ref) => {\n return (\n <EmptyMediaPrimitive\n ref={ref}\n className={cn(\n 'data-[variant=icon]:bg-berget-empty-media-icon-bg data-[variant=icon]:text-berget-empty-media-icon-fg',\n className,\n )}\n {...props}\n />\n );\n});\nEmptyMedia.displayName = 'EmptyMedia';\n\n/** EmptyTitle — explicit semantic foreground + larger size (primitive defaults to text-sm). */\nexport const EmptyTitle = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof EmptyTitlePrimitive>\n>(({ className, ...props }, ref) => {\n return (\n <EmptyTitlePrimitive\n ref={ref}\n className={cn('text-base text-berget-empty-title-fg', className)}\n {...props}\n />\n );\n});\nEmptyTitle.displayName = 'EmptyTitle';\n\n/** EmptyDescription — override muted text colour. */\nexport const EmptyDescription = React.forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<typeof EmptyDescriptionPrimitive>\n>(({ className, ...props }, ref) => {\n return (\n <EmptyDescriptionPrimitive\n ref={ref}\n className={cn('text-berget-empty-description-fg', className)}\n {...props}\n />\n );\n});\nEmptyDescription.displayName = 'EmptyDescription';\n"],"mappings":";;;;;;;;;AAgBA,SAAgB,MAAM,EAAE,WAAW,GAAG,SAAqB;CACzD,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACA,cAAAA,OAAD;EAA2B;EAAW,GAAI;CAAQ,CAAA;AAC3D;;AAMA,MAAa,aAAaC,MAAM,YAG7B,EAAE,WAAW,GAAG,SAAS,QAAQ;CAClC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,YAAD;EACO;EACL,WAAWC,cAAAA,GACT,yGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL,CAAC;AACD,WAAW,cAAc;;AAGzB,MAAa,aAAaF,MAAM,YAG7B,EAAE,WAAW,GAAG,SAAS,QAAQ;CAClC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACG,cAAAA,YAAD;EACO;EACL,WAAWD,cAAAA,GAAG,wCAAwC,SAAS;EAC/D,GAAI;CACL,CAAA;AAEL,CAAC;AACD,WAAW,cAAc;;AAGzB,MAAa,mBAAmBF,MAAM,YAGnC,EAAE,WAAW,GAAG,SAAS,QAAQ;CAClC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACI,cAAAA,kBAAD;EACO;EACL,WAAWF,cAAAA,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL,CAAC;AACD,iBAAiB,cAAc"}
@@ -0,0 +1,17 @@
1
+ import { Empty as Empty$1, EmptyContent, EmptyHeader } from "../../primitives/empty.cjs";
2
+ import * as React from "react";
3
+ //#region src/components/empty/Empty.d.ts
4
+ export type EmptyProps = React.ComponentProps<typeof Empty$1>;
5
+ /** Empty — pass-through; the primitive contains no Berget-incompatible styling. */
6
+ export declare function Empty({ className, ...props }: EmptyProps): import("react/jsx-runtime").JSX.Element;
7
+ /** EmptyMedia — override icon-variant background/foreground with Berget tokens. */
8
+ export declare const EmptyMedia: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & import("class-variance-authority").VariantProps<(props?: ({
9
+ variant?: "default" | "icon" | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
+ /** EmptyTitle — explicit semantic foreground + larger size (primitive defaults to text-sm). */
12
+ export declare const EmptyTitle: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ /** EmptyDescription — override muted text colour. */
14
+ export declare const EmptyDescription: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLParagraphElement> & React.HTMLAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
15
+ //#endregion
16
+ export { EmptyContent, EmptyHeader };
17
+ //# sourceMappingURL=Empty.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Empty.d.cts","names":["EmptyPrimitive"],"sources":["../../../src/components/empty/Empty.tsx"],"mappings":";;;YAaY,aAAa,MAAM,sBAAsBA;;wBAGrC,QAAQ,cAAc,SAAS,yCAAU,IAAA;;qBAQ5C,YAAU,MAAA,0BAAA,KAAA,MAAA,gBAAA,kBAAA,MAAA,eAAA,qDAAA,cAAA;;6CAcrB,6CAAA,MAAA,cAAA;;qBAIW,YAAU,MAAA,0BAAA,KAAA,MAAA,gBAAA,kBAAA,MAAA,eAAA,0BAAA,MAAA,cAAA;;qBAeV,kBAAgB,MAAA,0BAAA,KAAA,MAAA,gBAAA,wBAAA,MAAA,eAAA,gCAAA,MAAA,cAAA"}
@@ -0,0 +1,17 @@
1
+ import { Empty as Empty$1, EmptyContent, EmptyHeader } from "../../primitives/empty.mjs";
2
+ import * as React from "react";
3
+ //#region src/components/empty/Empty.d.ts
4
+ export type EmptyProps = React.ComponentProps<typeof Empty$1>;
5
+ /** Empty — pass-through; the primitive contains no Berget-incompatible styling. */
6
+ export declare function Empty({ className, ...props }: EmptyProps): import("react/jsx-runtime").JSX.Element;
7
+ /** EmptyMedia — override icon-variant background/foreground with Berget tokens. */
8
+ export declare const EmptyMedia: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & import("class-variance-authority").VariantProps<(props?: ({
9
+ variant?: "default" | "icon" | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
+ /** EmptyTitle — explicit semantic foreground + larger size (primitive defaults to text-sm). */
12
+ export declare const EmptyTitle: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ /** EmptyDescription — override muted text colour. */
14
+ export declare const EmptyDescription: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLParagraphElement> & React.HTMLAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
15
+ //#endregion
16
+ export { EmptyContent, EmptyHeader };
17
+ //# sourceMappingURL=Empty.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Empty.d.mts","names":["EmptyPrimitive"],"sources":["../../../src/components/empty/Empty.tsx"],"mappings":";;;YAaY,aAAa,MAAM,sBAAsBA;;wBAGrC,QAAQ,cAAc,SAAS,yCAAU,IAAA;;qBAQ5C,YAAU,MAAA,0BAAA,KAAA,MAAA,gBAAA,kBAAA,MAAA,eAAA,qDAAA,cAAA;;6CAcrB,6CAAA,MAAA,cAAA;;qBAIW,YAAU,MAAA,0BAAA,KAAA,MAAA,gBAAA,kBAAA,MAAA,eAAA,0BAAA,MAAA,cAAA;;qBAeV,kBAAgB,MAAA,0BAAA,KAAA,MAAA,gBAAA,wBAAA,MAAA,eAAA,gCAAA,MAAA,cAAA"}
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.mjs";
3
+ import { Empty as Empty$1, EmptyContent, EmptyDescription as EmptyDescription$1, EmptyHeader, EmptyMedia as EmptyMedia$1, EmptyTitle as EmptyTitle$1 } from "../../primitives/empty.mjs";
4
+ import * as React from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/components/empty/Empty.tsx
7
+ /** Empty — pass-through; the primitive contains no Berget-incompatible styling. */
8
+ function Empty({ className, ...props }) {
9
+ return /* @__PURE__ */ jsx(Empty$1, {
10
+ className,
11
+ ...props
12
+ });
13
+ }
14
+ /** EmptyMedia — override icon-variant background/foreground with Berget tokens. */
15
+ const EmptyMedia = React.forwardRef(({ className, ...props }, ref) => {
16
+ return /* @__PURE__ */ jsx(EmptyMedia$1, {
17
+ ref,
18
+ className: cn("data-[variant=icon]:bg-berget-empty-media-icon-bg data-[variant=icon]:text-berget-empty-media-icon-fg", className),
19
+ ...props
20
+ });
21
+ });
22
+ EmptyMedia.displayName = "EmptyMedia";
23
+ /** EmptyTitle — explicit semantic foreground + larger size (primitive defaults to text-sm). */
24
+ const EmptyTitle = React.forwardRef(({ className, ...props }, ref) => {
25
+ return /* @__PURE__ */ jsx(EmptyTitle$1, {
26
+ ref,
27
+ className: cn("text-base text-berget-empty-title-fg", className),
28
+ ...props
29
+ });
30
+ });
31
+ EmptyTitle.displayName = "EmptyTitle";
32
+ /** EmptyDescription — override muted text colour. */
33
+ const EmptyDescription = React.forwardRef(({ className, ...props }, ref) => {
34
+ return /* @__PURE__ */ jsx(EmptyDescription$1, {
35
+ ref,
36
+ className: cn("text-berget-empty-description-fg", className),
37
+ ...props
38
+ });
39
+ });
40
+ EmptyDescription.displayName = "EmptyDescription";
41
+ //#endregion
42
+ export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
43
+
44
+ //# sourceMappingURL=Empty.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Empty.mjs","names":["EmptyPrimitive","EmptyMediaPrimitive","EmptyTitlePrimitive","EmptyDescriptionPrimitive"],"sources":["../../../src/components/empty/Empty.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n Empty as EmptyPrimitive,\n EmptyHeader,\n EmptyContent,\n EmptyMedia as EmptyMediaPrimitive,\n EmptyTitle as EmptyTitlePrimitive,\n EmptyDescription as EmptyDescriptionPrimitive,\n} from '@/primitives/empty';\n\nexport type EmptyProps = React.ComponentProps<typeof EmptyPrimitive>;\n\n/** Empty — pass-through; the primitive contains no Berget-incompatible styling. */\nexport function Empty({ className, ...props }: EmptyProps) {\n return <EmptyPrimitive className={className} {...props} />;\n}\n\n/** Re-export unchanged sub-components. */\nexport { EmptyHeader, EmptyContent };\n\n/** EmptyMedia — override icon-variant background/foreground with Berget tokens. */\nexport const EmptyMedia = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof EmptyMediaPrimitive>\n>(({ className, ...props }, ref) => {\n return (\n <EmptyMediaPrimitive\n ref={ref}\n className={cn(\n 'data-[variant=icon]:bg-berget-empty-media-icon-bg data-[variant=icon]:text-berget-empty-media-icon-fg',\n className,\n )}\n {...props}\n />\n );\n});\nEmptyMedia.displayName = 'EmptyMedia';\n\n/** EmptyTitle — explicit semantic foreground + larger size (primitive defaults to text-sm). */\nexport const EmptyTitle = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof EmptyTitlePrimitive>\n>(({ className, ...props }, ref) => {\n return (\n <EmptyTitlePrimitive\n ref={ref}\n className={cn('text-base text-berget-empty-title-fg', className)}\n {...props}\n />\n );\n});\nEmptyTitle.displayName = 'EmptyTitle';\n\n/** EmptyDescription — override muted text colour. */\nexport const EmptyDescription = React.forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<typeof EmptyDescriptionPrimitive>\n>(({ className, ...props }, ref) => {\n return (\n <EmptyDescriptionPrimitive\n ref={ref}\n className={cn('text-berget-empty-description-fg', className)}\n {...props}\n />\n );\n});\nEmptyDescription.displayName = 'EmptyDescription';\n"],"mappings":";;;;;;;AAgBA,SAAgB,MAAM,EAAE,WAAW,GAAG,SAAqB;CACzD,OAAO,oBAACA,SAAD;EAA2B;EAAW,GAAI;CAAQ,CAAA;AAC3D;;AAMA,MAAa,aAAa,MAAM,YAG7B,EAAE,WAAW,GAAG,SAAS,QAAQ;CAClC,OACE,oBAACC,cAAD;EACO;EACL,WAAW,GACT,yGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL,CAAC;AACD,WAAW,cAAc;;AAGzB,MAAa,aAAa,MAAM,YAG7B,EAAE,WAAW,GAAG,SAAS,QAAQ;CAClC,OACE,oBAACC,cAAD;EACO;EACL,WAAW,GAAG,wCAAwC,SAAS;EAC/D,GAAI;CACL,CAAA;AAEL,CAAC;AACD,WAAW,cAAc;;AAGzB,MAAa,mBAAmB,MAAM,YAGnC,EAAE,WAAW,GAAG,SAAS,QAAQ;CAClC,OACE,oBAACC,oBAAD;EACO;EACL,WAAW,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL,CAAC;AACD,iBAAiB,cAAc"}
@@ -0,0 +1,3 @@
1
+ import { EmptyContent, EmptyHeader } from "../../primitives/empty.cjs";
2
+ import { Empty, EmptyDescription, EmptyMedia, EmptyProps, EmptyTitle } from "./Empty.cjs";
3
+ export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, type EmptyProps, EmptyTitle };
@@ -0,0 +1,3 @@
1
+ import { EmptyContent, EmptyHeader } from "../../primitives/empty.mjs";
2
+ import { Empty, EmptyDescription, EmptyMedia, EmptyProps, EmptyTitle } from "./Empty.mjs";
3
+ export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, type EmptyProps, EmptyTitle };
@@ -0,0 +1,2 @@
1
+ import { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle } from "../../primitives/field.cjs";
2
+ export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle };
@@ -0,0 +1,2 @@
1
+ import { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle } from "../../primitives/field.mjs";
2
+ export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle };
@@ -0,0 +1,342 @@
1
+ "use client";
2
+ const require_utils = require("../../lib/utils.cjs");
3
+ let react = require("react");
4
+ let react_jsx_runtime = require("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 = (0, react.useRef)(null);
211
+ const live = (0, react.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
+ (0, react.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__ */ (0, react_jsx_runtime.jsx)("canvas", {
333
+ ref,
334
+ "aria-hidden": "true",
335
+ className: require_utils.cn("size-full", className)
336
+ });
337
+ };
338
+ //#endregion
339
+ exports.FOG_BRAND_PALETTE = FOG_BRAND_PALETTE;
340
+ exports.FogIllustration = FogIllustration;
341
+
342
+ //# sourceMappingURL=FogIllustration.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FogIllustration.cjs","names":["useRef","cn"],"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,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.cts.map