From 06cea8243c5e5542acf199e9c711e2c03523dd48 Mon Sep 17 00:00:00 2001 From: Aditya Arora Date: Thu, 7 Aug 2025 22:55:47 -0400 Subject: [PATCH 1/8] initial commit --- entropy/mint-nft/app/app/globals.css | 123 + entropy/mint-nft/app/app/layout.tsx | 45 + entropy/mint-nft/app/app/page.tsx | 688 + entropy/mint-nft/app/app/providers.tsx | 28 + entropy/mint-nft/app/components.json | 21 + .../app/components/theme-provider.tsx | 11 + .../mint-nft/app/components/ui/accordion.tsx | 66 + .../app/components/ui/alert-dialog.tsx | 157 + entropy/mint-nft/app/components/ui/alert.tsx | 66 + .../app/components/ui/aspect-ratio.tsx | 11 + entropy/mint-nft/app/components/ui/avatar.tsx | 53 + entropy/mint-nft/app/components/ui/badge.tsx | 46 + .../mint-nft/app/components/ui/breadcrumb.tsx | 109 + entropy/mint-nft/app/components/ui/button.tsx | 59 + .../mint-nft/app/components/ui/calendar.tsx | 213 + entropy/mint-nft/app/components/ui/card.tsx | 92 + .../mint-nft/app/components/ui/carousel.tsx | 241 + entropy/mint-nft/app/components/ui/chart.tsx | 353 + .../mint-nft/app/components/ui/checkbox.tsx | 32 + .../app/components/ui/collapsible.tsx | 33 + .../mint-nft/app/components/ui/command.tsx | 184 + .../app/components/ui/context-menu.tsx | 252 + entropy/mint-nft/app/components/ui/dialog.tsx | 143 + entropy/mint-nft/app/components/ui/drawer.tsx | 135 + .../app/components/ui/dropdown-menu.tsx | 257 + entropy/mint-nft/app/components/ui/form.tsx | 167 + .../mint-nft/app/components/ui/hover-card.tsx | 44 + .../mint-nft/app/components/ui/input-otp.tsx | 77 + entropy/mint-nft/app/components/ui/input.tsx | 21 + entropy/mint-nft/app/components/ui/label.tsx | 24 + .../mint-nft/app/components/ui/menubar.tsx | 276 + .../app/components/ui/navigation-menu.tsx | 168 + .../mint-nft/app/components/ui/pagination.tsx | 127 + .../mint-nft/app/components/ui/popover.tsx | 48 + .../mint-nft/app/components/ui/progress.tsx | 31 + .../app/components/ui/radio-group.tsx | 45 + .../mint-nft/app/components/ui/resizable.tsx | 56 + .../app/components/ui/scroll-area.tsx | 58 + entropy/mint-nft/app/components/ui/select.tsx | 185 + .../mint-nft/app/components/ui/separator.tsx | 28 + entropy/mint-nft/app/components/ui/sheet.tsx | 139 + .../mint-nft/app/components/ui/sidebar.tsx | 726 + .../mint-nft/app/components/ui/skeleton.tsx | 13 + entropy/mint-nft/app/components/ui/slider.tsx | 63 + entropy/mint-nft/app/components/ui/sonner.tsx | 25 + entropy/mint-nft/app/components/ui/switch.tsx | 31 + entropy/mint-nft/app/components/ui/table.tsx | 116 + entropy/mint-nft/app/components/ui/tabs.tsx | 66 + .../mint-nft/app/components/ui/textarea.tsx | 18 + entropy/mint-nft/app/components/ui/toast.tsx | 129 + .../mint-nft/app/components/ui/toaster.tsx | 35 + .../app/components/ui/toggle-group.tsx | 73 + entropy/mint-nft/app/components/ui/toggle.tsx | 47 + .../mint-nft/app/components/ui/tooltip.tsx | 61 + .../mint-nft/app/components/ui/use-mobile.tsx | 19 + .../mint-nft/app/components/ui/use-toast.ts | 194 + entropy/mint-nft/app/hooks/use-mobile.ts | 19 + entropy/mint-nft/app/hooks/use-toast.ts | 194 + entropy/mint-nft/app/lib/utils.ts | 6 + entropy/mint-nft/app/next.config.mjs | 14 + entropy/mint-nft/app/package.json | 80 + entropy/mint-nft/app/pnpm-lock.yaml | 6877 ++++++++ entropy/mint-nft/app/postcss.config.mjs | 8 + .../mint-nft/app/public/placeholder-logo.png | Bin 0 -> 568 bytes .../mint-nft/app/public/placeholder-logo.svg | 1 + .../mint-nft/app/public/placeholder-user.jpg | Bin 0 -> 1635 bytes entropy/mint-nft/app/public/placeholder.jpg | Bin 0 -> 1064 bytes entropy/mint-nft/app/public/placeholder.svg | 1 + entropy/mint-nft/app/styles/globals.css | 123 + entropy/mint-nft/app/tsconfig.json | 27 + entropy/mint-nft/contracts/README.md | 114 + .../bin/src/EntropyBeasts-solc-output.json | 13338 +++++++++++++++ .../contracts/bin/src/EntropyBeasts.abi | 1 + .../contracts/bin/src/EntropyBeasts.bin | 1 + .../contracts/bin/src/EntropyBeasts.json | 4880 ++++++ .../84532/dry-run/run-1754621438.json | 31 + .../84532/dry-run/run-latest.json | 31 + .../84532/run-1754621450.json | 54 + .../84532/run-latest.json | 54 + .../84532/dry-run/run-1754621438.json | 7 + .../84532/dry-run/run-latest.json | 7 + .../84532/run-1754621450.json | 7 + .../84532/run-latest.json | 7 + .../contracts/cache/solidity-files-cache.json | 1 + entropy/mint-nft/contracts/foundry.toml | 6 + entropy/mint-nft/contracts/lib/contract.ts | 73 + .../contracts/lib/forge-std/.gitattributes | 1 + .../lib/forge-std/.github/workflows/ci.yml | 128 + .../lib/forge-std/.github/workflows/sync.yml | 31 + .../contracts/lib/forge-std/.gitignore | 4 + .../contracts/lib/forge-std/CONTRIBUTING.md | 193 + .../contracts/lib/forge-std/LICENSE-APACHE | 203 + .../contracts/lib/forge-std/LICENSE-MIT | 25 + .../contracts/lib/forge-std/README.md | 266 + .../contracts/lib/forge-std/foundry.toml | 23 + .../contracts/lib/forge-std/package.json | 16 + .../contracts/lib/forge-std/scripts/vm.py | 646 + .../contracts/lib/forge-std/src/Base.sol | 42 + .../contracts/lib/forge-std/src/Script.sol | 28 + .../lib/forge-std/src/StdAssertions.sol | 669 + .../contracts/lib/forge-std/src/StdChains.sol | 286 + .../contracts/lib/forge-std/src/StdCheats.sol | 829 + .../lib/forge-std/src/StdConstants.sol | 30 + .../contracts/lib/forge-std/src/StdError.sol | 15 + .../lib/forge-std/src/StdInvariant.sol | 122 + .../contracts/lib/forge-std/src/StdJson.sol | 283 + .../contracts/lib/forge-std/src/StdMath.sol | 43 + .../lib/forge-std/src/StdStorage.sol | 473 + .../contracts/lib/forge-std/src/StdStyle.sol | 333 + .../contracts/lib/forge-std/src/StdToml.sol | 283 + .../contracts/lib/forge-std/src/StdUtils.sol | 209 + .../contracts/lib/forge-std/src/Test.sol | 34 + .../contracts/lib/forge-std/src/Vm.sol | 2467 +++ .../contracts/lib/forge-std/src/console.sol | 1560 ++ .../contracts/lib/forge-std/src/console2.sol | 4 + .../lib/forge-std/src/interfaces/IERC1155.sol | 105 + .../lib/forge-std/src/interfaces/IERC165.sol | 12 + .../lib/forge-std/src/interfaces/IERC20.sol | 43 + .../lib/forge-std/src/interfaces/IERC4626.sol | 190 + .../lib/forge-std/src/interfaces/IERC6909.sol | 72 + .../lib/forge-std/src/interfaces/IERC721.sol | 164 + .../lib/forge-std/src/interfaces/IERC7540.sol | 150 + .../lib/forge-std/src/interfaces/IERC7575.sol | 241 + .../forge-std/src/interfaces/IMulticall3.sol | 73 + .../lib/forge-std/src/safeconsole.sol | 13937 ++++++++++++++++ .../lib/forge-std/test/CommonBase.t.sol | 44 + .../lib/forge-std/test/StdAssertions.t.sol | 141 + .../lib/forge-std/test/StdChains.t.sol | 227 + .../lib/forge-std/test/StdCheats.t.sol | 639 + .../lib/forge-std/test/StdConstants.t.sol | 38 + .../lib/forge-std/test/StdError.t.sol | 120 + .../lib/forge-std/test/StdJson.t.sol | 49 + .../lib/forge-std/test/StdMath.t.sol | 202 + .../lib/forge-std/test/StdStorage.t.sol | 488 + .../lib/forge-std/test/StdStyle.t.sol | 110 + .../lib/forge-std/test/StdToml.t.sol | 49 + .../lib/forge-std/test/StdUtils.t.sol | 342 + .../contracts/lib/forge-std/test/Vm.t.sol | 18 + .../test/compilation/CompilationScript.sol | 10 + .../compilation/CompilationScriptBase.sol | 10 + .../test/compilation/CompilationTest.sol | 10 + .../test/compilation/CompilationTestBase.sol | 10 + .../test/fixtures/broadcast.log.json | 187 + .../lib/forge-std/test/fixtures/test.json | 8 + .../lib/forge-std/test/fixtures/test.toml | 6 + entropy/mint-nft/contracts/lib/wagmi.ts | 9 + .../contracts/out/Base.sol/CommonBase.json | 1 + .../contracts/out/Base.sol/ScriptBase.json | 1 + .../contracts/out/Base.sol/TestBase.json | 1 + .../out/EntropyBeasts.sol/EntropyBeasts.json | 1 + .../EntropyBeastsTest.json | 1 + .../out/EntropyBeasts.t.sol/MockEntropy.json | 1 + .../EntropyBeastsDeploy.json | 1 + .../out/EntropyEvents.sol/EntropyEvents.json | 1 + .../EntropyEventsV2.sol/EntropyEventsV2.json | 1 + .../EntropyStructs.sol/EntropyStructs.json | 1 + .../EntropyStructsV2.json | 1 + .../IEntropyConsumer.json | 1 + .../out/IEntropyV2.sol/IEntropyV2.json | 1 + .../out/IMulticall3.sol/IMulticall3.json | 1 + .../contracts/out/Script.sol/Script.json | 1 + .../out/Simple.t.sol/MockEntropy.json | 1 + .../out/Simple.t.sol/SimpleTest.json | 1 + .../out/StdAssertions.sol/StdAssertions.json | 1 + .../out/StdChains.sol/StdChains.json | 1 + .../out/StdCheats.sol/StdCheats.json | 1 + .../out/StdCheats.sol/StdCheatsSafe.json | 1 + .../out/StdConstants.sol/StdConstants.json | 1 + .../contracts/out/StdError.sol/stdError.json | 1 + .../out/StdInvariant.sol/StdInvariant.json | 1 + .../contracts/out/StdJson.sol/stdJson.json | 1 + .../contracts/out/StdMath.sol/stdMath.json | 1 + .../out/StdStorage.sol/stdStorage.json | 1 + .../out/StdStorage.sol/stdStorageSafe.json | 1 + .../contracts/out/StdStyle.sol/StdStyle.json | 1 + .../contracts/out/StdToml.sol/stdToml.json | 1 + .../contracts/out/StdUtils.sol/StdUtils.json | 1 + .../mint-nft/contracts/out/Test.sol/Test.json | 1 + entropy/mint-nft/contracts/out/Vm.sol/Vm.json | 1 + .../mint-nft/contracts/out/Vm.sol/VmSafe.json | 1 + .../out/build-info/310d560570c99d14.json | 1 + .../out/build-info/6cec36494281802b.json | 1 + .../out/build-info/89fd12f6005c0436.json | 1 + .../out/build-info/90d7c8f64fa596c7.json | 1 + .../contracts/out/console.sol/console.json | 1 + .../out/safeconsole.sol/safeconsole.json | 1 + entropy/mint-nft/contracts/package-lock.json | 22 + entropy/mint-nft/contracts/package.json | 23 + entropy/mint-nft/contracts/postcss.config.js | 6 + entropy/mint-nft/contracts/remappings.txt | 1 + .../script/EntropyBeastsDeploy.s.sol | 14 + .../mint-nft/contracts/src/EntropyBeasts.sol | 84 + 192 files changed, 59630 insertions(+) create mode 100644 entropy/mint-nft/app/app/globals.css create mode 100644 entropy/mint-nft/app/app/layout.tsx create mode 100644 entropy/mint-nft/app/app/page.tsx create mode 100644 entropy/mint-nft/app/app/providers.tsx create mode 100644 entropy/mint-nft/app/components.json create mode 100644 entropy/mint-nft/app/components/theme-provider.tsx create mode 100644 entropy/mint-nft/app/components/ui/accordion.tsx create mode 100644 entropy/mint-nft/app/components/ui/alert-dialog.tsx create mode 100644 entropy/mint-nft/app/components/ui/alert.tsx create mode 100644 entropy/mint-nft/app/components/ui/aspect-ratio.tsx create mode 100644 entropy/mint-nft/app/components/ui/avatar.tsx create mode 100644 entropy/mint-nft/app/components/ui/badge.tsx create mode 100644 entropy/mint-nft/app/components/ui/breadcrumb.tsx create mode 100644 entropy/mint-nft/app/components/ui/button.tsx create mode 100644 entropy/mint-nft/app/components/ui/calendar.tsx create mode 100644 entropy/mint-nft/app/components/ui/card.tsx create mode 100644 entropy/mint-nft/app/components/ui/carousel.tsx create mode 100644 entropy/mint-nft/app/components/ui/chart.tsx create mode 100644 entropy/mint-nft/app/components/ui/checkbox.tsx create mode 100644 entropy/mint-nft/app/components/ui/collapsible.tsx create mode 100644 entropy/mint-nft/app/components/ui/command.tsx create mode 100644 entropy/mint-nft/app/components/ui/context-menu.tsx create mode 100644 entropy/mint-nft/app/components/ui/dialog.tsx create mode 100644 entropy/mint-nft/app/components/ui/drawer.tsx create mode 100644 entropy/mint-nft/app/components/ui/dropdown-menu.tsx create mode 100644 entropy/mint-nft/app/components/ui/form.tsx create mode 100644 entropy/mint-nft/app/components/ui/hover-card.tsx create mode 100644 entropy/mint-nft/app/components/ui/input-otp.tsx create mode 100644 entropy/mint-nft/app/components/ui/input.tsx create mode 100644 entropy/mint-nft/app/components/ui/label.tsx create mode 100644 entropy/mint-nft/app/components/ui/menubar.tsx create mode 100644 entropy/mint-nft/app/components/ui/navigation-menu.tsx create mode 100644 entropy/mint-nft/app/components/ui/pagination.tsx create mode 100644 entropy/mint-nft/app/components/ui/popover.tsx create mode 100644 entropy/mint-nft/app/components/ui/progress.tsx create mode 100644 entropy/mint-nft/app/components/ui/radio-group.tsx create mode 100644 entropy/mint-nft/app/components/ui/resizable.tsx create mode 100644 entropy/mint-nft/app/components/ui/scroll-area.tsx create mode 100644 entropy/mint-nft/app/components/ui/select.tsx create mode 100644 entropy/mint-nft/app/components/ui/separator.tsx create mode 100644 entropy/mint-nft/app/components/ui/sheet.tsx create mode 100644 entropy/mint-nft/app/components/ui/sidebar.tsx create mode 100644 entropy/mint-nft/app/components/ui/skeleton.tsx create mode 100644 entropy/mint-nft/app/components/ui/slider.tsx create mode 100644 entropy/mint-nft/app/components/ui/sonner.tsx create mode 100644 entropy/mint-nft/app/components/ui/switch.tsx create mode 100644 entropy/mint-nft/app/components/ui/table.tsx create mode 100644 entropy/mint-nft/app/components/ui/tabs.tsx create mode 100644 entropy/mint-nft/app/components/ui/textarea.tsx create mode 100644 entropy/mint-nft/app/components/ui/toast.tsx create mode 100644 entropy/mint-nft/app/components/ui/toaster.tsx create mode 100644 entropy/mint-nft/app/components/ui/toggle-group.tsx create mode 100644 entropy/mint-nft/app/components/ui/toggle.tsx create mode 100644 entropy/mint-nft/app/components/ui/tooltip.tsx create mode 100644 entropy/mint-nft/app/components/ui/use-mobile.tsx create mode 100644 entropy/mint-nft/app/components/ui/use-toast.ts create mode 100644 entropy/mint-nft/app/hooks/use-mobile.ts create mode 100644 entropy/mint-nft/app/hooks/use-toast.ts create mode 100644 entropy/mint-nft/app/lib/utils.ts create mode 100644 entropy/mint-nft/app/next.config.mjs create mode 100644 entropy/mint-nft/app/package.json create mode 100644 entropy/mint-nft/app/pnpm-lock.yaml create mode 100644 entropy/mint-nft/app/postcss.config.mjs create mode 100644 entropy/mint-nft/app/public/placeholder-logo.png create mode 100644 entropy/mint-nft/app/public/placeholder-logo.svg create mode 100644 entropy/mint-nft/app/public/placeholder-user.jpg create mode 100644 entropy/mint-nft/app/public/placeholder.jpg create mode 100644 entropy/mint-nft/app/public/placeholder.svg create mode 100644 entropy/mint-nft/app/styles/globals.css create mode 100644 entropy/mint-nft/app/tsconfig.json create mode 100644 entropy/mint-nft/contracts/README.md create mode 100644 entropy/mint-nft/contracts/bin/src/EntropyBeasts-solc-output.json create mode 100644 entropy/mint-nft/contracts/bin/src/EntropyBeasts.abi create mode 100644 entropy/mint-nft/contracts/bin/src/EntropyBeasts.bin create mode 100644 entropy/mint-nft/contracts/bin/src/EntropyBeasts.json create mode 100644 entropy/mint-nft/contracts/broadcast/EntropyBeastsDeploy.s.sol/84532/dry-run/run-1754621438.json create mode 100644 entropy/mint-nft/contracts/broadcast/EntropyBeastsDeploy.s.sol/84532/dry-run/run-latest.json create mode 100644 entropy/mint-nft/contracts/broadcast/EntropyBeastsDeploy.s.sol/84532/run-1754621450.json create mode 100644 entropy/mint-nft/contracts/broadcast/EntropyBeastsDeploy.s.sol/84532/run-latest.json create mode 100644 entropy/mint-nft/contracts/cache/EntropyBeastsDeploy.s.sol/84532/dry-run/run-1754621438.json create mode 100644 entropy/mint-nft/contracts/cache/EntropyBeastsDeploy.s.sol/84532/dry-run/run-latest.json create mode 100644 entropy/mint-nft/contracts/cache/EntropyBeastsDeploy.s.sol/84532/run-1754621450.json create mode 100644 entropy/mint-nft/contracts/cache/EntropyBeastsDeploy.s.sol/84532/run-latest.json create mode 100644 entropy/mint-nft/contracts/cache/solidity-files-cache.json create mode 100644 entropy/mint-nft/contracts/foundry.toml create mode 100644 entropy/mint-nft/contracts/lib/contract.ts create mode 100644 entropy/mint-nft/contracts/lib/forge-std/.gitattributes create mode 100644 entropy/mint-nft/contracts/lib/forge-std/.github/workflows/ci.yml create mode 100644 entropy/mint-nft/contracts/lib/forge-std/.github/workflows/sync.yml create mode 100644 entropy/mint-nft/contracts/lib/forge-std/.gitignore create mode 100644 entropy/mint-nft/contracts/lib/forge-std/CONTRIBUTING.md create mode 100644 entropy/mint-nft/contracts/lib/forge-std/LICENSE-APACHE create mode 100644 entropy/mint-nft/contracts/lib/forge-std/LICENSE-MIT create mode 100644 entropy/mint-nft/contracts/lib/forge-std/README.md create mode 100644 entropy/mint-nft/contracts/lib/forge-std/foundry.toml create mode 100644 entropy/mint-nft/contracts/lib/forge-std/package.json create mode 100755 entropy/mint-nft/contracts/lib/forge-std/scripts/vm.py create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/Base.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/Script.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdAssertions.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdChains.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdCheats.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdConstants.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdError.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdInvariant.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdJson.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdMath.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdStorage.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdStyle.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdToml.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/StdUtils.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/Test.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/Vm.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/console.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/console2.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/interfaces/IERC1155.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/interfaces/IERC165.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/interfaces/IERC20.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/interfaces/IERC4626.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/interfaces/IERC6909.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/interfaces/IERC721.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/interfaces/IERC7540.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/interfaces/IERC7575.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/interfaces/IMulticall3.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/src/safeconsole.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/CommonBase.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdAssertions.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdChains.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdCheats.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdConstants.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdError.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdJson.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdMath.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdStorage.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdStyle.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdToml.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/StdUtils.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/Vm.t.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/compilation/CompilationScript.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/compilation/CompilationTest.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/compilation/CompilationTestBase.sol create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/fixtures/broadcast.log.json create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/fixtures/test.json create mode 100644 entropy/mint-nft/contracts/lib/forge-std/test/fixtures/test.toml create mode 100644 entropy/mint-nft/contracts/lib/wagmi.ts create mode 100644 entropy/mint-nft/contracts/out/Base.sol/CommonBase.json create mode 100644 entropy/mint-nft/contracts/out/Base.sol/ScriptBase.json create mode 100644 entropy/mint-nft/contracts/out/Base.sol/TestBase.json create mode 100644 entropy/mint-nft/contracts/out/EntropyBeasts.sol/EntropyBeasts.json create mode 100644 entropy/mint-nft/contracts/out/EntropyBeasts.t.sol/EntropyBeastsTest.json create mode 100644 entropy/mint-nft/contracts/out/EntropyBeasts.t.sol/MockEntropy.json create mode 100644 entropy/mint-nft/contracts/out/EntropyBeastsDeploy.s.sol/EntropyBeastsDeploy.json create mode 100644 entropy/mint-nft/contracts/out/EntropyEvents.sol/EntropyEvents.json create mode 100644 entropy/mint-nft/contracts/out/EntropyEventsV2.sol/EntropyEventsV2.json create mode 100644 entropy/mint-nft/contracts/out/EntropyStructs.sol/EntropyStructs.json create mode 100644 entropy/mint-nft/contracts/out/EntropyStructsV2.sol/EntropyStructsV2.json create mode 100644 entropy/mint-nft/contracts/out/IEntropyConsumer.sol/IEntropyConsumer.json create mode 100644 entropy/mint-nft/contracts/out/IEntropyV2.sol/IEntropyV2.json create mode 100644 entropy/mint-nft/contracts/out/IMulticall3.sol/IMulticall3.json create mode 100644 entropy/mint-nft/contracts/out/Script.sol/Script.json create mode 100644 entropy/mint-nft/contracts/out/Simple.t.sol/MockEntropy.json create mode 100644 entropy/mint-nft/contracts/out/Simple.t.sol/SimpleTest.json create mode 100644 entropy/mint-nft/contracts/out/StdAssertions.sol/StdAssertions.json create mode 100644 entropy/mint-nft/contracts/out/StdChains.sol/StdChains.json create mode 100644 entropy/mint-nft/contracts/out/StdCheats.sol/StdCheats.json create mode 100644 entropy/mint-nft/contracts/out/StdCheats.sol/StdCheatsSafe.json create mode 100644 entropy/mint-nft/contracts/out/StdConstants.sol/StdConstants.json create mode 100644 entropy/mint-nft/contracts/out/StdError.sol/stdError.json create mode 100644 entropy/mint-nft/contracts/out/StdInvariant.sol/StdInvariant.json create mode 100644 entropy/mint-nft/contracts/out/StdJson.sol/stdJson.json create mode 100644 entropy/mint-nft/contracts/out/StdMath.sol/stdMath.json create mode 100644 entropy/mint-nft/contracts/out/StdStorage.sol/stdStorage.json create mode 100644 entropy/mint-nft/contracts/out/StdStorage.sol/stdStorageSafe.json create mode 100644 entropy/mint-nft/contracts/out/StdStyle.sol/StdStyle.json create mode 100644 entropy/mint-nft/contracts/out/StdToml.sol/stdToml.json create mode 100644 entropy/mint-nft/contracts/out/StdUtils.sol/StdUtils.json create mode 100644 entropy/mint-nft/contracts/out/Test.sol/Test.json create mode 100644 entropy/mint-nft/contracts/out/Vm.sol/Vm.json create mode 100644 entropy/mint-nft/contracts/out/Vm.sol/VmSafe.json create mode 100644 entropy/mint-nft/contracts/out/build-info/310d560570c99d14.json create mode 100644 entropy/mint-nft/contracts/out/build-info/6cec36494281802b.json create mode 100644 entropy/mint-nft/contracts/out/build-info/89fd12f6005c0436.json create mode 100644 entropy/mint-nft/contracts/out/build-info/90d7c8f64fa596c7.json create mode 100644 entropy/mint-nft/contracts/out/console.sol/console.json create mode 100644 entropy/mint-nft/contracts/out/safeconsole.sol/safeconsole.json create mode 100644 entropy/mint-nft/contracts/package-lock.json create mode 100644 entropy/mint-nft/contracts/package.json create mode 100644 entropy/mint-nft/contracts/postcss.config.js create mode 100644 entropy/mint-nft/contracts/remappings.txt create mode 100644 entropy/mint-nft/contracts/script/EntropyBeastsDeploy.s.sol create mode 100644 entropy/mint-nft/contracts/src/EntropyBeasts.sol diff --git a/entropy/mint-nft/app/app/globals.css b/entropy/mint-nft/app/app/globals.css new file mode 100644 index 0000000..02687bd --- /dev/null +++ b/entropy/mint-nft/app/app/globals.css @@ -0,0 +1,123 @@ +@import 'tailwindcss'; +@import 'tw-animate-css'; + +@custom-variant dark (&:is(.dark *)); + +:root { + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.145 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.145 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.985 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.269 0 0); + --input: oklch(0.269 0 0); + --ring: oklch(0.439 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.269 0 0); + --sidebar-ring: oklch(0.439 0 0); +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/entropy/mint-nft/app/app/layout.tsx b/entropy/mint-nft/app/app/layout.tsx new file mode 100644 index 0000000..db12991 --- /dev/null +++ b/entropy/mint-nft/app/app/layout.tsx @@ -0,0 +1,45 @@ +import type { Metadata } from 'next' +import { GeistSans } from 'geist/font/sans' +import { GeistMono } from 'geist/font/mono' +import './globals.css' +import { Providers } from './providers' +import { ThemeProvider } from 'next-themes' +import { inter } from 'path/to/inter/font' // Assuming inter font is imported from somewhere + +export const metadata: Metadata = { + title: 'v0 App', + description: 'Created with v0', + generator: 'v0.dev', +} + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + + + + + + + + {children} + + + + + ) +} diff --git a/entropy/mint-nft/app/app/page.tsx b/entropy/mint-nft/app/app/page.tsx new file mode 100644 index 0000000..50a6ce2 --- /dev/null +++ b/entropy/mint-nft/app/app/page.tsx @@ -0,0 +1,688 @@ +"use client" + +import { useState } from "react" +import { motion, AnimatePresence } from "framer-motion" +import { ArrowRight, Zap, CheckCircle, Clock, Wallet, Settings, AlertTriangle, Activity, XCircle } from 'lucide-react' +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Badge } from "@/components/ui/badge" +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" +import { Alert, AlertDescription } from "@/components/ui/alert" +import { ConnectButton } from '@rainbow-me/rainbowkit' + +type MintingState = 'idle' | 'sending' | 'processing' | 'listening' | 'callback' | 'completed' | 'failed' +type CallbackStatus = 'success' | 'out_of_gas' | 'execution_reverted' | 'invalid_request' | null +type NFTSize = 'small' | 'big' + +interface NFTConfig { + size: NFTSize + minGas: number + description: string +} + +const NFT_CONFIGS: Record = { + small: { + size: 'small', + minGas: 50000, + description: 'Simple NFT with basic metadata' + }, + big: { + size: 'big', + minGas: 150000, + description: 'Complex NFT with rich metadata and attributes' + } +} + +export default function PythentropyNFTDemo() { + const [mintingState, setMintingState] = useState('idle') + const [callbackStatus, setCallbackStatus] = useState(null) + const [gasLimit, setGasLimit] = useState('50000') + const [nftSize, setNftSize] = useState('small') + const [nftName, setNftName] = useState('My Awesome NFT') + const [transactionHash, setTransactionHash] = useState('') + const [eventLogs, setEventLogs] = useState([]) + const [failureReason, setFailureReason] = useState('') + + const addEventLog = (message: string) => { + setEventLogs(prev => [...prev, `${new Date().toLocaleTimeString()}: ${message}`]) + } + + const handleNFTSizeChange = (size: NFTSize) => { + setNftSize(size) + setGasLimit(NFT_CONFIGS[size].minGas.toString()) + } + + const simulateCallbackFailure = () => { + const currentGas = parseInt(gasLimit) + const minRequired = NFT_CONFIGS[nftSize].minGas + + if (currentGas < minRequired) { + return 'out_of_gas' + } + + // Simulate other potential failures + const random = Math.random() + if (random < 0.1) return 'execution_reverted' + if (random < 0.05) return 'invalid_request' + + return 'success' + } + + const handleMint = async () => { + setMintingState('sending') + setEventLogs([]) + setCallbackStatus(null) + setFailureReason('') + + addEventLog('๐Ÿš€ Mint request initiated') + + // Simulate the flow + setTimeout(() => { + setMintingState('processing') + addEventLog('๐Ÿ“ก Request sent to Pyth Entropy Provider') + }, 1000) + + setTimeout(() => { + setMintingState('listening') + addEventLog('โ›“๏ธ Transaction submitted to blockchain') + addEventLog('๐Ÿ‘‚ Listening for callback events...') + }, 2500) + + setTimeout(() => { + setMintingState('callback') + addEventLog('๐Ÿ“จ Callback event received') + + const status = simulateCallbackFailure() + setCallbackStatus(status) + + if (status === 'success') { + addEventLog('โœ… Callback status: SUCCESS') + setTimeout(() => { + setTransactionHash('0x1234...abcd') + setMintingState('completed') + addEventLog('๐ŸŽ‰ NFT minted successfully!') + }, 1000) + } else { + addEventLog(`โŒ Callback status: FAILED (${status.toUpperCase()})`) + + let reason = '' + switch (status) { + case 'out_of_gas': + reason = `Insufficient gas provided. Required: ${NFT_CONFIGS[nftSize].minGas}, Provided: ${gasLimit}` + break + case 'execution_reverted': + reason = 'Smart contract execution reverted due to failed assertion' + break + case 'invalid_request': + reason = 'Invalid request parameters or malformed data' + break + } + + setFailureReason(reason) + addEventLog(`๐Ÿ” Failure reason: ${reason}`) + + setTimeout(() => { + setMintingState('failed') + }, 1000) + } + }, 4000) + } + + const resetDemo = () => { + setMintingState('idle') + setCallbackStatus(null) + setTransactionHash('') + setEventLogs([]) + setFailureReason('') + } + + const getStateInfo = (state: MintingState) => { + switch (state) { + case 'idle': + return { title: 'Ready to Mint', description: 'Configure your NFT and gas settings', color: 'bg-gray-100' } + case 'sending': + return { title: 'Sending Request', description: 'Transmitting to Pyth Entropy Provider', color: 'bg-blue-100' } + case 'processing': + return { title: 'Processing', description: 'Entropy Provider handling request', color: 'bg-yellow-100' } + case 'listening': + return { title: 'Listening for Events', description: 'Monitoring blockchain for callback', color: 'bg-purple-100' } + case 'callback': + return { title: 'Callback Received', description: 'Processing callback status', color: 'bg-orange-100' } + case 'completed': + return { title: 'Minting Complete', description: 'NFT successfully minted!', color: 'bg-green-100' } + case 'failed': + return { title: 'Minting Failed', description: 'Callback failed - see details below', color: 'bg-red-100' } + default: + return { title: 'Error', description: 'Something went wrong', color: 'bg-red-100' } + } + } + + const isGasInsufficient = parseInt(gasLimit) < NFT_CONFIGS[nftSize].minGas + + return ( +
+
+ {/* Header */} +
+

+ Pyth Entropy v2 Demo +

+

+ NFT Minting with Enhanced Callback Status Monitoring +

+ + {/* Wallet Connection */} +
+ +
+ + {/* Disclaimer */} +
+ + + + Demo Only: This is an educational example showcasing Pyth Entropy v2 features. + No actual NFTs will be minted and no real transactions will be executed. + + +
+
+ +
+ {/* Left Panel - Minting Interface */} + + + + + NFT Minting Interface + + + Configure your NFT size and gas settings below + + + +
+ + setNftName(e.target.value)} + placeholder="Enter NFT name" + disabled={mintingState !== 'idle'} + /> +
+ +
+ + +

+ {NFT_CONFIGS[nftSize].description} +

+
+ +
+ + setGasLimit(e.target.value)} + placeholder="50000" + disabled={mintingState !== 'idle'} + className={isGasInsufficient ? 'border-red-300 focus:border-red-500' : ''} + /> + {isGasInsufficient && ( + + + + Gas limit too low! Minimum required: {NFT_CONFIGS[nftSize].minGas.toLocaleString()} + + + )} +

+ Demonstrates Entropy v2's enhanced callback status detection +

+
+ +
+ {mintingState === 'idle' ? ( + + ) : mintingState === 'completed' ? ( +
+
+

+ Transaction Hash: {transactionHash} +

+
+ +
+ ) : mintingState === 'failed' ? ( +
+
+

+ Callback Failed: {callbackStatus?.replace('_', ' ').toUpperCase()} +

+

+ {failureReason} +

+
+ +
+ ) : ( + + )} +
+
+
+ + {/* Right Panel - Flow Visualization */} + + + Pyth Entropy v2 Flow + + Watch the enhanced callback status monitoring + + + +
+ {/* Current State Display */} +
+
+
+

{getStateInfo(mintingState).title}

+

{getStateInfo(mintingState).description}

+
+ + {mintingState.toUpperCase()} + +
+
+ + {/* Callback Status Display */} + {callbackStatus && ( + +
+ {callbackStatus === 'success' ? ( + + ) : ( + + )} + + Callback Status: {callbackStatus.replace('_', ' ').toUpperCase()} + +
+
+ )} + + {/* Flow Steps */} +
+ {/* Step 1: User Request */} +
+ + + +
+

User Request

+

+ {nftSize.charAt(0).toUpperCase() + nftSize.slice(1)} NFT, Gas: {gasLimit} +

+
+
+ + {/* Animated Arrow */} +
+ + + +
+ + {/* Step 2: Entropy Provider */} +
+ + + +
+

Pyth Entropy Provider

+

Processing with gas validation

+
+
+ + {/* Animated Arrow */} +
+ + + +
+ + {/* Step 3: Blockchain */} +
+ +
+ +
+

Blockchain Execution

+

Smart contract processing

+
+
+ + {/* Animated Arrow */} +
+ + + +
+ + {/* Step 4: Enhanced Callback */} +
+ + {callbackStatus === 'success' ? ( + + ) : callbackStatus ? ( + + ) : ( + + )} + +
+

Enhanced Callback

+

+ {callbackStatus ? + `Status: ${callbackStatus.replace('_', ' ')}` : + 'Detailed status monitoring' + } +

+
+
+
+ + {/* Event Logs */} + {eventLogs.length > 0 && ( +
+

+ + Event Logs +

+
+ {eventLogs.map((log, index) => ( + + {log} + + ))} +
+
+ )} + + {/* Success/Failure Animation */} + + {mintingState === 'completed' && ( + + + + +

Success!

+

+ Your {nftSize} NFT "{nftName}" has been minted successfully +

+
+ )} + + {mintingState === 'failed' && ( + + + + +

Callback Failed!

+

+ Entropy v2 detected: {callbackStatus?.replace('_', ' ')} +

+
+ )} +
+
+ + +
+ + {/* Enhanced Features Panel */} + + + Pyth Entropy v2 Enhanced Features + + +
+
+
+ +
+

Smart Gas Management

+

+ Automatic gas estimation with size-based requirements +

+
+
+
+ +
+

Enhanced Callback Status

+

+ Detailed failure detection including out-of-gas scenarios +

+
+
+
+ +
+

Real-time Event Monitoring

+

+ Live event logs showing the complete transaction lifecycle +

+
+
+
+
+ + {/* Usage Notes */} + + + How to Use This Demo + + +
+
+

Getting Started

+
    +
  • + + Connect your wallet using the button above (optional for demo) +
  • +
  • + + Choose between Small or Big NFT to see different gas requirements +
  • +
  • + + Adjust gas limit to trigger different callback scenarios +
  • +
  • + + Watch the flow visualization and event logs in real-time +
  • +
+
+
+

What You'll Learn

+
    +
  • + + How Pyth Entropy v2 handles custom gas limits +
  • +
  • + + Enhanced callback status detection and error handling +
  • +
  • + + Real-time event monitoring and transaction lifecycle +
  • +
  • + + Out-of-gas detection and failure reason analysis +
  • +
+
+
+ +
+

๐Ÿ’ก Pro Tip

+

+ Try setting the gas limit below the minimum requirement for your selected NFT size to see + how Entropy v2 detects and reports out-of-gas failures in the callback status. +

+
+
+
+
+
+ ) +} diff --git a/entropy/mint-nft/app/app/providers.tsx b/entropy/mint-nft/app/app/providers.tsx new file mode 100644 index 0000000..c2e0346 --- /dev/null +++ b/entropy/mint-nft/app/app/providers.tsx @@ -0,0 +1,28 @@ +'use client' + +import { getDefaultConfig, RainbowKitProvider } from '@rainbow-me/rainbowkit' +import { WagmiProvider } from 'wagmi' +import { mainnet, polygon, optimism, arbitrum, base } from 'wagmi/chains' +import { QueryClientProvider, QueryClient } from '@tanstack/react-query' +import '@rainbow-me/rainbowkit/styles.css' + +const config = getDefaultConfig({ + appName: 'Pyth Entropy v2 Demo', + projectId: 'YOUR_PROJECT_ID', // Get this from WalletConnect Cloud + chains: [mainnet, polygon, optimism, arbitrum, base], + ssr: true, +}) + +const queryClient = new QueryClient() + +export function Providers({ children }: { children: React.ReactNode }) { + return ( + + + + {children} + + + + ) +} diff --git a/entropy/mint-nft/app/components.json b/entropy/mint-nft/app/components.json new file mode 100644 index 0000000..335484f --- /dev/null +++ b/entropy/mint-nft/app/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/entropy/mint-nft/app/components/theme-provider.tsx b/entropy/mint-nft/app/components/theme-provider.tsx new file mode 100644 index 0000000..55c2f6e --- /dev/null +++ b/entropy/mint-nft/app/components/theme-provider.tsx @@ -0,0 +1,11 @@ +'use client' + +import * as React from 'react' +import { + ThemeProvider as NextThemesProvider, + type ThemeProviderProps, +} from 'next-themes' + +export function ThemeProvider({ children, ...props }: ThemeProviderProps) { + return {children} +} diff --git a/entropy/mint-nft/app/components/ui/accordion.tsx b/entropy/mint-nft/app/components/ui/accordion.tsx new file mode 100644 index 0000000..4a8cca4 --- /dev/null +++ b/entropy/mint-nft/app/components/ui/accordion.tsx @@ -0,0 +1,66 @@ +"use client" + +import * as React from "react" +import * as AccordionPrimitive from "@radix-ui/react-accordion" +import { ChevronDownIcon } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Accordion({ + ...props +}: React.ComponentProps) { + return +} + +function AccordionItem({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AccordionTrigger({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + svg]:rotate-180", + className + )} + {...props} + > + {children} + + + + ) +} + +function AccordionContent({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + +
{children}
+
+ ) +} + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } diff --git a/entropy/mint-nft/app/components/ui/alert-dialog.tsx b/entropy/mint-nft/app/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..0863e40 --- /dev/null +++ b/entropy/mint-nft/app/components/ui/alert-dialog.tsx @@ -0,0 +1,157 @@ +"use client" + +import * as React from "react" +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" + +import { cn } from "@/lib/utils" +import { buttonVariants } from "@/components/ui/button" + +function AlertDialog({ + ...props +}: React.ComponentProps) { + return +} + +function AlertDialogTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogPortal({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + + ) +} + +function AlertDialogHeader({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDialogFooter({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogAction({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogCancel({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +} diff --git a/entropy/mint-nft/app/components/ui/alert.tsx b/entropy/mint-nft/app/components/ui/alert.tsx new file mode 100644 index 0000000..1421354 --- /dev/null +++ b/entropy/mint-nft/app/components/ui/alert.tsx @@ -0,0 +1,66 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", + { + variants: { + variant: { + default: "bg-card text-card-foreground", + destructive: + "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Alert({ + className, + variant, + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ) +} + +function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDescription({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { Alert, AlertTitle, AlertDescription } diff --git a/entropy/mint-nft/app/components/ui/aspect-ratio.tsx b/entropy/mint-nft/app/components/ui/aspect-ratio.tsx new file mode 100644 index 0000000..3df3fd0 --- /dev/null +++ b/entropy/mint-nft/app/components/ui/aspect-ratio.tsx @@ -0,0 +1,11 @@ +"use client" + +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" + +function AspectRatio({ + ...props +}: React.ComponentProps) { + return +} + +export { AspectRatio } diff --git a/entropy/mint-nft/app/components/ui/avatar.tsx b/entropy/mint-nft/app/components/ui/avatar.tsx new file mode 100644 index 0000000..71e428b --- /dev/null +++ b/entropy/mint-nft/app/components/ui/avatar.tsx @@ -0,0 +1,53 @@ +"use client" + +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +function Avatar({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarImage({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/entropy/mint-nft/app/components/ui/badge.tsx b/entropy/mint-nft/app/components/ui/badge.tsx new file mode 100644 index 0000000..0205413 --- /dev/null +++ b/entropy/mint-nft/app/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span" + + return ( + + ) +} + +export { Badge, badgeVariants } diff --git a/entropy/mint-nft/app/components/ui/breadcrumb.tsx b/entropy/mint-nft/app/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..eb88f32 --- /dev/null +++ b/entropy/mint-nft/app/components/ui/breadcrumb.tsx @@ -0,0 +1,109 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { ChevronRight, MoreHorizontal } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { + return