diff --git a/README.md b/README.md index 6c5f0ccb7..035149dbd 100644 --- a/README.md +++ b/README.md @@ -404,7 +404,7 @@ Only appointed team members may release versions. [Core Portal Deployments]: https://github.com/TACC/Core-Portal-Deployments [Camino]: https://github.com/TACC/Camino [Core CMS]: https://github.com/TACC/Core-CMS -[Core Styles]: https://github.com/TACC/tup-ui/tree/main/libs/core-styles +[Core Styles]: https://github.com/TACC/Core-Styles [Core CMS Resources]: https://github.com/TACC/Core-CMS-Resources [Core CMS Custom]: https://github.com/TACC/Core-CMS-Custom [Core Portal]: https://github.com/TACC/Core-Portal diff --git a/bin/build-css.js b/bin/build-css.js index bd9d99ac7..ce9dcc487 100755 --- a/bin/build-css.js +++ b/bin/build-css.js @@ -17,13 +17,11 @@ const BUILD_ID = ARGS['build-id'] || ''; (() => { // Get style paths const corePath = _getPath('taccsite_cms', 'site_cms'); - const demoPath = 'node_modules/@tacc/core-styles'; const projPath = _getPath(`taccsite_custom/${PROJECT_NAME}`, PROJECT_NAME ); const hasProject = ( PROJECT_NAME && PROJECT_NAME !== CORE_NAME ); // Get config paths const coreConfPath = `${ROOT}/${corePath}/.postcssrc.yml`; - const demoConfPath = coreConfPath; const projConfPath = `${ROOT}/${projPath}/.postcssrc.yml`; const confPaths = [coreConfPath]; @@ -47,14 +45,6 @@ const BUILD_ID = ARGS['build-id'] || ''; customConfigs: confPaths }} }); - _build('Demo', { - input: `${ROOT}/${demoPath}/src/**/*.css`, - output: `${ROOT}/${demoPath}/build`, - opts: {...defaultOpts, ...{ - customConfigs: [demoConfPath], - baseMirrorDir: `${ROOT}/${demoPath}/src/lib/_imports` - }} - }); if ( hasProject ) { _build( PROJECT_NAME, { input: `${ROOT}/${projPath}/src/**/*.css`, diff --git a/package-lock.json b/package-lock.json index f1f2c95a4..d38dca149 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "@tacc/core-cms", - "version": "3.9.1", + "version": "3.9.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@tacc/core-cms", - "version": "3.9.1", + "version": "3.9.2", "license": "MIT", "devDependencies": { "@frctl/fractal": "^1.5.14", "@frctl/mandelbrot": "^1.10.1", - "@tacc/core-styles": "^0.11.0", + "@tacc/core-styles": "^2.6.2", "minimist": "^1.2.6" }, "engines": { @@ -317,20 +317,19 @@ } }, "node_modules/@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", "dev": true, "peer": true, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2", "postcss-selector-parser": "^6.0.10" } }, @@ -510,9 +509,9 @@ } }, "node_modules/@tacc/core-styles": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@tacc/core-styles/-/core-styles-0.11.0.tgz", - "integrity": "sha512-TmAqeQPzJ39lGOj3AF9QNtt+Lo1Jfne35PSdSl0M+K52qCoFqurSqiV36thB/JJ7W6VcAR4LHP4J1pDwVuj7wg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@tacc/core-styles/-/core-styles-2.6.2.tgz", + "integrity": "sha512-0JjPjbcmSvYg7z2zRWIq3Yhj2I0L8fz+6L66AV8HVQUJ/7fDG1vC34mGR0q+l36kFT3KYCTA2+XOyOhxnc/C3w==", "dev": true, "bin": { "core-styles": "src/cli.js" @@ -527,13 +526,13 @@ "js-yaml": "^4.1.0", "merge-lite": "^1.0.2", "node-cmd": "^5.0.0", - "npm-watch": "^0.11.0", "postcss": "^8.4.18", "postcss-banner": "^4.0.1", "postcss-cli": "^10.0.0", + "postcss-env-function": "^4.0.6", "postcss-extend": "^1.0.5", "postcss-import": "^15.0.0", - "postcss-preset-env": "^7.8.2", + "postcss-preset-env": "^7.8.3", "postcss-replace": "^2.0.0" } }, @@ -793,9 +792,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", "dev": true, "funding": [ { @@ -809,8 +808,8 @@ ], "peer": true, "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -1160,9 +1159,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, "funding": [ { @@ -1176,10 +1175,10 @@ ], "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" }, "bin": { "browserslist": "cli.js" @@ -1307,9 +1306,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001429", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz", - "integrity": "sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==", + "version": "1.0.30001474", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001474.tgz", + "integrity": "sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==", "dev": true, "funding": [ { @@ -1319,6 +1318,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "peer": true @@ -1703,9 +1706,9 @@ } }, "node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "peer": true, "engines": { @@ -1890,9 +1893,9 @@ } }, "node_modules/css-declaration-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", + "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", "dev": true, "peer": true, "engines": { @@ -1982,9 +1985,9 @@ } }, "node_modules/cssdb": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", - "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.5.3.tgz", + "integrity": "sha512-NQNRhrEnS6cW+RU/foLphb6xI/MDA70bI3Cy6VxJU8ilxgyTYz1X9zUzFGVTG5nGPylcKAGIt/UNc4deT56lQQ==", "dev": true, "peer": true, "funding": { @@ -2006,13 +2009,13 @@ } }, "node_modules/cssnano": { - "version": "5.1.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", "dev": true, "peer": true, "dependencies": { - "cssnano-preset-default": "^5.2.13", + "cssnano-preset-default": "^5.2.14", "lilconfig": "^2.0.3", "yaml": "^1.10.2" }, @@ -2028,23 +2031,23 @@ } }, "node_modules/cssnano-preset-default": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", "dev": true, "peer": true, "dependencies": { "css-declaration-sorter": "^6.3.1", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", + "postcss-colormin": "^5.3.1", "postcss-convert-values": "^5.1.3", "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", + "postcss-merge-rules": "^5.1.4", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", "postcss-minify-params": "^5.1.4", @@ -2059,7 +2062,7 @@ "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", + "postcss-reduce-initial": "^5.1.2", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", "postcss-unique-selectors": "^5.1.1" @@ -2145,13 +2148,6 @@ "node": ">=4.0.0" } }, - "node_modules/deep-get-set": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-get-set/-/deep-get-set-1.1.1.tgz", - "integrity": "sha512-dBrY4GeR55KfyF9Ipswif/Et4muInKpXkf3ro9hFT/8OdPMVsEGNSfuGzfBv/dJKKwKSqInoZGKV5f40bA7TJA==", - "dev": true, - "peer": true - }, "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -2395,9 +2391,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.351", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.351.tgz", + "integrity": "sha512-W35n4jAsyj6OZGxeWe+gA6+2Md4jDO19fzfsRKEt3DBwIdlVTT8O9Uv8ojgUAoQeXASdgG9zMU+8n8Xg/W6dRQ==", "dev": true, "peer": true }, @@ -3799,13 +3795,6 @@ "node": ">= 4" } }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true, - "peer": true - }, "node_modules/immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", @@ -4330,9 +4319,9 @@ } }, "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, "peer": true, "engines": { @@ -4763,10 +4752,16 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -4857,91 +4852,12 @@ } }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true, "peer": true }, - "node_modules/nodemon": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", - "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", - "dev": true, - "peer": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/nodemon/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "peer": true - }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nodemon/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -5001,20 +4917,6 @@ "node": ">=8" } }, - "node_modules/npm-watch": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.11.0.tgz", - "integrity": "sha512-wAOd0moNX2kSA2FNvt8+7ORwYaJpQ1ZoWjUYdb1bBCxq4nkWuU0IiJa9VpVxrj5Ks+FGXQd62OC/Bjk0aSr+dg==", - "dev": true, - "peer": true, - "dependencies": { - "nodemon": "^2.0.7", - "through2": "^4.0.2" - }, - "bin": { - "npm-watch": "cli.js" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -5174,6 +5076,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10.12.0" + } + }, "node_modules/object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -5476,9 +5388,9 @@ } }, "node_modules/postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "funding": [ { @@ -5561,15 +5473,15 @@ } }, "node_modules/postcss-cli": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.0.0.tgz", - "integrity": "sha512-Wjy/00wBBEgQqnSToznxLWDnATznokFGXsHtF/3G8glRZpz5KYlfHcBW/VMJmWAeF2x49zjgy4izjM3/Wx1dKA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", + "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", "dev": true, "peer": true, "dependencies": { "chokidar": "^3.3.0", "dependency-graph": "^0.11.0", - "fs-extra": "^10.0.0", + "fs-extra": "^11.0.0", "get-stdin": "^9.0.0", "globby": "^13.0.0", "picocolors": "^1.0.0", @@ -5577,7 +5489,7 @@ "postcss-reporter": "^7.0.0", "pretty-hrtime": "^1.0.3", "read-cache": "^1.0.0", - "slash": "^4.0.0", + "slash": "^5.0.0", "yargs": "^17.0.0" }, "bin": { @@ -5591,9 +5503,9 @@ } }, "node_modules/postcss-cli/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "peer": true, "dependencies": { @@ -5602,13 +5514,13 @@ "universalify": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.14" } }, "node_modules/postcss-cli/node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "peer": true, "dependencies": { @@ -5625,7 +5537,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-cli/node_modules/slash": { + "node_modules/postcss-cli/node_modules/globby/node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", @@ -5638,6 +5550,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/postcss-cli/node_modules/slash": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.0.0.tgz", + "integrity": "sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/postcss-color-functional-notation": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", @@ -5699,13 +5624,13 @@ } }, "node_modules/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", "dev": true, "peer": true, "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "colord": "^2.9.1", "postcss-value-parser": "^4.2.0" @@ -5755,9 +5680,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "12.1.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, "peer": true, "dependencies": { @@ -6102,9 +6027,9 @@ } }, "node_modules/postcss-import": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", - "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "dev": true, "peer": true, "dependencies": { @@ -6181,9 +6106,9 @@ } }, "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.3.tgz", - "integrity": "sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "dev": true, "peer": true, "engines": { @@ -6234,9 +6159,9 @@ } }, "node_modules/postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", "dev": true, "peer": true, "dependencies": { @@ -6485,9 +6410,9 @@ } }, "node_modules/postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", "dev": true, "funding": [ { @@ -6502,6 +6427,9 @@ "peer": true, "engines": { "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" } }, "node_modules/postcss-ordered-values": { @@ -6572,13 +6500,13 @@ } }, "node_modules/postcss-preset-env": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.2.tgz", - "integrity": "sha512-rSMUEaOCnovKnwc5LvBDHUDzpGP+nrUeWZGWt9M72fBvckCi45JmnJigUr4QG4zZeOHmOCNCZnd2LKDvP++ZuQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", "dev": true, "peer": true, "dependencies": { - "@csstools/postcss-cascade-layers": "^1.1.0", + "@csstools/postcss-cascade-layers": "^1.1.1", "@csstools/postcss-color-function": "^1.1.1", "@csstools/postcss-font-format-keywords": "^1.0.1", "@csstools/postcss-hwb-function": "^1.0.2", @@ -6592,19 +6520,19 @@ "@csstools/postcss-text-decoration-shorthand": "^1.0.0", "@csstools/postcss-trigonometric-functions": "^1.0.2", "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.11", - "browserslist": "^4.21.3", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", "css-blank-pseudo": "^3.0.3", "css-has-pseudo": "^3.0.4", "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.0.1", + "cssdb": "^7.1.0", "postcss-attribute-case-insensitive": "^5.0.2", "postcss-clamp": "^4.1.0", "postcss-color-functional-notation": "^4.2.4", "postcss-color-hex-alpha": "^8.0.4", "postcss-color-rebeccapurple": "^7.1.1", "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.9", + "postcss-custom-properties": "^12.1.10", "postcss-custom-selectors": "^6.0.3", "postcss-dir-pseudo-class": "^6.0.5", "postcss-double-position-gradients": "^3.1.2", @@ -6660,9 +6588,9 @@ } }, "node_modules/postcss-reduce-initial": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", "dev": true, "peer": true, "dependencies": { @@ -6693,14 +6621,14 @@ } }, "node_modules/postcss-replace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace/-/postcss-replace-2.0.0.tgz", - "integrity": "sha512-8d64/c/dJL2/zjnQvCD1/eH04xMreXFHdC9F0APl/M7Cg0KyLvN+f/HCb87jbyG1dyIbR4zD7sxl/W4JIp9ppQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-replace/-/postcss-replace-2.0.1.tgz", + "integrity": "sha512-T83GVovCkBQkFCTmuid0B2bWNu/O0Bh/HDMeEGFC62EwMvVBLZQFYM7iBbcGT48QDXSNSX6e/X1Q7/Syh5NFng==", "dev": true, "peer": true, "dependencies": { - "deep-get-set": "^1.1.1", - "kind-of": "^6.0.3" + "kind-of": "^6.0.3", + "object-path": "^0.11.8" }, "engines": { "node": "^12 || ^14 || >=16" @@ -6761,9 +6689,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "peer": true, "dependencies": { @@ -6876,13 +6804,6 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true, - "peer": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -7678,29 +7599,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/simple-update-notifier": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", - "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", - "dev": true, - "peer": true, - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -8465,16 +8363,6 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "peer": true, - "dependencies": { - "readable-stream": "3" - } - }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -8581,35 +8469,6 @@ "node": ">=0.6" } }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "peer": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "peer": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -8704,13 +8563,6 @@ "node": ">=0.10.0" } }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true, - "peer": true - }, "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -9478,9 +9330,9 @@ "requires": {} }, "@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", "dev": true, "peer": true, "requires": {} @@ -9634,9 +9486,9 @@ } }, "@tacc/core-styles": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@tacc/core-styles/-/core-styles-0.11.0.tgz", - "integrity": "sha512-TmAqeQPzJ39lGOj3AF9QNtt+Lo1Jfne35PSdSl0M+K52qCoFqurSqiV36thB/JJ7W6VcAR4LHP4J1pDwVuj7wg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@tacc/core-styles/-/core-styles-2.6.2.tgz", + "integrity": "sha512-0JjPjbcmSvYg7z2zRWIq3Yhj2I0L8fz+6L66AV8HVQUJ/7fDG1vC34mGR0q+l36kFT3KYCTA2+XOyOhxnc/C3w==", "dev": true, "requires": {} }, @@ -9833,14 +9685,14 @@ "dev": true }, "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", "dev": true, "peer": true, "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -10128,16 +9980,16 @@ } }, "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, "peer": true, "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" } }, "bs-recipes": { @@ -10237,9 +10089,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001429", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz", - "integrity": "sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==", + "version": "1.0.30001474", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001474.tgz", + "integrity": "sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==", "dev": true, "peer": true }, @@ -10541,9 +10393,9 @@ } }, "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "peer": true }, @@ -10684,9 +10536,9 @@ } }, "css-declaration-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", + "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", "dev": true, "peer": true, "requires": {} @@ -10742,9 +10594,9 @@ "peer": true }, "cssdb": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", - "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.5.3.tgz", + "integrity": "sha512-NQNRhrEnS6cW+RU/foLphb6xI/MDA70bI3Cy6VxJU8ilxgyTYz1X9zUzFGVTG5nGPylcKAGIt/UNc4deT56lQQ==", "dev": true, "peer": true }, @@ -10756,35 +10608,35 @@ "peer": true }, "cssnano": { - "version": "5.1.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", "dev": true, "peer": true, "requires": { - "cssnano-preset-default": "^5.2.13", + "cssnano-preset-default": "^5.2.14", "lilconfig": "^2.0.3", "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", "dev": true, "peer": true, "requires": { "css-declaration-sorter": "^6.3.1", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", + "postcss-colormin": "^5.3.1", "postcss-convert-values": "^5.1.3", "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", + "postcss-merge-rules": "^5.1.4", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", "postcss-minify-params": "^5.1.4", @@ -10799,7 +10651,7 @@ "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", + "postcss-reduce-initial": "^5.1.2", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", "postcss-unique-selectors": "^5.1.1" @@ -10862,13 +10714,6 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, - "deep-get-set": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-get-set/-/deep-get-set-1.1.1.tgz", - "integrity": "sha512-dBrY4GeR55KfyF9Ipswif/Et4muInKpXkf3ro9hFT/8OdPMVsEGNSfuGzfBv/dJKKwKSqInoZGKV5f40bA7TJA==", - "dev": true, - "peer": true - }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -11055,9 +10900,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.351", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.351.tgz", + "integrity": "sha512-W35n4jAsyj6OZGxeWe+gA6+2Md4jDO19fzfsRKEt3DBwIdlVTT8O9Uv8ojgUAoQeXASdgG9zMU+8n8Xg/W6dRQ==", "dev": true, "peer": true }, @@ -12139,13 +11984,6 @@ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true, - "peer": true - }, "immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", @@ -12542,9 +12380,9 @@ } }, "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, "peer": true }, @@ -12879,9 +12717,9 @@ "dev": true }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, "peer": true }, @@ -12951,74 +12789,12 @@ "dev": true }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true, "peer": true }, - "nodemon": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", - "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", - "dev": true, - "peer": true, - "requires": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "peer": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -13057,17 +12833,6 @@ "path-key": "^3.0.0" } }, - "npm-watch": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.11.0.tgz", - "integrity": "sha512-wAOd0moNX2kSA2FNvt8+7ORwYaJpQ1ZoWjUYdb1bBCxq4nkWuU0IiJa9VpVxrj5Ks+FGXQd62OC/Bjk0aSr+dg==", - "dev": true, - "peer": true, - "requires": { - "nodemon": "^2.0.7", - "through2": "^4.0.2" - } - }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -13183,6 +12948,13 @@ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, + "object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "dev": true, + "peer": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -13408,9 +13180,9 @@ "dev": true }, "postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "peer": true, "requires": { @@ -13461,15 +13233,15 @@ } }, "postcss-cli": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.0.0.tgz", - "integrity": "sha512-Wjy/00wBBEgQqnSToznxLWDnATznokFGXsHtF/3G8glRZpz5KYlfHcBW/VMJmWAeF2x49zjgy4izjM3/Wx1dKA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", + "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", "dev": true, "peer": true, "requires": { "chokidar": "^3.3.0", "dependency-graph": "^0.11.0", - "fs-extra": "^10.0.0", + "fs-extra": "^11.0.0", "get-stdin": "^9.0.0", "globby": "^13.0.0", "picocolors": "^1.0.0", @@ -13477,14 +13249,14 @@ "postcss-reporter": "^7.0.0", "pretty-hrtime": "^1.0.3", "read-cache": "^1.0.0", - "slash": "^4.0.0", + "slash": "^5.0.0", "yargs": "^17.0.0" }, "dependencies": { "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "peer": true, "requires": { @@ -13494,9 +13266,9 @@ } }, "globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "peer": true, "requires": { @@ -13505,12 +13277,21 @@ "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^4.0.0" + }, + "dependencies": { + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "peer": true + } } }, "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.0.0.tgz", + "integrity": "sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==", "dev": true, "peer": true } @@ -13547,13 +13328,13 @@ } }, "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", "dev": true, "peer": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "colord": "^2.9.1", "postcss-value-parser": "^4.2.0" @@ -13581,9 +13362,9 @@ } }, "postcss-custom-properties": { - "version": "12.1.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, "peer": true, "requires": { @@ -13806,9 +13587,9 @@ } }, "postcss-import": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", - "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "dev": true, "peer": true, "requires": { @@ -13848,9 +13629,9 @@ }, "dependencies": { "yaml": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.3.tgz", - "integrity": "sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "dev": true, "peer": true } @@ -13884,9 +13665,9 @@ } }, "postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", "dev": true, "peer": true, "requires": { @@ -14042,11 +13823,12 @@ } }, "postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", "dev": true, - "peer": true + "peer": true, + "requires": {} }, "postcss-ordered-values": { "version": "5.1.3", @@ -14088,13 +13870,13 @@ } }, "postcss-preset-env": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.2.tgz", - "integrity": "sha512-rSMUEaOCnovKnwc5LvBDHUDzpGP+nrUeWZGWt9M72fBvckCi45JmnJigUr4QG4zZeOHmOCNCZnd2LKDvP++ZuQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", "dev": true, "peer": true, "requires": { - "@csstools/postcss-cascade-layers": "^1.1.0", + "@csstools/postcss-cascade-layers": "^1.1.1", "@csstools/postcss-color-function": "^1.1.1", "@csstools/postcss-font-format-keywords": "^1.0.1", "@csstools/postcss-hwb-function": "^1.0.2", @@ -14108,19 +13890,19 @@ "@csstools/postcss-text-decoration-shorthand": "^1.0.0", "@csstools/postcss-trigonometric-functions": "^1.0.2", "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.11", - "browserslist": "^4.21.3", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", "css-blank-pseudo": "^3.0.3", "css-has-pseudo": "^3.0.4", "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.0.1", + "cssdb": "^7.1.0", "postcss-attribute-case-insensitive": "^5.0.2", "postcss-clamp": "^4.1.0", "postcss-color-functional-notation": "^4.2.4", "postcss-color-hex-alpha": "^8.0.4", "postcss-color-rebeccapurple": "^7.1.1", "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.9", + "postcss-custom-properties": "^12.1.10", "postcss-custom-selectors": "^6.0.3", "postcss-dir-pseudo-class": "^6.0.5", "postcss-double-position-gradients": "^3.1.2", @@ -14156,9 +13938,9 @@ } }, "postcss-reduce-initial": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", "dev": true, "peer": true, "requires": { @@ -14177,14 +13959,14 @@ } }, "postcss-replace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace/-/postcss-replace-2.0.0.tgz", - "integrity": "sha512-8d64/c/dJL2/zjnQvCD1/eH04xMreXFHdC9F0APl/M7Cg0KyLvN+f/HCb87jbyG1dyIbR4zD7sxl/W4JIp9ppQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-replace/-/postcss-replace-2.0.1.tgz", + "integrity": "sha512-T83GVovCkBQkFCTmuid0B2bWNu/O0Bh/HDMeEGFC62EwMvVBLZQFYM7iBbcGT48QDXSNSX6e/X1Q7/Syh5NFng==", "dev": true, "peer": true, "requires": { - "deep-get-set": "^1.1.1", - "kind-of": "^6.0.3" + "kind-of": "^6.0.3", + "object-path": "^0.11.8" } }, "postcss-replace-overflow-wrap": { @@ -14217,9 +13999,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "peer": true, "requires": { @@ -14305,13 +14087,6 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true, - "peer": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -14925,25 +14700,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "simple-update-notifier": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", - "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", - "dev": true, - "peer": true, - "requires": { - "semver": "~7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "peer": true - } - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15542,16 +15298,6 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "peer": true, - "requires": { - "readable-stream": "3" - } - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -15635,28 +15381,6 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "peer": true, - "requires": { - "nopt": "~1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "peer": true, - "requires": { - "abbrev": "1" - } - } - } - }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -15713,13 +15437,6 @@ "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "dev": true }, - "undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true, - "peer": true - }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", diff --git a/package.json b/package.json index 2a92c7be8..32265338d 100644 --- a/package.json +++ b/package.json @@ -11,15 +11,17 @@ "devDependencies": { "@frctl/fractal": "^1.5.14", "@frctl/mandelbrot": "^1.10.1", - "@tacc/core-styles": "^0.11.0", + "@tacc/core-styles": "^2.6.2", "minimist": "^1.2.6" }, "repository": "git@github.com:TACC/Core-CMS.git", "scripts": { "build": "npm run build:css && npm run build:css-demo", "build:css": "bin/build-css.js --project=$npm_config_project --build-id=$npm_config_build_id", - "postbuild": "cp -r node_modules/@tacc/core-styles/src/lib/fonts/* taccsite_cms/static/site_cms/fonts", - "build:css-demo": "cd taccsite_ui && fractal build --project=$npm_config_project" + "postbuild:css": "cp -r node_modules/@tacc/core-styles/src/lib/fonts/* taccsite_cms/static/site_cms/fonts", + "build:css-demo": "cd taccsite_ui && fractal build --project=$npm_config_project", + "prebuild:css-demo": "cp -r node_modules/@tacc/core-styles/src/lib/_imports/_preview.hbs taccsite_cms/static/site_cms/css/src/_imports/", + "postbuild:css-demo": "rm taccsite_cms/static/site_cms/css/src/_imports/_preview.hbs" }, "homepage": "https://github.com/TACC/Core-CMS" } diff --git a/taccsite_cms/settings.py b/taccsite_cms/settings.py index 12a406ab3..60315253c 100644 --- a/taccsite_cms/settings.py +++ b/taccsite_cms/settings.py @@ -278,6 +278,14 @@ def gettext(s): return s TACC_BLOG_CUSTOM_MEDIA_POST_CATEGORY = 'sample_value_e_g__mutlimedia__' TACC_BLOG_SHOW_ABSTRACT_TAG = 'sample_value_e_g__redirect__' +######################## +# TACC: CORE STYLES +######################## + +# Only use integer numbers (not "v1", not "0.11.0"), +# so templates can load based on simple comparisons +TACC_CORE_STYLES_VERSION = 2 + ######################## @@ -551,15 +559,29 @@ def get_subdirs_as_module_names(path): # https://github.com/django-cms/djangocms-style DJANGOCMS_STYLE_CHOICES = [ - # https://cep.tacc.utexas.edu/design-system/ui-patterns/o-section/ + # https://dev.tup.tacc.utexas.edu/static/ui/components/detail/c-card--default.html + 'card', + 'card--plain', + 'card--standard', + 'card--image-top', + 'card--image-bottom', + 'card--image-right', + 'card--image-left', + # https://dev.tup.tacc.utexas.edu/static/ui/components/detail/o-section.html + 'section', + 'section--light', + 'section--muted', + 'section--dark', + 'o-section', 'o-section o-section--style-light', + 'o-section o-section--style-muted', 'o-section o-section--style-dark', - # https://cep.tacc.utexas.edu/design-system/ui-patterns/c-callout/ + # https://dev.tup.tacc.utexas.edu/design-system/pattern-library-manual/c-callout/ 'c-callout', - # https://cep.tacc.utexas.edu/design-system/ui-patterns/c-recognition/ + # https://dev.tup.tacc.utexas.edu/design-system/pattern-library-manual/c-recognition/ 'c-recognition c-recognition--style-light', 'c-recognition c-recognition--style-dark', - # https://cep.tacc.utexas.edu/design-system/ui-patterns/c-nav/ + # https://ecepalliance.org/alliance-members/ 'c-nav', # bare-bones instance 'c-nav c-nav--boxed', ] @@ -592,6 +614,7 @@ def get_subdirs_as_module_names(path): # https://github.com/django-cms/djangocms-video DJANGOCMS_VIDEO_TEMPLATES = [ + ('responsive-auto', _('Responsive - Automatic')), ('responsive-16by9', _('Responsive - 16 by 9')), ('responsive-4by3', _('Responsive - 4 by 3')), ('responsive-1by1', _('Responsive - 1 by 1')), @@ -659,6 +682,7 @@ def get_subdirs_as_module_names(path): 'GOOGLE_ANALYTICS_PRELOAD', 'TACC_BLOG_SHOW_CATEGORIES', 'TACC_BLOG_SHOW_TAGS', + 'TACC_CORE_STYLES_VERSION', 'TACC_BLOG_CUSTOM_MEDIA_POST_CATEGORY', 'TACC_BLOG_SHOW_ABSTRACT_TAG', 'SEARCH_QUERY_PARAM_NAME', diff --git a/taccsite_cms/static/djangocms_forms/css/djangocms_forms.css b/taccsite_cms/static/djangocms_forms/css/djangocms_forms.css index 3ebd6d84e..2b7999195 100644 --- a/taccsite_cms/static/djangocms_forms/css/djangocms_forms.css +++ b/taccsite_cms/static/djangocms_forms/css/djangocms_forms.css @@ -1,3 +1,3 @@ -/* SEE: ../../site_cms/css/src/_imports/django.cms.forms.css */ +/* SEE: ../../site_cms/css/src/_imports/django-cms-forms.css */ /* FAQ: We uses future syntax that must be processed to work in the present; and the process does not support outputting files to this directory */ diff --git a/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.css b/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.css index b79b71db8..09b7ce231 100644 --- a/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.css +++ b/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.css @@ -1,7 +1,3 @@ -/*! https://github.com/django-cms/djangocms-text-ckeditor/blob/3.10.0/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/contents.css */ -body {font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size: 12px;color: #333;background-color: #fff;margin: 20px;}.cke_editable {font-size: 13px;line-height: 1.6;word-wrap: break-word;}blockquote {font-style: italic;font-family: Georgia, Times, "Times New Roman", serif;padding: 2px 0;border-style: solid;border-color: #ccc;border-width: 0;}.cke_contents_ltr blockquote {padding-left: 20px;padding-right: 8px;border-left-width: 5px;}.cke_contents_rtl blockquote {padding-left: 8px;padding-right: 20px;border-right-width: 5px;}a {color: #0782C1;}ol,ul,dl {*margin-right: 0px;padding: 0 40px;}h1,h2,h3,h4,h5,h6 {font-weight: normal;line-height: 1.2;}hr {border: 0px;border-top: 1px solid #ccc;}img.right {border: 1px solid #ccc;float: right;margin-left: 15px;padding: 5px;}img.left {border: 1px solid #ccc;float: left;margin-right: 15px;padding: 5px;}pre {white-space: pre-wrap;word-wrap: break-word;-moz-tab-size: 4;tab-size: 4;}.marker {background-color: Yellow;}span[lang] {font-style: italic;}figure {text-align: center;outline: solid 1px #ccc;background: rgba(0,0,0,0.05);padding: 10px;margin: 10px 20px;display: inline-block;}figure > figcaption {text-align: center;display: block;}a > img {padding: 1px;margin: 1px;border: none;outline: 1px solid #0782C1;}.code-featured {border: 5px solid red;}.math-featured {padding: 20px;box-shadow: 0 0 2px rgba(200, 0, 0, 1);background-color: rgba(255, 0, 0, 0.05);margin: 10px;}.image-clean {border: 0;background: none;padding: 0;}.image-clean > figcaption {font-size: .9em;text-align: right;}.image-grayscale {background-color: white;color: #666;}.image-grayscale img, img.image-grayscale {filter: grayscale(100%);}.embed-240p {max-width: 426px;max-height: 240px;margin:0 auto;}.embed-360p {max-width: 640px;max-height: 360px;margin:0 auto;}.embed-480p {max-width: 854px;max-height: 480px;margin:0 auto;}.embed-720p {max-width: 1280px;max-height: 720px;margin:0 auto;}.embed-1080p {max-width: 1920px;max-height: 1080px;margin:0 auto;} +@import url("/static/djangocms_text_ckeditor/ckeditor/contents.original.css"); -/*! @tacc/core-styles 2.6.1+ | MIT | github.com/TACC/Core-Styles */@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"); -/*! core-styles.wysiwig.css */ -/*! core-styles.settings.css → */:root{--global-border-width--normal:1px;--global-border--normal:var(--global-border-width--normal) solid var(--global-color-primary--normal);--global-border-width--thick:2px;--global-border--thick:var(--global-border-width--thick) solid var(--global-color-primary--normal);--global-border-width--x-thick:3px;--global-border--x-thick:var(--global-border-width--x-thick) solid var(--global-color-primary--normal)}:root{--global-color-primary--xx-light:#fff;--global-color-primary--xx-light-rgb:255,255,255;--global-color-primary--x-light:#f4f4f4;--global-color-primary--x-light-rgb:244,244,244;--global-color-primary--light:#d7d7d7;--global-color-primary--light-rgb:198,198,198;--global-color-primary--normal:#afafaf;--global-color-primary--normal-rgb:175,175,175;--global-color-primary--dark:#707070;--global-color-primary--dark-rgb:112,112,112;--global-color-primary--x-dark:#484848;--global-color-primary--x-dark-rgb:72,72,72;--global-color-primary--xx-dark:#222;--global-color-primary--xx-dark-rgb:34,34,34;--global-color-primary--xxx-dark:#000;--global-color-primary--xxx-dark-rgb:0,0,0;--global-color-accent--xxx-light:#faf4ff;--global-color-accent--xx-light:#f1ebfd;--global-color-accent--x-light:#e3d7fd;--global-color-accent--light:#a387ed;--global-color-accent--normal:#784fe8;--global-color-accent--dark:#6039cc;--global-color-accent--x-dark:#3d189b;--global-color-accent--xx-dark:#281066;--global-color-accent--xxx-dark:#1e0c4c;--global-color-accent--secondary:var(--global-color-secondary--normal);--global-color-accent--tertiary:var(--global-color-tertiary--normal);--global-color-secondary--xx-light:#fcf6ec;--global-color-secondary--x-light:#e5d7c0;--global-color-secondary--light:#d5b57c;--global-color-secondary--normal:#877453;--global-color-secondary--dark:#514328;--global-color-secondary--x-dark:#332c1f;--global-color-secondary--xxx-dark:var(--global-color-secondary--x-dark);--global-color-tertiary--xx-light:#eafdfb;--global-color-tertiary--x-light:#b8f2eb;--global-color-tertiary--light:#7bd1c8;--global-color-tertiary--normal:#61a39c;--global-color-tertiary--dark:#406d68;--global-color-tertiary--x-dark:#1e3331;--global-color-tertiary--xxx-dark:var(--global-color-tertiary--x-dark);--global-color-info--x-light:var(--global-color-primary--x-light);--global-color-info--light:var(--global-color-primary--light);--global-color-info--normal:var(--global-color-primary--dark);--global-color-info--dark:var(--global-color-primary--x-dark);--global-color-info--x-dark:var(--global-color-primary--xx-dark);--global-color-danger--x-light:#fce4db;--global-color-danger--light:#fcaf91;--global-color-danger--normal:#ed4c11;--global-color-danger--dark:#c23a03;--global-color-danger--x-dark:#932b06;--global-color-warning--x-light:#fdf0d3;--global-color-warning--light:#fed880;--global-color-warning--normal:#f2b327;--global-color-warning--dark:#cd971c;--global-color-warning--x-dark:#996f0a;--global-color-success--x-light:#baf8dc;--global-color-success--light:#93f6cd;--global-color-success--normal:#10f7a9;--global-color-success--dark:#3dce92;--global-color-success--x-dark:#26885f;--global-color-extra--x-light:#f0f6ff;--global-color-extra--light:#b4d0f9;--global-color-extra--normal:#3f85f4;--global-color-extra--dark:#255bb1;--global-color-extra--x-dark:#174a99;--global-color-info--weak:rgba(var(--global-color-info--normal),0.125);--global-color-danger--weak:rgba(var(--global-color-danger--normal),0.125);--global-color-warning--weak:rgba(var(--global-color-warning--normal),0.125);--global-color-success--weak:rgba(var(--global-color-success--normal),0.125);--global-color-extra--weak:rgba(var(--global-color-extra--normal),0.125);--global-color-background--app:var(--global-color-primary--xx-light);--global-color-link-on-light--normal:var(--global-color-accent--normal);--global-color-link-on-dark--normal:var(--global-color-accent--light)}@font-face{font-display:swap;font-family:Benton Sans;font-style:normal;font-weight:400;src:url(fonts/BentonSans-Regular.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:italic;font-weight:400;src:url(fonts/BentonSans-RegularItalic.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:normal;font-weight:500;src:url(fonts/BentonSans-Medium.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:italic;font-weight:500;src:url(fonts/BentonSans-MediumItalic.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:normal;font-weight:700;src:url(fonts/BentonSans-Bold.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:normal;font-weight:800;src:url(fonts/BentonSans-Black.otf) format("opentype")}:root{--global-font-family--sans--cms:"Benton Sans","Roboto",sans-serif;--global-font-family--sans--portal:"Roboto",sans-serif;--global-font-family--serif:Times,sans-serif;--global-font-family--mono:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace;--sans--cms:var(--global-font-family--sans--cms);--sans--portal:var(--global-font-family--sans--portal);--serif:var(--global-font-family--serif);--mono:var(--global-font-family--mono);--global-font-weight--regular:400;--global-font-weight--medium:500;--global-font-weight--bold:700;--global-font-weight--black:800;--regular:var(--global-font-weight--regular);--medium:var(--global-font-weight--medium);--bold:var(--global-font-weight--bold);--black:var(--global-font-weight--black)}:root{--global-max-width--x-narrow:540px;--global-max-width--narrow:720px;--global-max-width--medium:960px;--global-max-width--wide:1140px;--global-max-width--x-wide:1320px;--global-max-width--xx-wide:1580px;--global-max-width--xxx-wide:1800px}:root{--global-space--xx-small:2px;--global-space--x-small:4px;--global-space--small:8px;--global-space--normal:16px;--global-space--large:24px;--global-space--x-large:48px;--global-space--list-indent:40px;--global-space--section-gap:60px;--global-space--grid-gap:30px;--global-space--above-breadcrumbs:45px;--global-space--under-breadcrumbs:40px;--global-space--section-top:12px;--global-space--section-bottom:0;--global-space--section-left:24px;--global-space--section-right:36px;--global-space--section:var(--global-space--section-top) var(--global-space--section-right) var(--global-space--section-bottom) var(--global-space--section-left);--global-space--hr-buffer-above:10px;--global-space--hr-buffer-below:30px;--global-space--p-buffer-above:0;--global-space--p-buffer-below:2rem} -/*! ← core-styles.settings.css */.c-island,.island{background-color:var(--global-color-primary--x-light);border-top:var(--global-border-width--thick) solid var(--global-color-tertiary--normal);font-style:italic;padding:1em 2em}.c-island hr,.island hr{border-bottom:var(--global-border-width--normal) solid;border-top:none;margin-block:2em} +@import url("/static/site_cms/css/build/core-styles.wysiwyg.css"); diff --git a/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.original.css b/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.original.css new file mode 100644 index 000000000..42900acf9 --- /dev/null +++ b/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.original.css @@ -0,0 +1,2 @@ +/*! https://github.com/django-cms/djangocms-text-ckeditor/blob/3.10.0/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/contents.css */ +body {font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size: 12px;color: #333;background-color: #fff;margin: 20px;}.cke_editable {font-size: 13px;line-height: 1.6;word-wrap: break-word;}blockquote {font-style: italic;font-family: Georgia, Times, "Times New Roman", serif;padding: 2px 0;border-style: solid;border-color: #ccc;border-width: 0;}.cke_contents_ltr blockquote {padding-left: 20px;padding-right: 8px;border-left-width: 5px;}.cke_contents_rtl blockquote {padding-left: 8px;padding-right: 20px;border-right-width: 5px;}a {color: #0782C1;}ol,ul,dl {*margin-right: 0px;padding: 0 40px;}h1,h2,h3,h4,h5,h6 {font-weight: normal;line-height: 1.2;}hr {border: 0px;border-top: 1px solid #ccc;}img.right {border: 1px solid #ccc;float: right;margin-left: 15px;padding: 5px;}img.left {border: 1px solid #ccc;float: left;margin-right: 15px;padding: 5px;}pre {white-space: pre-wrap;word-wrap: break-word;-moz-tab-size: 4;tab-size: 4;}.marker {background-color: Yellow;}span[lang] {font-style: italic;}figure {text-align: center;outline: solid 1px #ccc;background: rgba(0,0,0,0.05);padding: 10px;margin: 10px 20px;display: inline-block;}figure > figcaption {text-align: center;display: block;}a > img {padding: 1px;margin: 1px;border: none;outline: 1px solid #0782C1;}.code-featured {border: 5px solid red;}.math-featured {padding: 20px;box-shadow: 0 0 2px rgba(200, 0, 0, 1);background-color: rgba(255, 0, 0, 0.05);margin: 10px;}.image-clean {border: 0;background: none;padding: 0;}.image-clean > figcaption {font-size: .9em;text-align: right;}.image-grayscale {background-color: white;color: #666;}.image-grayscale img, img.image-grayscale {filter: grayscale(100%);}.embed-240p {max-width: 426px;max-height: 240px;margin:0 auto;}.embed-360p {max-width: 640px;max-height: 360px;margin:0 auto;}.embed-480p {max-width: 854px;max-height: 480px;margin:0 auto;}.embed-720p {max-width: 1280px;max-height: 720px;margin:0 auto;}.embed-1080p {max-width: 1920px;max-height: 1080px;margin:0 auto;} diff --git a/taccsite_cms/static/site_cms/css/.postcssrc.yml b/taccsite_cms/static/site_cms/css/.postcssrc.yml index 5193f4eb9..fbd2180e4 100644 --- a/taccsite_cms/static/site_cms/css/.postcssrc.yml +++ b/taccsite_cms/static/site_cms/css/.postcssrc.yml @@ -11,6 +11,7 @@ plugins: importFrom: - 'node_modules/@tacc/core-styles/src/lib/_themes/default.json' postcss-replace: - pattern: ../../fonts/ + # @tacc/core-styles: 'src/' uses `fonts/`, 'dist/' uses `../../fonts/` + pattern: (..\/..\/fonts\/|fonts/) data: replaceAll: /static/site_cms/fonts/ diff --git a/taccsite_cms/static/site_cms/css/README.md b/taccsite_cms/static/site_cms/css/README.md index 75302de77..242345c1a 100644 --- a/taccsite_cms/static/site_cms/css/README.md +++ b/taccsite_cms/static/site_cms/css/README.md @@ -17,4 +17,4 @@ See [repo `README.md` at "Static Files"](/README.md#static-files). [Core CMS]: https://github.com/TACC/Core-CMS [Core CMS Resources]: https://github.com/TACC/Core-CMS-Resources -[Core Styles]: https://github.com/TACC/tup-ui/tree/main/libs/core-styles +[Core Styles]: https://github.com/TACC/Core-Styles diff --git a/taccsite_cms/static/site_cms/css/src/README.md b/taccsite_cms/static/site_cms/css/src/README.md index 31d5260e1..7121afe27 100644 --- a/taccsite_cms/static/site_cms/css/src/README.md +++ b/taccsite_cms/static/site_cms/css/src/README.md @@ -6,7 +6,7 @@ AUTHOR STYLESHEETS HERE! - Import stylesheet partials into entry point files here at `./`. - Built stylesheets are compiled to `../build/`. -See project `README.md` at ["Static Files"](/README.md#static-files). +See project `README.md` at ["Static Files"](/README.md#static-files) and [CMS UI Organization]. _This directory exists in `static/` __only__ because it is customary, using Django, for CSS to be authored in this directory._ @@ -52,4 +52,5 @@ _This directory exists in `static/` __only__ because it is customary, using Djan -[Core Styles]: https://github.com/TACC/tup-ui/tree/main/libs/core-styles +[Core Styles]: https://github.com/TACC/Core-Styles +[CMS UI Organization]: https://confluence.tacc.utexas.edu/x/54AZCg diff --git a/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.base.css b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.base.css new file mode 100644 index 000000000..d5755141a --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.base.css @@ -0,0 +1,2 @@ +/* TODO: Host Core-Styles static files on a CDN */ +@import url("@tacc/core-styles/dist/core-styles.base.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.cms.css b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.cms.css new file mode 100644 index 000000000..bedb02ade --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.cms.css @@ -0,0 +1,2 @@ +/* TODO: Host Core-Styles static files on a CDN */ +@import url("@tacc/core-styles/dist/core-styles.cms.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.demo.css b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.demo.css new file mode 100644 index 000000000..3434459aa --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.demo.css @@ -0,0 +1,2 @@ +/* TODO: Host Core-Styles static files on a CDN */ +@import url("@tacc/core-styles/dist/core-styles.demo.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.docs.css b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.docs.css new file mode 100644 index 000000000..52128d775 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.docs.css @@ -0,0 +1,2 @@ +/* TODO: Host Core-Styles static files on a CDN */ +@import url("@tacc/core-styles/dist/core-styles.docs.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.header.css b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.header.css new file mode 100644 index 000000000..2ad5d14e7 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.header.css @@ -0,0 +1,2 @@ +/* TODO: Host Core-Styles static files on a CDN */ +@import url("@tacc/core-styles/dist/core-styles.header.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.header.theme-has-dark-logo.css b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.header.theme-has-dark-logo.css new file mode 100644 index 000000000..2fba560d9 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.header.theme-has-dark-logo.css @@ -0,0 +1 @@ +@import url("@tacc/core-styles/dist/core-styles.header.theme-has-dark-logo.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.portal.css b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.portal.css new file mode 100644 index 000000000..e3843963c --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.portal.css @@ -0,0 +1 @@ +@import url("@tacc/core-styles/dist/core-styles.portal.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.wysiwyg.css b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.wysiwyg.css new file mode 100644 index 000000000..350fb8195 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.wysiwyg.css @@ -0,0 +1,2 @@ +/* TODO: Host Core-Styles static files on a CDN */ +@import url("@tacc/core-styles/dist/core-styles.wysiwyg.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/c-button.css b/taccsite_cms/static/site_cms/css/src/_imports/components/c-button.css index e2c563c20..3139b962b 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/c-button.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/c-button.css @@ -1,6 +1,9 @@ -@import url("@tacc/core-styles/src/lib/_imports/components/c-button.css"); -@import url("../settings/font.css"); +.c-button--primary, +.c-button--secondary, +.c-button--tertiary, +.c-button--is-active { + padding: 10px 20px; -.c-button:not(.c-button--as-link) { font-size: var(--global-font-size--small); + text-transform: uppercase; } diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms--errors-via-c-message.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms--errors-via-c-message.css new file mode 100644 index 000000000..2437996c0 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms--errors-via-c-message.css @@ -0,0 +1,23 @@ +@import url("@tacc/core-styles/src/lib/_imports/components/c-message.css"); +@import url("@tacc/core-styles/src/lib/_imports/components/c-message--expanded.css"); + + + +/* Errors */ + +.form-errors { + @extend :--c-message; + @extend :--c-message--type; + @extend :--c-message--type-error; + @extend :--c-message--scope; + @extend :--c-message--scope-section; + @extend :--c-message--type-error:--c-message--scope-section; +} +.field-errors li { + @extend :--c-message; + @extend :--c-message--type; + @extend :--c-message--type-error; + @extend :--c-message--scope; + @extend :--c-message--scope-inline; + @extend :--c-message--type-error:--c-message--scope-inline; +} diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.forms.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms.css similarity index 74% rename from taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.forms.css rename to taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms.css index 782e5f9fc..daad3f6a9 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.forms.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms.css @@ -1,17 +1,7 @@ -/* -Django CMS Form Components - -These styles are only for forms created by the Django CMS Form plugin. - -Reference: - -- [Django CMS Form Default Template](https://github.com/avryhof/djangocms-forms/blob/master/djangocms_forms/templates/djangocms_forms/form_template/default.html) -- [TACC's Django CMS Form Default Template](https://github.com/TACC/Core-CMS/blob/master/taccsite_cms/templates/djangocms_forms/form_template/default.html) - -Styleguide Components.DjangoCMS.Forms -*/ @import url("@tacc/core-styles/src/lib/_imports/components/c-button.css"); -@import url("./django.cms.forms.hacks.css"); + +@import url("./django-cms-forms.hacks.css"); +@import url("./django-cms-forms--errors-via-c-message.css"); @@ -82,6 +72,7 @@ ul.checkboxselectmultiple label { display: flex; gap: 0.5em; align-items: center; + font-weight: revert; /* undo html-elements.cms.css */ } ul.radioselect li:last-child label, ul.checkboxselectmultiple li:last-child label { @@ -90,20 +81,6 @@ ul.checkboxselectmultiple li:last-child label { /* Field: Required, Asterisk, Important */ -.field-wrapper.required > label { - font-weight: var(--bold); -} -.field-wrapper.required > label .asterisk { - font-weight: var(--regular); -} - -/* To not render space from markup between label and asterisk */ -/* FAQ: The `:has(sup, sub)` prevents a 7 from being too high/low */ -.field-wrapper.required:has(label .asterisk) label:has(sub, sup) { - display: flex; - align-items: center; -} - .field-wrapper .asterisk { margin-left: 0.5em; } @@ -137,13 +114,22 @@ ul.checkboxselectmultiple li:last-child label { /* Errors */ -.field-errors { - font-size: var(--global-font-size--small); -} .field-errors ul { margin-top: 1rem; /* mimic ul margin-bottom */ +} +.form-errors ul, +.field-errors ul { margin-bottom: 0; /* overwrite ul margin-bottom */ } +.form-errors { + margin-bottom: 1rem; /* mimic ul margin-bottom */ +} + +.form-errors ul, +.field-errors ul { + list-style: none; + padding-inline: 0; +} @@ -168,8 +154,21 @@ ul.checkboxselectmultiple { /* Button */ -.form-button, +/* To style obvious buttons that neglect class */ .button-wrapper button[type="submit"] { - @extend .c-button; - @extend .c-button--primary; + @extend :--c-button; + @extend :--c-button--primary; +} + +.form-button { + @extend :--c-button; +} +.form-button[type="submit"] { + @extend :--c-button--primary; +} +.form-button:where(:not([type="submit"], [type="reset"])) { + @extend :--c-button--secondary; +} +.form-button[type="reset"] { + @extend :--c-button--tertiary; } diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.forms.hacks.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms.hacks.css similarity index 64% rename from taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.forms.hacks.css rename to taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms.hacks.css index 2dc40f254..059b5fe61 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.forms.hacks.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms.hacks.css @@ -16,40 +16,33 @@ Styleguide Components.DjangoCMS.Forms.Hacks @custom-selector :--problem-field .field-wrapper.checkboxselectmultiple.required; -/* HACK: Messages about a required multi-checkbox field */ +/* To inform user or admin about unsupported required multi-checkbox field */ +/* HACK: This does not solve the problem; it just announces it */ +/* NOTE: Were we to @extend :--c-message, generated selectors become messy */ :--problem-field > label::after { display: block; margin-top: 0.5em; - /* To mimic c-message */ - /* https://github.com/TACC/tup-ui/blob/main/libs/core-styles/src/lib/_imports/components/c-message.css */ + /* To override styles inherited from `django-cms-forms.css` */ + font-weight: normal; + padding: 15px 20px; border: var(--global-border--thick); font-size: var(--global-font-size--small); - /* TACC/Core-CMS#531: When merged, import and extend `.c-message(...)` */ - /* @extend .c-message; */ } /* To give error to admin */ html:--cms-edit-mode :--problem-field > label::after { content: 'A multi checkbox field that is required is not well implemented. Do not require this field or replace it with multiple required Yes/No radio fields.'; - /* To mimic c-message c-message-error */ - /* https://github.com/TACC/tup-ui/blob/main/libs/core-styles/src/lib/_imports/components/c-message.css */ color: var(--global-color-danger--dark); background-color: var(--global-color-danger--weak); border-color: var(--global-color-danger--normal); - /* TACC/Core-CMS#531: When merged, import and extend `.c-message(...)` */ - /* @extend .c-message--error; */ } /* To give warning to user */ html:not(:--cms-edit-mode) :--problem-field > label::after { content: 'This field is not well implemented. Select all boxes to bypass the error with this field.'; - /* To mimic c-message c-message-warning */ - /* https://github.com/TACC/tup-ui/blob/main/libs/core-styles/src/lib/_imports/components/c-message.css */ color: var(--global-color-warning--dark); background-color: var(--global-color-warning--weak); border-color: var(--global-color-warning--normal); - /* TACC/Core-CMS#531: When merged, import and extend `.c-message(...)` */ - /* @extend .c-message--warning; */ } diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms/config.yml b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms/config.yml new file mode 100644 index 000000000..75f29a120 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms/config.yml @@ -0,0 +1,4 @@ +label: Django CMS Forms +context: + shouldLoadCMS: true + shouldLoadBootstrap: true diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms/django-cms-forms.hbs b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms/django-cms-forms.hbs new file mode 100644 index 000000000..fe739c42c --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms/django-cms-forms.hbs @@ -0,0 +1,407 @@ +

+ This component is maintained simuiltaneously with C Form and should look identical. Eventually, the two should have a single source of truth. To learn more, read (Confluence) APCD - Form Markup & Styles. +

+
+ +

Title of Form

+
+ I describe the form, but not very well. +
+ +
+
+ + +
+ + + + + + +
+ We use this to identify your submission. +
+
+ +
+ + + + + + +
+ Choose your favorite fruit. +
+
+ +
+ + + + + + +
+ We use this to know when to wake you up. +
+
+ +
+ + + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+ +
+ Which radio stations do you prefer? +
+
+ +
+ + + + + + +
+ Are you checking out today? +
+
+ +
+ + + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ +
+ + + + + + +
+ At which time of day do you get hangry? +
+
+ +
+ + + + + + +
+ Go on, tell me everything. +
+
+ +
+ + + + + + +
+ Please enter today's date. +
+
+ +
+ + + + + + +
+ Upload your favorite image. + + Supported types: + .jpeg,.jpg,.gif,.png + +
+
+ +
+ + + + + + +
+
+ +
+ + + +
+
+
+ +
+ + + + diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms/readme.md b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms/readme.md new file mode 100644 index 000000000..795968004 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-forms/readme.md @@ -0,0 +1,20 @@ +To style forms built by [Django CMS forms][djcms-forms]. + +> **⚠️ Important** +> +> **Only** intended for [Django CMS forms][djcms-forms]. To style a form **not** using that plugin, use [TACC form component]({{path './c-form' }}). + +> **ⓘ Notice** +> +> Most of the markup can be seen at [template][djcms-forms-tpl]. Some of the classes and markup come from [Django form field widgets][django-form-widgets]. + +[djcms-forms]: https://pypi.org/project/djangocms-forms-maintained/ "DjangoCMS-Forms (Maintained)" +[djcms-forms-tpl]: https://github.com/avryhof/djangocms-forms/blob/ab38b22/djangocms_forms/templates/djangocms_forms/form_template/default.html "DjangoCMS Forms (Maintained) Template" +[django-form-widgets]: https://docs.djangoproject.com/en/2.2/ref/forms/widgets/ "Django Form Widgets" + + diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-video.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-video.css new file mode 100644 index 000000000..6c80c35b8 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django-cms-video.css @@ -0,0 +1,8 @@ +.embed-responsive:not([class*="embed-responsive-"]) +:is(.embed-responsive-item, embed, iframe, object, video) { + /* To overwrite Bootstrap _embed */ + position: unset; + top: unset; + bottom: unset; + left: unset; +} diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.css index 70db82b45..f6d45e44a 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.css @@ -10,6 +10,7 @@ Reference: Styleguide Components.DjangoCMS.Blog.App */ @import url("@tacc/core-styles/src/lib/_imports/components/bootstrap.pagination.css"); +@import url("@tacc/core-styles/src/lib/_imports/components/c-tag.css"); @import url("./django.cms.blog.app.page.css"); @import url("./django.cms.blog.app.item.css"); @@ -21,7 +22,7 @@ Styleguide Components.DjangoCMS.Blog.App /* Variables */ .app-blog { - --blog-item-buffer: 20px; + --article-buffer: 20px; } @@ -33,21 +34,47 @@ Styleguide Components.DjangoCMS.Blog.App @custom-selector :--article article; @custom-selector :--article-page article.post-detail; @custom-selector :--article-list .blog-list; +@custom-selector :--article-list--as-list .blog-list:not(.as-grid); +@custom-selector :--article-list--as-grid .blog-list.as-grid; @custom-selector :--article-item .blog-list article; +@custom-selector :--article-item--in-list .blog-list:not(.as-grid) article; +@custom-selector :--article-item--in-grid .blog-list.as-grid article; -/* Header */ +/* Generic */ -.blog-list > header { - margin-bottom: var(--blog-item-buffer); +.app-blog { + /* To control absolute position of descendants e.g. `.blog-visual` */ + position: relative; } -ul.post-detail { + + +/* Header */ + +.app-blog header { + display: grid; + grid-template-areas: + 'cats' + 'tags' + 'attr' + 'head' + 'subh'; +} +:--article-page h1, +:--article-item h3 { grid-area: head } +:--article-page h2, +:--article-item h4 { grid-area: subh } +.app-blog .attrs { grid-area: attr } +.app-blog .categories { grid-area: cats } +.app-blog .tags { grid-area: tags } + +.app-blog ul.post-detail { list-style: none; padding-left: 0; /* overwrite html-elements.css */ - margin-bottom: 0; /* overwrite Bootstrap `reboot.css` */ + margin-bottom: 0.25em; /* overwrite html-elements.css */ font-size: var(--global-font-size--medium); } @@ -56,17 +83,58 @@ ul.post-detail { /* Metadata */ -/* To (optionally) hide tags & categories */ +/* To layout data */ +.app-blog .attrs, +.app-blog .tags, +.app-blog .categories { + display: flex; + flex-direction: row; + gap: 1em; +} +.app-blog .attrs { + justify-content: space-between; +} +.app-blog .date { + order: -1 +} + +/* To conditionally hide tags & categories */ .app-blog.no-tags :--article .tags, .app-blog.no-categories :--article .categories { display: none; } +/* To hide empty tags & categories */ +:--article .tags:empty, +:--article .categories:empty { + display: none; +} + +/* To style categories as "tags" (the UI pattern) */ +.app-blog .categories a { + @extend :--c-tag; + + display: inline-block; + + color: var(--global-color-primary--xx-light); + background-color: var(--global-color-primary--xx-dark); + + font-size: var(--global-font-size--x-small); +} + +/* To style tags as "pills" (the UI pattern) */ +.app-blog .tags a { + /* TODO: When available in Core-Styles, uncomment this */ + /* @extend :--c-pill; */ + + background-color: var(--global-color-primary--light); +} + /* Pagination */ .pagination { - margin-block: calc( var(--blog-item-buffer) * 2 ); + margin-block: calc( var(--article-buffer) * 2 ); } diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.item.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.item.css index 29e1ad6cd..e22ed70bb 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.item.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.item.css @@ -11,7 +11,6 @@ Styleguide Components.DjangoCMS.Blog.App.Item @import url("@tacc/core-styles/src/lib/_imports/tools/x-truncate.css"); @import url("_imports/tools/media-queries.css"); -@import url("_imports/tools/selectors.css"); @@ -19,16 +18,15 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* List */ -/* To have two columns at certain viewport widths */ -@media (--xx-narrow-to-x-narrow), (--x-narrow-to-narrow) { - :--article-list { - display: grid; - grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); - column-gap: 40px; - } - :--article-list > :where(header, nav) { - grid-column: 1 / -1; - } +/* To support rendering list as a grid */ +:--article-list--as-grid { + display: grid; + grid-template-columns: repeat( auto-fit, minmax(350px, 1fr) ); + column-gap: var(--global-space--pattern-pad); +} +/* So page title spans all columns */ +:--article-list--as-grid > header { + grid-column: 1 / -1; } @@ -41,38 +39,53 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* Item (Structure) */ +/* For basic layout */ :--article-item { display: grid; + column-gap: 50px; /* for horz. space between image and content */ + border-bottom: var(--global-border-width--normal) solid var(--global-color-primary--dark); - margin-bottom: var(--blog-item-buffer); - padding-bottom: var(--blog-item-buffer); + margin-bottom: var(--article-buffer); + padding-bottom: var(--article-buffer); } +:--article-item header { grid-area: head } +:--article-item .blog-visual { grid-area: media } +:--article-item .blog-lead { grid-area: desc } -/* To have vertical layout for narrow viewports */ -@media (--narrow-and-below) { - :--article-item { +/* For layout options */ +.x-blog-grid-item { grid-template-areas: 'media' 'head' 'desc'; /* To prevent content from overflowing cell */ grid-template-columns: minmax(0, 1fr); - } + /* To prevent vertical stretch of rows */ + grid-auto-rows: min-content; } -/* To have horizontal layout for wide viewports */ -@media (--narrow-and-above) { - :--article-item { +.x-blog-list-item { grid-template-areas: 'media head' 'media desc'; - /* To have shrinkwrapped media and flexible text content */ + /* To shrinkwrap media and flexible text content */ grid-template-columns: minmax(0, max-content) 1fr; + /* To let 'desc' take remaining space (removes gap between head and desc) */ + grid-template-rows: min-content 1fr; +} +@media (--narrow-and-below) { + :--article-item { + @extend .x-blog-grid-item; + } +} +@media (--narrow-and-above) { + :--article-item--in-list { + @extend .x-blog-list-item; + } + :--article-item--in-grid { + @extend .x-blog-grid-item; } } -:--article-item header { grid-area: head } -:--article-item .blog-visual { grid-area: media } -:--article-item .blog-lead { grid-area: desc } @@ -86,114 +99,19 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* Header (Structure) */ :--article-item header { - display: grid; - position: relative; /* for `position: absolute` children */ - - min-width: 0; /* to support truncation */ - - grid-template-areas: - var(--row-one-areas, 'cats tags') - 'attr attr' - 'head subh'; - - /* To truncate 'subh' fully before truncating 'head' */ - /* CAVEAT: 'cats' is truncated but 'tags' never is */ - grid-template-columns: minmax(0, max-content) 1fr; -} -:--article-item h3 { grid-area: head } -:--article-item h4 { grid-area: subh } -:--article-item .attrs { grid-area: attr } -:--article-item .categories { grid-area: cats } -:--article-item .tags { - grid-area: tags; - - /* To span top row and align right */ - justify-content: end; -} - -/* To (optionally) hide tags & categories */ -.app-blog.no-categories.no-tags :--article-item header { - grid-template-areas: - 'head subh' - 'attr attr'; - - margin-bottom: 20px; -} -.app-blog:not(.no-categories.no-tags) :--article-item header { margin-bottom: 5px; } -.app-blog.no-categories:not(.no-tags) :--article-item header { - --row-one-areas: 'tags tags'; -} -.app-blog.no-tags:not(.no-categories) :--article-item header { - --row-one-areas: 'cats cats'; -} /* Header - Title */ -:--article-item h3, -:--article-item h4 { - margin-block: unset; /* overwrite html-elements.css */ - font-size: var(--global-font-size--large); +:--article-item h3 { + margin-bottom: unset; /* overwrite Core-Styles headings--cms.css */ } -:--article-item h3 a, /* truncate a not h3 so :focus-visible is not cropped */ :--article-item h4 { - @extend %x-truncate--one-line; -} -:--article-item h4 { - text-transform: none; /* overwrite html-elements.css */ - - /* To style subtitle differently than title */ - /* CAVEAT: Font-weight change switches to font that has different alignment */ - transform: translateY(2px); /* HACK: tweak vertical alignment */ - font-weight: var(--regular); -} -:--article-item h4::before { - content: ': '; -} -:--article-item h3 a { - display: block; /* to prevent grid blowout */ - color: var(--global-color-primary--xx-dark); -} - - - -/* Header - Metadata (Structure) */ - -:--article-item .attrs, -:--article-item .tags { - display: flex; - flex-wrap: nowrap; - flex-direction: row; - gap: 2em; -} -:--article-item .tags { align-items: center } - -/* To truncate all metadata */ -:--article-item :is(.byline, .date) { - display: flex; - flex-direction: row; - flex-wrap: nowrap; - - /* To allow truncation */ - min-width: 0; - - /* To limit text to one line */ - height: 1.4em; /* ~ line-height */ - overflow: hidden; + display: none; } -:--article-item .date span, -:--article-item .byline a, -:--article-item .tags li, -:--article-item .categories li, -:--article-item .categories::before { @extend %x-truncate--one-line } - -:--article-item .tags:empty, -:--article-item .categories:empty { display: none } - -:--article-item .date { order: -1 } @@ -204,26 +122,11 @@ Styleguide Components.DjangoCMS.Blog.App.Item } :--article-item .attrs { - margin-block: 2px 6px; - - font-size: var(--global-font-size--x-small); color: var(--global-color-primary--dark); } -:--article-item .attrs a { color: inherit } - -:--article-item .categories { - font-weight: var(--bold); - font-size: var(--global-font-size--x-small); - text-transform: uppercase; -} -:--article-item .categories a { color: var(--global-color-primary--xx-dark) } - -/* NOTE: Mimicking .attrs styles until we have a design */ -:--article-item .tags { - font-size: var(--global-font-size--x-small); - color: var(--global-color-primary--dark); +:--article-item .attrs a { + color: inherit; } -:--article-item .tags a { color: inherit } @@ -231,32 +134,30 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* Visual */ -:--article-item .blog-visual:not(:empty) { - /* To align any small image inside (useless with some image sizes) */ - display: grid; - align-items: center; - justify-items: center; -} :--article-item .blog-visual:empty { display: none; } -/* To support vertical layouts at narrow viewports */ +/* To support vertical article layouts */ +/* FAQ: In simple layouts, the media element is the grid cell */ +/* FAQ: In complex layouts, the media element is within the grid cell */ +.x-blog-grid-item-media-cell { + margin-bottom: 15px; /* to add space between image and content */ +} +.x-blog-grid-item-media-element-in-cell { + max-width: 100%; /* to prevent overflow if column is narrower than image */ + height: auto; /* to preserve ratio if width is reduced (by max-width: 100%) */ +} @media (--narrow-and-below) { - :--article-item .blog-visual:not(:empty) { - height: 140px; /* for consistent image height */ - margin-bottom: 15px; - } - :--article-item .blog-visual img { - max-width: 100%; /* to prevent overflow if column is narrower */ - height: auto; /* to maintain aspect ratio if width changes */ + :--article-item .blog-visual { + @extend .x-blog-grid-item-media-cell; + & img { @extend .x-blog-grid-item-media-element-in-cell; } } } -/* To support horizontal layouts at wide viewports */ @media (--narrow-and-above) { - :--article-item .blog-visual:not(:empty) { - width: 255px; /* for consistent image width */ - margin-right: 50px; + :--article-item--in-grid .blog-visual { + @extend .x-blog-grid-item-media-cell; + & img { @extend .x-blog-grid-item-media-element-in-cell; } } } @@ -268,13 +169,19 @@ Styleguide Components.DjangoCMS.Blog.App.Item :--article-item .blog-lead { @extend %x-truncate--many-lines; - --lines: 3; + --lines: 4; line-height: 1.5; color: var(--global-color-primary--dark); } :--article-item .blog-lead p:last-child { - margin-bottom: 0 /* overwrite Boostrap */ + margin-bottom: 0 /* overwrite core-styles.cms */ +} + +/* To undo inline content styles */ +/* FAQ: In case author pasted such markup from another source */ +:--article-item .blog-lead [style] { + all: revert !important; /* force undo all inline styles */ } @@ -283,23 +190,16 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* Footer */ -/* If not editing, stretch "read more" atop the article */ -html:not(:--cms-edit-mode) .read-more a:hover { - --outline-offset: var(--blog-item-buffer); - @extend %x-article-link-hover; -} -html:not(:--cms-edit-mode) .read-more a:active { - @extend %x-article-link-active; -} -html:not(:--cms-edit-mode) .read-more { grid-area: 1 / 1 / -1 / -1 } -html:not(:--cms-edit-mode) .read-more { position: relative; } -html:not(:--cms-edit-mode) .read-more a { - @extend %x-article-link-stretch; - @extend %x-article-link-text; -} +/* To make image clickable via "read more" link */ +/* FAQ: This is not available via c-news, because c-news assumes + if image should be clickable, client would wrap it in a link */ +.read-more { + /* To cover the image exactly */ + display: grid; + grid-row-start: 1; + grid-column-start: 1; + grid-row-end: span 2; -/* If editing, hide "read more" */ -/* FAQ: User can: edit by double clicking abstract; visit by clicking title */ -html:--cms-edit-mode .read-more { - display: none; + /* To hide link text */ + font-size: 0; } diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.page.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.page.css index 3ff285594..ef39c816f 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.page.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.page.css @@ -7,16 +7,20 @@ Reference: Styleguide Components.DjangoCMS.Blog.App.Page */ +@import url("@tacc/core-styles/src/lib/_imports/objects/o-offset-content.css"); + @import url("./django.cms.blog.app.page.multimedia.css"); -/* Variables */ +/* Root */ :--article-page { - max-width: 665px; + --header-buffer: calc( var(--global-space--grid-gap) / 2 ); + + max-width: 775px; margin-inline: auto; } @@ -26,29 +30,28 @@ Styleguide Components.DjangoCMS.Blog.App.Page /* Header (Structure) */ -:--article-page .attrs { - display: flex; - justify-content: space-between; +:--article-page header { + grid-template-areas: + 'head' + 'subh' + 'cats' + 'tags' + 'attr'; } - +:--article-page header h1, :--article-page header h2 { + margin-bottom: var(--header-buffer); +} +:--article-page header h1 { font-size: var(--global-font-size--xxx-large); + + border-bottom: var(--global-border-width--normal) solid var(--global-color-primary--dark); } -:--article-page header h3 { - font-style: italic; +:--article-page header h2 { font-weight: normal; font-size: var(--global-font-size--large); } -:--article-page header :is(h3, h2 + .attrs) { - padding-top: 17px; - border-top: var(--global-border-width--normal) solid var(--global-color-primary--dark); -} - -:--article-page .date-published span { - display: none; -} - @@ -56,9 +59,19 @@ Styleguide Components.DjangoCMS.Blog.App.Page /* Media & Content */ :--article-page :is(.blog-visual, .blog-content) { - --blog-page-main-image-buffer: 45px; + --blog-item-media-buffer: 45px; + + margin-block: var(--blog-item-media-buffer) 60px; +} - margin-block: var(--blog-page-main-image-buffer); +/* To undo inline content styles */ +/* FAQ: In case author pasted such markup from another source */ +:--article-page .blog-content [style]:not( + [data-style="admin"], /* HACK: So CMS admin can override this */ + /* TODO: When using Core-Styles .c-news keep `flickrembed_` only in TACC */ + [id^="flickrembed_"] * /* HACK: So Flickr slideshow works */ +) { + all: revert !important; /* force undo all inline styles */ } @@ -75,14 +88,14 @@ Styleguide Components.DjangoCMS.Blog.App.Page :--article-page .blog-visual { display: grid; justify-content: center; - margin-bottom: var(--blog-page-main-image-buffer); + margin-bottom: var(--blog-item-media-buffer); } } /* To support horizontal layouts at wide viewports */ @media (--x-narrow-and-above) { :--article-page .blog-visual { float: left; - margin-right: var(--blog-page-main-image-buffer); + margin-right: var(--blog-item-media-buffer); } } @@ -110,3 +123,61 @@ Styleguide Components.DjangoCMS.Blog.App.Page :--article-page .blog-content li + li { margin-top: 0.5em; } + + + +/* Media & Content - Alignment */ +/* FAQ: The .align-... classes come from Bootstrap Picture */ +/* FAQ: The .blockquote.text-... classes come from Bootstrap Blockquote */ + +/* TODO: When extending Core-Styles c-news, .blockquote... is only for TACC */ +:--article-page .blog-content .align-left, +:--article-page .blog-content .blockquote.text-left { + @extend .o-offset-content--left; +} +:--article-page .blog-content .align-right, +:--article-page .blog-content .blockquote.text-right { + @extend .o-offset-content--right; +} +:--article-page .blog-content .blockquote.text-center { + margin-inline: auto; +} + +/* To always align Bootstrap blockquote text left */ +/* FAQ: Boostrap, loaded in foundation layer, used !important */ +/* TODO: When extending Core-Styles c-news, .blockquote... is only for TACC */ +@layer foundation { + :--article-page .blog-content .blockquote[class*="text-"] { + text-align: left !important; /* overwrite Bootstrap .text-... !important */ + } +} + +/* To remove margin on narrow screens */ +/* To overwrite @tacc/core-styles/…/components/align.css */ +@media (--narrow-and-below) { + :--article-page .blog-content .align-center, + :--article-page .blog-content .align-right, + :--article-page .blog-content .align-left { + max-width: unset; + } + :--article-page .blog-content .align-right, + :--article-page .blog-content .align-left { + float: unset; + margin-bottom: unset; + } + :--article-page .blog-content .align-right { + margin-left: unset; + } + :--article-page .blog-content .align-left { + margin-right: unset; + } +} + +/* To reduce image width on medium screens */ +@media (--narrow-and-above) and (--medium-and-below) { + :--article-page .blog-content .align-center, + :--article-page .blog-content .align-right, + :--article-page .blog-content .align-left { + max-width: 50%; + } +} diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.picture.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.picture.css index 1ff909456..d65dc581f 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.picture.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.picture.css @@ -1,37 +1,41 @@ -/* -Django CMS Picture - -Classes from [Django CMS Picture](https://github.com/django-cms/djangocms-picture#readme). - -Reference: - -- [Django CMS Picture `.align-` Classes](https://github.com/django-cms/djangocms-picture/blob/2.3.0/djangocms_picture/models.py#L24-L34) +/* To support djangocms-picture plugin unstyled default alignment classes */ +/* SEE: https://github.com/django-cms/djangocms-picture/blob/2.3.0/djangocms_picture/models.py#L24-L34 */ +@import url("@tacc/core-styles/src/lib/_imports/components/align.css"); -Styleguide Components.DjangoCMS.Picture +/* Try to auto-clear image floats */ +/* WARNING: The commented solution clears float BUT also negates float */ +/* +.align-right + *:not(img) { clear: right } +.align-left + *:not(img) { clear: left } */ - - -/* Default Values */ - -/* Support default alignment classes */ -.align-right, -.align-left { - margin-bottom: var(--global-space--grid-gap); +/* To apply djangocms-bootstrap4/…_picture class styles from parent to image */ +/* FAQ: TACC/Core-CMS moves (side effect) Picture classes to
or */ +/* SEE: taccsite_cms/templates/djangocms_picture/default/picture.html */ +:is(figure, a).img-fluid img { + max-width: 100%; + height: auto; } -.align-right { - float: right; - margin-left: var(--global-space--grid-gap); +:is(figure, a).img-thumbnail img { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 1rem; /* NOTE: Bootstrap used 0.25rem */ + max-width: 100%; + height: auto; } -.align-left { - float: left; - margin-right: var(--global-space--grid-gap); +:is(figure, a).rounded { + /* NOTE: Bootstrap used 0.25rem */ + border-radius: 1rem !important; /* overwrite Bootstrap (uses !important) */ } -.align-center { - display: block; - margin-inline: auto; +/* To undo some djangocms-bootstrap4/…_picture class styles on parent */ +/* FAQ: The duplicate styles on parent tags look odd or are unnecessary */ +:is(figure, a).img-thumbnail { + padding: unset; + background-color: unset; + border: unset; + border-radius: unset; +} +:is(figure, a).rounded { + border-radius: unset !important; /* overwrite Bootstrap (uses !important) */ } - -/* Try to auto clear image floats */ -.align-right + *:not(img) { clear: right } -.align-left + *:not(img) { clear: left } diff --git a/taccsite_cms/static/site_cms/css/src/_imports/config.yml b/taccsite_cms/static/site_cms/css/src/_imports/config.yml new file mode 100644 index 000000000..6a03334ee --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/config.yml @@ -0,0 +1,4 @@ +# This file configures CMS-specific pattern demo directory +label: Core CMS +context: + shouldLoadCMS: true diff --git a/taccsite_cms/static/site_cms/css/src/_imports/elements/figure-caption-blockquote.css b/taccsite_cms/static/site_cms/css/src/_imports/elements/figure-caption-blockquote.css new file mode 100644 index 000000000..c5129d166 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/elements/figure-caption-blockquote.css @@ -0,0 +1,24 @@ +@import url("@tacc/core-styles/src/lib/_imports/tools/x-figure.css"); +@import url("@tacc/core-styles/src/lib/_imports/tools/x-blockquote.css"); + +/* To style elements that are or have captions */ +figure, +.embed-responsive { + @extend .x-figure; +} +figcaption, +p.caption { + @extend .x-figure-caption; +} + +blockquote { + @extend .x-blockquote; +} +blockquote footer { + @extend .x-blockquote-caption; +} + +/* To remove extra whitespace beneath embeded content */ +.embed-responsive > * { + display: block; +} diff --git a/taccsite_cms/static/site_cms/css/src/_imports/settings/font.css b/taccsite_cms/static/site_cms/css/src/_imports/settings/font.css index 4f6b1531c..6d61b0dc4 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/settings/font.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/settings/font.css @@ -1,8 +1,4 @@ -@import url("@tacc/core-styles/src/lib/_imports/settings/font.css"); - :root { - --global-font-family--sans: var(--global-font-family--sans--cms); - /* FAQ: Used by TACC/Core-Styles `s-header` */ /* FAQ: Overwritten by TACC/Core-CMS-Resource:/texascale-org `props.font` */ --global-font-family: var(--global-font-family--sans); diff --git a/taccsite_cms/static/site_cms/css/src/_imports/tools/_tools.config.yml b/taccsite_cms/static/site_cms/css/src/_imports/tools/_tools.config.yml new file mode 100644 index 000000000..d68c00d88 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/tools/_tools.config.yml @@ -0,0 +1,2 @@ +context: + subdir: "tools" diff --git a/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap.css b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap.css new file mode 100644 index 000000000..340bc4201 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap.css @@ -0,0 +1,19 @@ +.x-drop-cap { + /* Drop the letter */ + float: left; + /* Estimate horizontal spacing to match magazine design */ + /* WARN: Firefox calculates `margin-…` differently here, so use `padding-…` */ + padding-right: 0.125em; /* approx: `1em` of normal text */ + + font-size: 6em; /* approx: 3 lines, of normal text, tall */ + + /* (Firefox v73) Nudge letter up until it meets top of normal text */ + /* CAVEAT: Also has effect in Safari and Chrome/Edge, but not enough */ + padding-top: 0.0625em; + /* (Safari v13, Chrome/Edge v80) Nudge letter up more until it meets top of normal text */ + /* MAGIC: Firefox does not need this */ + /* SEE: https://bugzilla.mozilla.org/show_bug.cgi?id=1233271 */ + /* MAGIC: Has no effect on Firefox */ + /* SEE: https://bugzilla.mozilla.org/show_bug.cgi?id=290125 */ + line-height: 0.65; +} diff --git a/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/config.yml b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/config.yml new file mode 100644 index 000000000..4d6043bc3 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/config.yml @@ -0,0 +1,3 @@ +context: + shouldLoadCMS: true + 📝 shouldLoadCMS: because, in CMS, `shouldSkipPattern` "false" would not find stylesheet assets from CMS; but `shouldLoadCMS` lets site.cms.css provide x-drop-cap via s-drop-cap import diff --git a/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/example.css b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/example.css new file mode 100644 index 000000000..a576870d6 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/example.css @@ -0,0 +1,9 @@ +/* This CSS is EXAMPLE code for a client. It is NOT part of the pattern. */ +/* (only works on TACC clients using PostCSS) */ +/* +@import url('../x-drop-cap.css'); + +.element-whose-first-paragraph-needs-drop-cap > p:first-of-type::first-letter { + @extend .x-drop-cap; +} +*/ diff --git a/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/readme.md b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/readme.md new file mode 100644 index 000000000..7a653b1ca --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/readme.md @@ -0,0 +1,9 @@ +Create drop-cap on any element. + +> **ⓘ Notice** +> +> To easily apply this, see [s-drop-cap]({{path './trumps/s-drop-cap' }}). + +> **☞ Remember** +> +> This class is designed to extended by your own CSS. For expected usage example, see example.css "File" from "Assets" tab. diff --git a/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/x-drop-cap.hbs b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/x-drop-cap.hbs new file mode 100644 index 000000000..c5e63feb4 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/tools/x-drop-cap/x-drop-cap.hbs @@ -0,0 +1,5 @@ +
+

Lorem Ipsum

+

The first letter of this paragraph should have been converted to a drop-cap. The first letters of the following paragraphs should not have been. {{> @text-of-one-paragraph-long }}

+

{{> @text-of-one-paragraph-long }}

+
diff --git a/taccsite_cms/static/site_cms/css/src/_imports/trumps/_trumps.config.yml b/taccsite_cms/static/site_cms/css/src/_imports/trumps/_trumps.config.yml new file mode 100644 index 000000000..d763eee5a --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/trumps/_trumps.config.yml @@ -0,0 +1,3 @@ +label: Trumps (Utilities & Scopes) +context: + subdir: "trumps" diff --git a/taccsite_cms/static/site_cms/css/src/_imports/trumps/s-drop-cap.css b/taccsite_cms/static/site_cms/css/src/_imports/trumps/s-drop-cap.css new file mode 100644 index 000000000..8297c3778 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/trumps/s-drop-cap.css @@ -0,0 +1,5 @@ +@import url('../tools/x-drop-cap.css'); + +.s-drop-cap > p:first-of-type::first-letter { + @extend .x-drop-cap; +} diff --git a/taccsite_cms/static/site_cms/css/src/_imports/trumps/s-drop-cap/readme.md b/taccsite_cms/static/site_cms/css/src/_imports/trumps/s-drop-cap/readme.md new file mode 100644 index 000000000..f2708bcbb --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/trumps/s-drop-cap/readme.md @@ -0,0 +1 @@ +Create drop-cap from first letter of first direct-child paragraph. diff --git a/taccsite_cms/static/site_cms/css/src/_imports/trumps/s-drop-cap/s-drop-cap.hbs b/taccsite_cms/static/site_cms/css/src/_imports/trumps/s-drop-cap/s-drop-cap.hbs new file mode 100644 index 000000000..15ad4a97a --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/trumps/s-drop-cap/s-drop-cap.hbs @@ -0,0 +1,5 @@ +
+

Lorem Ipsum

+

{{> @text-of-one-paragraph-long }}

+

{{> @text-of-one-paragraph-long }}

+
diff --git a/taccsite_cms/static/site_cms/css/src/_migrations/v1_v0-core-styles.css b/taccsite_cms/static/site_cms/css/src/_migrations/v1_v0-core-styles.css new file mode 100644 index 000000000..b473c5434 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_migrations/v1_v0-core-styles.css @@ -0,0 +1,3 @@ +/* DO NOT ADD STYLES HERE; ONLY IMPORT OTHER STYLESHEETS */ + +@import url("./v1_v0-core-styles/settings/font.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_migrations/v1_v0-core-styles/settings/font.css b/taccsite_cms/static/site_cms/css/src/_migrations/v1_v0-core-styles/settings/font.css new file mode 100644 index 000000000..acb0f3416 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_migrations/v1_v0-core-styles/settings/font.css @@ -0,0 +1,13 @@ +/* +Core CMS font sizes before Core-Styles v1.1.0 +HOW: Migrated original font-sizes to here +SRC: https://github.com/TACC/Core-Styles/blob/v1.0.0/src/lib/_imports/settings/font.css#L35-L41 +SEE: https://confluence.tacc.utexas.edu/x/nh4FDg +*/ +:root { + --global-font-size--x-small: 1.1rem; + --global-font-size--small: 1.4rem; + --global-font-size--medium: 1.6rem; + --global-font-size--large: 2.0rem; + --global-font-size--x-large: 2.6rem; +} diff --git a/taccsite_cms/static/site_cms/css/src/site.cms.css b/taccsite_cms/static/site_cms/css/src/site.cms.css new file mode 100644 index 000000000..c94bab3ed --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/site.cms.css @@ -0,0 +1,19 @@ +/* DO NOT ADD STYLES HERE; ONLY IMPORT OTHER STYLESHEETS */ + +/* Organize via ITCSS */ +/* https://confluence.tacc.utexas.edu/x/IAA9Cw */ + +@import url("./_imports/settings/font.css"); + +@import url("./_imports/elements/figure-caption-blockquote.css"); + +@import url("./_imports/components/c-button.css"); +@import url("./_imports/components/django.cms.css"); +@import url("./_imports/components/django.cms.blog.css"); +@import url("./_imports/components/django-cms-forms.css"); +@import url("./_imports/components/django-cms-icon.css"); +@import url("./_imports/components/django.cms.post.css"); +@import url("./_imports/components/django.cms.picture.css"); +@import url("./_imports/components/django-cms-video.css"); + +@import url("./_imports/trumps/s-drop-cap.css"); diff --git a/taccsite_cms/static/site_cms/css/src/site.css b/taccsite_cms/static/site_cms/css/src/site.css index feedb41ba..4f7c31dcd 100644 --- a/taccsite_cms/static/site_cms/css/src/site.css +++ b/taccsite_cms/static/site_cms/css/src/site.css @@ -18,6 +18,7 @@ /* Unique to CMS */ @import url("./_imports/settings/color.css"); @import url("./_imports/settings/font.css"); +@import url("./_migrations/v1_v0-core-styles.css"); /* GENERICS */ /* Bootstrap performs much of this */ @@ -25,19 +26,16 @@ /* ELEMENTS */ /* Bootstrap performs much of this */ -@import url("@tacc/core-styles/src/lib/_imports/elements/html-elements.cms.css"); -@import url("@tacc/core-styles/src/lib/_imports/elements/form.cms.css"); +/* Core-Styles provides much of this */ @import url("@tacc/core-styles/src/lib/_imports/elements/links.css"); @import url("@tacc/core-styles/src/lib/_imports/elements/table.css"); /* Load custom element styles within custom element, not here */ /* OBJECTS */ -@import url("_imports/objects/o-grid.css"); -@import url("_imports/objects/o-float-content.css"); -@import url("_imports/objects/o-offset-content.css"); -@import url("_imports/objects/o-section.css"); +/* Core-Styles provides much of this */ /* COMPONENTS */ +@import url("@tacc/core-styles/src/lib/_imports/components/c-button.css"); @import url("_imports/components/c-card.css"); @import url("_imports/components/c-callout.css"); @import url("_imports/components/c-data-list.css"); @@ -52,7 +50,7 @@ @import url("./_imports/components/c-button.css"); @import url("./_imports/components/django.cms.css"); @import url("./_imports/components/django.cms.blog.css"); -@import url("./_imports/components/django.cms.forms.css"); +@import url("./_imports/components/django-cms-forms.css"); @import url("./_imports/components/django-cms-icon.css"); @import url("./_imports/components/django.cms.post.css"); @import url("./_imports/components/django.cms.picture.css"); diff --git a/taccsite_cms/static/site_cms/css/src/site.header.css b/taccsite_cms/static/site_cms/css/src/site.header.css index 2afbf01e7..a8e1848ce 100644 --- a/taccsite_cms/static/site_cms/css/src/site.header.css +++ b/taccsite_cms/static/site_cms/css/src/site.header.css @@ -19,7 +19,7 @@ /* FP-526: Consider loading Cortal icons with as delayed asset */ /* NOTE: This import is duplicated from `icon.css` because `@font-face` is ineffectual in Shadow DOM (where `site.tacc-search-bar.css` is loaded) */ /* SEE: https://bugs.chromium.org/p/chromium/issues/detail?id=336876 */ -@import url("_imports/trumps/icon.fonts.css"); +@import url("@tacc/core-styles/dist/components/cortal.icon.css"); /* FAQ: Because of third-party code and a rush to style the Frontera header (which meant maintaining existing markup), scope classes were used for - the header diff --git a/taccsite_cms/static/site_cms/css/src/site.tacc-search-bar.css b/taccsite_cms/static/site_cms/css/src/site.tacc-search-bar.css index 7919cc6db..ed30bd3cb 100644 --- a/taccsite_cms/static/site_cms/css/src/site.tacc-search-bar.css +++ b/taccsite_cms/static/site_cms/css/src/site.tacc-search-bar.css @@ -8,7 +8,7 @@ /* TRUMPS */ /* Shared with Portal */ -@import url("_imports/trumps/icon.css"); +@import url("@tacc/core-styles/dist/components/cortal.icon.css"); @import url("_imports/trumps/u-hide.css"); @import url("_imports/trumps/tacc-search-bar.css"); diff --git a/taccsite_cms/static/site_cms/js/modules/switchLayout.js b/taccsite_cms/static/site_cms/js/modules/switchLayout.js new file mode 100644 index 000000000..20c3cd1c4 --- /dev/null +++ b/taccsite_cms/static/site_cms/js/modules/switchLayout.js @@ -0,0 +1,72 @@ +/** + * Supported layouts and their class names + * @enum {string} + */ +const LAYOUT_CLASS_DICT = { + grid: 'as-grid', + list: 'as-list', +}; + +/** + * Change class of element based on choice from a form + * @param {HTMLElement} content - The element on which to switch layout class + * @param {HTMLNodeList} formChoices - The elements by which user chooses layout + * @param {object.} [layoutClassDict=LAYOUT_CLASS_DICT] - Class name for each layout + */ +export default function switchLayout( + content, + formChoices, + layoutClassDict = LAYOUT_CLASS_DICT +) { + [ ...formChoices ].forEach( choice => { + choice.addEventListener('click', () => { + const layout = getLayout( formChoices ); + + switchClass( content, layout, layoutClassDict ); + }); + }); +} + +/** + * To get the chosen layout + * @param {HTMLNodeList} formChoices - The elements by which user chooses layout + * @returns {string} + * @see https://stackoverflow.com/a/36894871 + */ +function getLayout(formChoices) { + let layout; + for ( const choice of formChoices ) { + if ( choice.checked ) { + layout = choice.value; + break; + } + } + return layout; +} + +/** + * To change class based on given layout + * @param {HTMLElement} content - The element on which to switch layout class + * @param {string} layout - The layout to use + * @param {object.} [layoutClassDict=LAYOUT_CLASS_DICT] - Class name for each layout + * @see https://stackoverflow.com/a/36894871 + */ +function switchClass( content, layout, layoutClassDict ) { + let layoutClass; + + // Remove unselected + for ( const layoutName in layoutClassDict ) { + if ( layoutName !== layout ) { + layoutClass = layoutClassDict[layoutName]; + content.classList.remove( layoutClass ); + } + } + + // Add selected + if ( layout in layoutClassDict ) { + layoutClass = layoutClassDict[layout]; + content.classList.add( layoutClass ); + } else { + console.info(`The layout "${layout}" is unknown`); + } +} diff --git a/taccsite_cms/templates/assets_core.html b/taccsite_cms/templates/assets_core.html new file mode 100644 index 000000000..0546517c4 --- /dev/null +++ b/taccsite_cms/templates/assets_core.html @@ -0,0 +1,10 @@ +{# SEE: ./assets_core.md #} +{% load static %} + + diff --git a/taccsite_cms/templates/assets_core.md b/taccsite_cms/templates/assets_core.md new file mode 100644 index 000000000..0e1cef0a3 --- /dev/null +++ b/taccsite_cms/templates/assets_core.md @@ -0,0 +1,3 @@ +# TACC CMS - Templates - Core + +The `assets_core(…).html` templates are "the new way" (since Core-Styles v1.0.0) to load assets. diff --git a/taccsite_cms/templates/assets_core_cms.html b/taccsite_cms/templates/assets_core_cms.html new file mode 100644 index 000000000..a6887f8b4 --- /dev/null +++ b/taccsite_cms/templates/assets_core_cms.html @@ -0,0 +1,9 @@ +{# SEE: ./assets_core.md #} +{% load static %} + + diff --git a/taccsite_cms/templates/assets_core_delayed.html b/taccsite_cms/templates/assets_core_delayed.html new file mode 100644 index 000000000..c8dd37319 --- /dev/null +++ b/taccsite_cms/templates/assets_core_delayed.html @@ -0,0 +1,21 @@ +{# SEE: ./assets_core.md #} +{% load static %} + +{# FAQ: Bootstrap can use jQuery, Popper, then its own script #} +{# SEE: https://getbootstrap.com/docs/4.0/getting-started/introduction/#starter-template #} + + + + diff --git a/taccsite_cms/templates/assets_custom.html b/taccsite_cms/templates/assets_custom.html index 180a8a80a..2b569fa45 100644 --- a/taccsite_cms/templates/assets_custom.html +++ b/taccsite_cms/templates/assets_custom.html @@ -1,4 +1,4 @@ -{% load staticfiles %} +{% load static %} {# Load assets as external files, to cache independently of markup. #} {% comment %} diff --git a/taccsite_cms/templates/assets_font.html b/taccsite_cms/templates/assets_font.html index 21bdfd7dd..33644c063 100644 --- a/taccsite_cms/templates/assets_font.html +++ b/taccsite_cms/templates/assets_font.html @@ -1,6 +1,6 @@ {# Load web fonts early #} {# SEE: https://confluence.tacc.utexas.edu/x/B4COCw #} -{% load staticfiles %} +{% load static %} diff --git a/taccsite_cms/templates/assets_site.html b/taccsite_cms/templates/assets_site.html index 884377e33..4637ff241 100644 --- a/taccsite_cms/templates/assets_site.html +++ b/taccsite_cms/templates/assets_site.html @@ -1,5 +1,4 @@ -{% load staticfiles %} -{# @var settings #} +{% load static %} {# Load assets as external files, to cache independently of markup. #} {% comment %} @@ -13,6 +12,7 @@ + {# CAVEAT: Requires `npm run build` step before running the Django project. #} @@ -21,7 +21,7 @@ -{# Portal & Docs #} +{# "CEPv2" Portal & Frontera Docs #} {# FAQ: Websites that load CMS header should load these assets in this order #} {% comment %} {# To load externally-hosted font which is in the font stack of CMS styles #} diff --git a/taccsite_cms/templates/base.html b/taccsite_cms/templates/base.html index f1a975ae8..fdc16733c 100755 --- a/taccsite_cms/templates/base.html +++ b/taccsite_cms/templates/base.html @@ -1,4 +1,4 @@ -{% load cms_tags staticfiles sekizai_tags cache i18n meta %} +{% load cms_tags static sekizai_tags cache i18n meta %} {% get_current_language as lang_code %} {# The core site font (can be replaced or accompanied by custom font/s) #} {% block assets_font %} @@ -38,8 +40,17 @@ {# The core site assets (can NOT be replaced by custom assets) #} {% include 'assets_site.html' %} +{% elif settings.TACC_CORE_STYLES_VERSION >= 1 %} + + + {% include 'assets_core.html' %} + {% block assets_core_project %} + {% include 'assets_core_cms.html' %} + {% endblock assets_core_project %} + +{% endif %} + - {# Placeholder for custom assets #} {% block assets_custom %} {% include 'assets_custom.html' %} {% endblock assets_custom %} @@ -82,9 +93,18 @@ {% endblock footer %} +{% if settings.TACC_CORE_STYLES_VERSION == 0 %} + {% include 'assets_site_delayed.html' %} +{% elif settings.TACC_CORE_STYLES_VERSION >= 1 %} + + + {% include 'assets_core_delayed.html' %} + +{% endif %} + {% block assets_custom_delayed %} {% include 'assets_custom_delayed.html' %} diff --git a/taccsite_cms/templates/debug_js.html b/taccsite_cms/templates/debug_js.html index f1e11c036..ee767304f 100644 --- a/taccsite_cms/templates/debug_js.html +++ b/taccsite_cms/templates/debug_js.html @@ -1,4 +1,4 @@ -{% load staticfiles %} +{% load static %} {# Let all other scripts know that we are in debug mode #} {# CAVEAT: To be effectual, this file must load before other scripts (no `async`, no `defer`) #} diff --git a/taccsite_cms/templates/djangocms_blog/base.html b/taccsite_cms/templates/djangocms_blog/base.html index d6dc09ba3..dff1a32c6 100644 --- a/taccsite_cms/templates/djangocms_blog/base.html +++ b/taccsite_cms/templates/djangocms_blog/base.html @@ -14,13 +14,16 @@ {% endblock meta %} {% block content %} - +
+ {% include './tacc/layout-choice-form.html' with list_selector='.blog-list' %} {% block content_blog %}{% endblock %}
{% endblock content %} diff --git a/taccsite_cms/templates/djangocms_blog/includes/blog_meta.html b/taccsite_cms/templates/djangocms_blog/includes/blog_meta.html index 6d1739d4e..96eb4b4c4 100644 --- a/taccsite_cms/templates/djangocms_blog/includes/blog_meta.html +++ b/taccsite_cms/templates/djangocms_blog/includes/blog_meta.html @@ -16,9 +16,13 @@ {% endif %} {# TACC (add class so CSS can target this element): #}
  • - {# /TACC #} + {# TACC (show date if published otherwise show "Unpublished"): #} + {% if post.date_published %} + {# /TACC #} {# TACC (add and   so whitespace can be stripped): #} - {% trans "Published" %}  + {# TACC ("Published" vs "To be published"): #} + {% if post.publish %}{% trans "Published" %}{% else %}{% trans "To be published" %}{% endif %}  + {# /TACC #} {# /TACC #} {# TACC (wrap with
  • {% if post.date_featured %} {# TACC (add class so CSS can target this element): #}
  • {% trans "Uncategorized" %}
  • {% endif %} {# TACC (distinguish categories and tags via class): #} {# TACC (strip whitespace): #} diff --git a/taccsite_cms/templates/djangocms_blog/post_detail.html b/taccsite_cms/templates/djangocms_blog/post_detail.html index eb1d0b279..25c82c46a 100644 --- a/taccsite_cms/templates/djangocms_blog/post_detail.html +++ b/taccsite_cms/templates/djangocms_blog/post_detail.html @@ -15,9 +15,9 @@ {# /TACC #}
    -

    {% render_model post "title" %}

    +

    {% render_model post "title" %}

    {% if post.subtitle %} -

    {% render_model post "subtitle" %}

    +

    {% render_model post "subtitle" %}

    {% endif %} {% block blog_meta %} {% include "djangocms_blog/includes/blog_meta.html" %} diff --git a/taccsite_cms/templates/djangocms_blog/post_list.html b/taccsite_cms/templates/djangocms_blog/post_list.html index 6f4f4673a..9001f656b 100644 --- a/taccsite_cms/templates/djangocms_blog/post_list.html +++ b/taccsite_cms/templates/djangocms_blog/post_list.html @@ -13,13 +13,13 @@
    {% block blog_title %}
    -

    +

    {% if author %}{% trans "Articles by" %} {{ author.get_full_name }} {% elif archive_date %}{% trans "Archive" %} – {% if month %}{{ archive_date|date:'F' }} {% endif %}{{ year }} {% elif tagged_entries %}{% trans "Tag" %} – {{ tagged_entries|capfirst }} {% elif category %}{% trans "Category" %} – {{ category }} {% else %}{% trans "News" %}{% endif %} -

    +
    {% endblock %} {% for post in post_list %} diff --git a/taccsite_cms/templates/djangocms_blog/tacc/layout-choice-form.html b/taccsite_cms/templates/djangocms_blog/tacc/layout-choice-form.html new file mode 100644 index 000000000..07d223046 --- /dev/null +++ b/taccsite_cms/templates/djangocms_blog/tacc/layout-choice-form.html @@ -0,0 +1,26 @@ +{# @var list_selector #} + +{# To support user changing layout of news list #} +{# FAQ: The form is hidden, because styles are not complete #} +{# FAQ: The script is active, so new styles can be tested as a user #} + + diff --git a/taccsite_cms/templates/djangocms_forms/form_template/default.html.md b/taccsite_cms/templates/djangocms_forms/form_template/default.html.md index a4501efc8..5b1bffe06 100644 --- a/taccsite_cms/templates/djangocms_forms/form_template/default.html.md +++ b/taccsite_cms/templates/djangocms_forms/form_template/default.html.md @@ -11,4 +11,4 @@ But, to avoid that[^1], the two changes have been performed other ways: [original template]: https://github.com/avryhof/djangocms-forms/blob/ab38b22/djangocms_forms/templates/djangocms_forms/form_template/default.html [1]: https://github.com/avryhof/djangocms-forms/pull/12 -[2]: ../../../static/site_cms/css/src/_imports/components/django.cms.forms.css#L103 +[2]: ../../../static/site_cms/css/src/_imports/components/django-cms-forms.css#L167 diff --git a/taccsite_cms/templates/djangocms_picture/default/picture.html b/taccsite_cms/templates/djangocms_picture/default/picture.html new file mode 100644 index 000000000..5e37562fc --- /dev/null +++ b/taccsite_cms/templates/djangocms_picture/default/picture.html @@ -0,0 +1,115 @@ +{# https://github.com/django-cms/djangocms-picture/blob/3.0.0/djangocms_picture/templates/djangocms_picture/default/picture.html #} +{# TACC (mimic v3.0.0 to v4.0.0 changes): #} +{# TACC (support children as caption content): #} +{# {% load thumbnail %} #} +{% load thumbnail l10n cms_tags %} +{# /TACC #} +{# /TACC #} + +{% if picture_link %} + +{% endif %} + +{# start render figure/figcaption #} +{# TACC (support children as caption content): #} +{# {% if instance.caption_text %} #} +{% if instance.caption_text or instance.child_plugin_instances %} + {# TACC (assign attributes to parent): #} + {#
    #} +
    + {# /TACC #} +{% endif %} +{# /TACC #} +{# end render figure/figcaption #} + + +{# TACC (mimic v3.0.0 to v4.0.0 changes): #} +{% localize off %} +{# /TACC #} +{% if instance.attributes.alt %}{{ instance.attributes.alt }}{% elif instance.picture.default_alt_text %}{{ instance.picture.default_alt_text }}{% endif %} +{# TACC (mimic v3.0.0 to v4.0.0 changes): #} +{% endlocalize %} +{# /TACC #} + +{# start render figure/figcaption #} +{# {% if instance.caption_text %} #} +{% if instance.caption_text or instance.child_plugin_instances %} + {# TACC (support children as caption content): #} + {#
    {{ instance.caption_text }}
    #} +
    + {{ instance.caption_text }} + {% for plugin in instance.child_plugin_instances %} + {% render_plugin plugin %} + {% endfor %} +
    + {# /TACC #} +
    +{% endif %} +{# end render figure/figcaption #} + +{% if picture_link %} +
    +{% endif %} + +{% comment %} + # https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img + # https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure + # https://github.com/divio/django-filer/blob/master/filer/models/imagemodels.py + # http://easy-thumbnails.readthedocs.io/en/2.1/usage/#templates + {{ instance.picture }} + # Available variables: + {{ instance.img_src }} + {{ instance.width }} + {{ instance.height }} + {{ instance.alignment }} + {{ instance.caption_text }} + {{ instance.img_srcset_data }} or {{ img_srcset_data }} + {{ instance.attributes_str }} + # picture helper + {{ instance.get_size }} or {{ picture_size }} + # link settings + {{ instance.link_url }} + {{ instance.link_page }} + {{ instance.link_target }} + {{ instance.link_attributes_str }} + # link helper + {{ instance.get_link }} or {{ picture_link }} + # cropping settings + {{ instance.use_automatic_scaling }} + {{ instance.use_no_cropping }} + {{ instance.use_crop }} + {{ instance.use_upscale }} + {{ instance.thumbnail_options }} + # activate DJANGOCMS_PICTURE_NESTING to enable nested plugins: + {% for plugin in instance.child_plugin_instances %} + {% render_plugin plugin %} + {% endfor %} +{% endcomment %} diff --git a/taccsite_cms/templates/djangocms_video/responsive-auto/video_player.html b/taccsite_cms/templates/djangocms_video/responsive-auto/video_player.html new file mode 100644 index 000000000..f8b46938d --- /dev/null +++ b/taccsite_cms/templates/djangocms_video/responsive-auto/video_player.html @@ -0,0 +1,7 @@ +{% extends "djangocms_video/default/video_player.html" %} + +{% block content_video %} +
    + {{ block.super }} +
    +{% endblock content_video %} diff --git a/taccsite_cms/templates/guide.html b/taccsite_cms/templates/guide.html index 8615cae77..7164f4ec8 100644 --- a/taccsite_cms/templates/guide.html +++ b/taccsite_cms/templates/guide.html @@ -1,5 +1,5 @@ {% extends "fullwidth.html" %} -{% load cms_tags staticfiles %} +{% load cms_tags static %} {% block assets_custom %} {{ block.super }} diff --git a/taccsite_cms/templates/guides/getting_started.tam.html b/taccsite_cms/templates/guides/getting_started.tam.html index 3fcba975d..ed4c58579 100644 --- a/taccsite_cms/templates/guides/getting_started.tam.html +++ b/taccsite_cms/templates/guides/getting_started.tam.html @@ -1,5 +1,5 @@ {% extends "guide.html" %} -{% load cms_tags staticfiles tacc_uri_shortcuts %} +{% load cms_tags static tacc_uri_shortcuts %} {% block guide %} {% site_uri as site_uri %} diff --git a/taccsite_cms/templates/guides/getting_started.v2.html b/taccsite_cms/templates/guides/getting_started.v2.html index 923552862..2f58639a7 100644 --- a/taccsite_cms/templates/guides/getting_started.v2.html +++ b/taccsite_cms/templates/guides/getting_started.v2.html @@ -1,5 +1,5 @@ {% extends "guide.html" %} -{% load cms_tags staticfiles tacc_uri_shortcuts %} +{% load cms_tags static tacc_uri_shortcuts %} {% block guide %} {% site_uri as site_uri %} diff --git a/taccsite_cms/templates/header_branding.html b/taccsite_cms/templates/header_branding.html index 17705b5e7..36b0d4c4b 100644 --- a/taccsite_cms/templates/header_branding.html +++ b/taccsite_cms/templates/header_branding.html @@ -1,5 +1,5 @@ {# @var brands, className #} -{% load staticfiles custom_portal_settings %} +{% load static custom_portal_settings %} {% with settings.BRANDING as brands %}
    diff --git a/taccsite_cms/templates/header_logo.html b/taccsite_cms/templates/header_logo.html index 706c436b6..2378df871 100644 --- a/taccsite_cms/templates/header_logo.html +++ b/taccsite_cms/templates/header_logo.html @@ -1,5 +1,5 @@ {# @var logo, className #} -{% load staticfiles custom_portal_settings %} +{% load static custom_portal_settings %} {% with settings.LOGO as logo %} {% with filename=logo|index:1 selectors=logo|index:2 targeturl=logo|index:3 targettype=logo|index:4 accessibility=logo|index:5 corstype=logo|index:6 visibility=logo|index:7 %} diff --git a/taccsite_cms/templates/home_portal.html b/taccsite_cms/templates/home_portal.html index b8d7c1e4f..b99b5131b 100644 --- a/taccsite_cms/templates/home_portal.html +++ b/taccsite_cms/templates/home_portal.html @@ -1,5 +1,5 @@ {% extends "fullwidth.html" %} -{% load cms_tags staticfiles %} +{% load cms_tags static %} {% block assets_custom %} {{ block.super }} diff --git a/taccsite_cms/templates/nav_search.html b/taccsite_cms/templates/nav_search.html index 66ea6d8a3..bdc9707c8 100644 --- a/taccsite_cms/templates/nav_search.html +++ b/taccsite_cms/templates/nav_search.html @@ -13,12 +13,16 @@ import * as registerCustomElement from '/static/site_cms/js/modules/registerCustomElement.js'; const template = document.getElementById('s-search-bar').firstElementChild; + + {% if settings.TACC_CORE_STYLES_VERSION == 0 %} /* Load necessary Bootstrap outside raw markup so CMS */ /* FAQ: CMS, Portal, User Guide each use a different Bootstrap file */ /* TODO: After CMS redesign, use only one Bootstrap version (Portal's) */ template.content.prepend( document.getElementById('css-bootstrap').cloneNode(true) ); + {% endif %} + registerCustomElement.fromTemplate(template, 'tacc-search-bar'); diff --git a/taccsite_cms/templates/nav_search.raw.html b/taccsite_cms/templates/nav_search.raw.html index 67da8c3c4..e5ca79036 100644 --- a/taccsite_cms/templates/nav_search.raw.html +++ b/taccsite_cms/templates/nav_search.raw.html @@ -1,6 +1,6 @@ {# @var settings #} -{% load staticfiles %} +{% load static %} diff --git a/taccsite_cms/templates/snippets/typography-guide.html b/taccsite_cms/templates/snippets/typography-guide.html index 5fe55d762..4d7e52aac 100644 --- a/taccsite_cms/templates/snippets/typography-guide.html +++ b/taccsite_cms/templates/snippets/typography-guide.html @@ -1,4 +1,4 @@ -{% load staticfiles %} +{% load static %} diff --git a/taccsite_cms/templates/style_guide.html b/taccsite_cms/templates/style_guide.html index dbd3e559b..1e1f746b1 100644 --- a/taccsite_cms/templates/style_guide.html +++ b/taccsite_cms/templates/style_guide.html @@ -1,5 +1,5 @@ {% extends "standard.html" %} -{% load cms_tags staticfiles %} +{% load cms_tags static %} {% block assets_custom %} {{ block.super }} diff --git a/taccsite_custom b/taccsite_custom index 54e005c20..f3356ee32 160000 --- a/taccsite_custom +++ b/taccsite_custom @@ -1 +1 @@ -Subproject commit 54e005c2012a9703b3af784ebaeaecd75a87901b +Subproject commit f3356ee327129a4008a6477adf79882e5fd9c491 diff --git a/taccsite_ui/fractal.config.js b/taccsite_ui/fractal.config.js index c969ba873..b176983ee 100644 --- a/taccsite_ui/fractal.config.js +++ b/taccsite_ui/fractal.config.js @@ -7,6 +7,7 @@ const minimist = require('minimist'); // Get base config const fractal = require('@tacc/core-styles/fractal.config.js'); const themeConfig = require('./fractal.theme.js'); +const defaultContext = fractal.components.get('default.context'); // Get project // (name) @@ -16,10 +17,21 @@ let projName = args['project'] || ''; projName = ( projName !== cmsName ) ? projName : ''; // (stylesheet) const escapeDemoDir = '/../..'; // i.e. back out of '/static/ui' -const cmsCSSFile = `${escapeDemoDir}/static/site_cms/css/build/site.css`; -const projCSSFile = ( projName ) - ? `${escapeDemoDir}/static/${projName}/css/build/site.css` - : null; +const cmsCSSFiles = [ + ...defaultContext.cmsStyles, + { + isInternal: false, + layer: 'project', + path: `${escapeDemoDir}/static/site_cms/css/build/site.cms.css` + }, +]; +const projCSSFiles = ( projName ) ? [ + { + isInternal: false, + layer: 'cosmetic', + path: `${escapeDemoDir}/static/${projName}/css/build/site.cms.css` + }, +] : []; // Set source paths // (for components) @@ -27,23 +39,21 @@ fractal.components.set('exclude', '*.md'); fractal.components.set('path', __dirname + '/patterns'); // (for stylesheets) fractal.components.set('default.context', { - styles: { - shouldSkipBase: true, // true, because site.css includes components - external: { - global: [ - 'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css', - cmsCSSFile, - ].concat( ( projCSSFile ) ? [ projCSSFile ] : [] ) - } - } + ...fractal.components.get('default.context'), + shouldSkipPattern: true, // true, because …base.css loads most components + cmsStyles: cmsCSSFiles.concat( projCSSFiles ) }); -fractal.cli.log(`+ Included CSS for "${cmsName}": '${cmsCSSFile}'`); -if ( projCSSFile ) { - fractal.cli.log(`+ Included CSS for "${projName}": '${projCSSFile}'`); +fractal.cli.log(`+ Included CSS for "${cmsName}"`); +cmsCSSFiles.forEach( file => { fractal.cli.log(file.path) }); +if ( projCSSFiles.length > 0 ) { + fractal.cli.log(`+ Included CSS for "${projName}"`); + projCSSFiles.forEach( file => { fractal.cli.log(file.path) }); } // Set website paths -fractal.web.set('static.path', __dirname + '/../node_modules/@tacc/core-styles/build'); +// FAQ: Setting static.path results in `shouldSkipPattern: false` letting ONLY Core-CMS assets load, because that directory ONLY has Core-CMS assets +// FAQ: Not setting static.path results in `shouldSkipPattern: false` letting ONLY Core-Styles assets load, because Core-Styles cofnig loads ONLY its assets +// fractal.web.set('static.path', __dirname + '/../taccsite_cms/static/site_cms/css/build'); fractal.web.set('builder.dest', __dirname + '/dist'); // Customize theme diff --git a/taccsite_ui/fractal.theme.js b/taccsite_ui/fractal.theme.js index 3af07960b..60f3588bc 100644 --- a/taccsite_ui/fractal.theme.js +++ b/taccsite_ui/fractal.theme.js @@ -6,7 +6,7 @@ const themeConfig = require('@tacc/core-styles/fractal.theme.js'); // Extend base theme const newThemeConfig = Object.assign( themeConfig, { skin: Object.assign( themeConfig.skin, { - links: '#877453', + links: '#003399', // from tup-cms }) }); diff --git a/taccsite_ui/patterns/cms b/taccsite_ui/patterns/core-cms similarity index 100% rename from taccsite_ui/patterns/cms rename to taccsite_ui/patterns/core-cms diff --git a/taccsite_ui/patterns/core b/taccsite_ui/patterns/core-styles similarity index 100% rename from taccsite_ui/patterns/core rename to taccsite_ui/patterns/core-styles