diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html index 7aace75..dfdd04c 100644 --- a/.storybook/preview-head.html +++ b/.storybook/preview-head.html @@ -12,6 +12,9 @@ + + + diff --git a/package-lock.json b/package-lock.json index 01dc14c..375d883 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,10 @@ "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.22.15", "@btmills/prettier": "^2.8.8", + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@mui/icons-material": "^5.14.9", + "@mui/material": "^5.14.10", "@storybook/addon-storysource": "^7.4.4", "@storybook/addons": "^7.4.4", "@storybook/react": "^7.4.4", @@ -2057,12 +2061,12 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", - "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", + "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -2163,6 +2167,152 @@ "node": ">=10.0.0" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dev": true, + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", + "dev": true + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dev": true, + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "dev": true, + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", + "dev": true + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "dev": true + }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", @@ -2172,6 +2322,18 @@ "react": ">=16.8.0" } }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", + "dev": true + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", + "dev": true + }, "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -3514,6 +3676,260 @@ "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", "dev": true }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.16.tgz", + "integrity": "sha512-OYxhC81c9bO0wobGcM8rrY5bRwpCXAI21BL0P2wz/2vTv4ek7ALz9+U5M8wgdmtRNUhmCmAB4L2WRwFRf5Cd8Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.15", + "@floating-ui/react-dom": "^2.0.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.10", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.10.tgz", + "integrity": "sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.9.tgz", + "integrity": "sha512-xTRQbDsogsJo7tY5Og8R9zbuG2q+KIPVIM6JQoKxtJlz9DPOw1u0T2fGrvwD+XAOVifQf6epNMcGCDLfJAz4Nw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.15" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.10.tgz", + "integrity": "sha512-ejFMppnO+lzBXpzju+N4SSz0Mhmi5sihXUGcr5FxpgB6bfUP0Lpe32O0Sw/3s8xlmLEvG1fqVT0rRyAVMlCA+A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/base": "5.0.0-beta.16", + "@mui/core-downloads-tracker": "^5.14.10", + "@mui/system": "^5.14.10", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.10", + "@types/react-transition-group": "^4.4.6", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.10.tgz", + "integrity": "sha512-f67xOj3H06wWDT9xBg7hVL/HSKNF+HG1Kx0Pm23skkbEqD2Ef2Lif64e5nPdmWVv+7cISCYtSuE2aeuzrZe78w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/utils": "^5.14.10", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.10.tgz", + "integrity": "sha512-EJckxmQHrsBvDbFu1trJkvjNw/1R7jfNarnqPSnL+jEQawCkQIqVELWLrlOa611TFtxSJGkdUfCFXeJC203HVg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.15", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.10.tgz", + "integrity": "sha512-QQmtTG/R4gjmLiL5ECQ7kRxLKDm8aKKD7seGZfbINtRVJDyFhKChA1a+K2bfqIAaBo1EMDv+6FWNT1Q5cRKjFA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/private-theming": "^5.14.10", + "@mui/styled-engine": "^5.14.10", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.10", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", + "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "dev": true, + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.14.10", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.10.tgz", + "integrity": "sha512-Rn+vYQX7FxkcW0riDX/clNUwKuOJFH45HiULxwmpgnzQoQr3A0lb+QYwaZ+FAkZrR7qLoHKmLQlcItu6LT0y/Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.15", + "@types/prop-types": "^15.7.5", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@ndelangen/get-tarball": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz", @@ -3620,6 +4036,16 @@ } } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@radix-ui/number": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", @@ -6145,6 +6571,15 @@ "@types/react": "*" } }, + "node_modules/@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/scheduler": { "version": "0.16.3", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", @@ -7171,6 +7606,21 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "node_modules/babel-plugin-named-exports-order": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz", @@ -7950,6 +8400,15 @@ "node": ">=0.10.0" } }, + "node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -8991,6 +9450,16 @@ "utila": "~0.4" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -9902,6 +10371,12 @@ "node": ">=8" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -10642,6 +11117,21 @@ "node": "*" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -16004,6 +16494,22 @@ "react": ">= 0.14.0" } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -16212,9 +16718,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", "dev": true }, "node_modules/regenerator-transform": { @@ -17028,6 +17534,12 @@ "postcss": "^8.2.15" } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "dev": true + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", diff --git a/package.json b/package.json index 440bb1c..807c10d 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,10 @@ "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.22.15", "@btmills/prettier": "^2.8.8", + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@mui/icons-material": "^5.14.9", + "@mui/material": "^5.14.10", "@storybook/addon-storysource": "^7.4.4", "@storybook/addons": "^7.4.4", "@storybook/react": "^7.4.4", diff --git a/public/_includes/header.ejs b/public/_includes/header.ejs index 4e4b4b7..9787e7c 100644 --- a/public/_includes/header.ejs +++ b/public/_includes/header.ejs @@ -1,5 +1,5 @@ - + diff --git a/src/__tests__/TolkienCalendars.js b/src/__tests__/TolkienCalendars.js index 26b9859..d7d3884 100644 --- a/src/__tests__/TolkienCalendars.js +++ b/src/__tests__/TolkienCalendars.js @@ -7,7 +7,10 @@ import React from "react"; import { createRoot } from "react-dom/client"; -import { TolkienCalendarsExample } from "../examples/TolkienCalendars"; +import { + StyledTolkienCalendars, + TolkienCalendarsExample, +} from "../examples/TolkienCalendars"; import { SimulatedTolkienCalendars } from "../examples/simulation/TolkienCalendars"; import { ICalendarGenerator } from "../examples/ICalendarGenerator"; @@ -39,6 +42,13 @@ it("renders TolkienCalendarsExample without crashing", () => { root.unmount(); }); +it("renders StyledTolkienCalendars without crashing", () => { + const div = document.createElement("div"); + const root = createRoot(div); + root.render(); + root.unmount(); +}); + it("renders SimulatedTolkienCalendars without crashing", () => { const div = document.createElement("div"); const root = createRoot(div); diff --git a/src/examples/Common.tsx b/src/examples/Common.tsx index bcbb925..dbd5578 100644 --- a/src/examples/Common.tsx +++ b/src/examples/Common.tsx @@ -4,6 +4,12 @@ */ import React from "react"; +import Button from "@mui/material/Button"; +import MenuItem from "@mui/material/MenuItem"; +import TextField from "@mui/material/TextField"; +import Toolbar from "@mui/material/Toolbar"; +import Typography from "@mui/material/Typography"; + import { fullYearDate } from "../Utils"; import "./examples.css"; @@ -20,26 +26,44 @@ const CaptionCellStyle = { }; const DateNumberInput = (props: any) => ( - + +); + +const OutlinedSelect = (props: any) => ( + ); const DateMonthSelect = (props: any) => ( - + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + ); +const DayInput = (props: any) => { + return ; +}; + +const YearInput = (props: any) => { + return ; +}; + const parseDatePickerChangedDate = ( year: number, month: number, @@ -102,36 +126,27 @@ const DatePicker = (props: DatePickerProps) => { }; return ( - - - - - - - - - - -
Gregorian Date: - - - - - - - -
+ + Gregorian Date: + + + + + ); }; @@ -214,5 +229,8 @@ export { DatePicker, DisplayTableMap, DisplayTableRows, + DayInput, + YearInput, + OutlinedSelect, parseDatePickerChangedDate, }; diff --git a/src/examples/GondorCalendarWithControls.tsx b/src/examples/GondorCalendarWithControls.tsx index be34ad4..b8eef57 100644 --- a/src/examples/GondorCalendarWithControls.tsx +++ b/src/examples/GondorCalendarWithControls.tsx @@ -4,6 +4,8 @@ */ import React from "react"; +import MenuItem from "@mui/material/MenuItem"; + import { RECKONING_KINGS, RECKONING_STEWARDS, @@ -21,10 +23,14 @@ import { LanguageEnum } from "../ui/controls/LanguagePicker"; import { MonthLayoutEnum } from "../ui/controls/MonthViewLayout"; import "../ui/tolkien-calendars.css"; +import { OutlinedSelect } from "./Common"; import LanguagePicker from "./controls/LanguagePicker"; import MonthViewLayout from "./controls/MonthViewLayout"; import MonthViewPicker from "./controls/MonthViewPicker"; import { ShireStartDatePicker } from "./controls/StartDatePicker"; +import { scriptFontFamily } from "./theme"; + +import { Grid } from "@mui/material"; interface GondorCalendarWithControlsProps { className: string; @@ -160,19 +166,52 @@ const GondorCalendarWithControls = (props: GondorCalendarWithControlsProps) => { selectedDate={startDate} onCalendarStartChange={onCalendarStartChange} /> - + + + New Reckoning + + + + + + { onMonthViewChange={onMonthViewChange} /> - - - - - - - + - + + + - - - diff --git a/src/examples/ShireCalendarWithControls.tsx b/src/examples/ShireCalendarWithControls.tsx index c79a1d8..c3e68b5 100644 --- a/src/examples/ShireCalendarWithControls.tsx +++ b/src/examples/ShireCalendarWithControls.tsx @@ -127,6 +127,10 @@ const ShireCalendarWithControls = (props: ShireCalendarWithControlsProps) => { region={region} onRegionChange={onRegionChange} /> + { onMonthViewChange={onMonthViewChange} /> - - - diff --git a/src/examples/TolkienCalendars.tsx b/src/examples/TolkienCalendars.tsx index 8ff1151..7ed2d8d 100644 --- a/src/examples/TolkienCalendars.tsx +++ b/src/examples/TolkienCalendars.tsx @@ -5,6 +5,13 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; +import Checkbox from "@mui/material/Checkbox"; +import FormControlLabel from "@mui/material/FormControlLabel"; +import ListItemText from "@mui/material/ListItemText"; +import MenuItem from "@mui/material/MenuItem"; + +import { ThemeProvider } from "@mui/material/styles"; + import { datesMatch, fullYearDate } from "../Utils"; import { ShireRegionEnum } from "../ShireReckoning"; @@ -19,7 +26,14 @@ import ShireCalendarWithControls from "./ShireCalendarWithControls"; import RivendellCalendarWithControls from "./RivendellCalendarWithControls"; import GondorCalendarWithControls from "./GondorCalendarWithControls"; -import { Badges, CalendarCellStyle, DatePicker } from "./Common"; +import theme from "./theme"; + +import { + Badges, + CalendarCellStyle, + DatePicker, + OutlinedSelect, +} from "./Common"; import "./examples.css"; /** @@ -186,9 +200,10 @@ const TolkienCalendarsExample = (props: TolkienCalendarsExampleProps) => { setDate(currentDate); }; - const alignChanged = (event: React.ChangeEvent) => { - const checked = event.target.checked; - + const alignChanged = ( + event: React.ChangeEvent, + checked: boolean + ) => { setShireAlign(event.target.value === "shire" && checked); setRivendellAlign(event.target.value === "rivendell" && checked); }; @@ -405,9 +420,9 @@ const TolkienCalendarsExample = (props: TolkienCalendarsExampleProps) => { const shireSyncOptions = shireSyncSchemes.map((sync, i) => { return ( - + + {`Synchronize ${sync.label}`} + ); }); @@ -418,11 +433,12 @@ const TolkienCalendarsExample = (props: TolkienCalendarsExampleProps) => { const rivendellSyncOptions = rivendellSyncSchemes.map((sync, i) => { return ( - + + + ); }); @@ -439,44 +455,58 @@ const TolkienCalendarsExample = (props: TolkienCalendarsExampleProps) => { - Synchronize -
- + - Synchronize -
- + - + } + label="Try to align Shire Year with Rivendell Year?" /> - Try to align Shire Year with Rivendell Year? - + } + label="Try to align Rivendell Year with Shire Year?" /> - Try to align Rivendell Year with Shire Year? @@ -493,7 +523,7 @@ const TolkienCalendarsExample = (props: TolkienCalendarsExampleProps) => { startDate={shireStartDate} onCalendarStartChange={onShireStartDateChange} onRegionChange={onShireRegionChange} - className="shire-calendar" + className="shire-calendar shire-calendar-styled-example" yearView={shireAlign || rivendellAlign} /> @@ -507,7 +537,7 @@ const TolkienCalendarsExample = (props: TolkienCalendarsExampleProps) => { calendarRules={rivendellCalendarRules} onCalendarStartChange={onRivendellStartDateChange} onCalendarRulesChange={onRivendellRulesChange} - className="shire-calendar rivendell-calendar" + className="shire-calendar rivendell-calendar shire-calendar-styled-example" yearView={shireAlign || rivendellAlign} /> @@ -522,7 +552,7 @@ const TolkienCalendarsExample = (props: TolkienCalendarsExampleProps) => { date={currentDate} startDate={gondorLeftStartDate} onCalendarStartChange={onGondorLeftStartDateChange} - className="shire-calendar gondor-calendar stewards-calendar" + className="shire-calendar gondor-calendar stewards-calendar shire-calendar-styled-example" /> @@ -531,7 +561,7 @@ const TolkienCalendarsExample = (props: TolkienCalendarsExampleProps) => { date={currentDate} startDate={gondorRightStartDate} onCalendarStartChange={onGondorRightStartDateChange} - className="shire-calendar gondor-calendar new-reckoning-calendar" + className="shire-calendar gondor-calendar new-reckoning-calendar shire-calendar-styled-example" /> @@ -540,6 +570,12 @@ const TolkienCalendarsExample = (props: TolkienCalendarsExampleProps) => { ); }; +export const StyledTolkienCalendars = (props: TolkienCalendarsExampleProps) => ( + + + +); + const srcStyle = { border: "1px solid", margin: "auto", @@ -550,7 +586,7 @@ const TolkienCalendarsWithInstructions = ( props: TolkienCalendarsExampleProps ) => ( <> - +

The following example shows how a default Shire Calendar, with the @@ -649,7 +685,7 @@ const meta = { }, component: TolkienCalendarsWithInstructions, - excludeStories: ["TolkienCalendarsExample"], + excludeStories: ["StyledTolkienCalendars", "TolkienCalendarsExample"], } satisfies Meta; export default meta; diff --git a/src/examples/controls/LanguagePicker.tsx b/src/examples/controls/LanguagePicker.tsx index 60ac2fc..2a415ba 100644 --- a/src/examples/controls/LanguagePicker.tsx +++ b/src/examples/controls/LanguagePicker.tsx @@ -4,7 +4,11 @@ */ import React from "react"; +import MenuItem from "@mui/material/MenuItem"; + import { LanguageEnum } from "../../ui/controls/LanguagePicker"; +import { OutlinedSelect } from "../Common"; +import { scriptFontFamily } from "../theme"; interface LanguagePickerProps { language: LanguageEnum; @@ -16,19 +20,25 @@ const LanguagePicker = ({ onLanguageChange, }: LanguagePickerProps) => { return ( -
- Language: -
- -
+ + English + Quenya + Sindarin + ); }; diff --git a/src/examples/controls/MonthViewLayout.tsx b/src/examples/controls/MonthViewLayout.tsx index d140825..278621f 100644 --- a/src/examples/controls/MonthViewLayout.tsx +++ b/src/examples/controls/MonthViewLayout.tsx @@ -4,7 +4,10 @@ */ import React from "react"; +import MenuItem from "@mui/material/MenuItem"; + import { MonthLayoutEnum } from "../../ui/controls/MonthViewLayout"; +import { OutlinedSelect } from "../Common"; import "../../ui/tolkien-calendars.css"; @@ -18,18 +21,27 @@ const MonthViewLayout = ({ onMonthViewLayoutChange, }: MonthViewLayoutProps) => { return ( -
- Month View: -
- -
+ + Vertical + Horizontal + ); }; diff --git a/src/examples/controls/MonthViewPicker.tsx b/src/examples/controls/MonthViewPicker.tsx index f906b20..c813fab 100644 --- a/src/examples/controls/MonthViewPicker.tsx +++ b/src/examples/controls/MonthViewPicker.tsx @@ -3,7 +3,17 @@ * Distributed under the Eclipse Public License (http://www.eclipse.org/legal/epl-v10.html). */ import React from "react"; + +import Button from "@mui/material/Button"; +import IconButton from "@mui/material/IconButton"; +import MenuItem from "@mui/material/MenuItem"; + +import ArrowBackIcon from "@mui/icons-material/ArrowBack"; +import ArrowForwardIcon from "@mui/icons-material/ArrowForward"; + +import { OutlinedSelect } from "../Common"; import "../../ui/tolkien-calendars.css"; +import { scriptFontFamily } from "../theme"; export interface MonthViewDisplayItem { emoji: string; @@ -100,9 +110,9 @@ const MonthViewPicker = (props: MonthViewPickerProps) => { const monthView = props.yearView ? -1 : props.monthView; const monthViewSelectOptions = props.months.map((month, i) => ( - + )); return ( @@ -111,61 +121,75 @@ const MonthViewPicker = (props: MonthViewPickerProps) => { - + - + + - + - + + - + diff --git a/src/examples/controls/ShireRegionPicker.tsx b/src/examples/controls/ShireRegionPicker.tsx index 766403d..8566437 100644 --- a/src/examples/controls/ShireRegionPicker.tsx +++ b/src/examples/controls/ShireRegionPicker.tsx @@ -4,23 +4,31 @@ */ import React from "react"; +import MenuItem from "@mui/material/MenuItem"; + import { ShireRegionEnum } from "../../ShireReckoning"; +import { OutlinedSelect } from "../Common"; + interface ShireRegionPickerProps { + label?: string; region: string; onRegionChange: React.ChangeEventHandler; } const ShireRegionPicker = (props: ShireRegionPickerProps) => ( - + Tolkien Names + Shire Names + Bree Names + ); export default ShireRegionPicker; diff --git a/src/examples/controls/StartDatePicker.tsx b/src/examples/controls/StartDatePicker.tsx index fa953f2..c4b2a91 100644 --- a/src/examples/controls/StartDatePicker.tsx +++ b/src/examples/controls/StartDatePicker.tsx @@ -4,7 +4,10 @@ */ import React from "react"; +import MenuItem from "@mui/material/MenuItem"; + import { datesMatch, fullYearDate } from "../../Utils"; +import { OutlinedSelect } from "../Common"; interface StartDatePickerItem { label: string; @@ -29,22 +32,24 @@ const StartDatePicker = ( ); const opts = props.startDates.map((startDate) => ( - + )); return ( -
- Start reckoning from - -
+ + {opts} + ); }; diff --git a/src/examples/examples.css b/src/examples/examples.css index 8d7cec5..ea39c9f 100644 --- a/src/examples/examples.css +++ b/src/examples/examples.css @@ -8,7 +8,7 @@ margin: auto; } .date-time-input { - width: 4rem; + width: 5.5rem; text-align: center; } .simulated-calendar caption { @@ -24,3 +24,13 @@ margin: auto; padding: 1rem; } +.shire-calendar-styled-example { + font-family: Fondamento,'Libre Baskerville',Georgia,serif; +} +.shire-calendar-styled-example td { + font-weight: normal; +} +.shire-calendar-styled-example .gregorian-display { + font-family: 'Libre Baskerville',Georgia,serif; + white-space: nowrap; +} diff --git a/src/examples/simulation/GondorCalendars.tsx b/src/examples/simulation/GondorCalendars.tsx index 57ea556..ff374ce 100644 --- a/src/examples/simulation/GondorCalendars.tsx +++ b/src/examples/simulation/GondorCalendars.tsx @@ -35,6 +35,8 @@ import MonthViewPicker from "../controls/MonthViewPicker"; import StartReckoningDatePicker from "./StartReckoningDatePicker"; +import { Grid } from "@mui/material"; + const getNewStyleYear = (startDate: Date, today: Date) => daysElapsedToNewReckoningYear( daysElapsedToSecondAgeYear, @@ -239,6 +241,24 @@ const GondorCalendarSimulated = (props: GondorCalendarSimulatedProps) => { startDate={startDate} onCalendarStartChange={onCalendarStartChange} /> + + + + { onMonthViewChange={onMonthViewChange} /> - - - - - - - + { startDate={startDate} onCalendarStartChange={onCalendarStartChange} /> + + + + { onMonthViewChange={onMonthViewChange} /> - - - - - - - + { startDate={startDate} onCalendarStartChange={onCalendarStartChange} /> + + + + { onMonthViewChange={onMonthViewChange} /> - - Reckon with: -
- - - - - - + { }; return ( - - - - - - - - - - - - - - -
Start reckoning from
Year: - -
- - - -
+ <> + + Start reckoning from + + + + + + + ); }; diff --git a/src/examples/simulation/TolkienCalendars.tsx b/src/examples/simulation/TolkienCalendars.tsx index 4820290..92ddad7 100644 --- a/src/examples/simulation/TolkienCalendars.tsx +++ b/src/examples/simulation/TolkienCalendars.tsx @@ -5,6 +5,9 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; +import MenuItem from "@mui/material/MenuItem"; +import { ThemeProvider } from "@mui/material/styles"; + import { datesMatch } from "../../Utils"; import "../../ui/tolkien-calendars.css"; @@ -20,7 +23,8 @@ import { findPreviousEventIndex, } from "./DatesOfInterest"; -import { CalendarCellStyle, DatePicker } from "../Common"; +import { CalendarCellStyle, DatePicker, OutlinedSelect } from "../Common"; +import theme from "../theme"; import "../examples.css"; const blankEvent = ; @@ -230,11 +234,13 @@ export const SimulatedTolkienCalendars = ( }; const eventOpts = DatesOfInterest.map((event, i) => ( - + + {event.label ? ( + `${event.displayDate} | ${event.label}` + ) : ( + <>  + )} + )); if (selectedEvent === -1) { @@ -257,9 +263,9 @@ export const SimulatedTolkienCalendars = ( } const syncOptions = syncSchemes.map(function (sync, i) { return ( - + ); }); @@ -268,24 +274,26 @@ export const SimulatedTolkienCalendars = ( - Synchronize   - + - Dates of Interest:  - + @@ -303,7 +311,7 @@ export const SimulatedTolkienCalendars = ( startDate={shireStartDate} onCalendarStartChange={onShireStartDateChange} date={currentDate} - className="shire-calendar" + className="shire-calendar shire-calendar-styled-example" /> @@ -311,7 +319,7 @@ export const SimulatedTolkienCalendars = ( startDate={gondorStartDate} onCalendarStartChange={onGondorStartDateChange} date={currentDate} - className="shire-calendar gondor-calendar" + className="shire-calendar gondor-calendar shire-calendar-styled-example" /> @@ -321,7 +329,7 @@ export const SimulatedTolkienCalendars = ( startDate={rivendellStartDate} onCalendarStartChange={onRivendellStartDateChange} date={currentDate} - className="shire-calendar rivendell-calendar" + className="shire-calendar rivendell-calendar shire-calendar-styled-example" /> @@ -330,6 +338,12 @@ export const SimulatedTolkienCalendars = ( ); }; +export const StyledSimulations = (props: SimulatedTolkienCalendarsProps) => ( + + + +); + const meta = { title: "Shire Reckoning / Middle-earth Simulation", @@ -337,9 +351,9 @@ const meta = { options: { showPanel: false }, }, - component: SimulatedTolkienCalendars, - excludeStories: ["SimulatedTolkienCalendars"], -} satisfies Meta; + component: StyledSimulations, + excludeStories: ["SimulatedTolkienCalendars", "StyledSimulations"], +} satisfies Meta; export default meta; type Story = StoryObj; diff --git a/src/examples/theme.ts b/src/examples/theme.ts new file mode 100644 index 0000000..5839a22 --- /dev/null +++ b/src/examples/theme.ts @@ -0,0 +1,30 @@ +import { + blue, + blueGrey, + cyan, + deepOrange, + green, + red, +} from "@mui/material/colors"; +import { createTheme } from "@mui/material/styles"; + +const baseFonts = ["Libre Baskerville", "Georgia", "serif"]; + +const theme = createTheme({ + typography: { + fontFamily: baseFonts.join(","), + }, + palette: { + primary: { main: blue[800] }, + secondary: { main: blueGrey[700] }, + success: { main: green[600] }, + error: { main: red[900] }, + warning: { main: deepOrange[800] }, + info: cyan, + }, +}); + +const scriptFontFamily = ["Fondamento", ...baseFonts].join(","); + +export default theme; +export { scriptFontFamily }; diff --git a/stylesheets/gh-pages-adjust.css b/stylesheets/gh-pages-adjust.css index 6f133db..fe72121 100644 --- a/stylesheets/gh-pages-adjust.css +++ b/stylesheets/gh-pages-adjust.css @@ -19,7 +19,9 @@ th, td { .main-content > table tr:nth-child(2n) { background-color: gainsboro; } +.weekday-header { background-color: whitesmoke; } .shire-calendar { + background-color: whitesmoke; border-collapse: separate; } .shire-calendar td { @@ -47,3 +49,18 @@ th, td { .align-shire-calendar { padding-top: 186rem; } +.shire-sync-select, .rivendell-sync-select { + width: 34rem; +} +.shire-calendar-styled-example { + margin: 0; +} +.shire-calendar-styled-example .shire-calendar-wrapper-cell { + padding: 0; +} +.shire-calendar-styled-example .month-name-display { + font-size: 0.75rem; +} +.shire-calendar-styled-example .intercalary-overlithe-day { + font-size: 0.75rem; +}