@bayybays/stacksone-sdk 1.0.1
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/.github/workflows/clarinet.yaml +33 -0
- package/README.md +444 -0
- package/docs/ARCHITECTURE.md +69 -0
- package/docs/CONTRACT_REGISTRY.md +11 -0
- package/docs/MODULE_OVERVIEW.md +38 -0
- package/docs/ROADMAP_Q1_2026.md +21 -0
- package/docs/SECURITY.md +47 -0
- package/docs/devlog.md +925 -0
- package/docs/notes.md +5 -0
- package/eslint.config.js +29 -0
- package/index.html +24 -0
- package/nonce.txt +1 -0
- package/nonce_store/nonce_1.txt +1 -0
- package/nonce_store/nonce_10.txt +1 -0
- package/nonce_store/nonce_2.txt +1 -0
- package/nonce_store/nonce_3.txt +1 -0
- package/nonce_store/nonce_4.txt +1 -0
- package/nonce_store/nonce_5.txt +1 -0
- package/nonce_store/nonce_6.txt +1 -0
- package/nonce_store/nonce_7.txt +1 -0
- package/nonce_store/nonce_8.txt +1 -0
- package/nonce_store/nonce_9.txt +1 -0
- package/package.json +62 -0
- package/package.json.save +60 -0
- package/postcss.config.js +6 -0
- package/public/logo.png +0 -0
- package/public/vite.svg +1 -0
- package/smart-contracts/.gitattributes +3 -0
- package/smart-contracts/.vscode/settings.json +4 -0
- package/smart-contracts/.vscode/tasks.json +19 -0
- package/smart-contracts/Clarinet.toml +11 -0
- package/smart-contracts/Mainnet.toml +5 -0
- package/smart-contracts/contracts/chaintap.clar +200 -0
- package/smart-contracts/contracts/contract-0.clar +35 -0
- package/smart-contracts/contracts/contract-1.clar +26 -0
- package/smart-contracts/contracts/contract-10.clar +31 -0
- package/smart-contracts/contracts/contract-12.clar +50 -0
- package/smart-contracts/contracts/contract-13.clar +25 -0
- package/smart-contracts/contracts/contract-14.clar +14 -0
- package/smart-contracts/contracts/contract-15.clar +20 -0
- package/smart-contracts/contracts/contract-16.clar +22 -0
- package/smart-contracts/contracts/contract-17.clar +23 -0
- package/smart-contracts/contracts/contract-18.clar +30 -0
- package/smart-contracts/contracts/contract-19.clar +49 -0
- package/smart-contracts/contracts/contract-2.clar +34 -0
- package/smart-contracts/contracts/contract-20.clar +7 -0
- package/smart-contracts/contracts/contract-21.clar +17 -0
- package/smart-contracts/contracts/contract-22.clar +23 -0
- package/smart-contracts/contracts/contract-23.clar +41 -0
- package/smart-contracts/contracts/contract-24.clar +30 -0
- package/smart-contracts/contracts/contract-28.clar +34 -0
- package/smart-contracts/contracts/contract-3.clar +36 -0
- package/smart-contracts/contracts/contract-30.clar +21 -0
- package/smart-contracts/contracts/contract-32.clar +26 -0
- package/smart-contracts/contracts/contract-33.clar +43 -0
- package/smart-contracts/contracts/contract-34.clar +29 -0
- package/smart-contracts/contracts/contract-35.clar +17 -0
- package/smart-contracts/contracts/contract-36.clar +47 -0
- package/smart-contracts/contracts/contract-37.clar +33 -0
- package/smart-contracts/contracts/contract-38.clar +26 -0
- package/smart-contracts/contracts/contract-4.clar +16 -0
- package/smart-contracts/contracts/contract-40.clar +19 -0
- package/smart-contracts/contracts/contract-42.clar +26 -0
- package/smart-contracts/contracts/contract-43.clar +23 -0
- package/smart-contracts/contracts/contract-44.clar +47 -0
- package/smart-contracts/contracts/contract-45.clar +32 -0
- package/smart-contracts/contracts/contract-46.clar +31 -0
- package/smart-contracts/contracts/contract-47.clar +33 -0
- package/smart-contracts/contracts/contract-48.clar +16 -0
- package/smart-contracts/contracts/contract-49.clar +36 -0
- package/smart-contracts/contracts/contract-5.clar +17 -0
- package/smart-contracts/contracts/contract-6.clar +52 -0
- package/smart-contracts/contracts/contract-7.clar +6 -0
- package/smart-contracts/contracts/contract-8.clar +27 -0
- package/smart-contracts/contracts/faucet-distributor-v2.clar +133 -0
- package/smart-contracts/contracts/faucet-distributor-v3.clar +129 -0
- package/smart-contracts/contracts/faucet-distributor-v4.clar +86 -0
- package/smart-contracts/contracts/faucet-distributor-v5.clar +90 -0
- package/smart-contracts/contracts/faucet-distributor-v6.clar +123 -0
- package/smart-contracts/contracts/faucet-distributor-v7.clar +88 -0
- package/smart-contracts/contracts/faucet-distributor.clar +64 -0
- package/smart-contracts/contracts/genesis-0.clar +297 -0
- package/smart-contracts/contracts/genesis-1.clar +342 -0
- package/smart-contracts/contracts/genesis-2.clar +297 -0
- package/smart-contracts/contracts/genesis-3.clar +282 -0
- package/smart-contracts/contracts/genesis-4.clar +291 -0
- package/smart-contracts/contracts/genesis-5.clar +276 -0
- package/smart-contracts/contracts/genesis-6.clar +273 -0
- package/smart-contracts/contracts/genesis-7.clar +261 -0
- package/smart-contracts/contracts/genesis-8.clar +279 -0
- package/smart-contracts/contracts/genesis-9.clar +288 -0
- package/smart-contracts/contracts/genesis-ascension-v1.clar +54 -0
- package/smart-contracts/contracts/genesis-badges-v10.clar +72 -0
- package/smart-contracts/contracts/genesis-badges-v4.clar +66 -0
- package/smart-contracts/contracts/genesis-badges-v5.clar +66 -0
- package/smart-contracts/contracts/genesis-badges-v8.clar +88 -0
- package/smart-contracts/contracts/genesis-badges-v9.clar +66 -0
- package/smart-contracts/contracts/genesis-badges.clar +73 -0
- package/smart-contracts/contracts/genesis-boost-v1.clar +58 -0
- package/smart-contracts/contracts/genesis-core-v10.clar +87 -0
- package/smart-contracts/contracts/genesis-core-v2.clar +86 -0
- package/smart-contracts/contracts/genesis-core-v4.clar +80 -0
- package/smart-contracts/contracts/genesis-core-v5.clar +86 -0
- package/smart-contracts/contracts/genesis-core-v6.clar +98 -0
- package/smart-contracts/contracts/genesis-core-v8.clar +106 -0
- package/smart-contracts/contracts/genesis-core-v9.clar +80 -0
- package/smart-contracts/contracts/genesis-core.clar +93 -0
- package/smart-contracts/contracts/genesis-missions-v4.clar +104 -0
- package/smart-contracts/contracts/genesis-missions-v5.clar +86 -0
- package/smart-contracts/contracts/genesis-missions-v6.clar +80 -0
- package/smart-contracts/contracts/genesis-missions-v8.clar +81 -0
- package/smart-contracts/contracts/genesis-missions-v9.clar +73 -0
- package/smart-contracts/contracts/genesis-missions.clar +68 -0
- package/smart-contracts/contracts/mission-mini-001.clar +32 -0
- package/smart-contracts/contracts/mission-mini-002.clar +42 -0
- package/smart-contracts/contracts/mission-mini-003.clar +39 -0
- package/smart-contracts/contracts/mission-mini-004.clar +39 -0
- package/smart-contracts/contracts/mission-mini-005.clar +36 -0
- package/smart-contracts/contracts/modules/genesis-badge-lite-v1.clar +17 -0
- package/smart-contracts/contracts/modules/genesis-counter-v1.clar +21 -0
- package/smart-contracts/contracts/modules/genesis-duel-v1.clar +16 -0
- package/smart-contracts/contracts/modules/genesis-flag-v1.clar +21 -0
- package/smart-contracts/contracts/modules/genesis-leaderboard-v1.clar +88 -0
- package/smart-contracts/contracts/modules/genesis-lucky-v1.clar +16 -0
- package/smart-contracts/contracts/modules/genesis-points-v1.clar +21 -0
- package/smart-contracts/contracts/modules/genesis-predict-v1.clar +14 -0
- package/smart-contracts/contracts/modules/genesis-score-lite-v1.clar +21 -0
- package/smart-contracts/contracts/modules/module-1.clar +2 -0
- package/smart-contracts/contracts/modules/module-10.clar +2 -0
- package/smart-contracts/contracts/modules/module-100.clar +2 -0
- package/smart-contracts/contracts/modules/module-101.clar +2 -0
- package/smart-contracts/contracts/modules/module-102.clar +2 -0
- package/smart-contracts/contracts/modules/module-103.clar +2 -0
- package/smart-contracts/contracts/modules/module-104.clar +2 -0
- package/smart-contracts/contracts/modules/module-105.clar +2 -0
- package/smart-contracts/contracts/modules/module-106.clar +2 -0
- package/smart-contracts/contracts/modules/module-107.clar +2 -0
- package/smart-contracts/contracts/modules/module-108.clar +2 -0
- package/smart-contracts/contracts/modules/module-109.clar +2 -0
- package/smart-contracts/contracts/modules/module-11.clar +2 -0
- package/smart-contracts/contracts/modules/module-110.clar +2 -0
- package/smart-contracts/contracts/modules/module-111.clar +2 -0
- package/smart-contracts/contracts/modules/module-112.clar +2 -0
- package/smart-contracts/contracts/modules/module-113.clar +2 -0
- package/smart-contracts/contracts/modules/module-114.clar +2 -0
- package/smart-contracts/contracts/modules/module-115.clar +2 -0
- package/smart-contracts/contracts/modules/module-116.clar +2 -0
- package/smart-contracts/contracts/modules/module-117.clar +2 -0
- package/smart-contracts/contracts/modules/module-118.clar +2 -0
- package/smart-contracts/contracts/modules/module-119.clar +2 -0
- package/smart-contracts/contracts/modules/module-12.clar +2 -0
- package/smart-contracts/contracts/modules/module-120.clar +2 -0
- package/smart-contracts/contracts/modules/module-121.clar +2 -0
- package/smart-contracts/contracts/modules/module-122.clar +2 -0
- package/smart-contracts/contracts/modules/module-123.clar +2 -0
- package/smart-contracts/contracts/modules/module-124.clar +2 -0
- package/smart-contracts/contracts/modules/module-125.clar +2 -0
- package/smart-contracts/contracts/modules/module-126.clar +2 -0
- package/smart-contracts/contracts/modules/module-127.clar +2 -0
- package/smart-contracts/contracts/modules/module-128.clar +2 -0
- package/smart-contracts/contracts/modules/module-129.clar +2 -0
- package/smart-contracts/contracts/modules/module-13.clar +2 -0
- package/smart-contracts/contracts/modules/module-130.clar +2 -0
- package/smart-contracts/contracts/modules/module-131.clar +2 -0
- package/smart-contracts/contracts/modules/module-132.clar +2 -0
- package/smart-contracts/contracts/modules/module-133.clar +2 -0
- package/smart-contracts/contracts/modules/module-134.clar +2 -0
- package/smart-contracts/contracts/modules/module-135.clar +2 -0
- package/smart-contracts/contracts/modules/module-136.clar +2 -0
- package/smart-contracts/contracts/modules/module-137.clar +2 -0
- package/smart-contracts/contracts/modules/module-138.clar +2 -0
- package/smart-contracts/contracts/modules/module-14.clar +2 -0
- package/smart-contracts/contracts/modules/module-140.clar +2 -0
- package/smart-contracts/contracts/modules/module-141.clar +2 -0
- package/smart-contracts/contracts/modules/module-142.clar +2 -0
- package/smart-contracts/contracts/modules/module-143.clar +2 -0
- package/smart-contracts/contracts/modules/module-144.clar +2 -0
- package/smart-contracts/contracts/modules/module-145.clar +2 -0
- package/smart-contracts/contracts/modules/module-146.clar +2 -0
- package/smart-contracts/contracts/modules/module-147.clar +2 -0
- package/smart-contracts/contracts/modules/module-148.clar +2 -0
- package/smart-contracts/contracts/modules/module-149.clar +2 -0
- package/smart-contracts/contracts/modules/module-15.clar +2 -0
- package/smart-contracts/contracts/modules/module-150.clar +2 -0
- package/smart-contracts/contracts/modules/module-152.clar +2 -0
- package/smart-contracts/contracts/modules/module-153.clar +2 -0
- package/smart-contracts/contracts/modules/module-154.clar +2 -0
- package/smart-contracts/contracts/modules/module-156.clar +2 -0
- package/smart-contracts/contracts/modules/module-157.clar +2 -0
- package/smart-contracts/contracts/modules/module-158.clar +2 -0
- package/smart-contracts/contracts/modules/module-159.clar +2 -0
- package/smart-contracts/contracts/modules/module-16.clar +2 -0
- package/smart-contracts/contracts/modules/module-160.clar +2 -0
- package/smart-contracts/contracts/modules/module-161.clar +2 -0
- package/smart-contracts/contracts/modules/module-162.clar +2 -0
- package/smart-contracts/contracts/modules/module-163.clar +2 -0
- package/smart-contracts/contracts/modules/module-164.clar +2 -0
- package/smart-contracts/contracts/modules/module-165.clar +2 -0
- package/smart-contracts/contracts/modules/module-166.clar +2 -0
- package/smart-contracts/contracts/modules/module-167.clar +2 -0
- package/smart-contracts/contracts/modules/module-168.clar +2 -0
- package/smart-contracts/contracts/modules/module-169.clar +2 -0
- package/smart-contracts/contracts/modules/module-17.clar +2 -0
- package/smart-contracts/contracts/modules/module-171.clar +2 -0
- package/smart-contracts/contracts/modules/module-172.clar +2 -0
- package/smart-contracts/contracts/modules/module-173.clar +2 -0
- package/smart-contracts/contracts/modules/module-174.clar +2 -0
- package/smart-contracts/contracts/modules/module-175.clar +2 -0
- package/smart-contracts/contracts/modules/module-176.clar +2 -0
- package/smart-contracts/contracts/modules/module-178.clar +2 -0
- package/smart-contracts/contracts/modules/module-179.clar +2 -0
- package/smart-contracts/contracts/modules/module-18.clar +2 -0
- package/smart-contracts/contracts/modules/module-180.clar +2 -0
- package/smart-contracts/contracts/modules/module-181.clar +2 -0
- package/smart-contracts/contracts/modules/module-182.clar +2 -0
- package/smart-contracts/contracts/modules/module-183.clar +2 -0
- package/smart-contracts/contracts/modules/module-184.clar +2 -0
- package/smart-contracts/contracts/modules/module-186.clar +2 -0
- package/smart-contracts/contracts/modules/module-188.clar +2 -0
- package/smart-contracts/contracts/modules/module-189.clar +2 -0
- package/smart-contracts/contracts/modules/module-19.clar +2 -0
- package/smart-contracts/contracts/modules/module-190.clar +2 -0
- package/smart-contracts/contracts/modules/module-191.clar +2 -0
- package/smart-contracts/contracts/modules/module-192.clar +2 -0
- package/smart-contracts/contracts/modules/module-193.clar +2 -0
- package/smart-contracts/contracts/modules/module-195.clar +2 -0
- package/smart-contracts/contracts/modules/module-196.clar +2 -0
- package/smart-contracts/contracts/modules/module-197.clar +2 -0
- package/smart-contracts/contracts/modules/module-198.clar +2 -0
- package/smart-contracts/contracts/modules/module-199.clar +2 -0
- package/smart-contracts/contracts/modules/module-2.clar +2 -0
- package/smart-contracts/contracts/modules/module-20.clar +2 -0
- package/smart-contracts/contracts/modules/module-200.clar +2 -0
- package/smart-contracts/contracts/modules/module-201.clar +2 -0
- package/smart-contracts/contracts/modules/module-202.clar +2 -0
- package/smart-contracts/contracts/modules/module-203.clar +2 -0
- package/smart-contracts/contracts/modules/module-204.clar +2 -0
- package/smart-contracts/contracts/modules/module-205.clar +2 -0
- package/smart-contracts/contracts/modules/module-207.clar +2 -0
- package/smart-contracts/contracts/modules/module-209.clar +2 -0
- package/smart-contracts/contracts/modules/module-21.clar +2 -0
- package/smart-contracts/contracts/modules/module-210.clar +2 -0
- package/smart-contracts/contracts/modules/module-212.clar +2 -0
- package/smart-contracts/contracts/modules/module-213.clar +2 -0
- package/smart-contracts/contracts/modules/module-215.clar +2 -0
- package/smart-contracts/contracts/modules/module-216.clar +2 -0
- package/smart-contracts/contracts/modules/module-218.clar +2 -0
- package/smart-contracts/contracts/modules/module-219.clar +2 -0
- package/smart-contracts/contracts/modules/module-22.clar +2 -0
- package/smart-contracts/contracts/modules/module-222.clar +2 -0
- package/smart-contracts/contracts/modules/module-223.clar +2 -0
- package/smart-contracts/contracts/modules/module-224.clar +2 -0
- package/smart-contracts/contracts/modules/module-226.clar +2 -0
- package/smart-contracts/contracts/modules/module-227.clar +2 -0
- package/smart-contracts/contracts/modules/module-228.clar +2 -0
- package/smart-contracts/contracts/modules/module-23.clar +2 -0
- package/smart-contracts/contracts/modules/module-230.clar +2 -0
- package/smart-contracts/contracts/modules/module-231.clar +2 -0
- package/smart-contracts/contracts/modules/module-232.clar +2 -0
- package/smart-contracts/contracts/modules/module-234.clar +2 -0
- package/smart-contracts/contracts/modules/module-235.clar +2 -0
- package/smart-contracts/contracts/modules/module-24.clar +2 -0
- package/smart-contracts/contracts/modules/module-241.clar +2 -0
- package/smart-contracts/contracts/modules/module-243.clar +2 -0
- package/smart-contracts/contracts/modules/module-244.clar +2 -0
- package/smart-contracts/contracts/modules/module-245.clar +2 -0
- package/smart-contracts/contracts/modules/module-246.clar +2 -0
- package/smart-contracts/contracts/modules/module-247.clar +2 -0
- package/smart-contracts/contracts/modules/module-25.clar +2 -0
- package/smart-contracts/contracts/modules/module-251.clar +2 -0
- package/smart-contracts/contracts/modules/module-252.clar +2 -0
- package/smart-contracts/contracts/modules/module-253.clar +2 -0
- package/smart-contracts/contracts/modules/module-254.clar +2 -0
- package/smart-contracts/contracts/modules/module-256.clar +2 -0
- package/smart-contracts/contracts/modules/module-257.clar +2 -0
- package/smart-contracts/contracts/modules/module-258.clar +2 -0
- package/smart-contracts/contracts/modules/module-26.clar +2 -0
- package/smart-contracts/contracts/modules/module-260.clar +2 -0
- package/smart-contracts/contracts/modules/module-262.clar +2 -0
- package/smart-contracts/contracts/modules/module-266.clar +2 -0
- package/smart-contracts/contracts/modules/module-267.clar +2 -0
- package/smart-contracts/contracts/modules/module-269.clar +2 -0
- package/smart-contracts/contracts/modules/module-27.clar +2 -0
- package/smart-contracts/contracts/modules/module-272.clar +2 -0
- package/smart-contracts/contracts/modules/module-275.clar +2 -0
- package/smart-contracts/contracts/modules/module-276.clar +2 -0
- package/smart-contracts/contracts/modules/module-277.clar +2 -0
- package/smart-contracts/contracts/modules/module-279.clar +2 -0
- package/smart-contracts/contracts/modules/module-28.clar +2 -0
- package/smart-contracts/contracts/modules/module-280.clar +2 -0
- package/smart-contracts/contracts/modules/module-282.clar +2 -0
- package/smart-contracts/contracts/modules/module-283.clar +2 -0
- package/smart-contracts/contracts/modules/module-286.clar +2 -0
- package/smart-contracts/contracts/modules/module-29.clar +2 -0
- package/smart-contracts/contracts/modules/module-291.clar +2 -0
- package/smart-contracts/contracts/modules/module-295.clar +2 -0
- package/smart-contracts/contracts/modules/module-296.clar +2 -0
- package/smart-contracts/contracts/modules/module-3.clar +2 -0
- package/smart-contracts/contracts/modules/module-30.clar +2 -0
- package/smart-contracts/contracts/modules/module-31.clar +2 -0
- package/smart-contracts/contracts/modules/module-32.clar +2 -0
- package/smart-contracts/contracts/modules/module-33.clar +2 -0
- package/smart-contracts/contracts/modules/module-34.clar +2 -0
- package/smart-contracts/contracts/modules/module-35.clar +2 -0
- package/smart-contracts/contracts/modules/module-36.clar +2 -0
- package/smart-contracts/contracts/modules/module-37.clar +2 -0
- package/smart-contracts/contracts/modules/module-38.clar +2 -0
- package/smart-contracts/contracts/modules/module-39.clar +2 -0
- package/smart-contracts/contracts/modules/module-4.clar +2 -0
- package/smart-contracts/contracts/modules/module-40.clar +2 -0
- package/smart-contracts/contracts/modules/module-41.clar +2 -0
- package/smart-contracts/contracts/modules/module-42.clar +2 -0
- package/smart-contracts/contracts/modules/module-43.clar +2 -0
- package/smart-contracts/contracts/modules/module-44.clar +2 -0
- package/smart-contracts/contracts/modules/module-45.clar +2 -0
- package/smart-contracts/contracts/modules/module-46.clar +2 -0
- package/smart-contracts/contracts/modules/module-47.clar +2 -0
- package/smart-contracts/contracts/modules/module-48.clar +2 -0
- package/smart-contracts/contracts/modules/module-49.clar +2 -0
- package/smart-contracts/contracts/modules/module-5.clar +2 -0
- package/smart-contracts/contracts/modules/module-50.clar +2 -0
- package/smart-contracts/contracts/modules/module-51.clar +2 -0
- package/smart-contracts/contracts/modules/module-52.clar +2 -0
- package/smart-contracts/contracts/modules/module-53.clar +2 -0
- package/smart-contracts/contracts/modules/module-54.clar +2 -0
- package/smart-contracts/contracts/modules/module-55.clar +2 -0
- package/smart-contracts/contracts/modules/module-56.clar +2 -0
- package/smart-contracts/contracts/modules/module-57.clar +2 -0
- package/smart-contracts/contracts/modules/module-58.clar +2 -0
- package/smart-contracts/contracts/modules/module-59.clar +2 -0
- package/smart-contracts/contracts/modules/module-6.clar +2 -0
- package/smart-contracts/contracts/modules/module-60.clar +2 -0
- package/smart-contracts/contracts/modules/module-61.clar +2 -0
- package/smart-contracts/contracts/modules/module-62.clar +2 -0
- package/smart-contracts/contracts/modules/module-63.clar +2 -0
- package/smart-contracts/contracts/modules/module-64.clar +2 -0
- package/smart-contracts/contracts/modules/module-65.clar +2 -0
- package/smart-contracts/contracts/modules/module-66.clar +2 -0
- package/smart-contracts/contracts/modules/module-67.clar +2 -0
- package/smart-contracts/contracts/modules/module-68.clar +2 -0
- package/smart-contracts/contracts/modules/module-69.clar +2 -0
- package/smart-contracts/contracts/modules/module-7.clar +2 -0
- package/smart-contracts/contracts/modules/module-70.clar +2 -0
- package/smart-contracts/contracts/modules/module-71.clar +2 -0
- package/smart-contracts/contracts/modules/module-72.clar +2 -0
- package/smart-contracts/contracts/modules/module-73.clar +2 -0
- package/smart-contracts/contracts/modules/module-74.clar +2 -0
- package/smart-contracts/contracts/modules/module-75.clar +2 -0
- package/smart-contracts/contracts/modules/module-76.clar +2 -0
- package/smart-contracts/contracts/modules/module-77.clar +2 -0
- package/smart-contracts/contracts/modules/module-78.clar +2 -0
- package/smart-contracts/contracts/modules/module-79.clar +2 -0
- package/smart-contracts/contracts/modules/module-8.clar +2 -0
- package/smart-contracts/contracts/modules/module-80.clar +2 -0
- package/smart-contracts/contracts/modules/module-81.clar +2 -0
- package/smart-contracts/contracts/modules/module-82.clar +2 -0
- package/smart-contracts/contracts/modules/module-83.clar +2 -0
- package/smart-contracts/contracts/modules/module-84.clar +2 -0
- package/smart-contracts/contracts/modules/module-85.clar +2 -0
- package/smart-contracts/contracts/modules/module-86.clar +2 -0
- package/smart-contracts/contracts/modules/module-87.clar +2 -0
- package/smart-contracts/contracts/modules/module-88.clar +2 -0
- package/smart-contracts/contracts/modules/module-89.clar +2 -0
- package/smart-contracts/contracts/modules/module-9.clar +2 -0
- package/smart-contracts/contracts/modules/module-90.clar +2 -0
- package/smart-contracts/contracts/modules/module-91.clar +2 -0
- package/smart-contracts/contracts/modules/module-92.clar +2 -0
- package/smart-contracts/contracts/modules/module-93.clar +2 -0
- package/smart-contracts/contracts/modules/module-94.clar +2 -0
- package/smart-contracts/contracts/modules/module-95.clar +2 -0
- package/smart-contracts/contracts/modules/module-96.clar +2 -0
- package/smart-contracts/contracts/modules/module-97.clar +2 -0
- package/smart-contracts/contracts/modules/module-98.clar +2 -0
- package/smart-contracts/contracts/modules/module-99.clar +2 -0
- package/smart-contracts/contracts/reputation-engine.clar +131 -0
- package/smart-contracts/contracts/sip-010-trait.clar +38 -0
- package/smart-contracts/contracts/staking-refinery-v3.clar +138 -0
- package/smart-contracts/contracts/staking-refinery-v4.clar +125 -0
- package/smart-contracts/contracts/staking-refinery-v5.clar +153 -0
- package/smart-contracts/contracts/staking-refinery-v6.clar +122 -0
- package/smart-contracts/contracts/staking-refinery-v7.clar +144 -0
- package/smart-contracts/contracts/staking-refinery.clar +80 -0
- package/smart-contracts/contracts/token-one-v3.clar +74 -0
- package/smart-contracts/contracts/token-one-v4.clar +51 -0
- package/smart-contracts/contracts/token-one-v5.clar +78 -0
- package/smart-contracts/contracts/token-one-v6.clar +91 -0
- package/smart-contracts/contracts/token-one-v7.clar +79 -0
- package/smart-contracts/contracts/token-one.clar +86 -0
- package/smart-contracts/contracts/token-poin-trait.clar +35 -0
- package/smart-contracts/contracts/token-poin-v3.clar +87 -0
- package/smart-contracts/contracts/token-poin-v4.clar +72 -0
- package/smart-contracts/contracts/token-poin-v5.clar +68 -0
- package/smart-contracts/contracts/token-poin-v6.clar +61 -0
- package/smart-contracts/contracts/token-poin-v7.clar +55 -0
- package/smart-contracts/contracts/token-poin.clar +85 -0
- package/smart-contracts/contracts/utility-gacha.clar +69 -0
- package/smart-contracts/deployments/default.mainnet-plan.yaml +18 -0
- package/smart-contracts/mission-mini-001.clar +0 -0
- package/smart-contracts/mission-mini-002.clar +0 -0
- package/smart-contracts/mission-mini-003.clar +0 -0
- package/smart-contracts/mission-mini-004.clar +0 -0
- package/smart-contracts/mission-mini-005.clar +0 -0
- package/smart-contracts/package-lock.json +2990 -0
- package/smart-contracts/package.json +24 -0
- package/smart-contracts/scripts/interact-modules.ts +1 -0
- package/smart-contracts/settings/Devnet.toml +155 -0
- package/smart-contracts/tests/genesis-badges.test.ts +21 -0
- package/smart-contracts/tests/genesis-core.test.ts +21 -0
- package/smart-contracts/tests/genesis-missions.test.ts +21 -0
- package/smart-contracts/tests/interact-reputation.ts +8 -0
- package/smart-contracts/tests/reputation-engine.test.ts +41 -0
- package/smart-contracts/tests/reputation.test.ts +15 -0
- package/smart-contracts/tests/token-one.test.ts +102 -0
- package/smart-contracts/tsconfig.json +26 -0
- package/smart-contracts/vitest.config.js +42 -0
- package/src/App.css +42 -0
- package/src/App.jsx +357 -0
- package/src/assets/react.svg +1 -0
- package/src/components/Layout.jsx +114 -0
- package/src/helper.js +153 -0
- package/src/index.css +21 -0
- package/src/main.jsx +160 -0
- package/src/pages/Gaming.jsx +177 -0
- package/src/pages/Home.jsx +153 -0
- package/src/pages/LeaderboardCard.tsx +93 -0
- package/src/pages/Profile.jsx +299 -0
- package/src/pages/Tasks.jsx +128 -0
- package/src/pages/Vault.jsx +524 -0
- package/src/polyfills.js +126 -0
- package/src/supabaseClient.js +141 -0
- package/src/utils.js +166 -0
- package/tailwind.config.js +42 -0
- package/temp-log.txt +4 -0
- package/vercel.json +8 -0
- package/vite.config.js +34 -0
package/src/App.jsx
ADDED
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import { Routes, Route, Navigate } from 'react-router-dom'; // Tambahkan import dari react-router-dom
|
|
3
|
+
import { showConnect, openContractCall } from '@stacks/connect';
|
|
4
|
+
import { StacksMainnet } from '@stacks/network';
|
|
5
|
+
import {
|
|
6
|
+
uintCV,
|
|
7
|
+
PostConditionMode,
|
|
8
|
+
callReadOnlyFunction,
|
|
9
|
+
standardPrincipalCV,
|
|
10
|
+
tupleCV,
|
|
11
|
+
cvToHex,
|
|
12
|
+
hexToCV,
|
|
13
|
+
cvToValue,
|
|
14
|
+
stringAsciiCV
|
|
15
|
+
} from '@stacks/transactions';
|
|
16
|
+
|
|
17
|
+
import { supabase, userSession } from './supabaseClient';
|
|
18
|
+
|
|
19
|
+
import Layout from './components/Layout';
|
|
20
|
+
import Home from './pages/Home';
|
|
21
|
+
import Tasks from './pages/Tasks';
|
|
22
|
+
import Profile from './pages/Profile';
|
|
23
|
+
import Vault from './pages/Vault';
|
|
24
|
+
import Gaming from './pages/Gaming';
|
|
25
|
+
|
|
26
|
+
const CONTRACT_ADDRESS = 'SP3GHKMV4GSYNA8WGBX83DACG80K1RRVQZAZMB9J3';
|
|
27
|
+
const CONTRACT_NAME = 'genesis-core-v10';
|
|
28
|
+
const LEADERBOARD_CONTRACT = 'genesis-leaderboard-v1';
|
|
29
|
+
|
|
30
|
+
const network = new StacksMainnet();
|
|
31
|
+
|
|
32
|
+
function App() {
|
|
33
|
+
|
|
34
|
+
const [userData, setUserData] = useState(null);
|
|
35
|
+
|
|
36
|
+
const [leaderboardScore, setLeaderboardScore] = useState(0);
|
|
37
|
+
const [leaderboardTier, setLeaderboardTier] = useState(0);
|
|
38
|
+
|
|
39
|
+
const [userXP, setUserXP] = useState(0);
|
|
40
|
+
const [userLevel, setUserLevel] = useState(1);
|
|
41
|
+
|
|
42
|
+
const [tasks] = useState([
|
|
43
|
+
{
|
|
44
|
+
id: 101,
|
|
45
|
+
name: "Security Audit Sentinel",
|
|
46
|
+
desc: "Perform a comprehensive vulnerability scan on the smart contracts",
|
|
47
|
+
reward: 300,
|
|
48
|
+
icon: "🛡️"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: 102,
|
|
52
|
+
name: "SIP Implementation",
|
|
53
|
+
desc: "Implement a new Stacks Improvement Proposal (SIP) standard in your app",
|
|
54
|
+
reward: 450,
|
|
55
|
+
icon: "📜"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: 103,
|
|
59
|
+
name: "Gasless Transaction Setup",
|
|
60
|
+
desc: "Enable meta-transactions to allow users to interact without STX gas fees",
|
|
61
|
+
reward: 220,
|
|
62
|
+
icon: "⛽"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: 104,
|
|
66
|
+
name: "DeFi Liquidity Provider",
|
|
67
|
+
desc: "Provide liquidity to a Stacks-based DEX using your Diamond assets",
|
|
68
|
+
reward: 190,
|
|
69
|
+
icon: "💧"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: 105,
|
|
73
|
+
name: "Identity Recovery Protocol",
|
|
74
|
+
desc: "Set up a social recovery mechanism for your decentralized identity",
|
|
75
|
+
reward: 280,
|
|
76
|
+
icon: "🔑"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: 106,
|
|
80
|
+
name: "Multi-sig Governance",
|
|
81
|
+
desc: "Deploy a multi-signature wallet for shared project treasury management",
|
|
82
|
+
reward: 320,
|
|
83
|
+
icon: "👥"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: 107,
|
|
87
|
+
name: "Zero-Knowledge Proofs",
|
|
88
|
+
desc: "Integrate ZK-proofs for private identity verification on-chain",
|
|
89
|
+
reward: 550,
|
|
90
|
+
icon: "🕵️"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: 108,
|
|
94
|
+
name: "Community Workshop Lead",
|
|
95
|
+
desc: "Host a technical workshop for new developers joining the Genesis ecosystem",
|
|
96
|
+
reward: 250,
|
|
97
|
+
icon: "🎓"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 109,
|
|
101
|
+
name: "Cross-chain Bridge Test",
|
|
102
|
+
desc: "Successfully bridge assets from Ethereum to Stacks via an official portal",
|
|
103
|
+
reward: 210,
|
|
104
|
+
icon: "🌉"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: 110,
|
|
108
|
+
name: "Genesis Overlord",
|
|
109
|
+
desc: "Consolidate 10 high-tier Diamond Vaults into a single Master Node",
|
|
110
|
+
reward: 1200,
|
|
111
|
+
icon: "👑"
|
|
112
|
+
}
|
|
113
|
+
]);
|
|
114
|
+
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
|
|
117
|
+
if (userSession.isUserSignedIn()) {
|
|
118
|
+
|
|
119
|
+
const user = userSession.loadUserData();
|
|
120
|
+
const wallet = user.profile.stxAddress.mainnet;
|
|
121
|
+
|
|
122
|
+
setUserData(user);
|
|
123
|
+
|
|
124
|
+
fetchLeaderboard(wallet);
|
|
125
|
+
fetchUserProfile(wallet);
|
|
126
|
+
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
}, []);
|
|
130
|
+
|
|
131
|
+
const fetchUserProfile = async (wallet) => {
|
|
132
|
+
|
|
133
|
+
try {
|
|
134
|
+
|
|
135
|
+
const key = standardPrincipalCV(wallet);
|
|
136
|
+
|
|
137
|
+
const response = await fetch(
|
|
138
|
+
`${network.coreApiUrl}/v2/map_entry/${CONTRACT_ADDRESS}/${CONTRACT_NAME}/user-profile`,
|
|
139
|
+
{
|
|
140
|
+
method: "POST",
|
|
141
|
+
headers: { "Content-Type": "application/json" },
|
|
142
|
+
body: JSON.stringify(cvToHex(key))
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
if (!response.ok) {
|
|
147
|
+
setUserXP(0);
|
|
148
|
+
setUserLevel(1);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const data = await response.json();
|
|
153
|
+
const resultCV = hexToCV(data.data);
|
|
154
|
+
const val = cvToValue(resultCV);
|
|
155
|
+
|
|
156
|
+
let xp = 0;
|
|
157
|
+
let level = 1;
|
|
158
|
+
|
|
159
|
+
if (val && val.value) {
|
|
160
|
+
xp = val.value.xp?.value !== undefined ? val.value.xp.value : (val.value.xp ?? 0);
|
|
161
|
+
level = val.value.level?.value !== undefined ? val.value.level.value : (val.value.level ?? 1);
|
|
162
|
+
} else if (val) {
|
|
163
|
+
xp = val.xp?.value !== undefined ? val.xp.value : (val.xp ?? 0);
|
|
164
|
+
level = val.level?.value !== undefined ? val.level.value : (val.level ?? 1);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
setUserXP(Number(xp));
|
|
168
|
+
setUserLevel(Number(level));
|
|
169
|
+
|
|
170
|
+
} catch (err) {
|
|
171
|
+
console.log("Profile fetch error:", err);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const fetchLeaderboard = async (wallet) => {
|
|
177
|
+
|
|
178
|
+
try {
|
|
179
|
+
|
|
180
|
+
const scoreResult = await callReadOnlyFunction({
|
|
181
|
+
contractAddress: CONTRACT_ADDRESS,
|
|
182
|
+
contractName: LEADERBOARD_CONTRACT,
|
|
183
|
+
functionName: 'get-score',
|
|
184
|
+
functionArgs: [standardPrincipalCV(wallet)],
|
|
185
|
+
network,
|
|
186
|
+
senderAddress: wallet
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
const tierResult = await callReadOnlyFunction({
|
|
190
|
+
contractAddress: CONTRACT_ADDRESS,
|
|
191
|
+
contractName: LEADERBOARD_CONTRACT,
|
|
192
|
+
functionName: 'get-rank-tier',
|
|
193
|
+
functionArgs: [standardPrincipalCV(wallet)],
|
|
194
|
+
network,
|
|
195
|
+
senderAddress: wallet
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
const scoreValue = scoreResult?.value?.data?.score?.value ?? 0;
|
|
199
|
+
const tierValue = tierResult?.value?.value ?? 0;
|
|
200
|
+
|
|
201
|
+
setLeaderboardScore(Number(scoreValue));
|
|
202
|
+
setLeaderboardTier(Number(tierValue));
|
|
203
|
+
|
|
204
|
+
} catch (err) {
|
|
205
|
+
console.log("Leaderboard error:", err);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
const handleAddLeaderboardScore = async () => {
|
|
211
|
+
|
|
212
|
+
if (!userData) return;
|
|
213
|
+
|
|
214
|
+
await openContractCall({
|
|
215
|
+
network,
|
|
216
|
+
contractAddress: CONTRACT_ADDRESS,
|
|
217
|
+
contractName: LEADERBOARD_CONTRACT,
|
|
218
|
+
functionName: 'add-score',
|
|
219
|
+
functionArgs: [uintCV(10)],
|
|
220
|
+
postConditionMode: PostConditionMode.Allow,
|
|
221
|
+
onFinish: () => {
|
|
222
|
+
fetchLeaderboard(userData.profile.stxAddress.mainnet);
|
|
223
|
+
fetchUserProfile(userData.profile.stxAddress.mainnet);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
const handleTask = async (taskId) => {
|
|
230
|
+
|
|
231
|
+
if (!userData) {
|
|
232
|
+
alert("Connect wallet first");
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const reward = tasks.find(t => t.id === taskId)?.reward ?? 0;
|
|
237
|
+
|
|
238
|
+
return new Promise((resolve) => {
|
|
239
|
+
openContractCall({
|
|
240
|
+
network,
|
|
241
|
+
contractAddress: CONTRACT_ADDRESS,
|
|
242
|
+
contractName: CONTRACT_NAME,
|
|
243
|
+
functionName: 'complete-mission',
|
|
244
|
+
functionArgs: [uintCV(taskId), uintCV(reward)],
|
|
245
|
+
postConditionMode: PostConditionMode.Allow,
|
|
246
|
+
onFinish: () => {
|
|
247
|
+
const newXP = userXP + reward;
|
|
248
|
+
setUserXP(newXP);
|
|
249
|
+
setUserLevel(Math.floor(newXP / 500) + 1);
|
|
250
|
+
setTimeout(() => fetchUserProfile(userData.profile.stxAddress.mainnet), 10000);
|
|
251
|
+
resolve(true);
|
|
252
|
+
},
|
|
253
|
+
onCancel: () => {
|
|
254
|
+
resolve(false);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
const handleMint = async (badgeId) => {
|
|
262
|
+
|
|
263
|
+
if (!userData) {
|
|
264
|
+
alert("Connect wallet first");
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return new Promise((resolve) => {
|
|
269
|
+
openContractCall({
|
|
270
|
+
network,
|
|
271
|
+
contractAddress: CONTRACT_ADDRESS,
|
|
272
|
+
contractName: CONTRACT_NAME,
|
|
273
|
+
functionName: 'claim-badge',
|
|
274
|
+
functionArgs: [stringAsciiCV(badgeId)],
|
|
275
|
+
postConditionMode: PostConditionMode.Allow,
|
|
276
|
+
onFinish: () => {
|
|
277
|
+
resolve(true);
|
|
278
|
+
},
|
|
279
|
+
onCancel: () => {
|
|
280
|
+
resolve(false);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
const connectWallet = () => {
|
|
288
|
+
|
|
289
|
+
showConnect({
|
|
290
|
+
userSession,
|
|
291
|
+
appDetails: {
|
|
292
|
+
name: 'Genesis Platform',
|
|
293
|
+
icon: window.location.origin + '/vite.svg'
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
return (
|
|
300
|
+
<Layout
|
|
301
|
+
walletButton={
|
|
302
|
+
!userData ?
|
|
303
|
+
|
|
304
|
+
<button
|
|
305
|
+
onClick={connectWallet}
|
|
306
|
+
className="bg-indigo-500 text-white px-4 py-2 rounded-lg text-sm font-bold"
|
|
307
|
+
>
|
|
308
|
+
CONNECT
|
|
309
|
+
</button>
|
|
310
|
+
|
|
311
|
+
:
|
|
312
|
+
|
|
313
|
+
<button
|
|
314
|
+
onClick={() => {
|
|
315
|
+
userSession.signUserOut();
|
|
316
|
+
setUserData(null);
|
|
317
|
+
}}
|
|
318
|
+
className="bg-slate-800 px-4 py-2 rounded-lg text-sm font-mono"
|
|
319
|
+
>
|
|
320
|
+
{userData.profile.stxAddress.mainnet.slice(0,5)}...
|
|
321
|
+
</button>
|
|
322
|
+
}
|
|
323
|
+
>
|
|
324
|
+
<Routes>
|
|
325
|
+
{/* Redirect root (/) ke /home */}
|
|
326
|
+
<Route path="/" element={<Navigate to="/home" replace />} />
|
|
327
|
+
|
|
328
|
+
<Route path="/home" element={
|
|
329
|
+
<Home
|
|
330
|
+
userData={userData}
|
|
331
|
+
userXP={userXP}
|
|
332
|
+
userLevel={userLevel}
|
|
333
|
+
handleMint={handleMint}
|
|
334
|
+
/>
|
|
335
|
+
} />
|
|
336
|
+
|
|
337
|
+
<Route path="/tasks" element={
|
|
338
|
+
<Tasks
|
|
339
|
+
initialTasks={tasks}
|
|
340
|
+
handleTask={handleTask}
|
|
341
|
+
/>
|
|
342
|
+
} />
|
|
343
|
+
|
|
344
|
+
<Route path="/vault" element={<Vault userData={userData} />} />
|
|
345
|
+
|
|
346
|
+
<Route path="/profile" element={<Profile userData={userData} />} />
|
|
347
|
+
|
|
348
|
+
{/* --- TAMBAHAN ROUTE GAMING DI SINI --- */}
|
|
349
|
+
<Route path="/gaming" element={<Gaming userData={userData} />} />
|
|
350
|
+
|
|
351
|
+
</Routes>
|
|
352
|
+
</Layout>
|
|
353
|
+
);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
export default App;
|
|
357
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Link, useLocation } from 'react-router-dom';
|
|
3
|
+
|
|
4
|
+
const Layout = ({ children, walletButton }) => {
|
|
5
|
+
const location = useLocation();
|
|
6
|
+
const currentPath = location.pathname;
|
|
7
|
+
|
|
8
|
+
const menuItems = [
|
|
9
|
+
{ id: 'home', label: 'Overview', icon: '◱', path: '/home' },
|
|
10
|
+
{ id: 'tasks', label: 'Protocol Tasks', icon: '≡', path: '/tasks' },
|
|
11
|
+
{ id: 'vault', label: 'Treasury Vault', icon: '⧉', path: '/vault' },
|
|
12
|
+
{ id: 'gaming', label: 'Engagement', icon: '⍐', path: '/gaming' },
|
|
13
|
+
{ id: 'profile', label: 'Identity', icon: '⍥', path: '/profile' }
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<div className="min-h-screen flex bg-app-bg text-zinc-200 font-sans overflow-hidden selection:bg-app-accent selection:text-white">
|
|
18
|
+
|
|
19
|
+
{/* DESKTOP SIDEBAR */}
|
|
20
|
+
<aside className="w-64 hidden md:flex flex-col border-r border-app-border bg-app-bg z-20 transition-all">
|
|
21
|
+
<div className="p-6 flex items-center gap-3">
|
|
22
|
+
<div className="w-8 h-8 bg-white rounded flex items-center justify-center font-bold text-black shadow-sm">
|
|
23
|
+
G
|
|
24
|
+
</div>
|
|
25
|
+
<span className="font-bold tracking-tight text-lg text-white">
|
|
26
|
+
GENESIS
|
|
27
|
+
</span>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<nav className="flex-1 px-4 space-y-1 mt-6">
|
|
31
|
+
{menuItems.map((item) => {
|
|
32
|
+
const isActive = currentPath.includes(item.path);
|
|
33
|
+
return (
|
|
34
|
+
<Link
|
|
35
|
+
key={item.id}
|
|
36
|
+
to={item.path}
|
|
37
|
+
className={`w-full flex items-center gap-3 px-3 py-2.5 rounded-md transition-all duration-200 text-sm font-medium group ${
|
|
38
|
+
isActive
|
|
39
|
+
? 'bg-app-card text-white shadow-sm'
|
|
40
|
+
: 'text-app-muted hover:bg-zinc-800/50 hover:text-zinc-200'
|
|
41
|
+
}`}
|
|
42
|
+
>
|
|
43
|
+
<span className={`text-lg transition-transform duration-200 ${isActive ? 'scale-110 text-app-accent' : 'group-hover:scale-110'}`}>
|
|
44
|
+
{item.icon}
|
|
45
|
+
</span>
|
|
46
|
+
{item.label}
|
|
47
|
+
</Link>
|
|
48
|
+
);
|
|
49
|
+
})}
|
|
50
|
+
</nav>
|
|
51
|
+
</aside>
|
|
52
|
+
|
|
53
|
+
{/* MAIN AREA */}
|
|
54
|
+
<main className="flex-1 flex flex-col relative overflow-y-auto h-screen scroll-smooth">
|
|
55
|
+
{/* HEADER */}
|
|
56
|
+
<header className="sticky top-0 z-10 bg-app-bg/80 backdrop-blur-md border-b border-app-border px-8 py-4 flex justify-between items-center">
|
|
57
|
+
<div className="hidden md:flex items-center gap-2 text-app-muted text-xs uppercase tracking-widest font-semibold">
|
|
58
|
+
<span className="w-2 h-2 rounded-full bg-green-500 animate-pulse-subtle"></span>
|
|
59
|
+
Mainnet Environment
|
|
60
|
+
</div>
|
|
61
|
+
<div>
|
|
62
|
+
{walletButton}
|
|
63
|
+
</div>
|
|
64
|
+
</header>
|
|
65
|
+
|
|
66
|
+
{/* PAGE CONTENT */}
|
|
67
|
+
<div className="p-6 md:p-8 max-w-5xl w-full flex-1 animate-fade-in mx-auto">
|
|
68
|
+
{children}
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
{/* FOOTER */}
|
|
72
|
+
<footer className="w-full border-t border-app-border py-8 mt-auto pb-24 md:pb-8 bg-app-bg">
|
|
73
|
+
<div className="flex flex-col items-center justify-center gap-4">
|
|
74
|
+
<span className="text-app-muted text-[10px] font-bold uppercase tracking-widest">
|
|
75
|
+
Join The Ecosystem
|
|
76
|
+
</span>
|
|
77
|
+
<div className="flex items-center gap-6">
|
|
78
|
+
<a href="https://t.me/+urf3qEq3FkE2NDA1" target="_blank" rel="noreferrer" className="text-zinc-500 hover:text-white transition-colors text-sm font-medium flex items-center gap-2">
|
|
79
|
+
Telegram
|
|
80
|
+
</a>
|
|
81
|
+
<a href="https://x.com/stacksone_ngasal" target="_blank" rel="noreferrer" className="text-zinc-500 hover:text-white transition-colors text-sm font-medium flex items-center gap-2">
|
|
82
|
+
X (Twitter)
|
|
83
|
+
</a>
|
|
84
|
+
<a href="https://discord.gg/ngasaldulu" target="_blank" rel="noreferrer" className="text-zinc-500 hover:text-white transition-colors text-sm font-medium flex items-center gap-2">
|
|
85
|
+
Discord
|
|
86
|
+
</a>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
</footer>
|
|
90
|
+
</main>
|
|
91
|
+
|
|
92
|
+
{/* MOBILE BOTTOM NAVIGATION */}
|
|
93
|
+
<div className="md:hidden fixed bottom-0 left-0 right-0 bg-app-bg/95 backdrop-blur-xl border-t border-app-border flex justify-around py-3 z-30 px-2 pb-safe">
|
|
94
|
+
{menuItems.map((item) => {
|
|
95
|
+
const isActive = currentPath.includes(item.path);
|
|
96
|
+
return (
|
|
97
|
+
<Link
|
|
98
|
+
key={item.id}
|
|
99
|
+
to={item.path}
|
|
100
|
+
className={`flex flex-col items-center gap-1 text-[10px] font-medium transition-colors ${
|
|
101
|
+
isActive ? 'text-white' : 'text-app-muted'
|
|
102
|
+
}`}
|
|
103
|
+
>
|
|
104
|
+
<span className={`text-xl ${isActive ? 'text-app-accent' : ''}`}>{item.icon}</span>
|
|
105
|
+
{item.label}
|
|
106
|
+
</Link>
|
|
107
|
+
);
|
|
108
|
+
})}
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export default Layout;
|
package/src/helper.js
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// updated at Sen 30 Mar 2026 21:01:36 WIB
|
|
2
|
+
// update 1 at Min 29 Mar 2026 20:24:36 WIB
|
|
3
|
+
// update 29 at Sen 30 Mar 2026 00:48:02 WIB
|
|
4
|
+
// update 37 at Sen 30 Mar 2026 01:59:01 WIB
|
|
5
|
+
// update 95 at Sen 30 Mar 2026 10:24:29 WIB
|
|
6
|
+
// update 145 at Sen 30 Mar 2026 18:21:16 WIB
|
|
7
|
+
// update 149 at Sen 30 Mar 2026 18:50:06 WIB
|
|
8
|
+
// update 34 at Sel 31 Mar 2026 03:48:32 WIB
|
|
9
|
+
// update 39 at Sel 31 Mar 2026 04:26:09 WIB
|
|
10
|
+
// update 64 at Sel 31 Mar 2026 08:12:52 WIB
|
|
11
|
+
// update 4 at Sel 31 Mar 2026 09:29:28 WIB
|
|
12
|
+
// update 6 at Sel 31 Mar 2026 09:36:35 WIB
|
|
13
|
+
// update 31 at Sel 31 Mar 2026 11:13:43 WIB
|
|
14
|
+
// update 39 at Sel 31 Mar 2026 11:46:31 WIB
|
|
15
|
+
// update 45 at Sel 31 Mar 2026 12:11:21 WIB
|
|
16
|
+
// update 63 at Sel 31 Mar 2026 13:23:03 WIB
|
|
17
|
+
// update 9 at Sel 31 Mar 2026 15:54:52 WIB
|
|
18
|
+
// update 65 at Sel 31 Mar 2026 19:38:52 WIB
|
|
19
|
+
// update 76 at Sel 31 Mar 2026 20:22:14 WIB
|
|
20
|
+
// update 128 at Rab 01 Apr 2026 00:04:06 WIB
|
|
21
|
+
// update 3 at Min 05 Apr 2026 13:18:49 WIB
|
|
22
|
+
// update 9 at Min 05 Apr 2026 14:06:29 WIB
|
|
23
|
+
// update 47 at Sel 07 Apr 2026 00:04:02 WIB
|
|
24
|
+
// update 59 at Sel 07 Apr 2026 01:30:02 WIB
|
|
25
|
+
// update 62 at Sel 07 Apr 2026 01:50:19 WIB
|
|
26
|
+
// update 31 at Rab 08 Apr 2026 14:33:16 WIB
|
|
27
|
+
// update 32 at Rab 08 Apr 2026 14:41:17 WIB
|
|
28
|
+
// update 43 at Rab 08 Apr 2026 16:03:36 WIB
|
|
29
|
+
// update 77 at Rab 08 Apr 2026 20:12:34 WIB
|
|
30
|
+
// update 89 at Rab 08 Apr 2026 21:39:02 WIB
|
|
31
|
+
// update 106 at Rab 08 Apr 2026 23:43:50 WIB
|
|
32
|
+
// update 117 at Kam 09 Apr 2026 01:05:41 WIB
|
|
33
|
+
// update 119 at Kam 09 Apr 2026 01:19:15 WIB
|
|
34
|
+
// update 17 at Kam 09 Apr 2026 10:47:24 WIB
|
|
35
|
+
// update 27 at Kam 09 Apr 2026 12:06:59 WIB
|
|
36
|
+
// update 2 at Jum 10 Apr 2026 11:25:42 WIB
|
|
37
|
+
// update 11 at Jum 10 Apr 2026 12:27:38 WIB
|
|
38
|
+
// update 20 at Jum 10 Apr 2026 13:36:30 WIB
|
|
39
|
+
// update 31 at Jum 10 Apr 2026 15:01:05 WIB
|
|
40
|
+
// update 44 at Jum 10 Apr 2026 16:40:09 WIB
|
|
41
|
+
// update 51 at Sab 11 Apr 2026 20:31:35 WIB
|
|
42
|
+
// update 77 at Sab 11 Apr 2026 23:45:24 WIB
|
|
43
|
+
// update 80 at Min 12 Apr 2026 00:08:12 WIB
|
|
44
|
+
// update 86 at Min 12 Apr 2026 00:58:56 WIB
|
|
45
|
+
// update 93 at Min 12 Apr 2026 01:57:39 WIB
|
|
46
|
+
// update 17 at Sen 13 Apr 2026 10:41:59 WIB
|
|
47
|
+
// update 22 at Sel 14 Apr 2026 10:38:34 WIB
|
|
48
|
+
// update 19 at Kam 16 Apr 2026 00:53:26 WIB
|
|
49
|
+
// update 79 at Kam 16 Apr 2026 06:53:04 WIB
|
|
50
|
+
// update 115 at Kam 16 Apr 2026 10:34:30 WIB
|
|
51
|
+
// update 60 at Jum 17 Apr 2026 00:25:09 WIB
|
|
52
|
+
// update 26 at Jum 17 Apr 2026 13:57:19 WIB
|
|
53
|
+
// update 13 at Sab 18 Apr 2026 10:55:50 WIB
|
|
54
|
+
// update 17 at Sab 18 Apr 2026 11:24:07 WIB
|
|
55
|
+
// update 25 at Sab 18 Apr 2026 12:13:43 WIB
|
|
56
|
+
// update 30 at Sab 18 Apr 2026 12:49:25 WIB
|
|
57
|
+
// update 38 at Sab 18 Apr 2026 13:38:31 WIB
|
|
58
|
+
// update 180 at Min 19 Apr 2026 05:01:34 WIB
|
|
59
|
+
// update 181 at Min 19 Apr 2026 05:06:43 WIB
|
|
60
|
+
// update 285 at Min 19 Apr 2026 16:06:26 WIB
|
|
61
|
+
// update 1 at Min 19 Apr 2026 16:28:24 WIB
|
|
62
|
+
// update 24 at Min 19 Apr 2026 18:59:44 WIB
|
|
63
|
+
// update 63 at Min 19 Apr 2026 23:28:49 WIB
|
|
64
|
+
// update 71 at Sen 20 Apr 2026 00:16:42 WIB
|
|
65
|
+
// update 75 at Sen 20 Apr 2026 00:43:15 WIB
|
|
66
|
+
// update 90 at Sen 20 Apr 2026 02:23:49 WIB
|
|
67
|
+
// update 92 at Sen 20 Apr 2026 02:37:36 WIB
|
|
68
|
+
// update 13 at Sen 20 Apr 2026 15:58:43 WIB
|
|
69
|
+
// update 19 at Sen 20 Apr 2026 16:41:07 WIB
|
|
70
|
+
// update 29 at Sen 20 Apr 2026 17:43:29 WIB
|
|
71
|
+
// update 145 at Sel 21 Apr 2026 06:12:08 WIB
|
|
72
|
+
// update 175 at Sel 21 Apr 2026 09:25:02 WIB
|
|
73
|
+
// update 1 at Sel 21 Apr 2026 13:36:34 WIB
|
|
74
|
+
// update 24 at Sel 21 Apr 2026 16:03:19 WIB
|
|
75
|
+
// update 44 at Sel 21 Apr 2026 18:11:51 WIB
|
|
76
|
+
// update 53 at Sel 21 Apr 2026 19:07:05 WIB
|
|
77
|
+
// update 71 at Sel 21 Apr 2026 20:55:19 WIB
|
|
78
|
+
// update 101 at Rab 22 Apr 2026 00:18:14 WIB
|
|
79
|
+
// update 123 at Rab 22 Apr 2026 02:51:26 WIB
|
|
80
|
+
// update 20 at Rab 22 Apr 2026 16:47:54 WIB
|
|
81
|
+
// update 40 at Rab 22 Apr 2026 18:58:53 WIB
|
|
82
|
+
// update 77 at Rab 22 Apr 2026 22:56:07 WIB
|
|
83
|
+
// update 27 at Kam 23 Apr 2026 01:56:48 WIB
|
|
84
|
+
// update 20 at Kam 23 Apr 2026 10:15:23 WIB
|
|
85
|
+
// update 22 at Kam 23 Apr 2026 10:24:28 WIB
|
|
86
|
+
// update 105 at Kam 23 Apr 2026 22:06:15 WIB
|
|
87
|
+
// update 112 at Kam 23 Apr 2026 22:41:18 WIB
|
|
88
|
+
// update 116 at Kam 23 Apr 2026 22:57:11 WIB
|
|
89
|
+
// update 172 at Jum 24 Apr 2026 03:31:10 WIB
|
|
90
|
+
// update 188 at Jum 24 Apr 2026 04:54:03 WIB
|
|
91
|
+
// update 210 at Jum 24 Apr 2026 06:50:44 WIB
|
|
92
|
+
// update 6 at Jum 24 Apr 2026 08:45:22 WIB
|
|
93
|
+
// update 24 at Jum 24 Apr 2026 10:15:25 WIB
|
|
94
|
+
// update 22 at Jum 24 Apr 2026 17:25:00 WIB
|
|
95
|
+
// update 29 at Jum 24 Apr 2026 17:57:54 WIB
|
|
96
|
+
// update 52 at Jum 24 Apr 2026 19:48:28 WIB
|
|
97
|
+
// update 67 at Jum 24 Apr 2026 21:23:46 WIB
|
|
98
|
+
// update 133 at Sab 25 Apr 2026 02:51:48 WIB
|
|
99
|
+
// update 12 at Sab 25 Apr 2026 11:35:41 WIB
|
|
100
|
+
// update 37 at Sab 25 Apr 2026 13:44:43 WIB
|
|
101
|
+
// update 43 at Sab 25 Apr 2026 14:12:18 WIB
|
|
102
|
+
// update 63 at Sab 25 Apr 2026 15:54:06 WIB
|
|
103
|
+
// update 94 at Sab 25 Apr 2026 18:38:08 WIB
|
|
104
|
+
// update 101 at Sab 25 Apr 2026 19:15:22 WIB
|
|
105
|
+
// update 176 at Min 26 Apr 2026 01:31:51 WIB
|
|
106
|
+
// update 224 at Min 26 Apr 2026 05:28:48 WIB
|
|
107
|
+
// update 229 at Min 26 Apr 2026 05:53:12 WIB
|
|
108
|
+
// update 255 at Min 26 Apr 2026 07:57:08 WIB
|
|
109
|
+
// update 270 at Min 26 Apr 2026 09:10:13 WIB
|
|
110
|
+
// update 11 at Sen 27 Apr 2026 13:28:43 WIB
|
|
111
|
+
// update 16 at Sen 27 Apr 2026 13:49:55 WIB
|
|
112
|
+
// update 26 at Sen 27 Apr 2026 14:41:14 WIB
|
|
113
|
+
// update 75 at Sen 27 Apr 2026 18:49:42 WIB
|
|
114
|
+
// update 115 at Sen 27 Apr 2026 22:10:46 WIB
|
|
115
|
+
// update 125 at Sen 27 Apr 2026 22:59:18 WIB
|
|
116
|
+
// update 12 at Sel 28 Apr 2026 01:09:43 WIB
|
|
117
|
+
// update 24 at Sel 28 Apr 2026 02:09:58 WIB
|
|
118
|
+
// update 39 at Sel 28 Apr 2026 03:30:36 WIB
|
|
119
|
+
// update 53 at Sel 28 Apr 2026 04:40:59 WIB
|
|
120
|
+
// update 72 at Sel 28 Apr 2026 06:14:25 WIB
|
|
121
|
+
// update 104 at Sel 28 Apr 2026 08:54:45 WIB
|
|
122
|
+
// update 145 at Sel 28 Apr 2026 12:23:20 WIB
|
|
123
|
+
// update 207 at Sel 28 Apr 2026 17:45:20 WIB
|
|
124
|
+
// update 246 at Sel 28 Apr 2026 21:08:51 WIB
|
|
125
|
+
// update 280 at Sel 28 Apr 2026 23:55:57 WIB
|
|
126
|
+
// update 1 at Rab 29 Apr 2026 13:11:50 WIB
|
|
127
|
+
// update 21 at Rab 29 Apr 2026 14:58:11 WIB
|
|
128
|
+
// update 36 at Rab 29 Apr 2026 16:15:25 WIB
|
|
129
|
+
// update 12 at Kam 30 Apr 2026 00:25:07 WIB
|
|
130
|
+
// update 17 at Kam 30 Apr 2026 00:52:06 WIB
|
|
131
|
+
// update 6 at Kam 30 Apr 2026 02:19:08 WIB
|
|
132
|
+
// update 52 at Kam 30 Apr 2026 06:00:14 WIB
|
|
133
|
+
// update 65 at Kam 30 Apr 2026 07:05:18 WIB
|
|
134
|
+
// update 96 at Kam 30 Apr 2026 09:36:27 WIB
|
|
135
|
+
// update 105 at Kam 30 Apr 2026 10:22:06 WIB
|
|
136
|
+
// update 153 at Kam 30 Apr 2026 14:17:34 WIB
|
|
137
|
+
// update 164 at Kam 30 Apr 2026 15:17:14 WIB
|
|
138
|
+
// update 205 at Kam 30 Apr 2026 18:43:36 WIB
|
|
139
|
+
// update 238 at Kam 30 Apr 2026 21:34:15 WIB
|
|
140
|
+
// update 58 at Jum 01 Mei 2026 07:16:25 WIB
|
|
141
|
+
// update 104 at Jum 01 Mei 2026 11:18:43 WIB
|
|
142
|
+
// update 61 at Jum 01 Mei 2026 19:08:34 WIB
|
|
143
|
+
// update 70 at Jum 01 Mei 2026 20:00:04 WIB
|
|
144
|
+
// update 111 at Jum 01 Mei 2026 23:18:20 WIB
|
|
145
|
+
// update 136 at Sab 02 Mei 2026 01:27:30 WIB
|
|
146
|
+
// update 174 at Sab 02 Mei 2026 04:39:50 WIB
|
|
147
|
+
// update 237 at Sab 02 Mei 2026 10:11:18 WIB
|
|
148
|
+
// update 24 at Min 03 Mei 2026 19:09:09 WIB
|
|
149
|
+
// update 31 at Min 03 Mei 2026 19:47:39 WIB
|
|
150
|
+
// update 81 at Sen 04 Mei 2026 00:04:30 WIB
|
|
151
|
+
// update 130 at Sen 04 Mei 2026 04:00:03 WIB
|
|
152
|
+
// update 206 at Sen 04 Mei 2026 10:29:07 WIB
|
|
153
|
+
// update 7 at Sen 04 Mei 2026 11:08:47 WIB
|
package/src/index.css
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
@tailwind base;
|
|
2
|
+
@tailwind components;
|
|
3
|
+
@tailwind utilities;
|
|
4
|
+
|
|
5
|
+
body {
|
|
6
|
+
@apply bg-app-bg text-white antialiased selection:bg-app-accent selection:text-white;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* Custom Scrollbar yang Elegan */
|
|
10
|
+
::-webkit-scrollbar {
|
|
11
|
+
width: 6px;
|
|
12
|
+
}
|
|
13
|
+
::-webkit-scrollbar-track {
|
|
14
|
+
background: transparent;
|
|
15
|
+
}
|
|
16
|
+
::-webkit-scrollbar-thumb {
|
|
17
|
+
@apply bg-app-border rounded-full;
|
|
18
|
+
}
|
|
19
|
+
::-webkit-scrollbar-thumb:hover {
|
|
20
|
+
@apply bg-zinc-600;
|
|
21
|
+
}
|