@bergetai/ui 0.14.1 → 0.15.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.
- package/README.md +32 -46
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/components/alert/Alert.cjs +31 -0
- package/dist/components/alert/Alert.cjs.map +1 -0
- package/dist/components/alert/Alert.d.cts +14 -0
- package/dist/components/alert/Alert.d.cts.map +1 -0
- package/dist/components/alert/Alert.d.mts +14 -0
- package/dist/components/alert/Alert.d.mts.map +1 -0
- package/dist/components/alert/Alert.mjs +27 -0
- package/dist/components/alert/Alert.mjs.map +1 -0
- package/dist/components/alert/index.d.cts +3 -0
- package/dist/components/alert/index.d.mts +3 -0
- package/dist/components/alert-dialog/AlertDialog.cjs +95 -0
- package/dist/components/alert-dialog/AlertDialog.cjs.map +1 -0
- package/dist/components/alert-dialog/AlertDialog.d.cts +46 -0
- package/dist/components/alert-dialog/AlertDialog.d.cts.map +1 -0
- package/dist/components/alert-dialog/AlertDialog.d.mts +46 -0
- package/dist/components/alert-dialog/AlertDialog.d.mts.map +1 -0
- package/dist/components/alert-dialog/AlertDialog.mjs +83 -0
- package/dist/components/alert-dialog/AlertDialog.mjs.map +1 -0
- package/dist/components/alert-dialog/index.d.cts +2 -0
- package/dist/components/alert-dialog/index.d.mts +2 -0
- package/dist/components/badge/Badge.cjs +57 -0
- package/dist/components/badge/Badge.cjs.map +1 -0
- package/dist/components/badge/Badge.d.cts +16 -0
- package/dist/components/badge/Badge.d.cts.map +1 -0
- package/dist/components/badge/Badge.d.mts +16 -0
- package/dist/components/badge/Badge.d.mts.map +1 -0
- package/dist/components/badge/Badge.mjs +55 -0
- package/dist/components/badge/Badge.mjs.map +1 -0
- package/dist/components/badge/index.d.cts +2 -0
- package/dist/components/badge/index.d.mts +2 -0
- package/dist/components/berget-logo/BergetLogo.cjs +87 -0
- package/dist/components/berget-logo/BergetLogo.cjs.map +1 -0
- package/dist/components/berget-logo/BergetLogo.d.cts +14 -0
- package/dist/components/berget-logo/BergetLogo.d.cts.map +1 -0
- package/dist/components/berget-logo/BergetLogo.d.mts +14 -0
- package/dist/components/berget-logo/BergetLogo.d.mts.map +1 -0
- package/dist/components/berget-logo/BergetLogo.mjs +85 -0
- package/dist/components/berget-logo/BergetLogo.mjs.map +1 -0
- package/dist/components/berget-logo/index.d.cts +2 -0
- package/dist/components/berget-logo/index.d.mts +2 -0
- package/dist/components/box/Box.cjs +67 -0
- package/dist/components/box/Box.cjs.map +1 -0
- package/dist/components/box/Box.d.cts +21 -0
- package/dist/components/box/Box.d.cts.map +1 -0
- package/dist/components/box/Box.d.mts +21 -0
- package/dist/components/box/Box.d.mts.map +1 -0
- package/dist/components/box/Box.mjs +64 -0
- package/dist/components/box/Box.mjs.map +1 -0
- package/dist/components/box/index.d.cts +2 -0
- package/dist/components/box/index.d.mts +2 -0
- package/dist/components/button/Button.cjs +75 -0
- package/dist/components/button/Button.cjs.map +1 -0
- package/dist/components/button/Button.d.cts +19 -0
- package/dist/components/button/Button.d.cts.map +1 -0
- package/dist/components/button/Button.d.mts +19 -0
- package/dist/components/button/Button.d.mts.map +1 -0
- package/dist/components/button/Button.mjs +74 -0
- package/dist/components/button/Button.mjs.map +1 -0
- package/dist/components/button/index.d.cts +3 -0
- package/dist/components/button/index.d.mts +3 -0
- package/dist/components/card/Card.cjs +36 -0
- package/dist/components/card/Card.cjs.map +1 -0
- package/dist/components/card/Card.d.cts +15 -0
- package/dist/components/card/Card.d.cts.map +1 -0
- package/dist/components/card/Card.d.mts +15 -0
- package/dist/components/card/Card.d.mts.map +1 -0
- package/dist/components/card/Card.mjs +28 -0
- package/dist/components/card/Card.mjs.map +1 -0
- package/dist/components/card/index.d.cts +3 -0
- package/dist/components/card/index.d.mts +3 -0
- package/dist/components/checkbox/Checkbox.cjs +87 -0
- package/dist/components/checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/checkbox/Checkbox.d.cts +18 -0
- package/dist/components/checkbox/Checkbox.d.cts.map +1 -0
- package/dist/components/checkbox/Checkbox.d.mts +18 -0
- package/dist/components/checkbox/Checkbox.d.mts.map +1 -0
- package/dist/components/checkbox/Checkbox.mjs +84 -0
- package/dist/components/checkbox/Checkbox.mjs.map +1 -0
- package/dist/components/checkbox/index.d.cts +2 -0
- package/dist/components/checkbox/index.d.mts +2 -0
- package/dist/components/code-block/CodeBlock.cjs +58 -0
- package/dist/components/code-block/CodeBlock.cjs.map +1 -0
- package/dist/components/code-block/CodeBlock.d.cts +10 -0
- package/dist/components/code-block/CodeBlock.d.cts.map +1 -0
- package/dist/components/code-block/CodeBlock.d.mts +10 -0
- package/dist/components/code-block/CodeBlock.d.mts.map +1 -0
- package/dist/components/code-block/CodeBlock.mjs +58 -0
- package/dist/components/code-block/CodeBlock.mjs.map +1 -0
- package/dist/components/container/Container.cjs +50 -0
- package/dist/components/container/Container.cjs.map +1 -0
- package/dist/components/container/Container.d.cts +17 -0
- package/dist/components/container/Container.d.cts.map +1 -0
- package/dist/components/container/Container.d.mts +17 -0
- package/dist/components/container/Container.d.mts.map +1 -0
- package/dist/components/container/Container.mjs +47 -0
- package/dist/components/container/Container.mjs.map +1 -0
- package/dist/components/container/index.d.cts +2 -0
- package/dist/components/container/index.d.mts +2 -0
- package/dist/components/country-select/CountrySelect.cjs +95 -0
- package/dist/components/country-select/CountrySelect.cjs.map +1 -0
- package/dist/components/country-select/CountrySelect.d.cts +16 -0
- package/dist/components/country-select/CountrySelect.d.cts.map +1 -0
- package/dist/components/country-select/CountrySelect.d.mts +16 -0
- package/dist/components/country-select/CountrySelect.d.mts.map +1 -0
- package/dist/components/country-select/CountrySelect.mjs +93 -0
- package/dist/components/country-select/CountrySelect.mjs.map +1 -0
- package/dist/components/country-select/countries.cjs +409 -0
- package/dist/components/country-select/countries.cjs.map +1 -0
- package/dist/components/country-select/countries.d.cts +17 -0
- package/dist/components/country-select/countries.d.cts.map +1 -0
- package/dist/components/country-select/countries.d.mts +17 -0
- package/dist/components/country-select/countries.d.mts.map +1 -0
- package/dist/components/country-select/countries.mjs +405 -0
- package/dist/components/country-select/countries.mjs.map +1 -0
- package/dist/components/country-select/index.d.cts +3 -0
- package/dist/components/country-select/index.d.mts +3 -0
- package/dist/components/dialog/Dialog.cjs +85 -0
- package/dist/components/dialog/Dialog.cjs.map +1 -0
- package/dist/components/dialog/Dialog.d.cts +35 -0
- package/dist/components/dialog/Dialog.d.cts.map +1 -0
- package/dist/components/dialog/Dialog.d.mts +35 -0
- package/dist/components/dialog/Dialog.d.mts.map +1 -0
- package/dist/components/dialog/Dialog.mjs +74 -0
- package/dist/components/dialog/Dialog.mjs.map +1 -0
- package/dist/components/dialog/index.d.cts +2 -0
- package/dist/components/dialog/index.d.mts +2 -0
- package/dist/components/divider/Divider.cjs +72 -0
- package/dist/components/divider/Divider.cjs.map +1 -0
- package/dist/components/divider/Divider.mjs +70 -0
- package/dist/components/divider/Divider.mjs.map +1 -0
- package/dist/components/dropdown-menu/DropdownMenu.cjs +101 -0
- package/dist/components/dropdown-menu/DropdownMenu.cjs.map +1 -0
- package/dist/components/dropdown-menu/DropdownMenu.d.cts +62 -0
- package/dist/components/dropdown-menu/DropdownMenu.d.cts.map +1 -0
- package/dist/components/dropdown-menu/DropdownMenu.d.mts +62 -0
- package/dist/components/dropdown-menu/DropdownMenu.d.mts.map +1 -0
- package/dist/components/dropdown-menu/DropdownMenu.mjs +85 -0
- package/dist/components/dropdown-menu/DropdownMenu.mjs.map +1 -0
- package/dist/components/dropdown-menu/index.d.cts +3 -0
- package/dist/components/dropdown-menu/index.d.mts +3 -0
- package/dist/components/empty/Empty.cjs +51 -0
- package/dist/components/empty/Empty.cjs.map +1 -0
- package/dist/components/empty/Empty.d.cts +17 -0
- package/dist/components/empty/Empty.d.cts.map +1 -0
- package/dist/components/empty/Empty.d.mts +17 -0
- package/dist/components/empty/Empty.d.mts.map +1 -0
- package/dist/components/empty/Empty.mjs +44 -0
- package/dist/components/empty/Empty.mjs.map +1 -0
- package/dist/components/empty/index.d.cts +3 -0
- package/dist/components/empty/index.d.mts +3 -0
- package/dist/components/field/index.d.cts +2 -0
- package/dist/components/field/index.d.mts +2 -0
- package/dist/components/fog-illustration/FogIllustration.cjs +342 -0
- package/dist/components/fog-illustration/FogIllustration.cjs.map +1 -0
- package/dist/components/fog-illustration/FogIllustration.d.cts +35 -0
- package/dist/components/fog-illustration/FogIllustration.d.cts.map +1 -0
- package/dist/components/fog-illustration/FogIllustration.d.mts +35 -0
- package/dist/components/fog-illustration/FogIllustration.d.mts.map +1 -0
- package/dist/components/fog-illustration/FogIllustration.mjs +341 -0
- package/dist/components/fog-illustration/FogIllustration.mjs.map +1 -0
- package/dist/components/grid/Grid.cjs +51 -0
- package/dist/components/grid/Grid.cjs.map +1 -0
- package/dist/components/grid/Grid.d.cts +25 -0
- package/dist/components/grid/Grid.d.cts.map +1 -0
- package/dist/components/grid/Grid.d.mts +25 -0
- package/dist/components/grid/Grid.d.mts.map +1 -0
- package/dist/components/grid/Grid.mjs +48 -0
- package/dist/components/grid/Grid.mjs.map +1 -0
- package/dist/components/grid/index.d.cts +2 -0
- package/dist/components/grid/index.d.mts +2 -0
- package/dist/components/icon/Icon.cjs +30 -0
- package/dist/components/icon/Icon.cjs.map +1 -0
- package/dist/components/icon/Icon.d.cts +14 -0
- package/dist/components/icon/Icon.d.cts.map +1 -0
- package/dist/components/icon/Icon.d.mts +14 -0
- package/dist/components/icon/Icon.d.mts.map +1 -0
- package/dist/components/icon/Icon.mjs +28 -0
- package/dist/components/icon/Icon.mjs.map +1 -0
- package/dist/components/icon/index.d.cts +2 -0
- package/dist/components/icon/index.d.mts +2 -0
- package/dist/components/input/index.d.cts +2 -0
- package/dist/components/input/index.d.mts +2 -0
- package/dist/components/item/Item.cjs +65 -0
- package/dist/components/item/Item.cjs.map +1 -0
- package/dist/components/item/Item.d.cts +24 -0
- package/dist/components/item/Item.d.cts.map +1 -0
- package/dist/components/item/Item.d.mts +24 -0
- package/dist/components/item/Item.d.mts.map +1 -0
- package/dist/components/item/Item.mjs +54 -0
- package/dist/components/item/Item.mjs.map +1 -0
- package/dist/components/item/index.d.cts +3 -0
- package/dist/components/item/index.d.mts +3 -0
- package/dist/components/label/index.d.cts +2 -0
- package/dist/components/label/index.d.mts +2 -0
- package/dist/components/language-select/LanguageSelect.cjs +48 -0
- package/dist/components/language-select/LanguageSelect.cjs.map +1 -0
- package/dist/components/language-select/LanguageSelect.d.cts +17 -0
- package/dist/components/language-select/LanguageSelect.d.cts.map +1 -0
- package/dist/components/language-select/LanguageSelect.d.mts +17 -0
- package/dist/components/language-select/LanguageSelect.d.mts.map +1 -0
- package/dist/components/language-select/LanguageSelect.mjs +46 -0
- package/dist/components/language-select/LanguageSelect.mjs.map +1 -0
- package/dist/components/language-select/index.d.cts +2 -0
- package/dist/components/language-select/index.d.mts +2 -0
- package/dist/components/link/Link.cjs +71 -0
- package/dist/components/link/Link.cjs.map +1 -0
- package/dist/components/link/Link.d.cts +18 -0
- package/dist/components/link/Link.d.cts.map +1 -0
- package/dist/components/link/Link.d.mts +18 -0
- package/dist/components/link/Link.d.mts.map +1 -0
- package/dist/components/link/Link.mjs +68 -0
- package/dist/components/link/Link.mjs.map +1 -0
- package/dist/components/link/index.d.cts +2 -0
- package/dist/components/link/index.d.mts +2 -0
- package/dist/components/list/List.cjs +71 -0
- package/dist/components/list/List.cjs.map +1 -0
- package/dist/components/list/List.d.cts +24 -0
- package/dist/components/list/List.d.cts.map +1 -0
- package/dist/components/list/List.d.mts +24 -0
- package/dist/components/list/List.d.mts.map +1 -0
- package/dist/components/list/List.mjs +66 -0
- package/dist/components/list/List.mjs.map +1 -0
- package/dist/components/list/index.d.cts +2 -0
- package/dist/components/list/index.d.mts +2 -0
- package/dist/components/model-card/ModelCard.cjs +108 -0
- package/dist/components/model-card/ModelCard.cjs.map +1 -0
- package/dist/components/model-card/ModelCard.d.cts +58 -0
- package/dist/components/model-card/ModelCard.d.cts.map +1 -0
- package/dist/components/model-card/ModelCard.d.mts +58 -0
- package/dist/components/model-card/ModelCard.d.mts.map +1 -0
- package/dist/components/model-card/ModelCard.mjs +106 -0
- package/dist/components/model-card/ModelCard.mjs.map +1 -0
- package/dist/components/model-card/index.d.cts +3 -0
- package/dist/components/model-card/index.d.mts +3 -0
- package/dist/components/model-logo/ModelLogo.cjs +98 -0
- package/dist/components/model-logo/ModelLogo.cjs.map +1 -0
- package/dist/components/model-logo/ModelLogo.d.cts +32 -0
- package/dist/components/model-logo/ModelLogo.d.cts.map +1 -0
- package/dist/components/model-logo/ModelLogo.d.mts +32 -0
- package/dist/components/model-logo/ModelLogo.d.mts.map +1 -0
- package/dist/components/model-logo/ModelLogo.mjs +95 -0
- package/dist/components/model-logo/ModelLogo.mjs.map +1 -0
- package/dist/components/model-logo/index.d.cts +2 -0
- package/dist/components/model-logo/index.d.mts +2 -0
- package/dist/components/navigation-menu/NavigationMenu.cjs +65 -0
- package/dist/components/navigation-menu/NavigationMenu.cjs.map +1 -0
- package/dist/components/navigation-menu/NavigationMenu.d.cts +11 -0
- package/dist/components/navigation-menu/NavigationMenu.d.cts.map +1 -0
- package/dist/components/navigation-menu/NavigationMenu.d.mts +11 -0
- package/dist/components/navigation-menu/NavigationMenu.d.mts.map +1 -0
- package/dist/components/navigation-menu/NavigationMenu.mjs +57 -0
- package/dist/components/navigation-menu/NavigationMenu.mjs.map +1 -0
- package/dist/components/navigation-menu/index.d.cts +3 -0
- package/dist/components/navigation-menu/index.d.mts +3 -0
- package/dist/components/neural-flow/NeuralFlow.cjs +1038 -0
- package/dist/components/neural-flow/NeuralFlow.cjs.map +1 -0
- package/dist/components/neural-flow/NeuralFlow.d.cts +47 -0
- package/dist/components/neural-flow/NeuralFlow.d.cts.map +1 -0
- package/dist/components/neural-flow/NeuralFlow.d.mts +47 -0
- package/dist/components/neural-flow/NeuralFlow.d.mts.map +1 -0
- package/dist/components/neural-flow/NeuralFlow.mjs +1032 -0
- package/dist/components/neural-flow/NeuralFlow.mjs.map +1 -0
- package/dist/components/neural-flow/index.d.cts +2 -0
- package/dist/components/neural-flow/index.d.mts +2 -0
- package/dist/components/neural-flow/mnist-samples.cjs +73 -0
- package/dist/components/neural-flow/mnist-samples.cjs.map +1 -0
- package/dist/components/neural-flow/mnist-samples.mjs +73 -0
- package/dist/components/neural-flow/mnist-samples.mjs.map +1 -0
- package/dist/components/neural-flow/sparse-weights.cjs +21 -0
- package/dist/components/neural-flow/sparse-weights.cjs.map +1 -0
- package/dist/components/neural-flow/sparse-weights.mjs +21 -0
- package/dist/components/neural-flow/sparse-weights.mjs.map +1 -0
- package/dist/components/progress/Progress.cjs +25 -0
- package/dist/components/progress/Progress.cjs.map +1 -0
- package/dist/components/progress/Progress.d.cts +8 -0
- package/dist/components/progress/Progress.d.cts.map +1 -0
- package/dist/components/progress/Progress.d.mts +8 -0
- package/dist/components/progress/Progress.d.mts.map +1 -0
- package/dist/components/progress/Progress.mjs +19 -0
- package/dist/components/progress/Progress.mjs.map +1 -0
- package/dist/components/progress/index.d.cts +3 -0
- package/dist/components/progress/index.d.mts +3 -0
- package/dist/components/search-input/SearchInput.cjs +28 -0
- package/dist/components/search-input/SearchInput.cjs.map +1 -0
- package/dist/components/search-input/SearchInput.d.cts +10 -0
- package/dist/components/search-input/SearchInput.d.cts.map +1 -0
- package/dist/components/search-input/SearchInput.d.mts +10 -0
- package/dist/components/search-input/SearchInput.d.mts.map +1 -0
- package/dist/components/search-input/SearchInput.mjs +26 -0
- package/dist/components/search-input/SearchInput.mjs.map +1 -0
- package/dist/components/search-input/index.d.cts +2 -0
- package/dist/components/search-input/index.d.mts +2 -0
- package/dist/components/select/index.d.cts +2 -0
- package/dist/components/select/index.d.mts +2 -0
- package/dist/components/sidebar/Sidebar.cjs +203 -0
- package/dist/components/sidebar/Sidebar.cjs.map +1 -0
- package/dist/components/sidebar/Sidebar.d.cts +69 -0
- package/dist/components/sidebar/Sidebar.d.cts.map +1 -0
- package/dist/components/sidebar/Sidebar.d.mts +69 -0
- package/dist/components/sidebar/Sidebar.d.mts.map +1 -0
- package/dist/components/sidebar/Sidebar.mjs +150 -0
- package/dist/components/sidebar/Sidebar.mjs.map +1 -0
- package/dist/components/sidebar/index.d.cts +3 -0
- package/dist/components/sidebar/index.d.mts +3 -0
- package/dist/components/skeleton/Skeleton.cjs +20 -0
- package/dist/components/skeleton/Skeleton.cjs.map +1 -0
- package/dist/components/skeleton/Skeleton.d.cts +7 -0
- package/dist/components/skeleton/Skeleton.d.cts.map +1 -0
- package/dist/components/skeleton/Skeleton.d.mts +7 -0
- package/dist/components/skeleton/Skeleton.d.mts.map +1 -0
- package/dist/components/skeleton/Skeleton.mjs +18 -0
- package/dist/components/skeleton/Skeleton.mjs.map +1 -0
- package/dist/components/skeleton/index.d.cts +2 -0
- package/dist/components/skeleton/index.d.mts +2 -0
- package/dist/components/switch/Switch.cjs +85 -0
- package/dist/components/switch/Switch.cjs.map +1 -0
- package/dist/components/switch/Switch.d.cts +21 -0
- package/dist/components/switch/Switch.d.cts.map +1 -0
- package/dist/components/switch/Switch.d.mts +21 -0
- package/dist/components/switch/Switch.d.mts.map +1 -0
- package/dist/components/switch/Switch.mjs +81 -0
- package/dist/components/switch/Switch.mjs.map +1 -0
- package/dist/components/switch/index.d.cts +2 -0
- package/dist/components/switch/index.d.mts +2 -0
- package/dist/components/table/Table.cjs +67 -0
- package/dist/components/table/Table.cjs.map +1 -0
- package/dist/components/table/Table.d.cts +13 -0
- package/dist/components/table/Table.d.cts.map +1 -0
- package/dist/components/table/Table.d.mts +13 -0
- package/dist/components/table/Table.d.mts.map +1 -0
- package/dist/components/table/Table.mjs +58 -0
- package/dist/components/table/Table.mjs.map +1 -0
- package/dist/components/table/index.d.cts +2 -0
- package/dist/components/table/index.d.mts +2 -0
- package/dist/components/text-area/index.d.cts +2 -0
- package/dist/components/text-area/index.d.mts +2 -0
- package/dist/components/theme-provider/ThemeProvider.cjs +81 -0
- package/dist/components/theme-provider/ThemeProvider.cjs.map +1 -0
- package/dist/components/theme-provider/ThemeProvider.d.cts +21 -0
- package/dist/components/theme-provider/ThemeProvider.d.cts.map +1 -0
- package/dist/components/theme-provider/ThemeProvider.d.mts +21 -0
- package/dist/components/theme-provider/ThemeProvider.d.mts.map +1 -0
- package/dist/components/theme-provider/ThemeProvider.mjs +78 -0
- package/dist/components/theme-provider/ThemeProvider.mjs.map +1 -0
- package/dist/components/theme-provider/ThemeToggle.cjs +56 -0
- package/dist/components/theme-provider/ThemeToggle.cjs.map +1 -0
- package/dist/components/theme-provider/ThemeToggle.d.cts +12 -0
- package/dist/components/theme-provider/ThemeToggle.d.cts.map +1 -0
- package/dist/components/theme-provider/ThemeToggle.d.mts +12 -0
- package/dist/components/theme-provider/ThemeToggle.d.mts.map +1 -0
- package/dist/components/theme-provider/ThemeToggle.mjs +54 -0
- package/dist/components/theme-provider/ThemeToggle.mjs.map +1 -0
- package/dist/components/theme-provider/index.d.cts +3 -0
- package/dist/components/theme-provider/index.d.mts +3 -0
- package/dist/components/tooltip/Tooltip.cjs +28 -0
- package/dist/components/tooltip/Tooltip.cjs.map +1 -0
- package/dist/components/tooltip/Tooltip.d.cts +14 -0
- package/dist/components/tooltip/Tooltip.d.cts.map +1 -0
- package/dist/components/tooltip/Tooltip.d.mts +14 -0
- package/dist/components/tooltip/Tooltip.d.mts.map +1 -0
- package/dist/components/tooltip/Tooltip.mjs +23 -0
- package/dist/components/tooltip/Tooltip.mjs.map +1 -0
- package/dist/components/tooltip/index.d.cts +3 -0
- package/dist/components/tooltip/index.d.mts +3 -0
- package/dist/components/typography/Typography.cjs +69 -0
- package/dist/components/typography/Typography.cjs.map +1 -0
- package/dist/components/typography/Typography.d.cts +14 -0
- package/dist/components/typography/Typography.d.cts.map +1 -0
- package/dist/components/typography/Typography.d.mts +14 -0
- package/dist/components/typography/Typography.d.mts.map +1 -0
- package/dist/components/typography/Typography.mjs +67 -0
- package/dist/components/typography/Typography.mjs.map +1 -0
- package/dist/components/typography/index.d.cts +2 -0
- package/dist/components/typography/index.d.mts +2 -0
- package/dist/components/window-frame/WindowFrame.cjs +47 -0
- package/dist/components/window-frame/WindowFrame.cjs.map +1 -0
- package/dist/components/window-frame/WindowFrame.d.cts +19 -0
- package/dist/components/window-frame/WindowFrame.d.cts.map +1 -0
- package/dist/components/window-frame/WindowFrame.d.mts +19 -0
- package/dist/components/window-frame/WindowFrame.d.mts.map +1 -0
- package/dist/components/window-frame/WindowFrame.mjs +46 -0
- package/dist/components/window-frame/WindowFrame.mjs.map +1 -0
- package/dist/components/window-frame/index.d.cts +2 -0
- package/dist/components/window-frame/index.d.mts +2 -0
- package/dist/hooks/use-mobile.cjs +23 -0
- package/dist/hooks/use-mobile.cjs.map +1 -0
- package/dist/hooks/use-mobile.mjs +21 -0
- package/dist/hooks/use-mobile.mjs.map +1 -0
- package/dist/index.cjs +235 -5936
- package/dist/index.d.cts +90 -840
- package/dist/index.d.mts +90 -0
- package/dist/index.mjs +52 -0
- package/dist/lib/shiki-theme.cjs +10 -0
- package/dist/lib/shiki-theme.cjs.map +1 -0
- package/dist/lib/shiki-theme.d.cts +4 -0
- package/dist/lib/shiki-theme.d.cts.map +1 -0
- package/dist/lib/shiki-theme.d.mts +4 -0
- package/dist/lib/shiki-theme.d.mts.map +1 -0
- package/dist/lib/shiki-theme.mjs +11 -0
- package/dist/lib/shiki-theme.mjs.map +1 -0
- package/dist/lib/shiki.cjs +31 -0
- package/dist/lib/shiki.cjs.map +1 -0
- package/dist/lib/shiki.d.cts +6 -0
- package/dist/lib/shiki.d.cts.map +1 -0
- package/dist/lib/shiki.d.mts +6 -0
- package/dist/lib/shiki.d.mts.map +1 -0
- package/dist/lib/shiki.mjs +30 -0
- package/dist/lib/shiki.mjs.map +1 -0
- package/dist/lib/terminal.d.cts +12 -0
- package/dist/lib/terminal.d.cts.map +1 -0
- package/dist/lib/terminal.d.mts +12 -0
- package/dist/lib/terminal.d.mts.map +1 -0
- package/dist/lib/utils.cjs +43 -0
- package/dist/lib/utils.cjs.map +1 -0
- package/dist/lib/utils.mjs +41 -0
- package/dist/lib/utils.mjs.map +1 -0
- package/dist/neural-flow.cjs +3 -1015
- package/dist/neural-flow.d.cts +3 -47
- package/dist/neural-flow.d.mts +3 -0
- package/dist/neural-flow.mjs +1 -0
- package/dist/primitives/alert.cjs +43 -0
- package/dist/primitives/alert.cjs.map +1 -0
- package/dist/primitives/alert.d.cts +8 -0
- package/dist/primitives/alert.d.cts.map +1 -0
- package/dist/primitives/alert.d.mts +8 -0
- package/dist/primitives/alert.d.mts.map +1 -0
- package/dist/primitives/alert.mjs +39 -0
- package/dist/primitives/alert.mjs.map +1 -0
- package/dist/primitives/button.cjs +48 -0
- package/dist/primitives/button.cjs.map +1 -0
- package/dist/primitives/button.d.cts +11 -0
- package/dist/primitives/button.d.cts.map +1 -0
- package/dist/primitives/button.d.mts +11 -0
- package/dist/primitives/button.d.mts.map +1 -0
- package/dist/primitives/button.mjs +47 -0
- package/dist/primitives/button.mjs.map +1 -0
- package/dist/primitives/card.cjs +67 -0
- package/dist/primitives/card.cjs.map +1 -0
- package/dist/primitives/card.d.cts +11 -0
- package/dist/primitives/card.d.cts.map +1 -0
- package/dist/primitives/card.d.mts +11 -0
- package/dist/primitives/card.d.mts.map +1 -0
- package/dist/primitives/card.mjs +59 -0
- package/dist/primitives/card.mjs.map +1 -0
- package/dist/primitives/checkbox.cjs +22 -0
- package/dist/primitives/checkbox.cjs.map +1 -0
- package/dist/primitives/checkbox.mjs +22 -0
- package/dist/primitives/checkbox.mjs.map +1 -0
- package/dist/primitives/command.cjs +69 -0
- package/dist/primitives/command.cjs.map +1 -0
- package/dist/primitives/command.mjs +62 -0
- package/dist/primitives/command.mjs.map +1 -0
- package/dist/primitives/dropdown-menu.cjs +155 -0
- package/dist/primitives/dropdown-menu.cjs.map +1 -0
- package/dist/primitives/dropdown-menu.d.cts +30 -0
- package/dist/primitives/dropdown-menu.d.cts.map +1 -0
- package/dist/primitives/dropdown-menu.d.mts +30 -0
- package/dist/primitives/dropdown-menu.d.mts.map +1 -0
- package/dist/primitives/dropdown-menu.mjs +139 -0
- package/dist/primitives/dropdown-menu.mjs.map +1 -0
- package/dist/primitives/empty.cjs +67 -0
- package/dist/primitives/empty.cjs.map +1 -0
- package/dist/primitives/empty.d.cts +8 -0
- package/dist/primitives/empty.d.cts.map +1 -0
- package/dist/primitives/empty.d.mts +8 -0
- package/dist/primitives/empty.d.mts.map +1 -0
- package/dist/primitives/empty.mjs +62 -0
- package/dist/primitives/empty.mjs.map +1 -0
- package/dist/primitives/field.cjs +121 -0
- package/dist/primitives/field.cjs.map +1 -0
- package/dist/primitives/field.d.cts +27 -0
- package/dist/primitives/field.d.cts.map +1 -0
- package/dist/primitives/field.d.mts +27 -0
- package/dist/primitives/field.d.mts.map +1 -0
- package/dist/primitives/field.mjs +112 -0
- package/dist/primitives/field.mjs.map +1 -0
- package/dist/primitives/input-group.cjs +52 -0
- package/dist/primitives/input-group.cjs.map +1 -0
- package/dist/primitives/input-group.mjs +49 -0
- package/dist/primitives/input-group.mjs.map +1 -0
- package/dist/primitives/input.cjs +20 -0
- package/dist/primitives/input.cjs.map +1 -0
- package/dist/primitives/input.d.cts +6 -0
- package/dist/primitives/input.d.cts.map +1 -0
- package/dist/primitives/input.d.mts +6 -0
- package/dist/primitives/input.d.mts.map +1 -0
- package/dist/primitives/input.mjs +18 -0
- package/dist/primitives/input.mjs.map +1 -0
- package/dist/primitives/item.cjs +135 -0
- package/dist/primitives/item.cjs.map +1 -0
- package/dist/primitives/item.d.cts +18 -0
- package/dist/primitives/item.d.cts.map +1 -0
- package/dist/primitives/item.d.mts +18 -0
- package/dist/primitives/item.d.mts.map +1 -0
- package/dist/primitives/item.mjs +124 -0
- package/dist/primitives/item.mjs.map +1 -0
- package/dist/primitives/label.cjs +18 -0
- package/dist/primitives/label.cjs.map +1 -0
- package/dist/primitives/label.d.cts +6 -0
- package/dist/primitives/label.d.cts.map +1 -0
- package/dist/primitives/label.d.mts +6 -0
- package/dist/primitives/label.d.mts.map +1 -0
- package/dist/primitives/label.mjs +16 -0
- package/dist/primitives/label.mjs.map +1 -0
- package/dist/primitives/navigation-menu.cjs +44 -0
- package/dist/primitives/navigation-menu.cjs.map +1 -0
- package/dist/primitives/navigation-menu.d.cts +9 -0
- package/dist/primitives/navigation-menu.d.cts.map +1 -0
- package/dist/primitives/navigation-menu.d.mts +9 -0
- package/dist/primitives/navigation-menu.d.mts.map +1 -0
- package/dist/primitives/navigation-menu.mjs +41 -0
- package/dist/primitives/navigation-menu.mjs.map +1 -0
- package/dist/primitives/popover.cjs +40 -0
- package/dist/primitives/popover.cjs.map +1 -0
- package/dist/primitives/popover.mjs +36 -0
- package/dist/primitives/popover.mjs.map +1 -0
- package/dist/primitives/progress.cjs +50 -0
- package/dist/primitives/progress.cjs.map +1 -0
- package/dist/primitives/progress.d.cts +10 -0
- package/dist/primitives/progress.d.cts.map +1 -0
- package/dist/primitives/progress.d.mts +10 -0
- package/dist/primitives/progress.d.mts.map +1 -0
- package/dist/primitives/progress.mjs +46 -0
- package/dist/primitives/progress.mjs.map +1 -0
- package/dist/primitives/select.cjs +111 -0
- package/dist/primitives/select.cjs.map +1 -0
- package/dist/primitives/select.d.cts +18 -0
- package/dist/primitives/select.d.cts.map +1 -0
- package/dist/primitives/select.d.mts +18 -0
- package/dist/primitives/select.d.mts.map +1 -0
- package/dist/primitives/select.mjs +100 -0
- package/dist/primitives/select.mjs.map +1 -0
- package/dist/primitives/separator.cjs +17 -0
- package/dist/primitives/separator.cjs.map +1 -0
- package/dist/primitives/separator.d.cts +6 -0
- package/dist/primitives/separator.d.cts.map +1 -0
- package/dist/primitives/separator.d.mts +6 -0
- package/dist/primitives/separator.d.mts.map +1 -0
- package/dist/primitives/separator.mjs +17 -0
- package/dist/primitives/separator.mjs.map +1 -0
- package/dist/primitives/sheet.cjs +78 -0
- package/dist/primitives/sheet.cjs.map +1 -0
- package/dist/primitives/sheet.mjs +72 -0
- package/dist/primitives/sheet.mjs.map +1 -0
- package/dist/primitives/sidebar.cjs +413 -0
- package/dist/primitives/sidebar.cjs.map +1 -0
- package/dist/primitives/sidebar.d.cts +66 -0
- package/dist/primitives/sidebar.d.cts.map +1 -0
- package/dist/primitives/sidebar.d.mts +66 -0
- package/dist/primitives/sidebar.d.mts.map +1 -0
- package/dist/primitives/sidebar.mjs +388 -0
- package/dist/primitives/sidebar.mjs.map +1 -0
- package/dist/primitives/skeleton.cjs +15 -0
- package/dist/primitives/skeleton.cjs.map +1 -0
- package/dist/primitives/skeleton.mjs +15 -0
- package/dist/primitives/skeleton.mjs.map +1 -0
- package/dist/primitives/table.cjs +78 -0
- package/dist/primitives/table.cjs.map +1 -0
- package/dist/primitives/table.mjs +69 -0
- package/dist/primitives/table.mjs.map +1 -0
- package/dist/primitives/textarea.cjs +18 -0
- package/dist/primitives/textarea.cjs.map +1 -0
- package/dist/primitives/textarea.d.cts +6 -0
- package/dist/primitives/textarea.d.cts.map +1 -0
- package/dist/primitives/textarea.d.mts +6 -0
- package/dist/primitives/textarea.d.mts.map +1 -0
- package/dist/primitives/textarea.mjs +16 -0
- package/dist/primitives/textarea.mjs.map +1 -0
- package/dist/primitives/tooltip.cjs +46 -0
- package/dist/primitives/tooltip.cjs.map +1 -0
- package/dist/primitives/tooltip.d.cts +9 -0
- package/dist/primitives/tooltip.d.cts.map +1 -0
- package/dist/primitives/tooltip.d.mts +9 -0
- package/dist/primitives/tooltip.d.mts.map +1 -0
- package/dist/primitives/tooltip.mjs +43 -0
- package/dist/primitives/tooltip.mjs.map +1 -0
- package/dist/shiki.cjs +6 -80
- package/dist/shiki.d.cts +3 -10
- package/dist/shiki.d.mts +3 -0
- package/dist/shiki.mjs +3 -0
- package/dist/styles/index.css +11 -0
- package/package.json +19 -13
- package/dist/chunk-3LBFYXI6.js +0 -42
- package/dist/chunk-3LBFYXI6.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -840
- package/dist/index.js +0 -5681
- package/dist/index.js.map +0 -1
- package/dist/neural-flow.cjs.map +0 -1
- package/dist/neural-flow.d.ts +0 -47
- package/dist/neural-flow.js +0 -978
- package/dist/neural-flow.js.map +0 -1
- package/dist/shiki.cjs.map +0 -1
- package/dist/shiki.d.ts +0 -10
- package/dist/shiki.js +0 -11
- 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,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
|