{"_id":"@azelenets/aegis-design-system","_rev":"6-1bced3e10d27d1ba34f85056f6aebd7c","name":"@azelenets/aegis-design-system","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@azelenets/aegis-design-system","version":"0.1.0","author":{"name":"Andrii Zelenets"},"license":"MIT","_id":"@azelenets/aegis-design-system@0.1.0","maintainers":[{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"}],"homepage":"https://github.com/azelenets/AEGIS-design-system#readme","bugs":{"url":"https://github.com/azelenets/AEGIS-design-system/issues"},"dist":{"shasum":"dd17f8582cee17477d5ea881fb2d9a29444a6089","tarball":"https://registry.npmjs.org/@azelenets/aegis-design-system/-/aegis-design-system-0.1.0.tgz","fileCount":6,"integrity":"sha512-rxLIOA5XCcQZr2VsbxaLVlW/RelwYwDoQoK4l+rqs8gb8/RoPG6HVvlN6Q7OOIKMEzrMKkIWoUz1wTKhpNjoFQ==","signatures":[{"sig":"MEQCIBSKSC7WaYWsRXnSBmj7AXSdejjlhalY8iAJCWU9D0P9AiBsosN7u6V1cmbIqlPAkXkxvf0AkUNd7oeeQf3IvnCc1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524137},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles.css":"./dist/index.css","./globals.css":"./dist/index.css"},"gitHead":"48e74c5f03c137a859aefb13992b3769ab5bb2fc","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"vite build","lint:fix":"eslint . --fix","storybook":"storybook dev -p 6007","typecheck":"tsc --noEmit","visual-test":"chromatic","prepublishOnly":"npm run build","test-storybook":"vitest run --project storybook","build-storybook":"storybook build","test-storybook:watch":"vitest --project storybook","test-storybook:coverage":"vitest run --project storybook --coverage"},"_npmUser":{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"},"repository":{"url":"git+https://github.com/azelenets/AEGIS-design-system.git","type":"git"},"_npmVersion":"11.11.0","description":"![AEGIS Design System banner](./docs/banner.svg)","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.2.0","dependencies":{"leaflet":"^1.9.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.2.0","eslint":"^9.39.4","vitest":"^4.0.18","globals":"^17.4.0","chromatic":"^15.2.0","storybook":"^10.2.17","@eslint/js":"^9.39.4","playwright":"^1.58.2","typescript":"~5.8.2","@types/node":"^25.4.0","@types/react":"^19.2.10","@types/leaflet":"^1.9.21","@vitest/browser":"^4.0.18","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.0","@storybook/addon-a11y":"^10.2.17","@storybook/addon-docs":"^10.2.17","@storybook/react-vite":"^10.2.17","eslint-plugin-jsx-a11y":"^6.10.2","@storybook/addon-vitest":"^10.2.17","@chromatic-com/storybook":"^5.0.1","eslint-plugin-react-hooks":"^7.0.1","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aegis-design-system_0.1.0_1773173461483_0.2756335468594937","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@azelenets/aegis-design-system","version":"0.1.1","author":{"name":"Andrii Zelenets"},"license":"MIT","_id":"@azelenets/aegis-design-system@0.1.1","maintainers":[{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"}],"homepage":"https://github.com/azelenets/AEGIS-design-system#readme","bugs":{"url":"https://github.com/azelenets/AEGIS-design-system/issues"},"dist":{"shasum":"25a02da1f6296a8a9cdb4885fe378f8c0aec5522","tarball":"https://registry.npmjs.org/@azelenets/aegis-design-system/-/aegis-design-system-0.1.1.tgz","fileCount":6,"integrity":"sha512-gmVWIwPQqHCkDe7FeBz6ZAOXld2MT3fYQDpyUpNUwGSNqswY2nCL78eto4tzzT6S8dtgucap0lkvLFkp6pSNSA==","signatures":[{"sig":"MEQCIHXdo3nHvb8O+essm6pASQc+g3B6mJRaF5iyjY+WzADXAiAy+4rb0k2932Ron1NJS4dWyJ4NI+FVAQW1/GsUg5zFCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524204},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles.css":"./dist/index.css","./globals.css":"./dist/index.css"},"gitHead":"6f22d4a8627aa5ad80b6cde94d0ef3857f79d5f0","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"vite build","lint:fix":"eslint . --fix","storybook":"storybook dev -p 6007","typecheck":"tsc --noEmit","publish:npm":"npm publish --registry https://registry.npmjs.org/","visual-test":"chromatic","prepublishOnly":"npm run build","test-storybook":"vitest run --project storybook","build-storybook":"storybook build","test-storybook:watch":"vitest --project storybook","test-storybook:coverage":"vitest run --project storybook --coverage"},"_npmUser":{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"},"repository":{"url":"git+https://github.com/azelenets/AEGIS-design-system.git","type":"git"},"_npmVersion":"11.11.0","description":"![AEGIS Design System banner](./docs/banner.svg)","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.2.0","dependencies":{"leaflet":"^1.9.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.2.0","eslint":"^9.39.4","vitest":"^4.0.18","globals":"^17.4.0","chromatic":"^15.2.0","storybook":"^10.2.17","@eslint/js":"^9.39.4","playwright":"^1.58.2","typescript":"~5.8.2","@types/node":"^25.4.0","@types/react":"^19.2.10","@types/leaflet":"^1.9.21","@vitest/browser":"^4.0.18","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.0","@storybook/addon-a11y":"^10.2.17","@storybook/addon-docs":"^10.2.17","@storybook/react-vite":"^10.2.17","eslint-plugin-jsx-a11y":"^6.10.2","@storybook/addon-vitest":"^10.2.17","@chromatic-com/storybook":"^5.0.1","eslint-plugin-react-hooks":"^7.0.1","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aegis-design-system_0.1.1_1773209046988_0.9744876261592408","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@azelenets/aegis-design-system","version":"0.1.2","author":{"name":"Andrii Zelenets"},"license":"MIT","_id":"@azelenets/aegis-design-system@0.1.2","maintainers":[{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"}],"homepage":"https://github.com/azelenets/AEGIS-design-system#readme","bugs":{"url":"https://github.com/azelenets/AEGIS-design-system/issues"},"dist":{"shasum":"da847da9a47f7bbf16d1516f8478d52bbc9e79ae","tarball":"https://registry.npmjs.org/@azelenets/aegis-design-system/-/aegis-design-system-0.1.2.tgz","fileCount":6,"integrity":"sha512-qLBWezgTy8JXJb6zDkWhjIV0gRTn7APUH7fX8C/hWdihIIVvHBTZuRs/X/0rWtdDZRtBJitIL6tZ4doRbhpRWA==","signatures":[{"sig":"MEYCIQDdLlBB5bRgaA42Vpxd3kEHO6vv2HzRrt1zm2LNoFYPoAIhANhmKCfpoX93Jkz2F155VH1GwIyWmD1EJJZS6gETizoV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":580182},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles.css":"./dist/index.css","./globals.css":"./dist/index.css"},"gitHead":"88f7c1014a073f401568ae284d0f795983fe7264","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"vite build","lint:fix":"eslint . --fix","storybook":"storybook dev -p 6007","typecheck":"tsc --noEmit","publish:npm":"npm publish --registry https://registry.npmjs.org/","visual-test":"chromatic","prepublishOnly":"npm run build","test-storybook":"vitest run --project storybook","build-storybook":"storybook build","test-storybook:watch":"vitest --project storybook","test-storybook:coverage":"vitest run --project storybook --coverage"},"_npmUser":{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"},"repository":{"url":"git+https://github.com/azelenets/AEGIS-design-system.git","type":"git"},"_npmVersion":"11.11.0","description":"![AEGIS Design System banner](./docs/banner.svg)","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.2.0","dependencies":{"leaflet":"^1.9.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.2.0","eslint":"^9.39.4","vitest":"^4.0.18","globals":"^17.4.0","postcss":"^8.5.8","chromatic":"^15.2.0","storybook":"^10.2.17","@eslint/js":"^9.39.4","playwright":"^1.58.2","typescript":"~5.8.2","@types/node":"^25.4.0","tailwindcss":"^3.4.19","@types/react":"^19.2.10","autoprefixer":"^10.4.27","@types/leaflet":"^1.9.21","@vitest/browser":"^4.0.18","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.0","@storybook/addon-a11y":"^10.2.17","@storybook/addon-docs":"^10.2.17","@storybook/react-vite":"^10.2.17","eslint-plugin-jsx-a11y":"^6.10.2","@storybook/addon-vitest":"^10.2.17","@chromatic-com/storybook":"^5.0.1","eslint-plugin-react-hooks":"^7.0.1","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aegis-design-system_0.1.2_1773212776933_0.672370576341202","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@azelenets/aegis-design-system","version":"0.1.3","author":{"name":"Andrii Zelenets"},"license":"MIT","_id":"@azelenets/aegis-design-system@0.1.3","maintainers":[{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"}],"homepage":"https://github.com/azelenets/AEGIS-design-system#readme","bugs":{"url":"https://github.com/azelenets/AEGIS-design-system/issues"},"dist":{"shasum":"b0ca6e3bad4117bbe6f99d44455edfbb8978e29a","tarball":"https://registry.npmjs.org/@azelenets/aegis-design-system/-/aegis-design-system-0.1.3.tgz","fileCount":13,"integrity":"sha512-6m9n0+Lr83KqDJ/brMvThshFl4+11y3mOliW/WgP9qc//6TOn6AVX61ckFUHrdVONmRF0efYT9wWEIwLgFqYvg==","signatures":[{"sig":"MEUCIBuL2LXm4V1iQDRHgajeWJfkoyavW1a9MwOf9cJ6OOVKAiEAkkCGNQM9jFR7NGbPOAcqyd3Mw2fUAPG3aERNx6tz750=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":374422},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./fonts.css":"./dist/fonts.css","./styles.css":"./dist/index.css","./globals.css":"./dist/index.css"},"gitHead":"1def0b92db78856e2df9f5f8e8e761d97c673e66","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"vite build","lint:fix":"eslint . --fix","storybook":"storybook dev -p 6007","typecheck":"tsc --noEmit","publish:npm":"npm publish --registry https://registry.npmjs.org/","visual-test":"chromatic","prepublishOnly":"npm run build","test-storybook":"vitest run --project storybook","build-storybook":"storybook build","test-storybook:watch":"vitest --project storybook","test-storybook:coverage":"vitest run --project storybook --coverage"},"_npmUser":{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"},"repository":{"url":"git+https://github.com/azelenets/AEGIS-design-system.git","type":"git"},"_npmVersion":"11.11.0","description":"![AEGIS Design System banner](./docs/banner.svg)","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.2.0","dependencies":{"leaflet":"^1.9.4","@material-symbols-svg/react":"^0.1.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.2.0","eslint":"^9.39.4","vitest":"^4.0.18","globals":"^17.4.0","postcss":"^8.5.8","chromatic":"^15.2.0","storybook":"^10.2.17","@eslint/js":"^9.39.4","playwright":"^1.58.2","typescript":"~5.8.2","@types/node":"^25.4.0","tailwindcss":"^3.4.19","@types/react":"^19.2.10","autoprefixer":"^10.4.27","@types/leaflet":"^1.9.21","@vitest/browser":"^4.0.18","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.0","@storybook/addon-a11y":"^10.2.17","@storybook/addon-docs":"^10.2.17","@storybook/react-vite":"^10.2.17","eslint-plugin-jsx-a11y":"^6.10.2","@storybook/addon-vitest":"^10.2.17","@chromatic-com/storybook":"^5.0.1","eslint-plugin-react-hooks":"^7.0.1","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aegis-design-system_0.1.3_1773218499748_0.8905202588076","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@azelenets/aegis-design-system","version":"0.1.4","author":{"name":"Andrii Zelenets"},"license":"MIT","_id":"@azelenets/aegis-design-system@0.1.4","maintainers":[{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"}],"homepage":"https://github.com/azelenets/AEGIS-design-system#readme","bugs":{"url":"https://github.com/azelenets/AEGIS-design-system/issues"},"dist":{"shasum":"955a8730d9533784317477a33b184651bf970e74","tarball":"https://registry.npmjs.org/@azelenets/aegis-design-system/-/aegis-design-system-0.1.4.tgz","fileCount":13,"integrity":"sha512-E6xztGsgybfYZ5hRvR3GibjyS4AMKYjbgu9dBAY9K6yVO1r3gUe/lQJO3jTwjNxgyZEHAHcRDXYK8CGNSN79kg==","signatures":[{"sig":"MEQCIFu9709qtDl7krrI/OH84YiEyFHzQPX+vfLSPsP6/4tNAiBx1jtdSWcw/xPaQv8dPg3tR6P7XLjq+seETf1yIVtJNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407624},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./fonts.css":"./dist/fonts.css","./styles.css":"./dist/index.css","./globals.css":"./dist/index.css"},"gitHead":"46a2ae792f831bc4b554fee82bc075fa1a40031c","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"vite build","lint:fix":"eslint . --fix","storybook":"storybook dev -p 6007","typecheck":"tsc --noEmit","publish:npm":"npm publish --registry https://registry.npmjs.org/","visual-test":"chromatic","prepublishOnly":"npm run build","test-storybook":"vitest run --project storybook","build-storybook":"storybook build","test-storybook:watch":"vitest --project storybook","test-storybook:coverage":"vitest run --project storybook --coverage"},"_npmUser":{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"},"repository":{"url":"git+https://github.com/azelenets/AEGIS-design-system.git","type":"git"},"_npmVersion":"11.11.0","description":"![AEGIS Design System banner](./docs/banner.svg)","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.2.0","dependencies":{"leaflet":"^1.9.4","@material-symbols-svg/react":"^0.1.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.2.0","eslint":"^9.39.4","vitest":"^4.0.18","globals":"^17.4.0","postcss":"^8.5.8","chromatic":"^15.2.0","storybook":"^10.2.17","@eslint/js":"^9.39.4","playwright":"^1.58.2","typescript":"~5.8.2","@types/node":"^25.4.0","tailwindcss":"^3.4.19","@types/react":"^19.2.10","autoprefixer":"^10.4.27","@types/leaflet":"^1.9.21","@vitest/browser":"^4.0.18","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.0","@storybook/addon-a11y":"^10.2.17","@storybook/addon-docs":"^10.2.17","@storybook/react-vite":"^10.2.17","eslint-plugin-jsx-a11y":"^6.10.2","@storybook/addon-vitest":"^10.2.17","@chromatic-com/storybook":"^5.0.1","eslint-plugin-react-hooks":"^7.0.1","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aegis-design-system_0.1.4_1773321526816_0.43249491161751763","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@azelenets/aegis-design-system","private":false,"version":"0.1.5","author":{"name":"Andrii Zelenets"},"license":"MIT","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./fonts.css":"./dist/fonts.css","./globals.css":"./dist/index.css","./styles.css":"./dist/index.css"},"sideEffects":["*.css","**/*.css"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/azelenets/AEGIS-design-system.git"},"bugs":{"url":"https://github.com/azelenets/AEGIS-design-system/issues"},"homepage":"https://github.com/azelenets/AEGIS-design-system#readme","scripts":{"dev":"vite","build":"vite build","publish:npm":"npm publish --registry https://registry.npmjs.org/","prepublishOnly":"npm run build","lint":"eslint .","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","storybook":"storybook dev -p 6007","build-storybook":"storybook build","test-storybook":"vitest run --project storybook","test-storybook:watch":"vitest --project storybook","test-storybook:coverage":"vitest run --project storybook --coverage","visual-test":"chromatic"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"dependencies":{"@material-symbols-svg/react":"^0.1.23","leaflet":"^1.9.4"},"devDependencies":{"@chromatic-com/storybook":"^5.0.1","@eslint/js":"^9.39.4","@storybook/addon-a11y":"^10.2.17","@storybook/addon-docs":"^10.2.17","@storybook/addon-vitest":"^10.2.17","@storybook/react-vite":"^10.2.17","@types/leaflet":"^1.9.21","@types/node":"^25.4.0","@types/react":"^19.2.10","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.0","@vitest/browser":"^4.0.18","@vitest/browser-playwright":"^4.0.18","@vitest/coverage-v8":"^4.0.18","autoprefixer":"^10.4.27","chromatic":"^15.2.0","eslint":"^9.39.4","eslint-plugin-jsx-a11y":"^6.10.2","eslint-plugin-react-hooks":"^7.0.1","globals":"^17.4.0","playwright":"^1.58.2","postcss":"^8.5.8","storybook":"^10.2.17","tailwindcss":"^3.4.19","typescript":"~5.8.2","typescript-eslint":"^8.57.0","vite":"^6.2.0","vite-plugin-dts":"^4.5.4","vitest":"^4.0.18"},"gitHead":"c0b29bc45948a32466d5b0d0b9092b9d04216975","_id":"@azelenets/aegis-design-system@0.1.5","description":"![AEGIS Design System banner](./docs/banner.svg)","_nodeVersion":"24.2.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-Or4uNKVX6Kf490T5phnvYVSXrwltrpOJ61uzEK44IZuIB7UypZ9jH16gEXdgx5ohLsA4u3vpOXcvhB+JPMceUA==","shasum":"b9148d1db8c4ea4938adad617ab70fbccf86f917","tarball":"https://registry.npmjs.org/@azelenets/aegis-design-system/-/aegis-design-system-0.1.5.tgz","fileCount":13,"unpackedSize":409729,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBM4hYMJU6Ga7viYUx32VUMyV/0gmCosWSUW6lzjph36AiEAw7bbpdFK2GOPwRJyGdjVuXXENKJOXy2fAZpvzQVMF/A="}]},"_npmUser":{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"},"directories":{},"maintainers":[{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aegis-design-system_0.1.5_1773322292431_0.2766506454378588"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-10T20:11:01.368Z","modified":"2026-03-12T13:31:32.751Z","0.1.0":"2026-03-10T20:11:01.647Z","0.1.1":"2026-03-11T06:04:07.185Z","0.1.2":"2026-03-11T07:06:17.096Z","0.1.3":"2026-03-11T08:41:39.951Z","0.1.4":"2026-03-12T13:18:47.032Z","0.1.5":"2026-03-12T13:31:32.630Z"},"bugs":{"url":"https://github.com/azelenets/AEGIS-design-system/issues"},"author":{"name":"Andrii Zelenets"},"license":"MIT","homepage":"https://github.com/azelenets/AEGIS-design-system#readme","repository":{"type":"git","url":"git+https://github.com/azelenets/AEGIS-design-system.git"},"description":"![AEGIS Design System banner](./docs/banner.svg)","maintainers":[{"name":"andrew.zelenets","email":"andrew.zelenets@gmail.com"}],"readme":"![AEGIS Design System banner](./docs/banner.svg)\n\n# AEGIS Design System\n\nAEGIS is a React 19 design-system workspace for building tactical, terminal-inspired interfaces with a consistent visual language and typed component API. The project combines theme foundations, reusable UI primitives, higher-level layout and workflow components, domain-specific presentation blocks, and a Storybook catalog that acts as both documentation and the main interaction test surface.\n\nThe design direction is deliberate rather than generic: HUD framing, grid overlays, mono-driven data presentation, alert-state color semantics, and operational dashboard patterns are all first-class parts of the system.\n\nAEGIS is published as [`@azelenets/aegis-design-system`](https://www.npmjs.com/package/@azelenets/aegis-design-system) and is intended for product teams building dashboards, control surfaces, admin tools, and operator-facing workflows.\n\n## What This Project Includes\n\n- Typed React components exported from a single package entrypoint\n- Design tokens and CSS variable contracts for dark/light theming\n- Tailwind-powered global stylesheet bundled with the package\n- Optional bundled local font assets for AEGIS display and mono typography\n- SVG-based Material Symbols integration without font or CDN dependencies\n- Storybook stories for components, foundations, and page-level assemblies\n- Browser-based Storybook interaction tests with Vitest and Playwright\n- Accessibility checks through Storybook a11y tooling\n- ESLint and TypeScript static checks\n- A small Vite app for local manual inspection outside Storybook\n\n## Stack\n\n- React 19\n- TypeScript 5\n- Vite 6\n- Storybook 10 (`@storybook/react-vite`)\n- Vitest browser mode\n- Playwright\n- ESLint 9 flat config\n- Chromatic\n\n## Design Philosophy\n\nAEGIS is built for tactical product surfaces rather than consumer UI defaults.\n\n- Typography emphasizes `Orbitron`, `JetBrains Mono`, and `Space Grotesk`\n- Color semantics are operational: `primary`, `hazard`, `alert`, `success`, `ghost`\n- Components are designed to look coherent in dashboards, control panels, operator views, and intelligence surfaces\n- Foundation styles include HUD borders, scanlines, grid textures, terminal panels, and system status treatments\n\n## Package Surface\n\nPrimary exports live in [`src/index.ts`](./src/index.ts).\n\nThe library is organized into:\n\n- Foundations for theme tokens, CSS variable contracts, and theme state\n- Atoms for inputs, indicators, and low-level controls\n- Molecules for grouped interaction patterns and composite UI blocks\n- Organisms for app-shell, workflow, and data-heavy surfaces\n- Layout primitives for page composition\n- Domain components for tactical dashboard patterns\n\n## Installation\n\n```bash\nnpm install @azelenets/aegis-design-system\n```\n\nPeer dependencies:\n\n- `react`\n- `react-dom`\n\nThe package ships its compiled core stylesheet. Import the package entry once and the component styles are included automatically:\n\n```tsx\nimport '@azelenets/aegis-design-system';\n```\n\nTo load the bundled AEGIS fonts as well, import the optional font stylesheet:\n\n```tsx\nimport '@azelenets/aegis-design-system/fonts.css';\n```\n\nThat keeps the default bundle smaller for consumers who do not need the exact design-system typography.\n\nIf you prefer an explicit style import, use either of these exports:\n\n```tsx\nimport '@azelenets/aegis-design-system/styles.css';\n// or\nimport '@azelenets/aegis-design-system/globals.css';\n```\n\nMinimal usage:\n\n```tsx\nimport { Button, ThemeProvider } from '@azelenets/aegis-design-system';\n\nexport function App() {\n  return (\n    <ThemeProvider>\n      <Button variant=\"primary\">Launch</Button>\n    </ThemeProvider>\n  );\n}\n```\n\n## Usage Examples\n\nApp setup with optional fonts:\n\n```tsx\nimport '@azelenets/aegis-design-system/fonts.css';\nimport {\n  ThemeProvider,\n  ThemeToggle,\n  Button,\n  Card,\n  CardBody,\n  CardHeader,\n} from '@azelenets/aegis-design-system';\n\nexport function App() {\n  return (\n    <ThemeProvider defaultTheme=\"dark\">\n      <main className=\"min-h-screen bg-bg-dark p-6\">\n        <div className=\"mb-4 flex justify-end\">\n          <ThemeToggle />\n        </div>\n        <Card variant=\"default\">\n          <CardHeader title=\"Mission Control\" eyebrow=\"AEGIS\" />\n          <CardBody>\n            <Button variant=\"primary\">Launch Sequence</Button>\n          </CardBody>\n        </Card>\n      </main>\n    </ThemeProvider>\n  );\n}\n```\n\nExplicit stylesheet imports:\n\n```tsx\nimport '@azelenets/aegis-design-system/styles.css';\nimport '@azelenets/aegis-design-system/fonts.css';\n```\n\nTyped icon usage:\n\n```tsx\nimport { MaterialIcon, Tag } from '@azelenets/aegis-design-system';\n\nexport function ThreatStatus() {\n  return (\n    <div className=\"flex items-center gap-2\">\n      <MaterialIcon name=\"warning\" className=\"text-alert text-[18px]\" />\n      <Tag label=\"Critical\" variant=\"hazard\" />\n    </div>\n  );\n}\n```\n\nData grid usage:\n\n```tsx\nimport { DataGrid, type DataGridColumn } from '@azelenets/aegis-design-system';\n\ntype Operator = {\n  id: string;\n  callSign: string;\n  sector: string;\n};\n\nconst columns: DataGridColumn<Operator>[] = [\n  { key: 'id', header: 'ID', sortable: true },\n  { key: 'callSign', header: 'Call Sign', sortable: true },\n  { key: 'sector', header: 'Sector' },\n];\n\nconst rows: Operator[] = [\n  { id: 'OP-001', callSign: 'GHOST', sector: 'Alpha-7' },\n  { id: 'OP-002', callSign: 'RAVEN', sector: 'Delta-3' },\n];\n\nexport function OperatorsTable() {\n  return (\n    <DataGrid\n      columns={columns}\n      data={rows}\n      keyField=\"id\"\n      searchable\n      caption=\"AEGIS // Operator Registry\"\n    />\n  );\n}\n```\n\nMap usage:\n\n```tsx\nimport { Map, type MapMarker } from '@azelenets/aegis-design-system';\n\nconst markers: MapMarker[] = [\n  { id: 'alpha', lat: 51.5007, lng: -0.1246, title: 'Alpha Node' },\n  { id: 'beta', lat: 51.5081, lng: -0.0759, title: 'Beta Node' },\n];\n\nexport function TacticalMap() {\n  return (\n    <Map\n      ariaLabel=\"AEGIS tactical map\"\n      center={[51.505, -0.09]}\n      zoom={12}\n      markers={markers}\n      fitMarkers\n      height={420}\n    />\n  );\n}\n```\n\n### Foundations\n\n- `aegisTailwindTheme`\n- `aegisTokens`\n- `aegisCSSVars`\n- `ThemeProvider`\n- `useTheme`\n\nCSS entrypoint:\n\n- `@azelenets/aegis-design-system/styles.css`\n- `@azelenets/aegis-design-system/globals.css`\n- `@azelenets/aegis-design-system/fonts.css`\n\n### Atoms\n\n- `Avatar`\n- `Badge`\n- `Button`\n- `Checkbox`\n- `Divider`\n- `Input`\n- `Kbd`\n- `MaterialIcon`\n- `RadioGroup`, `RadioOption`\n- `Rating`\n- `SearchInput`\n- `Select`\n- `Skeleton`\n- `Slider`\n- `Spinner`\n- `Tag`\n- `Textarea`\n- `ThemeToggle`\n- `Toggle`\n- `Tooltip`\n\n### Molecules\n\n- `Accordion`\n- `Alert`\n- `AudioPlayer`\n- `AvatarGroup`\n- `Breadcrumbs`\n- `Card`, `CardHeader`, `CardBody`, `CardFooter`\n- `Form`, `FormSection`, `FormRow`, `FormActions`\n- `Pagination`\n- `ProgressBar`\n- `ProgressCircle`\n- `VideoPlayer`\n\n### Organisms\n\n- `Carousel`, `CarouselSlide`\n- `DataGrid`\n- `Dropdown`, `DropdownItem`, `DropdownSeparator`, `DropdownGroup`\n- `Footer`\n- `Map`\n- `Modal`, `ModalHeader`, `ModalBody`, `ModalFooter`\n- `Navbar`\n- `Sidebar`\n- `Stepper`\n- `Table`\n- `Tabs`, `TabList`, `TabTrigger`, `TabPanel`\n- `ToastProvider`, `Toaster`, `useToast`\n- `Wizard`\n\n### Layout\n\n- `Container`\n- `Grid`, `GridItem`\n- `Overlay`\n- `PageHeader`\n- `Stack`, `HStack`, `VStack`, `ZStack`, `Spacer`, `Center`\n\n### Domain Components\n\n- Arsenal: `FilterButton`, `SpecCard`, `StatusItem`\n- Credentials: `EntryCard`, `TagGroup`, `TimelineEntry`\n- Dashboard: `StatBlock`, `StatCard`\n- Laboratory: `LabCard`\n- Mission Log: `MissionItem`\n\n## Foundations\n\nTheme tokens and CSS variables are defined in [`src/foundations/aegisTheme.ts`](./src/foundations/aegisTheme.ts). Global styles live in [`src/foundations/globals.css`](./src/foundations/globals.css).\n\nKey foundation capabilities:\n\n- Dark and light themes\n- Semantic color tokens for state and status\n- Shared panel, border, text, and background contracts\n- Reusable visual utilities for HUD and terminal presentation\n- App-level theme switching through `ThemeProvider`\n\nExample:\n\n```tsx\nimport { ThemeProvider, ThemeToggle } from '@azelenets/aegis-design-system';\n\nexport function Shell() {\n  return (\n    <ThemeProvider defaultTheme=\"dark\">\n      <header className=\"flex justify-end p-4\">\n        <ThemeToggle />\n      </header>\n    </ThemeProvider>\n  );\n}\n```\n\n## Tailwind and Styling\n\nAEGIS uses Tailwind in the library build rather than a runtime CDN include.\n\n- Consumers do not need to add a Tailwind CDN script\n- The published package includes compiled CSS in `dist/index.css`\n- The optional `dist/fonts.css` export carries the bundled font-face declarations\n- Utility classes used internally are already compiled into the shipped stylesheet\n- `aegisTailwindTheme` remains available for sharing token values with app-level Tailwind config\n\n## Typography Assets\n\nThe design system ships an optional local font bundle for the families used by the component system:\n\n- `Orbitron`\n- `JetBrains Mono`\n\nThese fonts are loaded through local `@font-face` declarations in [`fonts.css`](./src/foundations/fonts.css). No Google Fonts dependency is required in either the library or Storybook.\n\n`Space Grotesk` is used in the project foundations and demos, but the published optional font bundle is currently focused on the display and mono families that define the AEGIS visual identity.\n\n## Icons\n\nMaterial symbols are rendered through [`MaterialIcon`](./src/components/atoms/MaterialIcon.tsx), backed by `@material-symbols-svg/react`.\n\n- Icons are SVG React components, not font glyphs\n- No Google Fonts or icon CDN dependency is required\n- Icon props across the component API use a typed `MaterialIconName` union\n- Filled variants are supported where the icon set provides them, such as `star` in `Rating`\n\nExample:\n\n```tsx\nimport { MaterialIcon } from '@azelenets/aegis-design-system';\n\nexport function Status() {\n  return <MaterialIcon name=\"warning\" className=\"text-aegis-alert\" />;\n}\n```\n\n## Notifications\n\nToast notifications are exposed through a provider-driven API:\n\n```tsx\nimport {\n  ToastProvider,\n  Toaster,\n  useToast,\n  Button,\n} from '@azelenets/aegis-design-system';\n\nfunction TriggerToast() {\n  const { toast } = useToast();\n\n  return (\n    <Button\n      onClick={() =>\n        toast({\n          title: 'AEGIS',\n          message: 'Threat state updated.',\n          variant: 'warning',\n        })\n      }\n    >\n      Notify\n    </Button>\n  );\n}\n\nexport function App() {\n  return (\n    <ToastProvider>\n      <TriggerToast />\n      <Toaster position=\"bottom-right\" />\n    </ToastProvider>\n  );\n}\n```\n\n## Project Structure\n\n```text\nsrc/\n  components/\n    arsenal/\n    atoms/\n    credentials/\n    dashboard/\n    laboratory/\n    layout/\n    mission-log/\n    molecules/\n    organisms/\n  foundations/\n  pages/\n  App.tsx\n  index.ts\n  main.tsx\n\n.storybook/\n  main.ts\n  preview.ts\n  vitest.setup.ts\n```\n\nStories live beside components as `*.stories.tsx`.\n\n## Local Development\n\nInstall dependencies:\n\n```bash\nnpm install\n```\n\nRun the Vite app:\n\n```bash\nnpm run dev\n```\n\nRun Storybook:\n\n```bash\nnpm run storybook\n```\n\nTypical local URLs:\n\n- Vite app: `http://localhost:3001`\n- Storybook: `http://localhost:6007`\n\n## Scripts\n\n```bash\nnpm run dev\nnpm run build\nnpm run lint\nnpm run lint:fix\nnpm run typecheck\nnpm run storybook\nnpm run build-storybook\nnpm run test-storybook\nnpm run test-storybook:watch\nnpm run test-storybook:coverage\nnpm run visual-test\nnpm run publish:npm\n```\n\nMeaning:\n\n- `build`: production Vite build\n- `lint`: ESLint across the workspace\n- `typecheck`: TypeScript compile-time validation with `tsc --noEmit`\n- `test-storybook`: Storybook interaction suite\n- `test-storybook:coverage`: Storybook interaction suite with V8 coverage output\n- `publish:npm`: publish the package to `npmjs.org`\n\n## Testing and Quality Gates\n\nThis repo uses Storybook as the main component validation surface.\n\n- Stories provide documentation and executable interaction coverage\n- Vitest runs Storybook stories in browser mode\n- Playwright powers the browser environment\n- Coverage is produced via `@vitest/coverage-v8`\n- ESLint enforces code quality\n- TypeScript enforces API and usage correctness\n\nCoverage output is written to [`coverage/storybook`](./coverage/storybook) when the coverage script runs.\n\n## CI\n\nGitHub Actions workflow lives in [`.github/workflows/storybook-tests.yml`](./.github/workflows/storybook-tests.yml).\n\nCurrent CI structure:\n\n- `static-checks` job\n  - `npm ci`\n  - `npm run lint`\n  - `npm run typecheck`\n- `storybook-tests` job\n  - `npm ci`\n  - Playwright Chromium install\n  - `npm run test-storybook:coverage`\n  - coverage artifact upload\n- `chromatic` job\n  - runs on push\n  - waits for both static checks and Storybook tests\n\nStatic checks and Storybook browser tests run in parallel to reduce total CI time.\n\n## Storybook Scope\n\nThe Storybook catalog includes:\n\n- foundation stories for themes, spacing, color, and typography\n- component stories for every exported UI tier\n- domain stories for tactical/dashboard-specific building blocks\n- a page-level `AEGIS Ops Dashboard` composition story\n\nThat makes Storybook the primary place to:\n\n- inspect component behavior\n- validate interaction flows\n- verify visual hierarchy and theme behavior\n- test complex compositions like grids, modals, wizards, tables, maps, and dashboards\n\n## Notable Components\n\nSome higher-value surfaces in this system:\n\n- `DataGrid`: filtering, sorting, pagination, density, selection, expansion, column visibility\n- `Wizard`: controlled/uncontrolled step flows with validation hooks\n- `Map`: Leaflet-backed tactical map surface with themed overlays and markers\n- `Tabs`, `Sidebar`, `Navbar`, `Footer`: application shell composition pieces\n- `Modal`, `Toast`, `Overlay`, `Dropdown`: operational interaction primitives\n- `Carousel`, `Stepper`, `Table`: high-level display and workflow components\n\n## Intended Use\n\nAEGIS is a good fit for:\n\n- internal operations dashboards\n- command-center and monitoring UIs\n- security/admin consoles\n- system control panels\n- intelligence, mission, or infrastructure reporting tools\n\nIt is less about generic marketing-site components and more about structured, status-rich application interfaces.\n\n## Notes\n\n- The Vite app in [`src/App.tsx`](./src/App.tsx) is a local preview shell, not the primary documentation surface.\n- Storybook remains the canonical showcase and test surface for the component library.\n","readmeFilename":"README.md"}