@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.
- 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/bubble/index.d.cts +2 -0
- package/dist/components/bubble/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/input-group/InputGroup.cjs +41 -0
- package/dist/components/input-group/InputGroup.cjs.map +1 -0
- package/dist/components/input-group/InputGroup.d.cts +33 -0
- package/dist/components/input-group/InputGroup.d.cts.map +1 -0
- package/dist/components/input-group/InputGroup.d.mts +33 -0
- package/dist/components/input-group/InputGroup.d.mts.map +1 -0
- package/dist/components/input-group/InputGroup.mjs +36 -0
- package/dist/components/input-group/InputGroup.mjs.map +1 -0
- package/dist/components/input-group/index.d.cts +3 -0
- package/dist/components/input-group/index.d.mts +3 -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/message/index.d.cts +2 -0
- package/dist/components/message/index.d.mts +2 -0
- package/dist/components/message-scroller/index.d.cts +2 -0
- package/dist/components/message-scroller/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/slider/Slider.cjs +23 -0
- package/dist/components/slider/Slider.cjs.map +1 -0
- package/dist/components/slider/Slider.d.cts +20 -0
- package/dist/components/slider/Slider.d.cts.map +1 -0
- package/dist/components/slider/Slider.d.mts +20 -0
- package/dist/components/slider/Slider.d.mts.map +1 -0
- package/dist/components/slider/Slider.mjs +23 -0
- package/dist/components/slider/Slider.mjs.map +1 -0
- package/dist/components/slider/index.d.cts +2 -0
- package/dist/components/slider/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 +280 -5937
- package/dist/index.d.cts +101 -840
- package/dist/index.d.mts +101 -0
- package/dist/index.mjs +58 -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/bubble.cjs +80 -0
- package/dist/primitives/bubble.cjs.map +1 -0
- package/dist/primitives/bubble.d.cts +19 -0
- package/dist/primitives/bubble.d.cts.map +1 -0
- package/dist/primitives/bubble.d.mts +19 -0
- package/dist/primitives/bubble.d.mts.map +1 -0
- package/dist/primitives/bubble.mjs +75 -0
- package/dist/primitives/bubble.mjs.map +1 -0
- package/dist/primitives/button.cjs +47 -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 +46 -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 +88 -0
- package/dist/primitives/input-group.cjs.map +1 -0
- package/dist/primitives/input-group.d.cts +21 -0
- package/dist/primitives/input-group.d.cts.map +1 -0
- package/dist/primitives/input-group.d.mts +21 -0
- package/dist/primitives/input-group.d.mts.map +1 -0
- package/dist/primitives/input-group.mjs +81 -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/message-scroller.cjs +69 -0
- package/dist/primitives/message-scroller.cjs.map +1 -0
- package/dist/primitives/message-scroller.d.cts +13 -0
- package/dist/primitives/message-scroller.d.cts.map +1 -0
- package/dist/primitives/message-scroller.d.mts +13 -0
- package/dist/primitives/message-scroller.d.mts.map +1 -0
- package/dist/primitives/message-scroller.mjs +62 -0
- package/dist/primitives/message-scroller.mjs.map +1 -0
- package/dist/primitives/message.cjs +58 -0
- package/dist/primitives/message.cjs.map +1 -0
- package/dist/primitives/message.d.cts +13 -0
- package/dist/primitives/message.d.cts.map +1 -0
- package/dist/primitives/message.d.mts +13 -0
- package/dist/primitives/message.d.mts.map +1 -0
- package/dist/primitives/message.mjs +51 -0
- package/dist/primitives/message.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/slider.cjs +35 -0
- package/dist/primitives/slider.cjs.map +1 -0
- package/dist/primitives/slider.d.cts +6 -0
- package/dist/primitives/slider.d.cts.map +1 -0
- package/dist/primitives/slider.d.mts +6 -0
- package/dist/primitives/slider.d.mts.map +1 -0
- package/dist/primitives/slider.mjs +35 -0
- package/dist/primitives/slider.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 +20 -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 -5685
- 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":"FogIllustration.d.cts","names":[],"sources":["../../../src/components/fog-illustration/FogIllustration.tsx"],"mappings":";;;;;;;;;;;;;;YAmBY;;EAEV;;EAEA;;EAEA;;;qBAIW,mBAAmB;iBAMf;;EAEf,UAAU,QAAQ;;EAElB;;EAEA;;qBAmNW,oBAAmB,SAAA,OAAA,aAAmC,qDAAoB,IAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/components/fog-illustration/FogIllustration.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* FogIllustration — a volumetric fog raymarcher rendered as chunky
|
|
4
|
+
* 1-bit dither in a given palette.
|
|
5
|
+
*
|
|
6
|
+
* Two GPU passes: the scene is raymarched at low internal resolution
|
|
7
|
+
* (ridged fbm ground, drifting fog volumes, air haze — the fog hides
|
|
8
|
+
* the low resolution), then a full-resolution pass thresholds the
|
|
9
|
+
* scene against a Bayer matrix with hash jitter: ink dots on milk,
|
|
10
|
+
* with moss-tinted dots where fog dominates.
|
|
11
|
+
*
|
|
12
|
+
* The canvas fills its parent element; give the parent a size.
|
|
13
|
+
* Pauses under prefers-reduced-motion after one frame.
|
|
14
|
+
*/
|
|
15
|
+
export type FogPalette = {
|
|
16
|
+
/** Dark terrain and dither ink. */
|
|
17
|
+
ink: string;
|
|
18
|
+
/** Background the dots sit on. */
|
|
19
|
+
milk: string;
|
|
20
|
+
/** Tint for dots where fog dominates. */
|
|
21
|
+
moss: string;
|
|
22
|
+
};
|
|
23
|
+
/** The Berget brand palette, as rendered sRGB. */
|
|
24
|
+
export declare const FOG_BRAND_PALETTE: FogPalette;
|
|
25
|
+
export interface FogIllustrationProps {
|
|
26
|
+
/** Colors as hex strings. Unset keys fall back to the brand palette. */
|
|
27
|
+
palette?: Partial<FogPalette>;
|
|
28
|
+
/** Flight speed multiplier @default 1 */
|
|
29
|
+
speed?: number;
|
|
30
|
+
/** Additional CSS classes for the canvas element */
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare const FogIllustration: ({ palette, speed, className }: FogIllustrationProps) => import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
//#endregion
|
|
35
|
+
//# sourceMappingURL=FogIllustration.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FogIllustration.d.mts","names":[],"sources":["../../../src/components/fog-illustration/FogIllustration.tsx"],"mappings":";;;;;;;;;;;;;;YAmBY;;EAEV;;EAEA;;EAEA;;;qBAIW,mBAAmB;iBAMf;;EAEf,UAAU,QAAQ;;EAElB;;EAEA;;qBAmNW,oBAAmB,SAAA,OAAA,aAAmC,qDAAoB,IAAA"}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../lib/utils.mjs";
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/fog-illustration/FogIllustration.tsx
|
|
6
|
+
/** The Berget brand palette, as rendered sRGB. */
|
|
7
|
+
const FOG_BRAND_PALETTE = {
|
|
8
|
+
ink: "#171a1a",
|
|
9
|
+
milk: "#f7f5ed",
|
|
10
|
+
moss: "#598c6b"
|
|
11
|
+
};
|
|
12
|
+
const hexToRgb = (hex) => {
|
|
13
|
+
let h = hex.replace("#", "");
|
|
14
|
+
if (h.length === 3) h = h.split("").map((c) => c + c).join("");
|
|
15
|
+
const n = Number.parseInt(h, 16);
|
|
16
|
+
return [
|
|
17
|
+
(n >> 16 & 255) / 255,
|
|
18
|
+
(n >> 8 & 255) / 255,
|
|
19
|
+
(n & 255) / 255
|
|
20
|
+
];
|
|
21
|
+
};
|
|
22
|
+
const hexToRgbAll = (p) => ({
|
|
23
|
+
ink: hexToRgb(p.ink),
|
|
24
|
+
milk: hexToRgb(p.milk),
|
|
25
|
+
moss: hexToRgb(p.moss)
|
|
26
|
+
});
|
|
27
|
+
const VERT = `#version 300 es
|
|
28
|
+
void main() {
|
|
29
|
+
vec2 p = vec2(float((gl_VertexID << 1) & 2), float(gl_VertexID & 2));
|
|
30
|
+
gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0);
|
|
31
|
+
}`;
|
|
32
|
+
/** Pass A — raymarch the foggy terrain at low resolution. */
|
|
33
|
+
const SCENE_FRAG = `#version 300 es
|
|
34
|
+
precision highp float;
|
|
35
|
+
out vec4 outColor;
|
|
36
|
+
uniform vec2 uRes;
|
|
37
|
+
uniform float uTime;
|
|
38
|
+
uniform sampler2D uNoise;
|
|
39
|
+
|
|
40
|
+
float noise(vec3 x) {
|
|
41
|
+
// 3D value noise from the 2D random texture — iq's two-slice trick:
|
|
42
|
+
// z slices are tiled into the u axis, two neighbours mixed by fract(z).
|
|
43
|
+
vec3 p = floor(x), f = fract(x);
|
|
44
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
45
|
+
vec2 uv = (p.xy + vec2(37.0, 239.0) * p.z) + f.xy;
|
|
46
|
+
vec2 rg = texture(uNoise, (uv + 0.5) / 256.0).xy;
|
|
47
|
+
return mix(rg.x, rg.y, f.z) * 2.0 - 1.0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
float ground(vec3 pos, int oct) {
|
|
51
|
+
float f = 0.0;
|
|
52
|
+
float s = 1.4;
|
|
53
|
+
vec3 p = pos * s * 0.1;
|
|
54
|
+
for (int i = 0; i < 6; i++) {
|
|
55
|
+
if (i >= oct) break;
|
|
56
|
+
f += abs(noise(p)) * s;
|
|
57
|
+
p = vec3(p.z * 5.0, p.xy * 3.0 + p.yx * 4.0 * vec2(1, -1)) * 2.0 / 5.0;
|
|
58
|
+
s /= 2.0;
|
|
59
|
+
}
|
|
60
|
+
return (pos.y + f) * 0.8;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
float fogD(vec3 pos, int oct) {
|
|
64
|
+
float f = 0.0;
|
|
65
|
+
float s = 1.0;
|
|
66
|
+
vec3 p = pos * 0.7;
|
|
67
|
+
p += uTime * vec3(0.0, -0.02, 0.02);
|
|
68
|
+
for (int i = 0; i < 6; i++) {
|
|
69
|
+
if (i >= oct) break;
|
|
70
|
+
f += noise(p) * s;
|
|
71
|
+
p = vec3(p.z * 5.0, p.xy * 3.0 + p.yx * 4.0 * vec2(1, -1)) * 2.0 / 5.0;
|
|
72
|
+
s /= 1.7;
|
|
73
|
+
}
|
|
74
|
+
f += smoothstep(0.2, 0.0, abs(pos.y + 1.0)) * 0.4;
|
|
75
|
+
f += smoothstep(0.35, 0.15, abs(pos.y - 0.02)) * 0.7;
|
|
76
|
+
f *= 1.0 - smoothstep(-0.1, 0.55, pos.y);
|
|
77
|
+
f = smoothstep(0.45, 1.7, f);
|
|
78
|
+
float g = ground(pos, 2);
|
|
79
|
+
f *= 1.0 - g / (abs(g) + 0.04);
|
|
80
|
+
return f;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
float airD(vec3 pos) { return exp2(-pos.y / 5.0 - 3.0); }
|
|
84
|
+
|
|
85
|
+
void main() {
|
|
86
|
+
float time = uTime * 0.2;
|
|
87
|
+
vec3 velocity = vec3(1.0, 0.0, 0.0);
|
|
88
|
+
vec3 camPos = vec3(sin(time * 0.618) * 0.4, 0.62 + 0.08 * sin(time), 0.0) + time * velocity;
|
|
89
|
+
vec3 camLook = vec3(-1.0, -0.3, 4.0) + (time - sin(time)) * velocity;
|
|
90
|
+
|
|
91
|
+
vec2 fc = gl_FragCoord.xy;
|
|
92
|
+
vec3 ray = vec3((fc - uRes * 0.5) / uRes.x, 1.0);
|
|
93
|
+
vec3 camDir = normalize(camLook - camPos);
|
|
94
|
+
vec3 camRight = normalize(cross(vec3(0.0, 1.0, 0.0), camDir));
|
|
95
|
+
vec3 camUp = cross(camDir, camRight);
|
|
96
|
+
ray = normalize(ray.x * camRight + ray.y * camUp + ray.z * camDir);
|
|
97
|
+
|
|
98
|
+
vec3 sunDir = normalize(vec3(-3.0, 2.0, 1.0));
|
|
99
|
+
|
|
100
|
+
vec3 pos = camPos;
|
|
101
|
+
float absorption = 1.0;
|
|
102
|
+
float emission = 0.0;
|
|
103
|
+
float fogFactor = 0.0;
|
|
104
|
+
float lastStride = 0.0;
|
|
105
|
+
float lastFog = 0.0;
|
|
106
|
+
float lastAir = 0.0;
|
|
107
|
+
|
|
108
|
+
for (int i = 0; i < 80; i++) {
|
|
109
|
+
float h = ground(pos, 4);
|
|
110
|
+
float fog = fogD(pos, 3);
|
|
111
|
+
float fogIntegral = lastStride * mix(fog, lastFog, 0.5);
|
|
112
|
+
float air = airD(pos);
|
|
113
|
+
float airIntegral = lastStride * mix(air, lastAir, 0.5);
|
|
114
|
+
|
|
115
|
+
float fogAbsDelta = pow(0.1, fogIntegral);
|
|
116
|
+
float fogEmiDelta = 1.0 - fogAbsDelta;
|
|
117
|
+
float shadowStep = 0.07;
|
|
118
|
+
float shadow = (fog - fogD(pos + sunDir * shadowStep, 2)) / shadowStep;
|
|
119
|
+
fogEmiDelta *= mix(0.2, 0.85, smoothstep(-1.0, 1.0, shadow));
|
|
120
|
+
|
|
121
|
+
float airAbsDelta = pow(0.55, airIntegral);
|
|
122
|
+
float airEmiDelta = (1.0 - pow(0.55, airIntegral)) * 0.5;
|
|
123
|
+
|
|
124
|
+
float absDelta = fogAbsDelta * airAbsDelta;
|
|
125
|
+
emission += absorption * sqrt(absDelta) * (fogEmiDelta + airEmiDelta);
|
|
126
|
+
absorption *= absDelta;
|
|
127
|
+
|
|
128
|
+
fogFactor = max(fogFactor, (1.0 - absorption) * step(0.05, fog));
|
|
129
|
+
|
|
130
|
+
lastFog = fog;
|
|
131
|
+
lastAir = air;
|
|
132
|
+
h = min(h, 0.1);
|
|
133
|
+
lastStride = h;
|
|
134
|
+
pos += h * ray;
|
|
135
|
+
if (h < 0.001) break;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
float brightness;
|
|
139
|
+
if (absorption > 0.02) {
|
|
140
|
+
// terrain visible — light it
|
|
141
|
+
vec2 d = vec2(-1.0, 1.0) * 0.02;
|
|
142
|
+
vec3 normal = normalize(
|
|
143
|
+
ground(pos + d.xxx, 5) * d.xxx +
|
|
144
|
+
ground(pos + d.xyy, 5) * d.xyy +
|
|
145
|
+
ground(pos + d.yxy, 5) * d.yxy +
|
|
146
|
+
ground(pos + d.yyx, 5) * d.yyx
|
|
147
|
+
);
|
|
148
|
+
float ao = smoothstep(-0.2, 1.5, ground(pos + normal * 0.3, 5) / 0.3);
|
|
149
|
+
float shade = (0.5 * ao + 0.5 * max(dot(normal, sunDir), 0.0)) * 0.65;
|
|
150
|
+
brightness = shade * absorption + emission;
|
|
151
|
+
} else {
|
|
152
|
+
brightness = emission;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Clear sky — rays that escape upward land on milk, whatever the
|
|
156
|
+
// haze did. The poster look: light sky, dark ridges, fog between.
|
|
157
|
+
float sky = smoothstep(-0.15, 0.35, ray.y) * 0.92;
|
|
158
|
+
brightness = max(brightness, sky * absorption);
|
|
159
|
+
|
|
160
|
+
outColor = vec4(clamp(brightness, 0.0, 1.0), clamp(fogFactor, 0.0, 1.0), 0.0, 1.0);
|
|
161
|
+
}`;
|
|
162
|
+
/** Pass B — full-resolution 1-bit dither of the scene. */
|
|
163
|
+
const DITHER_FRAG = `#version 300 es
|
|
164
|
+
precision highp float;
|
|
165
|
+
out vec4 outColor;
|
|
166
|
+
uniform vec2 uRes;
|
|
167
|
+
uniform float uDot;
|
|
168
|
+
uniform sampler2D uScene;
|
|
169
|
+
uniform vec3 uInk;
|
|
170
|
+
uniform vec3 uMilk;
|
|
171
|
+
uniform vec3 uMoss;
|
|
172
|
+
|
|
173
|
+
float bayer2(vec2 a) { a = floor(a); return fract(a.x / 2.0 + a.y * a.y * 0.75); }
|
|
174
|
+
float bayer4(vec2 a) { return bayer2(0.5 * a) * 0.25 + bayer2(a); }
|
|
175
|
+
float hash12(vec2 p) {
|
|
176
|
+
vec3 p3 = fract(vec3(p.xyx) * 0.1031);
|
|
177
|
+
p3 += dot(p3, p3.yzx + 33.33);
|
|
178
|
+
return fract((p3.x + p3.y) * p3.z);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
void main() {
|
|
182
|
+
// Chunky cells: one dot decision per uDot×uDot block — the dither
|
|
183
|
+
// reads as visible pixels, not 1px noise.
|
|
184
|
+
vec2 cell = floor(gl_FragCoord.xy / uDot);
|
|
185
|
+
vec4 scene = texture(uScene, (cell * uDot + uDot * 0.5) / uRes);
|
|
186
|
+
float darkness = 1.0 - scene.r;
|
|
187
|
+
float jitter = (hash12(cell) - 0.5) * 0.3;
|
|
188
|
+
float on = step(darkness, bayer4(cell) + jitter);
|
|
189
|
+
vec3 col = scene.g > 0.5 ? uMoss : uInk;
|
|
190
|
+
outColor = vec4(mix(col, uMilk, on), 1.0);
|
|
191
|
+
}`;
|
|
192
|
+
const compile = (gl, type, src) => {
|
|
193
|
+
const sh = gl.createShader(type);
|
|
194
|
+
if (!sh) throw new Error("shader creation failed");
|
|
195
|
+
gl.shaderSource(sh, src);
|
|
196
|
+
gl.compileShader(sh);
|
|
197
|
+
if (!gl.getShaderParameter(sh, gl.COMPILE_STATUS)) throw new Error(gl.getShaderInfoLog(sh) || "shader compile failed");
|
|
198
|
+
return sh;
|
|
199
|
+
};
|
|
200
|
+
const program = (gl, frag) => {
|
|
201
|
+
const p = gl.createProgram();
|
|
202
|
+
if (!p) throw new Error("program creation failed");
|
|
203
|
+
gl.attachShader(p, compile(gl, gl.VERTEX_SHADER, VERT));
|
|
204
|
+
gl.attachShader(p, compile(gl, gl.FRAGMENT_SHADER, frag));
|
|
205
|
+
gl.linkProgram(p);
|
|
206
|
+
if (!gl.getProgramParameter(p, gl.LINK_STATUS)) throw new Error(gl.getProgramInfoLog(p) || "program link failed");
|
|
207
|
+
return p;
|
|
208
|
+
};
|
|
209
|
+
const FogIllustration = ({ palette, speed = 1, className }) => {
|
|
210
|
+
const ref = useRef(null);
|
|
211
|
+
const live = useRef({
|
|
212
|
+
palette: {
|
|
213
|
+
...FOG_BRAND_PALETTE,
|
|
214
|
+
...palette
|
|
215
|
+
},
|
|
216
|
+
speed
|
|
217
|
+
});
|
|
218
|
+
live.current = {
|
|
219
|
+
palette: {
|
|
220
|
+
...FOG_BRAND_PALETTE,
|
|
221
|
+
...palette
|
|
222
|
+
},
|
|
223
|
+
speed
|
|
224
|
+
};
|
|
225
|
+
useEffect(() => {
|
|
226
|
+
const canvas = ref.current;
|
|
227
|
+
const parent = canvas?.parentElement;
|
|
228
|
+
if (!canvas || !parent) return;
|
|
229
|
+
const gl = canvas.getContext("webgl2", {
|
|
230
|
+
antialias: false,
|
|
231
|
+
alpha: false,
|
|
232
|
+
preserveDrawingBuffer: true
|
|
233
|
+
});
|
|
234
|
+
if (!gl) return;
|
|
235
|
+
let sceneProg;
|
|
236
|
+
let ditherProg;
|
|
237
|
+
try {
|
|
238
|
+
sceneProg = program(gl, SCENE_FRAG);
|
|
239
|
+
ditherProg = program(gl, DITHER_FRAG);
|
|
240
|
+
} catch (err) {
|
|
241
|
+
console.error("fog shader failed:", err);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
const noiseTex = gl.createTexture();
|
|
245
|
+
gl.bindTexture(gl.TEXTURE_2D, noiseTex);
|
|
246
|
+
const N = 256;
|
|
247
|
+
const data = new Uint8Array(N * N * 4);
|
|
248
|
+
for (let i = 0; i < data.length; i += 4) {
|
|
249
|
+
data[i] = Math.random() * 256;
|
|
250
|
+
data[i + 1] = Math.random() * 256;
|
|
251
|
+
data[i + 2] = Math.random() * 256;
|
|
252
|
+
data[i + 3] = 255;
|
|
253
|
+
}
|
|
254
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, N, N, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);
|
|
255
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
|
|
256
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
|
|
257
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
258
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
259
|
+
const sceneTex = gl.createTexture();
|
|
260
|
+
gl.bindTexture(gl.TEXTURE_2D, sceneTex);
|
|
261
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
262
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
263
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
264
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
265
|
+
const fbo = gl.createFramebuffer();
|
|
266
|
+
const SCALE = .3;
|
|
267
|
+
const reduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
268
|
+
const start = performance.now();
|
|
269
|
+
let raf = 0;
|
|
270
|
+
let last = 0;
|
|
271
|
+
const render = (elapsed) => {
|
|
272
|
+
const w = parent.clientWidth;
|
|
273
|
+
const h = parent.clientHeight;
|
|
274
|
+
if (w === 0 || h === 0) return;
|
|
275
|
+
const dpr = Math.min(window.devicePixelRatio || 1, 2);
|
|
276
|
+
if (canvas.width !== Math.round(w * dpr) || canvas.height !== Math.round(h * dpr)) {
|
|
277
|
+
canvas.width = Math.round(w * dpr);
|
|
278
|
+
canvas.height = Math.round(h * dpr);
|
|
279
|
+
}
|
|
280
|
+
const sceneW = Math.max(64, Math.round(w * SCALE));
|
|
281
|
+
const sceneH = Math.max(64, Math.round(h * SCALE));
|
|
282
|
+
gl.bindTexture(gl.TEXTURE_2D, sceneTex);
|
|
283
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, sceneW, sceneH, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
284
|
+
const t = elapsed * live.current.speed;
|
|
285
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
|
|
286
|
+
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, sceneTex, 0);
|
|
287
|
+
gl.viewport(0, 0, sceneW, sceneH);
|
|
288
|
+
gl.useProgram(sceneProg);
|
|
289
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
290
|
+
gl.bindTexture(gl.TEXTURE_2D, noiseTex);
|
|
291
|
+
gl.uniform1i(gl.getUniformLocation(sceneProg, "uNoise"), 0);
|
|
292
|
+
gl.uniform2f(gl.getUniformLocation(sceneProg, "uRes"), sceneW, sceneH);
|
|
293
|
+
gl.uniform1f(gl.getUniformLocation(sceneProg, "uTime"), t);
|
|
294
|
+
gl.drawArrays(gl.TRIANGLES, 0, 3);
|
|
295
|
+
const { ink, milk, moss } = hexToRgbAll(live.current.palette);
|
|
296
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
297
|
+
gl.viewport(0, 0, canvas.width, canvas.height);
|
|
298
|
+
gl.useProgram(ditherProg);
|
|
299
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
300
|
+
gl.bindTexture(gl.TEXTURE_2D, sceneTex);
|
|
301
|
+
gl.uniform1i(gl.getUniformLocation(ditherProg, "uScene"), 0);
|
|
302
|
+
gl.uniform2f(gl.getUniformLocation(ditherProg, "uRes"), canvas.width, canvas.height);
|
|
303
|
+
gl.uniform1f(gl.getUniformLocation(ditherProg, "uDot"), Math.max(3, Math.round(dpr * 2)));
|
|
304
|
+
gl.uniform3f(gl.getUniformLocation(ditherProg, "uInk"), ...ink);
|
|
305
|
+
gl.uniform3f(gl.getUniformLocation(ditherProg, "uMilk"), ...milk);
|
|
306
|
+
gl.uniform3f(gl.getUniformLocation(ditherProg, "uMoss"), ...moss);
|
|
307
|
+
gl.drawArrays(gl.TRIANGLES, 0, 3);
|
|
308
|
+
};
|
|
309
|
+
render(0);
|
|
310
|
+
if (!reduced) {
|
|
311
|
+
const frame = (now) => {
|
|
312
|
+
if (now - last >= 1e3 / 30) {
|
|
313
|
+
last = now;
|
|
314
|
+
render((now - start) / 1e3);
|
|
315
|
+
}
|
|
316
|
+
raf = requestAnimationFrame(frame);
|
|
317
|
+
};
|
|
318
|
+
raf = requestAnimationFrame(frame);
|
|
319
|
+
}
|
|
320
|
+
const observer = new ResizeObserver(() => render((performance.now() - start) / 1e3));
|
|
321
|
+
observer.observe(parent);
|
|
322
|
+
return () => {
|
|
323
|
+
cancelAnimationFrame(raf);
|
|
324
|
+
observer.disconnect();
|
|
325
|
+
gl.deleteProgram(sceneProg);
|
|
326
|
+
gl.deleteProgram(ditherProg);
|
|
327
|
+
gl.deleteTexture(noiseTex);
|
|
328
|
+
gl.deleteTexture(sceneTex);
|
|
329
|
+
gl.deleteFramebuffer(fbo);
|
|
330
|
+
};
|
|
331
|
+
}, []);
|
|
332
|
+
return /* @__PURE__ */ jsx("canvas", {
|
|
333
|
+
ref,
|
|
334
|
+
"aria-hidden": "true",
|
|
335
|
+
className: cn("size-full", className)
|
|
336
|
+
});
|
|
337
|
+
};
|
|
338
|
+
//#endregion
|
|
339
|
+
export { FOG_BRAND_PALETTE, FogIllustration };
|
|
340
|
+
|
|
341
|
+
//# sourceMappingURL=FogIllustration.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FogIllustration.mjs","names":[],"sources":["../../../src/components/fog-illustration/FogIllustration.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { cn } from '../../lib/utils';\n\n/**\n * FogIllustration — a volumetric fog raymarcher rendered as chunky\n * 1-bit dither in a given palette.\n *\n * Two GPU passes: the scene is raymarched at low internal resolution\n * (ridged fbm ground, drifting fog volumes, air haze — the fog hides\n * the low resolution), then a full-resolution pass thresholds the\n * scene against a Bayer matrix with hash jitter: ink dots on milk,\n * with moss-tinted dots where fog dominates.\n *\n * The canvas fills its parent element; give the parent a size.\n * Pauses under prefers-reduced-motion after one frame.\n */\n\nexport type FogPalette = {\n /** Dark terrain and dither ink. */\n ink: string;\n /** Background the dots sit on. */\n milk: string;\n /** Tint for dots where fog dominates. */\n moss: string;\n};\n\n/** The Berget brand palette, as rendered sRGB. */\nexport const FOG_BRAND_PALETTE: FogPalette = {\n ink: '#171a1a',\n milk: '#f7f5ed',\n moss: '#598c6b',\n};\n\nexport interface FogIllustrationProps {\n /** Colors as hex strings. Unset keys fall back to the brand palette. */\n palette?: Partial<FogPalette>;\n /** Flight speed multiplier @default 1 */\n speed?: number;\n /** Additional CSS classes for the canvas element */\n className?: string;\n}\n\nconst hexToRgb = (hex: string): [number, number, number] => {\n let h = hex.replace('#', '');\n if (h.length === 3)\n h = h\n .split('')\n .map((c) => c + c)\n .join('');\n const n = Number.parseInt(h, 16);\n return [((n >> 16) & 255) / 255, ((n >> 8) & 255) / 255, (n & 255) / 255];\n};\n\nconst hexToRgbAll = (p: FogPalette) => ({\n ink: hexToRgb(p.ink),\n milk: hexToRgb(p.milk),\n moss: hexToRgb(p.moss),\n});\n\nconst VERT = `#version 300 es\nvoid main() {\n vec2 p = vec2(float((gl_VertexID << 1) & 2), float(gl_VertexID & 2));\n gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0);\n}`;\n\n/** Pass A — raymarch the foggy terrain at low resolution. */\nconst SCENE_FRAG = `#version 300 es\nprecision highp float;\nout vec4 outColor;\nuniform vec2 uRes;\nuniform float uTime;\nuniform sampler2D uNoise;\n\nfloat noise(vec3 x) {\n // 3D value noise from the 2D random texture — iq's two-slice trick:\n // z slices are tiled into the u axis, two neighbours mixed by fract(z).\n vec3 p = floor(x), f = fract(x);\n f = f * f * (3.0 - 2.0 * f);\n vec2 uv = (p.xy + vec2(37.0, 239.0) * p.z) + f.xy;\n vec2 rg = texture(uNoise, (uv + 0.5) / 256.0).xy;\n return mix(rg.x, rg.y, f.z) * 2.0 - 1.0;\n}\n\nfloat ground(vec3 pos, int oct) {\n float f = 0.0;\n float s = 1.4;\n vec3 p = pos * s * 0.1;\n for (int i = 0; i < 6; i++) {\n if (i >= oct) break;\n f += abs(noise(p)) * s;\n p = vec3(p.z * 5.0, p.xy * 3.0 + p.yx * 4.0 * vec2(1, -1)) * 2.0 / 5.0;\n s /= 2.0;\n }\n return (pos.y + f) * 0.8;\n}\n\nfloat fogD(vec3 pos, int oct) {\n float f = 0.0;\n float s = 1.0;\n vec3 p = pos * 0.7;\n p += uTime * vec3(0.0, -0.02, 0.02);\n for (int i = 0; i < 6; i++) {\n if (i >= oct) break;\n f += noise(p) * s;\n p = vec3(p.z * 5.0, p.xy * 3.0 + p.yx * 4.0 * vec2(1, -1)) * 2.0 / 5.0;\n s /= 1.7;\n }\n f += smoothstep(0.2, 0.0, abs(pos.y + 1.0)) * 0.4;\n f += smoothstep(0.35, 0.15, abs(pos.y - 0.02)) * 0.7;\n f *= 1.0 - smoothstep(-0.1, 0.55, pos.y);\n f = smoothstep(0.45, 1.7, f);\n float g = ground(pos, 2);\n f *= 1.0 - g / (abs(g) + 0.04);\n return f;\n}\n\nfloat airD(vec3 pos) { return exp2(-pos.y / 5.0 - 3.0); }\n\nvoid main() {\n float time = uTime * 0.2;\n vec3 velocity = vec3(1.0, 0.0, 0.0);\n vec3 camPos = vec3(sin(time * 0.618) * 0.4, 0.62 + 0.08 * sin(time), 0.0) + time * velocity;\n vec3 camLook = vec3(-1.0, -0.3, 4.0) + (time - sin(time)) * velocity;\n\n vec2 fc = gl_FragCoord.xy;\n vec3 ray = vec3((fc - uRes * 0.5) / uRes.x, 1.0);\n vec3 camDir = normalize(camLook - camPos);\n vec3 camRight = normalize(cross(vec3(0.0, 1.0, 0.0), camDir));\n vec3 camUp = cross(camDir, camRight);\n ray = normalize(ray.x * camRight + ray.y * camUp + ray.z * camDir);\n\n vec3 sunDir = normalize(vec3(-3.0, 2.0, 1.0));\n\n vec3 pos = camPos;\n float absorption = 1.0;\n float emission = 0.0;\n float fogFactor = 0.0;\n float lastStride = 0.0;\n float lastFog = 0.0;\n float lastAir = 0.0;\n\n for (int i = 0; i < 80; i++) {\n float h = ground(pos, 4);\n float fog = fogD(pos, 3);\n float fogIntegral = lastStride * mix(fog, lastFog, 0.5);\n float air = airD(pos);\n float airIntegral = lastStride * mix(air, lastAir, 0.5);\n\n float fogAbsDelta = pow(0.1, fogIntegral);\n float fogEmiDelta = 1.0 - fogAbsDelta;\n float shadowStep = 0.07;\n float shadow = (fog - fogD(pos + sunDir * shadowStep, 2)) / shadowStep;\n fogEmiDelta *= mix(0.2, 0.85, smoothstep(-1.0, 1.0, shadow));\n\n float airAbsDelta = pow(0.55, airIntegral);\n float airEmiDelta = (1.0 - pow(0.55, airIntegral)) * 0.5;\n\n float absDelta = fogAbsDelta * airAbsDelta;\n emission += absorption * sqrt(absDelta) * (fogEmiDelta + airEmiDelta);\n absorption *= absDelta;\n\n fogFactor = max(fogFactor, (1.0 - absorption) * step(0.05, fog));\n\n lastFog = fog;\n lastAir = air;\n h = min(h, 0.1);\n lastStride = h;\n pos += h * ray;\n if (h < 0.001) break;\n }\n\n float brightness;\n if (absorption > 0.02) {\n // terrain visible — light it\n vec2 d = vec2(-1.0, 1.0) * 0.02;\n vec3 normal = normalize(\n ground(pos + d.xxx, 5) * d.xxx +\n ground(pos + d.xyy, 5) * d.xyy +\n ground(pos + d.yxy, 5) * d.yxy +\n ground(pos + d.yyx, 5) * d.yyx\n );\n float ao = smoothstep(-0.2, 1.5, ground(pos + normal * 0.3, 5) / 0.3);\n float shade = (0.5 * ao + 0.5 * max(dot(normal, sunDir), 0.0)) * 0.65;\n brightness = shade * absorption + emission;\n } else {\n brightness = emission;\n }\n\n // Clear sky — rays that escape upward land on milk, whatever the\n // haze did. The poster look: light sky, dark ridges, fog between.\n float sky = smoothstep(-0.15, 0.35, ray.y) * 0.92;\n brightness = max(brightness, sky * absorption);\n\n outColor = vec4(clamp(brightness, 0.0, 1.0), clamp(fogFactor, 0.0, 1.0), 0.0, 1.0);\n}`;\n\n/** Pass B — full-resolution 1-bit dither of the scene. */\nconst DITHER_FRAG = `#version 300 es\nprecision highp float;\nout vec4 outColor;\nuniform vec2 uRes;\nuniform float uDot;\nuniform sampler2D uScene;\nuniform vec3 uInk;\nuniform vec3 uMilk;\nuniform vec3 uMoss;\n\nfloat bayer2(vec2 a) { a = floor(a); return fract(a.x / 2.0 + a.y * a.y * 0.75); }\nfloat bayer4(vec2 a) { return bayer2(0.5 * a) * 0.25 + bayer2(a); }\nfloat hash12(vec2 p) {\n vec3 p3 = fract(vec3(p.xyx) * 0.1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nvoid main() {\n // Chunky cells: one dot decision per uDot×uDot block — the dither\n // reads as visible pixels, not 1px noise.\n vec2 cell = floor(gl_FragCoord.xy / uDot);\n vec4 scene = texture(uScene, (cell * uDot + uDot * 0.5) / uRes);\n float darkness = 1.0 - scene.r;\n float jitter = (hash12(cell) - 0.5) * 0.3;\n float on = step(darkness, bayer4(cell) + jitter);\n vec3 col = scene.g > 0.5 ? uMoss : uInk;\n outColor = vec4(mix(col, uMilk, on), 1.0);\n}`;\n\nconst compile = (gl: WebGL2RenderingContext, type: number, src: string): WebGLShader => {\n const sh = gl.createShader(type);\n if (!sh) throw new Error('shader creation failed');\n gl.shaderSource(sh, src);\n gl.compileShader(sh);\n if (!gl.getShaderParameter(sh, gl.COMPILE_STATUS)) {\n throw new Error(gl.getShaderInfoLog(sh) || 'shader compile failed');\n }\n return sh;\n};\n\nconst program = (gl: WebGL2RenderingContext, frag: string): WebGLProgram => {\n const p = gl.createProgram();\n if (!p) throw new Error('program creation failed');\n gl.attachShader(p, compile(gl, gl.VERTEX_SHADER, VERT));\n gl.attachShader(p, compile(gl, gl.FRAGMENT_SHADER, frag));\n gl.linkProgram(p);\n if (!gl.getProgramParameter(p, gl.LINK_STATUS)) {\n throw new Error(gl.getProgramInfoLog(p) || 'program link failed');\n }\n return p;\n};\n\nexport const FogIllustration = ({ palette, speed = 1, className }: FogIllustrationProps) => {\n const ref = useRef<HTMLCanvasElement>(null);\n // Live props — the GL setup runs once; palette and speed changes\n // apply on the next frame without rebuilding the context.\n const live = useRef({ palette: { ...FOG_BRAND_PALETTE, ...palette }, speed });\n live.current = { palette: { ...FOG_BRAND_PALETTE, ...palette }, speed };\n\n useEffect(() => {\n const canvas = ref.current;\n const parent = canvas?.parentElement;\n if (!canvas || !parent) return;\n\n // preserveDrawingBuffer keeps the frame readable for screenshots —\n // the cost is negligible for a decorative illustration.\n const gl = canvas.getContext('webgl2', {\n antialias: false,\n alpha: false,\n preserveDrawingBuffer: true,\n });\n if (!gl) return;\n\n let sceneProg: WebGLProgram;\n let ditherProg: WebGLProgram;\n try {\n sceneProg = program(gl, SCENE_FRAG);\n ditherProg = program(gl, DITHER_FRAG);\n } catch (err) {\n console.error('fog shader failed:', err);\n return; // shader failed — leave the panel empty rather than broken\n }\n\n // Noise texture — the Shadertoy iChannel1 stand-in.\n const noiseTex = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, noiseTex);\n const N = 256;\n const data = new Uint8Array(N * N * 4);\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.random() * 256;\n data[i + 1] = Math.random() * 256;\n data[i + 2] = Math.random() * 256;\n data[i + 3] = 255;\n }\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, N, N, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n // Low-res scene target.\n const sceneTex = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, sceneTex);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n const fbo = gl.createFramebuffer();\n\n const SCALE = 0.3; // internal raymarch resolution\n const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n const start = performance.now();\n let raf = 0;\n let last = 0;\n\n const render = (elapsed: number) => {\n const w = parent.clientWidth;\n const h = parent.clientHeight;\n if (w === 0 || h === 0) return;\n const dpr = Math.min(window.devicePixelRatio || 1, 2);\n if (canvas.width !== Math.round(w * dpr) || canvas.height !== Math.round(h * dpr)) {\n canvas.width = Math.round(w * dpr);\n canvas.height = Math.round(h * dpr);\n }\n const sceneW = Math.max(64, Math.round(w * SCALE));\n const sceneH = Math.max(64, Math.round(h * SCALE));\n gl.bindTexture(gl.TEXTURE_2D, sceneTex);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, sceneW, sceneH, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n const t = elapsed * live.current.speed;\n\n // Pass A — scene at low resolution.\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, sceneTex, 0);\n gl.viewport(0, 0, sceneW, sceneH);\n gl.useProgram(sceneProg);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, noiseTex);\n gl.uniform1i(gl.getUniformLocation(sceneProg, 'uNoise'), 0);\n gl.uniform2f(gl.getUniformLocation(sceneProg, 'uRes'), sceneW, sceneH);\n gl.uniform1f(gl.getUniformLocation(sceneProg, 'uTime'), t);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n\n // Pass B — dither at full resolution.\n const { ink, milk, moss } = hexToRgbAll(live.current.palette);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.useProgram(ditherProg);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, sceneTex);\n gl.uniform1i(gl.getUniformLocation(ditherProg, 'uScene'), 0);\n gl.uniform2f(gl.getUniformLocation(ditherProg, 'uRes'), canvas.width, canvas.height);\n gl.uniform1f(gl.getUniformLocation(ditherProg, 'uDot'), Math.max(3, Math.round(dpr * 2)));\n gl.uniform3f(gl.getUniformLocation(ditherProg, 'uInk'), ...ink);\n gl.uniform3f(gl.getUniformLocation(ditherProg, 'uMilk'), ...milk);\n gl.uniform3f(gl.getUniformLocation(ditherProg, 'uMoss'), ...moss);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n };\n\n render(0);\n if (!reduced) {\n const frame = (now: number) => {\n if (now - last >= 1000 / 30) {\n last = now;\n render((now - start) / 1000);\n }\n raf = requestAnimationFrame(frame);\n };\n raf = requestAnimationFrame(frame);\n }\n const observer = new ResizeObserver(() => render((performance.now() - start) / 1000));\n observer.observe(parent);\n\n return () => {\n cancelAnimationFrame(raf);\n observer.disconnect();\n gl.deleteProgram(sceneProg);\n gl.deleteProgram(ditherProg);\n gl.deleteTexture(noiseTex);\n gl.deleteTexture(sceneTex);\n gl.deleteFramebuffer(fbo);\n };\n }, []);\n\n return <canvas ref={ref} aria-hidden=\"true\" className={cn('size-full', className)} />;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
|
|
3
|
+
const require_utils = require("../../lib/utils.cjs");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
react = require_runtime.__toESM(react, 1);
|
|
6
|
+
let class_variance_authority = require("class-variance-authority");
|
|
7
|
+
let _base_ui_react_merge_props = require("@base-ui/react/merge-props");
|
|
8
|
+
let _base_ui_react_use_render = require("@base-ui/react/use-render");
|
|
9
|
+
//#region src/components/grid/Grid.tsx
|
|
10
|
+
const gridVariants = (0, class_variance_authority.cva)("grid", {
|
|
11
|
+
variants: {
|
|
12
|
+
align: {
|
|
13
|
+
start: "items-start",
|
|
14
|
+
center: "items-center",
|
|
15
|
+
end: "items-end",
|
|
16
|
+
stretch: "items-stretch"
|
|
17
|
+
},
|
|
18
|
+
justify: {
|
|
19
|
+
start: "justify-start",
|
|
20
|
+
center: "justify-center",
|
|
21
|
+
end: "justify-end",
|
|
22
|
+
between: "justify-between",
|
|
23
|
+
around: "justify-around",
|
|
24
|
+
evenly: "justify-evenly"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: {
|
|
28
|
+
align: "stretch",
|
|
29
|
+
justify: "start"
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const Grid = react.forwardRef(({ className, align, justify, cols, rows, gap, gapX, gapY, asChild = false, children, ...props }, ref) => {
|
|
33
|
+
return (0, _base_ui_react_use_render.useRender)({
|
|
34
|
+
ref,
|
|
35
|
+
defaultTagName: "div",
|
|
36
|
+
render: asChild ? children : void 0,
|
|
37
|
+
props: (0, _base_ui_react_merge_props.mergeProps)({
|
|
38
|
+
className: require_utils.cn(gridVariants({
|
|
39
|
+
align,
|
|
40
|
+
justify
|
|
41
|
+
}), cols !== void 0 && `grid-cols-${cols}`, rows !== void 0 && `grid-rows-${rows}`, gap !== void 0 && `gap-${gap}`, gapX !== void 0 && `gap-x-${gapX}`, gapY !== void 0 && `gap-y-${gapY}`, className),
|
|
42
|
+
children: asChild ? void 0 : children
|
|
43
|
+
}, props)
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
Grid.displayName = "Grid";
|
|
47
|
+
//#endregion
|
|
48
|
+
exports.Grid = Grid;
|
|
49
|
+
exports.gridVariants = gridVariants;
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=Grid.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.cjs","names":["cva","React","useRender","mergeProps","cn"],"sources":["../../../src/components/grid/Grid.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\n\nconst gridVariants = cva('grid', {\n variants: {\n align: {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n },\n justify: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n },\n },\n defaultVariants: {\n align: 'stretch',\n justify: 'start',\n },\n});\n\nexport type SpacingScale =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 8\n | 10\n | 12\n | 16\n | 20\n | 24\n | 32\n | 40\n | 48\n | 56\n | 64\n | 72\n | 80\n | 96;\n\nexport type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;\n\nexport type GridRowsScale = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface GridProps\n extends useRender.ComponentProps<'div'>, VariantProps<typeof gridVariants> {\n children?: React.ReactNode;\n cols?: GridColsScale;\n rows?: GridRowsScale;\n gap?: SpacingScale;\n gapX?: SpacingScale;\n gapY?: SpacingScale;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n}\n\nconst Grid = React.forwardRef<HTMLElement, GridProps>(\n (\n { className, align, justify, cols, rows, gap, gapX, gapY, asChild = false, children, ...props },\n ref,\n ) => {\n return useRender({\n ref,\n defaultTagName: 'div',\n render: asChild ? (children as React.ReactElement) : undefined,\n props: mergeProps<'div'>(\n {\n className: cn(\n gridVariants({ align, justify }),\n cols !== undefined && `grid-cols-${cols}`,\n rows !== undefined && `grid-rows-${rows}`,\n gap !== undefined && `gap-${gap}`,\n gapX !== undefined && `gap-x-${gapX}`,\n gapY !== undefined && `gap-y-${gapY}`,\n className,\n ),\n children: asChild ? undefined : children,\n } as React.ComponentProps<'div'>,\n props,\n ),\n });\n },\n);\nGrid.displayName = 'Grid';\n\nexport { Grid, gridVariants };\n"],"mappings":";;;;;;;;;AAQA,MAAM,gBAAA,GAAeA,yBAAAA,IAAAA,CAAI,QAAQ;CAC/B,UAAU;EACR,OAAO;GACL,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;EACX;EACA,SAAS;GACP,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT,QAAQ;GACR,QAAQ;EACV;CACF;CACA,iBAAiB;EACf,OAAO;EACP,SAAS;CACX;AACF,CAAC;AAyCD,MAAM,OAAOC,MAAM,YAEf,EAAE,WAAW,OAAO,SAAS,MAAM,MAAM,KAAK,MAAM,MAAM,UAAU,OAAO,UAAU,GAAG,SACxF,QACG;CACH,QAAA,GAAOC,0BAAAA,UAAAA,CAAU;EACf;EACA,gBAAgB;EAChB,QAAQ,UAAW,WAAkC,KAAA;EACrD,QAAA,GAAOC,2BAAAA,WAAAA,CACL;GACE,WAAWC,cAAAA,GACT,aAAa;IAAE;IAAO;GAAQ,CAAC,GAC/B,SAAS,KAAA,KAAa,aAAa,QACnC,SAAS,KAAA,KAAa,aAAa,QACnC,QAAQ,KAAA,KAAa,OAAO,OAC5B,SAAS,KAAA,KAAa,SAAS,QAC/B,SAAS,KAAA,KAAa,SAAS,QAC/B,SACF;GACA,UAAU,UAAU,KAAA,IAAY;EAClC,GACA,KACF;CACF,CAAC;AACH,CACF;AACA,KAAK,cAAc"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
+
//#region src/components/grid/Grid.d.ts
|
|
5
|
+
declare const gridVariants: (props?: ({
|
|
6
|
+
align?: "center" | "start" | "end" | "stretch" | null | undefined;
|
|
7
|
+
justify?: "center" | "start" | "end" | "between" | "around" | "evenly" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
export type SpacingScale = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 | 96;
|
|
10
|
+
export type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;
|
|
11
|
+
export type GridRowsScale = 1 | 2 | 3 | 4 | 5 | 6;
|
|
12
|
+
export interface GridProps extends useRender.ComponentProps<'div'>, VariantProps<typeof gridVariants> {
|
|
13
|
+
children?: React.ReactNode;
|
|
14
|
+
cols?: GridColsScale;
|
|
15
|
+
rows?: GridRowsScale;
|
|
16
|
+
gap?: SpacingScale;
|
|
17
|
+
gapX?: SpacingScale;
|
|
18
|
+
gapY?: SpacingScale;
|
|
19
|
+
/** Render as a different element/component. Replaces the Radix `asChild` prop. */
|
|
20
|
+
asChild?: boolean;
|
|
21
|
+
}
|
|
22
|
+
declare const Grid: React.ForwardRefExoticComponent<Omit<GridProps, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Grid, gridVariants };
|
|
25
|
+
//# sourceMappingURL=Grid.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.d.cts","names":[],"sources":["../../../src/components/grid/Grid.tsx"],"mappings":";;;;cAQM,eAAY;;;6CAqBhB;YAEU;YAuBA;YAEA;iBAEK,kBACP,UAAU,uBAAuB,oBAAoB;EAC7D,WAAW,MAAM;EACjB,OAAO;EACP,OAAO;EACP,MAAM;EACN,OAAO;EACP,OAAO;;EAEP;;cAGI,MAAI,MAAA,0BAAA,KAAA,oBAAA,MAAA,cAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
+
//#region src/components/grid/Grid.d.ts
|
|
5
|
+
declare const gridVariants: (props?: ({
|
|
6
|
+
align?: "center" | "start" | "end" | "stretch" | null | undefined;
|
|
7
|
+
justify?: "center" | "start" | "end" | "between" | "around" | "evenly" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
export type SpacingScale = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 | 96;
|
|
10
|
+
export type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;
|
|
11
|
+
export type GridRowsScale = 1 | 2 | 3 | 4 | 5 | 6;
|
|
12
|
+
export interface GridProps extends useRender.ComponentProps<'div'>, VariantProps<typeof gridVariants> {
|
|
13
|
+
children?: React.ReactNode;
|
|
14
|
+
cols?: GridColsScale;
|
|
15
|
+
rows?: GridRowsScale;
|
|
16
|
+
gap?: SpacingScale;
|
|
17
|
+
gapX?: SpacingScale;
|
|
18
|
+
gapY?: SpacingScale;
|
|
19
|
+
/** Render as a different element/component. Replaces the Radix `asChild` prop. */
|
|
20
|
+
asChild?: boolean;
|
|
21
|
+
}
|
|
22
|
+
declare const Grid: React.ForwardRefExoticComponent<Omit<GridProps, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Grid, gridVariants };
|
|
25
|
+
//# sourceMappingURL=Grid.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.d.mts","names":[],"sources":["../../../src/components/grid/Grid.tsx"],"mappings":";;;;cAQM,eAAY;;;6CAqBhB;YAEU;YAuBA;YAEA;iBAEK,kBACP,UAAU,uBAAuB,oBAAoB;EAC7D,WAAW,MAAM;EACjB,OAAO;EACP,OAAO;EACP,MAAM;EACN,OAAO;EACP,OAAO;;EAEP;;cAGI,MAAI,MAAA,0BAAA,KAAA,oBAAA,MAAA,cAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../lib/utils.mjs";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
6
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
7
|
+
//#region src/components/grid/Grid.tsx
|
|
8
|
+
const gridVariants = cva("grid", {
|
|
9
|
+
variants: {
|
|
10
|
+
align: {
|
|
11
|
+
start: "items-start",
|
|
12
|
+
center: "items-center",
|
|
13
|
+
end: "items-end",
|
|
14
|
+
stretch: "items-stretch"
|
|
15
|
+
},
|
|
16
|
+
justify: {
|
|
17
|
+
start: "justify-start",
|
|
18
|
+
center: "justify-center",
|
|
19
|
+
end: "justify-end",
|
|
20
|
+
between: "justify-between",
|
|
21
|
+
around: "justify-around",
|
|
22
|
+
evenly: "justify-evenly"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
align: "stretch",
|
|
27
|
+
justify: "start"
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const Grid = React.forwardRef(({ className, align, justify, cols, rows, gap, gapX, gapY, asChild = false, children, ...props }, ref) => {
|
|
31
|
+
return useRender({
|
|
32
|
+
ref,
|
|
33
|
+
defaultTagName: "div",
|
|
34
|
+
render: asChild ? children : void 0,
|
|
35
|
+
props: mergeProps({
|
|
36
|
+
className: cn(gridVariants({
|
|
37
|
+
align,
|
|
38
|
+
justify
|
|
39
|
+
}), cols !== void 0 && `grid-cols-${cols}`, rows !== void 0 && `grid-rows-${rows}`, gap !== void 0 && `gap-${gap}`, gapX !== void 0 && `gap-x-${gapX}`, gapY !== void 0 && `gap-y-${gapY}`, className),
|
|
40
|
+
children: asChild ? void 0 : children
|
|
41
|
+
}, props)
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
Grid.displayName = "Grid";
|
|
45
|
+
//#endregion
|
|
46
|
+
export { Grid, gridVariants };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=Grid.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.mjs","names":[],"sources":["../../../src/components/grid/Grid.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\n\nconst gridVariants = cva('grid', {\n variants: {\n align: {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n },\n justify: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n },\n },\n defaultVariants: {\n align: 'stretch',\n justify: 'start',\n },\n});\n\nexport type SpacingScale =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 8\n | 10\n | 12\n | 16\n | 20\n | 24\n | 32\n | 40\n | 48\n | 56\n | 64\n | 72\n | 80\n | 96;\n\nexport type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;\n\nexport type GridRowsScale = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface GridProps\n extends useRender.ComponentProps<'div'>, VariantProps<typeof gridVariants> {\n children?: React.ReactNode;\n cols?: GridColsScale;\n rows?: GridRowsScale;\n gap?: SpacingScale;\n gapX?: SpacingScale;\n gapY?: SpacingScale;\n /** Render as a different element/component. Replaces the Radix `asChild` prop. */\n asChild?: boolean;\n}\n\nconst Grid = React.forwardRef<HTMLElement, GridProps>(\n (\n { className, align, justify, cols, rows, gap, gapX, gapY, asChild = false, children, ...props },\n ref,\n ) => {\n return useRender({\n ref,\n defaultTagName: 'div',\n render: asChild ? (children as React.ReactElement) : undefined,\n props: mergeProps<'div'>(\n {\n className: cn(\n gridVariants({ align, justify }),\n cols !== undefined && `grid-cols-${cols}`,\n rows !== undefined && `grid-rows-${rows}`,\n gap !== undefined && `gap-${gap}`,\n gapX !== undefined && `gap-x-${gapX}`,\n gapY !== undefined && `gap-y-${gapY}`,\n className,\n ),\n children: asChild ? undefined : children,\n } as React.ComponentProps<'div'>,\n props,\n ),\n });\n },\n);\nGrid.displayName = 'Grid';\n\nexport { Grid, gridVariants };\n"],"mappings":";;;;;;;AAQA,MAAM,eAAe,IAAI,QAAQ;CAC/B,UAAU;EACR,OAAO;GACL,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;EACX;EACA,SAAS;GACP,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT,QAAQ;GACR,QAAQ;EACV;CACF;CACA,iBAAiB;EACf,OAAO;EACP,SAAS;CACX;AACF,CAAC;AAyCD,MAAM,OAAO,MAAM,YAEf,EAAE,WAAW,OAAO,SAAS,MAAM,MAAM,KAAK,MAAM,MAAM,UAAU,OAAO,UAAU,GAAG,SACxF,QACG;CACH,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,QAAQ,UAAW,WAAkC,KAAA;EACrD,OAAO,WACL;GACE,WAAW,GACT,aAAa;IAAE;IAAO;GAAQ,CAAC,GAC/B,SAAS,KAAA,KAAa,aAAa,QACnC,SAAS,KAAA,KAAa,aAAa,QACnC,QAAQ,KAAA,KAAa,OAAO,OAC5B,SAAS,KAAA,KAAa,SAAS,QAC/B,SAAS,KAAA,KAAa,SAAS,QAC/B,SACF;GACA,UAAU,UAAU,KAAA,IAAY;EAClC,GACA,KACF;CACF,CAAC;AACH,CACF;AACA,KAAK,cAAc"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
|
|
3
|
+
const require_utils = require("../../lib/utils.cjs");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
react = require_runtime.__toESM(react, 1);
|
|
6
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
|
+
//#region src/components/icon/Icon.tsx
|
|
8
|
+
const iconStrokeMap = {
|
|
9
|
+
12: 1.4,
|
|
10
|
+
16: 1.4,
|
|
11
|
+
24: 1.6,
|
|
12
|
+
32: 1.8
|
|
13
|
+
};
|
|
14
|
+
const Icon = react.forwardRef(({ icon: IconComponent, size, className, "aria-label": ariaLabel, "aria-hidden": ariaHidden = true, ...props }, ref) => {
|
|
15
|
+
const strokeWidth = iconStrokeMap[size];
|
|
16
|
+
const sizeClass = size === 12 ? "w-3 h-3" : size === 16 ? "w-4 h-4" : size === 24 ? "w-6 h-6" : "w-8 h-8";
|
|
17
|
+
const ariaAttributes = ariaLabel ? { "aria-label": ariaLabel } : { "aria-hidden": ariaHidden };
|
|
18
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconComponent, {
|
|
19
|
+
ref,
|
|
20
|
+
className: require_utils.cn(sizeClass, className),
|
|
21
|
+
strokeWidth,
|
|
22
|
+
...ariaAttributes,
|
|
23
|
+
...props
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
Icon.displayName = "Icon";
|
|
27
|
+
//#endregion
|
|
28
|
+
exports.Icon = Icon;
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=Icon.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.cjs","names":["React","cn"],"sources":["../../../src/components/icon/Icon.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { LucideIcon, LucideProps } from 'lucide-react';\nimport { cn } from '../../lib/utils';\n\nexport interface IconProps extends Omit<LucideProps, 'size'> {\n icon: LucideIcon;\n size: 12 | 16 | 24 | 32;\n className?: string;\n 'aria-label'?: string;\n 'aria-hidden'?: boolean;\n}\n\nconst iconStrokeMap: Record<IconProps['size'], number> = {\n 12: 1.4,\n 16: 1.4,\n 24: 1.6,\n 32: 1.8,\n};\n\nconst Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n icon: IconComponent,\n size,\n className,\n 'aria-label': ariaLabel,\n 'aria-hidden': ariaHidden = true,\n ...props\n },\n ref,\n ) => {\n const strokeWidth = iconStrokeMap[size];\n const sizeClass =\n size === 12 ? 'w-3 h-3' : size === 16 ? 'w-4 h-4' : size === 24 ? 'w-6 h-6' : 'w-8 h-8';\n\n const ariaAttributes = ariaLabel ? { 'aria-label': ariaLabel } : { 'aria-hidden': ariaHidden };\n\n return (\n <IconComponent\n ref={ref}\n className={cn(sizeClass, className)}\n strokeWidth={strokeWidth}\n {...ariaAttributes}\n {...props}\n />\n );\n },\n);\n\nIcon.displayName = 'Icon';\n\nexport { Icon };\n"],"mappings":";;;;;;;AAcA,MAAM,gBAAmD;CACvD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,MAAM,OAAOA,MAAM,YAEf,EACE,MAAM,eACN,MACA,WACA,cAAc,WACd,eAAe,aAAa,MAC5B,GAAG,SAEL,QACG;CACH,MAAM,cAAc,cAAc;CAClC,MAAM,YACJ,SAAS,KAAK,YAAY,SAAS,KAAK,YAAY,SAAS,KAAK,YAAY;CAEhF,MAAM,iBAAiB,YAAY,EAAE,cAAc,UAAU,IAAI,EAAE,eAAe,WAAW;CAE7F,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD;EACO;EACL,WAAWC,cAAAA,GAAG,WAAW,SAAS;EACrB;EACb,GAAI;EACJ,GAAI;CACL,CAAA;AAEL,CACF;AAEA,KAAK,cAAc"}
|