chore: updates
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m49s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 29s
Deploy to Staging / Verify Staging (pull_request) Successful in 7s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 6s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped

This commit is contained in:
Eric Gullickson
2026-01-17 22:27:17 -06:00
parent 574acf3e87
commit 444abf2255
9 changed files with 1796 additions and 33 deletions

File diff suppressed because one or more lines are too long

View File

@@ -55,6 +55,7 @@
"tailwindcss": "^3.4.17", "tailwindcss": "^3.4.17",
"terser": "^5.24.0", "terser": "^5.24.0",
"ts-jest": "^29.1.1", "ts-jest": "^29.1.1",
"ts-node": "^10.9.2",
"typescript": "^5.7.2", "typescript": "^5.7.2",
"typescript-eslint": "^8.18.1", "typescript-eslint": "^8.18.1",
"vite": "^6.0.0" "vite": "^6.0.0"
@@ -553,6 +554,30 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "0.3.9"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
"node_modules/@emotion/babel-plugin": { "node_modules/@emotion/babel-plugin": {
"version": "11.13.5", "version": "11.13.5",
"license": "MIT", "license": "MIT",
@@ -2752,6 +2777,34 @@
"node": ">= 10" "node": ">= 10"
} }
}, },
"node_modules/@tsconfig/node10": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz",
"integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
"dev": true,
"license": "MIT"
},
"node_modules/@tsconfig/node14": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
"dev": true,
"license": "MIT"
},
"node_modules/@tsconfig/node16": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/aria-query": { "node_modules/@types/aria-query": {
"version": "5.0.4", "version": "5.0.4",
"dev": true, "dev": true,
@@ -3926,6 +3979,13 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0" "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
} }
}, },
"node_modules/create-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
"dev": true,
"license": "MIT"
},
"node_modules/cross-spawn": { "node_modules/cross-spawn": {
"version": "7.0.6", "version": "7.0.6",
"dev": true, "dev": true,
@@ -4091,6 +4151,16 @@
"dev": true, "dev": true,
"license": "Apache-2.0" "license": "Apache-2.0"
}, },
"node_modules/diff": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
},
"node_modules/diff-sequences": { "node_modules/diff-sequences": {
"version": "29.6.3", "version": "29.6.3",
"dev": true, "dev": true,
@@ -8117,6 +8187,58 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/ts-node": {
"version": "10.9.2",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
"@tsconfig/node12": "^1.0.7",
"@tsconfig/node14": "^1.0.0",
"@tsconfig/node16": "^1.0.2",
"acorn": "^8.4.1",
"acorn-walk": "^8.1.1",
"arg": "^4.1.0",
"create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"v8-compile-cache-lib": "^3.0.1",
"yn": "3.1.1"
},
"bin": {
"ts-node": "dist/bin.js",
"ts-node-cwd": "dist/bin-cwd.js",
"ts-node-esm": "dist/bin-esm.js",
"ts-node-script": "dist/bin-script.js",
"ts-node-transpile-only": "dist/bin-transpile.js",
"ts-script": "dist/bin-script-deprecated.js"
},
"peerDependencies": {
"@swc/core": ">=1.2.50",
"@swc/wasm": ">=1.2.50",
"@types/node": "*",
"typescript": ">=2.7"
},
"peerDependenciesMeta": {
"@swc/core": {
"optional": true
},
"@swc/wasm": {
"optional": true
}
}
},
"node_modules/ts-node/node_modules/arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
"dev": true,
"license": "MIT"
},
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.8.1", "version": "2.8.1",
"license": "0BSD" "license": "0BSD"
@@ -8272,6 +8394,13 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/v8-compile-cache-lib": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
"dev": true,
"license": "MIT"
},
"node_modules/v8-to-istanbul": { "node_modules/v8-to-istanbul": {
"version": "9.3.0", "version": "9.3.0",
"dev": true, "dev": true,
@@ -8604,6 +8733,16 @@
"node": ">=12" "node": ">=12"
} }
}, },
"node_modules/yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/yocto-queue": { "node_modules/yocto-queue": {
"version": "0.1.0", "version": "0.1.0",
"dev": true, "dev": true,

View File

@@ -12,55 +12,56 @@
"type-check": "tsc --noEmit" "type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router-dom": "^6.28.1",
"@auth0/auth0-react": "^2.2.3", "@auth0/auth0-react": "^2.2.3",
"axios": "^1.7.9", "@emotion/cache": "^11.14.0",
"zustand": "^5.0.0",
"@tanstack/react-query": "^5.84.1",
"react-hook-form": "^7.54.2",
"@hookform/resolvers": "^3.9.1",
"zod": "^3.24.1",
"dayjs": "^1.11.13",
"clsx": "^2.0.0",
"react-hot-toast": "^2.4.1",
"react-slick": "^0.30.2",
"slick-carousel": "^1.8.1",
"framer-motion": "^12.0.0",
"@mui/material": "^6.3.0",
"@mui/x-date-pickers": "^7.23.0",
"@mui/x-data-grid": "^7.23.0",
"@emotion/react": "^11.14.0", "@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.0", "@emotion/styled": "^11.14.0",
"@emotion/cache": "^11.14.0", "@hookform/resolvers": "^3.9.1",
"@mui/icons-material": "^6.3.0" "@mui/icons-material": "^6.3.0",
"@mui/material": "^6.3.0",
"@mui/x-data-grid": "^7.23.0",
"@mui/x-date-pickers": "^7.23.0",
"@tanstack/react-query": "^5.84.1",
"axios": "^1.7.9",
"clsx": "^2.0.0",
"dayjs": "^1.11.13",
"framer-motion": "^12.0.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-hook-form": "^7.54.2",
"react-hot-toast": "^2.4.1",
"react-router-dom": "^6.28.1",
"react-slick": "^0.30.2",
"slick-carousel": "^1.8.1",
"zod": "^3.24.1",
"zustand": "^5.0.0"
}, },
"devDependencies": { "devDependencies": {
"@emotion/babel-plugin": "^11.11.0",
"@eslint/js": "^9.17.0",
"@testing-library/jest-dom": "^6.1.5",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.5.1",
"@types/jest": "^29.5.10",
"@types/react": "^19.0.2", "@types/react": "^19.0.2",
"@types/react-dom": "^19.0.2", "@types/react-dom": "^19.0.2",
"@types/react-slick": "^0.23.13", "@types/react-slick": "^0.23.13",
"typescript-eslint": "^8.18.1",
"@vitejs/plugin-react": "^5.1.2", "@vitejs/plugin-react": "^5.1.2",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"eslint": "^9.17.0", "eslint": "^9.17.0",
"@eslint/js": "^9.17.0",
"globals": "^16.5.0",
"eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.16", "eslint-plugin-react-refresh": "^0.4.16",
"globals": "^16.5.0",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"patch-package": "^8.0.1",
"postcss": "^8.4.49", "postcss": "^8.4.49",
"tailwindcss": "^3.4.17", "tailwindcss": "^3.4.17",
"terser": "^5.24.0", "terser": "^5.24.0",
"@emotion/babel-plugin": "^11.11.0",
"typescript": "^5.7.2",
"vite": "^6.0.0",
"jest": "^29.7.0",
"@types/jest": "^29.5.10",
"ts-jest": "^29.1.1", "ts-jest": "^29.1.1",
"jest-environment-jsdom": "^29.7.0", "ts-node": "^10.9.2",
"@testing-library/react": "^16.0.0", "typescript": "^5.7.2",
"@testing-library/jest-dom": "^6.1.5", "typescript-eslint": "^8.18.1",
"@testing-library/user-event": "^14.5.1", "vite": "^6.0.0"
"patch-package": "^8.0.1"
} }
} }

View File

@@ -0,0 +1,146 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`AdminSectionHeader should format large numbers with locale 1`] = `
<div>
<div
class="MuiBox-root css-1yjvs5a"
>
<h1
class="MuiTypography-root MuiTypography-h4 css-1w5hg5f-MuiTypography-root"
>
Station Management
</h1>
<div
class="MuiGrid-root MuiGrid-container MuiGrid-spacing-xs-2 css-11nsb57-MuiGrid-root"
>
<div
class="MuiGrid-root MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-md-3 css-10voxkt-MuiGrid-root"
>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-10z8onm-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<p
class="MuiTypography-root MuiTypography-body2 css-kj4ytl-MuiTypography-root"
>
Total Stations
</p>
<div
class="MuiTypography-root MuiTypography-h5 css-kwxs7k-MuiTypography-root"
>
10,000
</div>
</div>
</div>
</div>
</div>
</div>
</div>
`;
exports[`AdminSectionHeader should render with empty stats 1`] = `
<div>
<div
class="MuiBox-root css-1yjvs5a"
>
<h1
class="MuiTypography-root MuiTypography-h4 css-1w5hg5f-MuiTypography-root"
>
Admin Users
</h1>
<div
class="MuiGrid-root MuiGrid-container MuiGrid-spacing-xs-2 css-11nsb57-MuiGrid-root"
/>
</div>
</div>
`;
exports[`AdminSectionHeader should render with title and stats 1`] = `
<div>
<div
class="MuiBox-root css-1yjvs5a"
>
<h1
class="MuiTypography-root MuiTypography-h4 css-1w5hg5f-MuiTypography-root"
>
Vehicle Catalog
</h1>
<div
class="MuiGrid-root MuiGrid-container MuiGrid-spacing-xs-2 css-11nsb57-MuiGrid-root"
>
<div
class="MuiGrid-root MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-md-3 css-10voxkt-MuiGrid-root"
>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-10z8onm-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<p
class="MuiTypography-root MuiTypography-body2 css-kj4ytl-MuiTypography-root"
>
Makes
</p>
<div
class="MuiTypography-root MuiTypography-h5 css-kwxs7k-MuiTypography-root"
>
100
</div>
</div>
</div>
</div>
<div
class="MuiGrid-root MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-md-3 css-10voxkt-MuiGrid-root"
>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-10z8onm-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<p
class="MuiTypography-root MuiTypography-body2 css-kj4ytl-MuiTypography-root"
>
Models
</p>
<div
class="MuiTypography-root MuiTypography-h5 css-kwxs7k-MuiTypography-root"
>
500
</div>
</div>
</div>
</div>
<div
class="MuiGrid-root MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-md-3 css-10voxkt-MuiGrid-root"
>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-10z8onm-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<p
class="MuiTypography-root MuiTypography-body2 css-kj4ytl-MuiTypography-root"
>
Years
</p>
<div
class="MuiTypography-root MuiTypography-h5 css-kwxs7k-MuiTypography-root"
>
20
</div>
</div>
</div>
</div>
</div>
</div>
</div>
`;

View File

@@ -0,0 +1,516 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`AdminSkeleton SkeletonCard should render default number of cards 1`] = `
<div>
<div
class="MuiBox-root css-0"
>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-1ypifsw-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<div
class="MuiBox-root css-gdel2o"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 70%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 50%; height: 20px;"
/>
</div>
</div>
<div
class="MuiBox-root css-1i27l4i"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
</div>
</div>
</div>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-1ypifsw-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<div
class="MuiBox-root css-gdel2o"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 70%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 50%; height: 20px;"
/>
</div>
</div>
<div
class="MuiBox-root css-1i27l4i"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
</div>
</div>
</div>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-1ypifsw-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<div
class="MuiBox-root css-gdel2o"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 70%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 50%; height: 20px;"
/>
</div>
</div>
<div
class="MuiBox-root css-1i27l4i"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
</div>
</div>
</div>
</div>
</div>
`;
exports[`AdminSkeleton SkeletonCard should render specified number of cards 1`] = `
<div>
<div
class="MuiBox-root css-0"
>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-1ypifsw-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<div
class="MuiBox-root css-gdel2o"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 70%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 50%; height: 20px;"
/>
</div>
</div>
<div
class="MuiBox-root css-1i27l4i"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
</div>
</div>
</div>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-1ypifsw-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<div
class="MuiBox-root css-gdel2o"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 70%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 50%; height: 20px;"
/>
</div>
</div>
<div
class="MuiBox-root css-1i27l4i"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
</div>
</div>
</div>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-1ypifsw-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<div
class="MuiBox-root css-gdel2o"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 70%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 50%; height: 20px;"
/>
</div>
</div>
<div
class="MuiBox-root css-1i27l4i"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
</div>
</div>
</div>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-1ypifsw-MuiPaper-root-MuiCard-root"
style="--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);"
>
<div
class="MuiCardContent-root css-1lt5qva-MuiCardContent-root"
>
<div
class="MuiBox-root css-gdel2o"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 70%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 50%; height: 20px;"
/>
</div>
</div>
<div
class="MuiBox-root css-1i27l4i"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 36px;"
/>
</div>
</div>
</div>
</div>
</div>
`;
exports[`AdminSkeleton SkeletonRow should render default number of rows 1`] = `
<div>
<div
class="MuiBox-root css-19midj6"
>
<div
class="MuiBox-root css-6msto9"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 60%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 40%; height: 20px;"
/>
</div>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 32px;"
/>
</div>
<div
class="MuiBox-root css-6msto9"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 60%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 40%; height: 20px;"
/>
</div>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 32px;"
/>
</div>
<div
class="MuiBox-root css-6msto9"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 60%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 40%; height: 20px;"
/>
</div>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 32px;"
/>
</div>
</div>
</div>
`;
exports[`AdminSkeleton SkeletonRow should render specified number of rows 1`] = `
<div>
<div
class="MuiBox-root css-19midj6"
>
<div
class="MuiBox-root css-6msto9"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 60%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 40%; height: 20px;"
/>
</div>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 32px;"
/>
</div>
<div
class="MuiBox-root css-6msto9"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 60%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 40%; height: 20px;"
/>
</div>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 32px;"
/>
</div>
<div
class="MuiBox-root css-6msto9"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 60%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 40%; height: 20px;"
/>
</div>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 32px;"
/>
</div>
<div
class="MuiBox-root css-6msto9"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 60%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 40%; height: 20px;"
/>
</div>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 32px;"
/>
</div>
<div
class="MuiBox-root css-6msto9"
>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 40px; height: 40px;"
/>
<div
class="MuiBox-root css-1rr4qq7"
>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 60%; height: 24px;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root"
style="width: 40%; height: 20px;"
/>
</div>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root"
style="width: 80px; height: 32px;"
/>
</div>
</div>
</div>
`;

View File

@@ -0,0 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`BulkActionDialog should render dialog when open 1`] = `
<div
aria-hidden="true"
/>
`;

View File

@@ -0,0 +1,48 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`EmptyState should render with icon 1`] = `
<div>
<div
class="MuiBox-root css-fewm7m"
>
<div
class="MuiBox-root css-z354a3"
>
<div
data-testid="test-icon"
>
Icon
</div>
</div>
<h2
class="MuiTypography-root MuiTypography-h6 css-z9yyq-MuiTypography-root"
>
Empty
</h2>
<p
class="MuiTypography-root MuiTypography-body2 css-kvgvx0-MuiTypography-root"
>
No items found
</p>
</div>
</div>
`;
exports[`EmptyState should render with title and description 1`] = `
<div>
<div
class="MuiBox-root css-fewm7m"
>
<h2
class="MuiTypography-root MuiTypography-h6 css-z9yyq-MuiTypography-root"
>
No Data
</h2>
<p
class="MuiTypography-root MuiTypography-body2 css-kvgvx0-MuiTypography-root"
>
Start by adding your first item
</p>
</div>
</div>
`;

View File

@@ -0,0 +1,45 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ErrorState should render error message 1`] = `
<div>
<div
class="MuiBox-root css-rw8vhf"
>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation0 MuiAlert-root MuiAlert-colorError MuiAlert-standardError MuiAlert-standard css-1c9x2ae-MuiPaper-root-MuiAlert-root"
role="alert"
style="--Paper-shadow: none;"
>
<div
class="MuiAlert-icon css-vab54s-MuiAlert-icon"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeInherit css-1ckov0h-MuiSvgIcon-root"
data-testid="ErrorOutlineIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"
/>
</svg>
</div>
<div
class="MuiAlert-message css-zioonp-MuiAlert-message"
>
<p
class="MuiTypography-root MuiTypography-body1 css-1s58en-MuiTypography-root"
>
An error occurred
</p>
<p
class="MuiTypography-root MuiTypography-body2 css-7ctihp-MuiTypography-root"
>
Failed to load data
</p>
</div>
</div>
</div>
</div>
`;

View File

@@ -0,0 +1,59 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`SelectionToolbar should render custom action buttons 1`] = `
<div>
<div
class="MuiToolbar-root MuiToolbar-gutters MuiToolbar-regular css-13zxrvn-MuiToolbar-root"
>
<div
class="MuiTypography-root MuiTypography-subtitle1 css-1yjrzp0-MuiTypography-root"
>
Selected:
3
</div>
<div
class="MuiBox-root css-1x99n9k"
>
<button
class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary css-1bumsy-MuiButtonBase-root-MuiButton-root"
tabindex="0"
type="button"
>
Clear
</button>
<button>
Delete
</button>
<button>
Export
</button>
</div>
</div>
</div>
`;
exports[`SelectionToolbar should render when items are selected 1`] = `
<div>
<div
class="MuiToolbar-root MuiToolbar-gutters MuiToolbar-regular css-13zxrvn-MuiToolbar-root"
>
<div
class="MuiTypography-root MuiTypography-subtitle1 css-1yjrzp0-MuiTypography-root"
>
Selected:
3
</div>
<div
class="MuiBox-root css-1x99n9k"
>
<button
class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary css-1bumsy-MuiButtonBase-root-MuiButton-root"
tabindex="0"
type="button"
>
Clear
</button>
</div>
</div>
</div>
`;