diff --git a/.gitignore b/.gitignore index 558240f0..ee5ab107 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,6 @@ config/environments/*.local.yml /yarn-error.log yarn-debug.log* .yarn-integrity + +/app/assets/builds/* +!/app/assets/builds/.keep diff --git a/Gemfile b/Gemfile index aee46f0c..bafd38cb 100644 --- a/Gemfile +++ b/Gemfile @@ -29,10 +29,6 @@ gem "stimulus-rails" # Build JSON APIs with ease [https://github.com/rails/jbuilder] gem "jbuilder" -# Use SCSS for stylesheets -gem 'sass-rails', '>= 6.0' -# Use Uglifier as compressor for JavaScript assets -gem 'uglifier', '>= 2.7.2' # A gem for simple rails environment specific config gem 'config' @@ -51,11 +47,9 @@ gem 'okcomputer' gem 'mods_display', '~> 1.1' gem 'htmlentities' gem 'dor-rights-auth', '~> 1.6' -gem 'bootstrap' gem 'faraday' gem 'addressable' gem 'tophat' -gem 'sul_styles', '~> 0.6' # Use recaptcha gem to prevent robots spamming the feedback form gem 'recaptcha' @@ -94,9 +88,6 @@ group :development, :test do gem 'rubocop-rails', require: false gem 'rubocop-rspec', require: false - # scss_lint will test the scss files to enfoce styles - gem 'scss_lint', require: false - gem 'simplecov', require: false end @@ -109,3 +100,5 @@ group :deployment do gem 'capistrano-shared_configs' gem 'dlss-capistrano' end + +gem "cssbundling-rails", "~> 1.1" diff --git a/Gemfile.lock b/Gemfile.lock index f3a9b66b..189dc743 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -81,15 +81,9 @@ GEM airbrussh (1.4.1) sshkit (>= 1.6.1, != 1.7.0) ast (2.4.2) - autoprefixer-rails (10.4.7.0) - execjs (~> 2) bindex (0.8.1) bootsnap (1.15.0) msgpack (~> 1.2) - bootstrap (5.2.3) - autoprefixer-rails (>= 9.1.0) - popper_js (>= 2.11.6, < 3) - sassc-rails (>= 2.0.0) builder (3.2.4) bundler-audit (0.9.1) bundler (>= 1.2.0, < 3) @@ -128,6 +122,8 @@ GEM deep_merge (~> 1.2, >= 1.2.1) dry-validation (~> 1.0, >= 1.0.0) crass (1.0.6) + cssbundling-rails (1.1.2) + railties (>= 6.0.0) date (3.3.3) debug (1.7.1) irb (>= 1.5.0) @@ -177,12 +173,10 @@ GEM edtf (3.1.0) activesupport (>= 3.0, < 8.0) erubi (1.12.0) - execjs (2.8.1) faraday (2.7.2) faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) faraday-net_http (3.0.2) - ffi (1.15.5) globalid (1.0.0) activesupport (>= 5.0) honeybadger (5.0.2) @@ -250,7 +244,6 @@ GEM parallel (1.22.1) parser (3.2.0.0) ast (~> 2.4.1) - popper_js (2.11.6) public_suffix (5.0.1) puma (5.6.5) nio4r (~> 2.0) @@ -275,7 +268,6 @@ GEM rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-file-icons (0.0.1) rails-html-sanitizer (1.4.4) loofah (~> 2.19, >= 2.19.1) railties (7.0.4) @@ -287,9 +279,6 @@ GEM zeitwerk (~> 2.5) rainbow (3.1.1) rake (13.0.6) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) recaptcha (5.12.3) json regexp_parser (2.6.1) @@ -340,23 +329,6 @@ GEM ruby-progressbar (1.11.0) ruby2_keywords (0.0.5) rubyzip (2.3.2) - sass (3.7.4) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sass-rails (6.0.0) - sassc-rails (~> 2.1, >= 2.1.1) - sassc (2.4.0) - ffi (~> 1.9) - sassc-rails (2.1.2) - railties (>= 4.0.0) - sassc (>= 2.0) - sprockets (> 3.0) - sprockets-rails - tilt - scss_lint (0.59.0) - sass (~> 3.5, >= 3.5.5) selenium-webdriver (4.7.1) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) @@ -385,10 +357,7 @@ GEM mods (~> 3.0, >= 3.0.3) stimulus-rails (1.2.1) railties (>= 6.0.0) - sul_styles (0.7.0) - rails (>= 4.1, < 8) thor (1.2.1) - tilt (2.0.11) timeout (0.3.1) tophat (2.3.1) actionpack (>= 3.0.0) @@ -398,8 +367,6 @@ GEM railties (>= 6.0.0) tzinfo (2.0.5) concurrent-ruby (~> 1.0) - uglifier (4.2.0) - execjs (>= 0.3.0, < 3) unicode-display_width (2.4.2) view_component (2.82.0) activesupport (>= 5.2.0, < 8.0) @@ -429,7 +396,6 @@ PLATFORMS DEPENDENCIES addressable bootsnap (>= 1.1.0) - bootstrap cancancan capistrano (~> 3.0) capistrano-bundler @@ -438,6 +404,7 @@ DEPENDENCIES capistrano-shared_configs capybara config + cssbundling-rails (~> 1.1) debug dlss-capistrano dor-rights-auth (~> 1.6) @@ -452,25 +419,20 @@ DEPENDENCIES okcomputer puma (~> 5.0) rails (~> 7.0.0) - rails-file-icons recaptcha rspec-rails (~> 6.0) rubocop rubocop-performance rubocop-rails rubocop-rspec - sass-rails (>= 6.0) - scss_lint selenium-webdriver (!= 3.13.0) simplecov sprockets-rails sqlite3 (~> 1.4) stimulus-rails - sul_styles (~> 0.6) tophat turbo-rails tzinfo-data - uglifier (>= 2.7.2) web-console (>= 3.3.0) webdrivers diff --git a/Procfile.dev b/Procfile.dev new file mode 100644 index 00000000..cb7c9aa8 --- /dev/null +++ b/Procfile.dev @@ -0,0 +1,2 @@ +web: unset PORT && bin/rails server +css: yarn build:css --watch diff --git a/README.md b/README.md index 90e0fd2e..b592f873 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Please create a github release before deploying. ## Requirements -1. Ruby (2.2.5 or greater) +1. Ruby (3.1 or greater) 2. [bundler](http://bundler.io/) gem ## Installation @@ -28,7 +28,7 @@ Move into the app and install dependencies Start the development server - $ rails s + $ bin/dev ## Configuring diff --git a/app/assets/builds/.keep b/app/assets/builds/.keep new file mode 100644 index 00000000..e69de29b diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js index 81e98830..4028c22a 100644 --- a/app/assets/config/manifest.js +++ b/app/assets/config/manifest.js @@ -1,5 +1,4 @@ //= link_tree ../images -//= link application.css -//= link print.css //= link_tree ../../javascript .js //= link_tree ../../../vendor/javascript .js +//= link_tree ../builds diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.sass.scss similarity index 92% rename from app/assets/stylesheets/application.scss rename to app/assets/stylesheets/application.sass.scss index c170cfe8..e3c051fa 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.sass.scss @@ -5,7 +5,7 @@ @import 'searchworks-mixins'; @import 'bootstrap-variables'; -@import 'bootstrap'; +@import 'bootstrap/scss/bootstrap'; @import 'bootstrap-mixins'; @import 'bootstrap-overrides'; diff --git a/app/assets/stylesheets/deja-vu-font.scss b/app/assets/stylesheets/deja-vu-font.scss index a2786a7b..bdb2f827 100644 --- a/app/assets/stylesheets/deja-vu-font.scss +++ b/app/assets/stylesheets/deja-vu-font.scss @@ -1,10 +1,10 @@ @font-face { font-family: 'dejavu_sansextralight'; - src: font-url('DejaVuSans-ExtraLight-webfont.eot'); - src: font-url('DejaVuSans-ExtraLight-webfont.eot?#iefix') format('embedded-opentype'), - font-url('DejaVuSans-ExtraLight-webfont.woff') format('woff'), - font-url('DejaVuSans-ExtraLight-webfont.ttf') format('truetype'), - font-url('DejaVuSans-ExtraLight-webfont.svg#dejavu_sansextralight') format('svg'); + src: url('DejaVuSans-ExtraLight-webfont.eot'); + src: url('DejaVuSans-ExtraLight-webfont.eot?#iefix') format('embedded-opentype'), + url('DejaVuSans-ExtraLight-webfont.woff') format('woff'), + url('DejaVuSans-ExtraLight-webfont.ttf') format('truetype'), + url('DejaVuSans-ExtraLight-webfont.svg#dejavu_sansextralight') format('svg'); font-weight: normal; font-style: normal; } diff --git a/app/assets/stylesheets/print.scss b/app/assets/stylesheets/print.scss index 30c1fb4f..a153124d 100644 --- a/app/assets/stylesheets/print.scss +++ b/app/assets/stylesheets/print.scss @@ -4,7 +4,7 @@ @import 'searchworks-mixins'; @import 'bootstrap-variables'; -@import 'bootstrap'; +@import 'bootstrap/scss/bootstrap'; @import 'bootstrap-mixins'; diff --git a/app/assets/stylesheets/sul-styles.scss b/app/assets/stylesheets/sul-styles.scss new file mode 100644 index 00000000..25e8040e --- /dev/null +++ b/app/assets/stylesheets/sul-styles.scss @@ -0,0 +1,4 @@ +@import 'sul-styles/su_web_colors'; +@import 'sul-styles/su_primary_colors'; +@import 'sul-styles/variables'; +@import 'sul-styles/sul_footer'; \ No newline at end of file diff --git a/app/assets/stylesheets/sul-styles/su_primary_colors.scss b/app/assets/stylesheets/sul-styles/su_primary_colors.scss new file mode 100644 index 00000000..712263fb --- /dev/null +++ b/app/assets/stylesheets/sul-styles/su_primary_colors.scss @@ -0,0 +1,34 @@ +/* + Stanford Primary Colors + from https://identity.stanford.edu/overview/color.html +*/ + +// Primary Palette +// $color-cardinal-red: #8c1515; +// $color-cool-gray: #4d4f53; +$color-black: #000; + +// Neutral Color Palette +// $color-pantone-467: #d2c295; +// $color-pantone-465: #b3995d; +// $color-pantone-403: #928b81; +$color-pantone-401: #b6b1a9; +// $color-pantone-7527: #dad7cb; +// $color-pantone-5665: #c7d1c5; +// $color-pantone-445: #4d5357; +// $color-pantone-405: #5f574f; + +// Deep Tone Color Palette +// $color-pantone-1817: #5e3032; +// $color-pantone-7526: #8d3c1e; +// $color-pantone-3165: #00505c; +// $color-pantone-561: #175e54; +// $color-pantone-262: #53284f; + +// Bright Color Palette +// $color-pantone-2925: #0098db; +// $color-pantone-3145: #007c92; +// $color-pantone-334: #009b76; +// $color-pantone-7511: #b26f16; +// $color-pantone-144: #e98300; +// $color-pantone-124: #eaab00; diff --git a/app/assets/stylesheets/sul-styles/su_web_colors.scss b/app/assets/stylesheets/sul-styles/su_web_colors.scss new file mode 100644 index 00000000..c66023b7 --- /dev/null +++ b/app/assets/stylesheets/sul-styles/su_web_colors.scss @@ -0,0 +1,34 @@ +/* + Stanford Web Colors + from https://identity.stanford.edu/web-toolkit/color.html +*/ + +// Red +$color-cardinal-red: #8c1515; +// $color-dark-red: #820000; + +// Black +$color-blackish: #2e2d29; +// $color-black-80: #585754; + +// Warm Gray +$color-gray: #3f3c30; +// $color-gray-90: #565347; +$color-gray-60: #8a887d; + +// Sandstone +// $color-sandstone: #ddcf99; +// $color-sandstone-50: #eee6cb; +// $color-sandstone-35: #f3efd8; +// $color-sandstone-25: #f6f3e5; +// $color-sandstone-20: #f8f6ea; + +// Beige +// $color-beige: #9d9573; +// $color-beige-85: #aca68d; +// $color-beige-60: #c4bfa9; +$color-beige-40: #d5d0c0; +$color-beige-30: #e3dfd5; +$color-beige-20: #e9e6df; +$color-beige-10: #f2f1eb; +$color-beige-05: #fbfbf9; \ No newline at end of file diff --git a/app/assets/stylesheets/sul-styles/sul_footer.scss b/app/assets/stylesheets/sul-styles/sul_footer.scss new file mode 100644 index 00000000..0436f418 --- /dev/null +++ b/app/assets/stylesheets/sul-styles/sul_footer.scss @@ -0,0 +1,73 @@ +#sul-footer-container { + background-color: $sul-footer-bg-color; + border-top: 1px solid $sul-footer-border-top-color; + -webkit-box-shadow: $sul-footer-shadow; + box-shadow: $sul-footer-shadow; + clear: both; + margin-top: -1 * $footer-height; + min-height: $footer-height; + padding: 0 !important; + position: relative; +} + +#sul-footer { + display: table; + font-size: small; + height: 80px; + margin: 0 auto; + padding: 0; + + ul { + list-style-type: none; + margin: 0; + } + + li { + display: inline; + margin: 0 13px 3px 0; + padding: 0; + + a { + color: $color-blackish; + white-space: nowrap; + } + + a, + a:hover, + a:focus { + border-bottom: 1px dotted $color-gray-60; + text-decoration: none; + } + } +} + +#sul-footer-img { + display: table-cell; + vertical-align: middle; + width: 162px; +} + +#sul-footer-links { + display: table-cell; + padding-left: 15px; + text-align: left; + vertical-align: middle; +} + +@media (min-width: 768px) { + #sul-footer { + width: 750px; + } +} + +@media (min-width: 980px) { + #sul-footer { + width: 970px; + } +} + +@media (min-width: 1200px) { + #sul-footer { + width: 1170px; + } +} diff --git a/app/assets/stylesheets/sul-styles/variables.scss b/app/assets/stylesheets/sul-styles/variables.scss new file mode 100644 index 00000000..7e60fedf --- /dev/null +++ b/app/assets/stylesheets/sul-styles/variables.scss @@ -0,0 +1,5 @@ +$sul-footer-bg-color: $color-beige-10; +$sul-footer-border-top-color: $color-beige-20; +$footer-height: 200px; +$sul-footer-shadow-color: rgba(0, 0, 0, 0.2); +$sul-footer-shadow: 0 4px 8px -8px $sul-footer-shadow-color inset; \ No newline at end of file diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 5f02edc8..28355a03 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -8,7 +8,7 @@ <%= title site: application_name, separator: '|', reverse: true %> <%= favicon_link_tag 'favicon.ico' %> - <%= stylesheet_link_tag "application", media: "all" %> + <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> <%= stylesheet_link_tag 'print', media: 'print' %> <%= stylesheet_link_tag "https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700" %> @@ -20,7 +20,6 @@ <%= opengraph %> <%= twitter_card %> <%= content_for(:head) %> - <%= render 'shared/skip_to_nav' %> diff --git a/bin/dev b/bin/dev new file mode 100755 index 00000000..74ade166 --- /dev/null +++ b/bin/dev @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +if ! gem list foreman -i --silent; then + echo "Installing foreman..." + gem install foreman +fi + +exec foreman start -f Procfile.dev "$@" diff --git a/config/boot.rb b/config/boot.rb index 988a5ddc..ebfe695f 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,4 +1,4 @@ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) require "bundler/setup" # Set up gems listed in the Gemfile. -require "bootsnap/setup" # Speed up boot time by caching expensive operations. +# require "bootsnap/setup" # Speed up boot time by caching expensive operations. diff --git a/config/importmap.rb b/config/importmap.rb index 64b6bffb..1aca447f 100644 --- a/config/importmap.rb +++ b/config/importmap.rb @@ -2,7 +2,7 @@ pin "application", preload: true pin "jquery", to: "https://ga.jspm.io/npm:jquery@3.6.1/dist/jquery.js" -pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@5.2.2/dist/js/bootstrap.esm.js" +pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@5.2.3/dist/js/bootstrap.esm.js" pin "@popperjs/core", to: "https://ga.jspm.io/npm:@popperjs/core@2.11.6/lib/index.js" pin 'jquery.oembed' pin 'jQuery.XDomainRequest' diff --git a/package.json b/package.json index 9b55ba88..1fca560c 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,9 @@ { - "dependencies": {}, - "devDependencies": {} + "dependencies": { + "bootstrap": "^5.2.2", + "sass": "^1.57.1" + }, + "scripts": { + "build:css": "sass ./app/assets/stylesheets/application.sass.scss:./app/assets/builds/application.css ./app/assets/stylesheets/print.scss:./app/assets/builds/print.css --no-source-map --load-path=node_modules" + } } diff --git a/yarn.lock b/yarn.lock index fb57ccd1..0faf4c46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,3 +2,128 @@ # yarn lockfile v1 +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bootstrap@^5.2.2: + version "5.2.3" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.2.3.tgz#54739f4414de121b9785c5da3c87b37ff008322b" + integrity sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ== + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +"chokidar@>=3.0.0 <4.0.0": + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +immutable@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.2.tgz#2da9ff4384a4330c36d4d1bc88e90f9e0b0ccd16" + integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +sass@^1.57.1: + version "1.57.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5" + integrity sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +"source-map-js@>=0.6.2 <2.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0"